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系列的部分手机机型,这实在是一大遗憾。