利用 Microsoft 文本服务框架 (TSF) 进行红队行动

admin 2025年2月12日22:56:31评论6 views字数 2588阅读8分37秒阅读模式

【翻译】Leveraging Microsoft Text Services Framework (TSF) for Red Team Operations  Praetorian

Praetorian Labs 团队的任务是识别新颖的、此前未被记录的红队渗透行动中可用的持久性机制。我们主要关注通过修改 HKCU 实现的持久性技术,这允许在不需要管理员权限的情况下实现隐蔽的用户级持久性。遗憾的是,虽然我们确实发现了一个有趣的持久性技术,但本文讨论的方法需要管理员权限才能注册新的文本服务框架插件。

在这项研究中,我们在分析 Windows 注册表时发现了 Text Services Framework (TSF) 插件的概念。MicrosoftCTFTIP键包含对 COM CLSID 的引用,这最初让我们认为可以在 CTFMon.exe 中执行代码。进一步调查发现,TSF 插件被加载到任何使用文本服务框架的进程中,提供了一种隐蔽的持久性方法。

这种技术允许将代码注入到几乎任何显示图形用户界面 (GUI) 或接受用户输入的进程中,使其成为在特定进程中实现目标持久性的一个极其灵活的攻击载体。

了解 Microsoft 文本服务框架 (TSF)

TSF 是 Windows 文本输入处理的重要组成部分,它促进了输入法编辑器 (IME)、手写识别和语音识别的实现。它以高权限运行,使其成为持久性机制的主要候选者。

TSF 的关键组件:

  • 文本服务管理器 (TSM): 负责监督文本输入服务。
  • TSF 客户端: 使用 TSF 进行文本输入处理的应用程序。
  • TSF 文本服务: 注册用于提供文本处理的动态链接库 (DLL)。
  • 注册表项: TSF 依赖基于注册表的配置来加载和执行文本服务。

滥用 TSF 实现持久性

第 1 步:识别 TSF 持久性机制

TSF 允许通过 COM 对象注册自定义文本服务,这些服务在使用文本输入时执行。通过注册一个恶意的 TSF 文本服务,红队可以实现隐蔽的持久性。

第 2 步:注册自定义文本服务

我们首先创建一个实现 ITfTextInputProcessor 接口的自定义 DLL,并通过 Windows 注册表注册它。注意,注册新的 TSF 文本服务需要管理员权限。在注册过程中将修改以下注册表键,其中 GUID 是与注册的 COM 对象相关联的 GUID,LANG 是与文本服务框架插件相关联的语言标识符 (例如英语):

涉及的注册表键:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftCTFTIP{GUID}LanguageProfile{LANG}

HKEY_CLASSES_ROOTCLSID{GUID}InProcServer32

注册位置的观察

虽然 TSF 插件的注册表项在技术上可以存在于 HKCU 下,但我们的测试表明这样的项不会产生功能性插件。TSF 插件必须在 HKLM 下注册才能正常工作。

高价值目标进程

基于 TSF 的植入程序特别有效,因为它们被加载到各种经常与框架交互的高价值进程中,包括:

  • msedge.exe
  • chrome.exe
  • firefox.exe
  • taskmgr.exe
  • explorer.exe
  • msedgewebview2.exe

Web 浏览器是特别有趣的目标,因为它们与网络交互,作为即时 (JIT) 编译器的一部分分配可执行代码,并且相对复杂难以分析或基准测试。此外,Web 浏览器经常生成具有相同进程名的子进程,这有利于使用像 Cobalt Strike 这样的 C2 框架中的 fork-and-run 模型的攻击者。这使得更容易融入正常操作并逃避检测。

妥协指标 (IoCs)

  • 注册表修改: HKEY_LOCAL_MACHINESOFTWAREMicrosoftCTFTIP中的意外更改。
  • 未知 DLL: 在 HKEY_CLASSES_ROOTCLSID{GUID}InProcServer32 下注册的可疑 DLL。
  • 关键进程中的未签名 DLL: 寻找在网络其他地方未观察到的、加载到 msedge.exe 或 explorer.exe 等关键进程中的未签名或不熟悉的 DLL。
  • 异常文本输入行为: IME 或语言输入设置的异常。

注册表修改示例代码

下面链接的示例代码演示了注册表修改和 DLL 注册过程。注意,提供的代码仅在执行 DllMain 时显示一个消息框以指示 DLL 已被加载。然而,可能需要进行额外的修改以在加载器锁之外安全地执行代码。然后可以使用 regsvr32.exe 在系统上安装编译后的 DLL。

完整示例代码

https://gist.github.com/UNC1739/b77e095944df9061091684ea40ecd576

第 3 步:部署自定义 DLL

DLL 必须放置在合适的目录中以确保执行和适当的规避:

  • System32 或 SysWOW64 目录(需要管理员访问权限)。
  • 用户的 AppData 或其他可写目录(适用于有限权限)。

第 4 步:实现执行

一旦注册,Windows 会自动将文本服务加载到利用 TSF 的应用程序中,如 explorer.exe 和文本输入处理程序。这允许无缝执行而不会引起警报。

检测和规避技术

鉴于 TSF 持久性的隐蔽性,许多安全工具可能会忽视系统上这种特殊的持久性方法。

检测技术:

  1. 监控注册表更改 – 跟踪 HKEY_LOCAL_MACHINESOFTWAREMicrosoftCTFTIP的修改。
  2. 审查已注册的 TSF 插件 – 如果担心这种特殊技术,对已注册的 TSF 插件进行审查以识别可疑条目。
  3. 进程监控 – 观察加载意外 TSF 相关 DLL 的进程。
  4. 检测未签名 DLL: 专注于识别网络中高价值进程中加载的未签名或以前未见过的 DLL。

规避技术:

  1. 伪装成合法服务 – 使用模仿合法文本服务的命名约定。
  2. 代码注入和混淆 – 将恶意功能隐藏在看似良性的代码、文件名等中。考虑重新编译和后门开源文本服务框架插件以增加规避性。
  3. 签名恶意 DLL 文件 – 考虑使用被盗证书或通过空壳公司从提供商处购买的证书对恶意 DLL 文件进行签名。或者,在某些情况下,简单地从合法签名的二进制文件中提取签名并将其应用到恶意二进制文件上可以逃避某些安全工具,即使签名无效。

结论

滥用 Microsoft 文本服务框架 (TSF) 实现持久性为红队提供了一种隐蔽的、低调的方法来维持对受损系统的访问。理解和测试这种技术能够更好地模拟对手,同时为防御者提供加强其检测策略的见解。

原文始发于微信公众号(securitainment):利用 Microsoft 文本服务框架 (TSF) 进行红队行动

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月12日22:56:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用 Microsoft 文本服务框架 (TSF) 进行红队行动https://cn-sec.com/archives/3729377.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息