2015年3月23日星期一

iOS(三)iOS工具篇


一、iOS工具介绍

(iOS工具若无特殊说明,则都默认用越狱设备从Cydia获取安装)
越狱工具:盘古、太极等,越狱过程不赘述;
Cydia:软件源,越狱后默认安装;
OpenSSH:从Mac登录进越狱设备;
BigBoss Recommendation tools:包含大部分常用黑客工具集,如: APT 0.6 Transitional, Git, GNU Debugger, less, make, unzip, wget和SQLite 3.x等;
MobileTerminal:iOS设备上的终端;
Clutch:App Store应用破解工具,cydia版本比较老,不支持部分应用,推荐下载最新版导入iOS安装;

二、基本工具

       越狱后会自动安装Cydia,打开Cydia,搜索安装OpenSSH、BigBoss Recommendation tools、MobileTerminal这三个基本工具。

       点击Install安装即可: 

2.1 通过wifi SSH登陆设备

       当Mac与iOS于同一wifi下,可在Mac终端中通过SSH指令登陆进iOS设备。(iOS默认账号有root和mobile,默认密码都为alpine,建议进去后立即修改,iOS上第一个蠕虫ikee既是使用此默认密码传播)
       ssh root@(iOS的ip)
       ssh mobile@(iOS的ip) 
    (win下可以使用putty一类的工具)

2.2 修改OpenSSH默认密码

       iOS设备默认有两个账号,root和moblie,二者默认密码都是alpine。Mac SSH连接设备后,或直接在iOS终端MobileTerminal中,通过passwd来修改默认密码:

2.3 apt-get update获取最新包列表

       iOS上root用户执行apt-get update(mobile用户通过su换成root用户),获取最新包列表:

三、Clutch-AppStore应用破解工具

App Store上的应用都使用了FairPlay DRM数字版权加密保护技术。如果直接从iOS设备上导出从App Store下载的应用的IPA包,会发现其内容是加密过的。使用Clutch工具可以破解掉数字版本保护。
一、源
二、安装
       下载程序后,可以使用itools或ifunbox等工具导入iOS设备的/usr/bin目录下;或者在Mac终端使用scp指令拷贝进去:
       sudo scp [Clutch文件] root@[iOS ip]:/usr/bin/Clutch
       拷贝成功后,进入iOS的/usr/bin目录即可看见Clutch:

       并用chmod 755给Clutch执行权限。
三、使用
       在iOS中执行clutch即显示可供破解的app:
       选择对应app序号即可自动破解,破解微信如下:
 
       老版本破解部分应用会出现失败: 
       新版本可以成功破解:

四、introspy-黑盒测试

Introspy由两个单独的模块组成,一个追踪器,一个分析器。它是分析iOS应用程序安全最强大工具之一。
参考:
一、源:
       追踪器-iOS:https://github.com/iSECPartners/Introspy-iOS

4.1 追踪器-iOS

二、追踪器安装:
       introspy追踪器是一个iOS的deb包,将其导入设备后使用dpkg安装即可: 
       如过安装错误,如提示需要安装preferenceloader、applist,都是Cydia插件,更新&安装后即可继续安装introspy。
三、重启设备
       安装完后需要重启设备,或者重启SpringBoard
       killall     SpringBoard
       重启完后,即可在iOS的设置中看到introspy:
 
四、使用:
       introspy-apps选择需要分析的app,这里选择的为某疑似样本。
 
       introspy-settings设置需要记录的数据类型,默认全选
 
       之后启动&尽可能多的使用样本,Introspy会在该应用目录的Library下生成一个introspy开头的db文件,里面记录了该应用的行为。

4.2 分析器-Mac

       分析器是Mac端工具,用于查看追踪器记录的数据,先从git clone过来:
       用分析器将db数据转换为html,指令:
       python introspy.py –p ios –outdir [输出的目录] [目标db文件] 
       输出的文件下有个report.html文件,浏览器打开即可:
       追踪信息主要分为DataStorage、IPC、Misc、Network、Crypto六大类信息,数据呈现比较清晰:
Mac上使用如下指令可以输出db数据里的urls或files操作:
       Urls:python introspy.py -p ios -i urls introspy.db
       Files:python introspy.py -p ios -i files introspy.db
 

五、dumpdecrypted脱壳

参考:

5.1 编译

一、源
二、设置Makefile
       GCC_UNIVERSAL与SDK需要与手机环境保持一致:
       (实际测试使用默认值即可,应该是编译环境需要高于或等于iOS环境)
       (SDK=`xcrun --sdk iphoneos --show-sdk-path`中的xcrun为检测Xcode环境的工具) 
三、make
       Makefile设置完后,make编译
 
       生成dumpdecrypted.dylib文件
 

5.2 使用

一、dylib文件导入iOS设备
       使用scp指令,或itools等工具,导入到/var/tmp目录下
 
二、破解指令
       如下破解微信,需指明app具体可执行文件位置
         DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Applications/91591CCD-5AE5-4A44-978F-CE38AAD0F8DA/MicroMessenger.app/MicroMessenger
 
       破解完成后,MicroMessenger.decrypted即是破解产物,可以直接上ida或者hopper等工具
 
otool -l /var/tmp/MicroMessenger.decrypted  | grep cryptid
       该指令可验证是否脱壳成功,0为成功。

2015年3月18日星期三

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下工具比较繁多,先介绍常用工具,下部分工具就先不介绍了
  1. 多平台通用工具:ida、wireshark
  2. Mac官方开发调试工具:Xcode(其实逆向时候很少使用)
  3. 使用复杂功能强大,如动态、调试、黑盒等,后续再出
  4. 越狱开发:Theos

二、文件系统工具_从iOS导出样本

            即类似win下的资源管理器,mac下的finder,可从非越狱iOS设备导出/安装ipa应用,越狱设备可安装破解应用。
            以下三个均有iOS、Mac、win版本:
            使用过程过于简单,不做说明,参考:

三、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 
$ sudo cp mac_x86/class-dump-z /usr/bin/
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/下
4、  重启越狱机
a.执行 killall SpringBoard
b.也可以重启设备
之后打开libReveal.plist里指定的app,再从Reveal界面左上角选择要连接的机器,进入不同的页面之后还可以点击右上角的刷新钮来刷新监测的页面信息。
 

五、Hopper_Mac下的反编译工具

Hopper有OS X和Linux版本,能够反汇编32/64位Mac,Linux,Windows和iOS可执行文件。虽然没有IDA强大,但据说iOS逆向效果比IDA好。
一、源地址:
            收费软件,安装导入即可。
二、使用:
            参考:http://security.ios-wiki.com/issue-3-8/
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工具,收费软件,可免费使用,正常安装。
注册码:
Registered Name: http://ninjasaga.cheat.center
Licence Key: 18e69f6d5bc820d4d3
Versi: 3.9.3/3.9.2
注意: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

安装导入“应用程序”,使用直接打开数据库:


CVE/CNVD list

报告记录&poc: 最近fuzz出了不少crash,提交记录git: https://github.com/gandalf4a/crash_report 其中CVE记录如下: (不定期持续更新) 2025 CVE-2025-22134:heap-buffer-o...