L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

detecting-mobile-malware-behavior

detecting-mobile-malware-behavior

通过行为分析、权限滥用检测、网络流量监控和动态插桩,检测并分析移动应用中的恶意行为。 适用于分析可疑移动应用的数据泄露、C2 通信、凭据窃取、SMS 拦截或其他恶意软件指标。 适合移动恶意软件分析、应用行为监控、木马检测或可疑应用调查相关请求。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: detecting-mobile-malware-behavior description: > 通过行为分析、权限滥用检测、网络流量监控和动态插桩,检测并分析移动应用中的恶意行为。 适用于分析可疑移动应用的数据泄露、C2 通信、凭据窃取、SMS 拦截或其他恶意软件指标。 适合移动恶意软件分析、应用行为监控、木马检测或可疑应用调查相关请求。 domain: cybersecurity subdomain: mobile-security author: mahipal tags: [mobile-security, android, ios, malware-analysis, owasp-mobile, penetration-testing] version: 1.0.0 license: Apache-2.0

检测移动恶意软件行为

适用场景

适用于以下情况:

  • 分析用户提交或在事件响应中发现的可疑移动应用
  • 监控企业移动设备中的恶意应用指标
  • 对 APK/IPA 样本进行恶意软件分类
  • 调查移动应用导致的数据泄露或未授权设备访问

不适用场景:不得使用本 skill 创建、增强或传播恶意软件。本 skill 仅用于防御性分析。

前置条件

  • 隔离的分析环境(专用设备或模拟器,不连接生产网络)
  • MobSF,用于自动化静态+动态分析
  • Frida/Objection,用于运行时行为监控
  • Wireshark/tcpdump,用于网络流量捕获
  • Android 模拟器(AVD)或 Genymotion,用于安全执行
  • VirusTotal API 密钥,用于哈希查询

工作流程

步骤 1:静态指标分析

# 计算样本哈希值
sha256sum suspicious.apk

# 查询 VirusTotal
curl -s "https://www.virustotal.com/api/v3/files/<SHA256>" \
  -H "x-apikey: <VT_API_KEY>" | jq '.data.attributes.last_analysis_stats'

# 从 AndroidManifest.xml 提取权限
aapt dump permissions suspicious.apk

# 高风险权限组合:
# READ_SMS + INTERNET = SMS 窃取器
# RECEIVE_SMS + SEND_SMS = SMS 拦截器/银行木马
# ACCESSIBILITY_SERVICE + INTERNET = 覆盖攻击能力
# CAMERA + RECORD_AUDIO + INTERNET = 间谍软件
# DEVICE_ADMIN + INTERNET = 勒索软件能力
# READ_CONTACTS + INTERNET = 联系人泄露

步骤 2:MobSF 自动化恶意软件扫描

# 上传到 MobSF
curl -F "file=@suspicious.apk" http://localhost:8000/api/v1/upload \
  -H "Authorization: <API_KEY>"

# 查看报告中的恶意软件指标:
# - 硬编码的 C2 服务器地址
# - 动态代码加载(DexClassLoader)
# - 基于反射的 API 调用(逃避静态分析)
# - 加密/混淆的有效载荷
# - Root 检测(恶意软件通常检查 root 权限)
# - 反模拟器检测(恶意软件逃避沙箱)

步骤 3:网络行为监控

# 在模拟器上启动数据包捕获
tcpdump -i any -w malware_traffic.pcap

# 或使用 mitmproxy 处理 HTTP/HTTPS
mitmproxy --mode transparent

# 监控以下行为:
# - 查询可疑/新注册域名的 DNS 请求
# - 连接已知的 C2 基础设施
# - 数据泄露模式(大型 POST 请求)
# - 信标行为(固定间隔的连接)
# - 非标准端口和协议
# - 域名生成算法(DGA)模式

步骤 4:使用 Frida 进行运行时行为监控

