沙盒模擬分析經常是傳統端點防護與網路防護的最後一道防線。所謂沙盒模擬分析正如其名所言,就是讓惡意程式或可疑檔案在虛擬化的控制環境當中毫無顧忌地執行,然後分析其行為,藉此判斷檔案是否安全。此方法有助於確保端點安全,將不信任的檔案隔離,以免對系統造成損害,甚至危害企業基礎架構。
然而,如果惡意程式找到了可以避開沙盒模擬分析的方法呢?如果惡意程式可以知道自己正在沙盒模擬環境當中執行呢?如果惡意程式刻意隱藏自己的惡意行為,讓沙盒模擬環境看不出來呢?
以下探討當前一些知名的惡意程式,看看它們如何騙過傳統資安防護、如何在系統上暢行無阻,以及新的「進階」沙盒模擬分析技巧如何解決這些問題。
不怕沙盒模擬分析技巧的知名惡意程式
Locky 勒索病毒家族 (趨勢科技命名為:RANSOM_LOCKY) 是最經典的範例,它最著名的就是能夠利用多種方法來感染系統,包括: 加密的 DLL、 Windows 腳本檔以及社交工程 垃圾郵件附件檔案 (暗藏惡意巨集的文件檔、.RAR 壓縮檔,以及JavaScript 和 VBScript 腳本),或者利用漏洞攻擊套件 (例如之前收錄了 Flash 零時差漏洞的某個攻擊套件)。
Locky 在 2016 年因為使用了系統核心漏洞攻擊套件而備受矚目。其攻擊程序使用了一個木馬程式 (TROJ_LOCKY.DLDRA) 來當作檔案下載工具,該木馬程式會利用一個本機權限升級漏洞 (CVE-2015-1701:早在 2015 年 5 月 12 日即已修補),偽裝成一個系統執行程序來騙過沙盒模擬分析。藉由系統核心漏洞,駭客就能透過系統核心機制 (如:工作項目、系統執行緒、非同步程序呼叫) 來連線至幕後操縱 (C&C) 伺服器並下載勒索病毒。所以,駭客不需在系統上產生檔案就能讓系統感染惡意程式。此技巧通常會配合當年 Magnitude 漏洞攻擊套件所收錄的某個零時差漏洞 (CVE-2016-1019:2016 年 4 月 5 日已修補)。
最近較新的 勒索病毒家族 也開始積極利用某些技巧來判斷自己是否在虛擬機器 (VM) 或沙盒模擬環境當中執行。例如 Locky 的變種就會利用層層編碼的惡意 JavaScript 來下載並執行壓縮的 DLL 檔案,內含偵測虛擬機器和執行環境的程式碼。KeRanger (OSX_KERANGER) 是一個暗藏在檔案分享軟體與惡意 Mach-O 檔案的 Mac 平台勒索病毒,可在被感染的系統上蟄伏三天之後再開始加密系統上的檔案。
Shamoon/Disttrack (WORM_DISTTRACK 家族) 最早發現於 2012 年,通常出現在針對性攻擊當中,主要攻擊對象為中東地區知名機構。它會將系統主開機磁區 (MBR) 清除,讓受害機構網域下的電腦和伺服器無法開機。當它在 2016 年 12 月重出江湖時,開始多了一個反制沙盒模擬分析環境的技巧,感染當下不會出現惡意行為,而是設定了一個定時炸彈在特定日期和時間觸發,此時才會在系統上植入惡意元件。
無檔案式惡意程式如何避開沙盒模擬分析?
對於無檔案式攻擊來說,元件越少越好。因為這類攻擊一般並無實際的檔案,也不會下載檔案到受害電腦或寫入硬碟,惡意程式通常直接在系統記憶體中執行。對駭客來說,沒有實體可分析的檔案就不會留下太多痕跡,有助於反制傳統的沙盒模擬分析。
由於直接進入系統記憶體或系統登錄是阻礙最小的入侵途徑,所以無檔案式攻擊技巧在網路犯罪集團之間開始流行起來。 一些專門攻擊企業機構的木馬程式 和 銷售櫃台系統 (PoS) 惡意程式都是藉由這種方式散布。例如,網路間諜程式 Duqu 2.0 就是在受害系統的記憶體中直接執行其惡意模組。它利用知名的滲透測試工具 Metasploit 直接從受害系統的記憶體中竊取密碼,然後將自己提升到系統的權限。
另一種無檔案式攻擊是利用腳本和系統工具來運作,例如,VBA (Visual Basic for Applications) 和 JavaScript (.JS) 腳本以及 HTML Application (.HTA)、Publisher (.PUB) 和 Compiled HTML (.CHM) 都是無檔案式攻擊經常使用的方式。一些系統內建工具,如 PowerShell、命令提示字元、.Net Framework 也都是歹徒利用的對象。
以下列出幾種無檔案式攻擊躲避技巧來對照它們所避開的傳統沙盒模擬分析機制:
躲避技巧 | 無檔案式攻擊 | 傳統沙盒模擬分析機制 |
避開檔案掃瞄 | 不使用檔案 | 隨選檔案掃瞄 |
避開行為關聯分析 | 使用腳本或命令提示字元指令,躲藏在系統執行程序當中 | 攔截系統層次 API |
避開沙盒模擬分析 | 延後執行 (建立排程工作) | 觀察時間有限 |
避開鑑識分析 | 記憶體內的感染痕跡不久就會消失 |
由於躲避沙盒模擬分析的技巧在惡意程式之間日漸流行,因此很重要的一點是,沙盒環境必須要能客製化,才能盡可能精確反映真實生產環境的系統組態 (包含軟體在內)。這有助於真正引出可疑檔案的惡意行為 (例如攻擊系統核心漏洞)。沙盒模擬環境若能從各種不同層面來分析惡意檔案的行為和程式碼,包括:腳本、命令提示字元指令、植入系統的檔案等等,就更能發現經過編碼及擅長躲避的惡意程式,這是一般傳統沙盒模擬環境所無法做到的。
惡意程式反制虛擬機器的程式碼通常會經過壓縮,只有要執行時才會解開,因此沙盒模分析必須要能在執行時期發掘及偵測這類躲避技巧才能加以防範。
市面上許多沙盒解決方案通常只檢查系統 API (應用程式介面),而這只需採用無檔案式攻擊就能避開 (例如使用腳本和系統工具)。要防範這類攻擊,需要更全面的系統監控,不能只檢查系統 API,還要檢查是否有惡意通訊。
傳統的沙盒模擬分析大多仰賴動態程序分析 (在模擬環境中執行惡意程式檔案來查看其行為)。但像 CrypMIC (RANSOM_CRYPMIC) 和 Cerber (RANSOM_CERBER) 這類勒索病毒卻會偵測系統的 CPU 型號 來判斷自己是否正在沙盒模擬環境當中執行。
「進階」沙盒模擬分析技巧如何防範擅長躲避的惡意程式?
趨勢科技的沙盒模擬環境可針對使用者實際的系統組態而客製化,並結合動態程序分析與靜態檔案分析來提供更優異的鑑識分析能力。能針對檔案的各環節進行反向工程分析,進而提升檔案惡意程式碼與行為的偵測率。例如 Shamoon 當中的定時炸彈就能經由靜態檔案分析來偵測,直接檢查二進位檔案中的日期資料,然後透過動態程序分析在某些系統上偵測其惡意行為。另一個例子是使用命令提示字元指令或利用 Component Model Object (COM) 來將惡意程式碼插入執行程序當中,這是單純的行為分析所無法偵測的。
趨勢科技 Deep Discovery™、 Deep Security™ 和趨勢科技趨勢科技 OfficeScan™ 端點防護當中所包含的客製化沙盒模擬分析,可攔截 API 來分析軟體元件之間的溝通和互動,檢查是否有惡意程式躲避技巧所會使用的整串程式碼。此外,還能動態追蹤、控制、分析這些指令的意涵來看看是否暗藏躲避技巧的邏輯。同時還可從這些指令進一步找出程式可能的執行路徑。然後分析每一條路徑是否有可疑或惡意的行為 (例如先蟄伏一段時間之後再開始執行)。
事實上,今日的威脅情勢有如一場軍備競賽。資安產業隨時不斷在推出新的技術,當然網路犯罪集團也不遑多讓。未來,歹徒的 犯罪手法、技巧和程序將更加複雜、也更加純熟。惡意程式將具備各種躲避傳統資安防護的技巧。如同我們在 2016 年所見,歹徒的行為已開始更加隱密,打擊面也更廣,因此漏洞攻擊與感染方式亦將如此發展。除了腳本檔 (.JS、.VBS、.VBA、PowerShell 等等) 之外,我們預料 PE 執行檔也將出現更多這類躲避沙盒模擬分析的技巧。
儘管沙盒模擬分析特別擅長偵測未知威脅與 零時差漏洞攻擊,但它並非萬靈丹,因此最好將它用來補強 閘道 、 伺服器 、 網路 及 端點裝置等多層式跨世代資安防護。
原文出處:How can Advanced Sandboxing Techniques Thwart Elusive Malware? 作者:Moony Li 與 Jerry Liu (趨勢科技研發工程師)