Excel.exe不只是試算表軟體,
內建的VBA巨集和DDE功能也讓他成為完美的惡意程式執行平台,
幾乎存在於每台商用電腦中。
C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE
最經典的攻擊方式。
攻擊者會撰寫一段惡意的 VBA 程式碼,並將其嵌入到 Excel 檔案的巨集中。
為了讓程式碼自動執行,通常會利用內建的事件觸發器,
例如 Auto_Open() 或 Workbook_Open(),
只要使用者一打開檔案並「啟用內容」,惡意程式碼就會立刻執行。
Private Sub Workbook_Open()
Shell "C:\Windows\System32\calc.exe", vbNormalFocus
End Sub
DDE 是一個較老的 Windows 技術,允許應用程式之間交換資料。
雖然微軟已經預設停用並加入更多警告,但它仍然可能在某些舊版或設定不當的環境中被利用。
攻擊者可以在儲存格中插入一個特製的 DDE 公式,
當使用者打開檔案時,這個公式會嘗試啟動 cmd.exe 或 powershell.exe。
在任意儲存格中,輸入以下公式:
=cmd|'/c calc.exe'!A1
儲存並重新打開檔案。
Excel 會跳出多個安全性警告,詢問是否要啟動外部程式。如果使用者一路點擊「是」,小算盤就會被執行。
# 監控Excel產生的子進程(關鍵指標)
Get-WmiObject Win32_Process | Where {
$_.ParentProcessId -in (Get-Process EXCEL -EA 0).Id
} | Select Name, CommandLine
# 掃描可疑Excel檔案
Get-ChildItem "$env:TEMP\*.xls*" -EA 0 | ForEach {
$content = Get-Content $_.FullName -EA 0 | Out-String
if($content -match "=cmd\||Shell |Workbook_Open"){
echo "[!] Malicious: $($_.Name)"
}
}
# 完全停用VBA巨集
reg add "HKCU\Software\Microsoft\Office\16.0\Excel\Security" /v VBAWarnings /t REG_DWORD /d 4 /f
# 停用DDE
reg add "HKCU\Software\Microsoft\Office\16.0\Excel\Security" /v DisableDDEServerLaunch /t REG_DWORD /d 1 /f
reg add "HKCU\Software\Microsoft\Office\16.0\Excel\Security" /v DisableDDEServerLookup /t REG_DWORD /d 1 /f
=cmd|
開頭的內容Excel透過VBA巨集和DDE提供強大的程式執行能力。配合社交工程(偽裝成報表、發票),成功率極高。
最簡VBA攻擊:
Private Sub Workbook_Open(): Shell "calc": End Sub
最簡DDE攻擊:
=cmd|'/c calc'!A1