Die Oberfläche ist lokalisiert; Skill-Beschreibungen und -Dokumente werden per KI automatisch in Ihre Sprache übersetzt. Code, Befehle, Pfade und Fachbegriffe bleiben im Original, maßgeblich ist das Dokument des Autors.
Skills entdecken
Produktivität · SKILL.md

detecting-mobile-malware-behavior

detecting-mobile-malware-behavior

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

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill-Dokumentation

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 可能是良性的,恶意载荷在后续下载。监控动态代码加载和文件下载行为。
Gespeicherte Skills