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
最后更新于