mcpField
D
detecting-mobile-malware-behavior

detecting-mobile-malware-behavior

github.com/mukul975安全35.2k68 次安装8 周前更新
代码仓库

关于 detecting-mobile-malware-behavior

面向安全分析人员的移动恶意软件防御分析技能,用于检查可疑 Android 和 iOS 应用。它结合静态分析、运行时监控与网络流量分析来识别恶意行为。

主要功能

  1. 01静态指标分析
  2. 02MobSF 自动扫描
  3. 03网络行为监控
  4. 04Frida 运行时监控
  5. 05恶意软件类型分类

适用场景

  1. 01分诊可疑 APK 或 IPA 样本
  2. 02调查移动应用数据外泄
  3. 03监控企业移动设备中的恶意指标

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill detecting-mobile-malware-behavior

安装后在 Claude Code 中输入/detecting-mobile-malware-behavior确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
assets/
template.md
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py
process.py

详细介绍

检测移动恶意软件行为

何时使用

在以下情况下使用本技能:

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

请勿使用本技能创建、增强或传播恶意软件。本技能仅用于防御性分析。

前置条件

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

工作流

步骤 1:静态指标分析
# Hash the sample
sha256sum suspicious.apk

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

# Extract permissions from AndroidManifest.xml
aapt dump permissions suspicious.apk

# High-risk permission combinations:
# READ_SMS + INTERNET = SMS stealer
# RECEIVE_SMS + SEND_SMS = SMS interceptor/banker trojan
# ACCESSIBILITY_SERVICE + INTERNET = overlay attack capability
# CAMERA + RECORD_AUDIO + INTERNET = spyware
# DEVICE_ADMIN + INTERNET = ransomware capability
# READ_CONTACTS + INTERNET = contact exfiltration
步骤 2:MobSF 自动化恶意软件扫描
# Upload to MobSF
curl -F "[email protected]" http://localhost:8000/api/v1/upload \
  -H "Authorization: <API_KEY>"

# Review malware indicators in report:
# - Hardcoded C2 server addresses
# - Dynamic code loading (DexClassLoader)
# - Reflection-based API calls (to evade static analysis)
# - Encrypted/obfuscated payloads
# - Root detection (malware often checks for root)
# - Anti-emulator checks (malware evades sandbox)
步骤 3:网络行为监控
# Start packet capture on emulator
tcpdump -i any -w malware_traffic.pcap

# Or use mitmproxy for HTTP/HTTPS
mitmproxy --mode transparent

# Monitor for:
# - DNS lookups to suspicious/newly registered domains
# - Connections to known C2 infrastructure
# - Data exfiltration patterns (large POST requests)
# - Beaconing behavior (regular interval connections)
# - Non-standard ports and protocols
# - Domain Generation Algorithm (DGA) patterns
步骤 4:使用 Frida 进行运行时行为监控
// monitor_malware.js - Comprehensive behavior monitoring
Java.perform(function() {
    // Monitor SMS access
    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] Sending to: " + dest + " Text: " + text);
            // Allow or block based on analysis needs
            return this.sendTextMessage(dest, sc, text, sent, delivery);
        };

    // Monitor file operations
    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);
    };

    // Monitor network connections
    var URL = Java.use("java.net.URL");
    URL.openConnection.overload().implementation = function() {
        console.log("[NET] " + this.toString());
        return this.openConnection();
    };

    // Monitor dynamic code loading
    var DexClassLoader = Java.use("dalvik.system.DexClassLoader");
    DexClassLoader.$init.implementation = function(dexPath, optDir, libPath, parent) {
        console.log("[DEX-LOAD] Loading: " + dexPath);
        return this.$init(dexPath, optDir, libPath, parent);
    };

    // Monitor command execution
    var Runtime = Java.use("java.lang.Runtime");
    Runtime.exec.overload("java.lang.String").implementation = function(cmd) {
        console.log("[EXEC] " + cmd);
        return this.exec(cmd);
    };

    // Monitor camera/audio access
    var Camera = Java.use("android.hardware.Camera");
    Camera.open.overload("int").implementation = function(id) {
        console.log("[CAMERA] Camera opened: " + id);
        return this.open(id);
    };

    // Monitor content provider access (contacts, call log)
    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("[*] Malware behavior monitor active");
});
步骤 5:对恶意软件类型进行分类

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

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

关键概念

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

工具与系统

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

常见陷阱

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

评论

支持 Markdown