
Load/Inject .NET असेंबलियों को; होस्ट (spawnto) प्रक्रिया द्वारा लोड किए गए CLR AppDomainManager का पुन: उपयोग करके, Stomping Loader/.NET assembly PE DOS हेडर्स को स्टॉम्प करना, .NET संबंधित मॉड्यूल को अनलिंक करना, ETW+AMSI को बायपास करना, NT स्टैटिक सिसकॉल (x64) के माध्यम से EDR हुक्स से बचना, और APIs (hash) को डायनेमिक रूप से रिजॉल्व करके इम्पोर्ट्स को छिपाना।
ExecuteAssembly, CS execute-assembly का एक विकल्प है, जो C/C++ में निर्मित है और इसका उपयोग .NET असेंबली को लोड/इंजेक्ट करने के लिए किया जा सकता है; होस्ट (spawnto) प्रक्रिया में लोडेड CLR मॉड्यूल/AppDomainManager को पुनः उपयोग करके, लोडर/.NET असेंबली PE DOS हेडर को स्टॉम्प करके, .NET से संबंधित मॉड्यूल को अनलिंक करके, ETW+AMSI को बायपास करके, NT स्टैटिक सिस्कॉल (x64) के माध्यम से EDR हुक से बचकर और superfasthash हैशिंग एल्गोरिथम के माध्यम से API को गतिशील रूप से हल करके इम्पोर्ट को छिपाकर।
x64(syscalls): यह संस्करण मुख्य रूप से EDR हुक को बायपास करने के लिए स्टैटिक सिस्कॉल के उपयोग पर निर्भर करता है, आप इस संस्करण का उपयोग केवल x64 संस्करण DLL बनाने के लिए कर सकते हैं (अभी केवल x64 समर्थन)।
x86|x64(PEB): रनटाइम पर PEB मॉड्यूल EAP तालिकाओं को चलकर और superfasthash हैश के माध्यम से API को हल करके आवश्यक API पतों को गतिशील रूप से प्राप्त करता है। हालाँकि, यह kernel32.dll या ntdll.dll पर रखे गए EDR हुक के लिए जिम्मेदार नहीं है, आप इस संस्करण का उपयोग x86 और x64 दोनों DLL बनाने के लिए या केवल x86 DLL बनाने और x64(syscalls) संस्करण का उपयोग x64 DLL बनाने के लिए कर सकते हैं ताकि सामान्य EDR हुक का ध्यान रखा जा सके।
VS2017 और/या Windows SDK 10.0.17134.0 (या संगत sdk संस्करण) का उपयोग करके आवश्यक DLL बनाएं।
सुनिश्चित करें कि gzip स्थापित है और निम्नलिखित आर्टिफैक्ट एक ही फ़ोल्डर में रखे गए हैं, फिर aggressor स्क्रिप्ट "ExecuteAssembly.cna" लोड करें:
ExecuteAssembly.cna
ExecuteAssembly-x64.dll
ExecuteAssembly-x86.dll
CLI विकल्प:
--dotnetassembly: लोड/इंजेक्ट करने के लिए .NET असेंबली।
--assemblyargs: .NET असेंबली तर्क।
--unlink-modules: PEB डेटा संरचनाओं से CLR/MsCoree से संबंधित DLL जैसे .NET मॉड्यूल को अनलिंक करें।
--stomp-headers: .NET असेंबली और रिफ्लेक्टिव DLL PE DOS हेडर को स्टॉम्प करें।
--etw: विंडोज पर इवेंट ट्रेसिंग (ETW) को बायपास करें।
--amsi: AMSI को बायपास करें।
--spawnto: spawnto प्रक्रिया चुनें, डिफ़ॉल्ट रूप से निष्पादित होने पर CLR लोड करने वाले .NET बाइनरी की सूची:
- PresentationHost.exe
- stordiag.exe
spawnto-list.txt में अतिरिक्त MS बाइनरी जो डिफ़ॉल्ट रूप से CLR लोड करती हैं और spawnto के रूप में सेट करने के लिए अच्छे उम्मीदवार हैं, देखें। (ज्ञात LOLBins से बचें जब तक कि यह डेव की मशीन न हो)
ExecuteAssembly --dotnetassembly /tmp/Seatbelt.exe --assemblyargs LogonSessions --unlink-modules --stomp-headers --amsi --etw --spawnto PresentationHost.exeExecuteAssembly --amsi --etw --unlink-modules --stomp-headers --dotnetassembly /tmp/ghostpack/SharPersist.exe --assemblyargs -t reg -c "C:\Windows\SysWow64\mshta.exe C:\Users\admin\Downloads\Test2.hta" -k logonscript -m add --spawnto FileHistory.exeExecuteAssembly --unlink-modules --stomp-headers --dotnetassembly /tmp/ghostpack/SharPersist.exe --assemblyargs -t reg -k "logonscript" -v "C:\Windows\SysWow64\mshta.exe C:\Users\admin\Downloads\Test.hta" -m remove --spawnto FileHistory.exeExecuteAssembly --unlink-modules --amsi --dotnetassembly /tmp/ghostpack/SharpWMI.exe --assemblyargs action=query computername=localhost query="select * from win32_service" --spawnto FileHistory.exeExecuteAssembly --amsi --etw --dotnetassembly /tmp/ghostpack/SharpWMI.exe --assemblyargs action=query query="select * from win32_process" --spawnto PresentationHost.exeमुख्य रूप से कोबाल्ट स्ट्राइक पर बनाया और परीक्षण किया गया था, हालाँकि इसे अन्य C2 फ्रेमवर्क (MSF ..etc) के साथ भी इस्तेमाल किया जा सकता है, बस ध्यान रखें कि रिफ्लेक्टिव DLL DLLMAIN एक-लाइनर पेलोड को पैरामीटर (lpReserved) के रूप में निम्नलिखित प्रारूप में (बिना ";" के) अपेक्षा करता है;
AMSI_FLAG|ETW_FLAG|STOMPHEADERS_FLAG|UNLINKMODULES_FLAG|LL_FLAG.LENGTH_FLAG.B64_ENCODED_COMPRESSED_PAYLOAD [SPACE SEPARATED ARGUMENTS]
AMSI_FLAG: 0|1 (या तो 0 या 1)ETW_FLAG: 0|1STOMPHEADERS_FLAG: 0|1UNLINKMODULES_FLAG: 0|1LENGTH_FLAG: .NET असेंबली का आकार बाइट्स मेंLL_FLAG: LENGTH_FLAG की लंबाई (बस मेरे साथ सहन करें या दिखावा करें कि आपने यह नहीं पढ़ा)B64_ENCODED_COMPRESSED_PAYLOAD: Gzip संपीड़ित और base64 एन्कोडेड .NET असेंबली।[SPACE SEPARATED ARGUMENTS]: .NET असेंबली तर्क- ScriptRunner.exe- caitstatic.exe- Microsoft.Uev.SyncController.exe- TsWpfWrp.exe- UevAgentPolicyGenerator.exe- UevAppMonitor.exe- FileHistory.exe- UevTemplateBaselineGenerator.exe- UevTemplateConfigItemGenerator.exe