SeeSeeYouExec:通过 CcmExec 劫持 Windows 会话

admin 2024年4月5日17:52:25评论8 views字数 3839阅读12分47秒阅读模式
SeeSeeYouExec:通过 CcmExec 劫持 Windows 会话
这篇文章主要介绍了使用System Center Configuration Manager(SCCM)进行会话劫持的攻击技术以及相应的防御措施。以下是文章的主要内容和核心技术的用途:
  • 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。其操作方法如下:

  1. 创建自定义 AppDomainManager :开发一个派生自 AppDomainManager 并包含恶意代码的类。将此类编译为 DLL。

  2. 创建配置文件:修改或创建应用程序的.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>
  3. 执行应用程序:当执行.NET应用程序时,.NET运行时读取.config位于同一文件夹中的文件并加载指定的自定义AppDomainManager。然后,AppDomainManager 中的代码在应用程序的上下文中执行。
劫持CcmExec
当使用Process ExplorerCcmExec.exe等流程分析工具分析 CcmExec 服务的流程时,有几件事立即脱颖而出。首先引起人们注意的是,该进程为Windows 系统上的每个交互式会话生成该进程,如图 1 所示。是 SCCM 客户端的一个组件,负责向用户显示通知,例如软件安装提示或重新启动通知。C:WindowsCCMSCNotification.exeSCNotification.exe
SeeSeeYouExec:通过 CcmExec 劫持 Windows 会话
图 1:CcmExec.exe 子进程
经过进一步检查,发现该SCNotification.exe文件是一个 .NET 应用程序,其应用程序配置文件位于 .NET
C:WindowsCCMSCNotification.exe.config
你知道这是怎么回事吗?
通过在配置为 SCCM 客户端的 Windows 系统上拥有管理员权限,我们可以修改配置文件来指示 .NET 应用程序加载恶意 DLL 并代表每个登录用户获取代码执行!攻击很简单:
  1. 将恶意 DLL 上传到目标系统:该 DLL 包含要在用户会话中执行的 AppDomainManager 代码。
  2. 修改 SCNotification.exe.config 配置文件:指向该文件中的恶意 DLL。
  3. 重新启动 CcmExec 服务:此操作会导致CcmExec.exe进程重新启动并SCNotification.exe为每个登录用户运行。
该技术提供了一种跨多个用户会话执行代码的隐秘方式,而无需依赖远程 shellcode 注入。
使用 CcmPwn 武器化会话劫持
将这项技术武器化很简单。使用Impacket 库,我们开发了 CcmPwn 来执行上述攻击并劫持用户会话。CcmPwn配备了各种模块。该exec模块将自定义配置和DLL文件上传到目标系统,远程重启CcmExec服务,然后重新上传原始配置文件。图 2 和图 3 中展示了一个示例,其中使用 CcmPwn 为我们提供了用于被劫持会话的Cobalt Strike信标。
SeeSeeYouExec:通过 CcmExec 劫持 Windows 会话
图 2:CcmPwn 执行模块
SeeSeeYouExec:通过 CcmExec 劫持 Windows 会话
图 3:每个登录用户的 Cobalt Strike 信标
此外,CcmPwn 还具有一个coerce模块,可强制每个登录用户发出 SMB 或 HTTP 身份验证请求。红队成员可以利用这些强制身份验证来尝试密码破解或进行中继攻击。该模块不需要 DLL,因为它只是将恶意配置文件上传到目标。该文件指示SCNotification.exe从攻击者控制的文件共享加载文件,如图 4 和图 5 所示。
SeeSeeYouExec:通过 CcmExec 劫持 Windows 会话
图 4:CcmExec 强制模块
SeeSeeYouExec:通过 CcmExec 劫持 Windows 会话
图 5:获取强制密码哈希值
防守考虑
根据所使用的安全信息和事件管理 (SIEM) 或 EDR 解决方案,可以通过多种方式检测此攻击。建议采取以下防御措施:
  • 监视 SCNotification.exe 的 1026 事件:事件 ID 1026 与 .NET 运行时错误关联。使用 CcmPwn 的coerce模块时,SCNotification.exe尝试从攻击者控制的文件共享加载不存在的 DLL。由于找不到 DLL,应用程序会产生System.IO.FileLoadException错误。图 6 显示了这种行为的示例。
SeeSeeYouExec:通过 CcmExec 劫持 Windows 会话
图 6:SCNotification.exe 的 .NET 运行时错误
  • 监视 7036 事件和远程登录类型 3 :7036 事件对应于服务的启动和停止。通过监控此事件,安全团队可以检测到 CcmExec 服务的可疑重启,这可能表明有人试图劫持用户会话。使用 CcmPwn 时,登录类型 3(网络登录)事件将在服务停止的同时发生,然后在服务再次启动之前延迟 20 秒。监视此模式可以帮助对这些服务事件进行分类,并提供有关潜在恶意活动的上下文。
  • 监视文件修改和配置字符串:由于攻击者需要修改SCNotification.exe.config文件才能执行此攻击,因此监视此文件的更改可以提供早期警告。此外,应仔细检查配置文件中是否存在“ AppDomainManagerType”字符串,因为它用于 AppDomainManager 注入攻击。安全团队应调查此字符串在SCNotification.exe.config.
通过实施这些防御措施并使其适应 SIEM 或 EDR 解决方案的特定功能,组织可以通过 CcmExec 服务增强检测和响应会话劫持攻击的能力。


原文始发于微信公众号(Ots安全):SeeSeeYouExec:通过 CcmExec 劫持 Windows 会话

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月5日17:52:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SeeSeeYouExec:通过 CcmExec 劫持 Windows 会话https://cn-sec.com/archives/2633278.html

发表评论

匿名网友 填写信息