如今每天都能發(fā)現(xiàn)超過55萬個(gè)新的惡意軟件樣本,企業(yè)如何避免系統(tǒng)漏洞暴露在這些網(wǎng)絡(luò)威脅中成為了工作中的重中之重。盡管如此,許多人仍然讓自己暴露在了風(fēng)險(xiǎn)之中。
0day攻擊的漏洞利用讓人比較頭疼,因?yàn)檐浖⿷?yīng)商也沒有漏洞補(bǔ)丁。谷歌的一項(xiàng)研究顯示,2020年有24個(gè)零日漏洞遭攻擊者利用。同時(shí),至少80%的攻擊利用了三年前報(bào)告披露的漏洞。
許多軟件漏洞以復(fù)雜的方式隱藏,如果企業(yè)依賴普通的網(wǎng)絡(luò)安全解決方案,則很難檢測到它們。有效檢測漏洞利用需要深入的系統(tǒng)知識和對所有應(yīng)用程序的持續(xù)監(jiān)控,包括漏洞利用預(yù)防功能的先進(jìn)的下一代網(wǎng)絡(luò)保護(hù)解決方案。
漏洞利用防護(hù)原理
雖然每天都會出現(xiàn)成百上千的新惡意軟件樣本,但犯罪分子只能使用少數(shù)技術(shù)來利用軟件漏洞,而且其中大部分都與某種類型的隨機(jī)存取存儲器 (RAM) 操作有關(guān)。通常,犯罪分子會將一些漏洞利用技術(shù)和惡意軟件分發(fā)連接在一起。這意味著企業(yè)的網(wǎng)絡(luò)安全解決方案必須能夠檢測并防護(hù)多種多樣的漏洞利用技術(shù)。
本文總結(jié)了五種常見漏洞利用技術(shù),為企業(yè)系統(tǒng)和數(shù)據(jù)安全防護(hù)提供參考。
1. 返回導(dǎo)向編程保護(hù)
數(shù)據(jù)執(zhí)行保護(hù) (DEP)是一種系統(tǒng)級內(nèi)存保護(hù)功能,從Windows XP開始就內(nèi)置于 Windows 操作系統(tǒng)中。它使系統(tǒng)能夠?qū)⒁豁摶蚨囗搩?nèi)存標(biāo)記為不可執(zhí)行。從一開始,犯罪分子就嘗試?yán)@過DEP,并且他們已經(jīng)使用不同的技術(shù)成功地繞過了一段時(shí)間,其中一種技術(shù)就是返回導(dǎo)向編程 (ROP)。
網(wǎng)絡(luò)犯罪分子使用ROP鏈(來自現(xiàn)有合法代碼部分的一小段)來構(gòu)建工作代碼。這些小段代碼是通過返回指令調(diào)用的,在某些時(shí)候,犯罪分子會調(diào)用WinAPI函數(shù)。應(yīng)用程序的堆棧是一個(gè)包含內(nèi)存地址位置(返回地址)列表的內(nèi)存區(qū)域。如果WinAPI函數(shù)沒有用call指令調(diào)用,則堆棧上的返回地址將是錯(cuò)誤的。
當(dāng)系統(tǒng)找不到呼叫指令時(shí),更為有效的網(wǎng)絡(luò)保護(hù)解決方案將終止ROP攻擊。
2. 內(nèi)存操作
犯罪分子通過在返回導(dǎo)向編程攻擊中鏈接ROP小工具,使用堆棧透視來繞過DEP等保護(hù)措施。通過堆棧旋轉(zhuǎn),攻擊可以從真實(shí)堆棧轉(zhuǎn)向新的虛假堆棧,該堆棧是攻擊者可以控制的緩沖區(qū),例如堆,可以從堆控制未來的程序執(zhí)行流程。
雖然Windows提供導(dǎo)出地址過濾 (EAF),但下一代網(wǎng)絡(luò)安全解決方案可以提供訪問過濾器,防止通過代碼讀取Windows可執(zhí)行文件 (PE) 標(biāo)頭和導(dǎo)出/導(dǎo)入表,使用特殊保護(hù)標(biāo)志來保護(hù)內(nèi)存區(qū)域。訪問過濾器還應(yīng)支持許可名單,以便根據(jù)需要調(diào)整啟發(fā)式方案。
3. 代碼注入保護(hù)
網(wǎng)絡(luò)犯罪分子擅長利用以下幾種代碼注入技術(shù)開展攻擊。
(1) 進(jìn)程鏤空是其中一種,其中受信任的應(yīng)用程序(例如explorer.exe或svchost.exe)以掛起狀態(tài)加載到系統(tǒng)上,充當(dāng)惡意代碼的容器。由于一個(gè)鏤空進(jìn)程是在掛起狀態(tài)下創(chuàng)建的,它的內(nèi)存被取消映射并被惡意代碼替換。惡意代碼的執(zhí)行在合法進(jìn)程下被掩蓋,通常會繞過普通的安全產(chǎn)品的防御和檢測分析。
(2) 另一種稱為反射動(dòng)態(tài)鏈接庫 (DLL) 加載的技術(shù),加載DLL時(shí)發(fā)生在內(nèi)存而非磁盤。Windows沒有支持此功能的LoadLibrary函數(shù),因此如果用戶懷疑遭惡意使用,可以檢查并阻止它。
(3) Early Bird代碼注入技術(shù)利用了程序在計(jì)算機(jī)上執(zhí)行時(shí)發(fā)生的應(yīng)用程序線程處理過程。在許多安全產(chǎn)品放置hook之前,它會在線程初始化的早期階段加載惡意代碼。這允許惡意軟件在不被檢測到的情況下執(zhí)行其惡意操作。Windows的早期啟動(dòng)反惡意軟件 (ELAM) 技術(shù)可用于幫助檢測和防止采用這種方法的攻擊。
(4) 異步過程調(diào)用 (APC)是一種Windows功能,可以將線程從其常規(guī)執(zhí)行路徑轉(zhuǎn)移并引導(dǎo)它執(zhí)行其他操作。APC最重要的一點(diǎn)是,當(dāng)它被調(diào)度時(shí),它是針對特定線程的。攻擊者可以注入該調(diào)用并使用它來運(yùn)行惡意代碼。
因此,先進(jìn)的下一代網(wǎng)絡(luò)安全解決方案可以在暫停模式下檢測進(jìn)程中的注入,這會清空原始內(nèi)存并阻止受影響的進(jìn)程。
4. 提權(quán)保護(hù)
Windows中的進(jìn)程有一個(gè)所謂的安全標(biāo)識符 (SID)。SID是可變長度的唯一值,用于標(biāo)識安全主體(例如安全組)。
當(dāng)父進(jìn)程創(chuàng)建子進(jìn)程時(shí),子進(jìn)程繼承SID。這需要在應(yīng)用程序加載期間進(jìn)行檢查,因?yàn)橛脩艨蓮闹邪l(fā)現(xiàn)惡意活動(dòng)。在流程執(zhí)行期,SID不能被更改。對于敏感功能,漏洞利用防護(hù)軟件也會檢查SID在執(zhí)行過程中是否保持不變。
例如,如果攻擊者想要將CreateProcessWithToken函數(shù)與來自另一個(gè)進(jìn)程的安全令牌(可能被預(yù)先竊取)一起使用,則將提取SID并根據(jù)當(dāng)前進(jìn)程進(jìn)行檢查。如果沒有匹配項(xiàng),它將發(fā)出警報(bào)并阻止該進(jìn)程。
5. 防御規(guī)避保護(hù)
許多先進(jìn)的下一代網(wǎng)絡(luò)安全解決方案在敏感的API函數(shù)上設(shè)置hook,以在允許內(nèi)核提供請求服務(wù)之前進(jìn)行攔截和執(zhí)行檢查,例如防病毒掃描。犯罪分子可以充分利用這一功能“監(jiān)控敏感功能”,通過以偏移量調(diào)用不受監(jiān)控、非敏感的函數(shù)(故意解決重要的內(nèi)核服務(wù)),以逃避安全軟件的檢測。因此,先進(jìn)的下一代網(wǎng)絡(luò)安全解決方案可以防止攻擊者通過未受保護(hù)的API函數(shù)訪問敏感的內(nèi)核函數(shù)。
漏洞利用防護(hù)是一種防護(hù)作用較小的技術(shù)和啟發(fā)式方法,但它們是任何多層安全計(jì)劃的關(guān)鍵部分——尤其是針對0day漏洞的復(fù)雜網(wǎng)絡(luò)攻擊。無論是最近發(fā)現(xiàn)的漏洞利用還是現(xiàn)有的、未修補(bǔ)的漏洞,只需一次攻擊即可導(dǎo)致災(zāi)難性的數(shù)據(jù)丟失并可能摧毀用戶業(yè)務(wù)。