基于Wi-Fi的HID注射器,利用WHID攻击实验

WHID 代表基于 Wi-Fi 的 HID 注射器,即对 HID 攻击进行无线化攻击的一种注入工具。 

实验攻击原理如下图:

实验攻击原理 

攻击者使用ESP8266作为AP,在自己的电脑创建客户端连接AP。在客户端键入命令发送到ESP8266,它再利用串口转发给Arduino Leonardo。利用Arduino中的Keyboard库就可以使用传输的命令控制目标主机的键盘。 

前期准备

1. 硬件设备

Arduino Leonardo

Arduino Leonardo

ESP8266 Wi-Fi模块

ESP8266 Wi-Fi模块

FT282串口调试模块

FT282串口调试模块

2. 软件环境

sockettool

Arduino IDE

串口调试助手

TCP调试助手

实验步骤

1.ESP8266设置

使用串口连接ESP8266,依次键入命令:

AT+CWMODE=3 //设置模式为AP兼Station模式;

AT+CWMODE=3 //设置模式为AP兼Station模式

AT+RST //模式改变需重启后生效;

AT+RST //模式改变需重启后生效

AT+CWSAP=”name”,”password”,11,2 //创建一个名为name,密码为password的AP节点;

创建一个名为name,密码为password的AP节点

AT+UART=9600,8,1,0,0 //设置波特率为9600,Arduino和ESP8266波特率需相同;

ESP8266设置

AT+CIPSERVER=1,8089 //将esp8266设置为server模式,这样才能够在下面被访问;

ESP8266设置

2. 代码烧录

将写好的代码烧录进Arduino Leonardo,这里选择了主要部分说明:

将写好的代码烧录进Arduino Leonardo

在loop中循环读取ESP8266向串口发送的数据,判断收到数据时过滤并利用Keyboard库打印在Arduino接入的电脑上。

3. 硬件接线

设置好ESP8266和Arduino之后就可以进行硬件接线了,接线原理图如下:

接线原理

实际接线图如下: 

实际接线图

4. 客户端操作

①连接到之前创建的网络name。

②打开sockettool.exe,点击左侧 “TCP Client” 后点击“创建”来创建客户端:

创建客户端

③ 输入IP:“192.168.4.1”,端口号:“8089”: 

输入IP:“192.168.4.1”,端口号:“8089”

④ 点击“连接”,如果连接成功可以看到“已连接”字样: 

连接成功

 

实验演示

确保在已连接状态下,发送两次“123”: 

实验演示

可以在目标主机看到键入的结果: 

实验演示

实验总结

这里实现的功能只是简单地将输入的字符显示在目标机器上,危害性并不强。但是如果结合之前做过的BadUSB实验(http://www.freebuf.com/news/141833.html?preview=true),则可以远程执行命令,例如通过PowerShell远程下载文件等等,这将会对目标主机造成难以预料的影响。 

实验总结

因为是研究性质所以没有继续深入挖掘WHID的应用,而且也意识到使用Wi-Fi有一定的局限性,可以设想采用蓝牙或2.4G传输的方式提高传输的稳定性或是传输距离等,相信对HID的攻击绝不止于此。

和BadUSB类似,WHID可以模仿键盘、鼠标操作,所以常规的安全软件、杀毒软件不能起作用。显然不让任何不受信任的硬件连接自己的电脑是最安全的选择。

posted @ 2017-08-08 09:10  h2z  阅读(733)  评论(0编辑  收藏  举报