前言
上篇文章介紹了iOS逆向中常用的一些軟件,其中就介紹了OpenSSH可以幫助我們?cè)贛ac或windows上以SSH的方式安全登錄iPhone設(shè)備。
OpenSSH介紹
說到OpenSSH需要先介紹SSH。SSH(Secure Shell)是建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議。用于計(jì)算機(jī)之間的加密登錄,可以在不安全的網(wǎng)絡(luò)中為網(wǎng)絡(luò)服務(wù)器提供安全的傳輸環(huán)境。SSH最初是UNIX系統(tǒng)上的程序,后來迅速擴(kuò)展到其他操作系統(tǒng)平臺(tái)。OpenSSH是對(duì)SSH協(xié)議的開源實(shí)現(xiàn)。筆者系統(tǒng)時(shí)iOS13.5,在Cydia中搜索并安裝OpenSSH即可。
SSH協(xié)議一共2個(gè)版本SSH-1、SSH-2
現(xiàn)在用的比較多的是SSH-2,客戶端和服務(wù)端版本要保持一致才能通信
查看SSH版本(查看配置文件的Protocol字段)
客戶端:/etc/ssh/ssh_config
服務(wù)端:/etc/ssh/sshd_config
SSH是通過TCP協(xié)議通信,所以要確保Mac和iPhone在同一局域網(wǎng)下,比如連接著同一個(gè)WiFi。使用SSH登錄成功后就可以使用終端命令行操作iPhone。使用exit命令退出登錄。下面先來介紹下如何通過SSH登錄iPhone。
SSH登錄iPhone
1.iOS下有2個(gè)常用賬戶:root、mobile。root是最高權(quán)限賬戶可以操作任意文件;mobile是普通權(quán)限賬戶,只能操作一些普通文件,不能操作系統(tǒng)級(jí)別的文件。root下,$HOME指向/var/root。mobile下,$HOME指向/var/mobile。App Store下載的App存放在/var/mobile/containers/Bundle/Appication目錄下,就是以mobile身份運(yùn)行的。root和mobile用戶的初始登錄密碼都是alpine。
# 登錄root用戶
$ ssh root@iPhone的IP地址
# 登錄mobile用戶
$ ssh mobile@iPhone的IP地址
通過WIFI登錄
1.確保iPhone 和 電腦在同一個(gè)WIFI網(wǎng)絡(luò)下
2.在【設(shè)置】的網(wǎng)絡(luò)中找到iPhone的IP地址(例如192.168.111.11)
3.macOS終端使用命令行連接iPhone
$ ssh root@192.168.111.11
4.按【Enter】鍵然后輸入密碼(默認(rèn)為"alpine")輸入后按下【Enter】鍵順利登錄(注意這里輸入密碼后是無任何顯示的)
免密登錄
頻繁的登錄越獄設(shè)備時(shí)每次都要輸入密碼可能會(huì)有些讓人煩,所以我們可以通過上傳公鑰來免密登錄(讓人聯(lián)想到git以ssh方式訪問代碼倉庫)。
1.生成密鑰對(duì)(和git生成ssh密鑰對(duì)的方式一樣的,只是git需要email地址)
$ ssh-keygen -t rsa
2.將公鑰上傳到iPhone(把mac上的id_rsa.pub拷貝到iPhone的/var/root/.ssh/authorized_keys下)以下命令會(huì)自動(dòng)將mac上的id_rsa.pub追加到iOS越獄設(shè)備的授權(quán)文件authorized_keys尾部。因?yàn)樵摬僮魇窃谠姜z設(shè)備的~文件夾下,所以該操作僅僅解決了root賬戶的免密登錄問題,不會(huì)影響mobile的登錄。
# 該操作需要輸入root的登錄密碼
$ scp ~/.ssh/id_rsa.pub root@192.169.111.11:/var/root/.ssh/authorized_keys
如果iOS設(shè)備上不存在/var/root/.ssh/目錄,則需要先登錄設(shè)備創(chuàng)建目錄:
$ ssh root@192.168.111.11
$ cd /var/root/
$ mkdir .ssh
通過USB登錄
通過WIFI的方式連接設(shè)備嚴(yán)重依賴網(wǎng)絡(luò)流暢度,尤其動(dòng)態(tài)調(diào)試設(shè)備程序的時(shí)候會(huì)很卡頓。所以建議使用USB的方式連接iOS設(shè)備。
注意:確保iOS設(shè)備已經(jīng)和macOS通過USB數(shù)據(jù)線建立連接
1.下載usbmuxd工具包(下載v1.0.8版本,主要用到里面的一個(gè)python腳本:tcprelay.py)
2.端口映射(把mac的2222端口映射到iPhone的22端口)
cd ~/Documents/usbmuxd-1.0.8/python-client
chomd 777 tcprelay.py
sudo python tcprelay.py -t 22:2222
3.遠(yuǎn)程登錄iOS設(shè)備密碼是"alpine"
ssh root@localhost -p 2222
如下圖:
第一次登錄時(shí),輸入上面的登錄命令后,系統(tǒng)會(huì)交換RSA密鑰,會(huì)詢問Are sure you want to continue connecting (yes/no[fingerpring])? 這里請(qǐng)輸入yes

第二次登錄時(shí),直接輸入root密碼(默認(rèn)是alpine)即可。

4.至此,已經(jīng)通過USB登錄了iOS設(shè)備
修改默認(rèn)密碼
越獄后iOS設(shè)備就擁有了最高權(quán)限,但root默認(rèn)密碼(“alpine”)是眾所周知的,如果開啟了SSH而不修改默認(rèn)密碼,一旦iOS越獄設(shè)備暴露在網(wǎng)絡(luò)中就很容易被入侵,所以需要修改密碼。如下分別是修改root用戶和mobile用戶默認(rèn)密碼的命令:
# 修改root用戶的默認(rèn)密碼
iPhone: ~ root# passwd
# 修改mobile用戶的默認(rèn)密碼
iPhone: ~ mobile# passwd mobile

使用scp傳輸文件
配置好OpenSSH后,可以使用scp(secure copy)工具在iOS設(shè)備和計(jì)算機(jī)之間互相傳輸文件。macOS自帶了scp。
將Mac上的/Desktop/1.txt文件,拷貝到iPhone上的/test路徑
scp -P 2222 ~/Desktop/1.txt root@localhost:~/test
參考
《iOS應(yīng)用逆向與安全之道》