Comment on page
Android&&IOS APP渗透测试方法checklist
硬件环境 | | |
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 | 需虚拟机运行 |
在线加固,评测 | | |
其他APK工具 | Busybox | |
在线分析 | | |
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 | 需越狱设备 |
前期准备 | 使用模拟器安装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 |
最近更新 2yr ago