BADUSB攻击之绕过UAC - APT防御产品

BADUSB攻击之绕过UAC


    从2014年的Black Hat大会之后,全世界的安全专家以及安全爱好者们都认识到了一种新的攻击方式“BadUSB攻击”。这种新型的攻击方式以USB设备作为攻击载体,能伪造成任何一种USB设备如鼠标、键盘、U盘等常见的设备,当受害者接入了被植入恶意代码的USB设备之后计算机会自动去读取并执行攻击者事先在USB设备固件中的代码去执行,从而导致受害者的计算机就此沦陷。乍看之下与几年前的autorun.inf攻击有几分相似之处,但事实上并非如此。攻击者设定好的代码部分是存储在USB的固件区域,这一个区域用户是没办法访问到,而杀毒软件也是无法进行查杀的。并且这一攻方式不受到平台的限制,无论是Windows、Linux、MacOS、Android都能被这个邪恶的USB设备轻易的攻破,并且目前为止还没有能有效防止这一攻击方式的解决办法。

目前绝大部分的计算机外设都是USB方式与计算机交互的,这些计算机外设大约占到了所有计算机外设的95%。在还没有公布攻击方式之前这些外设基本都是安全的。但是到了2014年的Black Hat大会之后这些外设就开始危险起来,任何一个USB设备都有可能会成为攻击受害者计算机的帮凶。而在研究者公布了这些利用方法以及利用代码之后很多安全专家也都开始研究这一设备,目前的BadUSB主要有两种攻击方式。第一种是目前研究利用得最广泛的就是键盘模拟攻击,当用户接入USB设备之后BabUSB设备就会模拟成键盘,对系统输入攻击者事先设定好的恶意代码,当计算机执行恶意代码之后就会沦为攻击者的“肉鸡”。第二种攻击方式是网卡欺骗攻击,当受害者接入USB设备之后BadUSB就会模拟成机器的网卡,回复DHCP查询,包含有DNS服务器地址,但没有默认网管,网络流量仍然通过正常的WIFI连接,但是所有DNS查询都会发送到USB指定的服务器,导致从定向攻击。

现在跟我一样在研究BadUSB攻击的普通爱好者也越来越多,而攻击工具越来越容易购买,只需要一个非常廉价的Teensy开发板就能开始实现BadUSB的攻击。目前在研究中用得最多的攻击方式就是刚才提到的第一种,这种攻击方式较为简单只需要设定好计算机键盘需要什么操作然后通过代码实现写入Teensy固件中,当插入计算机的时候就能按照我们事先设定好的方式执行命令,下面是一个简单的攻击例子。

图片1.png 

以上是一个简单的BadUSB攻击实例的代码。其实这个很容易看出来做了什么操作。首先是按下Win+R调出系统的“运行”窗口,然后输入cmd.exe、删除DownExec.vbs文件、写入一个新的DownExec.vbs、然后执行。其实这就是一个简单的利用BadUSB来下载运行程序的简单攻击方式,下图是运行的结果。

图片2.png 

除了键盘操作写入一个下载者之外还有其他办法也能达到控制受害者计算机的目的,下面就是一个比较好的代码实例,摘自RadioWar,大概功能就是写入一个Bat,读取指定标签的盘符,然后复制文件利用mshta来隐藏执行Bat。

图片3.png 

以上两个方式都是较为实用的BadUSB攻击实例,在测试机上使用的时候并未发现问题。但是一投入实际环境的时候问题马上就显现出来了,在Vista之后UAC会默认开启。当需要执行某些需要权限的应用程序以及复制文件到一些目录的时候都会弹出提示失败或者是确认对话框。如果有一个管理员权限的Cmd窗口那么一切问题都可以解决了,比如停止Defender等操作。但是如何才能打开那么一个有管理员权限的Cmd窗口呢?一般较为方便操作的就是对着应用程序单机鼠标右键,出来一个“以管理员权限运行”的标志,并且弹出确认窗口点击是才完成这一系列操作,如图片6.png

只用键盘来打开具有管理员权限的Cmd窗口之前确实没有研究过,都是通过鼠标的方式来完成,刚开始还是查到一些相关的方式方法,比如说利用powershell来提升权限,后面经过测试发现没成功于是就放弃了。后来又查到另一个方法,说是用创建任务计划来实现权限提升,但是经过测试也是不现实的,没戏。后面经过一番资料查阅以及实践过后发现了确实有个方法可以只用键盘操作的方式打开一个管理员权限的Cmd窗口(Win7、Win8下测试通过)。方法是先按下Win键会弹出开始菜单界面,然后直接输入Cmd.exe,开始界面会自动搜寻出系统的Cmd应用程序,这时候使同时按下 CTRL + SHIFT + ENTER 就会弹出UAC的确认界面,然后再用 ALT + Y 就能打开一个具有管理员权限的Cmd窗口。测试通过之后转换为代码写入Teensy就行了,可是如何才能同时发送CTRL + SHIFT + ENTER 呢,百度了很久都没发现实现的代码。最后是通过Google在老外的网站找到了类似的代码,以及相应键盘的对照表。下面是实现代码以及最终效果图。

图片7.png 

此代码在Win8下测试通过,有时候机器慢的需要调整一下等待时间,机器快的delay在500这样就可以了。不过在测试的时候也还发现一个令我疑惑不解的问题。理论上来说模拟键盘的操作在Win7、Win8下都能弹出管理员权限的Cmd,但是实际情况却是在Win7下无法正常弹出UAC的确认对话框,不知道问题出在何处。如果你知道原因或有更好的代码并不吝赐教的话可以发送邮件 Security@DongXunTech.Com 与我联系。

作者:东巽小黄龙



转载请注明出处 APT防御产品 » BADUSB攻击之绕过UAC

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友评论(1)

  1. 沙发#

    Win7加一段强制促发UAC就可以了,我有代码

    Flyfishsec 2015-07-24 23:37 回复