HID攻击进阶——WHID injector

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HID攻击进阶——WHID injector相关的知识,希望对你有一定的参考价值。

技术分享图片

前言

  HID是Human Interface Device的缩写,意思是人机接口设备。它是对鼠标、键盘、游戏手柄这一类可以操控电脑设备的统称。延伸出的WHID代表基于Wi-Fi的HID注射器,即对HID攻击进行无线化攻击时的一种注入工具。
本次实验采用的攻击原理如下图:技术分享图片
  攻击者使用ESP8266作为AP,在自己的电脑创建客户端连接AP。在客户端键入命令发送到ESP8266,它再转发给Arduino Leonardo。利用Arduino中的Keyboard库就可以使用传输的命令控制目标主机的键盘。

 

一、 前期准备

1) 硬件设备:

1. Arduino Leonardo

技术分享图片

2. ESP8266 Wi-Fi模块

技术分享图片

  1. 稳压器

    2) 软件环境:

  2. sockettool(在工具集中):
    用于连接ESP8266:在电脑上运行软件创建客户端,与ESP8266创建的AP之间进行通讯。
  3. Arduino IDE:
    编写程序烧录进Arduino Leonardo。实验用版本为1.8.3.
  4. 串口调试助手(在工具集中):
    调试程序所需。

 

二、 实验步骤

1) ESP8266设置

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

  1. AT+CWMODE=3 //设置模式为AP兼Station模式
  2. AT+RST //模式改变需重启后生效
  3. AT+CWSAP=”name”,”password”,11,2 //创建一个名为name,密码为password的AP节点
  4. AT+UART=9600,8,1,0,0 //设置波特率为9600,Arduino和ESP8266波特率需相同

    2) 代码烧录

      在接线之前需要将代码烧录进Arduino Leonardo,直接将代码复制进工程,连接Arduino在IDE界面点击“上传”。详细代码见附录,这里分析关键部分。

    • 初始化ESP8266:
      技术分享图片
      上述代码在setup中执行,在每次Arduino连接电源后对ESP8266进行设置。
      代码中“AT+RST”为重启,“AT+CIPMUX=1”设置为多路连接,“AT+CIPSERVER=1,8089”创建服务器并设置端口。
    • 读取显示数据:
      技术分享图片
      在loop中循环读取ESP8266向串口发送的数据并打印在Arduino接入的电脑上。需要注意的是Serial1.readStringUntil(‘:’)这句话,因为使用ESP8266传输的数据格式为:“+IPD,0,3:123”,其中123为你输入的字符,所以使用这句话可以过滤“:”及其之前的字符。
      很重要的一点是:如果不使用Until,当第一个字节为符号时Arduino不能输出,这时第一个字节是加号,所以在电脑上看不到任何输出。

 

3) 硬件接线

设置好ESP8266和Arduino之后就可以进行硬件接线了,接线原理图如下:
技术分享图片
其中Arduino和ESP8266务必共地,否则容易出现乱码的现象,这可以使用稳压器实现。实际接线图如下:
技术分享图片
 

4) 客户端操作

1.  连接到之前创建的网络name。
2.  打开sockettool.exe,点击左侧“TCP Client”后点击“创建”来创建客户端:

技术分享图片

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

技术分享图片

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

技术分享图片

 

三、 实验演示

确保在已连接状态下,发送两次“123”:
 
技术分享图片
 
可以在目标主机看到键入的结果:
 
技术分享图片

以上是关于HID攻击进阶——WHID injector的主要内容,如果未能解决你的问题,请参考以下文章

利用WHID为隔离主机建立隐秘通道

针对Mac的DuckHunter攻击演示

BadUSB攻击

基于ArduinoLeonardo板子的BadUSB攻击实战

我的Android进阶之旅Android Studio 中 使用git提交代码报错:Can‘t commit changes from multiple changelists at once(代码片

Istio 服务网格进阶实战