iT邦幫忙

2025 iThome 鐵人賽

DAY 22
0
Security

《30天深入 LOLBAS:從內建工具到紅藍隊武器化》系列 第 22

【LOLBAS鐵人賽Day22】Excel.exe:辦公室環境的萬能攻擊工具

  • 分享至 

  • xImage
  •  

Excel.exe不只是試算表軟體,
內建的VBA巨集DDE功能也讓他成為完美的惡意程式執行平台,
幾乎存在於每台商用電腦中。

工具特性


  • 路徑: C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE
  • 濫用點: VBA巨集、DDE公式
  • 優勢: 使用者信任、繞過白名單

攻擊Demo


第一種:VBA Macros

最經典的攻擊方式。
攻擊者會撰寫一段惡意的 VBA 程式碼,並將其嵌入到 Excel 檔案的巨集中。
為了讓程式碼自動執行,通常會利用內建的事件觸發器,
例如 Auto_Open() 或 Workbook_Open(),
只要使用者一打開檔案並「啟用內容」,惡意程式碼就會立刻執行。

Step 1:建立惡意 VBA 程式碼

  • 打開一個新的 Excel 檔案。
  • 按下 Alt + F11 進入 VBA 編輯器。
  • 在左側的專案總管中,找到 ThisWorkbook 並雙擊它。
  • 在右側的程式碼視窗中,貼上以下程式碼:
Private Sub Workbook_Open()
    Shell "C:\Windows\System32\calc.exe", vbNormalFocus
End Sub

Step 2:儲存檔案並進行社交工程

  • 關閉 VBA 編輯器。
  • 將檔案另存為「Excel 啟用巨集的活頁簿 (*.xlsm)」。
  • 當受害者打開這個檔案時,Excel 會顯示一條黃色的安全性警告:「保護檢視...啟用內容」。
  • 攻擊者通常會在文件內容中加入誘騙性文字,例如「請點擊『啟用內容』以檢視完整報表」或「文件已使用新版加密,需啟用巨集才能解密」。
  • 一旦使用者點擊「啟用內容」,Workbook_Open() 就會被觸發,小算盤隨即彈出。在真實攻擊中,calc.exe 會被換成 powershell.exe -enc ... 來下載並執行真正的惡意軟體。

image

第二種:DDE (動態資料交換) - 復古的攻擊手法

DDE 是一個較老的 Windows 技術,允許應用程式之間交換資料。
雖然微軟已經預設停用並加入更多警告,但它仍然可能在某些舊版或設定不當的環境中被利用。
攻擊者可以在儲存格中插入一個特製的 DDE 公式,
當使用者打開檔案時,這個公式會嘗試啟動 cmd.exe 或 powershell.exe。

Step 1:使用 DDE 執行命令

在任意儲存格中,輸入以下公式:

=cmd|'/c calc.exe'!A1

儲存並重新打開檔案。

Excel 會跳出多個安全性警告,詢問是否要啟動外部程式。如果使用者一路點擊「是」,小算盤就會被執行。

image

偵測方法


# 監控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

IOCs


  • Excel.exe → calc.exe/cmd.exe/powershell.exe
  • .xlsm/.xlsb檔案(含巨集)
  • CSV含有=cmd|開頭的內容
  • Excel產生非預期的子進程

總結


Excel透過VBA巨集和DDE提供強大的程式執行能力。配合社交工程(偽裝成報表、發票),成功率極高。

最簡VBA攻擊

Private Sub Workbook_Open(): Shell "calc": End Sub

最簡DDE攻擊

=cmd|'/c calc'!A1

上一篇
【LOLBAS鐵人賽Day21】WorkFolders.exe:相對路徑劫持&如何成為一個漏洞發掘家!
下一篇
【LOLBAS鐵人賽Day23】Explorer.exe:檔案總管的持久化攻擊
系列文
《30天深入 LOLBAS:從內建工具到紅藍隊武器化》24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言