# Android&\&IOS APP渗透测试方法checklist

## 渗透测试环境搭建(iOS\&Android)

| 硬件环境                      |                                                            |                            |
| ------------------------- | ---------------------------------------------------------- | -------------------------- |
| Android设备（需root）（虚拟机也可以)  |                                                            |                            |
| iOS设备（需越狱）                |                                                            |                            |
| 网络环境                      |                                                            |                            |
| 没有特别要求                    |                                                            |                            |
| 操作系统环境                    |                                                            |                            |
| Mac+Xcode操作环境             |                                                            |                            |
| Linux或Unix环境              |                                                            |                            |
| Android软件环境               |                                                            |                            |
| 类型                        | 名称                                                         | 备注                         |
| android开发环境               | JDK                                                        |                            |
| Android SDK               |                                                            |                            |
| Eclipse                   |                                                            |                            |
| 网络分析工具                    | burpsuite免费版                                               | 对于自定义协议，虚拟设备只能异步抓取数据包      |
| charles                   |                                                            |                            |
| wireshark                 |                                                            |                            |
| 逆向分析工具                    | baksmali/smali                                             |                            |
| apktool                   |                                                            |                            |
| virtuous ten studio       |                                                            |                            |
| dex2jar                   |                                                            |                            |
| Java Decompiler           |                                                            |                            |
| apk-extractor             |                                                            |                            |
| 签名工具                      | keytool/jarsigner                                          |                            |
| signapk                   |                                                            |                            |
| 资源编辑工具                    | AndroidResEdit                                             |                            |
| 权限分析工具                    | manitree                                                   |                            |
| 动态分析工具                    | DroidBox                                                   | 需要运行在非windows环境下           |
| APIMonitor                | 需要运行在非windows环境下                                           |                            |
| 静态分析工具                    | APKInspector                                               | 需要运行在非windows环境下           |
| otertool                  | 需要运行在非windows环境下                                           |                            |
| ApkAnalyser               |                                                            |                            |
| APK改之理                    |                                                            |                            |
| 安全审计集成工具                  | Androguard                                                 | 需要运行在非windows环境下           |
| mercury                   |                                                            |                            |
| sec-distros               | santoku                                                    | 需虚拟机运行                     |
| 在线加固，评测                   | 梆梆<http://www.bangcle.com/>                                |                            |
| 其他APK工具                   | Busybox                                                    |                            |
| 在线分析                      | <http://mobilesandbox.org/> <http://fireeye.ijinshan.com/> |                            |
| iOS软件环境                   |                                                            |                            |
| 类型                        | 名称                                                         | 备注                         |
| 文件系统管理工具                  | iTunes                                                     |                            |
| iTools                    |                                                            |                            |
|                           | iPhone Configuration Utility                               |                            |
| plist编辑工具                 | plisteditor                                                |                            |
| sqlite3编辑器                | SQLite Database brower                                     |                            |
| Cookies.binarycookies读取工具 | BinaryCookieReader.py                                      |                            |
| keychain查看工具              | keychain dumper                                            | 需越狱设备                      |
| 文件系统监控工具                  | filemon.iOS                                                | 需越狱设备                      |
| 文件加密类型检测工具                | FileDP                                                     | 需越狱设备                      |
| socket连接监控                | lsock                                                      | 需越狱设备，只有源码，需编译成arm版本的二进制文件 |
| SSH（为了便于操作）               | SecureCRT                                                  |                            |
| openssh,openssl           | 需越狱设备                                                      |                            |
| 网络分析                      | wireshark                                                  | 需网段互通                      |
| BurpSuite                 |                                                            |                            |
| Charles                   |                                                            |                            |
| Fiddler                   |                                                            |                            |
| rvictl                    | mac上的工具                                                    |                            |
| ssl kill switch           | 需越狱设备                                                      |                            |
| trustme                   | 需越狱设备                                                      |                            |
| tcpdump                   | 需越狱设备                                                      |                            |
| 逆向分析工具                    | otool                                                      |                            |
| class-dump-z              | 需越狱设备                                                      |                            |
| Clutch                    | 需越狱设备                                                      |                            |
| flex                      | 需越狱设备                                                      |                            |
| cycript                   | 需越狱设备                                                      |                            |
| removePIE                 | 需越狱设备                                                      |                            |
| IDA                       | 需收费，破解版会被杀毒软件删除                                            |                            |
| Hopper                    | mac上的工具                                                    |                            |
| 修改内存                      | gameplayer                                                 | 需越狱设备                      |
| iGameGuardian             | 需越狱设备                                                      |                            |
| 内购破解                      | IAPFree                                                    | 需越狱设备                      |
| LocalIAPStore             | 需越狱设备                                                      |                            |
| 越狱检测绕过                    | xCon                                                       | 需越狱设备                      |
| 安全审计                      | iAuditor                                                   | 需越狱设备                      |

