
本文我將為大家展示,如何在iOS應(yīng)用程序中使用Frida來繞過越獄檢測(cè)。在正式開始之前,讓我們先來簡(jiǎn)單了解下本文的具體流程。
以下是本文將要介紹的內(nèi)容:
Frida框架介紹
Frida在iOS上的設(shè)置
將Frida連接到一個(gè)iOS進(jìn)程
dump類和方法信息
使用Frida進(jìn)行iOS應(yīng)用程序的運(yùn)行時(shí)操作
總結(jié)
Frida介紹
Frida是一款基于python + javascript 的hook與調(diào)試框架。它允許你將 JavaScript 的部分代碼或者你自己的庫注入到 windows、macos、linux、iOS、Android,以及 QNX 的原生應(yīng)用中,同時(shí)能完全訪問內(nèi)存和功能。
該工具由OleAndréV.Ravnås(@oleavr)開發(fā),并且還有一個(gè)非;钴S的IRC頻道,在這里你可以與其他許多同樣熱衷于Frida的技術(shù)人員探討交流。你可以通過irc.freenode.net上的#frida加入IRC。
Frida的一些實(shí)際用例(根據(jù)自身使用的目的而定)–
hook特定函數(shù)并更改返回值
分析定制協(xié)議,并迅速嗅探/解密流量
對(duì)自己的應(yīng)用程序進(jìn)行調(diào)試
從iOS應(yīng)用程序中dump類和方法信息
等等。
除以上提到的作用之外,F(xiàn)rida 還提供了一系列的 API 以及方法。你可以使用命令行窗口或者像 frida-trace 的記錄 low-level 函數(shù)(例如 libc.so 中的’open’調(diào)用)的工具來快速運(yùn)行。你可以使用C,NodeJs或者Python綁定來完成更加復(fù)雜的工作。因此,F(xiàn)rida 也是我強(qiáng)烈推薦大家使用的安全或分析工具的首選。目前,已經(jīng)有好幾種工具都建立在了Frida上,包括Needle 和AppMon。
Frida的另一大優(yōu)勢(shì)就是,可以在非越獄的設(shè)備上正常工作。為了更好的運(yùn)行Frida來調(diào)試非越獄設(shè)備上的應(yīng)用程序,你可以使用Swizzler2等工具來修改應(yīng)用程序,以便在應(yīng)用程序中添加FridaGadget dylib。
Frida在iOS上的設(shè)置
Frida在ios上的設(shè)置也非常的簡(jiǎn)單,只需要在你的iOS設(shè)備以及主機(jī)上執(zhí)行以下操作。
要在你的iOS設(shè)備上安裝Frida服務(wù)器,請(qǐng)參照以下步驟。
1.在你的iOS設(shè)備上打開Cydia應(yīng)用程序。
2.添加一個(gè)源,URL為:https://build.frida.re

3.打開Source或搜索Frida,單擊Modify,然后單擊Install。

為了在你的系統(tǒng)上安裝Frida的Python綁定,你需要啟動(dòng)erminal并輸入pip install frida來進(jìn)行安裝。
將Frida連接到一個(gè)iOS進(jìn)程
現(xiàn)在我們已經(jīng)安裝了Frida。下面我們就要正式開始使用Frida,對(duì)我們的iOS應(yīng)用程序進(jìn)行安全評(píng)估和開發(fā)了!
在本案例中,我們將使用Damn Vulnerable iOS App(DVIA)這款包含大量安全漏洞的app來進(jìn)行測(cè)試,你可以從這里下載到它。以下大部分所使用的ios app Frida測(cè)試腳本你可以在Github獲取到。
我們將分析DVIA的越獄檢測(cè)行為,目前該設(shè)備顯示已越獄。

讓我們先來查看下,目標(biāo)設(shè)備上所有正在運(yùn)行的進(jìn)程有哪些:
frida-ps –U

從上面的截圖我們可以看到,所有當(dāng)前正在運(yùn)行的進(jìn)程。
下面讓我們來attach一個(gè)進(jìn)程。你可以通過 ‘frida -U 進(jìn)程名’ 的格式來attach某個(gè)進(jìn)程。成功attach后,我們將進(jìn)入到frida的控制臺(tái)界面,在該控制臺(tái)我們可以訪問到目標(biāo)進(jìn)程的所有不同屬性,內(nèi)存內(nèi)容和功能。

我們可以在Frida的shell中工作,并與我們的進(jìn)程進(jìn)行交互,或者我們還可以通過編寫自己的JavaScript,來獲取我們想要的數(shù)據(jù)。
dump類和方法信息
這項(xiàng)工作的目的是為了確定在DVIA的越獄檢測(cè)中,負(fù)責(zé)驗(yàn)證我們的設(shè)備是否越獄的ViewController和function是哪個(gè)。
我們先來寫一個(gè)基本的Frida腳本,來轉(zhuǎn)儲(chǔ)目標(biāo)應(yīng)用程序中存在的所有類和方法。在這里,我們將尋找與越獄相關(guān)所有的內(nèi)容,以便我們能夠在Frida的幫助下繞過越獄檢測(cè)。
基本操作流程如下:

使用Frida查找DVIA中的越獄檢測(cè)類
我們先來看看,應(yīng)用程序中的類都有哪些。
for (var className in ObjC.classes)
{
if (ObjC.classes.hasOwnProperty(className))
{
console.log(className);
}
}
一旦運(yùn)行它,你會(huì)看到Frida成功attach到目標(biāo)進(jìn)程(如下圖所示),隨后它將為我們顯示目標(biāo)進(jìn)程中的所有類。

|