恶意 IIS 扩展悄悄地向服务器打开持久性后门

VSole2022-07-26 00:00:00

攻击者越来越多地将 Internet 信息服务 (IIS) 扩展用作服务器的隐蔽后门,这些后门隐藏在目标环境的深处,并为攻击者提供了持久的持久性机制。虽然之前已经发表了关于特定事件和变体的研究,但对于攻击者如何利用 IIS 平台作为后门通常知之甚少。

恶意 IIS 扩展在针对服务器的攻击中很少遇到,攻击者通常只使用脚本Web shell作为第一阶段的有效负载。与脚本 Web shell 相比,这导致恶意 IIS 扩展的检测率相对较低。IIS 后门也更难检测,因为它们大多与目标应用程序使用的合法模块位于相同的目录中,并且它们遵循与干净模块相同的代码结构。在大多数情况下,实际的后门逻辑很少,如果不更广泛地了解合法 IIS 扩展的工作原理,就不能将其视为恶意,这也使得确定感染源变得困难。

通常,攻击者首先利用托管应用程序中的一个关键漏洞进行初始访问,然后再将脚本 Web shell 作为第一阶段有效负载。稍后,攻击者会安装一个 IIS 后门,以提供对服务器的高度隐蔽和持久的访问。正如我们在 2022 年 1 月至 2022 年 5 月期间针对 Exchange 服务器的活动以及我们之前对自定义 IIS 后门ScriptModule.dllApp_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.exepowershell.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请求包含代码以及参数z1z2中的参数,就像基于脚本的版本一样。

图 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/gifimage/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.exegacutil.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)]

服务器类型iis应用程序池
本作品采用《CC 协议》,转载必须注明作者和本文链接
攻击者越来越多地将 Internet 信息服务 (IIS) 扩展用作服务器的隐蔽后门,这些后门隐藏在目标环境的深处,并为攻击者提供了久的久性机制。虽然之前已经发表了关于特定事件和变体的研究,但对于攻击者如何利用 IIS 平台作为后门通常知之甚少。
建议配置尽量精确的IPS配置文件,挑选反应实际网络状况的签名进行防御。例外签名是IPS调整的关键手段。IPS不清楚真实的业务意图,将需要正常使用的业务认定为攻击。例如网络中运行漏洞扫描软件用于安全加固,IPS会将扫描行为认为是攻击,但实际上是要正常使用的。IPS调整的一大主要工作就是处理误报。管理员需要续分析IPS日志中的警告信息,对确认是误报的警告,配置例外规则。将攻击源加入黑名单。
网上安全渗透测试工具整理全集,部分链接可能失效,但可以搜索到
Web Hacking 101 中文版:https://wizardforcel.gitbooks.io/web-hacking-101/content/ 浅入浅出Android安全 中文版:https://wizardforcel.gitbooks.io/asani/content/ Android 渗透测试学习手册 中文
HTTP走私及变体总结
2022-09-01 22:12:58
HTTP请求走私是一种干扰网站处理从一个或多个用户接收的HTTP请求序列的方式,用以绕过安全控制并获得未经授权的访问,执行恶意活动。Content-Length比实际消息长度长,请求将无响应直到超时。Transfer-Encoding: chunked代表数据以一系列分块的形式进行发送.。Content-Length 首部在这种情况下应该不被发送。在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息。这个攻击者便成功的利用了http请求走私漏洞。
与Web Shell相比,利用IIS 扩展能让后门更加隐蔽,通常很难检测到其安装的确切位置,并且使用与合法模块相同的结构,为攻击者提供了近乎完美的久性机制。随后,恶意 IIS 模块允许攻击者从系统内存中获取凭证,从受害者的网络和受感染设备收集信息,并提供更多有效负载。
年初,研究人员发现了针对亚太地区政府的续攻击。这起攻击事件,通过攻击特定类型的安全USB驱动器达成,这种安全的USB驱动器被国家的政府机构用来在计算机系统之间,安全地存储和物理传输数据,该驱动器提供硬件加密。
第二个请求因此被“走私”通过前端服务器并最终到达后端服务器。滥用HRS会极大地影响系统的保密性、完整性和可用性。正如一份负责任的披露中所公布的,Evan Custodio 能够通过滥用 HRS 窃取 cookie 来接管 Slack 帐户。这表明,最有可能的是,代理更改了响应。然后将该请求转发到实际的 OWA 服务。但是,终止后的部分未处理。
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留。查看下pid所对应的进程文件路径,
介绍在最近的一次操作中,我们获得了工作站的本地管理员权限,但是在该工作站上发现了 EDR 解决方案。在这种情
VSole
网络安全专家