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 | 需虚拟机运行 |
在线加固,评测 | ||
其他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 | 需越狱设备 |
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 |
最后更新于