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

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

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

讓我們先來查看下,目標設備上所有正在運行的進程有哪些:
frida-ps –U

從上面的截圖我們可以看到,所有當前正在運行的進程。
下面讓我們來attach一個進程。你可以通過 ‘frida -U 進程名’ 的格式來attach某個進程。成功attach后,我們將進入到frida的控制臺界面,在該控制臺我們可以訪問到目標進程的所有不同屬性,內存內容和功能。

我們可以在Frida的shell中工作,并與我們的進程進行交互,或者我們還可以通過編寫自己的JavaScript,來獲取我們想要的數據。
dump類和方法信息
這項工作的目的是為了確定在DVIA的越獄檢測中,負責驗證我們的設備是否越獄的ViewController和function是哪個。
我們先來寫一個基本的Frida腳本,來轉儲目標應用程序中存在的所有類和方法。在這里,我們將尋找與越獄相關所有的內容,以便我們能夠在Frida的幫助下繞過越獄檢測。
基本操作流程如下:

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

|