定制 kali nethunter内核 (官方不支持的手机)

2023-05-16

Kali Linux NetHunter内核编译指南

 发表于 2021-09-12   更新于 2022-10-08   分类于 kali   阅读次数:   阅读次数: 1890   Valine: 2
 本文字数: 12k   阅读时长 ≈ 10 分钟

0x00 前言

近年来随着各种HVV活动的兴起,各种新的概念层出不穷。其中就有近源渗透这个概念。
黑客行走江湖,哪儿能没有些趁手的兵器装备呢? 相信很多人都曾梦想过拥有一台黑客专属手机,走到哪儿黑到哪儿。那么现实中这样的手机存在吗?答案是肯定的!NetHunter就能满足你所有的需求!
Kali Linux NetHunter是由Offensive-Security团队打造的基于Android平台的渗透测试环境。
通过使用Kali Linux NetHunter我们可以使用诸如外接无线网卡破解WiFi,模拟BadUSB设备进行HID攻击,外接USB蓝牙适配器进行蓝牙攻击……等各种近源渗透活动。
Kali Linux NetHunter官网我们可以查阅官方支持的设备型号列表。

对读者的要求

如果你会玩安卓刷机且手机型号恰好被官方支持,那么直接按照官方教程一步步来就好。
如果很不幸你的手机不被官方所支持但你会玩Linux且懂一些安卓开发以及C语言方面的知识想给自己的手机适配NetHunter,那么本篇教程就带你如何给一台不被官方支持的手机适配Kali NetHunter。

开始前的准备

· 一台能解锁BootLoader且内核源码开源的安卓手机
· 一台高性能x86_64 PC

内核源码的选择

一般来说,手机厂商开源的内核源码代码质量参差不齐(一言难尽),如果我们要选择自己适配NetHunter的话最好选择知名第三方开发者Fork的源码进行编译。
比较知名的有:
· LineageOS
· PixelExperience
· crDroid
· MoKee
· Havoc-OS
· Arter97
…等,这里不再一一列举。

交叉编译工具链的选择

对于较老版本的内核(3.18.x以下)的一般是使用Google GCC4.9
对于较新版本的内核(4.4.x以上)的建议使用Clang来编译
对于Google gcc编译器,使用以下命令下载
64位:


1
  

git clone https://mirrors.bfsu.edu.cn/git/AOSP/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9 -b android-10.0.0_r32 --depth=1
  

32位:


1
  

git clone https://mirrors.bfsu.edu.cn/git/AOSP/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9 -b android-10.0.0_r32 --depth=1
  

对于Clang编译器,使用以下命令下载
Google官方Clang:


1
  

git clone https://mirrors.bfsu.edu.cn/git/AOSP/platform/prebuilts/clang/host/linux-x86 --depth=1
  

Proton-clang:


1
  

git clone https://github.com/kdrag0n/proton-clang.git --depth=1
  

如何查找自己手机的内核源码

对于已经开源内核源码的手机来说,一般只需要在GitHub上搜索关键字就能找到适合你的内核源码
一般搜索的关键字为android_kernel_<设备厂商名>_<设备CPU代号名>
或者kernel_<设备厂商名>_<设备CPU代号>
又或者kernel_<设备厂商名>_<设备代号>
举个例子来说,我的设备是小米Redmi 4X,设备厂商是xiaomi,CPU代号是MSM8937,设备代号是santoni那么就可以在GitHub上搜索关键字android_kernel_xiaomi_msm8937或者kernel_xiaomi_santoni或者kernel_xiaomi_msm8937来找对应设备的内核源码。
这里还要注意的一点是所选取的内核源码尽量要与当前手机所使用的ROM Android版本对应,比如如果手机所使用的ROM是LineageOS的那就去找LineageOS所对应的内核源码,且分支也要一一对应。
当然你也可以选择在XDA论坛寻找其他第三方优秀作者提供的内核源码。

0x01 环境准备

我这里使用VMware虚拟机安装Kali Linux系统来进行演示

Kali Linux最新镜像 下载链接

VMware Workstation Pro虚拟机 下载链接

ADB-FASTBOOT工具 for Linux 下载链接

0x02 系统设置

设置更新源


1
  

echo "deb https://mirrors.bfsu.edu.cn/kali kali-rolling main non-free contrib" > /etc/apt/sources.list
  

更新系统


1
  

apt update && apt upgrade -y && apt full-upgrade -y && reboot
  

0x03 安装编译依赖


1
2
3
4
5
6
7
  

