一次恶意 WiFi 实验:当好友连上你的手机热点,你能看到什么?(一键脚本执行)

一次恶意 WiFi 实验:当好友连上你的手机热点,你能看到什么?(一键脚本执行)

技术本身无善恶,但一旦越界就是违法。本文仅做安全科普,所有流量劫持、抓包、搭建钓鱼热点操作,仅允许在自己拥有完全控制权、获得所有参与者书面授权的内网实验环境中进行,严禁在公共场所、未经他人许可下部署,违者承担全部法律责任。

WiFi 早已融入日常,咖啡厅、商场里随处可见标注 “Free-WiFi” 的开放无线网络。很多人习惯性直接连接,觉得只是免流量上网,不会有风险。但很少有人知道:一台搭载 Kali NetHunter 的安卓手机,搭配一块支持 AP 模式的外置无线网卡,就能装进口袋,随时搭建一个具备流量劫持、强制门户钓鱼、流量抓包能力的恶意 WiFi 热点。下面我们结合实验原理,看懂开放 WiFi 背后的安全陷阱。

一、核心原理:连上热点,你的流量就要经过对方网关

当你的设备接入任意 WiFi 热点,热点设备就成为你的默认网关,你所有上网数据包都会经过这台设备转发。这也是恶意 WiFi 能够获取网络信息的根本原因。

不同协议下,热点持有者能够捕获的信息有明确边界:

  1. 链路层:可以看到接入设备 MAC 地址、上下线时间。开放 WiFi 没有 WPA 加密,这些关联信息明文传输。
  2. 网络层:接入设备内网 IP、访问的目标公网 IP、数据包大小、访问时间全部可记录。
  3. DNS 解析:热点通过 DHCP 下发自定义 DNS 服务器,能够记录你所有域名查询记录,知道你在访问哪些网站。
  4. HTTP 网站:无加密的 HTTP 网站,完整 URL、表单填写内容、Cookie、图片等全部明文,可直接抓取。
  5. HTTPS 加密网站:无法获取网页内容、账号密码。但可以通过 TLS 握手 SNI 字段看到你访问的域名、目标 IP,同时获取流量特征,推断你的上网行为。

基于以上能力,恶意热点可以实现四类攻击:

  • 记录上网轨迹:保存全部 DNS 访问日志,还原你的浏览行为;
  • 窃取明文信息:抓取 HTTP 网站、老旧 APP 接口提交的账号、表单信息;
  • 强制门户钓鱼:设备联网自检时自动弹出网页,诱导填写手机号、验证码、账号密码;
  • 网络操控:DNS 投毒、网络限速、断流,篡改流量转发路径。

⚠️ 重点澄清:HTTPS 不是完全无敌,但单纯搭建热点,不安装伪造根证书的前提下,攻击者看不到加密网站内的密码和聊天内容。本次实验不做证书劫持,仅捕获 DNS、HTTP 流量以及用户主动在认证页面提交的数据。

二、实验架构:一台安卓手机就能完成的攻击环境

本次实验最大的震撼点,就是整套攻击平台不再依赖笨重的笔记本电脑,仅靠安卓手机 + OTG 外置无线网卡即可实现。

环境优势

  • 便携隐蔽:随身携带,在咖啡厅、地铁、宿舍都可以部署,普通人很难察觉这是攻击设备;
  • 自带供电:依靠手机电池供电,不需要外接电源;
  • 双网卡分工:手机内置无线网卡wlan0连接正常 WiFi 作为互联网上游;外置 OTG 无线网卡wlan1作为 AP,向外广播开放热点;
  • 完整 Kali 工具链:在 NetHunter 的 chroot 容器内,直接使用 hostapd、dnsmasq、iptables、Apache、MariaDB 等全套网络工具。

网络拓扑

互联网
   │
上游WiFi ← 手机内置网卡wlan0(负责访问外网)
   │
安卓手机(Kali NetHunter容器)
├─ hostapd:发射开放热点Free-WiFi
├─ dnsmasq:DHCP分配IP + DNS解析 + 日志记录
├─ iptables:NAT转发 + 强制门户劫持
└─ Apache+PHP+MariaDB:钓鱼认证页面、后台数据存储
   │
