返回

用你的 Raspberry Pi 取代 WiFi Pineapple

完整教程:用大约三分之一的价格,把一台 Raspberry Pi 打造成与 WiFi Pineapple Pager 相同的无线军火库——硬件、命令和脚本一应俱全。

注意仅限你自己的网络或获得书面授权后使用

仅在你自己的网络隔离的实验环境获得书面授权的渗透测试中使用。

第二部分:从评测到实机搭建

WiFi Pineapple Pager 评测中,我们得出了一个对这台约 300 欧元的设备来说颇为尴尬的结论:它做的几乎所有事情——recon、Evil Twin、抓取 handshake、captive portal——都不过是跑在 Linux 上的软件。所以在这第二部分,我们不再停留在理论,而是自己动手搭建:一台 Raspberry Pi,用三分之一的价格做到同样的事——在好几个方面甚至更强。

我们要做什么,以及为什么

做什么:把一台 Raspberry Pi + 一块支持 injection 的 WiFi 网卡 + 一个移动电源,变成与 Pager 等效的便携装备,拥有同样的无线军火库。

为什么:因为它底层就是 Linux,跑的是完全相同的那套工具(aircrack-ng、bettercap、hostapd、hcxdumptool……)。事实上,Pager 上几乎所有像样的 payload 都是 bash 或 python 写的:直接拷到 Pi 上照样跑。而且,掌握了整个系统的完全控制权,你可以无限扩展它,并在本地破解密码,无需依赖云端。

回顾:Pi 对比 Pineapple Pager

我们在评测里逐项能力做了拆解;这里是开工前的快速总结:

能力Raspberry PiPineapple Pager
抓取 handshake✓ aircrack-ng
Evil Twin / Rogue AP✓ hostapd + dnsmasq✓ PineAP
WPA-Enterprise(evil twin)✓ eaphammer有限支持
MITM / sniffing✓ bettercap基础功能
强制门户 / 钓鱼✓ wifiphisher、caplets✓ 模块
本地密码破解✓ 本地 CPU/GPU✗ 依赖云端
图形桌面 + VNC✓ Wireshark、浏览器✗ 仅 web UI
20 公里外远程控制(CGNAT)✓ 原生 Tailscale需额外 payload
可用任意工具扩展✓ 完整 Linux封闭生态
大致成本约 160 欧元约 300 欧元

话说回来,我们也要诚实地承认 Pager 有些地方做得更好、而且便宜方案很难匹敌:集成的 Bluetooth/BLE(无需额外网卡)、6 GHz,以及多台 Pager 即插即用组成的蜂群。如果你的工作离不开 BLE,Pager 自有它的用武之地。至于其它一切,Pi 在灵活性和价格上都胜出。

你需要准备什么(硬件)

  • Raspberry Pi 4(4 GB)Pi 5(8 GB,理想选择)——大脑。同一个镜像两者通用。
  • 支持 monitor mode + injection 的 USB WiFi 网卡——关键部件。推荐 Alfa AWUS036ACH(RTL8812AU);低功耗、无需 hub 可直连的替代品:AWUS036NHA / AR9271(驱动已内置在内核里)。避开 WN722N v2/v3(不打补丁无法 injection)。
  • 带外接供电的 USB hub——搭配 AWUS036ACH 时必备(见下方提示)。
  • USB microSD 读卡器——用于从没有 SD 卡槽的笔记本上刷写。
  • USB-C PD 移动电源——让它像 Pager 一样便携。Pi 4 需要 5 V/3 A,Pi 5 需要 5 V/5 A
  • microSD,至少 32 GB(A1/A2 级别);用于存工具、字典和抓包,64 GB 更好。
  • 可选:3.5"/5" 触摸屏,以及带风扇的外壳(Pi 5 会很受用)。
重要会损坏 microSD 的 brownout

把 Alfa AWUS036ACH 直连到 Pi 上做 injection 时会让它变得不稳定(SSH 断连、延迟飙升),甚至可能直接把 Pi 拖垮。如果这发生在正在写入的时候,突然掉电会悄无声息地损坏 microSD。这是吃过亏才学到的。解决办法:用带外接供电的 USB hub 给 Alfa 供电,或者改用低功耗网卡(AR9271)。在 Pi 5 上,如果只用 5 V/3 A 的电源,固件会把 USB 口限流到 600 mA,让问题雪上加霜;用 vcgencmd get_throttled 检查状态(任何 ≠ 0x0 的值都表示 undervoltage)。

军火库

这就是用来复刻 Pineapple 的部分。用第 3 步的脚本一条命令就能全部装好,不过先让你看看我们说的是些什么:

  • hostapd + dnsmasq → Evil Twin / Rogue AP(这就是 PineAP)。
  • aircrack-ng → 抓取并破解 handshake。
  • wifite → 自动化的 WPA/WPS 攻击。
  • bettercap → MITM、侦察与 caplets(强制门户)。
  • kismet → 网络与客户端的探测器/嗅探器。
  • hcxdumptool → 无需客户端即可抓取 PMKID。
  • mdk4 → deauth、beacon flood、压力测试。
  • reaver / bully → WPS 攻击。

而这里正是 Pi 领先的地方,都是 Pager 不带的东西:eaphammer(WPA-Enterprise 的 Evil Twin)、airgeddon(一体化套件)、wifiphisher(强制门户/钓鱼)、带图形桌面的 Wireshark,以及用来本地破解、不必依赖云端的 rockyou 字典。

提示Kali ARM 并没有全都带上

就算你用 Kali,也不会自带完整的军火库:在实际测试中缺了 hostapd、mdk4、hcxdumptool 和 bettercap。脚本里的 wifi-tools 模块会把它们补齐,直到 12 个二进制全部就绪。

