李 杰,滕 斌,曹國江
(中國電子科技網(wǎng)絡(luò)信息安全有限公司,四川 成都 610041)
近些年來,橫向移動在網(wǎng)絡(luò)攻擊活動的使用頻率越來越高,比如在熟知的APT(高級可持續(xù)攻擊)中就占據(jù)重要的位置[1][2]。但在安全防護(hù)側(cè),更多的重心還放在安全邊界上,對攻擊者在內(nèi)部網(wǎng)絡(luò)的攻擊活動特別是橫向移動的關(guān)注要少得多。但一次又一次的安全事件表明,一旦攻擊者攻破了脆弱的外部防護(hù),內(nèi)部網(wǎng)絡(luò)的安全措施就變得微不足道,攻擊者利用橫向移動攻擊能輕易攻陷整個內(nèi)部網(wǎng)絡(luò)。另外,橫向移動攻擊的隱蔽性也不斷增強(qiáng),潛伏的周期也越來越長,因此對此類攻擊行為檢測技術(shù)的研究具有迫切的現(xiàn)實(shí)需求[3]。
本文首先介紹了常用的橫向移動攻擊手法,對其技術(shù)原理進(jìn)行剖析,重點(diǎn)研究其為規(guī)避常規(guī)檢測而使用的Windows自帶工作機(jī)制[4]。在對橫向移動攻擊充分了解的基礎(chǔ)上,深入探索對應(yīng)檢測方法,提出基于CimCmdlets實(shí)現(xiàn)對橫向移動攻擊的檢測,準(zhǔn)確高效的查找出隱蔽性強(qiáng)和高持續(xù)性的惡意痕跡,提升網(wǎng)絡(luò)環(huán)境的整體安全防護(hù)水平。
橫向移動是達(dá)到攻擊目的的一種有效的手段,在網(wǎng)絡(luò)中識別、搜集和過濾核心信息,在攻擊鏈中的位置如圖1所示。攻擊者在攻破系統(tǒng)的外部防護(hù)后,傳送不同的惡意工具來獲取更高的訪問權(quán)限,通過命令和控制服務(wù)器尋求外部網(wǎng)絡(luò)的訪問,這就為橫向移動攻擊創(chuàng)造了條件,便于攻擊者找到在內(nèi)部網(wǎng)絡(luò)中的立足點(diǎn),將內(nèi)部網(wǎng)絡(luò)映射到外部,通過橫向移動不斷發(fā)現(xiàn)用戶主機(jī)和敏感信息,最終到達(dá)內(nèi)部網(wǎng)絡(luò)的核心[5][6]。橫向移動攻擊能夠通過對證書的竊取和后門安裝,提升權(quán)限并持續(xù)駐留,其網(wǎng)絡(luò)流量由于偽裝成正常流程而較難發(fā)覺,安全防護(hù)設(shè)備難以檢測。
圖1 橫向移動處于攻擊鏈的位置
攻擊者在進(jìn)行橫向移動時通常借助于計(jì)算機(jī)系統(tǒng)自帶的WMI (Windows基礎(chǔ)設(shè)施管理)技術(shù)。WMI是WBEM和CIM標(biāo)準(zhǔn)在Windows操作系統(tǒng)上的實(shí)現(xiàn),它的一個非常重要特性是能夠通過DCOM(分布式組件對象模型)或WinRM協(xié)議與遠(yuǎn)程主機(jī)的WMI模型進(jìn)行交互,這允許攻擊者操控遠(yuǎn)程主機(jī)的WMI類,而不需要預(yù)先在其上運(yùn)行任何代碼,做到很好的無文件隱藏。
WMI作為橫向移動攻擊中的有力武器,主要包括以下三大部分.
(1)組件管理。管理的組件被表示為WMI對象,是高度結(jié)構(gòu)化的操作系統(tǒng)類實(shí)例,其提供了大量如Win32_Process、Win32_Registry、Win32_ProcessStartup等跟通信和操作系統(tǒng)相關(guān)的對象。
(2)數(shù)據(jù)調(diào)用。利用WMI可通過代碼實(shí)現(xiàn)類、實(shí)例和方法,并且微軟為使用WMI數(shù)據(jù)和執(zhí)行WMI方法提供了幾種方法,比如利用PowerShell就能與WMI進(jìn)行交互。
(3)數(shù)據(jù)查詢。WMI存儲庫包含類定義和需要持久性的對象實(shí)例,使用類似于SQL的語言WMI Query language (WQL)進(jìn)行查詢,且可以對WMI對象的返回?cái)?shù)據(jù)根據(jù)需要進(jìn)行過濾。
外部攻擊者對企業(yè)內(nèi)部網(wǎng)絡(luò)的高級攻擊之所以能夠成功,往往是由于企業(yè)內(nèi)部缺乏對橫向移動攻擊的檢測能力。如果能在攻擊者的橫向移動路徑上設(shè)置障礙,就能有效防止高級可持續(xù)的攻擊或者讓攻擊者為達(dá)目的需付出成倍的投入[7]。要防止橫向攻擊在內(nèi)部網(wǎng)絡(luò)的肆虐,相應(yīng)的檢測手段是必不可少的[8]。目前針對橫向移動的檢測手段仍停留在單時間節(jié)點(diǎn),完全不能適應(yīng)攻擊活動日益復(fù)雜多變的狀態(tài)。
CimCmdlets是檢測橫向移動攻擊的利器,特別是對于WMI類橫向移動攻擊能構(gòu)建高效的檢測模型。CimCmdlets是微軟發(fā)布的一組基于通用CIM操作建模工具,負(fù)責(zé)WsMan的遠(yuǎn)程管理,使管理任何實(shí)現(xiàn)WsMan和CIM標(biāo)準(zhǔn)的服務(wù)器或設(shè)備成為可能。
本文提出的橫向移動攻擊檢測方法主要包括四部分,對應(yīng)的模塊為:信息搜集模塊、事件異常檢測模塊、隱藏?cái)?shù)據(jù)檢測模塊、憑據(jù)使用分析模塊。安全團(tuán)隊(duì)利用該檢測方法對橫向移動攻擊的活動路徑進(jìn)行追蹤,判斷影響的范圍和造成的損失,即使遏制攻擊擴(kuò)大及進(jìn)行恢復(fù)[9]。橫向移動攻擊檢測方法總體架構(gòu)如圖2所示。
圖2 橫向移動攻擊檢測方法
2.3.1 信息搜集模塊
信息搜集的對象主要包括:主機(jī)信息、磁盤卷情況列表、運(yùn)行的進(jìn)程、服務(wù)清單、共享文件列表、補(bǔ)丁安裝情況、殺毒軟件安裝情況。該模塊主要代碼實(shí)現(xiàn)如圖3所示。
圖3 信息搜集模塊主要代碼段
2.3.2 異常事件檢測模塊
一旦進(jìn)入網(wǎng)絡(luò),攻擊者更傾向于使用本地工具(如WMI)來避免被EDR(端點(diǎn)檢測和響應(yīng)工具)和殺毒軟件檢測。由于WMI事件幾乎可以用于響應(yīng)任何操作系統(tǒng)動作,攻擊者往往通過注冊WMI事件來觸發(fā)攻擊行為。
本模塊的實(shí)現(xiàn)是通過CimCmdlets實(shí)現(xiàn)事件查詢功能,查詢注冊的永久事件,進(jìn)而獲取攻擊者惡意注冊的事件,判斷攻擊的觸發(fā)點(diǎn)。事件查詢能獲取攻擊者創(chuàng)建、修改和刪除的對象實(shí)例。對異常事件的檢測主要包括對以下幾個類實(shí)例的查詢:
__FilterToConsumerBinding。該類是一個系統(tǒng)關(guān)聯(lián)類,在注冊永久事件使用者時,使用該類來將_eventconsumer的實(shí)例與_eventfilter的實(shí)例關(guān)聯(lián)起來。
__EventFilter。永久事件使用者的注冊需要一個_eventfilter系統(tǒng)類的實(shí)例。
__EventConsumer 。事件消費(fèi)者系統(tǒng)類是一個抽象基類,用于注冊永久事件消費(fèi)者。
2.3.3 隱藏?cái)?shù)據(jù)檢測模塊
WMI存儲庫本身可以作為存儲數(shù)據(jù)的隱蔽手段。攻擊者能夠動態(tài)創(chuàng)建WMI類,并將任意數(shù)據(jù)存儲為該類的靜態(tài)屬性值來實(shí)現(xiàn)。該模塊的功能就是通過CimCmdlets對靜態(tài)WMI類屬性的值Properties進(jìn)行抽取和分析。
2.3.4 憑據(jù)使用分析模塊
攻擊者在橫向移動階段,通常會竊取用戶賬戶,并利用它們獲得特權(quán)和探索內(nèi)部網(wǎng)絡(luò)。因此,通過分析憑證的使用情況可以幫助安全團(tuán)隊(duì)發(fā)現(xiàn)異常行為。此外,對授權(quán)和身份驗(yàn)證日志的分析也可以了解每個經(jīng)過身份驗(yàn)證的用戶與多少設(shè)備交互,協(xié)助安全團(tuán)隊(duì)識別憑證濫用。
在模塊的實(shí)現(xiàn)上,通過CimCmdlets的-LogName參數(shù)對日志內(nèi)容進(jìn)行分類,憑證使用日志位于security類別下,可按特定的格式導(dǎo)出需要的日志信息。
在搭建完成橫向移動攻擊檢測模塊后,通過WMI后門測試程序來檢驗(yàn)該模型的有效性。由該WMI后門測試程序的源碼可大致了解其具備信息搜集、數(shù)據(jù)隱藏等功能,代碼片段如圖4所示。
圖4 WMI后門程序主要代碼段
利用三臺windows主機(jī)構(gòu)建封閉的網(wǎng)絡(luò)環(huán)境,主機(jī)通過交換機(jī)相連,模擬內(nèi)網(wǎng)環(huán)境。主機(jī)信息如下:
A主機(jī):win10 X64,計(jì)算機(jī)名LAPTOP-LMKQUJBK,powershell版本Major.5
B主機(jī):win7 X64,計(jì)算機(jī)名John-PC,powershell版本Major.4
C主機(jī):win7 X86,計(jì)算機(jī)名HelloTest,powershell版本Major.4
在A主機(jī)中運(yùn)行WMI后門測試程序,理論上該后門程序能夠?qū)崿F(xiàn)在A、B、C組成的網(wǎng)絡(luò)環(huán)境中進(jìn)行橫向移動攻擊。利用本文實(shí)現(xiàn)的橫向移動攻擊檢測模型對三臺主機(jī)進(jìn)行檢測,運(yùn)行結(jié)果如圖5所示。
圖5 橫向移動攻擊檢測運(yùn)行結(jié)果
通過對運(yùn)行結(jié)果的分析可知:
(1)在A主機(jī)中檢測到名為 Win32_hackClass的靜態(tài)類,其屬性項(xiàng)”hackProperty”值為"you can't find me";
(2)在A、B、C主機(jī)均發(fā)現(xiàn)惡意的永久事件注冊,該事件采用輪詢的方式每100秒運(yùn)行一次hackTest.exe;
(3)在B和C主機(jī)發(fā)現(xiàn)惡意賬戶遠(yuǎn)程登錄痕跡;
綜上所述,通過CimCmdlets實(shí)現(xiàn)的橫向移動攻擊檢測模塊運(yùn)行穩(wěn)定,能較好發(fā)現(xiàn)網(wǎng)絡(luò)中的橫向移動攻擊行為和活動路徑,達(dá)到預(yù)期的設(shè)計(jì)目標(biāo)。
新形勢下的網(wǎng)絡(luò)空間攻防對抗呈持續(xù)高壓狀態(tài),針對網(wǎng)絡(luò)空間的開放性和復(fù)雜性,攻擊方式也日益多變,橫向移動攻擊被越來越多的高級攻擊者所采用,且在不斷的升級演變。對橫向移動攻擊的研究應(yīng)給予高度的重視,關(guān)鍵的環(huán)節(jié)是能夠檢測發(fā)現(xiàn)已知與未知的類似活動。另外,對橫向移動攻擊的防御體系構(gòu)建、主動感知能力、應(yīng)急處置機(jī)制等方面的研究也是值得關(guān)注的方向。