iOS安全攻防藝術(shù)第一章:工具篇

如果你目前還做不了巨人,那么就去思考如何優(yōu)雅的站在巨人肩膀上。

第一章:工具篇

1.1 Mach-O操作工具

1.1.1 otool

Xcode自帶的查看macho文件結(jié)構(gòu)信息工具,類似Windows上的PE文件信息查看工具,不過這個(gè)是命令行的,直接在控制臺(tái)輸入otool就可以打印支持參數(shù),如下圖所示

otool工具

一般我們常用的不多,例如打印加載的動(dòng)態(tài)庫可以輸入otool -L testiOS 輸出如下:

查看二進(jìn)制的依賴庫

當(dāng)然也可以使用otool工具查看目標(biāo)Macho是否支持Bitcode

對于靜態(tài)庫而言

otool -l xxxx.a | grep __bitcode | wc -l

輸出是個(gè)數(shù)字的話則說明是支持bitcode的文件數(shù)

對于mach-o文件則是

otool -l xxxx | grep __LLVM | wc –l

1.1.2 MachoView

?? 一款查看二進(jìn)制的信息的可視化工具,相對otool來說查看更方便,而且不僅可以查看還可以修改Macho,例如我們可以將armv7的aslr去掉的話只要修改Mach Header里面MH_PIE 00200000->00000000 修改之后MachoView就會(huì)顯示紅色command+S保存后就生效了。

1.1.3 class-dump

?? 一款可以將二進(jìn)制里面的OC類的頭文件信息導(dǎo)出,這樣可以幫助我們進(jìn)行逆向分析。例如我們對testiOS這個(gè)Macho文件執(zhí)行導(dǎo)出頭文件如下圖4:

在執(zhí)行class-dump -s -S -H testiOS -o ~/Desktop/headers 后生成的ViewController.h里面基本上就是原始類聲明。

1.1.4 optool

一款給Mahco注入動(dòng)態(tài)庫的工具,類似的還有insert_dylib等,此工具操作相對方便一點(diǎn),詳細(xì)參數(shù)請查看下圖5,在我們寫好tweak(后面會(huì)介紹怎么寫tweak)之后,我們需要借助此類工具將其注入到目標(biāo)MachO里面。

使用說明如下:

執(zhí)行如下命令將GamePlugin.framework動(dòng)態(tài)庫(假設(shè)是我們寫好的tweak)注入到testiOS,如圖6:

optool install -c weak -p "@executable_path/Frameworks/GamePlugin.framework/GamePlugin"-t testiOS

并將GamePlugin.framework拷貝到testiOS同一級目錄的Frameworks目錄(沒有的話就手動(dòng)創(chuàng)建)

1.1.6 restore-symbol

????? iOS應(yīng)用在上線前都會(huì)裁去符號(hào)表,以避免被逆向分析,

? ? ?恢復(fù)后方便動(dòng)態(tài)調(diào)試符號(hào)化堆棧。

1.1.7 dumpdecrypted

iOS應(yīng)用上架到AppStore上都會(huì)被蘋果加上一層官方殼,所以直接從AppStore上拿到的iPA需要先脫殼后才方便進(jìn)行后續(xù)的靜態(tài)分析,砸殼具體操作方法如下:

1).先將dumpdecrypted.dylib拷進(jìn)對應(yīng)目標(biāo)App的沙盒目錄(這里可以使用scp、或者直接借助愛思助手或者pp助手類似的工具)

2).ssh之后cd到目標(biāo)App的沙盒目錄后執(zhí)行以下命令:

DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib/var/mobile/Containers/Bundle/Application/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX/iOSTest.app/iOSTest

上面可執(zhí)行程序的完整路徑可以通過愛思助手等工具查看:

1.1.8 frida-iOS-dump

?這個(gè)工具是利用frida+

dumpdecrypted完成砸殼自動(dòng)化。

?https://github.com/AloneMonkey/frida-ios-dump這里面有詳細(xì)介紹。


1.1.9 CrackerXI+

? ? 也是一個(gè)脫殼工具,誰用誰知道,有時(shí)候知道脫殼原理之后,使用此工具更佳方便。

1.2、靜態(tài)分析工具

1.2.1 Hopper Disassembler

? ?一款靜態(tài)分析工具,目前只支持MacOS,特點(diǎn)是加載快,交互性等其它功能還是欠缺一點(diǎn),匯編修改功能還可以,作者經(jīng)常用來快速查看和簡單修改。

例如已經(jīng)發(fā)現(xiàn)某個(gè)類的方法就是判斷是否是Vip,并且方法的返回值為BOOL時(shí),我們可以直接按如下修改:

然后保存生成新的Macho文件即可

1.2.2 IDA

iDA一直以來都是安全人員的標(biāo)配工具,因?yàn)樗С諻indows、MacOS、Linux三平臺(tái),而且還支持很多的cpu架構(gòu)指令,關(guān)鍵的關(guān)鍵就是交互性很好,你可以自定義。官網(wǎng)也有免費(fèi)版的。

1.3、動(dòng)態(tài)調(diào)試工具

1.3.1. debugeserver

一步一步用debugserver + lldb代替gdb進(jìn)行動(dòng)態(tài)調(diào)試?http://iosre.com/t/debugserver-lldb-gdb/65

1.3.2 lldb插件

1.xia0LLDB //增強(qiáng)lldb的python命令,支持:

choose 通過類名返回類名內(nèi)存地址。

sbt?? ?bt的增強(qiáng)版可以符號(hào)化堆棧,這個(gè)還是蠻有用。

ivars? 可以查看類的成員變量。

詳細(xì)的請?jiān)谙旅娴膅ithub地址查看介紹:

https://github.com/4ch12dy/xia0LLDB

2.chisel //增強(qiáng)lldb的python命令

這是facebook的一個(gè)開源項(xiàng)目也是lldb的python插件使用很方便具體詳情請查看下面的github介紹

https://github.com/facebook/chisel

1.3.2 cycript

? 這個(gè)工具一般用來動(dòng)態(tài)調(diào)試的時(shí)候注入相應(yīng)代碼進(jìn)行測試功能用的。

1.3.3 Reveal

一款動(dòng)態(tài)查看UI層次的工具。可以快速從UI定位核心業(yè)務(wù)代碼位置用。

1.4、靜態(tài)Patch&&Hook工具

1.4.1 MonkeyDev

方便越獄開發(fā),封裝了theos,支持<反調(diào)試、方法跟蹤、Xcode調(diào)試等功能>

https://github.com/AloneMonkey/MonkeyDev

1.4.1 codesign、ldid

codesign、ldid

1.5、網(wǎng)絡(luò)抓包工具

1.5.1 charles、Fiddler

?常見的HTTP/HTTPS抓包可以用

1.5.2 rvictl+<wireshark、tcpdump>

?TCP底層抓包可以用rvictl+wireshark或者tcpdump


1.6、其他輔助工具

1.6.1 控制臺(tái)(MacOS)

可以很方便查看Mac App或者iOS

App的輸出log信息/Applications/Utilities/Console.app

1.6.2 fsmon_iOS(文件監(jiān)視工具)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容