
TrustedInstaller को impersonate करने के लिए BOF, DISM API ट्रिगर और थ्रेड impersonation के माध्यम से
TrustedInstaller को DISM API ट्रिगर और थ्रेड प्रतिरूपण के माध्यम से प्रतिरूपित करने के लिए BOF।
Cobalt Strike Beacon को एक एडमिन संदर्भ से NT AUTHORITY\SYSTEM में उन्नत करता है जिसके टोकन समूहों में NT SERVICE\TrustedInstaller SID होता है। यह आपको उन फ़ाइलों, रजिस्ट्री कुंजियों और अन्य ऑब्जेक्ट्स को संशोधित करने की क्षमता देता है जो TrustedInstaller के स्वामित्व में हैं (अर्थात वे चीज़ें जिनके लिए केवल SYSTEM होना पर्याप्त नहीं हो सकता)।
TrustedInstaller बनने के अधिकांश सार्वजनिक दृष्टिकोण TrustedInstaller सेवा को सीधे Service Control Manager के माध्यम से शुरू करते हैं (जैसे sc start TrustedInstaller या StartServiceW)। यह काम करता है, लेकिन SCM के साथ बातचीत रक्षकों द्वारा अच्छी तरह से समझी जाती है और सामान्यतः लॉग की जाती है।
trustme एक अलग दृष्टिकोण अपनाता है:
dismapi.dll लोड करता है और DISM स्वास्थ्य जाँच चलाता है। DISM API (DismCheckImageHealth) आंतरिक रूप से सेवा स्टैक संचालन के दुष्प्रभाव के रूप में TrustedInstaller.exe को शुरू करता है। DISM सत्र खुला रखा जाता है ताकि हम इसका उपयोग करने से पहले TrustedInstaller बाहर न निकले।
NtGetNextProcess का उपयोग करके प्रक्रिया सूची में चलता है। OpenProcess या CreateToolhelp32Snapshot के बजाय, हम NtGetNextProcess के माध्यम से अप्रत्यक्ष रूप से प्रक्रिया हैंडल की गणना करते हैं और NtQueryInformationProcess(ProcessImageFileName) के माध्यम से छवि नाम से मिलान करते हैं।
NtImpersonateThread के माध्यम से TrustedInstaller थ्रेड का प्रतिरूपण करता है। इसी तरह, हम TID द्वारा खोलने के बजाय NtGetNextThread के साथ थ्रेड चलाते हैं। एक बार जब हमें एक उपयोगी थ्रेड मिल जाता है, तो हम इसका प्रतिरूपण करते हैं और परिणामी टोकन को BeaconUseToken के साथ Beacon में पंजीकृत करते हैं।
SeDebugPrivilege उपलब्ध होना चाहिए (एडमिन खातों के लिए डिफ़ॉल्ट रूप से होता है, BOF इसे स्वचालित रूप से सक्षम करता है)आपको trustme.c के समान निर्देशिका में Cobalt Strike bof_template रिपॉजिटरी से beacon.h की आवश्यकता है।
MinGW (Linux/macOS):
x86_64-w64-mingw32-gcc -c trustme.c -o trustme.x64.o -masm=intel -Wall
MSVC (Windows, x64 Native Tools प्रॉम्प्ट से):
cl.exe /c /GS- /Fo"trustme.x64.o" trustme.c
trustme.x64.o (और/या trustme.x86.o) को trustme.cna के समान निर्देशिका में रखें।trustme.cna लोड करें।beacon> 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
सफाई करता है। DISM सत्र बंद कर दिया जाता है, dismapi.dll को Beacon प्रक्रिया से मुक्त कर दिया जाता है, और हैंडल जारी कर दिए जाते हैं। प्रतिरूपण टोकन Beacon सत्र में तब तक बना रहता है जब तक आप rev2self नहीं चलाते।