第 1 步 · 准备并刷写 Pi

第一个脚本把所有脏活累活都干了:下载镜像(默认 Kali ARM),校验 SHA-256,解压,预置自动联网(让 Pi 自己连上你的 WiFi 并用密钥做 SSH),自动识别 microSD 并在双重确认下写入。它甚至会自动识别你的 WiFi 并从笔记本上取回密码,所以大多数字段你直接按 Enter 就行。

chmod +x 1-instalar.sh
./1-instalar.sh

脚本在需要时(挂载镜像和写盘)会内部提升到 sudo。执行 dd 之前会要求两次确认:先键入列表里磁盘对应的编号,然后用大写输入 CONFIRMAR。结束时会重新读取卡片并比对 SHA-256:如果不一致就中止并提示 microSD 已损坏(这能在你白白浪费一小时之前,抓出被 brownout 弄坏的卡)。

下载第 1 步的脚本

1-instalar.sh —— 一体化安装器(下载 + 校验 + 预置 + 写盘)。约 625 行 bash,没有奇怪的依赖。

⬇ 下载 1-instalar.sh

第 2 步 · 在你的网络里揪出这台 Pi

Pi 开机后自己连上你的 WiFi,并通过 mDNS 广播自己。第二个脚本在你不知道它 IP 的情况下,从笔记本上把它揪出来:

./2-cazar.sh                 # 找到 Pi 并打开 SSH 会话
./2-cazar.sh --run remote    # 找到并直接运行某个模块

它先尝试 mDNS 约 1 分钟;如果你的路由器过滤了客户端之间的 multicast(很常见),就退而做全网段扫描,优先匹配 Raspberry Pi 的 MAC(arp-scan/nmap)并测试 SSH 密钥。你的笔记本上需要装 avahi-utils 并启动其守护进程:

sudo apt install -y avahi-utils
sudo systemctl start avahi-daemon
下载第 2 步的脚本

2-cazar.sh —— 定位 Pi(mDNS + 扫描),通过 scp 拷贝军火库并打开 SSH。

⬇ 下载 2-cazar.sh

第 3 步 · 搭建军火库

在 Pi 上开好会话后,第三个脚本按模块安装并配置一切。它始终用 sudo 运行:

sudo ./pineapple-killer.sh            # 交互式菜单
sudo ./pineapple-killer.sh all        # 依次运行所有模块
sudo ./pineapple-killer.sh wifi-tools # 只运行一个模块
模块作用
info识别 Pi 型号、RAM、内核和 USB 网卡;对供电/brownout 发出提醒。
update更新系统并安装基础工具。
wifi-tools安装用来替代 Pineapple 的军火库。
extra-tools克隆 eaphammer、airgeddon 和 wifiphisher(Pager 没有的东西)。
ssh安装并启用 SSH。
vnc启用远程桌面(RealVNC/TigerVNC)。
remoteTailscale + 加固过的 SSH + watchdog(20 公里外控制)。
monitor把第 2 块网卡切到 monitor mode 而不拖垮 uplink。
rogue-ap生成 Evil Twin 的模板(= PineAP)。
verify检查 12 个二进制并打印 Pi 对 Pager 的对比表。

第 4 步 · 20 公里外远程控制(可选)

这里 Pi 做到了一件 Pager 只有靠额外 payload 才能实现的事:即便它躲在 CGNAT 后面,也能从任何地方控制它,而且不用开放端口。remote 模块装好 Tailscale(WireGuard),加固 SSH,并留一个防锁死的 watchdog,免得你把自己关在门外:

sudo ./pineapple-killer.sh remote
# 无人值守,使用 Tailscale 密钥:
TS_AUTHKEY=tskey-auth-xxxx sudo -E ./pineapple-killer.sh remote

从手机上(走移动数据):ssh kali@pi-pineapple,VNC 在 pi-pineapple:5901,或门户在 http://pi-pineapple:<puerto>

快速演示

侦察(与 Pager 打平):

sudo airmon-ng start wlan1
sudo airodump-ng wlan1mon

Evil Twin / Rogue AP(= PineAP):rogue-ap 模块会留下一个现成的 start-ap.sh。把 "FreeWiFi_Lab" 这个网络拉起来:

cd /opt/wifi-tools/rogue-ap
sudo ./start-ap.sh

本地破解(这里 Pi 胜出,不依赖云端):

sudo gunzip -k /usr/share/wordlists/rockyou.txt.gz
aircrack-ng -w /usr/share/wordlists/rockyou.txt captura-01.cap

如果出了问题

  • Pi 没出现:八成是路由器在客户端之间过滤了 mDNS。在你的实验网络里关掉 "AP client isolation",或者让 2-cazar.sh 去做全网段扫描。
  • Kali 在首次开机时会改掉 hostname 和密码,而且默认关闭 SSH。第 1 步的预置已经把这些搞定了(它们会在 firstboot 时应用)。
  • 没有国家码就没有 5 GHz:芯片启动时处于全球域 00,会屏蔽掉大部分 5 GHz。启动参数里预置了 cfg80211.ieee80211_regdom=ES
  • Pi 的内置 WiFi 不能用于 monitor mode/injection:所以那块 USB 网卡是必不可少的。
  • dd 的黄金法则:永远指向整块磁盘(/dev/sdb),绝不要指向某个分区(/dev/sdb1)。脚本会保护你的系统盘,并要求双重确认。

有用的链接


这是我这个系列的一部分——用一台 Raspberry Pi 搭建你自己的 "Pineapple"。完整组装过程的视频正在路上,会发布在我的 YouTube 频道