应用安全 --- 应知应会 之 如何分析一个apk
1.熟悉操作。在一个安全的虚拟机比如mumu、挽念或空闲手机安装apk并使用一下,熟悉操作流程。
2.解包apk。apk的本质是zip,解压就能看见内部文件结构,解压工具建议使用jadx和mt
3.特征分析。首先用APKiD、mt分析apk的元数据,包含包名,版本,签名版本等等,然后分析这个app是用什么工具开发的,是脚本类app比如懒人精灵,浏览器类app比如uniapp,java类的app,kotlin类的app。知道这个可以极大的提高分析效率。最后看看有没有其他特征文件在。
开发框架识别
-
原生开发 (Native): Java/Kotlin,分析
classes.dex和lib目录下的原生库(*.so文件)。 -
混合开发 (Hybrid): 如 Cordova、Ionic、React Native。特征:
assets目录下有www文件夹包含 HTML/JS/CSS 文件。 -
跨平台开发: Flutter (特征:
lib/arm*/libflutter.so,lib/arm*/libapp.so),Unity (特征:assets/bin/Data/,lib/arm*/libunity.so)。 -
小程序/快应用: 如uni-app(特征:
assets/apps/*下有www目录和manifest.json)。 -
脚本引擎: 如懒人精灵、Auto.js,特征为内置其特有的引擎文件(如
libluaj.so)和项目脚本文件(如project.json,main.js)。
4.加固分析。包含签名验证。有些apk在运行时会验证原始签名,可以直接使用mt签名这个apk,安装如果打开失败表示有签名验证,需要去签。使用加固识别工具mt识别是什么加固,即使没有提示加固,也可能有加固或者自己实现的加固算法。识别加固厂商:通过 lib 目录下的 so 库名称、assets 下的特定文件、Application 父类等特征判断使用的是哪家加固(360、腾讯、梆梆、爱加密等)。然后开始脱壳,
静态脱壳:使用ida和mt进行去混淆和去加密
-
动态脱壳:这是加固分析的核心。目标是获取内存中的 Dex 或 so 明文。
-
Dump Dex:在关键时机(如
ClassLoader加载 dex 后)使用 Frida、Xposed 模块或内存取证工具(如 GDB, Fridump)将内存中的 dex 文件dump下来。 -
Dump so:针对so文件的加固,需要在so被加载并解密后,将其从内存中dump出来,再进行修复分析。
-
5.代码分析。去壳后就可以直接动态和静态分析源码,查看核心业务逻辑。,。动态使用frida分析一个函数的输入和输出值。
-
静态分析:
-
Java层: 用
MT管理器/NP管理器或电脑端的JADX-GUI查看反编译的 dex 代码。 -
原生层: 用
Ghidra或IDA Pro进行反汇编分析.so文件。 -
清单文件: 分析
AndroidManifest.xml,找出入口组件、权限、调试信息。
-
-
动态分析:
-
环境准备: 使用
Magisk隐藏 Root,用使用magisk+小黄鸟抓包工具辅助流量分析。 -
行为监控: 运行应用,使用adb logcat > log.txt,观察
logcat日志和网络请求。 -
深入Hook: 针对关键函数,编写
Frida脚本进行插桩,打印参数和返回值。 -
内存操作: 使用
GameGuardian搜索和修改运行时数据。
-
同时辅助ai的编程工具进行分析
8.文件分析。使用mt在根文件下app目录有应用释放的内部文件可以辅助分析。
-
实时监控:使用
ls -al和cat检查文件固然重要,但更推荐使用inotifywait工具监控应用私有目录 (/data/data/<package_name>) 的文件创建、读写、删除事件,了解其文件操作行为。 -
数据库分析:检查应用的 SQLite 数据库(
.db文件),使用sqlite3命令或图形化工具(如 DB Browser for SQLite)查看其中可能存储的敏感信息。 -
SharedPreferences:检查
shared_prefs目录下的 XML 文件,这里常存放应用配置和缓存数据。 -
检查数据是否加密:查看存储的数据库、配置文件、缓存文件内容是否是明文。敏感信息(如密码、token)明文存储是常见的安全漏洞。
9. 第三方 SDK 分析 (3rd-party SDK Analysis)
- **识别 SDK**:通过 `lib` 目录的 so 库、`assets` 下的文件、代码包名(如 `com.google.`, `com.tencent.`, `com.umeng.`)来识别应用集成了哪些第三方 SDK(广告、统计、推送、登录、支付等)。
-
修改与重打包: 使用
MT管理器修改 Smali 代码或资源,然后重打包签名安装测试。ida修复so -
自动化: 将成熟的
Frida脚本或Xposed模块化,实现一劳永逸的修改。
浙公网安备 33010602011771号