[iOS 逆向 2] 越獄介紹

介紹

越獄,簡單來說就是利用 iOS 系統中的漏洞,獲取 root 權限,然後就可以爲所欲爲了。
越獄分三種:
1 引導式越獄
重啓後無法開機,需要用工具重新引導
2 不完美越獄
重啓後回到未越獄狀態,需要重新越獄
3 完美越獄
重啓後仍然保持越獄狀態

至於如何尋找漏洞並利用漏洞,肯定不是初學者能搞的;
至於如何越獄,電腦端下載愛思助手,打開軟件應該就能看見一鍵越獄了。
備註1 歷代 iPhone 進入 DFU 模式的方法。如果總是進入恢復模式而不是 DFU 模式,則換成 USB-A 的線、換接口即可。
備註2 準備一個 VPN 和手機熱點,一切“網絡超時”相關問題都可以解決
備註3 不要用最新系統或最新款手機學習越獄,黑客還在找漏洞呢,需要一定時間

親自嘗試越獄後,Cydia 就相當於是擴展的 App Store,裏面什麼好東西都有。比如查看整個系統的文件,命令行工具,修改系統外觀等等等等。 在這裏插入圖片描述
越獄系統常見安裝程序類型:底層 App;Preference Bundle(“設置”裏面新增一個選項);動態庫;命令行工具;守護進程(Daemon)。

相關簡述

越獄後移除沙盒了嗎?如何訪問系統目錄?

沒有。原有的 App 訪問權限仍然不變,只能讀寫沙盒。
但越獄後可以通過 Cydia 安裝系統級程序,這類程序擁有訪問短信、聯繫人等應用數據的權限,比如 iFile,或者安裝 OpenSSH,在電腦上通過命令行訪問。
對於任意設備上的自簽名應用,可以通過 Xcode 查看沙盒內容:在 Xcode 中,打開 Window - Devices and Simulators,選中設備,右側 Installed Apps,選中 App,點擊齒輪,即可查看沙盒。
對於已越獄設備,安裝插件 AFC2,然後很多桌面端軟件比如 iFunBox 就可以查看整個系統的文件。由於 iOS 版本更新較快,有時插件沒及時更新而無法正常讀取,但通過 OpenSSH 直接登陸的方式始終可以正確訪問系統文件。(AFC2 安裝方法、遠程登陸方法、訪問整個文件系統方法後面詳述)

系統目錄

通過 ssh 登陸到手機,仔細觀察系統文件目錄結構,可以總結出核心目錄如下:
在這裏插入圖片描述
其中,個別的目錄單獨解釋一下:

/Library/MobileSubstrate

此目錄下保存了 MobileSubstrate.dylib,即 Cydia 底層,是越獄開發的基石。
它主要包括以下功能:
1 MobileLoader:用於將第三方動態庫加載到運行的目標應用中。
2 MobileHooker:實現函數 Hook。
3 SafeMode:如果安裝某個插件後系統崩潰,則進入該模式。該模式內不加載任何插件並可以卸載最近安裝的插件。

該框架提供了讓第三方開發者修改系統或者應用程序的功能。函數 Hook 會有專門的文章描述,這裏介紹一下動態庫注入方法。

方法 1
通過 DYLD_INSERT_LIBRARIES 環境變量設置要注入的動態庫路徑,即可注入。
方法 2
Cydia Substrate 框架提供的方法:將動態庫放到 /Library/MobileSubstrate/DynamicLibraries/ 目錄下,並放入一個同名的配置文件,文件內寫明要注入的目標程序列表、其他規則,重新打開應用即可。原理就是程序打開時 Cydia Substrate 會通過 DYLD_INSERT_LIBRARIES 將自己注入,然後遍歷目錄下的所有配置文件,如果當前應用符合規則,則將對應的動態庫通過 dlopen 打開。
方法 3
有一些工具可以增加 Mach-O 文件中的 LC_LOAD_DYLIB 加載命令,讓 DYLD 加載指定的動態庫。如 optool、insert_dylib 等。

/var/containers/Bundle/Application/[GUID]

iOS12 中,這個目錄下保存的是來自 App Store 的各個 App,注意區分 /Applications 目錄。 其他 iOS 版本可能路徑不同。

/var/mobile/Containers/Data/Application/[GUID]

iOS12 中,這個目錄下保存的各個 App 的沙盒。注意,不同 iOS 版本可能路徑不同!

/Library/LaunchDaemons

裏面存的是 要開機啓動的應用 的配置文件(plist 文件),配置了啓動參數、文件路徑等等。

必備插件

後面的文章裏肯定會不斷介紹新的插件。Cydia 可以理解爲 App Store,裏面的應用(插件)總得有人上傳吧,那麼提供者,稱爲源。下面是幾個源,直接在 Safari 打開,點擊安裝到 Cydia 即可。建議都安裝上,因爲 Cydia 自帶的軟件源畢竟有限。