外置网卡wlan1 广播开放热点Free-WiFi
   │
受害设备(手机/电脑)

硬件选型要点

外置无线网卡是整套环境的核心,选型需要满足:

  1. Linux 驱动支持,iw list命令能看到支持 AP 模式;
  2. 优先低功耗型号,OTG 供电稳定,供电不足建议搭配带供电的 OTG 集线器;
  3. 可选定向天线,控制 WiFi 信号覆盖范围。

注意:安卓原生系统和 Kali 容器存在差异,没有 systemd 管理服务、Android 有独立策略路由表、两套 iptables,这些都是部署时最容易踩坑的地方。

软件组件分工

组件 作用
hostapd 将无线网卡配置成无线 AP,广播 WiFi 名称
dnsmasq 给接入设备分配内网 IP、提供 DNS 解析,记录 DNS 查询日志
iptables 配置 NAT 流量转发,实现 HTTP 强制门户劫持
Apache+PHP 搭建网页,实现 WiFi 上网认证页面、后台管理面板
MariaDB 存储接入设备信息、访问日志、用户提交的信息
tcpdump

抓取全部网络数据包,后续离线解析数据包内容

使用教程,程序说明

初次运行会检查依赖,缺少依赖环境,会自动安装。
如下图,一键开启热点。

终端A启动脚本:

cd /root/wifi-ap        # 换成你的实际路径
./wifi_ap_phishing.sh

20261020074159474-09b5f21f102c859b4f99357525be6ff4

当有设备连接热点后,会出现客户端信息。

20261020074314762-1c81c23fc0d7f7d07496dc7641e7e7de

终端 B(Android su):加 FORWARD

原因:chroot 里的 iptables 写不了 filter 表 。

iptables -I FORWARD 1 -i wlan1 -o wlan0 -j ACCEPT
iptables -I FORWARD 1 -i wlan0 -o wlan1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -L FORWARD -n -v | head -5

20261020074626352-3cfbbadfe73b5065918ea0d292a8c612

终端 C(Kali chroot 新会话):NAT + 策略路由

T=$(ip -4 route show table all | awk '/^default/ && /dev wlan0/ {for(i=1;i<=NF;i++) if($i=="table"){print $(i+1); exit}}')
echo "T=$T"

echo 1 > /proc/sys/net/ipv4/ip_forward

# NAT(脚本一般已加,重复无害)
iptables -t nat -C POSTROUTING -o wlan0 -j MASQUERADE 2>/dev/null || \
  iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -t nat -L POSTROUTING -n -v --line-numbers | head -4

# 策略路由(优先级高于脚本的 10500/14000)
ip rule del pref 9998 2>/dev/null
ip rule del pref 9999 2>/dev/null
ip rule add from 192.168.66.0/24 lookup "$T" pref 9998
ip rule add to   192.168.66.0/24 lookup main pref 9999

ip route get 223.5.5.5 from 192.168.66.100 iif wlan1

访问设备后台,效果如下:

账号密码/admin/admin123

20261020074913180-image

登录后,在首页便可以显示基本信息。,点击设备,目前仅可以看到认证时,提交的号码、设备名称等信息。设备在具体时间访问的URL

20261020075102210-381a5379aa198cab3dea041c83274b1a

20261020075131866-c188fa9580379c04886fad6e594c7c94

脚本下载

三、实验完整流程:连上 WiFi,就落入钓鱼页面

整套攻击无需在受害者设备安装任何 APP,只要连接开放热点即可触发。

  1. 用户连接名为Free-WiFi的无密码开放热点;
  2. dnsmasq 分配内网 IP,网关设置为192.168.66.1,DNS 指向热点本机;
  3. 手机自动发起联网检测(captive portal 检测),DNS 请求被劫持,解析到热点网关;
  4. iptables 配置 DNAT 规则,将所有 80 端口 HTTP 请求强制跳转至钓鱼认证页面;
  5. 页面提示需要输入手机号完成认证,才能访问互联网;
  6. 用户提交手机号后,后端 PHP 程序将手机号、设备 UA、设备型号、IP 存入数据库;
  7. 脚本将该设备 IP 加入放行列表,设备正式访问外网;
  8. 全程后台持续记录 DNS 访问记录,tcpdump 持续抓包保存 pcap 数据包文件,脚本可自动从数据包提取明文 QQ 号。

