
BOF لانتحال هوية TrustedInstaller عبر تشغيل واجهة برمجة تطبيقات DISM وانتحال سلسلة التنفيذ
BOF لانتحال هوية TrustedInstaller عبر تشغيل DISM API وانتحال الخيط.
يرفع صلاحيات Cobalt Strike Beacon من سياق المسؤول إلى NT AUTHORITY\SYSTEM مع وجود SID NT SERVICE\TrustedInstaller في مجموعات الرمز المميز. يمنحك هذا القدرة على تعديل الملفات ومفاتيح التسجيل والكائنات الأخرى المملوكة لـ TrustedInstaller (أي الأشياء التي قد لا يكون امتلاك صلاحية SYSTEM كافياً لها).
معظم الأساليب العامة للتحول إلى TrustedInstaller تبدأ خدمة TrustedInstaller مباشرة عبر مدير التحكم في الخدمات (مثل sc start TrustedInstaller أو StartServiceW). هذا يعمل، لكن التفاعل مع SCM معروف جيداً لدى المدافعين ويتم تسجيله عادةً.
يتبع trustme نهجاً مختلفاً:
يقوم بتحميل dismapi.dll ويشغل فحص صحة DISM. حيث يتسبب DISM API (DismCheckImageHealth) داخلياً في بدء تشغيل TrustedInstaller.exe كأثر جانبي لعمليات مكدس الخدمة. يتم إبقاء جلسة DISM مفتوحة حتى لا يخرج TrustedInstaller قبل أن نتمكن من استخدامه.
يتجول في قائمة العمليات باستخدام NtGetNextProcess. بدلاً من OpenProcess أو CreateToolhelp32Snapshot، نقوم بتعداد مقابض العمليات بشكل غير مباشر عبر NtGetNextProcess والمطابقة حسب اسم الصورة عبر NtQueryInformationProcess(ProcessImageFileName).
ينتحل هوية خيط TrustedInstaller عبر NtImpersonateThread. وبالمثل، نتنقل عبر الخيوط باستخدام NtGetNextThread بدلاً من فتحها بواسطة TID. بمجرد العثور على خيط قابل للاستخدام، ننتحل هويته ونسجل الرمز المميز الناتج مع Beacon عبر BeaconUseToken.
ينظف. يتم إغلاق جلسة DISM، وتحرير dismapi.dll من عملية beacon، وإطلاق المقابض. يظل رمز الانتحال سارياً في جلسة Beacon حتى تقوم بتشغيل rev2self.
SeDebugPrivilege متاحاً في الرمز المميز (وهو موجود افتراضياً للحسابات الإدارية، يقوم BOF بتمكينه تلقائياً)تحتاج إلى beacon.h من مستودع Cobalt Strike bof_template في نفس الدليل الذي يوجد به trustme.c.
MinGW (Linux/macOS):
x86_64-w64-mingw32-gcc -c trustme.c -o trustme.x64.o -masm=intel -Wall
MSVC (Windows, from x64 Native Tools prompt):
cl.exe /c /GS- /Fo"trustme.x64.o" trustme.c
trustme.x64.o (و/أو trustme.x86.o) في نفس الدليل الذي يوجد به trustme.cnatrustme.cna في Cobalt Strike عبر Script Managerbeacon> trustme
[+] SeDebugPrivilege enabled
[*] DISM health check complete, TrustedInstaller should be running
[*] Found TrustedInstaller.exe (PID: 31337)
[+] Thread impersonation successful (identity: SYSTEM)
[+] Token applied to Beacon session
[+] Now running as TrustedInstaller. Use 'rev2self' to revert.
beacon> shell whoami /groups | findstr TrustedInstaller
NT SERVICE\TrustedInstaller Well-known group S-1-5-80-956008885-... Enabled by default, Enabled group, Group owner
beacon> rev2self