APP下载

BadUSB的分析与侦查防范*

2020-03-28郭永帅王胜和满超安徽公安职业学院

警察技术 2020年2期
关键词:固件U盘计算机系统

郭永帅 王胜和 满超 安徽公安职业学院

引言

随着硬件技术的飞速发展,USB设备以其灵活性高、兼容性广深受人们的喜爱,USB接口是计算机系统上使用最多、最通用的接口,这也因此受到黑客们的关注,从早期的在USB设备根目录存放autorun.inf文件传播病毒,到HID攻击及现在的BadUSB,USB设备一直都是黑客们研究的重点对象。USB设备的低成本、低门槛已经使得HID攻击随处可见,不难预见BadUSB亦会飞速发展,所以对BadUSB的研究十分有必要。

一、BadUSB的发展

(一)USB自动运行攻击

在早期的互联网发展中,计算机之间的数据交换受限于网络带宽和存储介质容量,为了方便应用,在可移动存储介质(软盘、U盘等)中加入自动运行的功能,在可移动存储介质根目录下添加autorun.inf 和setup.exe文件,实现自动播放的功能。基于此,将正常的autorun.inf文件和setup.exe 的病毒文件存放在USB根目录,实现对计算机系统的入侵。2011年,微软发布补丁修复,阻断USB自动运行功能,而后USB自动运行攻击进化为USB伪装光盘自动运行入侵。制作方法是将USB量产伪装为CD-ROM光驱,将autorun.inf文件和病毒文件制作成ISO文件写入U盘,这即是BadUSB的雏形。

(二)USB HID攻击

随着信息技术的发展,自动播放功能逐渐退出历史舞台,可移动存储介质飞速发展,HID协议成为USB设备常用的协议,HID协议是一种计算机协议,约定了计算机在完成通讯过程时所要遵守的规则,HID协议使得设备之间无需安装驱动就能进行交互。USB HID(Human Interface Device,人机交互设备,如键盘、鼠标等)攻击即是将U盘模拟成鼠标或者键盘,并通过虚拟键盘输入集成到U盘固件中的指令和代码进行攻击,插入U盘后便有一个无形的键盘输入指令进行恶意操作。USB HID攻击最大的特点就是恶意代码隐藏在固件之中,且具有固定的设备,如Arduino、USB RUBBER DUCKY和Teensy USB。

(三)BadUSB攻击

在2014年美国黑帽大会上,BadUSB由安全研究人员JakobLell和Karsten Nohl提出,并展示了攻击方法,可以说现如今几乎所有USB设备都有成为BadUSB的风险。不同于HID攻击将恶意代码写入Tennsy或者Arduino leonardo U盘芯片,BadUSB则是通过利用USB协议的漏洞,对USB设备的固件反编译,改写USB设备的固件系统进行攻击,并不需要特别定制,只要是可编译的USB设备都有成为BadUSB 的可能,BadUSB与HID攻击特点的对比如图1所示。

二、BadUSB攻击原理

(一)USB设备内部结构

以U盘为例,U盘是由USB端口、主控芯片、FLASH(闪存芯片)、底板及外壳构成。其中主控芯片相当于U盘的大脑,负责管理部件和下达指令,与计算机交互,主控芯片实际上是一个低功耗计算机,它通过从内存芯片加载基本的引导程序来启动,类似于计算机系统的硬盘驱动器包含一个隐藏的主引导记录,如图2所示。

(二)BadUSB攻击原理

USB设备插入计算机系统之后,需要经过枚举过程才能与计算机进行通信,枚举过程即是向主机申请端口地址,发送设备描述符的过程。在这个过程中,USB设备的信息是由自己提供的,具有可变性。

USB设备漏洞原理:(1)由于USB设备枚举过程中,USB设备信息具有可变性,即存在USB设备具有多个输入输出的特征,并可以注销再次描述为其他的设备。(2)枚举过程中,有数据通信交换的过程,在USB协议中并没有校验过程,这会导致黑客可以随意的添加恶意数据来攻击计算机系统,如图3所示。

根据USB设备的漏洞原理,黑客将恶意代码添加至USB设备的固件之中,而安全防护软件对USB设备的正常通信没有任何防御,致使黑客可以轻而易举的入侵计算机系统,造成巨大的损失,如图4所示。

三、BadUSB攻击类型

BadUSB属于硬件设施,入侵计算机系统需要对目标进行物理接触,而这种物理接触一般都是利用社会工程学的方式,如扫码赠送BadUSB设备,向目标邮寄BadUSB设备,在目标附近丢弃BadUSB设备诱使其捡到,假装上门维修等等方式,方式多种多样,但目的都是和目标计算机接触,入侵计算机系统。

