◆吳 紅 蘭沂梅 羅 晨
NTLM中繼攻擊技術(shù)淺析
◆吳 紅 蘭沂梅 羅 晨
(國(guó)網(wǎng)四川省電力公司眉山供電公司 四川 620010)
本文對(duì)NTLM認(rèn)證協(xié)議的認(rèn)證過(guò)程進(jìn)行了研究,介紹了在不安全的網(wǎng)絡(luò)環(huán)境中利用NTLM中繼攻擊獲取服務(wù)器權(quán)限的可能方式,并通過(guò)搭建環(huán)境模擬實(shí)現(xiàn)了利用NTLM中繼攻擊得到服務(wù)器最高權(quán)限的過(guò)程。最后,本文總結(jié)了針對(duì)于此類(lèi)攻擊的防御辦法。
網(wǎng)絡(luò)安全;NTLM協(xié)議;中間人攻擊;NTLM中繼攻擊;遠(yuǎn)程代碼執(zhí)行
Windows質(zhì)詢(xún)/響應(yīng)(NTLM)是在包含運(yùn)行Windows操作系統(tǒng)的系統(tǒng)和獨(dú)立系統(tǒng)的網(wǎng)絡(luò)上使用的身份驗(yàn)證協(xié)議。NTLM認(rèn)證協(xié)議作為一種歷史遺留協(xié)議,被廣泛用于Windows操作系統(tǒng)各內(nèi)部組件及服務(wù),是作為身份驗(yàn)證的基礎(chǔ)架構(gòu)[1]。其認(rèn)證過(guò)程簡(jiǎn)單,必需的通信流量較小,在對(duì)通信安全性要求較低,性能要求較高的網(wǎng)絡(luò)環(huán)境中很適合。NTLM認(rèn)證本身隱含著一種極為危險(xiǎn)的攻擊面,即中間人攻擊。當(dāng)用戶(hù)與服務(wù)器通信時(shí),若信道本身遭到攻擊者破壞與竊聽(tīng),則攻擊者可能充當(dāng)“中間人”的角色,假冒用戶(hù)的身份與服務(wù)器通信,從而危及服務(wù)器的安全,該攻擊方式被稱(chēng)為“NTLM中繼攻擊”[2]。NTLM中繼操作較為簡(jiǎn)單,并能造成極大的危害,例如遠(yuǎn)程代碼執(zhí)行,敏感信息讀取等。
NTLM中繼攻擊自出現(xiàn)起至今已存在十余年。2008年MS08-068漏洞影響范圍巨大,危害可觀,它利用NTLM中繼將用戶(hù)的憑據(jù)反射到受害者計(jì)算機(jī)上,從而導(dǎo)致遠(yuǎn)程代碼執(zhí)行[3]。自那以后,微軟阻止了在SMB協(xié)議,即Windows文件共享服務(wù)所使用協(xié)議中的NTLM反射攻擊,這是一種NTLM中繼攻擊的變種。2016年,安全研究員發(fā)現(xiàn)NTLM反射攻擊仍能在HTTP協(xié)議到SMB及DCE/RPC協(xié)議到SMB中工作;2019年,又有研究員發(fā)現(xiàn)繞過(guò)SMB到LDAP協(xié)議(在微軟活動(dòng)目錄數(shù)據(jù)庫(kù)中使用)限制的方式,這使得NTLM中繼攻擊的威力更上一層樓,這個(gè)漏洞的出現(xiàn)讓NTLM中繼攻擊在2019年再次熱門(mén)了起來(lái)。
這里從三個(gè)方面對(duì)NTLM中繼攻擊進(jìn)行研究:
NTLM是一種質(zhì)詢(xún)/響應(yīng)認(rèn)證方案,其認(rèn)證過(guò)程分為三步:
(1)協(xié)商(Type1消息)
客戶(hù)端向服務(wù)器發(fā)送Type 1消息。這主要包含客戶(hù)端支持和服務(wù)器請(qǐng)求的功能列表。
(2)質(zhì)詢(xún)(Type2消息)
服務(wù)器響應(yīng)Type 2消息。其中包含服務(wù)器支持和同意的功能列表。但最重要的是,它包含服務(wù)器生成的挑戰(zhàn)數(shù)(Challenge)。
(3)響應(yīng)(Type3消息)
客戶(hù)端使用Type 3消息回復(fù)挑戰(zhàn)數(shù)。其中包含有關(guān)客戶(hù)端的若干信息,包括客戶(hù)端用戶(hù)的域和用戶(hù)名。它還包含對(duì)Type 2挑戰(zhàn)的一個(gè)或多個(gè)響應(yīng)。
NTLM認(rèn)證大體過(guò)程如圖1所示:
NTLM認(rèn)證中,挑戰(zhàn)(Challenge)是服務(wù)器生成的一個(gè)8字節(jié)的隨機(jī)數(shù),而響應(yīng)則包含客戶(hù)端使用用戶(hù)的密碼hash與該挑戰(zhàn)經(jīng)過(guò)單向函數(shù)計(jì)算后得出的一組數(shù)據(jù)[4]。由于服務(wù)端也持有用戶(hù)的密碼hash,則它能通過(guò)相同的計(jì)算來(lái)比較響應(yīng)是否正確,從而確定用戶(hù)是否認(rèn)證成功。
NTLM中繼攻擊屬于一種中間人攻擊。在NTLM認(rèn)證中,攻擊者若處于客戶(hù)端和服務(wù)端信道之間,則他能轉(zhuǎn)發(fā)并修改往來(lái)的任何消息,如圖2所示:

