iOS(二)Mac工具篇
一、Mac工具列表:
文件系统:iExplorer, iFunbox, iTool
代码结构:class-dump-z
UI分析:Reveal,PonyDebugger
监测:libNotifyWatch
网络分析:Tcpdump, WireShark, Charles
开发:Xcode
越狱开发:Theos
反汇编:IDA pro,Hopper
调试:gdb,Cycript,Xcode
静态&动态分析: iNalyzer
数据库:SQLite Database Browser、MesaSQLite
黑盒测试:Snoop-it、introspy
注:Mac下工具比较繁多,先介绍常用工具,下部分工具就先不介绍了
- 多平台通用工具:ida、wireshark
- Mac官方开发调试工具:Xcode(其实逆向时候很少使用)
- 使用复杂功能强大,如动态、调试、黑盒等,后续再出
- 越狱开发:Theos
二、文件系统工具_从iOS导出样本
即类似win下的资源管理器,mac下的finder,可从非越狱iOS设备导出/安装ipa应用,越狱设备可安装破解应用。
以下三个均有iOS、Mac、win版本:
iExplorer:http://www.macroplant.com/iexplorer/
iFunbox:http://ifunbox-cn.com/
iTool:http://pro.itools.cn/
使用过程过于简单,不做说明,参考:
三、class-dump_获取头文件信息
class-dump即用来dump目标对象class信息的工具,它是利用Objective-C语言的runtime特性,将存储在Mach-O文件中的@interface和@protocol信息提取出来,并生成对应的.h文件。
一、获取信息:
可以看到闭源应用程序、框架(framework)和软件包(bundle)的头文件,了解内部设计。
二、使用注意:
只能获取Clutch(Cydia工具)破解之后的,如果直接用class-dump-z dump从App Store下载的二进制文件,只能得到加密后的信息。
三、源地址:
(目前公司不能访问http,需要把文件URL手动改为https。不过1.3已上传)
四、使用参考:
1、安装
获取tar包解压配置到本地环境
$ tar -zxvf class-dump-z_0.2a.tar.gz
2、使用实列(某疑似样本)
a.finder打开ipa,显示包内容,获取并导出Executable可执行文件
b.使用class-dump获取头文件信息
class-dump-z –H AppName/Payload/AppName.app/AppName –o storeheaders
目录文件夹下生成大量*.h文件,可以在Xcode下建空工程,导入查阅。
实际效果:
四、Reveal_UI分析
Reveal能够在运行时调试和修改iOS应用程序。它能连接到应用程序,并允许开发者编辑各种用户界面参数,这反过来会立即反应在程序的UI上。就像用FireBug调试HTML页面一样,在不需要重写代码、重新构建和重新部署应用程序的情况下就能够调试和修改iOS用户界面。
一、源地址:
收费软件,安装直接导入”应用程序“即可。
二、使用注意:
Reveal常规用法是将framework集成至Xcode工程中,但逆向分析时可在越狱的iOS设备上查看任意的App。
二、使用实列:
1、 准备
a) iOS:已越狱,OpenSSH,MobileSubstrate等工具;
b) Mac:Reveal,与iOS同一wifi内。
2、 拷贝framework和dylib到越狱机
scp -r /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/Reveal.framework [email protected]:/System/Library/Frameworks
scp /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib [email protected]:/Library/MobileSubstrate/DynamicLibraries
3、 编辑libReveal.plist
a.可以ssh登录到越狱机上,并且越狱机已安装了编辑器工具例如nano、vim,在/Library/MobileSubstrate/DynamicLibraries/下创建文件libReveal.plist,指定app的Bundle,可以指定多个
(com.weiying.Wvod是上列中的样本Bundle ID)
b.也可以在本地创建好libReveal.plist在scp到指定位置/Library/MobileSubstrate/DynamicLibraries/下
b.也可以在本地创建好libReveal.plist在scp到指定位置/Library/MobileSubstrate/DynamicLibraries/下
4、 重启越狱机
a.执行 killall SpringBoard
b.也可以重启设备
a.执行 killall SpringBoard
b.也可以重启设备
之后打开libReveal.plist里指定的app,再从Reveal界面左上角选择要连接的机器,进入不同的页面之后还可以点击右上角的刷新钮来刷新监测的页面信息。
五、Hopper_Mac下的反编译工具
Hopper有OS X和Linux版本,能够反汇编32/64位Mac,Linux,Windows和iOS可执行文件。虽然没有IDA强大,但据说iOS逆向效果比IDA好。
一、源地址:
收费软件,安装导入即可。
二、使用:
1、打开iOS应用
File—Read Executable to Disassemble
导入Executable(直接导入IPA会被解析成x86程序)
使用方式类似IDA:
2、汇编转C伪代码
点击右上红框按钮,弹出C伪代码
六、流量分析
6.1 Tcpdump
通用工具,在Cydia搜索即可安装。
使用:
6.1.1 SSH&iOS终端抓包
1、跟Android一样可通过SSH远程&本地终端上直接抓包。
注意:在终端上操作抓包,对ios设备来讲,MobileTerminal切至后台就不再工作。
2、 Tcpdump指令
对于一些ios设备如iphone及ipad,既可以接入WiFi,也可以接入移动2G/3G/4G,在使用tcpdump命令时请注意网口类型,WiFi接入时网卡为en0,而2G/3G/4G接入时网卡为pdp_ip0,而网卡不指定时默认为pdp_ip0。故:
WiFi下抓包:tcpdump -i en0 -X -s0 –w data.pcap
2G/3G/4G下抓包:tcpdump -i pdp_ip0 -X -s0 -w data.pcap
或tcpdump -X -s0 -w data.pcap
6.1.2 USB直接抓包(映射iOS接口到Mac)
需要xcode,利用xcode内置工具
一、Mac映射iOS设备接口
Apple在iOS5.0以上增加了RVI(Remote Virtual Interface),打开它非常简单,只需要把iOS设备通过usb连接到Mac上,然后打开“终端”,输入
rvictl -s [Your Device's UDID] (UDID可通过itunes查看)
然后在终端上会显示如下字样:
Starting device ********** [SUCCEEDED]
如果这一步产生了什么错误的话,可能是没有安装XCode或者UDID输入错误,接下来在终端可以使用
ifconfig -l
查看当前Mac上的接口,比如(不同Mac可能会有差异):
lo0 gif0 en0 en1 fw0 rvi0
其中rvi0就是Remote Virtual Interface,这也就意味着在你的Mac上虚拟了一个iOS设备接口,接下来就是通过tcpdump抓取这个接口上的数据包。
二、tcpdump指令
sudo tcpdump -i rvi0 -n -s 0 -w dump.pcap tcp
(此处sudo是mac指令,所以密码也是mac设备密码)
参数的含义:
-i rvi0 选择需要抓取的接口为rvi0(远程虚拟接口)
-s 0 抓取全部数据包
-w dump.pcap 设置保存的文件名称
tcp 只抓取tcp包
当tcpdump运行之后,你可以在iOS设备上开始浏览你想抓取的App,期间产生的数据包均会保存到dump.pcap文件中,当想结束抓取时直接终止tcpdump即可。
6.2 Charles(代理拦截,附注册码)
Mac下常用的对网络流量进行分析的工具,类似于Windows下的Fiddler。
Mac工具,收费软件,可免费使用,正常安装。
注册码:
注意:applejava版需要java6版本,推荐使用openjdk版本,支持jdk7&8。
二、重要功能介绍:
1.拦截SSL请求
2.模拟慢速网络
3.支持修改网络请求包并多次发送
4.断点功能 ,Charles能够断到发送请求前(篡改Request)和请求后(篡改Response)
6.捕获记录控制,可以过滤出关注的请求。
三、使用:
1、获取代理权限
初次启动会提示是否授予使用代理权限,Grant即可。
2、设置代理端口为8888
3、安装证书(真机拦截SSL需要)
4、模拟器设置
下载http://www.charlesproxy.com/assets/install-charles-ca-cert-for-iphone-simulator.zip,解压之后双击,就可以在模拟器上拦截SSL请求了,甚至都不用重启模拟器。
5、设置iOS设备的代理
Mac与iOS于同一wifi下,设置iOS代理ip为Mac地址,端口为8888:
设置完后即可连上Charles,allow即可
6、数据呈现很清晰
更多使用还需继续研究,可以参考乌云这篇app移动安全
七、数据库工具
SQLite数据库文件可用iFunbox等工具从App目录下拷贝出来,如下微信数据库文件位置:
7.1 MesaSQLite
安装导入“应用程序”,打开直接加载数据库文件:
7.2 DB Browser for SQLite
安装导入“应用程序”,使用直接打开数据库:
0 评论:
发表评论