博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HID攻击进阶——WHID injector
阅读量:4043 次
发布时间:2019-05-24

本文共 1404 字,大约阅读时间需要 4 分钟。

前言

HID是HumanInterface Device的缩写,意思是人机接口设备。它是对鼠标、键盘、游戏手柄这一类可以操控电脑设备的统称。延伸出的WHID代表基于Wi-Fi的HID注射器,即对HID攻击进行无线化攻击时的一种注入工具。

本次实验采用的攻击原理如下图:

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

一、前期准备

1) 硬件设备:

1. Arduino Leonardo

2. ESP8266 Wi-Fi模块

3. 稳压器

2) 软件环境:

1. sockettool(在工具集中):

用于连接ESP8266:在电脑上运行软件创建客户端,与ESP8266创建的AP之间进行通讯。

2. Arduino IDE:

编写程序烧录进Arduino Leonardo。实验用版本为1.8.3.

3. 串口调试助手(在工具集中):

调试程序所需。

二、实验步骤

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,点击左侧“TCPClient”后点击“创建”来创建客户端:

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

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

三、实验演示

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

 

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

你可能感兴趣的文章
android中对于非属性动画的整理
查看>>
一个简单的TabLayout的使用
查看>>
ReactNative使用Redux例子
查看>>
Promise的基本使用
查看>>
coursesa课程 Python 3 programming 统计文件有多少单词
查看>>
coursesa课程 Python 3 programming 输出每一行句子的第三个单词
查看>>
Returning a value from a function
查看>>
coursesa课程 Python 3 programming Functions can call other functions 函数调用另一个函数
查看>>
coursesa课程 Python 3 programming The while Statement
查看>>
course_2_assessment_6
查看>>
coursesa课程 Python 3 programming course_2_assessment_7 多参数函数练习题
查看>>
coursesa课程 Python 3 programming course_2_assessment_8 sorted练习题
查看>>
在unity中建立最小的shader(Minimal Shader)
查看>>
1.3 Debugging of Shaders (调试着色器)
查看>>
关于phpcms中模块_tag.class.php中的pc_tag()方法的含义
查看>>
vsftp 配置具有匿名登录也有系统用户登录,系统用户有管理权限,匿名只有下载权限。
查看>>
linux安装usb wifi接收器
查看>>
多线程使用随机函数需要注意的一点
查看>>
getpeername,getsockname
查看>>
让我做你的下一行Code
查看>>