apt install -y curl wget vim git ccache automake flex lzop bison gperf \
build-essential zip zlib1g-dev g++-multilib libxml2-utils bzip2 libbz2-dev \
libbz2-1.0 libghc-bzlib-dev squashfs-tools pngcrush schedtool dpkg-dev \
liblz4-tool make optipng maven libssl-dev pwgen libswitch-perl \
policycoreutils minicom libxml-sax-base-perl libxml-simple-perl bc \
libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev \
libgl1-mesa-dev xsltproc unzip device-tree-compiler kmod python3 python3-pip
  

0x04 下载交叉编译工具链


1
  

git clone https://github.com/kdrag0n/proton-clang.git /root/proton-clang --depth=1
  

0x05 下载内核源码


1
2
  

git clone https://github.com/crdroidandroid/android_kernel_xiaomi_msm8937.git
cd android_kernel_xiaomi_msm8937
  

0x06 编译内核

设置环境变量


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  

export ARCH=arm64
export SUBARCH=arm64
export KBUILD_BUILD_HOST=kali
export KBUILD_BUILD_USER=root
export LOCALVERSION=-NetHunter
export PATH="/root/proton-clang/bin:$PATH"
mkdir out
args="-j$(nproc --all) \
ARCH=arm64 \
SUBARCH=arm64 \
O=out \
CC=clang \
CROSS_COMPILE=aarch64-linux-gnu- \
CROSS_COMPILE_ARM32=arm-linux-gnueabi- \
CLANG_TRIPLE=aarch64-linux-gnu- \
AR=llvm-ar \
NM=llvm-nm \
OBJCOPY=llvm-objcopy \
OBJDUMP=llvm-objdump \
STRIP=llvm-strip "
  

打入补丁

这里根据你的内核版本选择对应内核版本的补丁(patches)
我这里内核是4.9所以选择4.9内核的补丁


1
2
3
  

git clone https://gitlab.com/kalilinux/nethunter/build-scripts/kali-nethunter-kernel.git
patch -p1 < kali-nethunter-kernel/patches/4.09/add-wifi-injection-4.14.patch
patch -p1 < kali-nethunter-kernel/patches/4.09/fix-ath9k-naming-conflict.patch
  

生成defconfig


1
2
  

make ${args} mrproper
make ${args} santoni_treble_defconfig
  

图形化配置内核选项

以下内容不同版本内核可能会有所不同,以实际情况为准!


1
  

make ${args} menuconfig
  


1
2
3
4
5
6
7
  

首先进入"Gerenal Setup"  
选择到"Local version - append to kernel release"  
清空里面所有内容  
然后取消勾选"Automatically append version information to the version string"  
接着选中"Default hostname",输入"kali"  
接着勾选"System V IPC"  
然后返回上一级菜单  
  

如图所示


1
2
3
4
5
6
7
8
  

接着进入到"Enable loadable module support"  
勾选以下几个选项:  
"loadable module support"  
"Forced module loading"  
"Modules unloading"  
"Forced module unloading"  
"Module versioning support"  
然后返回上一级菜单
  

如图所示


1
2
3
4
5
6
7
8
9
10
  

接着进入到"Networking support" -> "Bluetooth subsystem support" -> "Bluetooth drivers support"  
勾选以下几个选项:  
"HCI USB driver"  
"Broadcom protocol support"  
"Realtek protocol support"  
"HCI UART driver"  
"HCI BCM203x USB driver"  
"HCI BPA10x USB driver"  
"HCI BlueFRITZ! USB driver"  
然后返回上一级菜单
  

如图所示


1
2
3
4
5
6
7
8
  

勾选以下几个选项:  
"Bluetooth Classic (BR/EDR) features"  
"RFCOMM protocol support"  
"RFCOMM TTY support"  
"BNEP protocol support"  
"HIDP protocol support"  
"Bluetooth Low Energy (LE) features"  
然后返回上一级菜单  
  

如图所示


1
2
3
4
5
6
7
  

进入到"Wireless"  勾选以下几个选项:  
"nl80211 testmode command"  
"use statically compiled regulatory rules database"  
"cfg80211 wireless extensions compatibility"  
"Generic IEEE 802.11 Networking Stack (mac80211)"  
"Enable mac80211 mesh networking (pre-802.11s) support"  
然后返回上一级菜单
  

如图所示


1
2
3
4
5
6
7
  

接着进入到"Device Drivers" -> "Network device support" -> "USB Network Adapters"  
勾选以下几个选项:  
"USB RTL8150 based ethernet device support"  
"Realtek RTL8152/RTL8153 Based USB Ethernet Adapters"  
"ASIX AX88xxx Based USB 2.0 Ethernet Adapters"  
"ASIX AX88179/178A USB 3.0/2.0 to Gigabit Ethernet". 
然后返回上一级菜单
  

