解密無文件攻擊的各種姿勢及最新檢測方法
" 無文件攻擊 " 不代表真的沒有文件,只是一種攻擊策略,其出發點就是避免將惡意文件放在磁盤上,以逃避安全檢測。所說的無文件,也未必是攻擊全程無文件,而是其中的一部分采用了無文件攻擊 [ 1 ] 。近期,受 NDSS2020 頂會文章 [ 2 ] 啟發,查閱趨勢科技等數篇安全報告及網頁文章,認為無文件攻擊是一種趨勢," 離地 / 隱形 / 無文件 " 是一個目前很熱門的方向。故本文圍繞無文件展開調研,收集 2020 年 4 月前的相關資料,內容包括無文件勒索、無文件挖礦等最新的無文件攻擊方式,并對其進行歸納、總結。同時,分析了該篇頂會文章的核心內容,進一步了解無文件攻擊的檢測思路。
一、無文件勒索
近期比較特別的有 ProLock(shellcode 嵌入 BMP 圖像中)、WannaRen(office 激活工具中硬編碼 powershell 命令),還有普通的惡意代碼注入合法進程及宏結合 powershell 等。具體情況如下:
ProLock [ 3 ] (2020.4.19)
將惡意 shellcode 嵌入到 BMP 圖像文件中(之前的版本 PwndLocker,嵌入到 AVI 視頻中,被加密文件存在被恢復的可能),通過混淆的 powershell 代碼將圖像中的代碼直接注入到內存中執行,達到可執行文件不落地的目的。使用 ShellCode 開發的勒索軟件比宏結合 powershell 更難被安全軟件識別,未來可能會成為更多勒索軟件開發者的選擇。
ProLock 勒索軟件作者將代碼嵌入一個名為 "WinMgr.bmp" 的 BMP 圖像中,ShellCode 代碼片段如下:
PowerShell 腳本解混淆后,將 ShellCode 直接注入內存中運行。Powershell 腳本如下:

ShellCode 注入到內存中的代碼:

ProLock 勒索軟件為了能夠順利加密文件,會調用 cmd 執行命令停止大量服務。這些服務包括數據庫相關服務、數據備份相關服務、安全軟件相關服務,如下所示:

WannaRen 勒索軟件 [ 4 ] (2020.4.14)
網上某軟件園的 2016office 激活工具中硬編碼了 powershell 的相關命令,如下:

解碼后得到可執行代碼,執行后會先延時 2000 秒(大概 33 分鐘),檢測是否存在相關安全防護進程,針對性很強,可以看出是針對國內普通的個人用戶環境。最后還是會執行一段 powershell 腳本,通過站點返回的內容作為命令執行。
FTCode 勒索軟件 [ 5 ] (2020.1)
FTCode 勒索病毒是一款基于 PowerShell 腳本的勒索病毒,主要通過垃圾郵件進行傳播,此勒索病毒攻擊流程,如下:

FTCode 勒索病毒 PowerShell 代碼,如下所示:

Sorebrect(2017/2019.1.2)
它將惡意代碼注入到目標系統的合法進程 svchost.exe 中 , 然后自毀以躲避檢測。

二、無文件挖礦
無文件挖礦的方式較普通,一般為利用 powershell 直接在內存中執行、通過 powershell 中嵌入 PE 文件加載等方式,同時還采用 WMI+powershell 等方式進行內存駐留。最近一篇文章 powershell 無文件挖礦病毒處置 [ 7 ] 也表明了目前無文件挖礦仍然存在。具體案例如下:
PowerGhost 2019.11 最新樣本 [ 6 ] [ 7 ]
PowerGhost 是從 2018 年被發現使用 powershell 無文件方式進行攻擊感染的挖礦以及 DDOS 病毒,其感染方式利用了永恒之藍,MSSQL 爆破,SSH 爆破,wmi 以及 smb 爆破遠程命令執行等,同時對 windows 和 linux 進行攻擊,一旦該病毒進入內網,會在內網迅速傳播。目前其主要感染地區在廣東、浙江、上海以及江蘇。
該病毒母體模塊分為 2 個版本,x86 和 x64,x86 使用 antitrojan.ps1,x64 使用 antivirus.ps1,本次分析 x64 版本的 antivirus.ps1。當前病毒版本為 1.5。
母體 payload 分布以及執行圖,antivirus.ps1 中主要分為 3 個部分,如下圖:

永恒之藍木馬 [ 8 ] [ 9 ]
2019 年 4 月 3 日,騰訊安全御見威脅情報中心檢測到永恒之藍下載器木馬再次更新,此次更新改變了原有的挖礦木馬執行方式,通過在 Powershell 中嵌入 PE 文件加載的形式,達到執行 " 無文件 " 形式挖礦攻擊。新的挖礦木馬執行方式沒有文件落地,直接在 Powershell.exe 進程中運行,可能造成難以檢測和清除。這種注入 " 白進程 " 執行的方式可能造成難以檢測和清除惡意代碼。

