Badtunnel遠(yuǎn)程惡意劫持利用

責(zé)任編輯:editor005

作者:四維創(chuàng)智

2016-07-19 15:13:43

摘自:FreeBuf.COM

筆者使用Python編寫了一個(gè)真正的BadTunnel利用工具,該工具能夠精準(zhǔn)的欺騙受害主機(jī),重定向一個(gè)指定的域名(默認(rèn)是WPAD)到一個(gè)指定的IP地址。

BadTunnel 這個(gè)漏洞出來已經(jīng)近一個(gè)月了,筆者在剛剛爆發(fā)這個(gè)漏洞的時(shí)候?qū)ζ溥M(jìn)行了分析,并且寫出了POC,最近閑來無事,又重新翻起這個(gè)漏洞,改進(jìn)了攻擊腳本,使之成為一個(gè)實(shí)際滲透測試中可用的一個(gè)工具。

  原理:

1. Badtunnel漏洞的原理是,當(dāng)某臺(tái)主機(jī)(受害主機(jī))給一個(gè)指定IP的主機(jī)發(fā)送一個(gè)SMB共享連接請求時(shí),因?yàn)樵撝付ㄖ鳈C(jī)的默認(rèn)共享端口445、139不可達(dá)(超時(shí)或拒絕連接),則該主機(jī)會(huì)向這個(gè)指定IP的主機(jī)發(fā)送一個(gè)目的端口為137的NetBIOS NB STATE包。一旦發(fā)送這個(gè)數(shù)據(jù),且網(wǎng)絡(luò)核心部件(防火墻、NAT網(wǎng)關(guān)等)允許通過,那么就必然允許在一定的時(shí)間內(nèi)通過該隧道(即Badtunnel)返回?cái)?shù)據(jù)。而這個(gè)NetBIOS包使用的協(xié)議是無連接狀態(tài)的UDP,其源端口和目的端口用且只用137端口。這就表示這樣一段時(shí)間內(nèi),處于外部網(wǎng)絡(luò)的機(jī)器可以構(gòu)造一個(gè)源端口為137,目的為該IP的137端口,發(fā)往受害主機(jī),且該網(wǎng)絡(luò)一定是可達(dá)的。

2. Badtunnel中一共用到了2種NetBIOS數(shù)據(jù)包,第一種是受害主機(jī)向目的主機(jī)UDP的137端口發(fā)送的NetBIOS NB STATE包,第二種則是從目的主機(jī)137端口源源不斷地返回的NetBIOSNAME RESPONSE包。發(fā)送第二個(gè)包的目的是什么呢?其實(shí)就是在當(dāng)這個(gè)Badtunnel構(gòu)建起來后,假定目標(biāo)再未來的一段時(shí)間內(nèi),一定會(huì)向自己的局域網(wǎng)內(nèi)廣播一個(gè)NetBIOS NAME QUERY的請求包,用來請求某一個(gè)未知的域名或者機(jī)器名的IP地址(注意這個(gè)廣播報(bào)是不能通過Badtunnel發(fā)送給黑客的服務(wù)器的,即黑客是看不到這個(gè)廣播包的)。這個(gè)請求包內(nèi)部其實(shí)是一個(gè)DNS協(xié)議的報(bào)文,但是和DNS協(xié)議不同的是,它的Trasaction ID不是隨機(jī),而是遞增的!而且這個(gè)ID還和之前發(fā)送的NetBIOSNB STATE數(shù)據(jù)包的ID享用同一個(gè)計(jì)數(shù)器!也就是說,在受害主機(jī)給一個(gè)指定的主機(jī)發(fā)送一個(gè)NetBIOSNB STATE包時(shí),這個(gè)ID就已經(jīng)泄露了。只要受害主機(jī)接收到ID匹配的RESPONSE,那么它就會(huì)更新自己本機(jī)的NetBIOS緩存。

3. 當(dāng)Badtunnel構(gòu)建起來以后,可以不斷地通過這個(gè)tunnel給受害主機(jī)發(fā)送一個(gè)NetBIOSNAME RESPONSE包,不斷地告訴受害主機(jī):WPAD(或者其他域名)的IP地址是xxx,這個(gè)xxx通常是攻擊者自己的WEB服務(wù)器,用來給受害者主機(jī)發(fā)送wpad.dat文件,從而更改受害主機(jī)的網(wǎng)絡(luò)代理設(shè)置。而發(fā)送的這個(gè)NetBIOSNAME RESPONSE包,使用的ID號必然是大于之前收到的NB STATE的ID號,且通常不會(huì)大很多。通過不斷地發(fā)包完全可以“蒙”對。

4. 觸發(fā)這個(gè)漏洞的確很簡單,但是門檻也不是那種受害者完全不知情就能劫持的。根據(jù)1,受害者需要訪問一個(gè)SMB的UNI PATH,即類似”S.123.123.123”的地址,一個(gè)僅僅放在資源管理器的快捷方式、或者打開一個(gè)網(wǎng)頁、打開一個(gè)文檔都可以觸發(fā),但是這還是有一定門檻的,雖然并不是很高。即便成功地觸發(fā),部分運(yùn)營商似乎在網(wǎng)絡(luò)層就已經(jīng)屏蔽了udp的137端口,這樣這個(gè)Tunnel還是構(gòu)建不起來。