如图所示


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  

接着进入到"Wireless LAN"  
勾选以下几个选项:  
"Atheros/Qualcomm devices"  
"Atheros HTC based wireless cards support"  
"Linux Community AR9170 802.11n USB support"  
"Atheros mobile chipsets support"  
"Atheros ath6kl USB support"  
"MediaTek devices"  
"MediaTek MT7601U (USB) support"  
"Ralink devices"  
"Ralink driver support"  
"Realtek devices"  
"Realtek 8187 and 8187B USB support"  
"Realtek rtlwifi family of devices"  
"RTL8723AU/RTL8188[CR]U/RTL819[12]CU (mac80211) support"  
"Include support for untested Realtek 8xxx USB devices (EXPERIMENTAL)"  
"ZyDAS devices"  
"USB ZD1201 based Wireless device support"  
"ZyDAS ZD1211/ZD1211B USB-wireless support"  
"Wireless RNDIS USB support"  

在"Ralink driver support"中勾选以下几个选项:  
"Ralink rt2500 (USB) support"  
"Ralink rt2501/rt73 (USB) support"  
"Ralink rt27xx/rt28xx/rt30xx (USB) support"  
"rt2800usb - Include support for rt33xx devices"  
"rt2800usb - Include support for rt35xx devices (EXPERIMENTAL)"  
"rt2800usb - Include support for rt3573 devices (EXPERIMENTAL)"  
"rt2800usb - Include support for rt53xx devices (EXPERIMENTAL)"  
"rt2800usb - Include support for rt55xx devices (EXPERIMENTAL)"  
"rt2800usb - Include support for unknown (USB) devices"  

在"Realtek rtlwifi family of devices" 中勾选
"Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter"  
然后返回主菜单
  

如图所示


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  

进入到"Device Drivers" -> "Multimedia support" 勾选:  
"Digital TV support"  
"Software defined radio support"  
"Media USB Adapters"  

在"Media USB Adapters"中 勾选:  
"Airspy"  
"HackRF"  
"Mirics MSi 2500"  
然后拉到最下面,取消勾选  "Autoselect ancillary drivers (tuners, sensors, i2c, spi, frontends)"  
取消勾选 "I2C Encoders, decoders, sensors and other helper chips" 内所有选项  
取消勾选 "Customize TV tuners" 内除了 "Rafael Micro R820T silicon tuner" 以外所有选项  
在 "Customise DVB Frontends" 内取消勾选除了:  
"Realtek RTL2830 DVB-T"  
"Realtek RTL2832 DVB-T"  
"Realtek RTL2832 SDR"  
以外所有的选项  
然后返回主菜单
  

如图所示


1
2
3
4
5
6
7
  

进入到"Device Drivers" -> "HID support" 勾选:  
"Battery level reporting for HID devices"  
"/dev/hidraw raw HID device support"  
"User-space I/O driver support for HID subsystem"  
"Generic HID driver"  
勾选"Special HID drivers"  "USB HID support"  "HID over I2C transport layer"  内所有选项
然后返回上一级菜单
  

如图所示


 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
  

接着进入到"Device Drivers" -> "USB support"  勾选:  
"Support for Host-side USB"  
"OTG support"  
"USB Modem (CDC ACM) support"  
"USB Wireless Device Management support"  
"USB Mass Storage support"  
"USB Serial Converter support"  

在"USB Serial Converter support" 中勾选:  
"USB Serial Console device support"  
"USB Generic Serial Drive"  
"USB Serial Simple Drive"  
"USB Winchiphead CH341 Single Port Serial Driver"  
"USB CP210x family of UART Bridge Controllers"  
"USB FTDI Single Port Serial Driver"  
"USB Prolific 2303 Single Port Serial Driver"  

在"USB Gadget Support"中勾选:  
"USB functions configurable through configfs"  
"Generic serial bulk in/out"  
"Abstract Control Model (CDC ACM)"  
"Object Exchange Model (CDC OBEX)"  
"Network Control Model (CDC NCM)"  
"Ethernet Control Model (CDC ECM)"  
"Ethernet Control Model (CDC ECM) subset"  
"QCRNDIS"  
"RNDIS"  
"RMNET_BAM"  
"Ethernet Emulation Model (EEM)"  
"Mass storage"  
"Function filesystem (FunctionFS)"  
"MTP gadget"  
"PTP gadget"  
"Accessory gadget"  
"Audio Source gadget"  
"Uevent notification of Gadget state"  
"MIDI function"  
"HID function"  
"USB Diag function"  
"USB Serial Character function"  
"USB CCID function"  
"USB QDSS function"  
接着返回主菜单,退出并保存配置
  

