一瑰抵、Mac遠(yuǎn)程登錄到iPhone
1.我們經(jīng)常在Mac的終端上,通過敲一些命令來完成一些操作
iOS和Mac OS X都是基于Darwin(蘋果的一個(gè)基于Unix的開源系統(tǒng)內(nèi)核)握侧,所以iOS中同樣支持終端的命令行操作
2.在逆向工程中,我們經(jīng)常會(huì)通過命令行來操縱iPhone
為了能夠讓Mac終端中的命令行能作用在iPhone上企蹭,我們得讓Mac和iPhone建立連接
通過Mac遠(yuǎn)程登錄到iPhone的方式建立連接
二雳攘、SSH、OpenSSH
1.SSH,Secure Shell的縮寫任柜,意為“安全外殼協(xié)議”卒废,是一種可以為遠(yuǎn)程登錄提供安全保障的協(xié)議
使用SSH,可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密宙地,“中間人”攻擊方式就不可能實(shí)現(xiàn)摔认,能防止DNS欺騙和IP欺騙。
2.OpenSSH
是SSH協(xié)議的免費(fèi)開源實(shí)現(xiàn)
可以通過OpenSSH的方式讓Mac遠(yuǎn)程登錄到iPhone
三宅粥、使用OpenSSH遠(yuǎn)程登錄
1.在iPhone上通過Cydia安裝OpenSSH工具(軟件源http://apt.saurik.com)
2.SSH是通過TCP協(xié)議通信参袱,所以要確保Mac和iPhone在同一局域網(wǎng)下,比如連接著同一個(gè)WiFi秽梅。
在Mac的終端輸入ssh 賬戶名@服務(wù)器主機(jī)地址,服務(wù)器地址可以進(jìn)入網(wǎng)絡(luò)詳情中的IP地址
ssh root@192.168.0.109(這里的服務(wù)器是手機(jī))
初始密碼alpine
登錄成功后就可以使用終端命令行操作iPhone
退出登錄命令是exit
四抹蚀、root、mobile
1.iOS下有2個(gè)常用賬戶:root企垦、mobile
root:最高權(quán)限賬戶环壤,HOME(當(dāng)前登錄的用戶的主文件夾)是/var/mobile
登錄mobile用戶:root mobile@服務(wù)器主機(jī)地址
root和mobile用戶的初始登錄沒密碼都是alpine
2.最好修改一下root和mobile用戶的登錄密碼(登錄root賬戶后潜索,分別通過passwd、passwd mobile完成)
五懂酱、SSL竹习、OpenSSL
1.SSL (Secure Sockets Layer的縮寫),是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議列牺,在傳輸層對(duì)網(wǎng)絡(luò)連接進(jìn)行加密
2.OpenSSL
SSL的開源實(shí)現(xiàn)
絕大多數(shù)HTTPS請(qǐng)求等價(jià)于:HTTP+OpenSSL
3.OpenSSH的加密就是通過OpenSSL完成的
六整陌、SSH的版本
1.SSH協(xié)議一共2個(gè)版本
SSH-1
SSH-2
2.現(xiàn)在用的比較多的是SSH-2,客戶端和服務(wù)端版本要保持一致才能通信
3.查看SSH版本(查看配置文件的Protocol字段)
客戶端:/etc/ssh/ssh_config
服務(wù)端:/etc/ssh/sshd_config
七、SSH的通信過程
SSH的通信過程可以分為3大主要階段
1.建立安全連接
(1)在建立安全連接過程中瞎领,服務(wù)器會(huì)提供自己的身份證明
(2)如果客戶端并無服務(wù)器端的公鑰信息泌辫,就會(huì)詢問是否連接次服務(wù)器
(3)在建立安全連接過程中,可能會(huì)遇到以下錯(cuò)誤信息:提醒服務(wù)器的身份信息發(fā)生了變更
如果確定要連接此服務(wù)器九默,刪除掉之前服務(wù)器的公鑰信息就行
ssh-keygen -R 服務(wù)器IP地址
或者直接打開known_hosts文件刪除服務(wù)器的公鑰信息就行
vim ~/.ssh/known_hosts
2.客戶端認(rèn)證
(1)SSH-2提供了2種常用的客戶端認(rèn)證方式
基于密碼的客戶端認(rèn)證
使用賬號(hào)和密碼即可認(rèn)證
基于密鑰的客戶端認(rèn)證
免密碼認(rèn)證
最安全的一種認(rèn)證方式
SSH-2默認(rèn)會(huì)優(yōu)先嘗試“密鑰認(rèn)證”震放,如果認(rèn)證失敗,才會(huì)嘗試“密碼認(rèn)證”
(2)在客戶端生成一對(duì)相關(guān)聯(lián)的密鑰(Key Pair):一個(gè)公鑰(Public Key)驼修,一個(gè)私鑰(Private Key)
ssh-keygen
一路敲回車鍵(Enter)即可
OpenSSH默認(rèn)生成的是RSA密鑰殿遂,可以通過-t參數(shù)指定密鑰類型
生成的公鑰:~/.ssh/id_rsa.pub
生成的私鑰:~/.ssh/id_rsa
(3)把客戶端的公鑰內(nèi)容追加到服務(wù)器的授權(quán)文件(~/.ssh/authorized_keys)尾部
ssh-copy-id root@服務(wù)器主機(jī)地址
需要輸入root用戶的登錄密碼
ssh-copy-id會(huì)將客戶端/.ssh/id_rsa.pub的內(nèi)容自動(dòng)追加到服務(wù)器的/.ssh/authorized_keys尾部
注意:由于是在~文件夾下操作,所以上述操作僅僅是解決了root用戶的登錄問題(不會(huì)影響mobile用戶)
3.數(shù)據(jù)傳輸
可以使用ssh-copy-id將客戶端的公鑰內(nèi)容自動(dòng)追加到服務(wù)器的授權(quán)文件尾部乙各,也可以手動(dòng)操作
復(fù)制客戶端的公鑰到服務(wù)器某路徑
scp ~/.ssh/id_rsa.pub root@服務(wù)器主機(jī)地址:~
scp是secure copy的縮寫墨礁,是基于SSH登錄進(jìn)行安全的遠(yuǎn)程文件拷貝命令,把一個(gè)文件copy到遠(yuǎn)程另外一臺(tái)主機(jī)上
上面的命令行將客戶端的/.ssh/id_rsa.pub拷貝到了服務(wù)器的地址
SSH登錄服務(wù)器
ssh root@服務(wù)器主機(jī)地址
需要輸入root用戶的登錄密碼
在服務(wù)器創(chuàng)建.ssh文件夾
mkdir .ssh
追加公鑰內(nèi)容到授權(quán)文件尾部
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
刪除公鑰
rm ~/id_rsa.pub
八耳峦、22端口
1.端口是設(shè)備對(duì)外提供服務(wù)的窗口恩静,每個(gè)端口都有個(gè)端口號(hào)(范圍是0~65535,共2^16個(gè))
2.有些端口號(hào)是保留的蹲坷,已經(jīng)規(guī)定了用途驶乾,比如
(1)21端口提供FTP服務(wù)
(2)80端口提供HTTP服務(wù)
(3)22端口提供SSH服務(wù)(可以查看/etc/ssh/sshd_config的Port字段)
(4)更多保留端口號(hào):https://baike.baidu.com/item/端口號(hào)/10883658#4_3
3.iPhone默認(rèn)是使用22端口進(jìn)行SSH通信,采用的是TCP協(xié)議
九冠句、通過USB進(jìn)行SSH登錄
1.默認(rèn)情況下轻掩,由于SSH走的是TCP協(xié)議,Mac是通過網(wǎng)絡(luò)連接的方式SSH登錄到iPhone懦底,要求iPhone連接WiFi
2.為了加快傳輸速度唇牧,也可以通過USB連接的方式進(jìn)行SSH登錄
Mac上有個(gè)服務(wù)程序usbmuxd(它會(huì)開機(jī)自動(dòng)啟動(dòng)),可以將Mac的數(shù)據(jù)通過USB傳輸?shù)絠Phone
十聚唐、usbmuxd的使用
1.下載usbmuxd工具包(下載v1.0.8版本丐重,主要用到里面的一個(gè)python腳本:tcprelay.py)
https://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.gz
2.將iPhone的22端口(SSH端口)映射到Mac本地的10010端口
cd ~/Documents/usbmuxd-1.0.8/python-client
python tcprelay.py -t 22:10010
加上-t參數(shù)是為了能夠同時(shí)支持多個(gè)SSH連接
注意:要想保持端口映射狀態(tài),不能終止此命令行(如果要執(zhí)行其他終端命令行杆查,請(qǐng)新開一個(gè)終端界面)
不一定非要10010端口扮惦,只要不是保留端口就行
3.端口映射完畢后,以后如果想跟iPhone的22端口通信亲桦,直接跟Mac本地的10010端口通信就可以了
新開一個(gè)終端界面崖蜜,SSH登錄到Mac本地的10010端口(以下方式2選1)
ssh root@localhost -p 10010
ssh root@127.0.0.1 -p 10010
localhost是一個(gè)域名浊仆,指向的IP地址是127.0.0.1,本機(jī)虛擬網(wǎng)卡的IP地址
usbmuxd會(huì)將Mac本地10010端口的TCP協(xié)議數(shù)據(jù)豫领,通過USB連接轉(zhuǎn)發(fā)到iPhone的22端口
4.遠(yuǎn)程拷貝文件也可以直接跟Mac本地的10010端口通信
scp -P 10010 ~/Desktop/1.txt root@localhost:~/test
將Mac上的/Desktop/1.txt文件抡柿,拷貝到iPhone上的/test路徑
注意:scp的端口號(hào)參數(shù)是大寫的-P
十一、sh腳本文件
1.我們可以將經(jīng)常執(zhí)行的一系列終端命令行放到sh腳本文件中(shell),然后執(zhí)行腳本文件
2.可以通過sh等恐、bash洲劣、source命令來執(zhí)行sh腳本文件
(1)sh、bash
當(dāng)前shell環(huán)境會(huì)啟動(dòng)一個(gè)子線程來執(zhí)行腳本文件课蔬,執(zhí)行后返回到父進(jìn)程的shell環(huán)境執(zhí)行cd時(shí)囱稽,在子線程中會(huì)進(jìn)入到cd的目錄,但是在父進(jìn)程中環(huán)境并沒有改變二跋,也就是目錄沒有改變
(2)source
在當(dāng)前的shell環(huán)境下執(zhí)行腳本文件
執(zhí)行cd后會(huì)跳轉(zhuǎn)到cd的目錄
source可以用一個(gè)點(diǎn)“.”來替代战惊,比如“. test.sh”
十二、iOS終端的中文亂碼問題
1.默認(rèn)情況下同欠,iOS終端不支持中文輸入和顯示
2.解決方案:新建一個(gè)~/.inpputrc文件样傍,文件內(nèi)容是
(1)不將中文字符轉(zhuǎn)化為轉(zhuǎn)義序列
set convert-meta off
(2)允許向終端輸出中文
set output-meta on
(3)允許向終端輸入中文
set meta-flag on
set input-meta on
3.如果是想在終端編輯文件內(nèi)容,可以通過Cydia安裝一個(gè)vim(軟件源http://apt.saurik.com)