| 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
curl -s "https://www.virustotal.com/api/v3/files/<SHA256>" \
-H "x-apikey: <VT_API_KEY>" | jq '.data.attributes.last_analysis_stats'
aapt dump permissions suspicious.apk
步骤 2:MobSF 自动化恶意软件扫描
curl -F "file=@suspicious.apk" http://localhost:8000/api/v1/upload \
-H "Authorization: <API_KEY>"
步骤 3:网络行为监控
tcpdump -i any -w malware_traffic.pcap
mitmproxy --mode transparent
步骤 4:使用 Frida 进行运行时行为监控
Java.perform(function() {
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 .$init(path);
};
= .();
..(). = () {
.( + .());
.();
};
= .();
.. = () {
.( + dexPath);
.$init(dexPath, optDir, libPath, parent);
};
= .();
..(). = () {
.( + cmd);
.(cmd);
};
= .();
..(). = () {
.( + id);
.(id);
};
= .();
..(, ,
, , )
. = () {
.( + uri.());
.(uri, proj, sel, selArgs, sort);
};
.();
});
步骤 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 可能是良性的,恶意载荷在后续下载。监控动态代码加载和文件下载行为。