1、SSH與OpenSSH簡介
2、Mac遠(yuǎn)程登錄到iPhone
3、iOS下的2個(gè)常用賬戶:root、mobile
4、SSL和OpenSSL
5、建立安全連接與服務(wù)器公鑰的保存和變更
6、SSH-客戶端認(rèn)證
7、SSH-遠(yuǎn)程拷貝-文件權(quán)限
8、22端口
9、通過USB進(jìn)行SSH登錄
10、usbmuxd-使用
11、利用sh腳本設(shè)置快捷方式
12、Mac連接iPhone終端的中文亂碼問題
一、SSH與OpenSSH簡介
-
1.1、SSH簡介
-
SSH是Secure Shell的縮寫,意為“安全外殼協(xié)議”,是一種可以為遠(yuǎn)程登錄提供安全保障的協(xié)議 -
使用SSH,可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,“中間人”攻擊方式就不可能實(shí)現(xiàn),能防止DNS欺騙和IP欺騙
提示:
sniffer是嗅探器以及抓數(shù)據(jù)包軟件
-
-
1.2、OpenSSH簡介
- OpenSSH 是 SSH 協(xié)議的免費(fèi)開源實(shí)現(xiàn)
- 可以通過OpenSSH的方式讓Mac遠(yuǎn)程登錄到iPhone
二、Mac遠(yuǎn)程登錄到iPhone
-
2.1、Mac遠(yuǎn)程登錄到iPhone的簡介
-
我們經(jīng)常在Mac的終端上,通過敲一些命令行來完成一些操作
Mac的終端 - iOS和Mac OS X都是基于Darwin(蘋果的一個(gè)基于Unix的開源系統(tǒng)內(nèi)核),所以iOS中同樣支持終端的命令行操作(在逆向工程中,我們經(jīng)常會(huì)通過命令行來操縱iPhone)
-
為了能夠讓Mac終端中的命令行能作用在iPhone上,我們得讓Mac和iPhone建立連接
Mac終端中的命令行能作用在iPhone圖
-
-
2.2、Mac使用
OpenSSH遠(yuǎn)程登錄iphone的前提- 在iPhone上通過Cydia安裝OpenSSH工具(軟件源http://apt.saurik.com)
OpenSSH -
OpenSSH的具體使用步驟可以查看Description中的描述
OpenSSH的具體使用步驟可以查看Description中的描述
- 在iPhone上通過Cydia安裝OpenSSH工具(軟件源http://apt.saurik.com)
-
2.3、使用OpenSSH遠(yuǎn)程登錄 的 使用步驟 - (Mac充當(dāng)客戶端,iPhone充當(dāng)服務(wù)器)
<1>、SSH是通過TCP協(xié)議通信,所以要確保Mac和iPhone在同一局域網(wǎng)下,比如連接著同一個(gè)WiFi
-
<2>、在Mac的終端輸入ssh 賬戶名@服務(wù)器主機(jī)地址,如下是以root權(quán)限登錄的,其中的
192.168.3.73是手機(jī)的IP地址,這里的服務(wù)器是手機(jī)ssh root@192.168.3.73手機(jī)的IP地址的查看方式,要和電腦在同一個(gè)WiFi下
手機(jī)的IP地址的查看方式 -
<3>、初始密碼
alpine
初始密碼 `alpine`
登錄成功
登錄成功過后的測試 <4>、登錄成功后就可以使用終端命令行操作iPhone,如:退出登錄命令是
exit,也可以使用快捷鍵:control+d
三、iOS下的2個(gè)常用賬戶:root、mobile (初始登錄密碼都是alpine)

-
3.1、root:最高權(quán)限賬戶,$HOME是
/var/root提示:$HOME是 登錄用戶的路徑,查看方式如下
- $HOME是 登錄用戶的路徑,查看方式如下
3.2、mobile:普通權(quán)限賬戶,只能操作一些普通文件,不能操作系統(tǒng)級(jí)別的文件,$HOME是
/var/mobile-
3.3、修改一下root和mobile用戶的登錄密碼(登錄root賬戶后,分別通過passwd、passwd mobile完成),使用root用戶登錄,登錄成功后命令如下
修改一下root和mobile用戶的登錄密碼
四、SSL和OpenSSL
-
分析:我們在安裝 OpenSSH的時(shí)候可以看到先安裝的是OpenSSL
安裝 OpenSSH的時(shí)候可以看到先安裝的是OpenSSL - 4.1、SSL:
Secure Sockets Layer的縮寫,是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議,在傳輸層對(duì)網(wǎng)絡(luò)連接進(jìn)行加密 - 4.2、OpenSSL:SSL的開源實(shí)現(xiàn);絕大部分HTTPS請(qǐng)求等價(jià)于:
HTTP + OpenSSL提示1:OpenSSH的加密就是通過OpenSSL完成的
OpenSSH的加密就是通過OpenSSL完成的
五、建立安全連接
- 5.1、SSH的版本
- SSH協(xié)議一共2個(gè)版本:
SSH-1與SSH-2(現(xiàn)在用的比較多的是SSH-2,客戶端和服務(wù)端版本要保持一致才能通信) - 查看SSH版本(查看配置文件的Protocol字段)
- 客戶端:/etc/ssh/ssh_config
- 服務(wù)端:/etc/ssh/sshd_config
- 舉例:以電腦作為客戶端與越獄手機(jī)作為服務(wù)器查看各自對(duì)應(yīng)的SSH版本
-
電腦作為客戶端查看SSH版本
電腦作為客戶端查看SSH版本
可以看到SSH的版本是2:Protocol 2 -
越獄手機(jī)作為服務(wù)器端查看SSH版本
越獄手機(jī)作為客戶端查看SSH版本
-
- SSH協(xié)議一共2個(gè)版本:
- 5.2、SSH的通信過程可以分為3大主要階段:建立安全連接、客戶端認(rèn)證、數(shù)據(jù)傳輸
- 5.3、建立安全連接
-
<1>、在建立安全連接過程中,服務(wù)器會(huì)提供自己的身份證明(也就是公鑰)
建立安全連接- 提示:
~/.ssh/known_hosts路徑下存儲(chǔ) 服務(wù)器的公鑰等其他的信息,在第一次存儲(chǔ)后,第二次客戶端再登錄服務(wù)器就不再需要驗(yàn)證身份 -
如果客戶端并無服務(wù)器端的公鑰信息,就會(huì)詢問是否連接此服務(wù)器,如下圖:我們在第一次登錄的時(shí)候一般都會(huì)提示
沒有保存公鑰的提示
- 提示:
<2>、解釋下:在建立安全鏈接的過程中,
~/.ssh/known_hosts所保存的服務(wù)器公鑰以及其他信息,也就是上圖中的:字符串 (把服務(wù)器發(fā)過來的公鑰利用加密計(jì)算出來的一個(gè)字符串)-
<3>、服務(wù)器身份信息變更(也就是同一個(gè)服務(wù)器,但是服務(wù)器的公鑰發(fā)生了變化,也可以說本地的存儲(chǔ)的公鑰與服務(wù)器的不一樣),解決辦法:刪除掉同一個(gè) IP 的信息,下面以 IP:
192.168.3.73為例
901554888676_.pic_hd.jpg- (1)、cd ~/.ssh
- (2)、vim know_hosts
- (3)、讓光標(biāo)停留在192.168.3.73行,按 dd 即可刪除
- (4)、
esc,shift+;,wq輸入回車鍵 保存推出; - (5)、再次進(jìn)行連接服務(wù)器
ssh root@192.168.3.73; - (6)、重新提示要不要連接
提示:快捷方式:ssh-keygen -R 服務(wù)器IP地址,如和上面一樣的效果:
ssh-keygen -R 192.168.3.73 <4>、驗(yàn)證客戶端存儲(chǔ)的 公鑰 與 服務(wù)器的公鑰是否一致
驗(yàn)證客戶端存儲(chǔ)的 公鑰 與 服務(wù)器的公鑰是否一致 -
六、SSH-客戶端認(rèn)證
-
6.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)證” - 第一種(我們在
-
6.2、搭建 SSH - 基于密鑰的客戶端認(rèn)證(也就是可以省略密碼登錄的過程)
搭建 SSH - 基于密鑰的客戶端認(rèn)證的過程- 首先要在客戶端生成公鑰與私鑰,然后把公鑰傳給服務(wù)器,將公鑰內(nèi)容追加到授權(quán)文件尾部,在登錄驗(yàn)證的時(shí)候,服務(wù)器發(fā)送一個(gè)登錄信息過來,使用私鑰進(jìn)行解密或者其他的操作(不僅僅是這些操作,后面都會(huì)闡述),解密成功的話進(jìn)行登錄
- <1>、在客戶端生成一對(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
公鑰與私鑰
- <2>、把客戶端的公鑰內(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尾部
把客戶端的公鑰內(nèi)容追加到服務(wù)器的授權(quán)文件-
注意:由于是在
~文件夾下操作,所以上述操作僅僅是解決了root用戶的登錄問題(不會(huì)影響mobile用戶),也就是root用戶再使用ssh root@IP地址不再需要密碼,而mobile用戶是需要密碼的
root用戶登錄不再需要密碼
-
注意:由于是在
七、SSH-遠(yuǎn)程拷貝-文件權(quán)限(這里以上面 六 基于密鑰的客戶端認(rèn)證的手動(dòng)操作)
-
7.1、可以使用
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/地址
-
具體的細(xì)節(jié)
- SSH登錄服務(wù)器:
ssh root@服務(wù)器主機(jī)地址 - 在服務(wù)器創(chuàng)建.ssh文件夾:
mkdir .ssh - 追加公鑰內(nèi)容到授權(quán)文件尾部:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys - 刪除公鑰:
rm ~/id_rsa.pub
提示: ~ 指的是用戶目錄,登錄的是root的話就是:/var/root
- SSH登錄服務(wù)器:
-
7.2、如果上面的操作都做完了還是無法基于密鑰的客戶端認(rèn)證(也可以說免密登錄),那就是和權(quán)限有關(guān)的問題了,設(shè)置下下面的權(quán)限
設(shè)置下下面的權(quán)限chmod 755 ~ chmod 755 ~/.ssh chmod 644 ~/.ssh/authorized_keys
八、22端口
8.1、端口:就是設(shè)備對(duì)外提供服務(wù)的窗口,每個(gè)端口都有個(gè)端口號(hào)(范圍是0~65535,共2^16個(gè))
-
8.2、有些端口號(hào)是保留的,已經(jīng)規(guī)定了用途,比如
- 21端口提供FTP服務(wù)
- 80端口提供HTTP服務(wù)
- 22端口提供SSH服務(wù)(可以查看/etc/ssh/sshd_config的Port字段)
- 更多保留端口號(hào)
-
8.3、iPhone默認(rèn)是使用22端口進(jìn)行SSH通信,采用的是TCP協(xié)議
iPhone默認(rèn)是使用22端口進(jìn)行SSH通信,采用的是TCP協(xié)議iPhone默認(rèn)是使用22端口進(jìn)行SSH通信cat /etc/ssh/sshd_config
九、通過USB進(jìn)行SSH登錄
9.1、使用USB進(jìn)行SSH登錄的原因是:在上面
我們是通過同一個(gè)WIFI的情況下進(jìn)行的SSH登錄,在終端操作的時(shí)候可以感覺到輸入內(nèi)容很慢,這個(gè)時(shí)候我們可以可以使用USB進(jìn)行SSH登錄-
9.2、默認(rèn)情況下,由于SSH走的是TCP協(xié)議,Mac是通過網(wǎng)絡(luò)連接的方式SSH登錄到iPhone,要求iPhone連接WiFi
iPhone默認(rèn)是使用22端口進(jìn)行SSH通信,采用的是TCP協(xié)議 -
9.3、為了加快傳輸速度,也可以通過USB連接的方式進(jìn)行SSH登錄,Mac上有個(gè)服務(wù)程序
usbmuxd(它會(huì)開機(jī)自動(dòng)啟動(dòng)),可以將Mac的數(shù)據(jù)通過USB傳輸?shù)絠Phone- usbmuxd的路徑在:
/System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd
usbmuxd的路徑
通過USB連接的方式進(jìn)行SSH登錄
- usbmuxd的路徑在:
十、usbmuxd 的使用
-
10.1、下載usbmuxd工具包(下載v1.0.8版本,主要用到里面的2個(gè)python腳本:
tcprelay.py與usbmux.py)
tcprelay.py 與 usbmux.py -
10.2、將iPhone的
22端口(SSH端口)映射到Mac本地的10010端口(不一定非是10010端口,只要不是保留端口就好),做完下面的操作我們會(huì)發(fā)現(xiàn)再終端操作不會(huì)卡了
提示:映射窗口不要關(guān)閉,在SSH登錄的時(shí)候 新開窗口操作,保持至少兩個(gè)窗口,因?yàn)榭赡?連接 多個(gè)手機(jī)的 22 端口
-
端口映射完畢后,以后如果想跟iPhone的22端口通信,直接跟Mac本地的10010端口通信就可以了
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端口
-
-
-
10.3、遠(yuǎn)程拷貝文件也可以直接跟Mac本地的10010端口通信
scp -P 10010 ~/Desktop/1.txt root@localhost:~/test將Mac上的
~/Desktop/1.txt文件,拷貝到iPhone上的~/test路徑
scp的端口號(hào)參數(shù)是大寫的 -P提示:注意:scp的端口號(hào)參數(shù)是大寫的
-P
十一、利用 sh 腳本設(shè)置快捷方式
-
11.1、我們可以將經(jīng)常執(zhí)行的一系列終端命令行放到sh腳本文件中(shell),然后執(zhí)行腳本文件,舉例如下
-
<1>、
usb.sh腳本的舉例:我們在使用 USB連接用戶的iPhone的時(shí)候,每次都要執(zhí)行10.1中tcprelay.py這個(gè)腳本,我們可以把 tcprelay.py 存到一個(gè)固定位置,比如說我把它存在了桌面的 Jailbreak 文件夾,路徑就成為了/Users/wangchong/Desktop/Jailbreak/tcprelay.py,我們在 將iPhone的 22 端口(SSH端口)映射到Mac本地的 10010 端口就變成為如下的命令python /Users/wangchong/Desktop/Jailbreak/tcprelay.py但是我們每次再映射的時(shí)候都要執(zhí)行上面的命令,為了解決每次的麻煩,我們可以使用 sh腳本,比如我在用戶目錄下創(chuàng)建一個(gè) usb.sh 腳本文件,把上面的路徑復(fù)制進(jìn)去,如下
usb.sh 腳本文件當(dāng)我們再次執(zhí)行映射的時(shí)候可以直接如下操作
sh usb.sh執(zhí)行腳本 -
<2>、
login.sh腳本的舉例:同樣創(chuàng)建一個(gè) login.sh 文件里面寫入要執(zhí)行登錄的腳本文件:ssh root@localhost -p 10010,執(zhí)行腳本如下sh login.sh -
<3>、總結(jié):我們在每次映射和登錄iPhone連接的時(shí)候可以執(zhí)行下面的兩個(gè)腳本命令,但是要是在兩個(gè)窗口,先映射后登錄
sh usb.sh sh login.sh
-
-
11.2、擴(kuò)展:我們在執(zhí)行腳本的時(shí)候不僅僅使用
sh,還有bash、source命令來執(zhí)行sh腳本文件-
sh、bash- 當(dāng)前shell環(huán)境會(huì)啟動(dòng)一個(gè)子進(jìn)程來執(zhí)行腳本文件,執(zhí)行后返回到父進(jìn)程的shell環(huán)境
- 執(zhí)行cd時(shí),在子進(jìn)程中會(huì)進(jìn)入到cd的目錄,但是在父進(jìn)程中環(huán)境并沒有改變,也就是說目錄沒有改變
-
source- 在當(dāng)前的shell環(huán)境下執(zhí)行腳本文件
- 執(zhí)行cd后會(huì)跳轉(zhuǎn)到cd的目錄
-
source可以用一個(gè)點(diǎn)"."來替代,比如". test.sh"
-
-
11.3、source 與
sh、bash的區(qū)別- source執(zhí)行的腳本如果是執(zhí)行 cd 路徑的時(shí)候,執(zhí)行后
會(huì)顯示路徑
屏幕快照 2019-04-11 下午3.30.46.png -
sh、bash執(zhí)行的腳本如果是執(zhí)行 cd 路徑的時(shí)候,執(zhí)行后不會(huì)顯示路徑
屏幕快照 2019-04-11 下午3.30.32.png
- source執(zhí)行的腳本如果是執(zhí)行 cd 路徑的時(shí)候,執(zhí)行后
十二、Mac連接iPhone終端的中文亂碼問題
-
12.1、默認(rèn)情況下,iOS終端不支持中文輸入和顯示,解決方案:新建一個(gè)
~/.inputrc文件,文件內(nèi)容是不將中文字符轉(zhuǎn)化為轉(zhuǎn)義序列 set convert-meta off 允許向終端輸出中文 set output-meta on 允許向終端輸入中文 set meta-flag on set input-meta on- 提示:如果是想在終端編輯文件內(nèi)容,可以通過Cydia安裝一個(gè)vim(軟件源http://apt.saurik.com)
vim軟件
- 提示:如果是想在終端編輯文件內(nèi)容,可以通過Cydia安裝一個(gè)vim(軟件源http://apt.saurik.com)
-
12.2、做完上面操作后的效果如下
WechatIMG108.jpeg






