如图所示

保存配置


1
  

make ${args} savedefconfig
  

编译内核


1
  

make ${args} 2>&1 | tee kernel.log
  

编译内核模块


1
  

make ${args} INSTALL_MOD_PATH="." INSTALL_MOD_STRIP=1 modules_install
  

0x07 构建NetHunter-Kernel-Installer内核包

下载Kali官方构建脚本


1
  

git clone https://gitlab.com/kalilinux/nethunter/build-scripts/kali-nethunter-project /root/kali-nethunter-project --depth=1
  

编辑机型列表


1
2
3
  

mkdir -p /root/kali-nethunter-project/nethunter-installer/devices/  
touch /root/kali-nethunter-project/nethunter-installer/devices/devices.cfg  
vim /root/kali-nethunter-project/nethunter-installer/devices/devices.cfg  
  

按照官方教程,添加以下内容并保存


1
2
3
4
5
6
7
8
9
10
  

# Xiaomi Redmi4X for crDroid Android 11  
[santoni]  
author = "DroidKali"  
arch = arm64  
version = "v1.0"  
flasher = anykernel  
modules = 1  
slot_device = 0  
block = /dev/block/bootdevice/by-name/boot  
devicenames = santoni,Redmi4x  
  

创建机型对应的文件夹


1
  

mkdir -p /root/kali-nethunter-project/nethunter-installer/devices/eleven/santoni/modules/system/lib/modules  
  

复制所需要的文件


1
2
3
4
  

cp out/arch/arm64/boot/Image.gz-dtb /root/kali-nethunter-project/nethunter-installer/devices/eleven/santoni  
rm -rf out/lib/modules/${make kernelversion}-NetHunter/source  
rm -rf out/lib/modules/${make kernelversion}-NetHunter/build  
cp -r out/lib/modules/${make kernelversion}-NetHunter /root/kali-nethunter-project/nethunter-installer/devices/eleven/santoni/modules/system/lib/modules/  
  

生成NetHunter-Kernnel-Installer安装包


1
2
  

cd /root/kali-nethunter-project/nethunter-installer/  
python3 build.py -d santoni --eleven --kernel
  

0x08 下载ADB-FASTBOOT工具包


1
2
3
4
5
  

wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip
unzip paltform-tools-latest-linux.zip -d /usr/share/
echo '''export PATH="/usr/share/platform-tools:$PATH"''' > /root/.zshrc
source /root/.zshrc
rm -rf platform-tools-latest-linux.zip
  

0x09 刷入内核安装包

重启到Recovery模式


1
  

adb reboot recovery
  

刷入内核刷机包


1
  

adb sideload kernel-nethunter-eleven-santoni-20210905_111235.zip
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

定制 kali nethunter内核 (官方不支持的手机) 的相关文章

