iOS越獄開發 - OpenSSH連接手機

Open Secure Shell(OpenSSH)是一個安全的登錄系統,可以用來替代telnet、rlogin、rcp等。簡單的講,ssh 是一個通過網絡登錄進入另一臺計算機的程序。openSSH 是其中的一種軟件。我們可以利用電腦通過 OpenSSH 軟件,遠程登錄到我們的手機。

一、通過openSSH連接(登錄)手機(wifi連接)

$ssh 用戶名@用戶服務器地址
//注:這里的服務器指手機(下同)

iOS 下有兩個用戶

  • root(最高權限)用戶 $HOME:/var/root iPhone:~ root#
  • 還有一個 mobile(普通)用戶 $HOME: /var/mobile iPhone:~ mobile$
    mobile 不能操作系統級別的文件

刪除SSH服務器對應的公鑰

$ssh-keygen -R 服務器IP地址

修改ssh登錄密碼

  • passwd 輸入兩次新密碼

關閉openSSH連接

$exit

SSH

SSH是一種網絡協議.用于計算機之間的加密登錄!
openSSH 是其中的一種軟件.

SSH通訊過程

image.png

中間人攻擊(Man-in-the-MiddleAttack,簡稱“MITM攻擊”)

如果登錄同一個服務器(IP),它的公鑰(哈希值)發生了變化,它就不會讓你登錄了,它會判斷有中間人攻擊。本地一個IP:端口只能保存一個公鑰。

預防中間人攻擊最有效的方法就是驗證【公鑰是不是服務器的】!!
如果是公開的 SSH 服務器,一般會將公鑰的哈希值【公布在網站上】!!

我們在終端第一次連接 SSH 服務器時,會提示:

The authenticity of host '101.2.79.32 (101.2.79.32)' can't be established.
RSA key fingerprint is SHA256:yMLGAtdE6S87XaMHtvFy41t1fH+QeBgchSTOmennwMQ.
Are you sure you want to continue connecting (yes/no)? 

上面 yMLGAtdE6S87XaMHtvFy41t1fH+QeBgchSTOmennwMQ 就是服務器發給客戶端的公鑰(哈希值)。這個公鑰會保存在本地。保存在:

$cd ~/.ssh/known_hosts
$ls

101.2.79.32 ssh-rsa AAAAB3MzaC1yc2EAAAADAQABAAABAQDAIDd6dG0LIL87woLOWGPiuO3cpBsxsH9VfTA7ETRf7X7Y9gf5Np5Qe02J7HworrX7nNH0Kq32ExRrQGUmdrP0iz0IAbfL7t8MxQb0fSj1uqnX0ZgY8E+EHkHXyyaR9bl0FQlf2G62BuaC+0ZceDtk7EkvXJdiA5dpt3gnlbsYYDWN4xGJItHlGI/Ni1e5bzLQgt4KTEPTl40EDr3Mc0VmXJyzCLpFu8/KzcLaftVkMZoZlrheH+iKlAIE3b7t2DECA/rJKc3SrVJ9kjjJ3LlQ+KQtUZF2utKHJtVke7iM+ZrVwwfnoBp2D1xPMbFClBlg6MMiQk+B1ylDmwqLSpmT

我們再看一下服務器的公鑰,服務器的是保存在手機里面的。ssh 登錄服務器,查看服務器公鑰:

$ssh root@101.2.79.32
iPhone:~ root# cd /etc/ssh/
iPhone:/ect/ssh/ root# cat ssh_host_rsa_key.pub

ssh-rsa AAAAB3MzaC1yc2EAAAADAQABAAABAQDAIDd6dG0LIL87woLOWGPiuO3cpBsxsH9VfTA7ETRf7X7Y9gf5Np5Qe02J7HworrX7nNH0Kq32ExRrQGUmdrP0iz0IAbfL7t8MxQb0fSj1uqnX0ZgY8E+EHkHXyyaR9bl0FQlf2G62BuaC+0ZceDtk7EkvXJdiA5dpt3gnlbsYYDWN4xGJItHlGI/Ni1e5bzLQgt4KTEPTl40EDr3Mc0VmXJyzCLpFu8/KzcLaftVkMZoZlrheH+iKlAIE3b7t2DECA/rJKc3SrVJ9kjjJ3LlQ+KQtUZF2utKHJtVke7iM+ZrVwwfnoBp2D1xPMbFClBlg6MMiQk+B1ylDmwqLSpmT

第一次登錄 ssh 服務器時,服務器會將自己的公鑰發給客戶端,客戶端會把公鑰保存在本地。并用人工方式比對一下客戶端的公鑰是否與服務器的公鑰一致!等下次再登錄時,會自動認證!

SSH使用公鑰登錄