Coinminer
2019 年第二季度,挖礦病毒也同樣出現了新型變種。首先值得注意點是亞信安全最新截獲了 "Coinminer.Win32.MALXMR.TIAOODCJ" 病毒,該病毒可首先利用 CVE-2019-2725 漏洞執行特定命令,以利用 PowerShell 執行惡意行為,從遠端 C&C 服務器下載證書文件 cert.cer,并使用管理 Windows 中的證書組件 CertUtil 來解碼文件,以達到躲避殺毒軟件檢測的目的。

PowershellMiner [ 10 ]
2018 年 3 月,利用 WMI+Powershell 方式實現的無文件攻擊行為,其目的是長駐內存挖礦。由于此攻擊沒有本地落地文件,難以察覺,企業利益默默受到侵害。此次攻擊,具備無文件攻擊特性,所有模塊功能均加載到內存中執行,沒有本地落地文件。為了迅速在內網傳播,采用了 SMB 弱口令爆破攻擊和 " 永恒之藍 " 漏洞攻擊,二者只要有一種能成功,就可以橫向感染到其它主機。病毒直接使用 powershell.exe 進行挖礦,CPU 占用率達到 87%,其腳本功能是從 wmi 類中讀取挖礦代碼并執行。

如上圖,原始病毒體為 info*.ps1(64 位系統對應 info6.ps1,32 位系統對應 info3.ps1), 其為 Powershell 腳本,被加載后內存存在 4 個模塊,分別為挖礦模塊、Minikatz 模塊、WMIExec 模塊、MS17-010 攻擊模塊。
攻擊順序如下:
1. 首先,挖礦模塊啟動,持續進行挖礦。
2. 其次,Minikatz 模塊對目的主機進行 SMB 爆破,獲取 NTLMv2 數據。
3. 然后,WMIExec 使用 NTLMv2 繞過哈希認證,進行遠程執行操作,攻擊成功則執行 shellcode 使病原體再復制一份到目的主機并使之運行起來,流程結束。
4. 最后,如 WMIExec 攻擊失敗,則嘗試使用 MS17-010" 永恒之藍 " 漏洞攻擊,攻擊成功則執行 shellcode 使病原體再復制一份到目的主機并使之運行起來(每感染一臺,重復 1、2、3、4)。
此病毒采用的是 WMI+Powershell 的內存駐留方式,模塊以服務形式存在,每 5600 秒可自動觸發一次。
三、無文件攻擊檢測
由于其通常在內存中運行避免落地文件,同時 powershell 腳本易混淆檢測困難,傳統的基于文件的反病毒軟件很難檢測到此類攻擊。故 NDSS2020 上有學者提出針對離地攻擊檢測的有效手段 [ 2 ] ,筆者認為也可以推廣到一般的無文件攻擊檢測。
引入概念:離地攻擊,只使用預安裝的軟件并且攻擊者沒有在系統上安裝額外的二進制可執行文件。帶有宏、VB 腳本、powershell 腳本或者使用系統命令(如 netsh 命令)的文檔屬于離地攻擊的范圍。當使用 dual-use tools 時,若是 Mimikatz 等被下載時,不能被稱為離地攻擊 [ 11 ] [ 12 ] 。

問題描述:現有的反病毒軟件檢測方法很難檢測到該類攻擊,分析檢測該攻擊所要具備的條件。
解決方式:依賴于內核級的起源監控,捕獲每個目標程序的動態行為。通過嵌入起源數據構建異常檢測模型,檢測偏離先前觀察到的歷史程序運行時的行為,因此可以檢測以前看不到的攻擊。使用神經嵌入模型,使得一個進程起源圖中的不同部分投射到 n 位數值向量空間中,這個空間中,相似的組件在地理位置上更接近。使用基于密度的新穎檢測方法,檢測起源圖中的異常因果路徑。
文章貢獻:設計并實現了 provedetector,基于起源的系統,用于檢測偽裝技術的隱蔽惡意軟件;為了保證較高的檢測精度和效率,提出了一種新的路徑選擇算法來識別起源圖中潛在的惡意部分;設計了一個新的神經嵌入和機器學習管道,自動為每個程序建立一個輪廓并識別異常進程;用真實的惡意軟件進行系統評估,通過幾個可解釋性的研究證明了其有效性。

其核心 ProvDetector 分為四部分:圖構建、特征提取、嵌入和異常檢測。部署監控代理,按照定義收集系統數據放入數據庫。定期掃描數據庫檢查是否有新添加的進程被劫持。對于每個進程,先構建起起源圖(圖構建)。然后從源點圖選擇路徑子集(特征提取)并將路徑轉換為數值向量(嵌入)使用一個新穎的檢測器來獲得嵌入向量的預測并報告最終決定(異常檢測)。
實驗評估:評估其檢測精度,使用精度、召回率及 F1-Score 來度量。

同時,對檢測結果進行解釋,指出為什么檢測結果是正確的,給出了理論證明。分析其運行性能,訓練、檢測時的開銷項及開銷,評估其企業實用性。是一篇工作量很大、很有意義的優質文章。
據賽門鐵克報告顯示,在 2019 年上半年,隱秘惡意軟件占所有攻擊的 35%,增長了 364%,這些攻擊成功的可能性是傳統攻擊的 10 倍。較隱蔽的攻擊措施、更高的成功率,使得無文件攻擊逐漸火熱。同時由于其難以捕捉、難以檢測的特性,給傳統防御技術帶來了巨大的挑戰。