惡意 IIS 擴展悄悄地向服務器打開持久性后門
攻擊者越來越多地將 Internet 信息服務 (IIS) 擴展用作服務器的隱蔽后門,這些后門隱藏在目標環境的深處,并為攻擊者提供了持久的持久性機制。雖然之前已經發表了關于特定事件和變體的研究,但對于攻擊者如何利用 IIS 平臺作為后門通常知之甚少。
惡意 IIS 擴展在針對服務器的攻擊中很少遇到,攻擊者通常只使用腳本Web shell作為第一階段的有效負載。與腳本 Web shell 相比,這導致惡意 IIS 擴展的檢測率相對較低。IIS 后門也更難檢測,因為它們大多與目標應用程序使用的合法模塊位于相同的目錄中,并且它們遵循與干凈模塊相同的代碼結構。在大多數情況下,實際的后門邏輯很少,如果不更廣泛地了解合法 IIS 擴展的工作原理,就不能將其視為惡意,這也使得確定感染源變得困難。
通常,攻擊者首先利用托管應用程序中的一個關鍵漏洞進行初始訪問,然后再將腳本 Web shell 作為第一階段有效負載。稍后,攻擊者會安裝一個 IIS 后門,以提供對服務器的高度隱蔽和持久的訪問。正如我們在 2022 年 1 月至 2022 年 5 月期間針對 Exchange 服務器的活動以及我們之前對自定義 IIS 后門ScriptModule.dll和App_Web_logoimagehandler.ashx.b6031896.dll的研究中觀察到的那樣,攻擊者還可以安裝定制的 IIS 模塊以滿足他們的目的. 一旦注冊到目標應用程序,后門就可以監控傳入和傳出請求并執行其他任務,例如在用戶對 Web 應用程序進行身份驗證時在后臺運行遠程命令或轉儲憑據。
由于我們預計攻擊者將繼續越來越多地利用 IIS 后門,因此事件響應者必須了解這些攻擊如何發揮作用以成功識別和防御它們的基礎知識。組織可以通過以下方式進一步提高防御能力微軟 365Defender,其保護能力來自此類研究以及我們對服務器攻擊和妥協的獨特可見性。借助威脅和漏洞管理以及防病毒功能等關鍵保護功能,微軟 365Defender 為組織提供了一個全面的解決方案,可以協調跨域、跨電子郵件、身份、云和端點的保護。
在這篇博文中,我們詳細介紹了 IIS 擴展的工作原理,并深入了解攻擊者如何將它們用作后門。我們還分享了我們在過去一年中對 IIS 威脅形勢的一些觀察,以幫助防御者識別和防御這種威脅,并為更大的安全社區做好準備,以應對任何日益復雜的問題。
了解 IIS 擴展
IIS 是一種靈活的通用 Web 服務器,多年來一直是 Windows 平臺的核心部分。作為用于托管網站、服務和應用程序的易于管理、模塊化和可擴展的平臺,IIS 為眾多組織提供關鍵業務邏輯。IIS 的模塊化架構允許用戶根據自己的需要擴展和定制 Web 服務器。這些擴展可以采用本機 (C/C++) 和托管 (C#、VB.NET) 代碼結構的形式,后者是我們在這篇博文中的重點。擴展可以進一步分類為模塊和處理程序。
IIS 管道是由 ASP.NET 運行時啟動以處理請求的一系列可擴展對象。IIS 模塊和處理程序是 .NET 組件,它們充當管道中的主要可擴展點。每個請求在由單個 IIS 處理程序處理之前由多個 IIS 模塊處理。就像一組構建塊一樣,添加了模塊和處理程序來為目標應用程序提供所需的功能。此外,可以配置處理程序以響應請求中的特定屬性,例如 URL、文件擴展名和 HTTP 方法。例如,Aspnet_isapi.dll是一個用于常見.aspx擴展的預配置 IIS 處理程序。
創建自定義托管 IIS 模塊
要創建托管 IIS 模塊,代碼必須實現IHttpModule接口。IHttpModule接口有兩個具有以下簽名的方法:Init ()和Dispose()。
圖 1. IIS 模塊框架
在Init()中,模塊可以與請求管道中可用的任意數量的 HTTP 事件同步,此處按順序列出:
- 開始請求
- 驗證請求
- 授權請求
- 解析請求緩存
- 獲取請求狀態
- PreRequestHandlerExecute
- PostRequestHandlerExecute
- 釋放請求狀態
- 更新請求緩存
- 結束請求
- PreSendRequestHeaders
- 預發送請求內容
然后應將新創建的擴展與目標應用程序映射以完成注冊。通常,有幾種方法可用于出于合法目的映射托管模塊。另一方面,我們觀察到攻擊者在攻擊過程中使用以下技術注冊惡意 IIS 擴展:
向全局程序集緩存 (GAC) PowerShell API 注冊:每個具有公共語言運行時 (CLR) 的設備都托管一個設備范圍的緩存,稱為全局程序集緩存 (GAC)。GAC 存儲專門指定為由設備上的多個應用程序共享的程序集。GacInstall()是一個 PowerShell API,用于將模塊添加到全局緩存中。安裝后,該模塊在路徑%windir%\Microsoft.NET\assembly下可用,并使用appcmd.exe映射到 IIS ( w3wp.exe ) 。
圖 2. 使用 GAC PowerShell API 的攻擊者命令
使用appcmd.exe注冊:Appcmd.exe是用于管理 IIS 的單一命令行工具。所有關鍵方面,例如添加或刪除模塊和處理程序,都可以使用該實用程序執行。在這種情況下,攻擊者會將惡意擴展程序放在目標應用程序的/bin文件夾中,并使用add module命令對其進行映射。
圖 3. 使用 appcmd.exe 的攻擊者命令
使用gacutil.exe注冊:Gacutil.exe是 Visual Studio 提供的 .NET GAC 實用程序。該工具允許用戶查看和操作 GAC 的內容,包括使用-I選項安裝新模塊。
圖 4. 使用 gacutil.exe 的攻擊者命令
使用web.config注冊:將模塊放入應用程序的/bin文件夾后,攻擊者還可以編輯目標應用程序的web.config或全局配置文件applicationHost.config來注冊模塊。
圖 5. 惡意 web.config 條目
成功注冊后,該模塊在 IIS 管理器應用程序中可見。
圖 6. 列表中可見的已安裝模塊
使用自定義 IIS 后門的攻擊流
在 2022 年 1 月至 2022 年 5 月期間,我們與 IIS 相關的檢測發現了一個針對 Microsoft Exchange 服務器的有趣活動。Web shell通過ProxyShell 漏洞被丟棄在路徑%ExchangeInstallPath%\FrontEnd\HttpProxy\owa\auth\中。
經過一段時間的偵察、轉儲憑據和建立遠程訪問方法后,攻擊者在文件夾C:\inetpub\wwwroot\bin\中安裝了一個名為FinanceSvcModel.dll的自定義 IIS 后門。后門具有執行 Exchange 管理操作的內置功能,例如枚舉已安裝的郵箱帳戶和導出郵箱以進行滲透,如下所述。
命令運行
PowerShDLL工具包是一個無需調用powershell.exe即可運行 PowerShell 的開源項目,用于運行遠程命令。攻擊者避免在 Exchange 應用程序池 ( MSExchangeOWAAppPool ) 的上下文中調用常見的非本地二進制文件 (LOLBins),例如cmd.exe或powershell.exe ,以規避相關檢測邏輯。
圖 7. 使用 PowerShDLL 運行遠程命令
憑證訪問
攻擊者啟用了 WDigest 注冊表設置,強制系統使用 WDigest 協議進行身份驗證,導致lsass.exe在內存中保留用戶明文密碼的副本。此更改允許攻擊者竊取實際密碼,而不僅僅是哈希。后來,Mimikatz 運行以轉儲本地憑據并執行DCSYNC攻擊。
圖 8. Mimikatz 的使用
遠程訪問
攻擊者使用plink.exe,一個命令行連接工具,如 SSH。該工具允許攻擊者繞過網絡限制并通過隧道 RDP 流量遠程訪問服務器。
圖 9. 繞過網絡限制
滲出
攻擊者通過發送帶有 cookie EX_TOKEN的特制POST請求來調用 IIS 后門。該模塊提取 cookie 值并使用提供的過濾器啟動郵箱導出請求。
圖 10. 攻擊者生成的 POST 請求
該值解碼為:ep,06/21/2022,06/21/2022,C:\Windows\Web,Administrator,其中ep是啟動郵箱導出請求的命令,過濾器確定開始和結束日期,后跟導出路徑。最終命令具有以下語法:
圖 11. 攻擊者生成的郵箱導出請求
圖 12. 郵箱導出代碼片段
下表詳細說明了后門中的所有命令:
IIS 后門的類型
回顧過去一年中觀察到的惡意托管 (.NET) IIS 擴展,我們根據各種因素(例如類似的功能和來源)對這些擴展進行了分組,下文將對此進行進一步詳述。
基于 Web shell 的變體
像 China Chopper 這樣的Web Shell已被廣泛用于眾多有針對性的攻擊。隨著中國斬波器的使用量逐年增加,檢測次數也在增加。結果,攻擊者進化并添加了這些 Web Shell 的基于 IIS 模塊的版本,它們保持相同的功能。該模塊使用與腳本版本中用于運行代碼的相同eval()技術。雖然大多數防病毒解決方案會檢測單行 web shell,例如< %@page language=js%><%eval(request.item(<password>),”unsafe”);%>,但將相同的代碼嵌入IIS 模塊會產生較低的檢測率。
在模塊版本中,攻擊者發起的POST請求包含代碼以及參數z1和z2中的參數,就像基于腳本的版本一樣。
圖 13. 中國斬波器 IIS 模塊 - 版本 1

圖 14. 攻擊者生成的 POST 數據 - 版本 1
在不同的版本中,該模塊在 DLL 中硬編碼后門邏輯,并且只等待參數z1 和 z2。參數kfaero將命令顯示為“A-Q”中的順序字母表。
圖 15. China chopper IIS 模塊 – 版本 2
與腳本版本一樣,IIS 模塊具有類似的功能,例如列出和創建目錄、下載和上傳文件、使用 SQL 適配器運行查詢以及運行命令。為了運行命令,攻擊者發起的POST請求包含命令“ M”以及參數。
圖 16. 攻擊者生成 POST 數據的示例 - 版本 2
Antsword 是另一種流行的 Web Shell,廣泛用于各種針對性攻擊。在野外觀察到受 Web shell 代碼啟發的自定義 IIS 模塊,其中包括類似的架構和功能。這些惡意模塊的有趣新功能包括無文件執行 C# 代碼和通過 TCP 套接字連接進行遠程訪問。
圖 17. Antsword IIS 模塊代碼片段
根據請求,模塊可以采用兩種代碼路徑之一。在/server-status的情況下,從自定義標頭Lhposzrp中的值啟動套接字連接。

對于任何其他 URL,該模塊遵循 China Chopper 風格的命令架構,范圍從“ A”到“ R ”。附加的“ R ”命令允許攻擊者反射性地運行 C# 代碼。
圖 18. 命令“R”反射調用代碼
開源變體
為 IIS 創建后門的 GitHub 項目已經有一段時間了。盡管主要是為了教育紅隊社區而分享的,但威脅參與者也對這些項目感興趣并刪除了代碼。以一個被攻擊者積極利用的公共項目為例,原始代碼包括以下能力:

在這種情況下,in-the-wild 變體會更改 cookie 名稱,保持其余代碼不變:
圖 19. 開源項目代碼(左)和攻擊者使用的代碼(右)的橫向比較
在向后門提供whoami命令時,生成的 cookie 具有以下格式:
餅干:BDUSS=P6zUsk/1xJyW4PPufWsx5w==
后門使用 base64 封裝的 AES 加密 blob 進行響應。解碼后的輸出格式如下:
圖 20. 來自服務器的解碼響應
IIS 處理程序
如前所述,IIS 處理程序與請求管道中的模塊具有相同的可見性。處理程序可以配置為響應某些擴展或請求。要創建托管 IIS 處理程序,代碼必須實現 IHttpHandler 接口。IHttpHandler接口具有一個方法和一個屬性, 具有以下簽名:
圖 21. IIS 處理程序框架
可以通過直接編輯web.config文件或使用appcmd實用程序來注冊處理程序。處理程序配置采用一些重要字段,例如path指定處理程序應響應的 URL 或擴展名,以及verb指定 HTTP 請求類型。在下面的示例中,處理程序僅響應以 .gif 擴展名結尾的圖像請求:
圖 22. 惡意 web.config 條目
成功安裝后,處理程序在 IIS 管理器應用程序中可見:
圖 23. 列表中可見的已安裝處理程序
分析的大多數處理程序都相對簡單,僅包括運行命令的能力:
圖 24. IIS 處理程序通過 cmd.exe 運行命令
有趣的是,響應Content-Type設置為image/gif或image/jpeg,當瀏覽圖像 URL 時顯示默認圖像,輸出隱藏在<pre>標記中。造成這種情況的一個可能原因可能是繞過網絡檢查,因為圖像文件通常被認為是非惡意的,并且會根據擴展名進行過濾和識別。
憑證竊取者
此模塊子集監控傳出請求中的登錄模式,并以加密格式轉儲提取的憑據。即使檢測到主后門,被盜的憑據允許攻擊者在環境中保持持久性。
模塊監視特定請求以確定登錄活動,例如/auth.owa OWA 應用程序的默認 URL。在檢查請求時,模塊將憑證轉儲到.dat文件中。內容使用帶有硬編碼值的 XOR 進行加密,并使用 base64 編碼進行包裝。下圖描繪了解碼后的樣本輸出:
圖 25. 示例解密條目
圖 26. 尋找 OWA 登錄 URL 的后門
在另一個變體中,該模塊查找用于傳遞不同 ASP.Net 應用程序中使用的憑據的通用占位符變量。轉儲的憑據經過 AES 加密并使用 Base64 編碼進行包裝,位于%programdata%\log.txt 中。
圖 27. 尋找常用憑證占位符變量的后門
圖 28. 示例解密條目
改進對服務器入侵的防御
由于我們預計會觀察到更多使用 IIS 后門的攻擊,因此組織必須確保遵循安全實踐來幫助保護其服務器。
應用最新的安全更新
識別并修復影響服務器的漏洞或錯誤配置。部署最新的安全更新,尤其是在 Exchange 等服務器組件可用時立即部署。使用 Microsoft Defender 漏洞管理 定期審核這些服務器的漏洞、錯誤配置和可疑活動。
保持啟用防病毒和其他保護
使用Windows 防病毒軟件 和防火墻保護和 MFA 等其他安全解決方案 保護服務器至關重要 。在Microsoft Defender 防病毒軟件中打開云提供的保護 和自動樣本提交,以使用人工智能和機器學習來快速識別和阻止新的和未知的威脅。使用 攻擊面減少規則 自動阻止憑據盜竊和 PsExec 和 Windows Management Instrumentation (WMI) 的可疑使用等行為。開啟 防篡改 功能,防止攻擊者停止安全服務。
如果您擔心這些安全控制會影響性能或中斷運營,請與 IT 專業人員聯系以幫助確定這些設置的真正影響。安全團隊和 IT 專業人員應協作應用緩解措施和適當的 設置。
查看敏感角色和組
查看具有高度特權的組,例如管理員、遠程桌面用戶和企業管理員。攻擊者將帳戶添加到這些組中以在服務器上站穩腳跟。定期檢查這些組是否有可疑的添加或刪除。 若要識別特定于 Exchange 的異常,請使用Exchange PowerShell 中的Get-ManagementRoleAssignment cmdlet查看具有敏感角色的用戶列表,例如 郵箱導入導出 和 組織管理。
限制訪問
實踐最小特權原則并保持良好的憑證衛生。避免使用域范圍的管理員級服務帳戶。強制 使用強隨機、即時的本地管理員密碼 并啟用 MFA。使用Microsoft Defender for Identity 的 本地管理員密碼解決方案 (LAPS)等工具。
對 IIS 中的虛擬目錄設置訪問控制列表限制。此外,當僅用于 Exchange 混合環境中的收件人管理時,刪除本地 Exchange 服務器的存在。
優先警報
服務器入侵的獨特模式有助于檢測惡意行為并通知安全運營團隊快速響應入侵的初始階段。注意并立即調查表明服務器上存在可疑活動的警報。在探索階段捕獲攻擊,即攻擊者在獲得訪問權限后花費數天探索環境的時期,是關鍵。 優先處理與來自 w3wp.exe的net.exe、 cmd.exe等進程相關的警報 。
檢查配置文件和 bin 文件夾
定期檢查目標應用程序的web.config和ApplicationHost.config以識別任何可疑的添加,例如圖像文件的處理程序——如果不是完全惡意的話,它本身就是可疑的。此外,定期掃描應用程序的bin目錄和默認 GAC 位置等安裝路徑。還建議使用appcmd.exe或gacutil.exe實用程序定期檢查已安裝模塊的列表。
Hardik Suri
Microsoft 365 Defender 研究團隊
附錄
Microsoft Defender 防病毒軟件將這些威脅和相關行為檢測為以下惡意軟件:
- 后門:MSIL/SuspIISModule.G!gen
- 后門:MSIL/SuspIISModule.H!gen
- 后門:MSIL/SuspIISModule.K!gen
- 后門:MSIL/OWAStealer.B
- 后門:MSIL/OWAStealer.C
- 行為:Win32/SuspGacInstall.B
端點檢測和響應 (EDR)
- 可疑的 IIS AppCmd 使用
狩獵查詢
要查找與可疑 IIS 模塊注冊相關的惡意活動,請運行以下查詢:
可疑的 IIS 模塊注冊
設備進程事件 | 其中 ProcessCommandLine 有“appcmd.exe 添加模塊” | 其中 InitiatingProcessParentFileName == “w3wp.exe” 設備進程事件 | 其中 InitiatingProcessFileName == “powershell.exe” |其中 ProcessCommandLine 具有“system.enterpriseservices.internal.publish” | 其中 InitiatingProcessParentFileName == “w3wp.exe” 設備進程事件 |其中 ProcessCommandLine 有“ \\gacutil.exe /I” | 其中 InitiatingProcessParentFileName == “w3wp.exe”
妥協指標 (IOC)]