实验内置 Web 后台,访问http://192.168.66.1,输入账号密码登录,就能查看所有接入设备:用户提交的手机号、设备型号、接入时间、历史访问域名、流量记录。 仅仅一次简单的 WiFi 连接 + 网页认证,攻击者就拿到手机号,再结合 DNS 访问记录,就能绘制出使用者的数字画像:使用者什么时间上网、访问了哪些网站,再配合抓包获取的明文标识,用于社会工程学攻击。

四、部署踩坑:安卓 NetHunter 环境特有问题

在手机 NetHunter 环境部署,和电脑 Kali 有巨大区别,也是实验中最容易失败的地方:

  1. 没有 systemd,无法使用 systemctl,mariadb、apache 需要手动启动;
  2. Android 策略路由独立,默认路由不在 main 路由表,每次重新连接上游 WiFi,路由表编号都会改变,必须手动添加 ip rule 规则,否则客户端连上 WiFi 但无法上网;
  3. chroot 容器内的 iptables 部分规则会报错,FORWARD 转发规则必须在 Android 原生 su 终端执行;
  4. MariaDB 默认 InnoDB AIO 在手机内核不支持,需要修改配置关闭innodb_use_native_aio=0;
  5. OTG 网卡容易因为供电不足掉线,手机省电策略会关闭外设,需要提前关闭电池优化。
故障现象 排查方案
成功连接热点,但无网络 上游 WiFi 变更,策略路由表号改变,重新执行 ip rule 路由脚本
无法添加 FORWARD 转发规则 切换到 Android 原生 shell,使用系统自带 iptables
Apache 服务启动失败 放弃 systemctl,直接使用 apache2ctl 启动,确认 80 端口监听
MariaDB 数据库无法启动 修改配置关闭 InnoDB 原生 AIO
网卡频繁掉线 使用带供电 OTG Hub,关闭手机省电、后台限制

五、普通人防护指南,避开开放 WiFi 陷阱

看懂这套实验,就能明白公共免费 WiFi 的风险,日常上网记住这几条防护原则:

  1. 陌生开放 WiFi 尽量不要连接,尤其是名字简单的 Free-WiFi、免费 WiFi;
  2. 迫不得已使用公共 WiFi,不要在网页弹窗认证页输入手机号、验证码、账号密码;
  3. 手机关闭「自动连接未知开放 WiFi」功能;
  4. 转账、登录账号、查看隐私信息等敏感操作,一律使用手机流量;
  5. 公共 WiFi 环境,可使用可信 VPN 加密全部流量,降低嗅探风险;
  6. 遇到 WiFi 强制跳转网页要求填写隐私信息,立刻断开连接。

六、最后的思考:技术有边界,法律有红线

这套攻击方案的可怕之处,在于门槛极低。不需要专业机房、昂贵设备,一台 root 安卓手机加几十元外置网卡,就可以部署钓鱼热点。它不会直接破解 HTTPS 加密内容,但是依靠钓鱼页面收集手机号、记录上网元数据,就可以开展社工、精准骚扰。

技术本身可以作为网络安全学习、授权渗透测试的工具,但一旦脱离授权环境,私自搭建热点捕获他人流量、收集手机号、抓取数据包,就触犯《网络安全法》、《个人信息保护法》,情节严重会触及刑法,承担刑事责任。

网络安全的本质,是信任。公共开放 WiFi,本质是让你把流量交给一个完全陌生的网关。学会看懂这类攻击原理,不是学习攻击手段,而是理解网络风险,保护自己的个人信息,不落入这类口袋流量陷阱。

© 版权声明
THE END
喜欢就支持一下吧
点赞7赞赏 分享
评论 共1条

请登录后发表评论

    暂无评论内容