我们以前曾调查过黑客会通过连接在USB端口的正在充电的手机实施攻击,在这项研究中,我们重新审视了USB端口的安全性。我们发现,手机充电时,即使电脑处于锁屏状态,黑客也可以通过对USB端口的攻击成功地入侵用户的电脑甚至可以获取管理员登录凭据。这让人想起了2015年发现的Carbanak病毒,当时它的所窃总金额就已经高达10亿美元,它在盗取资金相关的账号信息同时,能入侵银行系统管理员账号,让犯罪分子获得权限,通过内部视频监控镜头观察员工的一举一动。
在本文中,我们将介绍如何通过一位连接在电脑USB的手机的员工那里开始,扩展到对整个公司范围内的任何计算机的管理员凭据进行窃取。其最终目的就是获取用户名和密码哈希值,但我们不会详细介绍如何解密检索到的哈希值,或者如何在攻击中使用这些哈希值。
我们要强调的是,这种攻击的硬件成本不超过20美元,可以由没有任何编程背景的人员执行。不过唯一的难点就是要对企业电脑进行物理访问,就是要让一个员工将受感染的手机插到未关机电脑的USB上。
我们在实验中使用了一款新的代号为树莓派零(Raspberry Pi Zero)的版本,有史以来最小的树莓派尺寸,65mm x 30mm x 5mm,采用512MB LPDDR2 SDRAM,带一个micro-SD卡槽,一个mini-HDMI接口,支持1080p 60fps视频输出,两个microUSB接口——其中一个用于供电,可以运行 Raspbian 以及任何你喜欢的应用,包括 Scratch, Minecraft 和 Sonic Pi等。
使用Raspberry Pi微型电脑来拦截和分析网络数据包或甚至作为通用渗透测试平台的做法是非常常见的。大多数已知的微型电脑都建立在ARM微处理器上,Kali Linux是基于Debian的Linux发行版, 是专门设计用于数字取证和渗透测试的操作系统。
有专门用于渗透测试目的的计算棒,例如USB Armory。然而,集成USB A型连接器(Raspberry Pi需要适配器)要比USB Armory的成本要高出许多(约135美元),而与Raspberry Pi Zero相比,它的实用性却相当不错。在2016年,Raspberry Pi就号称可以通过USB连接到PC或Mac用于窃取电脑的哈希值,紧接着Raspberry Pi Zero声称也可用于从3个浏览器中窃取cookies。
那么,就让我们检测一下。
首先,我们尝试拦截企业网络中的用户凭据,利用Raspberry Pi连接到运行不同操作系统的笔记本电脑和台式机中。
第二,我们尝试利用Raspberry Pi Zero检索并窃取cookie,以恢复热门网站上的用户会话。
实验1:窃取域凭据
方法
这种攻击背后的关键点就是利用网络适配器的仿真,在树莓派的操作系统Raspbian下找到模拟以太网适配器的模块非常简单。我们在cmdline.txt和config.txt文件中进行了一些配置更改,以便在启动时加载模块。
还有一些额外的步骤包括安装python解释器,sqlite3数据库库和一个名为Responder的特殊应用程序,用于数据包嗅探。
除此之外,我们还设置了我们自己的DHCP服务器,并定义了IP地址的范围和子网掩码,将其与我们要进入的网络分开。最后一步包括配置usb0接口,并在启动时自动加载Responder和DHCP服务器。
检测结果
只要我们将模拟的Raspberry Pi Zero连接到Windows 10,就可以看到连接的Raspberry Pi被确定为有线局域网连接。网络设置对话框将此适配器显示为远程NDIS Internet共享设备,从而被自动分配比其他适配器更高的优先级。
响应程序会扫描流经仿真网络的数据包,并且在看到用户名和密码哈希值后,将它们引导到假的HTTP / HTTPS / NTLM(它支持v1和v2)服务器。每次应用程序(包括在后台运行的应用程序)发送身份验证数据或用户在网络浏览器的标准对话窗口中输入攻击时,例如,当用户尝试连接到共享文件夹或打印机时,就将触发攻击。
在自动模式下拦截的哈希值,即使系统被锁定也是有效的,不过只有在计算机具有另一个活动的本地网络连接时才能运行。
如上所述,我们对三种情况下的Poc进行了测试:
1.针对登录域名的公司电脑
2.针对公共电脑上的公用电脑
3.针对家用电脑
在第一种情况下,我们发现Raspberry Pi不仅拦截来自通过USB连接的系统的数据包,还拦截了域中其他企业网络用户的NTLM身份验证请求。
在观察了几分钟之后,我们已经证明,Raspberry Pi连接的时间越长,就从网络中提取的数量就越多。通过模拟数据,我们可以得出结论,在我们的设置中可以提取的哈希数量大约是每小时50个哈希。当然,实际的数量还要取决于网络拓扑结构,即一个段内的用户数量及其活动。在此,要说明的是,我们的实验运行时间没有超过半小时,因为我们也偶然发现了一些奇怪的副作用,这些会在稍后描述。
提取的哈希存储在纯文本文件中,如下图所示:
在第二种情况下,我们只能提取连接系统的用户凭据:域或Windows名称、密码哈希。如果我们设置了用户可以尝试访问的共享网络资源,就可能会得到更多用户信息。
在第三种情况下,我们只能获取系统所有者的凭据,该凭证未连接到域验证服务。如果我们设置共享网络资源并允许其他用户连接到它们,可能会出现第一种情况的结果。
以上所描述的这些在Windows系统的拦截哈希的方法也同样适用于Mac 系统。当我们尝试连接需要输入域名的内部网站时,就会看到此对话框警告安全证书无效。
现在,我们来说明一下,上面提到的超过半小时运行时发生的有趣副作用,当设备连接到网络中的[ny]系统时,从同一网络中的其他设备发送到网络打印机的任务会在打印机队列中被搁置。当用户尝试在验证对话窗口中输入凭据时,队列还没有被清除。经过分析,这些凭据并未到达网络打印机,而是进入到Raspberry Pi的闪存。当尝试从Mac系统通过SMB协议连接到远程文件夹时,也会发现类似的行为。
Raspberry Pi Zero与Raspberry Pi 3
一旦我们看到Windows和Mac的NTLM系统受到微型电脑的攻击,我们就要尝试使用Linux。此外,我们决定攻击Raspberry Pi本身,因为Raspbian操作系统是建立在Debian Weezy核心之上的。
现在我们要做个专门针对Raspberry Pi 3的实验,顺便说一下,连接到企业网络本身就是一项具有挑战性的任务,但是可行,所以我们不会在这个试验中重点关注这个。要注意的是,Raspbian操作系统拒绝为USB设备网络分配更高的优先级,默认的选择是内置以太网。在这种情况下,Responder应用程序就会处于运行状态,但由于数据包未经过设备,因此无法执行任何操作。当我们手动删除内置的以太网连接时,看到的与以前在Windows中所观察到的相似。
在Chromebook上运行的桌面版Debian上也出现了类似的情况,系统不会自动将USB将太网适配器设置为默认设置。因此,如果我们将Raspberry Pi Zero连接到运行Debian的系统上,则攻击测试将失败。其实,我们不认为创建Raspberry Pi-in-the-middle攻击可能会成功,因为这更难实现,更容易检测。
实验二:窃取cookie
方法
在第一个实验中,就已经说到,当Raspberry Pi Zero通过USB连接到电脑时,可以从PC窃取cookies。其实,我们还发现了一个名为HackPi的应用程序,它是一个具有响应程序的PoisonTap(XSS JavaScript)的变体,我们在上面描述过。
本实验中的微型计电脑配置与上一个实验相似。 HackPi可以更好地建立自己的网络适配器,因为它具有增强的桌面操作系统发现机制,它能够在Windows 7/8/10,Mac和-nix操作系统上自动安装网络设备驱动程序。在第一个实验中,如果远程NDIS Internet共享设备没有自动安装(特别是当PC被锁定时),Windows 7,8或Vista上的攻击就可能会失败。而且, HackPi从来不会在Mac系统下分配自己的默认网络适配器优先级。
与第一个实验不同的是,这个实验会使用从本地存储的网页,来启动恶意Java脚本窃取cookie。如果攻击成功,PoisonTap的脚本将保存从站点拦截的cookie,其列表也会位于本地存储。
实验结果
如果计算机未锁定并且用户的浏览器还处于打开状态,则Java脚本将启动网络请求,将正在浏览的网页重定向到恶意的本地网页。然后浏览器从先前定义的列表中打开网站。
如果用户在未关机的电脑上打开任何运行程序,则Raspberry Pi Zero会在短暂的超时后在地址行中启动带有URL go.microsoft.com的默认浏览器,然后如上所述的那样进行攻击。但前提是,默认浏览器在浏览器历史记录中有Cookie,否则攻击者什么信息都不会获得。
在我们实验的脚本中,从提供的列表中看到的网站有youtube.com,google.com,vk.com,facebook.com,twitter.com,yandex.ru,mail.ru和超过100个其他网址。以下就是被盗的cookies日志:
我们就以使用pikabu.ru网站检查被盗cookies的有效性为例,将信息粘贴到其他设备的干净浏览器字段中,并能够掌握用户帐户以及所有统计信息。在属于铁路公司售货服务的另一个网站上,我们能够检索到用户的令牌并在另一台计算机上接管用户的帐户,因为认证协议仅使用一个LtpaToken2进行会话识别。
在这种情况下,攻击者可以得到有关受害人以前使用过的命令、护照号码、姓名、出生日期、电子邮件和电话号码的信息。
这种攻击的一个特点是,爱好者已经学会了如何在当今企业环境中找到的所有系统上自动安装网络设备驱动程序:Windows 7/8/10,Mac OS X,但是,在一个锁定的系统中,该攻击方法并不奏效。不过我们认为这只是一个时间问题,因为网络爱好者也会克服这些困难。
不过要说明的是,本文中的这些恶意测试网页已被卡巴斯基实验室给阻止了,并将其检测命名为Trojan.JS.Poisontap.a。
总结
目前已经有了各种各样的单板微型电脑,从廉价和通用的Raspberry Pi Zero到专门针对渗透测试的计算棒,它们在大小上已经与USB相当了。
从以上的实验可以看出, Windows PC是最容易发生攻击的系统,旨在通过USB连接的Raspberry Pi就可以拦截身份验证名称和密码。即使用户没有本地或系统管理员权限,只要可以检索其他用户(包括具有管理员权限的用户)的域凭据,该攻击就会发生。它也适用于Mac 操作系统。
到目前为止,窃取Cookie的第二种攻击类型仅在系统解锁时才起作用。该方法会将流量重定向到恶意页面,这很容易被安全解决方案检测到并阻止。当然,被盗的cookies只适用于那些不采用严格的HTTP传输策略的网站。
防护建议
我们提供了一些建议,以避免被攻击者的轻松攻击。
对用户来说:
1.如果你在公共场合,要离开电脑一会儿,请关闭电脑。
2.如果未关闭,重新进入电脑后,检查是电脑端口是否被插入任何额外的USB设备。如果看到立即拔出,并将其配置信息删除。
3.你被要求通过外部闪存驱动器,比如USB设备,分享过一些东西吗?建议使用云端传输或电子邮件发送文件。
4.如果有网站要对你的身份进行验证,请立即关闭该网站。
5.定期更改密码,无论是对PC上还是对经常登录的网站。请记住,并不是所有的网站都会使用防护机制来防范Cookie数据被替换的,你可以使用专门的密码管理软件轻松管理密码。
6.启用双因素身份验证,例如,请求登录确认或动态令牌。
当然,这一切的前提是,强烈建议你安装并定期更新杀软产品。
对管理员来说:
1.如果网络拓扑结构允许,我们建议仅使用Kerberos协议来验证域用户。不过,如果需要使用LLNMR和NTLM身份验证来支持传统系统的话,我们建议将网络分解成段,这样即使一个网段受到威胁,攻击者也无法访问整个网络。
2.限制特权域用户登录遗留系统,特别是域管理员。
3.域用户密码应定期更改。
4.企业网络中的所有计算机都配置安全保护产品,并定期更新。
5.为防止未经授权的USB设备连接,请激活安全产品套件中提供的设备控制功能。
6.如果你拥有网络资源,我们建议你激活HSTS(HTTP严格传输安全性),以防止从HTTPS转换为HTTP协议并从被盗cookie中欺骗凭据。
7.如果可能,禁用监听模式并激活Wi-Fi路由器和交换机中的客户端(AP)隔离设置,禁止其监听其他工作站的流量。
8.激活DHCP Snooping设置,保护企业网络用户免受假DHCP服务器的DHCP请求的诱导。
最后对于所有的人来说,不管是通过在线还是物理方式,你并不确定你的登录凭据是否已经被泄露。因此,我们强烈建议你在HaveIbeenPwned网站上检查你的凭据,以确保安全性。