攻擊手法還原
- 攻擊者上傳 ASP WebShell 至深層目錄。
- 在 IIS 管理器中修改該站點屬性:主目錄 → 應用程式保護設為「低」(進程外)、勾選「寫入」權限。
- 管理員發現後刪除 WebShell、恢復站點屬性、甚至刪除預設站點。
- 攻擊者改良:建立隱藏虛擬目錄指向
C:\Windows\System32\myhome,上傳 WebShell 至該處。刪除網站根目錄下的對應資料夾,IIS 管理器不再顯示虛擬目錄,但 WebShell 仍可透過 URL 存取 (/kiss/kiss.asp)。
技術原理
- IIS 虛擬目錄映射至任意實體路徑,不受網站根目錄限制。
- 「應用程式保護=低」使該虛擬目錄在獨立進程池執行,權限為 IWAM_帳號 (通常較高)。
- 「寫入」權限允許 HTTP PUT/POST 上傳檔案。
- 刪除根目錄資料夾不影響已建立的虛擬目錄映射,管理介面隱藏但服務仍生效。
偵測與清除
- 枚舉所有虛擬目錄:
appcmd list vdir、Get-WebVirtualDirectory (PowerShell)、Metabase Explorer (IIS 6)。
- 檢查應用程式池設定:查找「低」隔離等級、異常實體路徑 (如 System32 子目錄)。
- 掃描可疑腳本:定期掃描所有虛擬目錄實體路徑下的
.asp, .aspx, .php, .jsp 等可執行檔,比對已知簽名/雜湊。
- 監控 IIS 配置變更:
auditpol /set /subcategory:"Application Generated" /success:enable /failure:enable、SIEM 關聯異常虛擬目錄建立事件 (Event ID 226, 227)。
- 清除步驟:停用/刪除虛擬目錄、刪除實體檔案、重設應用程式池為「高」隔離、移除「寫入」權限、重置相關帳號密碼、審計近期登入記錄。
防禦建議
- 最小權限原則:網站根目錄唯讀;上傳目錄獨立磁碟/分區、掛載
noexec、移除執行權限、禁用腳本映射。
- 禁用「低」隔離模式:IIS 6 預設為「高」(工作進程隔離);嚴禁降級。
- 禁止 Web 目錄寫入:除非業務必需 (且需嚴格驗證、隔離執行)。
- 系統目錄保護:
C:\Windows, C:\Program Files 等嚴禁建立虛擬目錄映射;ACL 限制非 TrustedInstaller/系統寫入。
- 部署 WAF/RASP:攔截 WebShell 特徵行為 (命令執行、檔案管理、資料庫連線)。
總結
虛擬目錄隱藏後門利用 IIS 架構特性,極具隱蔽性。防禦關鍵在於「配置審計自動化、權限最小化、行為偵測即時化」。