iOS 逆向 2 越獄介紹

2021-10-23 06:25:09 字數 3108 閱讀 3104

越獄,簡單來說就是利用 ios 系統中的漏洞,獲取 root 許可權,然後就可以為所欲為了。

越獄分三種:

1 引導式越獄

重啟後無法開機,需要用工具重新引導

2 不完美越獄

重啟後回到未越獄狀態,需要重新越獄

3 完美越獄

重啟後仍然保持越獄狀態

通過 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 等。

/library/launchdaemons

裡面存的是 要開機啟動的應用 的配置檔案(plist 檔案),配置了啟動引數、檔案路徑等等。

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 充電站或其他人的電腦,就給了另一方整個檔案系統的讀取訪問許可權,他們可以竊取你的任何資料或安裝後門外掛程式。

在電腦端,比如 愛思助手、ifunbox 開啟後,插上手機,就可以操作所有系統檔案了。

openssh

ssh 是一種協議,為遠端登陸提供安全性。openssh 是實現了這個協議的乙個程式。該協議具體如何保障安全的,不展開說了。

在 cydia 搜尋安裝,後面會詳述遠端登陸。

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 位址的訪問。

讓遠端支援中文

如果有些命令找不到,比如 vim,ps 等, 都可以去 cydia 搜尋、安裝。

ps -ef 是標準格式顯示程序資訊

ps aux 是 bsd 格式顯示程序資訊,特點是可以看資源佔用量

iOS逆向 越獄和安卓手機Root的區別

相同點 都是取得系統的系統級許可權,以便進行修改系統檔案等操作。不同點 對於android來說,擁有root許可權的使用者是在系統在設計時就存在的,即最高管理員,所以我們 所說的 root手機 是取得手機上的那個root許可權。看似兩者最終的實現效果相似,但是,借用網上的乙個比喻 在乙個房間裡,你知...

ios裝置越獄

越獄的目標 手機更新到最新版本,再越獄 目前最新6.1.3,不能越獄 步驟 手機設定密碼要取消 檢視手機系統版本,並備份手機 ios 6.x 使用evasion 6.1越獄教程 ios 5.x 5.1.1越獄教程 其他系統版本,網路搜尋 檢視是否越獄成功 是否已安裝cydia應用程式 注意事項 越獄...

IOS 越獄開發

2 準備目錄 debian control control檔案就是打包時的配置檔案,它也會作為deb包的配置被打包到包中,檔案例子 cpp view plain copy package com.zz.tianc name tianc version 0.1 1 description tianc,...