关于 detecting-mobile-malware-behavior
面向安全分析人员的移动恶意软件防御分析技能,用于检查可疑 Android 和 iOS 应用。它结合静态分析、运行时监控与网络流量分析来识别恶意行为。
主要功能
- 01静态指标分析
- 02MobSF 自动扫描
- 03网络行为监控
- 04Frida 运行时监控
- 05恶意软件类型分类
适用场景
- 01分诊可疑 APK 或 IPA 样本
- 02调查移动应用数据外泄
- 03监控企业移动设备中的恶意指标
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill detecting-mobile-malware-behavior安装后在 Claude Code 中输入/detecting-mobile-malware-behavior确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.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