(一)键盘模拟方式

利用社会工程学的方式将键盘模拟方式的BadUSB设备接入计算机,此时计算机系统会将BadUSB识别成一个键盘,从而执行从BadUSB输入的恶意指令,并免疫病毒查杀,从而在计算机系统内开后门提升权限。

(二)USB设备篡改Windows系统的DNS设置

将USB设备伪装成交换机,包含DNS服务器地址,但没有默认网关,会使得网络流量仍然能通过正常的Wi-Fi连接,但是所有的DNS查询会发送到USB制定的服务器,导致重定向攻击。

(三)USB引导扇区病毒

当U盘被改写成启动盘时,在U盘的固件中反编译一个集成引导扇区病毒的系统镜像,在使用BIOS启动U盘的系统时,先启动固件中隐藏的病毒系统,从而感染引导计算机系统。

四、BadUSB制作分析

(一)制作原理

首先寻找已知的具有BadUSB漏洞的USB型号,重复重置更新USB固件过程,使用抓包软件获取其通信过程,获取USB设备固件命令。其次对USB设备固件进行反编译得到固件的源代码。最后将写好的恶意代码脚本编译为二进制文件.bin,使用烧录器将USB设备镜像同恶意代码文件一同烧录至固件,具体流程如图5所示。

(二)制作BadUSB

所需U盘芯片: Chip 2303、Chip 2307、Chip 2309;U盘类型:东芝TOSHIBA THV3SZK-16G-BK;U盘制作环境:.NET 4.0,编译工具Visual Studio 2010 Express,SDCC(Small Device C Compiler,U盘单片机编译器),Psychson项目文件。制作步骤如下:

1. 编写脚本

因已知芯片类型,直接编写恶意代码,恶意代码脚本语言为Ducky Script。Ducky Script脚本语法的每个命令驻留在一个新的行上,命令均为大写字母,大多数命令调用击键、键组合或文本串,而有些则提供延迟或暂停。关键代码如下:

STRING M DOWNARROW REPEAT100 //隐藏命令行

STRING takeown /f "%systemroot%System32 Utilman.exe"

STRING icacls "%systemroot%System32Utilman.exe" /grant administrators:F/T

STRING cd %systemroot%System32

STRING mkdir util

STRING xcopy cmd.exe util

STRING ren Utilman.exe Utilman.exe.bak

STRING cd util

STRING ren cmd.exe Utilman.exe

STRING cd ..

STRING xcopy util/Utilman.exe

STRING rmdir /s /q util //获取管理员权限

STRING net user Local000 /add

STRING net localgroup administrators Local000 /add

STRING net user Local000 *

STRING badusb

STRING badusb //添加管理员账户

2. 编译烧录

将恶意代码,写入自定义镜像文件,附加正常的镜像写入闪存中,关键代码如下:

java -jar duckencoder.java -i code.txt -o inject.bin //将脚本编译为二进制文件,code.txt为恶意代码;

copy CFW.bin hid.bin toolsEmbedPayload.exe inject.bin hid.bin //将脚本写入hid.bin文件;

ToolsDriveCom.exe/drive=E/action=SendFirmware/burn er=BN03V104M.BIN /firmware=hid.bin//把固件写入USB,其中E为U盘的盘符,BN03V104M.BIN是烧录器的镜像。

3. 实验验证

实验环境:Windows7操作系统,i3处理器PC电脑两台,BadUSB一个。在靶机上插入BadUSB,便获得管理员账号Local000,badusb。打开靶机的控制面板-用户账户,发现已有Local000的管理员账户,说明BadUSB入侵成功。

根据BadUSB的制作过程分析,验证了BadUSB是通过利用USB协议的漏洞,对USB设备的固件反编译,改写USB设备的固件系统进行攻击。同时在攻防练习中,BadUSB拿下目标主机只需要5秒钟,危害不言而喻。

五、BadUSB侦查与防范对策

(一)侦查策略

1. 追根溯源

BadUSB的产生必定是人为制作,USB设备的来源可以提供许多有效线索。BadUSB设备以U盘为主,一般在购物网站购买,因BadUSB具有消耗品性质,故并非单个购买,且U盘芯片具有固定的型号,芯片具有可编译的特性,如Phison 2303(2251-03),由此可根据购物网站的商家调查收货地址,以犯罪嫌疑人居住地为收货地址展开调查,锁定嫌疑人。

2. 查找痕迹

BadUSB在受害者计算机系统上使用,必定会安装相应的USB驱动,可通过查找受害者计算机系统U盘驱动来确定BadUSB驱动型号以及安装时间,32位的计算机系统USB驱动地址为:C:WindowsSystem32drivers,如图6所示,并通过右键属性查看时间戳、数字签名等信息,以此可查找犯罪嫌疑人计算机系统相应的USB驱动及其U盘来固定证据,锁定嫌疑人。

