插入U盘自动攻击:BadUSB原理与实现
漏洞背景 “BadUSB”是今年计算机安全领域的热门话题之一,该漏洞由Karsten Nohl和Jakob Lell共同发现,并在今年的BlackHat安全大会上公布。BadUSB号称是世界上最邪恶的USB外设。 笔者使用他们的代码做了个类似的U盘,用户插入U盘,就会自动执行预置在固件中的恶意代码,下载服务器上恶意文件,执行恶意操作。注意,这里的U盘自动运行可不是以前的autorun.inf自动运行程序哦,具体的技术细节可以参考后文内容。 BadUSB最可怕的一点是恶意代码存在于U盘的固件中,由于PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件和U盘格式化都无法应对BadUSB进行攻击。 BadUSB原理 在介绍BadUSB的原理之前,笔者在这里先介绍下BadUSB出现之前,利用HID(Human InterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等)进行攻击的两种类型。分别是"USB RUBBERDUCKY"和"Teensy"。 TEENSY介绍 攻击者在定制攻击设备时,会向USB设备中置入一个攻击芯片,此攻击芯片是一个非常小而且功能完整的单片机开发系统,它的名字叫TEENSY。通过 TEENSY你可以模拟出一个键盘和鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器与存储空间和编程进去的攻击代 码,就可以向主机发送控制命令,从而完全控制主机,无论自动播放是否开启,都可以成功。 关于TEENSY,可以参考天融信阿尔法实验室的《HID攻击之TEENSY实战》 USB RUBBER DUCKY介绍 简称USB橡皮鸭,是最早的按键注入工具,通过嵌入式开发板实现,后来发展成为一个完全成熟的商业化按键注入攻击平台。它的原理同样是将USB设备模拟成为键盘,让电脑识别成为键盘,然后进行脚本模拟按键进行攻击。 这两种攻击方式,是在BadUSB公布之前,比较流行的两种HID攻击方式,缺陷在于要定制硬件设备,通用性比较差。但是BadUSB就不一样了,它是在“USB RUBBER DUCKY”和“Teensy”攻击方式的基础上用通用的USB设备(比如U盘)。 U盘的内部构造
U盘由芯片控制器和闪存两部分组成,芯片控制器负责与PC的通讯和识别,闪存用来做数据存储;闪存中有一部分区域用来存放U盘的固件,它的作用类似于操作系统,控制软硬件交互;固件无法通过普通手段进行读取。 BadUSB就是通过对U盘的固件进行逆向重新编程,相当于改写了U盘的操作系统而进行攻击的。 USB协议漏洞 为什么要重写固件呢?下面我们可以看看USB协议中存在的安全漏洞。 现在的USB设备很多,比如音视频设备、摄像头等,因此要求系统提供最大的兼容性,甚至免驱;所以在设计USB标准的时候没有要求每个USB设备像 网络设备那样占有一个唯一可识别的MAC地址让系统进行验证,而是允许一个USB设备具有多个输入输出设备的特征。这样就可以通过重写U盘固件,伪装成一 个USB键盘,并通过虚拟键盘输入集成到U盘固件中的指令和代码而进行攻击。 BadUSB利用代码分析 笔者对KarstenNohl和Jakob Lell公布的代码进行简单的一个流程解析。 这样一个带有恶意代码的U盘就产生了,更详细的可以搜索Karsten Nohl 和 Jakob Lell公布的代码。 总结 “USB RUBBER DUCKY”、“TEENSY”、“BadUSB”三种最终都是利用了USB协议的漏洞而进行攻击的,“BadUSB”和另外两者的区别在于:BadUSB可以利用普通的USB设备,而不需要进行硬件定制,更具有普遍性。 HID攻击方式有很多种,BadUSB作为其中一种是通过伪装成键盘设备来实现的,同时HID攻击也可以通过伪装成网卡进行DNS劫持攻击。BadUSB的危害目前局限于单向感染,即USB设备感染PC,暂无发现从PC感染USB设备案例。 为了预防此类安全风险,需要我们在日常使用USB设备时,不要使用陌生的USB设备,避免USB存在恶意代码导致安全风险。 延伸:更多的USB接口攻击 通过USB接口攻击的案例很多,BadUSB只是一类,还有通过USB接口横跨PC和Mobile平台进行攻击的案例。 比如今年爆发的WireLurker蠕虫,感染病毒的电脑系统会通过USB接口去间接感染iOS设备,即使是未越狱的设备也无法避免;还有前段时间发现的电子香烟通过USB传播恶意软件到PC;最近央视也报道了充电宝盗取手机隐私的案例。 对于愈演愈烈的USB风险,应用层还没有见到好的解决方案。倒是硬件层面比较容易解决。比如360无线安全研究团队的SecUSB,还有我们腾讯安全应急响应中心的SecLine。原理都是将USB中的两根数据线去掉,具体细节可以参考《揭秘:充电宝是如何盗取你的个人隐私的》。 或许未来SecUSB或者SecLine将成为USB接口标配。 我扔个U盘你敢捡么?一种防不胜防的USB攻击方式作者:一尺 在踏入安全圈之前,我的日子平静如水。 自从入了安全圈,我就成朋友眼中计算机怪人,自此以后,修电脑、求资源之类的事儿都不会忘了我... “我真不会这些。”看着朋友们期待而来,失望而归的表情,我想,我大概是个假黑客吧。 一天,一个朋友找到我。朋友是一个在圈里小有名气的设计师,已经很久没联系了,突然发信息过来,开始还以为是这哥们儿要结婚,又该准备份子钱了。 “你是在搞网络安全吗?有个事儿想请你帮个忙。” 没等我推辞,朋友就跟我说了,他电脑里的文件被加密了。里面有他最近在做的一个很重要的项目,准备很长时间,现在文件却突然打不开了,自己也没有备份。眼看着要交付了,万般无奈下才来向我求助。 电脑出现了中毒的症状,希望我可以帮他把电脑救回来。 朋友表示,自己用电脑也是有常识的,从来不会去点击来源不明的链接,也没上过什么“不该上”的网站,杀毒软件也装了,所以没那么容易中毒。 我看了一下,打不开文件是因为文件被加密了(AES算法),采用这种算法加密文件,必须用其对应的密钥才能解开,这样看来我也爱莫能助。 我决定帮他找出问题的来源。经过排查,我在C盘的某个目录下发现了一个powershell脚本。 (红框部分就是一个powershell脚本) 脚本里的代码是从指定服务器里下载文件,这很可能是个攻击脚本。不仅如此,这个powershell脚本还做过免杀处理,所以杀软也无法检测。从过往经验来看,这种攻击脚本大多都是靠U盘等外接设备传播。 “最近电脑有没有借给别人用过,或者有没有用过陌生的U盘?”我问他。 “有过一次,就在前几天,有个同事拿他的U盘过来找我拷资料,奇怪的是明显示装了驱动,却读不出内容,我以为是U盘的问题,就让他换个U盘。但之后再拷文件时,却发现都打不开了,之后重启几次也没用。” 问题应该就在这个“U盘”上,听起来很像是类似rubber ducky(业界称为橡皮鸭)的设备给他的电脑植入了一段恶意代码,这段代码会自动下载一个木马,木马再对其文件进行加密,之后木马会执行把自己删掉,所以用杀软扫描也是一无所获。 橡皮鸭可通过USB接口连接电脑,且体型小巧,所以适合伪装成U盘进行攻击。 “所以是那个U盘的问题吗?那他是怎么把病毒弄到我电脑来的?”朋友突然醒悟过来。被一起工作的同事暗算,他又惊又恼。 问了下他被暗算的原因。朋友犹豫了一下,没讲什么,不过看得出他现在心里跟明镜似的。 相比二流国产剧的情节,我更想去自己去验证下这种攻击方式。虽然理论上可行,不过在我所知的案例中,还没有出现过这种攻击实例。 其实这个问题并不复杂,所有的USB设备都有一个微控制器芯片,作为设备与计算机之间的接口。而这个芯片上的固件可以被重新编程甚至植入病毒。而且,BadUSB可以轻松绕过防病毒软件,所以极难被查觉。 这只是一种攻击的途径,目的可以有很多种,危害的程度也可大可小,危害完全取决于攻击者。 我决定以一包辣条的代价,请老师傅出山,为大家复原一次用USB设备植入病毒的过程。 首先,作案前需要有一个可以被重新编程的USB设备,在某宝上,几十块钱就买到一个,简直是居家旅行黑人电脑的利器。 我在网上找了张图,简单给大家介绍一下这个设备。在蓝色的板子上,一面是存储器,一面就是控制器固件,也就是被写入恶意代码的地方。恶意代码会在电 脑安装该USB驱动的时候自动运行,这时它会模拟键盘或鼠标操作,自己编写powershell,这个过程可能转瞬即逝,整个过程都不会被杀软报警,所以 极难察觉。 货到手后,老师傅先生自编一段powershell代码,然后将这段代码植入设备,插入电脑后,就可以自动执行指令,将病毒植入到电脑。 本以为一插就怀孕,结果什么也没发生。。。 “不应该啊!”老师傅没想到,自己也有翻车的一天。 “卧槽!我怎么没想到这茬!”老师傅一阵苦笑。 其实是电脑的输入法默认输入中文,所以没能完成植入。原来老师傅的克星,不是杀软是输入法! 既然找到了症结所在,那就问题也就迎刃而解了,只要在前面设置一个大写锁定的指令,后面的指令就可以进行正常操作了。 植入代码后,老师傅就可以对这台电脑为所欲为了。 利用外部连接的硬件设备进行病毒传播的手段并不新颖,早在软驱时代,这就是传播病毒的主要方法。随着互联网的发展,利用网络传播才渐成主流,以至于很多人逐渐淡忘了USB可以传播病毒,所以会放松警惕。 我们来做个实验,看有多少人会中招。 我就近在星巴克和kfc放了五个已经植入攻击代码并伪装成了U盘的设备,一旦被人插入电脑,可以在短短几秒内植入木马,远程操控、实时监控也就不在话下了。 (太小的U盘是不行的,图片就是意思一下) 结果是有三个人中招,电脑感染木马后,我们可以监控屏幕、操纵摄像头等操作。 屏幕监控 可以看出对方应该是个财务,我们完全可以获取这些资料并且掌握该公司的人事和财务状况。 和男友很直白的交流。。。 通过监控屏幕和记录键盘敲击,经过分析后我获取了对方的对方的微博账号和密码,并登录了她的微博,发现这个微博账号关联了淘宝、知乎等账号。所以登 陆了微博就可以“快捷登录”其他关联的账户。如果她还是那种“一个密码走天下”的人,那么她的个人信息和财产就完全没有安全可言了。 还好,她遇上的是我们这些有(mei)良(dan)知(zi)的黑客,实验点到为止,没有再往下挖了。 讽刺的是,我发现这三个人里还有一个是科技公司的运维,可见即使是有计算机常识的工程师也缺乏必要的安全意识。一个早已被用烂的病毒木马传播方式,依然能让不少人中招。 键盘、鼠标、充电宝等,都可以被植入恶意代码,加上计算机外高度依赖USB外接设备,以至于这种攻击方式成功率极高。也许就是上个洗手间的工夫,电脑就可能被人入侵,一举一动完全暴露在别人的眼皮子地下。 黑客从来只黑有价值的人,如果你觉得自己很安全,那只是你缺乏被黑的价值,这句话毫不夸张。在商业领域,矛与盾的较量从未间断。 在科技领域,为保密或窃取研发资料所产生的博弈从未停止。例如华为这种极重研发的公司,投入重金的研发资料一旦泄密,其造成的影响是不可估量的。 在巨大利益的诱惑下,不少猎手都对其跃跃欲试,让华为不管是网络层还是硬件层,都投入了极高的防护成本。 所以,大家一定要注意信息安全,不要让攻击者有机可乘。 |