## mobile渗透测试常用命令方法(iOS\&Android)

| 前期准备                                                           | 使用模拟器安装Android应用                                                                                                       |                                                                                     |
| -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| 步骤：                                                            | 说明                                                                                                                     | 命令方法                                                                                |
| 1                                                              | 列出当前安装的android API包，查看对应的id号                                                                                           | android list target                                                                 |
| 2                                                              | 创建android虚拟设备                                                                                                          | android create avd –n test2（avd名字） -t 12（对应的id号）                                    |
| 3                                                              | 查看已有的android虚拟设备                                                                                                       | android list avd                                                                    |
| 4                                                              | 创建SD卡（这步可以省略，对有些应用而言，需要）                                                                                               | mksdcard 64M \~/dani（存放路径）                                                          |
| 5                                                              | 使用模拟器打开第2步创建的设备                                                                                                        | emulator -avd test2（avd名称） -sdcrad \~/dani（SD卡存放路径） -partition-size 256 -memory 512 |
| 6                                                              | 查看处于运行状态的android设备                                                                                                     | adb devices                                                                         |
| 7                                                              | 下载安装android应用                                                                                                          | adb install ctrip\_std.apk(apk名字）                                                   |
|                                                                |                                                                                                                        |                                                                                     |
| 渗透测试点                                                          | 网络通信分析之HTTP通信                                                                                                          |                                                                                     |
| 步骤：                                                            | 说明                                                                                                                     |                                                                                     |
| 1                                                              | 配置HTTP代理工具，以BurpSuite为例，proxy-options                                                                                  |                                                                                     |
| 2                                                              | 配置Android设备的settings-wireless\&networks-more-Mobile networks-Access Points name-Proxy                                  |                                                                                     |
|                                                                |                                                                                                                        |                                                                                     |
|                                                                |                                                                                                                        |                                                                                     |
| 渗透测试点                                                          | 网络通信分析之socket通信                                                                                                        |                                                                                     |
| 步骤：                                                            | 说明                                                                                                                     | 命令方法                                                                                |
| 1                                                              | 使用tcpdump将设备中的应用操作引发的通信包导出，使用wireshark查看                                                                               | tcpdump -w traffic.pcap                                                             |
|                                                                |                                                                                                                        |                                                                                     |
| 渗透测试点                                                          | 权限分析                                                                                                                   |                                                                                     |
| 步骤：                                                            | 说明                                                                                                                     | 命令方法                                                                                |
| 1                                                              | 检查应用AndoridManifest.xml文件中系统权限的申请是否有安全隐患                                                                               | python manitree.py -f AndroidManifest.xml                                           |
|                                                                |                                                                                                                        |                                                                                     |
| 渗透测试点                                                          | 文件系统分析                                                                                                                 |                                                                                     |
| 步骤：                                                            | 说明                                                                                                                     | 命令方法                                                                                |
| 1                                                              | 将应用存档文件下载到PC机上，使用相应格式的编辑器进行操作                                                                                          | adb pull /data/data/ctrip.android.view/\[文件名] e:/\[文件名]                             |
|                                                                |                                                                                                                        | adb pull /sdcard/CTRIP/\[文件名] e:/\[文件名]                                             |
| 2                                                              | 检查日志信息                                                                                                                 | adb logcat                                                                          |
|                                                                |                                                                                                                        |                                                                                     |
| 渗透测试点                                                          | 静态文件分析                                                                                                                 |                                                                                     |
| 步骤：                                                            | 说明                                                                                                                     | 命令方法                                                                                |
| 1                                                              | 查看包的基本信息                                                                                                               | aapt dump badging apkfile                                                           |
|                                                                | adb shell dumpsys meminfo ctrip.android.view                                                                           |                                                                                     |
| 2                                                              | 查看证书信息                                                                                                                 | jarsigner -verify -certs -verbose apk                                               |
| 3                                                              | 反编译apk包,使用JD\_GUI查看上一步生成的ctrip\_std\_dex2jar.jar包                                                                      | dex2jar.bat e:\ctrip\_std.apk                                                       |
|                                                                |                                                                                                                        |                                                                                     |
| 4                                                              | 反汇编apk包                                                                                                                | java -jar apktool.jar d xx.apk                                                      |
| 5                                                              | 查找可执行文件dex中的URL（Other keyword）                                                                                         | strings classes.dex > ctrip\_classes\_dex grep -n http\[关键字] ctrip\_classes\_dex    |
|                                                                |                                                                                                                        |                                                                                     |
| 渗透测试点                                                          | 组件通信分析                                                                                                                 |                                                                                     |
| 步骤：                                                            | 说明                                                                                                                     | 命令方法                                                                                |
|                                                                | 1.使用mercury查看那APP的组件信息                                                                                                 | 确定包名 run app.package.list                                                           |
|                                                                | 查看指定包的基本信息，例如数据存储路径，uid，gid，permissions run app.package.info -a com.android.browser                                    |                                                                                     |
|                                                                | 列出APP中的activity组件 run app.activity.info -a com.android.browser                                                         |                                                                                     |
|                                                                | 列出APP中的service组件 run app.service.info -a com.android.browser                                                           |                                                                                     |
|                                                                | 列出APP中的Content Provider组件 run app.provider.info -a com.android.browser                                                 |                                                                                     |
|                                                                | 2.使用mercury查找APP Content Provider组件漏洞，包括组件暴露， SQL 注入，文件目录遍历                                                            | 查找可以读取的Content Provider的URI run scanner.provider.finduris -a com.sina.weibo         |
|                                                                | 读取 Content Provider指定URI中的内容 run app.provider.query content://settings/secure --selection "name='adb\_enabled'"        |                                                                                     |
|                                                                | 扫描是否存在content provider目录遍历的漏洞 run scanner.provider.traversal -a com.android.browser                                    |                                                                                     |
|                                                                | 读取content provider指定的目录 run app.provider.read content://com.mwri.fileEncryptor.localfile/system/etc/hosts/             |                                                                                     |
|                                                                | 扫描是否存在SQL注入 run scanner.provider.injection -a com.android.browser                                                      |                                                                                     |
|                                                                | 利用SQL注入 run scanner.provider.query content://com.example.bsideschallenge.evilPlannerdb --projection "\* from cards --" |                                                                                     |
|                                                                |                                                                                                                        | 查看指定包的AndroidManifest.xml文件 run app.package.manifest com.example.bsidechallenge     |
|                                                                |                                                                                                                        |                                                                                     |
| iOS APP渗透测试详解                                                  |                                                                                                                        |                                                                                     |
| 渗透测试点                                                          | IPA包静态分析                                                                                                               |                                                                                     |
| 步骤：                                                            | 说明                                                                                                                     | 命令方法                                                                                |
| 1                                                              | 解密IPA，逆向分析                                                                                                             | ssh root\@iOSdevice'sIP (或者采用usb ssh连接）                                             |
|                                                                |                                                                                                                        | clutch APPName                                                                      |
|                                                                |                                                                                                                        | class-dump-z Mach-OFileName > FileName\_classdump.h                                 |
|                                                                |                                                                                                                        | strings APPNAME                                                                     |
|                                                                |                                                                                                                        | 导出APP使用的共享库 otool -L APPBinaryName                                                  |
|                                                                |                                                                                                                        | 得到汇编代码 otool -tV Mach-OFileName > FileName\_assembledump                            |
| 渗透测试点                                                          | 文件取证分析                                                                                                                 |                                                                                     |
| 步骤：                                                            | 说明                                                                                                                     | 命令方法                                                                                |
| 1                                                              | 检查应用主目录文件/private/var/mobile/Application/\[GUID] 是否存在敏感信息泄露                                                            | iTools查看                                                                            |
| 数据库查看 sqlite3 DBName（或使用SQLite Database Browser查看）             |                                                                                                                        |                                                                                     |
| plist文件查看 plutil plistFileName（或是用plist编辑器查看）                  |                                                                                                                        |                                                                                     |
| binarycookies python BinaryCookieRead.py cookies.binarycookies |                                                                                                                        |                                                                                     |
| 2                                                              | 检查keychain-2.db数据库是否存在敏感信息                                                                                             | keychain\_dumper -g                                                                 |
| 3                                                              | 检查系统日志是否存在敏感信息泄露                                                                                                       | 使用iPhone 配置使用工具查看                                                                   |
| 4                                                              | 检测文件是否启用了数据加密（Data Protection）                                                                                         | FileDP -f FilePath                                                                  |
| 渗透测试点                                                          | APP动态行为分析                                                                                                              |                                                                                     |
| 步骤：                                                            | 说明                                                                                                                     | 命令方法                                                                                |
|                                                                | 监测文件系统的变化                                                                                                              | 运行filemon.iOS > /tmp/FileMon 启动APP,例行操作 ctrl+c结束                                    |
|                                                                | 监控文件存储，NSLog日志记录，HTTP地址，系统调用（GPS，addressbook,                                                                          | iauditor                                                                            |
|                                                                |                                                                                                                        |                                                                                     |
| 渗透测试点                                                          | 网络通信分析                                                                                                                 |                                                                                     |
| 步骤：                                                            | 说明                                                                                                                     | 命令方法                                                                                |
|                                                                | 创建设备虚拟接口，基于该虚拟接口，将移动设备上的数据引入到PC上进行分析                                                                                   | 第一步：使用USB数据线将iOS设备连接到MAC上                                                           |
|                                                                | 第二步：获得iOS设备的UDID，可以使用iTools查看，也可以使用Xcode的Organizer工具查看                                                                 |                                                                                     |
|                                                                | 第三步：创建RVI接口 rvictl -s \<UDID>                                                                                          |                                                                                     |
|                                                                | 第三步：RVI虚拟接口的命令规则可为rvi0，rvi1，。。。,创建后可以使用以下命令查看是否创建成功 ifconfig rvi0                                                      |                                                                                     |
|                                                                | 第四步：在mac上用抓包工具wireshark或tcpdump等工具抓包分析 sudo tcpdump -i rvi0 -n -vv                                                     |                                                                                     |
|                                                                | 第五步：分析结束后，移除创建的RVI接口 $ rvictl -x \<UDID>                                                                               |                                                                                     |
|                                                                |                                                                                                                        |                                                                                     |
| 渗透测试点                                                          | runtime时分析                                                                                                             |                                                                                     |
| 步骤：                                                            | 说明                                                                                                                     |                                                                                     |
|                                                                | 修改函数的实现逻辑                                                                                                              | cycript -p                                                                          |
|                                                                | 修改函数返回值                                                                                                                | flex修改函数返回值                                                                         |
|                                                                |                                                                                                                        |                                                                                     |
| 渗透测试点                                                          | IPC通信（Protocol handler）                                                                                                |                                                                                     |
| 步骤：                                                            | 说明                                                                                                                     | 命令方法                                                                                |
|                                                                | URLSchema                                                                                                              | 搜索Info.plist文件，CFBundleURLSchemes                                                   |