3. 日志查看

Windows日志文件记录着Windows系统运行的每一个细节,可以此寻找犯罪嫌疑人的信息,从安全日志中寻找管理员账户的增加和删除;在系统日志可查询计算机系统上传文件的信息和端口的开启信息;在FTP日志中寻找上传FTP的地址信息;在程序日志中寻找邮件发送的地址信息等,可将系统日志导出至日志管理软件,方便查找线索,同时可从防火墙查看出端口访问记录,找出线索。

4. 取证侦查

BadUSB入侵计算机系统后,使用取证软件对计算机系统进行数据恢复、侦查取证。查看邮件程序收发信息、DNS的篡改信息、服务器上传文件信息等,对之前的侦查措施有查遗补缺的作用,也可对犯罪嫌疑人的计算机系统进行取证,查找网页历史记录、购物软件等是否存在关于BadUSB的相关信息。

5. 手印视频侦查

BadUSB入侵计算机系统必须要和计算机接触,显示器、机箱都容易留下手印痕迹,可使用磁性指纹刷显现指纹,再进行指纹对比,查找犯罪嫌疑人。同时,调取相应监控,以计算机系统BadUSB驱动安装时间为基数,核查监控录像,缩小范围,寻找嫌疑人线索。

(二)防范措施

1. 停用命令提示符

BadUSB的入侵都是在命令行上运行恶意脚本,停用命令行可以阻断BadUSB对恶意脚本的调用,从而在根源上防范BadUSB。停用命令提示符步骤如下:打开“运行”窗口,输入命令“gpedit.msc”并按回车,从打开的“组策略编辑”界面中,依次展开“用户配置”-“管理模块”-“系统”项,从右侧找到“阻止访问命令提示符”项,右击并选择“编辑”项。从打开的“阻止访问命令提示符”界面中,勾选“已启动”项,同时设置“禁用命令提示符脚本处理”,点击“确定”即可完成设置。

2. 命令行记录工具

Win10下命令行工具PowerShell自带记录命令行命令功能,命令行记录功能虽然不能起到防范作用,但可以做到最大程度的挽回损失,并根据BadUSB脚本反追踪黑客。由此可以将启动CMD命令行设置为启动PowerShell,并输入命令$MaximumHistoryCount = 10000,使其记录PowerShell输入的10000行命令,并通过Invoke-History来查看已经输入的命令,由此实现命令行记录功能。

3. USB设备白名单

USB设备通常没有唯一的序列号,但可使用市场上的设备防护软件如Endpoint Protector、USB Block等对USB设备进行授权设置白名单并进行防护。例如USB Block可以针对每一个USB设备进行授权,只有在白名单中的设备才能正常使用。而未经授权的USB存储设备则无法使用,同时也可以阻止其他USB设备的插入,当其他USB设备插入时,需要手动允许,由此可防范BadUSB的入侵。

4. 磁盘加密

磁盘加密可以防止计算机系统上的数据泄露,也可以一定程度上阻止BadUSB的入侵。如Windows自带的BitLocker软件,使用TPM芯片加密保护Windows操作系统和用户数据,使得计算机系统上的数据无法被上传以及篡改。

5. 禁止USB固件更新

BadUSB就是利用USB设备固件更新的漏洞制作,禁止对USB设备的更新及使用时检查USB设备的固件可以简单有效的对BadUSB进行防护。

6. 安装安全防护软件

安全防护软件如防火墙、360安全卫士、金山毒霸等能有效的限制计算机软件权限提升以及DNS的篡改,安装安全防护软件非常有必要。

六、结语

BadUSB是一种新型的恶意软硬件结合的USB设备攻击技术,有多种入侵路径,比之HID攻击威胁更大。一旦通过USB外设或其他途径感染,恶意代码可以隐藏在外设中,避免被系统清除,危害巨大,但并不是无法防范和侦查的,只要提高安全意识,就能防范于未然。与此同时,BadUSB也有很多积极的用法,如U盾、共享加密U盘等等,更值得去研究。

猜你喜欢

固件U盘计算机系统
关于不法分子冒充《小型微型计算机系统》名义诈骗的严正声明
采用U盘文件冗余方案实现TSP系统的可靠装载
自动辨认插口方向的U盘
IBM推出可与人类“辩论”的计算机系统
基于SHA1的SCADA系统PLC固件完整性验证方法
基于UEFI固件的攻击验证技术研究*
基于固件的远程身份认证
地面气象测报业务计算机系统
提取ROM固件中的APP
U盘“闹肚子”