5. Badtunnel漏洞的核心在于這個(gè)Tunnel,而不是WPAD。WPAD(即網(wǎng)絡(luò)代理自發(fā)現(xiàn)協(xié)議 –Web Proxy Auto-Discovery Protocol)只是基于這個(gè)Tunnel的一個(gè)目前發(fā)現(xiàn)的比較好的利用方式而已(其實(shí)還有一個(gè)潛在的更好的利用方式,這里筆者賣個(gè)關(guān)子,尚待研究)。事實(shí)上,在部分內(nèi)網(wǎng)中,很多Web連接數(shù)據(jù)庫是通過機(jī)器名來連接的,也就是說,在Web服務(wù)器剛啟動(dòng)的初始化階段,或者連接超時(shí)以后重新發(fā)起連接的階段,它也會(huì)在內(nèi)部網(wǎng)絡(luò)發(fā)送一個(gè)NetBIOS NAME QUERY廣播,只要能夠知道這個(gè)主機(jī)名,一樣可以通過Badtunnel來欺騙數(shù)據(jù)庫客戶端主機(jī),使用Metasploit的MYSQL Capture或者M(jìn)SSQL Capture模塊就能捕捉到數(shù)據(jù)庫的密碼。

利用

Metasploite中的利用代碼,其實(shí)并不能算是一個(gè)真正的Badtunnel利用代碼,因?yàn)樗鼤?huì)遍歷0-65535號的Trasaction ID。根據(jù)我之前所說,這個(gè)ID是可以被預(yù)測并且精確攻擊的。因此Metasploit中的利用代碼效率低、成功率不高。

筆者使用Python編寫了一個(gè)真正的BadTunnel利用工具,該工具能夠精準(zhǔn)的欺騙受害主機(jī),重定向一個(gè)指定的域名(默認(rèn)是WPAD)到一個(gè)指定的IP地址。還有NetBIOS探針模式、混合模式(構(gòu)建Badtunnel,通過Badtunnel重定向WPAD并且探針局域網(wǎng)內(nèi)NetBIOS NAME QUERY),自動(dòng)欺騙模式(自動(dòng)欺騙局域網(wǎng)內(nèi)所有的NetBIOS NAMEQUERY,把任意域名定向到一個(gè)指定IP)。其中探針模式、自動(dòng)欺騙模式不支持跨網(wǎng)段??梢韵胂笠韵鹿魣鼍埃⒁鈽?gòu)建BadTunnel需要首先關(guān)閉445和139端口,Linux中默認(rèn)是smbd服務(wù)和nmbd服務(wù),Windows可以設(shè)置防火墻禁止通過:

1. 劫持QQ好友、遠(yuǎn)程/局域網(wǎng)絡(luò)的流量:

準(zhǔn)備好環(huán)境。最方便的是直接使用burpsuit來開啟一個(gè)代理端口,注意需要監(jiān)聽在所有接口上(即監(jiān)聽0.0.0.0),然后使用metasploit的server/wpad模塊來快速搭建一個(gè)80端口下的HTTP服務(wù)器,來返回wpad配置文件。

1)使用QQ、郵件發(fā)送一個(gè)帶有SMBURI PATH的文檔、快捷方式,或者一個(gè)網(wǎng)頁,注意網(wǎng)頁中的標(biāo)簽應(yīng)該是src=”\123.123.123.123”這種;快捷方式可以用metasploit生成。如果處于同一個(gè)局域網(wǎng),則不需要任何工作。

2)發(fā)送給朋友或者妹子,最好做點(diǎn)其他功課,你懂的。直接使用工具的默認(rèn)模式即可。

  2. 進(jìn)入內(nèi)網(wǎng),橫向滲透時(shí)非ARP嗅探內(nèi)網(wǎng)賬號密碼:

1)使用探針模式,把所有NetBIOS NAME QUERY記錄下來。Windows主機(jī)非管理員權(quán)限即可監(jiān)聽udp的137端口,Linux主機(jī)則需要提權(quán)成功。

2)分析局域網(wǎng)內(nèi)所有NetBIOS NAME QUERY請求,如果發(fā)現(xiàn)有請求MYSQL、SQLSERVER或者直接使用機(jī)器名連接服務(wù)和打開共享的,可以根據(jù)需要調(diào)整攻擊環(huán)境,然后再使用自動(dòng)欺騙模式來抓密碼。

  3. 進(jìn)入邊界提權(quán)成功,縱向滲透時(shí)密碼采集:

1)域內(nèi)機(jī)器有偶爾訪問邊界服務(wù)器的情況,有的環(huán)境甚至是經(jīng)常存在。一般邊界服務(wù)器都是Web服務(wù)器,那么可以通過在該肉雞的某個(gè)頁面中插入

的標(biāo)簽,并且配置好wpad.dat文件,還有webproxy.py等小的HTTP代理工具,使用該主機(jī)做WPAD服務(wù)器+代理服務(wù)器,來收集域內(nèi)信息。

  此工具已經(jīng)集成到四維創(chuàng)智天象綜合滲透測試平臺(tái)中。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號