Android APP 渗透测试方法大全
---by backlion
一、Android APP 渗透测试方法
1.测试环境
SDK: Java JDK, Android SDK。
工具: 7zip, dex2jar, jd-gui, apktool, IDA pro(6.1), ApkAnalyser, Eclipse,
dexopt-wrapper,
010 editor, SQLite Studio, ApkIDE。
apk 工具: android 组件安全测试工具, activity 劫持测试工具, android 击键记录
测试工具,
代理工具(proxydroid), MemSpector, Host Editor
2.客户端程序安全测试
2.1 数字签名检测
C:\Program Files\Java\jdk1.8.0_111\bin\jarsigner.exe -verify APK 文 件 路 径
-verbose –certs
当输出结果为“jar 已验证”时,表示签名正常
检测签名的 CN 及其他字段是否正确标识客户端程序的来源和发布者身份
如上图,说明测试结果为安全。
要说明的是,只有在使用直接客户的证书签名时,才认为安全。 Debug 证书、第三方(如
开发方)证书等等均认为风险。
2.2.反编译检测
把 apk 当成 zip 并解压,得到 classes.dex 文件(有时可能不止一个 dex 文件,但文
件名大多类似)
使用 dex2jar 执行如下命令:
dex2jar.bat classes.dex 文件路径
得到 classes.dex.jar
然后使用 jd-gui 打开 jar 文件,即可得到 JAVA 代码。【注: 直接使用 smali2java 或
者 APKAnalyser 打开 apk 文件,也可反编译回 Java 代码】
【注:有时用 apktool 能够解包并查看 smali,但 dex2jar 却不行。如果 dex2jar 反编
译失败,可以试试看能不能恢复 smali 代码。】逆向后发现是没混淆的情况,是不安全的。
如果代码经过混淆,或者有加壳措施,不能完整恢复源代码的,都可以认为此项安全,混淆
后的代码样例,除了覆写和接口以外的字段都是无意义的名称。如下图已加密混淆,除了覆
写和接口以外的字段都是无意义的名称::
反编译为 smali 代码
使用 apktool 工具可以对 apk 进行解包。具体的解包命令格式为:apktool d[ecode]
[OPTS] []。例如,对 CQRCBank_2.1.1.1121.apk 进行解包的命令如下。
1.如果只需要修改 smali 代码,不涉及资源文件的修改,可以在解包时加入 -r 选项(也
可
以直接使用 baksmali 将 dex 反编译为 smali 代码,见 5.3),不解码 apk 中的资源。
在打包时可以避免资源方面的问题(如 aapt 报的各种错误)。
2. 如果只需要反编译资源文件,可以在解包时加入-s 选项,不对 classes.dex 进行反编译。
3. 如果在 5.6.1 使用 apktool 打包 smali 代码中出现资源相关的错误,可能是需要较新
的
framework 文件。可参考此处,添加 framework 文件。例如,添加 Android 4.4.2 SDK
中的 framework 文件,命令如下:
4. 解包时指定相应的 framework(上面命令中的 tag0 是对添加的 framework 的标记,
用于标识不同的 framework),如图所示:
解包完成后,会将结果生成在指定的输出路径中,其中,smali 文件夹下就是最终生成的
Dalvik VM 汇编代码,AndroidManifest.xml 文件以及 res 目录下的资源文件也已被解
码。如图:
处 理 odex 文件
odex 是 android 系统中对 dex 文件优化后生成的文件。如果要使用上述反编译方法,
需要先将 odex 转换成 dex。
1. 下载 smali 工具(https://code.google.com/p/smali/)。
2. 将虚拟机中/system/framework/中的 jar 文件复制出来,放到一个文件夹中。所需的
虚拟机版本可参考 odex 生成的环境(如 odex 是在 android 4.4 中生成的,就复制 4.4
虚拟机,如果在真机中生成,则可以复制真机的)。
3. 运行 baksmali.jar,将 odex 解析为 smali 代码。-x 选项表示输入是 odex 文件,
-d 选项指定上个步骤中复制出来的 jar 文件路径,如下图所示。当命令成功执行后,在当
前目录会创建一个 out 文件夹,里面就是 smali 代码。
4. 运行 smali.jar,可生成 dex。如下图所示:
反 编 译 so 库
apk 解压缩后,将 lib\armeabi\目录下的 so 文件直接拖入 IDA 中,可以对 so 文件进
行静态分析。可以看到 so 文件中包含的函数,ARM 汇编代码,导入导出函数等信息。