iOS滲透測試工具Part 1:App Decryption以及class-dump
這是iOS滲透測試工具的第一部分,我會教你如何設定和使用一些最重要的iOS應用程式滲透測試工具。
注意,在開講之前,我會將假設使用者正在使用Electra越獄工具,我自己使用的是iOS 11.1.2,但本系列中的大多數工具都適用於任何版本的iOS 11。由於我沒有iOS 11.3.1裝置,只知道bfinject尚未針對11.3.1進行更新。
手機越獄
雖然你可以在未越獄的裝置上進行滲透測試,但你需要越獄才能使用所有可用的工具進行全面的測試。由於越獄過程非常簡單,我就不詳細說了,你可以 ofollow,noindex">點此 下載11.0-11.1.2版本的Electra,點此下載11.2 – 11.3.1版本的 Electra 。安裝說明可在 此處 找到。
通過SSH進入你的裝置
Electra會附帶著OpenSSH一起安裝,這意味著你可以立即將ssh插入你的裝置。在測試時,幾乎所有的裝置都需要通過以下3個步驟進行:
1.找到你的iPhone的IP地址,然後設定- > Wi-Fi,點選你連線的WiFi旁邊的“i”圖示,記下IP地址;
2.開啟一個新的終端視窗,然後輸入以下程式碼(其中X是你找到的IP地址);
ssh [email protected]
3.當提示輸入密碼時,輸入‘alpine’,這是預設密碼,出於安全原因,你應立即更改此密碼,具體原因請參考 此處 。
當你完成以上這些步驟後,你應該就可以看到以下這樣的提示資訊。
My-iPhone:~ root#
App Decryption
一旦越獄成功,你就可以開始進行滲透測試了。通常,第一步是開啟你選擇的目標應用程式,並檢查其檔案和二進位制檔案。在iOS 11上,你將使用名為“bfinject”的工具執行此操作。
Bfinject是適用於iOS 11.0 – 11.1.2的.dylib注入工具,它包括解密功能和cycript功能。
要安裝bfinject,請先 點此 下載tarball。然後,你需要將其複製到你的裝置上,具體分以下4個步驟:
1.通過ssh進入你的手機終端後,通過輸入以下內容建立資料夾:
$ mkdir bfinject
2.然後,你需要將tarball複製到你的裝置上,並將其放入建立的bfinject資料夾中。你可以通過很多方法實現這一點,比如你可以使用scp,但我更喜歡使用 Cyberduck 。如果你正在使用CyberDuck,請轉到左上角的“開啟連線”,選擇SSH協議,然後使用與之前相同的IP /密碼登入(你可以將埠保留為22)。
3.現在,在Cyberduck或終端中,進入裝置的bfinject資料夾,然後從Mac上傳tarball。要在Cyberduck中執行此操作,請單擊“操作”,然後單擊“上傳”。
4.最後,輸入以下內容。
$ tar xvf bfinject.tar
在執行bfinject之前,你需要從Cydia下載“Core Utilities”。開啟Cydia並搜尋它,選中後,轉到“修改”,然後選擇“安裝”。
現在你就可以開始準備破解你的第一個應用程式了,這個應用程式可以是從app store下載的大多數應用程式(你有測試的許可權!)。確保應用程式已開啟並位於手機的執行前端,且將你的手機已插入計算機。進入終端的root中,導航至bfinject資料夾並執行以下內容。
$ bash bfinject -P <AppName> -L decrypt
你將在終端中看到類似以下的內容:
幾秒鐘後,你應該會在手機上收到解密完成的訊息。它會詢問你是否要使用netcat,你可以回覆“不”。現在,要獲取解密的.ipa檔案,你就需要在手機上找到應用程式的目錄。在Cyberduck或終端中,你的導航路徑是這樣的:/private/var/mobile/Containers/Data/Application
注意:因為你手機中的目錄可能有點混亂,要進入'var'目錄,你需要從'root'中'cd ..'開始找,它是你在ssh登入之後的初始位置。
在應用程式目錄中,你將看到一堆含有隨機名稱的資料夾,每個資料夾對應於你裝置上的一個應用。為了幫助你快速找出與目標應用程式相對應的資料夾,你可以通過“修改”對Cyberduck進行排序,最近安裝的應用程式應該是排在第一個。找到該資料夾後,你就可以進入該資料夾,在其文件目錄中,你將找到decrypted-app.ipa,然後在Cyberuck中,點選‘Action’->’Download as’下載。你可以隨意對下載的檔案重新命名,但請確保將副檔名更改為“.zip”而不是“.ipa”,以便你可以輕鬆檢查其中的內容。
現在你已經正式解密並下載了你的第一個應用程式!
class-dump
我將要給你介紹的是class-dump工具,class-dump,顧名思義,就是用來dump目標物件的class資訊的工具。它利用Objective-C語言的runtime特性,將儲存在Mach-O檔案中的標頭檔案資訊提取出來,並生成對應的.h檔案。class-dump可以幫助我們理解應用程式的結構,並選擇我們想要的目標位置。
如果要在Mac上安裝class-dump,請開啟一個新終端並執行以下內容。
$ brew install class-dump
然後,找到應用程式的可執行檔案。在你把 .ipa/.zip檔案解壓縮並複製到計算機後,你將通過/Payload/AppName.app/AppName路徑,在資料夾中找到它。
現在,你可以執行以下內容了。
./class-dump <AppName>.app/AppName > Dumped
如果出現錯誤,你可以嘗試安裝class-dump生成的不同類,比如 這個 或 這個 。 根據版本的不同,如果仍然出現錯誤,請嘗試將<AppName>.app/AppName更改為<AppName>或<AppName.app>。
現在,在你最喜歡的文字編輯器中開啟'Dumped'檔案,你應該看到所有應用程式執行時的標頭。
我通常會首先通過搜尋 ‘password’, ‘authentication’, ‘user’或 ‘credentials’ 等關鍵詞,以識別任何有特殊意義的類、方法或屬性。
在第2部分中,我將介紹安裝、探索和篡改cycript的過程。 第3部分,我將介紹Frida / Objection。第4部分,我將介紹使用Hopper和lldb進行除錯或二進位制修復。