研究動機
SQL Injection 防禦常靠應用層過濾,易遺漏。利用 ISAPI Extension 掛載於 IIS 進程,可在Web 伺服器層統一攔截惡意請求,同時可作為隱蔽後門 (進程/連接埠/服務全隱藏)。
ISAPI Extension vs Filter
- Filter:掛載於所有請求,適合日誌、認證、重寫 URL
- Extension:對應特定副檔名 (如 .asp → asp.dll, .php → php5isapi.dll),獨立處理特定 HTTP 請求,隱蔽性更高
權限提升關鍵:InProcessIsapiApps
- Metabase 鍵
LM/W3SVC/InProcessIsapiApps 列出的 DLL 由 inetinfo.exe (Local System) 直接載入
- 不在列表中 → 由
dllhost.exe (IWAM_帳號) 載入,權限極低
- 植入後門策略:
- 將惡意 DLL 加入 InProcessIsapiApps (需 adsutil.vbs)
- 或劫持既有高權限 mapping (如 .printer → msw3prt.dll)
ISAPI Extension 必須匯出三個函數
GetExtensionVersion:版本協商
HttpExtensionProc:核心請求處理入口
TerminateExtension:卸載清理
後門功能設計
- 認證:擴充 HTTP Method 新增
ICY,僅接受 ICY 請求
- Shell:回傳命令列輸出;若 System 禁用 cmd,提供下載自訂 cmd
- 隱蔽:無新增連接埠、服務、進程,全借 IIS 進程
防禦建議
- 定期稽核
InProcessIsapiApps 清單
- 檢查
Script Maps 是否有異常副檔名對應
- 啟用 IIS 稽核日誌,監控異常 HTTP Method
- 最小權限原則:Application Pool 使用專用低權限身分
本文僅供安全研究與防禦參考,嚴禁用於非法入侵。