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

最后更新于