圖2 NTLM中繼攻擊流程
在圖2中,對(duì)于客戶(hù)端,攻擊者扮演服務(wù)器的角色;對(duì)服務(wù)端,他扮演客戶(hù)端的角色。攻擊者首先轉(zhuǎn)發(fā)客戶(hù)端所發(fā)送的Type1消息到服務(wù)端,并獲取服務(wù)端的響應(yīng)。由于服務(wù)端并不知道客戶(hù)端的真實(shí)身份,它會(huì)發(fā)送挑戰(zhàn)。當(dāng)攻擊者收到該挑戰(zhàn)后,將挑戰(zhàn)發(fā)回客戶(hù)端。客戶(hù)端計(jì)算出響應(yīng),將響應(yīng)發(fā)送給攻擊者,攻擊者再次發(fā)送到服務(wù)端。這樣,在服務(wù)端看來(lái),攻擊者已經(jīng)是經(jīng)過(guò)驗(yàn)證的合法客戶(hù)端,因此攻擊者能假冒真正的客戶(hù)端做任何他有權(quán)限做的操作。
由于NTLM認(rèn)證僅是諸多認(rèn)證協(xié)議中的一種,在真實(shí)世界中,它必須與其他協(xié)議相配合使用[5]。SMB協(xié)議是Windows文件共享服務(wù)所使用的協(xié)議。Windows文件共享服務(wù)默認(rèn)開(kāi)啟并綁定445端口,高權(quán)限用戶(hù)能使用該服務(wù)執(zhí)行命令。SMB協(xié)議可以使用NTLM認(rèn)證作為其認(rèn)證協(xié)議,因此,使用NTLM中繼攻擊能使攻擊者獲取到訪問(wèn)SMB服務(wù)的權(quán)限,進(jìn)而執(zhí)行命令,危及服務(wù)器安全。
互聯(lián)網(wǎng)上有很多開(kāi)源的工具能使攻擊者實(shí)施此類(lèi)攻擊,其中最著名也是最成熟的工具是Impacket工具包中的ntlmrelayx。Impacket是Python的網(wǎng)絡(luò)協(xié)議庫(kù),其中實(shí)現(xiàn)了smb、ldap、kerberos等多種協(xié)議,并有大量使用該庫(kù)的工具。在實(shí)驗(yàn)環(huán)境如下:
攻擊者IP:172.17.129.177;客戶(hù)端IP:172.17.8.4;
服務(wù)端IP:172.17.129.163。
“操作員是服務(wù)端”缺點(diǎn)如下:
攻擊者啟動(dòng)smbrelay,命令為:smbrelayx.py -h 172.17.129.163 -c whoami。
該工具監(jiān)聽(tīng)445端口,并轉(zhuǎn)發(fā)NTLM認(rèn)證至-h指定的服務(wù)器。在客戶(hù)端上,執(zhí)行:dir \172.17.129.177”命令模擬訪問(wèn)smbrelay所啟動(dòng)的smb服務(wù)器。
Dir命令后接UNC路徑,即以\開(kāi)頭的URL,Windows將以SMB協(xié)議訪問(wèn)該地址。
Smbrelay接收到訪問(wèn)請(qǐng)求后,將啟動(dòng)NTLM中繼過(guò)程。從攻擊者到服務(wù)器的三次認(rèn)證捕獲流量如圖3所示:

圖3 攻擊者到服務(wù)器之間的NTLM流量
從客戶(hù)端到攻擊者的三次認(rèn)證捕獲流量如圖4所示:

圖4 客戶(hù)端到攻擊者之間的NTLM流量
比較上面兩張圖可以看出,三次認(rèn)證的流量幾乎是一模一樣的,這也說(shuō)明攻擊者在認(rèn)證中扮演著中間人的角色,負(fù)責(zé)轉(zhuǎn)發(fā)雙方的流量。當(dāng)攻擊者假冒客戶(hù)端認(rèn)證成功后,他便能通過(guò)若干DCE/RPC調(diào)用在服務(wù)器上寫(xiě)入木馬并啟動(dòng)。
最終smbrelay將能執(zhí)行任意代碼,如圖5所示,攻擊者執(zhí)行whoami命令,查看服務(wù)器上用戶(hù):

圖5 攻擊者得到惡意命令執(zhí)行的結(jié)果
NTLM中繼攻擊雖然危害巨大,但微軟早已準(zhǔn)備大量應(yīng)對(duì)方案。NTLM認(rèn)證協(xié)議屬于歷史遺留協(xié)議,其本身并不安全,必要時(shí)也可放棄使用,轉(zhuǎn)而使用更安全的Kerberos協(xié)議[6]。管理員可在本地安全策略中限制傳入與傳出的NTLM流量。
同時(shí)在SMB服務(wù)器上啟用SMB簽名。SMB簽名可對(duì)SMB協(xié)議中的數(shù)據(jù)包進(jìn)行數(shù)字簽名,以防止中間人攻擊,這是一種非常有效的方式。

圖6 啟用SMB數(shù)字簽名
本文對(duì)NTLM協(xié)議的通信機(jī)制做了簡(jiǎn)單介紹,舉例實(shí)現(xiàn)了對(duì)在SMB服務(wù)中扮演認(rèn)證角色的NTLM協(xié)議的中繼攻擊,并對(duì)防范此種NTLM協(xié)議中繼攻擊做了介紹。NTLM技術(shù)的應(yīng)用十分廣泛,針對(duì)NTLM協(xié)議的攻擊方式也多種多樣,如何能徹底解決NTLM技術(shù)在應(yīng)用中的安全問(wèn)題,仍需要進(jìn)一步的研究。
[1]潘志剛.從Windows2003服務(wù)器遠(yuǎn)程登錄失敗以識(shí)NTLM協(xié)議[J]. 電大理工大學(xué)學(xué)報(bào),2013(2):39-41.
[2]邱奇志. 剖析Windows的用戶(hù)驗(yàn)證機(jī)制[J].現(xiàn)代計(jì)算機(jī)(專(zhuān)業(yè)版),2005(02):61-64+78.
[3]肖道舉,郭杰,陳曉蘇.一種對(duì)中間人攻擊的防范策略的研究[J].計(jì)算機(jī)工程與科學(xué),2004(09):9-10+17.
[4]黎松,段海新,李星.域間路由中間人攻擊的實(shí)時(shí)檢測(cè)系統(tǒng)[J].清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2015(11):1229-1234.
[5]汪定,馬春光,翁臣,等.強(qiáng)健安全網(wǎng)絡(luò)中的中間人攻擊研究[J].計(jì)算機(jī)應(yīng)用,2012(01):48-50+71.
[6]徐恒,陳恭亮,楊福祥. 密鑰交換中中間人攻擊的防范[J].信息安全與通信保密,2009(02):96-98.