教程:教你制作只属于自己的HID Key

2015-04-09 19:13 出处:其他 作者:freebuf 责任编辑:shengyongzhen

  0×00 介绍

  Arduino Leonardo不同于以前版本的Arduino控制器,它直接使用了板载ATmega32u4芯片的USB通讯功能,取消了以前版本自带的USB转UART芯片。这一举动,使得Leonardo在原有的作为虚拟的串行端口,还拥有了作为鼠标或者键盘连接到计算机的能力,大大的扩展了Arduino与计算机的交互性。

  HID是Human Interface Device的缩写。它是计算机上直接与人交互的设备,例如:键盘、鼠标等等。利用Leonardo上ATmega32u4芯片的USB通讯功能模拟HID设备,当你插入这个“特殊”的Arduino,计算机就会把它识别成一个键盘,利用这个Leonardo,就可以向计算机发送控制命令,从而控制对方的计算机。

  0×01 HID攻击测试场景

  小王是一名xx公司的职员,有一天早晨,小王去公司上班,在公司一个角落里发现了一个带着USB接口的黑色的小盒子静静的“躺在”那里。“设备部的人越来越粗心了,什么东西都乱扔。”小王捡起来,经常摆弄数码产品的他很快发现,这是一个HUB(USB接口扩展器),抱着浪费就是最大的犯罪这一理念,小王把它塞进了自己的兜里。

  完成了今天的任务指标,小王端着咖啡舒服的坐在电脑面前浏览网页。他突然想起了今天早上捡到的那个HUB还不知道是不是坏的,就把那个HUB掏出来,接到了电脑上。HUB上的指示灯很快的亮了起来,在它的几个扩展端口接入U盘进行测试,除了一个USB扩展接口坏了,其他的扩展口可以正常使用。小王心里一乐“就一个扩展口坏了,竟然就把这个HUB扔了,真是要默默感谢那个土豪”。

  过了几天后,xx公司的商业机密文件、企业客户名单泄漏,公司部分计算机遭到病毒的破坏……

  0×02 材料的选购

  ① Mini leonaedo*1   28¥
  ② 8P拨码开关*1       2¥
  ③ 10k电阻*10        2¥
  ④ 220Ω电阻*2        1¥
  ⑤ 微动开关*2        1¥
  ⑥ 5mm LED*2        1¥

  0×03 基础代码部分 

1

  这几行代码是让Leonardo输出a这个字母,间隔0.01s。

  Keyboard.press(97); 中的97是字母a所代表的ASCII值,后面会附上ASCII值的表格。

  【注:Keyboard.press(97); 与Keyboard.repress(97); 一起,构成了一次键盘按下并抬起的动作。后面的delay(10);建议加上,尤其是你不知道对方电脑处理速度如何,如果不加这个延时,Leonardo输入的速度太快吧,老式电脑有可能会反应不过来。】

2

  输入不同的字母、数字、特殊符号或者空格键就把Keyboard.press(97); 括号里面的97更改成其他ASCII值,后面的Keyboard.repress(97);括号里的也更改成相同的ASCII值就行了。

  接下来就到了快捷键的输入了,如何用Leonardo输入组合键呢?下面我们就来模拟这一个过程,首先把输入组合键的动作分成几个部分:按下Win徽标键不放,然后按下r键,这时候运行会弹出来,然后松开所有按键,利用Leonardo是很容易实现的,接下来我们看这一连串动作的代码实现部分。

  下面的代码是让Leonardo通过Win+r组合键来进入cmd命令提示符:

3

  大家可能注意到了,按下Win徽标键的代码后没有Keyboard.repress(KEY_LEFT_GUI);这一句来实现松开Win徽标键,正是这样我们才实现了组合键的功能,其他的组合键也是可以这样输入的。Keyboard.releaseAll(); 是松开所有的按键,适合放在组合键的结尾。

  Keyboard.repress(KEY_LEFT_GUI); 中的KEY_LEFT_GUI是代表特殊键【例如:Win徽标键、Ctrl键、Shift键、Alt键等】这些键在Arduino IDE有不同的表示,在Arduino IDE里面的USBAPI.h文件中有详细的定义。

4

  输入那个特殊键就可以根据表上进行更改了,例如Ctrl+c、Ctrl+v这些快捷键都可以实现。

  下面是利用Leonardo实现HID攻击的代码【自动打开cmd,添加ghost$用户并将其提升至管理员权限的代码】,重复代码太多我就不一一列举了,这篇文章只是让大家知道一下原理,我直接上传网盘链接了。

  http://pan.baidu.com/s/1mg3gSE8

  对于Arduino这款开发板功能只是这样未免太单调了,我们可以利用剩下的引脚加上远程执行HID的功能

  例如:

  GSM模块,433Mhz数据传输模块,蓝牙模块等等只是提供一个利用这块HID Key的思路。
  还可以给这块HID Key加入类似一键输入密码等功能等等。
  这是我用ArduinoBox设计的HID Key的电路图,有兴趣的可以做一下

5

  这是我焊好的洞洞板,利用不同的开关执行模拟键盘的输入【我的电脑输入密码全靠它啦】

6

7

  当然,如果考虑体积,可以直接连接一块mini leonardo板子也是可以的【我不会告诉你们mini leonardo的体积可以直接藏在HUB里面的】

  这篇文章只是简单介绍一下利用leonardo进行HID的方法及思路,具体实施需要看大家的发挥了,仅供安全研究之用。

网络设备论坛帖子排行

最高点击 最高回复 最新
最新资讯离线随时看 聊天吐槽赢奖品