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