综述
Pwnagotchi 是一个由 Bettercap 驱动的 A2C 的“AI”,它能够从周围的 WiFi 环境中学习,以最大限度地利用它捕获的可破解 WPA 密钥材料 (通过被动嗅探或执行解除身份验证和关联攻击)。该材料作为可被 hashcat 破解的 PCAP 文件收集在磁盘上,包括完整和半 WPA 握手以及 PMKID。
简单来说,就是一个能够帮助你捕获附近破解WiFi需要的握手包的工具。它的亮点在于采用了不同的情绪和性格来表示程序当前的状态,会在嗅探握手包时东张西望,会因为没有收到新鲜的握手包而感到无聊,会因为交到新朋友而感到开心,当然了,偶尔也会摸摸鱼......就好像养了一只电子宠物一样。
安装
硬件要求
先按官网要求买一波设备,必备的是带WiFi功能的树莓派主板、8G以上空间的MicroSD卡和一根Micro-USB数据线(不是Type-C),其他的可按需购买。
下面是我选用的硬件配置:
硬件要求 | 实际配置 | 价格 | 备注 |
---|---|---|---|
带WiFi功能的树莓派主板 | 树莓派Zero W带排针 | 250 | 带排针后面可以直接接插脚 |
MicroSD卡8G+ | 闪迪32GB A1 | 27.9 | |
Micro-USB数据线 | 家里原有的一根不知名数据线 | 0 | |
电源 | UPS-Lite V1.2 | 95 | 这个型号支持电源显示 |
I2C时钟 | DS1307ZN+/SOIC-8 | 5.3 | 用于同步时间 |
屏幕 | 微雪2.13英寸电子墨水屏V3 | 118 | V3官方还没支持,要改源文件 |
合计 | - | 496.2 |
Step1-刷入系统
- 下载最新的Pwnagotchi .img文件,解压并验证 .img 的 SHA-256 校验和。
- SD卡插入读卡器连接电脑。
- 使用SD卡刷入工具刷入系统。
不会操作的话,请看MicroSD卡输入系统教程。
完成这一步就可以插入树莓派开机了,但这之前还有可选的一步初始配置,同样可以在读卡器上进行操作,所以别急着拔卡。当然,这些配置以后也是可以修改的。
Step2-初始配置(可选)
通过读卡器在SD卡的boot
分区根目录下创建一个新的 config.toml
的文件。该分区是一个简单的 FAT32,所以基本上所有操作系统都能正常访问。
在此过程中,你可以定义设备名称、要列入白名单的网络以及使用的显示器类型。 以下是带有 Waveshare V2 显示器的设备的示例配置:
main.name = "pwnagotchi" # 给它起一个名字
main.lang = "en" # 语言,暂不支持中文
main.whitelist = [ # 白名单设置,防止它攻击家庭网络,值是WiFi名称或MAC地址
"EXAMPLE_NETWORK",
"ANOTHER_EXAMPLE_NETWORK",
"fo:od:ba:be:fo:od",
"fo:od:ba"
]
main.plugins.grid.enabled = true # PwnGrid社区选项,类似Pokémon Go,有记分排名,发生一些简单统计数据
main.plugins.grid.report = true # 完全加入选项,会向 PwnGrid API 发送一些网络的基本信息
main.plugins.grid.exclude = [ # 类似上面白名单,防止报告家庭网络数据
"YourHomeNetworkHere"
]
ui.display.enabled = true # 显示屏设置
ui.display.type = "waveshare_2" # 微雪v2屏幕,也可以设置其他
ui.display.color = "black" # 黑色显示,也支持彩色
这个文件会自动安装到 /etc/pwnagotchi/config.toml
(它会在启动过程中将其从 SD 卡中 移除 ) 。
第一次开机后,可以打开 /etc/pwnagotchi/config.toml
文件(通过 SSH 或通过带有读卡器的计算机直接编辑 SD 卡的内容)以使用自定义值覆盖默认配置。
更具体的一些配置教程,后面会考虑出。
Step3-USB连接电脑
将MicroSD卡插入树莓派,不会的话看下图。
然后使用Micro-USB数据线将数据传输接口连接到电脑,见下图向右数第二个口。
此时查看指示灯,绿灯闪烁或常亮为正常,闪烁说明是在正常读取内存卡内容。如果是第一次启动,可能要多等几分钟,请不要打断它,因为它正在生成RSA密匙。
Windows系统
进入控制面板\网络和 Internet\网络连接
查看,此时正常来说会出现一个新的RNDIS网络,如下图。
没出现这个网络,有可能是你电脑上没有这个驱动,请参考这篇文章进行排查:Windows安装RNDIS驱动教程
请右键唤出菜单,依次点击属性
>Internet 协议版本 4 (TCP/IPv4)
,将它配置成如下静态IP地址:
- IP:
10.0.0.1
- 掩码:
255.255.255.0
- 网关:
10.0.0.1
- DNS(如果需要的话):
8.8.8.8
(或者别的)
![属性对话框](https://static-cdn.p0ise.cn/local/屏幕截图 2022-07-29 192140.png)
然后尝试ping 10.0.0.2
,如果通的话接下来就可以访问Web接口或者通过SSH连接了。
Web接口
浏览器打开10.0.0.2:8080
或你之前配置的名称.local:8080
,这是会弹出验证对话框,用户名密码都是changeme
,然后就进入Web UI界面了。
主页会显示当前的一些状态信息,其他功能请根据官网介绍自行探索。
SSH连接
PowerShell下输入以下命令:
ssh pi@10.0.0.2 # 默认密码: raspberry
输入passwd
修改初始密码。
配置文件在/etc/pwnagotchi/config.toml
,可以根据需要修改。
共享网络
Pwnagotchi 的网卡默认用于监听网络,因此如果需要连接到网络,需要将PC的网络共享给它。
Step4-插件配置(可选)
使用插件
使用Web UI中的插件栏
通过Web UI的Plugins
栏可以直接完成一些插件的操作,启用/禁用、进入插件提供的接口界面。
使用命令行
pwnagotchi 提供了类似 apt 包管理的命令行接口,可以直接使用它完成插件配置,具体用法如下:
用法: pwnagotchi plugins [-h]
{search,list,update,upgrade,enable,disable,install,uninstall,edit}
...
位置参数:
{search,list,update,upgrade,enable,disable,install,uninstall,edit}
search 查找 pwnagotchi 插件
list 列出可用的 pwnagotchi 插件
update 更新插件数据库
upgrade 更新插件
enable 启用某个插件
disable 禁用某个插件
install 安装某个插件
uninstall 卸载某个插件
edit 更改插件选项
可选参数:
-h, --help 显示帮助选项并退出
插件介绍
默认插件
默认插件由 pwnagotchi
官方仓库维护,新版可用时会通过 auto-update
插件功能自动更新。
可以在这里看到它们的源文件:https://github.com/evilsocket/pwnagotchi/tree/master/pwnagotchi/plugins/default
有相关使用教程的插件名称会在表格中用超链接标示出来。
插件脚本 | 描述 |
---|---|
auto-update.py |
当网络连接可用时,自动执行更新命令apt update && apt upgrade 。 |
bt-tether.py |
使显示器可通过蓝牙访问。 |
gpio_buttons.py |
GPIO 按钮支持插件。 |
gps.py |
每当捕获握手包时保存 GPS 坐标。 |
grid.py |
向 api.pwnagotchi.ai 上的 PwnGRID 社区发送单元的加密身份和已加密网络列表(可选)。 |
led.py |
这个插件会根据事件以不同的模式闪烁 PWR led。 |
logtail |
可以通过浏览器查看日志文件。 |
memtemp.py |
添加内存和温度指示器。 |
net-pos.py |
每当捕获到握手时保存 WiFi 位置,并在下次互联网可用时检索地理位置。 |
onlinehashcrack.py |
自动将握手包上传到 onlinehashcrack.com 。 |
paw-gps.py |
每当捕获握手时保存 GPS 坐标。 GPS 数据是从 Android 上的 PAW 获取的。 |
session-stats.py |
以漂亮的小图显示当前会话统计信息。 |
switcher.py |
可以在一段时间内切换到一些非 pwnagotchi 活动。 |
ups_lite.py |
一个为 UPS Lite v1.1 添加电压指示器的插件。 |
webcfg.py |
使用此插件,您可以通过浏览器更改配置。 |
webgpsmap.py |
在地图上绘制捕获握手。 |
wigle.py |
自动将收集到的 WiFi 握手上传到 wigle.net 。 |
wpa-sec.py |
自动将握手上传到 wpa-sec.stanev.org 。 |
社区贡献的插件
这些是用户为 pwnagotchi 贡献的插件,其中一些还没有经过开发团队的完全测试, 使用它们需要自担风险。
这些插件被收录在 pwnagotchi-plugins-contrib 仓库中。
插件脚本 | 描述 |
---|---|
aircrackonly.py |
验证 pcap 是否包含足够用于破解的信息(握手包和PMKID) ,否则删除它。 |
auto_backup.py |
当互联网可用时备份文件。 |
buttonshim.py |
Pimoroni Button Shim GPIO Button 和 RGB LED 支持插件,基于 pimoroni-buttonshim-lib 和 pwnagotchi-gpio-buttons-plugin。 |
christmas.py |
pwnagotchi 的圣诞节倒数计时器。 |
clock.py |
pwnagotchi 的时钟/日历。 |
gpio_shutdown.py |
GPIO 关机插件。 |
handshakes-dl.py |
从 web-ui 下载握手捕获。 |
hashie.py |
尝试自动将 pcaps 转换为可破解的格式。 |
mostodon.py |
定期发布状态更新。 基于 evilsocket 的 twitter 插件。 |
quickdic.py |
针对捕获的握手运行快速字典扫描。 |
screen_refresh.py |
X 次更新后刷新电子墨水显示。 |
telegram.py |
定期向 Telegram 发送有关 pwnagotchi 近期活动的消息。 |
twitter.py |
创建有关 Pwnagotchi 最近活动的推文。 |
Step5-破解WiFi密码
本地破解
把捕获的握手包拷贝到电脑上,捕获的握手包放在 /root/handshakes/
上。
转换为 hash 格式。
然后使用 hashcat 进行破解。
这里讲的比较简略,需要的话可以另出教程。
在线破解
利用 onlinehashcrack 等提供 WPA 破解服务的网站进行在线破解。
可选步骤
安装屏幕
按照你买的屏幕安装教程进行安装,部分屏幕 Pwnagotchi 官方做了支持,只需要在config.toml
中ui.display.type
指定配置即可。
目前支持:
waveshare_2
: 微雪 ePaper HAT V2(官方支持和推荐)waveshare_1
:微雪 ePaper HAT V1waveshare27inch
:微雪2.7 英寸墨水屏 HATwaveshare154inch
:微雪1.54 英寸墨水屏模块 (B)inky
:Pimoroni\'s Inky pHATpapirus
: PaPiRus Zerooledhat
:Waveshare\'s OLED Hatdfrobot
:DFRobot 的 eInk Hat
另外,有人做了对微雪2.13寸显示器V3的支持,具体教程见Add support for Waveshare 2.13inch V3 Rev2.1。
屏幕刷新率可通过ui.fps
指定,默认为0。
以下是以 微雪 2.13寸 显示器 V2 为例的配置:
ui.display.type = "waveshare_2"
ui.display.color = "black"
安装电源
安装时钟
参考
[1] Pwnagotchi官网教程, https://pwnagotchi.ai/