19、Android应用安全测试工具:MobSF框架、Drozer工具、AndroBugs框架
做移动安全测试这些年,我手里常备的工具其实就那么几把。今天聊的这三个——MobSF、Drozer、AndroBugs,算是我的「三板斧」。它们各有各的脾气,也各有各的绝活。你想想看,一个APK扔过来,我该先上哪个?
嗯,这得看你想干嘛。静态分析、动态分析、还是漏洞扫描?我个人的习惯是:先让MobSF跑一遍全景扫描,再用Drozer做深度交互测试,最后用AndroBugs查漏补缺。这套组合拳打下来,基本不会漏掉什么。
MobSF:移动安全框架里的瑞士军刀
MobSF全名叫Mobile Security Framework。说白了,它是一个能同时搞定Android和iOS的自动化安全测试平台。我在项目中遇到过好几次,客户丢过来一个APK,连源码都没有。这时候MobSF就派上大用场了。
它能做什么?静态分析、动态分析、恶意软件检测、API监控……几乎覆盖了移动应用安全测试的方方面面。而且它有个Web界面,操作起来很直观。
核心能力一览:
- 静态分析:反编译APK,提取Manifest、代码、资源文件
- 动态分析:在模拟器或真机上运行应用,监控网络、文件、日志
- API分析:检测敏感API调用,比如定位、摄像头、短信
- 漏洞扫描:自动识别OWASP Top 10移动端风险
安装MobSF其实不复杂。我一般用Docker方式,省去环境配置的麻烦:
# 拉取镜像
docker pull opensecurity/mobile-security-framework-mobsf
# 运行容器
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf
启动后,浏览器打开 http://localhost:8000 就能看到界面了。上传APK,等几分钟,一份详细的报告就出来了。
我记得有一次,一个金融类App的APK,MobSF直接帮我找到了硬编码的API密钥。那个密钥居然写在了一个字符串资源文件里……嗯,这种低级错误其实挺常见的。
我的使用技巧:
MobSF的静态分析报告里有个「Code Analysis」板块,里面会列出所有高危风险点。我建议你重点关注「Certificate Pinning Issues」和「WebView Vulnerabilities」这两项。前者关系到中间人攻击的防御能力,后者则是XSS攻击的重灾区。
Drozer:交互式安全测试的利器
如果说MobSF是全景扫描,那Drozer就是定点爆破。它是一个交互式的安全测试框架,可以让你像操作数据库一样去探索Android应用的攻击面。
Drozer的核心思路是:通过ADB连接到设备或模拟器,然后利用Agent应用去执行各种安全测试模块。我刚开始用的时候,觉得它有点像Metasploit的移动版。
安装Drozer需要两步:PC端装客户端,手机上装Agent。PC端安装很简单:
# 下载Drozer
pip install drozer
# 启动Drozer控制台
drozer console connect
连接成功后,你可以用 list 命令查看所有可用的模块。我个人最常用的是这几个:
| 模块 | 功能 | 使用场景 |
|---|---|---|
app.package.list |
列出所有已安装的应用包名 | 快速定位目标应用 |
app.activity.info |
获取Activity信息 | 检查是否有可导出的Activity |
app.provider.info |
获取Content Provider信息 | 检测SQL注入和数据泄露 |
app.service.info |
获取Service信息 | 检查后台服务暴露情况 |
scanner.provider.finduris |
扫描可访问的Provider URI | 寻找未授权访问的漏洞 |
举个例子,我曾经用Drozer发现过一个社交App的Content Provider漏洞。执行 app.provider.query content://com.example.app.UserProvider/users,结果直接返回了所有用户的手机号和邮箱……
注意:Drozer需要Android设备开启调试模式,并且Agent应用要有足够的权限。有些厂商的定制ROM可能会限制Drozer的功能。我建议你用Genymotion模拟器,兼容性最好。
AndroBugs:漏洞扫描的「显微镜」
AndroBugs这个工具,名字听起来有点萌,但功能一点都不含糊。它是一个专注于Android应用漏洞扫描的框架,特别擅长发现那些藏在代码深处的安全隐患。
和MobSF不同,AndroBugs更偏向于静态分析。它会对APK进行深度反编译,然后逐行检查代码中的安全缺陷。我个人的感觉是,AndroBugs在检测「逻辑漏洞」方面特别强。
安装AndroBugs需要Python环境:
# 克隆仓库
git clone https://github.com/AndroBugs/AndroBugs_Framework.git
# 进入目录
cd AndroBugs_Framework
# 运行扫描
python androbugs.py -f /path/to/your/app.apk
扫描完成后,会生成一个HTML报告。报告里会把漏洞按严重程度分为Critical、High、Medium、Low四个等级。我一般先看Critical级别的,这些通常是需要立即修复的。
AndroBugs的检测项非常细致,包括:
- WebView远程代码执行漏洞
- SSL/TLS配置缺陷
- Intent劫持风险
- 动态加载Dex文件的安全问题
- SharedPreferences明文存储敏感数据
有一次,我扫描一个电商App,AndroBugs报了一个「WebView addJavascriptInterface」的高危漏洞。开发者为了和H5页面交互,直接暴露了一个接口,结果这个接口可以被任意网页调用……
避坑指南:我曾经遇到过AndroBugs误报的情况。比如它检测到某个Activity没有设置exported=false,就报了一个「Activity暴露」的漏洞。但实际上这个Activity是给系统组件调用的,必须暴露。所以,拿到报告后一定要人工复核,别盲目相信工具。
三款工具的对比与选择
说了这么多,你可能想问:到底该用哪个?我的建议是,别纠结,三个都用。但如果你非要选一个作为主力,我推荐MobSF。原因很简单:它最全面,而且社区活跃,更新快。
不过,具体场景还得具体分析:
- 快速评估:用MobSF,上传APK等报告就行
- 深度交互测试:用Drozer,手动探索攻击面
- 代码级漏洞扫描:用AndroBugs,揪出隐藏的代码缺陷
下面这张图是我自己总结的,三款工具在测试流程中的定位:
你看,这三款工具其实是一个完整的测试链条。MobSF负责「面」,Drozer负责「点」,AndroBugs负责「线」。三管齐下,才能把安全测试做透。
最后说一句,工具终究是工具。真正值钱的,是你对Android安全机制的理解,以及在实际项目中积累的经验。多动手,多踩坑,慢慢就熟了。