// monitor_malware.js - 综合行为监控
Java.perform(function() {
    // 监控 SMS 访问
    var SmsManager = Java.use("android.telephony.SmsManager");
    SmsManager.sendTextMessage.overload("java.lang.String", "java.lang.String",
        "java.lang.String", "android.app.PendingIntent", "android.app.PendingIntent")
        .implementation = function(dest, sc, text, sent, delivery) {
            console.log("[SMS] 发送至: " + dest + " 内容: " + text);
            // 根据分析需求决定允许或阻断
            return this.sendTextMessage(dest, sc, text, sent, delivery);
        };

    // 监控文件操作
    var FileOutputStream = Java.use("java.io.FileOutputStream");
    FileOutputStream.$init.overload("java.lang.String").implementation = function(path) {
        console.log("[FILE-WRITE] " + path);
        return this.$init(path);
    };

    // 监控网络连接
    var URL = Java.use("java.net.URL");
    URL.openConnection.overload().implementation = function() {
        console.log("[NET] " + this.toString());
        return this.openConnection();
    };

    // 监控动态代码加载
    var DexClassLoader = Java.use("dalvik.system.DexClassLoader");
    DexClassLoader.$init.implementation = function(dexPath, optDir, libPath, parent) {
        console.log("[DEX-LOAD] 加载: " + dexPath);
        return this.$init(dexPath, optDir, libPath, parent);
    };

    // 监控命令执行
    var Runtime = Java.use("java.lang.Runtime");
    Runtime.exec.overload("java.lang.String").implementation = function(cmd) {
        console.log("[EXEC] " + cmd);
        return this.exec(cmd);
    };

    // 监控摄像头/麦克风访问
    var Camera = Java.use("android.hardware.Camera");
    Camera.open.overload("int").implementation = function(id) {
        console.log("[CAMERA] 摄像头已打开: " + id);
        return this.open(id);
    };

    // 监控内容提供者访问(联系人、通话记录)
    var ContentResolver = Java.use("android.content.ContentResolver");
    ContentResolver.query.overload("android.net.Uri", "[Ljava.lang.String;",
        "java.lang.String", "[Ljava.lang.String;", "java.lang.String")
        .implementation = function(uri, proj, sel, selArgs, sort) {
            console.log("[QUERY] " + uri.toString());
            return this.query(uri, proj, sel, selArgs, sort);
        };

    console.log("[*] 恶意软件行为监控已激活");
});

步骤 5:恶意软件类型分类

根据观察到的行为对样本进行分类:

行为模式恶意软件类型
SMS 拦截 + C2 通信银行木马
摄像头/麦克风访问 + 数据上传间谍软件/跟踪软件
文件加密 + 勒索信展示移动勒索软件
广告注入 + 点击欺诈流量广告软件
Root 漏洞利用 + 持久化Rootkit
联系人采集 + SMS 垃圾邮件蠕虫/SMS 垃圾发送器
覆盖攻击 + 凭据捕获凭据窃取器
加密货币挖矿网络活动挖矿劫持软件

核心概念

术语定义
动态代码加载在运行时从外部源加载可执行代码,恶意软件常用此技术逃避静态分析
C2 信标恶意软件定期向命令控制服务器发送的网络签入,可通过周期性时序模式识别
DGA域名生成算法(Domain Generation Algorithm),为弹性 C2 基础设施创建伪随机域名
覆盖攻击在合法应用上绘制虚假 UI 以捕获凭据,需要 SYSTEM_ALERT_WINDOW 权限
反模拟器恶意软件用于检测沙箱/模拟器环境并抑制恶意行为的技术

工具与系统

  • MobSF:用于初步恶意软件分类的自动化静态和动态分析工具
  • VirusTotal:多引擎恶意软件扫描和哈希信誉查询
  • Frida:通过方法 Hook 进行运行时行为监控
  • Wireshark:用于 C2 通信模式的网络流量分析
  • Cuckoo Sandbox / CuckooDroid:Android 样本的自动化恶意软件分析沙箱

常见问题

  • 反分析规避:复杂恶意软件会检测模拟器、调试器和 Frida。使用硬件设备和隐蔽 Frida 配置以获得准确分析结果。
  • 时延触发载荷:某些恶意软件仅在延迟后或特定触发条件下激活。需要长时间监控并模拟各种条件。
  • 加密 C2:使用加密通信的恶意软件需要 TLS 拦截或内存检查才能观察到载荷内容。
  • 多阶段载荷:初始 APK 可能是良性的,恶意载荷在后续下载。监控动态代码加载和文件下载行为。
Skills enregistrées