前景概述:看到网上有人用手机进行Bad USB
攻击,自己也幻想了一下在手机中使用Kali Linux
的场景,看到Kali
官方提供的有移动端的设备Nethunter
,于是我就筹划这准备刷入这个系统。
想要刷入NetHunter
,并不是非常简单的事情,但是如果你有刷机基础的话,也可以是很简单的步骤。
我是一个小白,一点一点实验了很多次,手机变砖了不知道多少次,一点一点试验出的结果,如果有知情的大佬,可以给出指点。
首先什么是NetHunter?
基本的工作原理一定要搞明白,不然在刷机的过程中,你不知道要做些什么。
Kali NetHunter 是一款为安卓智能手机和平板电脑设计的开源安全渗透测试平台,由 Kali Linux 团队开发,集成了超过 600 多个安全测试工具和资源,可以帮助安全研究人员和渗透测试人员更方便、更快速地进行网络漏洞扫描、攻击和渗透测试等任务。
重点是,安装NetHunter
之前,你需要安装一个Andriod
的操作系统,他是基于你的Android
操作系统实现的。说是安装一个NetHunter
操作系统,不如说是让你的操作系统学习,并安装上这件强力的、具有杀伤力的工具
所以这就说到点子上了,并不是所有的Android
操作系统都可以"学会",或者说可是安装上NetHunter
,因为现在大多数运营商的操作系统都是上锁的,加密的,他们不会公开自己操作系统的底层源码,所里这些只有部分的机器可以安装NetHunter
,Kali
官网说明了这点,并提供了一些可以安装NetHunter
实现安全内核的Android
机型. https://www.kali.org/get-kali/#kali-mobile
所以,如果你的手机不是NetHunter
所适配的完全内核,你也可以安装,只不过没有完全的功能,例如强力的HID键盘模拟数据、网卡监听
等操作,只有基本的功能。
如果想要查看NetHunter
所适配的所有机型以及详细信息,可以参考该网址: https://nethunter.kali.org/kernels.html
关于Android的基础知识
分区结构
首先我们要刷机,就要了解Android
的分区结构,就像你刷Windows
系统,Linux
系统一个道理,需要了解他们如何启动和工作。
Android
其中有几个重要分区
- BOOT分区: BOOT分区用于引导和启动,主要负责加载
内核
和初始化Android系统
,实现ROOT
就是相当于在修改该分区内容 - Recovery分区: 该分区可以修改其他分区的数据,常用于系统出现故障进行修复,我们就是使用该分区进行系统的刷机
- SYSTEM分区: SYSTEM分区包含系统的核心文件,例如常见的
系统应用、系统服务、驱动程序
- DATA分区: DATA分区主要包含
系统数据
和用户数据
- Cache分区: 用于缓存临时的文件,例如
浏览器缓存、程序缓存、临时文件
- USER分区: 该分区可有可无,没有该分居,数据就存储在
DATA
分区中。常用于存储用户的数据,例如音乐、照片、文档
一般分区的启动顺序:
BOOT --> SYSTEM --> Cache --> USER --> DATA
A/B分区结构
A/B 分区结构是一种在 Android 设备上广泛使用的双分区系统,它允许在设备固件更新时进行无缝切换,以便提高设备的可靠性和稳定性。
具体来说,A/B 分区结构将设备存储器分为两个相同大小的分区,分别称为 A 分区和 B 分区。其中一个分区(例如 A 分区)被用作主分区,安装了 Android 系统和应用程序等核心数据;而另一个分区(例如 B 分区)则作为备份分区,与主分区完全相同,但不会被用于运行设备。
当设备需要进行固件更新时,新的固件将被下载并写入备份分区中。并且在确保固件写入完成之后,设备会自动重启,并切换到备份分区上运行新固件。这样,用户就可以在无需手动操作设备分区的情况下完成更新。
如果设备在更新过程中发生错误或更新失败,则设备将恢复到之前使用的分区上,并不会影响原有的数据。同时,设备也会在后续时间内持续检测更新版本,并尝试再次更新固件。
总之,A/B 分区结构是 Android 设备上一种非常实用的分区方式,它提供了一种安全、可靠的固件更新方法,减少了更新过程中数据丢失和固件破坏的风险。
BootLoader
上述,在启动的过程中,并没有启动到Recovery
分区的步骤,为什么?因为这个启动那个分区,是由BootLoader
来控制的,BOOT分区
用于把启动引导到系统分区,而BootLoader
就相当于电脑中的UEFI/BIOS
引导一样,
他在启动的时候,会检查屏幕、CPU、内存
等设备是否正常就绪,然后再根据用户选项进入制定的模式,一般默认为BOOT
分区,就是启动Android
手机系统。
那么这个用户选项是我们可以配置的,就是在开机的时候,比如通过同时摁下开机和音量+
会使OnePlus 6T
设备进入FastBoot
模式,同时摁下开机和音量-
就会进入Recovery
模式
FastBoot
FastBoot用于使用USB接口调试Android
设备执行数据传输、命令执行等操作
,FastBoot
可以对手机做对于系统的任何修改,刷机,解锁BootLoader
,所有关于刷机的操作,我们都可以在这里执行。
但是他都是命令行,而且我们要进行很多的操作,命令行容易出错,所以这里我们使用另一种方法来刷机,使用Recovery
刷机。
TWRP
每个Android设备中都会带有官方自带的Recovery分区的恢复操作系统,但是一般只能进行简单的操作,我们需要使用Recovery分区
进行刷机,就需要使用一个强大的Recovery
工具,那就是TWRP
TWRP可以更改其他分区的数据,所以我们可以执行任何关于刷机的操作。
Magisk
Magisk用于获取ROOT
权限和管理ROOT
权限,手机是基于Linux
开发的,在Linux
中,获得ROOT
权限,就可以就这台机器进行任何的修改,Android
也是一样,默认情况下,手机都不会ROOT
,因为很容易造成系统的故障。获取ROOT
需要你的手机厂商支持该设备取得ROOT
权限。
9008刷机
一般都是用于把手机搞坏,变砖。用于救砖的功能,不同的手机有不同的救砖程序,这个一定要下载,因为稍微出一点问题,就需要9008刷机
adb
adb和fastboot类似,也是用于调试,不过使用场景不同,一个是进入Android
系统开机状态进行调试,一个是开机时进入Fastboot
模式进行调试
刷机前的准备
找到了自己机型适配,现在需要准备一些需要的文件,这里我的设备是OnePlus 6T
,采用A/B
分区存储系统,如果和我类似,也可以参考
- NetHunter镜像文件:可以自己构建,参考官网,由于我们的设备官方适配,下载官方提供的. https://www.kali.org/get-kali/#kali-mobile
- TWRP: 官网下载自己机器适配的版本,注意需要下载一个
img
和zip
文件。 https://twrp.me/ ,这里需要注意的是,很多情况下如果刷入TWRP
失败,或者进入TWRP
失败都是因为版本没有选对,可以尝试换一个版本,如果没有适配的版本,可以去搜索一下,估计可能会有一些大佬发出你这个机型适配的版本 - Magisk: 一般下载是一个
.apk
文件,使用TWRP
刷入时需要改为.zip
文件,进入系统安装的时候改为.apk
文件即可,关于Magisk
详细说明和下载,可以看官网 https://magiskmanager.com/ - OnePlus 6T系统: 所有包都在该网站
https://yun.daxiaamu.com/OnePlus_Roms/
氧OS 10 9008刷机包:https://yun.daxiaamu.com/OnePlus_Roms_2/一加6T/9008线刷救砖包氧OS 10.3.8/`
氧OS 11 刷机包: https://yun.daxiaamu.com/OnePlus_Roms_2/一加6T/氧11.1.1.1/ - fastboot、adb调试工具: 官网下载,支持
Windows、Linux、MacOS
,网址:https://developer.android.google.cn/studio/releases/platform-tools?hl=zh-cn
在上述下载准备刷入氧OS 11
,因为氧OS 11
支持NetHunter
,一定要看清楚
刷机步骤
9008刷氧OS 10
好的现在我们开始刷入系统,第一件事,查看你系统的版本,如果是氧 9
我这里推荐使用9008
刷机为氧 10
版本,使用9008刷机可以学习救砖,而且一切都重头开始
首先使用电源+音量加
或者正常关机,将电源进入关闭状态,数据线一端连接Windows
电脑,然后同时摁下手机音量加+音量减
一直摁着四五秒,连接电源线,Windows
管理中会多出一个COM
端口
如果未识别,不要担心,因为Windows
没有安装9008
驱动,下载即可,这里访问我共享的天翼云盘连接,下载驱动安装即可:
https://cloud.189.cn/web/share?code=JBjQFnRJ7beu(访问码:jm3n)
然后解压并打开下载的9008刷机包中的MsmDownloadTool V4.0.exe
进入后会有一个COM
口处于连接
状态代表连接成功,可以进行刷机,点击start
开始刷机
刷机过程中,9008
工具会把系统等文件都刷入A
分区,不会管B
分区的状态
完成后,开机进入系统,进行初始化向导,这里不要不要联网和设置密码,以免出现问题
使用fastboot解锁BootLoader(oem)
进入系统后,设置 --> 关于手机 --> 一直点击版本号进入开发者模式 --> 返回上一级 --> 系统 --> 开发者选项 --> 启动OEM解锁 --> 启动USB调试
上述步骤操作完成,我们第一件事就是解开BootLoader
,一般厂商为了防止用户对系统胡乱配置,对BootLoader
进行了上锁,需要解开。
解压下载的fastboot、adb
调试工具,使用命令行进入该工具的目录,确保数据线连接到电脑和手机,还有USB调试
打开
输入命令,注意我使用的是Linux
,如果是Windows
去掉前面的./
即可
# Linux
./adb devices
# Windows
adb devices
如果设备状态为unauthorized
,代表设备没有允许连接,需要进入手机,点击允许
然后输入命令,重启进入fastboot模式
./adb reboot fastboot
进入后可以通过音量键选择执行的操作,例如START
进入系统,Recovery mode
进入Recovery模式,其中电源键
为确认键
Fastboot模式如图所示,其中重要的参数DEVICE STATE - locked
是锁住的,我们就是解开这个
这时我们的电脑和手机数据线是连接的
输入命令,确定是否可以使用命令对手机进行fastboot调试
./fastboot devices
如果有回显设备,代表连接成功,执行下方命令解开BL锁
./fastboot oem unlock
手机将会进入如下入所示,摁上下键选择,然后选择UNLOCK THE BOOTLOADER
,摁下电源键
确定
确定后会重启,然后进入一个加载页面,该过程会将手机回复出厂设置,清除所有数据
结束后,会进入系统,配置初始化引导选项,这里可以进行上述的步骤,然后使用adb
进入fastboot
模式
不过这里我们直接关机,这里介绍另一种进入fastboot
的方法
关机后,长摁电源键+音量减
进入Recovery
模式,你会进入OnePlus 6T
默认的Recovery系统
,一会我们会将TWRP
覆盖该系统
首先将系统进入关机状态
,然后同时摁下电源建+音量减
即可进入Recovery
模式,然后通过Reconvery
模式
选择:简体中文 --> 高级 --> 进入刷机模式 --> 进入刷机模式
这里的刷机模式就是fastboot
模式
进入TWRP刷入TWRP
上述步骤结束你应该进入了fastboot
模式,并且解开了BL锁
,在fastboot
模式中DEVICE STATE - unlocked
就是解锁成功
现在需要刷入TWRP
,这里注意,这里根据你的操作系统和Android版本选择你的版本,如果不行就就换,直到试出可以使用的版本。
我试出我的氧OS 10
,Android 10的OnePlus 6T
使用的版本是官方版本twrp-3.6.0
,注意在官网下载.img
和.zip
文件,一个用于临时进入TWRP
,一个用于刷入TWRP
为何要临时进入,再刷入TWRP
,是由于使用的是A/B
分区结构,recovery分区
和boot分区
在一起,如果将TWRP
使用fastboot
刷入,会损坏boot分区
导致无法开机,这里我是这样的,具体原理不太清楚,这是我试出来的总结
好的现在使用fastboot
临时进入TWRP
,执行下方命令
./fastboot boot twrp-3.6.0_9-0-fajita.img
一会手机就会进入TWRP
中,截图我就不放了,点击select language
选择语言,选择为chinese中文
然后这是你的电脑应该会弹出可以访问手机的文件系统,这时往里面复制文件,将TWRP
下载的.zip
文件复制到手机中,复制结束
然后TWRP
点击安装,选择twrp.zip
文件,拖动滑块确认刷入
上图可以看出TWRP
默认会将boot_a和boot_b
,就是A分区的boot
和B分区的boot
都刷入TWRP
刷入完成后TWRP
重启,然后选择重启进入Recovery
,注意这里槽位
是A
,就是重启进入的是A分区
的Recovery
如果重启进入的Recovery
是TWRP
代表刷入成功,也可以直接关机,还记得刚刚说的吗电源键+音量减
可以进入Recovery
模式
使用TWRP刷入氧OS 11
跟上面刷入TWRP
的步骤一样,先进入Recovery
模式中,将下载的氧OS 11
的.zip
文件复制到手机中,点击安装
点击选中氧OS 11
文件,滑动安装即可
安装过程中,可以看到将氧OS 11
安装到了B分区
还记得刚开始将的A/B
分区概念吗,系统会将需要新刷入的系统包刷进B分区
,然后下次启动的时候,如果启动成功,清空A分区
的系统文件,如果启动失败,系统更新失败,重新返回A分区
,继续使用以前的氧 10
系统
刷入系统完毕后,TWRP
重启,先点击槽位B
会切换到分区B
,因为系统刷入到了分区B
点击系统
,然后重新进入系统,初始化向导进入系统,可以看到是氧OS 11
系统
如果不选择槽为B
的话,默认为槽为A
的话,不会进行系统更新,你进入系统看到的还是之前的系统氧OS 10
解决刷入NetHunter前TWRP问题
如果你成功进入了氧OS 11
系统中,代表你刷机成功了,这是需要注意,系统认为你更新成功了,会将A分区
的系统清除,只能使用B分区
,但是反而会出现一个问题,当你在氧OS 11
中,关机然后摁下电源键+音量减
进入Recovery
中时,发现是系统默认的Recovery
,我们刷入的TWRP
被刷入系统时替换了,所以这里我们需要再次刷入一次TWRP
,这里我在使用./fastboot boot twrp-3.6.0.img
的时候,启动失败无法进入,并且报了一个系统级别的操作。如下
QUALCOMM CrashDump Mode
Attempted to kill init! exitcode=0x0000000b
complete_and_exit
然后我在网上搜到了跟我一样,并且提供了可以启动和刷入的TWRP
文件
解决方案博客位置:https://silverrainz.me/jour/2022/02.html
提供的TWRP
位置:https://forum.xda-developers.com/t/recovery-11-12-13-unofficial-twrp-for-oneplus-6-6t.4382121/
但是呢,虽然可以刷入这个TWRP
,但是读取Android系统文件的名称却是a9y81T1OHPVEZXFVoegf0B
这样的文件,刚开始我以为是氧OS 11
默认的分区加密
后来发现是TWRP
的问题,所以这里我们急需一个适配氧OS 11
的TWRP
,但是我并没有找到,这里我经过阴差阳错,试出了一个奇怪的方法,具体思路看我下面分析:
我们现在需要使用TWRP
给B分区
刷入Nethunter
和Magisk
,但是我的TWRP
识别文件为乱码,我需要一个正常的TWRP
,或者我需要一个外接的存储设备,但是我并没有外接存储设备
然后我尝试使用fastboot
将槽位
设置为A
,看一看之前给氧OS 10
刷入的TWRP
能不能识别,但是并没有成功,文件还是乱码
然后我只能使用9008
刷机重新开始,刷入氧OS 10
,这里好玩的事情发生了,还记得刚开始进行9008
刷机的时候说的话吗,9008
刷机默认会将系统包刷入A分区
,仔细想一下,我们现在B分区
是有氧OS 11
,9008
直接刷入分区A
,所以现在手机中拥有A分区 氧OS 10
,B分区 氧OS 11
然后我们重头来,由于9008
刷机会将BL
再次上锁,我们需要再次解开,这是需要注意:我们在解开BL
锁的时候,A分区和B分区
的系统都会清楚所有数据,恢复到出厂设置,OK
然后我们继续刷入TWRP
,还记得第一次刷入TWRP
的时候说的话吗?TWRP
默认会刷到boot_a和boot_b
,这里正常刷入
现在回到刚刚在进行9008
刷机之前的问题,我们需要一个可以用与氧OS 11的TWRP
,这时使用现在刷入的TWRP
,能不能正常查看氧OS 11
的文件呢?经过我的测试,是可以正常查看文件并刷入的
上述的思路中的步骤再次9008刷机、解锁BL、刷入TWRP
,都是和前面的步骤一样,这里我不再过多操作。
正式刷入Nethunter和Magisk
如果你完成了艰难的再次9008刷机、解锁BL、刷入TWRP
,现在你的Android设备OnePlus 6T
中的分区环境为这样
- A分区: 系统为
氧OS 10
,解锁BL的时候清空了所有数据,并且刷入了TWRP-3.6.0
- B分区: 系统为第一次刷入的
氧OS 11
,在再次解锁BL
锁的时候清除了所有的数据,并且刷入了TWRP-3.6.0
现在我们只需要进入TWRP
,然后重启
,选择槽位
为B
,选择进入系统
,进入的是B
中的氧OS 11
系统,进入系统后进行初始化向导(注意不要联网)
如果不执行上述的初始化
操作,将无法安装NetHunter
会提示你先进行初始化操作
重启进入Recovery
模式TWRP
复制NetHunter.zip和Magisk.zip
到Android中
选择NetHunter.zip
包,滑动刷入NetHunter
安装大概需要几分钟的时间
刷入成功后,同样的步骤,不同的软件包,刷入Magisk.zip
刷入成功后,重启系统,你会看到Kali
的壁纸,还有NetHunter
这样的程序,打开文件管理找到Magisk.zip
将后缀名该为apk
安装
然后重启系统就可以打开你的NetHunter
了,如果不行,给NetHunter ROOT
权限后再次重启
成功,开始你的NetHunter
之旅吧!成为真正的黑客,真正的Black Hacker Attacker
!
总结:
- 这次学习
NetHunter
以及刷机整整用了我2.5天
的时间,加上我的预习,虽然成功的不太靠谱,感觉有些地方不对劲,但是我的目标完成了,明天继续研究有没有更简单的方法。 - 参考视频 bilibili大佬:https://www.bilibili.com/video/BV1BY4y1H7Mc/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=26f5bf664da5f235507d877da05fd710
还有: https://www.bilibili.com/video/BV1pv4y1v769/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=26f5bf664da5f235507d877da05fd710 - 使用的主要软件包来自于: https://yun.daxiaamu.com/OnePlus_Roms/