logo资料库

Android APP渗透测试方法大全.pdf

第1页 / 共137页
第2页 / 共137页
第3页 / 共137页
第4页 / 共137页
第5页 / 共137页
第6页 / 共137页
第7页 / 共137页
第8页 / 共137页
资料共137页,剩余部分请下载后查看
一、Android APP渗透测试方法
1.测试环境
2.客户端程序安全测试
2.1数字签名检测
2.2.反编译检测
2.3.应用完整性校检
2.4.debug模式
2.5.应用程序数据可备份
2.6.应用权限测试
3.组件安全测试
3.1.Activity
3.2.Service
3.3.Broadcast Reciever
3.4.Content Provider
3.5.Intent本地拒绝服务检测
3.6.webview 组件安全
3.6.1.WebView代码执行检测
3.6.2.WebView不校验证书检测
3.6.3.WebView密码明文保存检测
3.7.组件通信分析
4.敏感信息安全测试
4.1.数据文件
4.1.1.检查私有目录下的文件权限
4.1.2.检查客户端程序存储在手机中的 SharedPreferences 配置文件
4.1.3.检查客户端程序存储在手机中的 SQLite 数据库文件
4.1.4.检查客户端程序 apk 包中是否保存有敏感信息
4.1.5.检查客户端程序的其他文件存储数据,如缓存文件和外部存储
4.1.6.检查手机客户端程序的敏感信息是否进行了加密,加密算法是否安全
4.2.logcat日志
5.密码软键盘安全性测试
5.1.键盘劫持
5.2.随机布局软键盘
5.3.屏幕录像
5.4.系统底层击键记录
6.安全策略设置测试
6.1.密码复杂度检测
6.2.账号登录限制
6.3.账户锁定策略
6.4.私密问题验证
6.5.会话安全设置
6.6.界面切换保护
6.7.UI信息泄露
6.8.验证码安全
6.9.安全退出
6.10.密码修改验证
6.11.Activity界面劫持
6.12.登录界面设计
6.13.弱加密算法审查
6.14.应用权限测试
7.手势密码安全测试
7.1.手势密码的复杂度
7.2.手势密码的修改和取消
7.3.手势密码的本地信息保存
7.4.手势密码的锁定策略
7.5.手势密码的抗攻击测试
8.进程保护测试
8.1.内存访问和修改
8.2.动态注入
8.3.本地端口开放检测
8.4.外部动态加载DEX安全风险检测
8.5.so库函数接口检测
9.通信安全测试
9.1.通信加密
9.1.1.网络通信分析之HTTP通信
9.1.2.网络通信分析之socket通信
9.2.证书有效性
9.3.关键数据加密和校检
9.4.访问控制
9.5.客户端更新安全性
9.6.短信重放攻击
10.安全增强测试
10.1.第三方SDK安全测试
10.2.二维码识别测试
10.3.开放网络服务安全测试
10.4.运行其它可执行程序风险
10.5.是否对数据的完整性进行校验
11.业务安全
二、附录一:工具使用
1.ANDROID 应用分析
1.1.使用模拟器安装Android应用
1.2.apk 解包
1.3.逆向 CLASSES.DEX
1.3.1.反编译为 smali 代码
1.3.2.反编译为 java 代码
1.4.处理 xml
1.5.反编译 so 库
1.6.处理 odex 文件
1.7.打包 APK
1.7.1签名和优化
1.7.2使用 apktool 打包 smali 代码
1.8.修改已安装 apk
1.9.内存获取 classes.dex
1.9.1.ZjDroid 工具
1.10.Android Hook 框架
1.10.1.Xposed Framework
1.11.集成分析工具
1.11.1.apk 编辑工具
1.11.2.Android debug monitor
1.11.3.Eclipse
1.11.4.APKAnalyser
1.12.ant 编译源代码
1.13.动态调试
1.13.1.使用 IDA pro
1.13.2.使用 eclipse+ADT
1.13.3.andbug 调试
1.14.adb shell 命令
1.14.1.测试工具 Monkey
1.14.2.数据库文件查看 sqlite3
1.14.3.日志查看 logcat
1.14.4.文件列举 lsof
1.14.5.用户切换 Run-as/su
1.14.6.截图工具 Fbtool
1.14.7.事件操作 getevent/sendevent
1.14.8.系统调用记录 Strace
1.14.9.进程查看和监视 ps/top
1.15.网络工具(root)
1.15.1.监控流量 iftop
1.15.2.嗅探流量 tcpdump
1.15.3.网络接口设备配置 netcfg
1.16.手机根证书安装
1.17.drozer 组件测试工具
1.18.android 代理配置
2.Android代码分析
2.1Android 组件功能相关代码
2.1.1.Content provider
三、附录二:常用测试工具以及环境平台
1.常用的工具
1.1.android开发环境
1.2.网络分析工具
1.3.逆向分析工具
1.4.签名工具
1.5.资源编辑工具
1.6.权限分析工具
1.7.动态分析工具
1.8.静态分析工具
1.9.安全审计集成工具
1.10.在线加固,评测
1.11.其他APK工具
1.12.绕过Root检测和SSL证书绑定(Pinning)
1.13.在线分析
2.常用的的测试环境平台
2.1.Android Studio安卓开发调试平台
2.2.MobSF 移动App自动分析测试平台
2.3.Drozer 安卓App漏洞利用测试平台
2.4.Jeb/jd-gui 安卓逆向工具
2.5.内存辅助工具MemSpector Pro/DDMS/Cheatengine
2.6.渗透仿真环境
四、附录三:风险等级评定
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 汇编代码,导入导出函数等信息。
分享到:
收藏