除了使用密碼登錄,也可以免密碼登錄!免密碼登錄是不存大中間人攻擊問題的,因為它是在登錄成功之后才允許做的事情!
所謂的<q style="box-sizing: border-box;">公鑰登錄</q>,原理:
1.Mac 電腦將自己的公鑰發給遠程的手機
2.手機隨機的生成一段字符串,發給Mac電腦
3.Mac 利用私鑰加密字符串!
4.手機利用公鑰解密字符串!
如果還要輸入密碼的話,設置文件的權限! chmod 755

在終端輸入如下命令,生成 rsa 的公私鑰:

$ssh-keygen

一路回車就可以,然后在

$cd ~/.ssh

目錄底下可以看到生成的私鑰id_rsa和公鑰id_rsa.pub,直接在該目錄下拷 貝公鑰到服務器,用命令

$ssh-copy-id root@101.2.79.32

接著我們再次登錄服務器

$ssh root@101.2.79.32

我們會欣喜的發現可以直接登錄了,不需要再輸入密碼了。
登錄服務器后,我們可以看一下 .ssh 目錄底下

iPhone:~ root# cd ~/.ssh/
iPhone:~/.ssh root# ls

會發現有一個authorized_keys文件。
我們用cat命令查看一下這個文件,再退出進入

$cd ~/.ssh

查看一下id_rsa.pub文件,會發現兩者的公鑰信息是一樣的。

二、通過USB連接手機

SSH 的默認端口是 22
usbmuxd 在 iOS 和 Mac 上都是自帶的!

除了上述 wifi 形式連接手機,我們還可以使用 usb 形式連接手機。與wifi 連接相比,usb連接的特點是:快且穩定。對于拷貝文件等需要穩定性的操作,可以使用 usb 連接。使用 usb 連接,我們需要做一個端口的映射。讓我們本機電腦的一個端口映射到 22 端口上去。

主要分兩步

  • 通過 python 去監聽端口
  • 通過 ssh 去連接本機的服務器

詳細過程

在終端執行命令

$python tcprelay.py -t 22:1122
//1122是隨便寫的一個本地沒有占用的端口

此時本地的 1122 端口就會一直被監聽,只要訪問本地的 1122 端口,就會將數據發送到 ssh 連接的 22 端口上。這個時候,我們只需要執行命令

ssh -p 1122 root@127.0.0.1
//注:這里 127.0.0.1 也可以改為 localhost

就會映射到 usb 連接的手機上。

注意:這里 1122 端口是本機的,22 端口是 ssh 的

通過Shell腳本簡化步驟

上面兩步都是一些沒有營養的步驟,我們可以通過 Shell 腳本簡化。

  • python-client文件夾拷貝到/Users/xipengfei/XPFShell/目錄下,然后新建一個 shell 腳本 usbConnect.sh,編寫代碼python /Users/xipengfei/XPFShell/python-client/tcprelay.py -t 22:1122保存并退出。
  • 新建一個 shell 腳本 usbLogin.sh,編寫代碼ssh -p 1122 root@127.0.0.1保存并退出。

這下,我們只需要在一個終端執行命令sh usbConnect.sh監聽端口,在另一個終端執行命令sh usbLogin.sh連接服務器。

注:這里需要注意中間人攻擊,同一個服務器(IP),不同的公鑰就會出現中間人攻擊

拷貝文件

把文件 123.txt 拷貝到服務器(手機)用戶目錄下,有兩種方式:

  • wifi 拷貝
    可以在任意目錄下執行
    scp 123.txt root@101.2.79.32:~/
  • usb 拷貝
    先映射、監聽服務器端口sh usbConnect.sh,再執行
    scp -P 1122 123.txt root@127.0.0.1:~/
    //注:這里 127.0.0.1 也可以改為 localhost

應用瘦身

現在大多數應用都支持到 armv7s,有的甚至支持到 armv7(比如微信)。指令集可能會 armv7、armv7s、arm64,這樣 mach-o 文件會比較大,導致 ipa 包很大。對于 iPhone5S 及以下的手機來說,只需要 arm64 指令集就夠了,這個時候就有必要給應用瘦身。

  • 通過USB連接手機,保證應用傳輸的時候快且穩定。
  • 使用如下命令給應用瘦身
    $ lipo mach-o文件 -thin armv64 -output macho_armv64
  • 解壓應用 ipa 包,把包內容里的 mach-o 文件替換為瘦身后的 mach-o 文件,注意名字改回原來的名字
  • 使用如下命令打包 ipa 包
    zip -ry xxx.ipa Payload
    注:Payload 為要打包的文件夾
  • 用 Xcode 的 Devices 安裝瘦身后的應用

安裝成功后,你會發現應用比瘦身之前少了將近一半的大小。對于非越獄手機需要做重簽名的操作。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。