随机推荐

  • Kaldi语音识别技术(六) ----- DTW和HMM-GMM

    Kaldi语音识别技术 六 DTW和HMM GMM 文章目录 Kaldi语音识别技术 六 DTW和HMM GMM前言一 语音识别概况二 语音识别基本原理三 DTW xff08 动态时间弯折 xff09 算法四 GMM HMM 前言 前面的内
  • Kaldi语音识别技术(七) ----- 训练GMM

    Kaldi语音识别技术 七 GMM 文章目录 Kaldi语音识别技术 七 GMM训练GMMtrain mono sh 用于训练GMM训练GMM 生成文件训练GMM final模型查看训练GMM final occs查看训练GMM 对齐信息查
  • Kaldi语音识别技术(八) ----- 整合HCLG

    Kaldi语音识别技术 八 整合HCLG 文章目录 Kaldi语音识别技术 八 整合HCLGHCLG 概述组合LG fst可视化 LG fst 组合CLG fst可视化CLG fst 生成H fst组合HCLG fst生成HaCLG fst
  • 测试cudnn是否安装成功(针对没反应的问题)

    安装cudnn后 xff0c 使用网上的命令行查看cudnn是否安装成功 cat usr local cuda include cudnn h grep CUDNN MAJOR A 2 发现没反应 发生甚么事了 xff1f 奥 xff0c
  • Python零基础入门基础教程(非常详细)

    目前python可以说是一门非常火爆的编程语言 xff0c 应用范围也非常的广泛 xff0c 工资也挺高 xff0c 未来发展也极好 Python究竟应该怎么学呢 xff0c 我自己最初也是从零基础开始学习Python的 xff0c 给大家
  • Spring Boot整合Mybatis-Plus和PageHelper分页插件

    Spring Boot整合Mybatis Plus和PageHelper分页插件 1 导入依赖 span class token comment lt Lombok提供了一组有用的注释 xff0c 用来消除Java类中的大量样板代码 gt
  • centos7同时安装Python2和Python3

    目录 1 背景2 安装1 1 1版本的openssl3 安装centos依赖包4 下载5 解压6 安装7 创建软链接8 ssl的使用验证9 配置阿里云镜像加速 本文适用于Python 3 10 5版本 xff0c 已经过测试 1 背景 我们
  • centos7安装mysql8.0.31版本

    目录 1 卸载mariadb2 下载3 安装4 修改 etc my cnf5 启动6 修改密码 1 卸载mariadb 因centos7默认安装了mariadb 会造成依赖冲突 xff0c 按下列方式进行卸载 xff1a root 64 c
  • 10-204 在员工表中查询所有男性员工的编号,姓名和入职日期,结果按员工编号升序排列

    分数 3 全屏浏览题目 切换布局 作者 刘冬霞 单位 山东理工大学 查询所有男性员工的编号 xff0c 姓名和入职日期 xff0c 结果按员工编号升序排列 表结构 员工 xff08 员工编号 文本型 xff0c 姓名 文本型 xff0c 性
  • Ubuntu18.04安装cuDNN

    Ubuntu18 04安装cuDNN 一 xff1a 安装准备 xff08 1 xff09 选择cudnn版本 官网cudnn链接 xff1a https developer nvidia com rdp cudnn archive 选择c
  • 自动写代码?别闹了!

    大家好 xff0c 我是良许 这几天 xff0c GitHub 上有个很火的插件在抖音刷屏了 Copilot 这个神器有啥用呢 xff1f 简单来讲 xff0c 它就是一款由人工智能打造的编程辅助工具 我们来看看它有啥用 首先就是代码补全功
  • C++构造函数的调用

    对象特性 构造函数和析构函数 构造函数 没有回值也不写void 函数值和类名相同 构造函数可以有参数 xff0c 因此可以发生重载 程序在调用对象的时候自动调用构造 xff0c 无须手动调用 xff0c 只能调用一次 析构函数语法 析构函数
  • Python基础---output【print()】

    一 输出字符串 1 一般字符串 gt gt gt print 34 My name is Pegga 34 My name is Pegga 2 输出带单引号 xff08 xff09 的字符串 方法一 xff1a gt gt gt prin
  • sqlite3命令读出sqlite3格式的文件内容案例

    Author Samson Date 07 09 2014 Test platform 3 11 0 11 generic 19 Ubuntu GNU bash version 4 2 45 sqlite是一个嵌入式的SQL数据库引擎 xf
  • Debian改变系统语言环境(中文切换到英文)实例

    Author Samson Date 08 15 2015 Test platform gcc 4 8 2 GNU bash 4 3 11 1 release x86 64 pc linux gnu Debian 8 Debian下如何设置
  • nest.js创建以及error相关问题

    开始之前 xff0c 你可以使用 Nest CLI 创建项目 xff0c 也可以克隆一个 starter project xff08 两者的结果是一样的 xff09 若要使用 Nest CLI 构建项目 xff0c 请运行以下命令 这将创建
  • java读取jar包内置文件或同目录下配置文件

    java读取jar包内置文件或同目录下配置文件 读取jar包同目录下文件 java程序在打成jar包后 xff0c jar内的文件就不再具备文件系统级别的路径 xff0c 因此要读取jar包同目录下的文件 xff0c 就需要特殊处理 这里使
  • MFC使用winpcap 抓包 pcap_compile使用

    使用Winpcap编写 xff1a 最近工作需要抓取傻瓜交换机的MAC xff0c 由于没有IP只能使用Winpcap抓包工具来实现 本人初学者 xff0c 大佬请绕行 a 先获取电脑的网卡信息 在SwithCheckMacDlg h文件中
  • 【c++】map用法详解

    map是c 43 43 标准库中定义的关联容器 xff0c 是关键字 xff08 key xff09 值 xff08 value xff09 对的结合体 本文记录其用法与案例 1 头文件 include lt map gt stl头文件不带
  • 定制 kali nethunter内核 (官方不支持的手机)

    Kali Linux NetHunter内核编译指南 发表于 2021 09 12 更新于 2022 10 08 分类于 kali 阅读次数 xff1a 阅读次数 xff1a 1890 Valine xff1a 2 本文字数 xff1a 1