ABCydia雷鋒源:apt.abcydia.com
Ant螞蟻源:apt.cydia.love
Cydiakk中文源:apt.cydiakk.com
多米諾骨牌源:apt.wxhbts.com

AFC2

蘋果文件連接(AFC)是一個運行在每臺 iPhone 上的文件傳送服務,它允許通過 USB 連線存取 iPhone 的 /var/mobile/Media 目錄裏的文件。這個服務只能訪問特定目錄,那麼如果我想通過 USB 連線存取任意目錄呢?於是有人就模仿寫了一個 AFC2,提供整個文件系統的讀寫權限。這意味着一臺沒有密碼保護或在未鎖定狀態的越獄過的 iPhone,只要連接上一個 USB 充電站或其他人的電腦,就給了另一方整個文件系統的讀取存取權限,他們可以竊取你的任何數據或安裝後門插件。

如果你越獄的 iOS 版本低於 iOS11,Cydia 自帶的軟件源就可以,搜索 Apple File Conduit 安裝就行;
如果設備版本較高,建議安裝雷鋒源,然後搜索 afc2,選 AFC2 iOS11~13 安裝即可

在電腦端,比如 愛思助手、iFunBox 打開後,插上手機,就可以操作所有系統文件了。

OpenSSH

SSH 是一種協議,爲遠程登陸提供安全性。OpenSSH 是實現了這個協議的一個程序。該協議具體如何保障安全的,不展開說了。

在 Cydia 搜索安裝,後面會詳述遠程登陸。

AppSync

越獄後安裝 App 仍然會驗證簽名,如果一個 ipa 文件簽名不正常就無法安裝。
在 Cydia 搜索安裝 AppSync 插件,即可屏蔽簽名驗證。

遠程登陸

SSH 密碼登陸

熟悉 Linux 的應該都會,這裏簡單提一下。
安裝 OpenSSH 後,手機打開 Wi-Fi 查看 IP,電腦和手機需要在一個網絡環境內。電腦打開命令行,運行
ssh root@IP地址,默認密碼 alpine
上面是 root 用戶,mobile 用戶也是一樣的密碼,權限是用戶級。
su 命令切到 root 用戶;passwd 命令修改 root 密碼;passwd mobile 命令修改 mobile 用戶密碼。

SSH 公鑰登陸

免密碼登錄,即 ssh 公鑰登陸
電腦端ssh-keygen -t rsa -P '' 生成一對公私鑰,我的在 ~/.ssh/ 目錄下
把公鑰用 scp 命令存到手機指定位置,iOS 一般爲 /var/root/.ssh/authorized_keys
這樣 root 用戶就免密,mobile 用戶同理,把 root 換爲 mobile 即可。
scp 命令使用方法:scp /path/of/local/file IP:/path/of/remote/directory/

但是每次都要輸入一串 [email protected] 還是很麻煩,於是在電腦 ~/.ssh/config 文件內寫入:

Host 6p
	HostName 192.168.1.107
	User root
	IdentityFile ~/.ssh/id_rsa

我讓 6p 代表蘋果 6 Plus,這樣每次直接輸入 ssh 6p 就能連接了。如果出現警告 WARNING: UNPROTECTED PRIVATE KEY FILE! 則執行 chmod 600 ~/.ssh/id_rsa 即可。(比較舊的 ssh 使用的 IdentityFile 是 ~/.ssh/id_rsa.pub)

然後 scp 命令也可以簡化:
scp 本地文件 6p:/某目錄

USB 登陸

適用於沒有 Wi-Fi 的情況。
需要一個工具幫忙轉發:mac 用 brew install usbmuxd,之後可以使用命令:
iproxy LOCAL_TCP_PORT DEVICE_TCP_PORT [UDID]
執行 iproxy 2222 22 相當於把手機的 22(即 SSH 端口)接到電腦的 2222 端口(隨便一個就行)。
這時通過 ssh root@localhost -p 2222 就相當於模擬了通過 IP 地址的訪問。

讓遠程支持中文

登陸到手機後,命令行不能輸入中文,編輯 .inputrc 文件放到 /var/root 下,內容:
set meta-flag on
set convert-meta off
set input-meta on
可以在電腦上編輯好然後 scp 發送,也可以用 echo 往文件裏輸,也可以去 Cydia 下載一個 vi 編輯。
之後雖然看到的漢字是 \346\210\221 這種,但至少可以用了。

如果有些命令找不到,比如 vim,ps 等, 都可以去 Cydia 搜索、安裝。
ps -ef 是標準格式顯示進程信息
ps aux 是 BSD 格式顯示進程信息,特點是可以看資源佔用量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章