记一次Android 恶意软件逆向及Frida动态分析
字数 2380 2025-10-01 14:05:52
Android 恶意软件逆向分析与 Frida 动态分析技术指南
一、背景与目标
本教学文档基于奇安信攻防社区的一次实战分析案例,详细讲解如何对采用 DPT-Shell 保护的 Android 恶意软件进行逆向分析、脱壳、恶意行为解析以及使用 Frida 进行动态分析和绕过检测。通过本指南,您将掌握针对复杂恶意软件的分析方法。
二、逆向分析阶段
2.1 初步分析与问题识别
- 现象:JADX 反编译后显示的包名与运行时的进程包名不一致。
- 原因:应用使用了 DPT-Shell 进行加壳保护。
2.2 DPT-Shell 加壳原理分析
DPT-Shell 是一种开源的 Android 应用保护工具,其工作原理如下:
- 壳 Dex 与原始 Dex 拼接:将壳 dex 文件与原始应用的 dex/资源压缩包拼接,生成新的
classes.dex。 - 原始数据存储:原始数据以 ZIP 格式附加在壳 dex 之后,并在文件末尾用 4 字节记录原始数据长度。
- 运行时加载:安装后先运行壳逻辑,在运行时解密并加载真实的应用代码。
2.3 脱壳操作
- 定位资源文件:分析发现代码中调用:
ZipUtils.compress(getDexFiles(apkDir), getOutAssetsDir(apkDir).getAbsolutePath() + File.separator + "i111111.zip"); - 获取真实 Dex:
- 在
android/code_cache目录中找到i111111.zip。 - 解压后得到真实的 dex 文件,可用于后续分析。
- 在
三、恶意功能分析
3.1 远程控制与信息窃取模块
- BroadcastReceiver:暴露大量自定义广播指令,包括:
- 应用管理(安装、卸载、获取列表)
- 界面控制(弹窗、日志窗口、权限界面)
- 敏感操作(相机、人脸识别、短信收发、身份证上传、支付页面)
- 系统控制(后台运行、音量、存储读写)
3.2 短信窃取(SmsServiceRoom)
- 采用单例模式存储
SmsContent。 - 提供短信拦截、存储与转发功能。
3.3 屏幕录制(ScreenRecordService)
- 后台持续录屏,用于监控用户操作(如网银交易)。
3.4 数据泄露模块
- 媒体窃取:统计用户的音频、视频、图片、下载文件和联系人。
- 联系人窃取:序列化并上传姓名、电话、邮箱等信息,用于横向移动攻击。
3.5 浮窗密码窃取(BcaInputPwdWindow)
- 继承自
FloatWindow,悬浮显示虚假输入框。 - 通过
LiveString pwd实时捕获密码,并通过commitData()上传。
3.6 输入监听策略(PhoneStrategy 与 ListenMethod)
- PhoneStrategy:管理 PIN 或解锁策略,配合浮窗窃取密码。
- ListenMethod:枚举监听用户操作(如密码输入)。
- 策略数据存储:部分策略数据存储在 Native Lib(SO 文件)中,需使用 Ghidra 进行逆向分析。
3.7 人脸识别视频录制(FaceRecognition)
- 通过前置/后置摄像头采集用户面部图像或视频。
- 用于绕过手机银行的人脸验证。
3.8 恶意利用链路总结
- 诱导用户安装恶意应用。
- 在用户使用目标应用(如银行 App)时触发恶意模块。
- 通过浮窗覆盖、输入监听、录屏、人脸采集等方式窃取敏感信息。
- 数据加密后上传至远程服务器。
四、动态分析阶段
4.1 流量拦截与加密问题
- 使用 BurpSuite 拦截流量,但报文为加密格式。
- 代码中查找密钥失败,无法直接解密。
4.2 Frida 动态解密尝试
- 目标:在加密前(发起请求)和解密后(服务器响应)注入代码。
- 问题:首次尝试时出现
Null指针异常,原因为 DPT-Shell 内置 Frida 检测。
4.3 Frida 检测与绕过
- 检测机制:DPT-Shell 通过
pthread创建新线程运行 Frida 检测代码。 - 触发崩溃:检测到 Frida-server 后执行
mov lr, #0,导致程序返回时崩溃。 - 绕过方法:Hook
pthread_create函数,在特定条件下返回错误,阻止检测线程启动。
4.4 动态分析结果
- 成功拦截明文登录数据,包括用户名、密码、银行卡号、设备 ID 等敏感字段。
- 发现定期 Ping 操作,用于向攻击者同步设备状态。
五、总结与防护建议
5.1 恶意软件特征
- 高风险行为:后台位置跟踪、文件上传、数据窃取。
- 敏感权限:精确位置、联系人、短信、摄像头、麦克风、存储访问。
- 利用方式:诱导下载、权限滥用、远程控制、数据泄露。
5.2 防护建议
- 用户侧:
- 仅从官方渠道下载应用。
- 严格管理应用权限,禁止不必要的授权。
- 安装移动安全防护软件。
- 开发与安全分析侧:
- 加强对加壳应用的分析能力。
- 使用 Frida 等工具时注意对抗检测机制。
- 监控应用网络流量及系统行为。
六、附录:常用工具列表
| 工具名称 | 用途 |
|---|---|
| JADX | Android 应用反编译 |
| Ghidra | SO 文件逆向分析 |
| Frida | 动态插桩与行为分析 |
| BurpSuite | 网络流量拦截与分析 |
| Android Simulator | 运行环境模拟 |
通过本教学文档,您应该已经掌握了针对复杂 Android 恶意软件的完整分析流程。如有疑问,可进一步查阅相关工具文档或技术社区资料。