اجرای کد با فایلهای تمپلیت T4 در ویندوز
خلاصهٔ کاملتر
تیم iPurple تو یه مقالهٔ تازه توضیح داده که فایلهای تمپلیت متنی T4 (یعنی فایلهای .tt که ویژوال استودیو ازشون برای تولید خودکار سورسکد و کانفیگ استفاده میکنه) میتونن بلوکهای کنترلی C# یا ویژوال بیسیک داشته باشن. این بلوکها موقع پردازش تمپلیت کامپایل و اجرا میشن. یعنی فایلی که ظاهرش یه قالب متنی بیخطره، در عمل کد اجرا میکنه.
چیزی که این تکنیک رو برای مهاجم جذاب میکنه اینه که اجرا از دل باینریهای معتبر و امضاشده رد میشه: TextTransform.exe و نسخهٔ مدرنترش TextTransformCore.exe، باینری t4.exe از پکیج dotnet-t4 و در نهایت MSBuild.exe. دوتای اول قبلاً تو پروژهٔ LOLBAS ثبت شده بودن، ولی به گفتهٔ نویسنده اجرای لوکال با t4.exe و سوءاستفاده از MSBuild تا حالا مستند نشده بود.
تو مسیر MSBuild، مهاجم یه فایل .tt رو کنار پروژهٔ C# میذاره و فایل .csproj رو طوری دستکاری میکنه که اون تمپلیت با متادیتای TextTemplatingFileGenerator ثبت بشه و فایل Microsoft.TextTemplating.targets هم import بشه. بعدش اجرای MSBuild با تارگت Transform روی همون پروژه، کد داخل تمپلیت رو اجرا میکنه. نویسنده میگه نمونهٔ کامل و مسلحشده رو عمداً منتشر نکرده.
از نگاه شکار تهدید، سادهترین سیگنال همون رویداد process creation برای این چهار باینریه، مخصوصاً تو سازمانی که توسعهدهندههاش اصلاً از T4 استفاده نمیکنن. مسیر MSBuild پرسروصداترین مسیره: کلی فایل موقت زیر پوشهٔ Temp کاربر میسازه و سه DLL مربوط به text templating رو لود میکنه که خودش شاخص خوبیه. t4.exe هم dotnet.exe رو صدا میزنه و کامپایلر Roslyn وسط کاره.
نکات کلیدی:
- چهار باینری TextTransform.exe، TextTransformCore.exe، t4.exe و MSBuild.exe میتونن تمپلیتهای T4 رو پردازش و اجرا کنن.
- باینری t4.exe جزو ویژوال استودیو نیست و از پکیج کراسپلتفرم dotnet-t4 میاد.
- مسیر MSBuild به import شدن Microsoft.TextTemplating.targets تو فایل .csproj نیاز داره.
- لود شدن سه DLL تمپلیتینگ داخل MSBuild.exe یعنی پروژه برای اجرای .tt دستکاری شده.
- نویسنده نمونهٔ اجرای کد در حافظه رو منتشر نکرده تا سوءاستفاده سختتر بمونه.




