- 安卓Frida逆向與協議分析
- 陳佳林
- 1737字
- 2023-09-15 17:59:19
1.3.3 Kali NetHunter刷機
為什么要在刷入官方鏡像且Root完成的Android測試機上再次刷入Kali NetHunter呢?
正如桌面端的Kali是專為安全人員設計的Linux定制版操作系統,Kali NetHunter也是第一個針對Nexus移動設備的開源Android滲透測試平臺,刷入這個系統有利于逆向開發人員更加深入地理解Android系統,無論是在后面章節中使用Kali NetHunter直接從網卡獲取手機全部流量,還是在刷入Kali NetHunter后,逆向人員都可經由Kali NetHunter直接執行原本在桌面端Kali上可以執行的一切命令。比如htop、jnettop等在第1章中介紹的所有命令,這些命令原生的Android是不支持的。另外,隨著Kali NetHunter的刷入,逆向人員便可以憑借它從內核的層面去監控App,比如通過strace命令直接跟蹤所有的系統調用,任何App都沒有辦法繞過這一方式,畢竟從本質上來說,任何一個App都可以當作Linux中的一個進程。而之所以可以從內核層面去監控App,是因為安裝的Kali NetHunter和Android系統共用了同一個內核。可以說,Kali NetHunter值得每一個Android逆向人員所擁有。
另外,由于Kali NetHunter對Android修改的主要是關于Android內核方面的內容,這些修改對平時日常的使用幾乎不會產生任何影響,比如Xposed這個Hook工具依舊可以在Kali NetHunter上正常使用,這大大縮減了逆向人員進行測試的成本。
接下來進入刷入環節。
首先,下載SuperSU以及適配于Nexus 5X版本的Kali NetHunter,注意這里的SuperSU是ZIP格式而不是APK格式,同時不要使用SuperSU官網給出的新版SuperSU工具,而使用SuperSU-SR5版。另外,Kali NetHunter官網給出的2020.04版本的Kali NetHunter有Bug,筆者這里下載的是2020.03版。在官網下載Kali NetHunter時,會發現Nexus 5X的設備只支持Oreo版本,而Oreo是Android 8的代號,恰好和之前刷入的手機鏡像一致。
在刷入Kali NetHunter之前,還需要對手機進行Root操作。這里由于Magisk進行Root的方式實際上是“假”Root(讀者有興趣可自行研究),因此筆者選擇SuperSU進行Root。而在安裝SuperSU之前,由于Magisk和SuperSU是不兼容的,因此先按照1.3.1節的步驟重新刷入一個新的鏡像。
在重新進行刷機后,打開開發者模式與USB調試功能并確認手機已連接上計算機。然后在主機上使用adb命令將SuperSU-v2.82-201705271822.zip和下載的Kali NetHunter推送到Android設備上。

依據1.3.2節的步驟重新刷入并進入TWRP界面,單擊Install按鈕,然后選擇SuperSU這個文件,刷入并重啟,從而使得系統再次獲得Root權限,具體操作如圖1-20所示。

圖1-20 刷入SuperSU
重啟后,進入 Shell確認獲得Root權限。

最后,重新進入TWRP,按照同樣的步驟刷入Kali NetHunter,這個過程可能會很長。最終刷入Kali NetHunter并成功重啟后,Kali NetHunter界面展示如圖1-21所示。
此時,不僅桌面壁紙發生了變化,打開設置頁面進入“關于手機”界面,發現Android內核也發生了變更,刷之前是谷歌團隊編譯的內核,刷之后變成了re4son@nh-hernel-builder編譯的內核,如圖1-22所示。

圖1-21 Kali NetHunter界面展示

圖1-22 Kali NetHunter刷之前和刷之后的內核對比
從官方文檔來看,這個內核是在標準安卓內核的基礎上打補丁的產物,主要對網絡功能、WiFi驅動、SDR無線電、HID模擬鍵盤等功能在內核層面添加支持和驅動,打開模塊和驅動加載支持等。利用這個定制內核,普通的安卓手機就可以進行諸如外接無線網卡使用Aircrack-ng工具箱進行無線滲透,模擬鼠標鍵盤進行HID BadUSB攻擊,模擬CDROM直接利用手機繞過計算機開機密碼,一鍵部署Mana釣魚熱點等功能。
當然,這些與我們進行安卓App的逆向好像關系不是很大,我們真正關心的是Kali NetHunter鏡像的刷入相當于在安卓手機中安裝了一個完整的Linux環境。
在App層面,從圖1-21可以看到手機上多出了NetHunter、NetHunter-Kex、NetHunter終端等App。
這里NetHunter終端其實就是一個終端程序,可以選擇ANDROID SU進入手機的終端或者選擇Kali模式。對應之前所說的完整的Linux環境,此時通過NetHunter終端App執行各種Kali中可以執行的命令,比如apt安裝命令、jnettop查看網卡速率、ifconfig查看IP地址等,這里展示apt命令,如圖1-23所示。
當然,要使用其他NetHunter相關的App,比如圖1-22展示的NetHunter終端,需要先打開NetHunter App并允許所有申請的權限,在App進入主界面后,打開App側邊欄,選擇Kali Chroot Manager就會自動安裝上Kali Chroot。在安裝完畢后,單擊START KALI CHROOT啟動Chroot,便可以愉快地使用NetHunter-Terminal和NetHunter-Kex了,詳細步驟如圖1-24所示。

圖1-23 Terminal命令展示

圖1-24 Kali Chroot配置
此時不僅可以通過手機上的NetHunter終端運行各種Android原本不支持的Linux命令,甚至覺得手機界面過小時,可以通過SSH連接手機最終在計算機上操作手機。具體關于SSH的配置,可以打開NetHunter這個App,打開側邊欄,選擇Kali Services,然后勾選RunOnChrootStart,并且選中SSH按鈕來設置,具體操作流程如圖1-25所示。這個時候如果計算機和手機在同一內網中,就可以愉快地使用計算機上的終端進行SSH連接了。

圖1-25 NetHunter開啟SSH
在打開SSH后,根據筆者手機的IP 192.168.50.129,最終使用計算機連接手機的效果如下:

但可惜的是,Kali NetHunter僅支持Nexus系列以及OnePlus One系列的部分手機機型,這實在是一大遺憾。