-
SCCM相关攻击趋势: 文章首先指出了近年来SCCM相关攻击呈上升趋势的情况,这些攻击涉及从提取网络访问账户(NAA)凭据到向目标设备部署恶意应用程序等活动,有助于实现复杂目标并规避现有的检测方法。 -
AppDomainManager注入技术: 文章介绍了AppDomainManager注入技术,这是一种攻击者利用的加载器劫持技术,用于在.NET应用程序中执行任意代码。这一技术的核心在于修改应用程序的配置文件,指定要执行的恶意DLL和AppDomainManager。 -
CcmExec服务介绍: 文章详细介绍了CcmExec服务,这是SCCM Windows客户端的本地服务,对于红队人员而言具有有趣的设计,可用于会话劫持。CcmExec服务会生成用于每个交互式会话的SCNotification.exe进程,红队人员可以利用这一点进行攻击。 -
利用CcmExec进行会话劫持: 文章解释了如何利用CcmExec服务进行会话劫持,通过修改SCNotification.exe配置文件指向恶意DLL,并重新启动CcmExec服务,来在每个登录用户的会话中执行代码。 -
CcmPwn工具介绍: 文章介绍了CcmPwn工具,这是一个利用Impacket库开发的工具,用于执行利用CcmExec进行会话劫持的攻击。CcmPwn工具具有多个模块,包括exec模块和coerce模块,可用于上传恶意配置文件和DLL、远程重启CcmExec服务等。 -
防御策略: 文章最后提供了防御策略,包括监控SCNotification.exe的事件日志、远程登录类型3事件以及文件修改和配置字符串的变化,以便及时发现和应对通过CcmExec服务进行的会话劫持攻击。
正文
在过去几年中,安全社区见证了与System Center Configuration Manager (SCCM) 相关的攻击的增加。从提取网络访问帐户 (NAA) 凭据到将恶意应用程序部署到目标设备,SCCM 攻击有助于实现复杂的目标并逃避现有检测。Mandiant 的红队利用 SCCM 技术对成熟客户执行传统方法无法实现的新颖攻击。本博文介绍了一种此类 SCCM 攻击。
曾经有一段时间,在 Windows 系统上拥有更高权限的红队成员可以毫不费力地将 shellcode 注入毫无戒心的用户进程中。这使得红队成员能够在新流程中执行利用后活动,例如键盘记录或以受影响的用户身份访问 LDAP。然而,随着端点检测和响应 (EDR) 系统的改进,远程进程注入已变成一种危险的操作,促使红队成员寻求替代方法来劫持用户会话。
输入 CcmExec,这是 SCCM Windows 客户端的原生服务,它的设计很有趣,对红队成员很有用。在这篇博文中,我们深入研究了如何利用 CcmExec 服务进行会话劫持,并介绍CcmPwn,这是一个旨在促进此技术的工具。最后,我们将讨论安全团队的检测策略。
AppDomainManager注入
在深入研究 CcmExec 之前,了解AppDomainManager 注入的复杂性非常重要,这是攻击者用来在 .NET 应用程序中执行任意代码的加载程序劫持技术。本质上,.NET 框架提供了一种管理应用程序域的方法,这些域是 .NET 应用程序可以运行代码的隔离环境。AppDomainManager 类是该基础结构的关键部分,负责创建和管理这些应用程序域。但是,如果攻击者要重写 AppDomainManager 类构造函数,他们可能会在创建应用程序域时强制托管应用程序运行攻击者定义的行为。
执行 AppDomainManager 注入的最常见方法是通过文件.config。此方法涉及修改应用程序的配置文件以指定要由 .NET 应用程序执行的自定义动态链接库文件 (DLL) 和 AppDomainManager。其操作方法如下:
-
创建自定义 AppDomainManager :开发一个派生自 AppDomainManager 并包含恶意代码的类。将此类编译为 DLL。
-
创建配置文件:修改或创建应用程序的.config文件(例如“ application.exe.config”)并添加以下 XML 元素以指定自定义 DLL 和AppDomainManager:
<configuration>
<runtime>
<appDomainManagerAssembly value="YourDLL, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null" />
<appDomainManagerType value="YourAppDomainManager" />
</runtime>
</configuration>
-
执行应用程序:当执行.NET应用程序时,.NET运行时读取.config位于同一文件夹中的文件并加载指定的自定义AppDomainManager。然后,AppDomainManager 中的代码在应用程序的上下文中执行。
C:WindowsCCMSCNotification.exe.config
-
将恶意 DLL 上传到目标系统:该 DLL 包含要在用户会话中执行的 AppDomainManager 代码。 -
修改 SCNotification.exe.config 配置文件:指向该文件中的恶意 DLL。 -
重新启动 CcmExec 服务:此操作会导致CcmExec.exe进程重新启动并SCNotification.exe为每个登录用户运行。
-
监视 SCNotification.exe 的 1026 事件:事件 ID 1026 与 .NET 运行时错误关联。使用 CcmPwn 的coerce模块时,SCNotification.exe尝试从攻击者控制的文件共享加载不存在的 DLL。由于找不到 DLL,应用程序会产生System.IO.FileLoadException错误。图 6 显示了这种行为的示例。
-
监视 7036 事件和远程登录类型 3 :7036 事件对应于服务的启动和停止。通过监控此事件,安全团队可以检测到 CcmExec 服务的可疑重启,这可能表明有人试图劫持用户会话。使用 CcmPwn 时,登录类型 3(网络登录)事件将在服务停止的同时发生,然后在服务再次启动之前延迟 20 秒。监视此模式可以帮助对这些服务事件进行分类,并提供有关潜在恶意活动的上下文。 -
监视文件修改和配置字符串:由于攻击者需要修改SCNotification.exe.config文件才能执行此攻击,因此监视此文件的更改可以提供早期警告。此外,应仔细检查配置文件中是否存在“ AppDomainManagerType”字符串,因为它用于 AppDomainManager 注入攻击。安全团队应调查此字符串在SCNotification.exe.config.
原文始发于微信公众号(Ots安全):SeeSeeYouExec:通过 CcmExec 劫持 Windows 会话
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论