iOS滲透測試工具,第1篇:bfinject與class-dump
本文是介紹如何設定和使用某些最重要的IOS應用滲透測試工具的系列課程中的第一篇。
對於這個系列文章來說,我們會假設使用者使用Electra進行越獄。我具體使用的是iOS11.1.2,但是本系列中的大多數工具都可以在任何版本的iOS11上使用。
實現手機越獄
雖然我們可以在非越獄裝置上進行某些滲透測試,不過,只有越獄之後,才能使用所有可用的工具實現全方位的測試。其實,越獄過程非常簡單——您可以從這裡下載11.0-11.1.2版本的Electra,或者這裡下載11.2-11.3.1版本的Electra。
該軟體的安裝說明可參閱這裡。
使用SSH連線裝置
在安裝Electra時,會順便安裝OpenSSH,這意味著我們可以通過ssh連線至裝置。實際上,在進行滲透測試的過程中,幾乎到處都要用到這個功能。
確定我們的iPhone手機的IP地址——為此,請開啟Settings -> Wi-Fi選項。然後,單擊所連線的WiFi旁邊的“i”圖示,並記下這個IP地址。
開啟一個新的終端視窗,然後鍵入下列命令:
ssh <a href="/cdn-cgi/l/email-protection" data-cfemail="d1a3bebea5918989ff89ff89ff898989">[email protected]</a>
(其中X是我們找到的IP地址)
當提示輸入密碼時,鍵入“alpine”——這是預設密碼,為了安全起見,最好立即修改該密碼(更多詳情,請參考這裡)。
完成上述操作後,會看到如下內容:
My-iPhone:~ root#
大功告成了!
破解應用程式
一旦你越獄成功了,我們就可以進行滲透測試了。通常情況下,第一件事情就是破解目標應用程式,並考察其檔案和二進位制程式碼。在iOS11上,我們可以使用一個名為“bfinject”的工具來完成該任務。
Bfinject是一款.dylib注入工具,適用於11.0-11.1.2版本的iOS系統。實際上,該工具不僅提供了破解功能,同時,它還提供了cycript(將在稍後討論)。
安裝bfinject時,可以從此處下載相應的tarball安裝包。然後,需要將其複製到我們的裝置:
在手機的終端中(即通過ssh連線手機後),使用下列命令來建立一個資料夾:
$ mkdir bfinject
然後,將這個tarball傳輸到手機中的bfinject資料夾中。實際上,為了達到這個目的,可用的方法有很多——例如,可以使用scp,不過對我來說,更喜歡使用Cyberduck,該工具可以從這裡下載。在使用Cyberduck軟體時,請轉到左上角的“Open Connection”,選擇SSH協議,並使用與前面相同的IP/密碼進行登入(您可以將埠保留為22)。
現在,在Cyberduck或終端中,切換到裝置的bfinject資料夾,並從Mac為其上傳tarball安裝包。對於使用Cyberduck的讀者來說,先單擊“Action”按鈕,然後單擊“Upload”按鈕即可。
最後,執行下列命令:
$ tar xvf bfinject.tar
在執行bfinject之前,我們需要從Cydia下載“Core Utilities”。為此,請開啟Cydia,並搜尋該軟體。選擇該軟體後,轉到“Modify”,然後選擇“Install”即可。
現在,我們已經為破解應用程式做好了準備。至於選擇哪個軟體嗎?大家可以根據自己的喜好,從應用程式商店下載即可。下載相應的軟體之後,請開啟該應用程式,並使其位於手機的前臺,同時,還要確保手機已經與計算機相連。在root終端中,導航至bfinject資料夾,並執行下列命令:
$ bash bfinject -P <AppName> -L decrypt
這時候,將在終端中看類似下面這樣的內容:
幾秒鐘後,會在手機上收到破解完成的訊息。當該軟體詢問是否想要使用netcat時,請選擇“No”。現在,要獲取破解之後的.ipa檔案,需要在手機上找到該應用程式的目錄。在Cyberduck或終端中,該目錄位於/private/var/mobile/Containers/Data/Application。
順便說一句,在手機中上,要想進入var目錄,需要從root目錄下面執行“cd ..”命令,因為我們使用ssh連線手機後,首先會進入root目錄。
在Application目錄中,可以看到許多具有隨機名稱的資料夾。其中每個資料夾都對應於該裝置上的一個應用。為了幫助快速找到與目標應用程式相對應的目錄,可以通過Cyberduck的“Modified”按鈕對其進行排序,而最近安裝的應用程式應該排在最前面。之後,請切換至目標應用程式對應目錄下的Documents目錄,這樣就可以找到decrypted-app.ipa檔案了。然後,在Cyberuck中選擇“Action”->“Download as”選項,從而完成下載。之後,可以對這個檔案進行重新命名,具體名稱您隨意,不過,一定要把副檔名改為“.zip”,而不是原來的“.ipa”,這樣,我們就可以輕鬆檢視其內容了。
這樣,就破解並下載好了我們的第一個應用程式!
class-dump
接下來要使用的class-dump軟體,也是一個非常有價值的工具:它不僅可以轉儲應用程式類的執行時標頭檔案,還能幫助我們理解應用程式的結構,選擇我們想要的目標位置。
為了在Mac上安裝該軟體,請開啟一個新終端,並執行下列命令:
$ 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工具來除錯二進位制程式碼。