
अनुसंधान नोट्स और .NET के DLR को हथियार बनाने के लिए PoC कोड वाला टूलबॉक्स
अनुसंधान नोट्स और .NET के DLR को हथियार बनाने के लिए PoC कोड वाला टूलबॉक्स
| स्क्रिप्ट | विवरण |
|---|---|
Kukulkan | SILENTTRINITY का एक पतला संस्करण, C# DLL और EXE जो IPY इंजन एम्बेड करते हैं। संचार एन्क्रिप्टेड हैं और CobaltStrike के साथ उपयोग किए जा सकते हैं। |
Invoke-JumpScare.ps1 | एक एम्बेडेड Boolang कंपाइलर का उपयोग करके शेलकोड निष्पादित करता है, कुछ भी डिस्क को स्पर्श नहीं करता (कम से कम मैंने जो देखा है) और csc.exe पर कोई कॉल नहीं की जाती :) |
Invoke-IronPython.ps1 | एम्बेडेड IPY इंजन का उपयोग करके IronPython कोड निष्पादित करता है। केवल IronPython का उपयोग करने वाले Invoke-JumpScare के समान अवधारणा। |
Invoke-ClearScript.ps1 | एम्बेडेड ClearScript इंजन का उपयोग करके JScript (या VBScript) निष्पादित करता है। |
SharpSnek.cs | C# कोड जो एक IronPython इंजन एम्बेड करता है और एम्बेडेड IPY कोड निष्पादित करता है। रनटाइम पर आवश्यक असेंबली को हल करने के लिए AppDomain.CurrentDomain.AssemblyResolve को हुक करता है। |
runBoo.cs | Invoke-JumpScare का C# संस्करण। एक एम्बेडेड Boolang कंपाइलर का उपयोग करके शेलकोड निष्पादित करता है। |
runBooAssemblyResolve.cs | C# कोड जो एक Boolang कंपाइलर एम्बेड करता है और एम्बेडेड Boolang कोड निष्पादित करता है। रनटाइम पर आवश्यक असेंबली को हल करने के लिए AppDomain.CurrentDomain.AssemblyResolve को हुक करता है। |
minidump.boo | MiniDumpWriteDump का उपयोग करके मेमोरी डंप करने के लिए नेटिव Boolang स्क्रिप्ट। |
shellcode.boo | शेलकोड निष्पादित करने वाली नेटिव Boolang स्क्रिप्ट। वर्तमान में 3 विभिन्न तकनीकें शामिल हैं (QueueUserAPC, CreateThread/WaitForSingleObject, WriteProcessMemory/CreateRemoteThread) |
Invoke-SSharp.ps1 | PowerShell के भीतर एक एम्बेडेड कंपाइलर से SSharp निष्पादित करता है। संकलन csc.exe को कॉल नहीं करता है। |
Invoke-Boolang.ps1 | एक एम्बेडेड कंपाइलर से Boo कोड निष्पादित करता है। यह उन बगों के लिए समाधान भी प्रदान करता है जो मैंने तब खोजे जब Boolang कंपाइलर PowerShell के भीतर एम्बेड हो जाता है। |
Invoke-NeoLua.ps1 |
.NET DLR बिल्कुल पागल है, यह आपको ऐसे पागल काम करने की अनुमति देता है जैसे कि अन्य .NET भाषाओं (जैसे PowerShell और C#) के भीतर कंपाइलर/इंजन एम्बेड करना, जबकि Opsec सुरक्षित और मेमोरी में रहना। IronPython के मामले में, आपके पास वह भी हो सकता है जिसे मैं 'इंजन इंसेप्शन' कहता हूं: एक IPY इंजन को दूसरे IPY इंजन के भीतर एम्बेड करना चाहते हैं? (yo dawg, I heard you liked IPY engines...).
आक्रामक दृष्टिकोण से इसकी अत्यधिक लचीलापन और कई फायदे हैं, कुछ नाम रखने के लिए:
.NET API तक आउट-ऑफ-द-बॉक्स पहुंच, बिना किसी भी तरह से Powershell से गुज़रे। मूल रूप से, DLR का उपयोग करने से आपको Powershell की सारी शक्ति मिलती है, केवल Powershell के बिना और एक ऐसी भाषा में जो (आमतौर पर) स्क्रिप्ट करने में आसान होती है (जैसे Python)
हर समय भारी मात्रा में रिफ्लेक्शन/एम्बेडिंग हो रही है, जिसका मतलब है अधिक चोरी।
DLR का उपयोग करके आप हमेशा AMSI को बायपास करते हैं (यदि आप अपने पेलोड को ठीक से इंस्ट्रूमेंट करते हैं), ओबफस्केट, पैच आदि करने की कोई आवश्यकता नहीं है।
आपकी सारी 'बुराई' आपके एम्बेडेड इंजन/कंपाइलर की भाषा में कोड की जा सकती है। यदि आप PowerShell का उपयोग करके ऐसा करते हैं, तो ScriptBlock Logging कुछ नहीं देखता क्योंकि सारा जादू DLR में होता है।
आमतौर पर, सभी DLR भाषाओं में भाषा के माध्यम से या C# को गतिशील रूप से संकलित करके (जैसे PowerShell का Add-Type) मूल विधियों को कॉल करने का एक तरीका होता है। यदि आप पहली विधि का उपयोग करते हैं तो csc.exe पर कोई कॉल नहीं किया जाता है और आमतौर पर डिस्क पर कुछ भी नहीं गिराया जाता है क्योंकि भाषाएं IL कोड के माध्यम से मेमोरी में आवश्यक सब कुछ उत्पन्न करती हैं। हम "...जितना नीचे और ऊपर चाहें.." (@Op_nomad) जा सकते हैं और यह हमें वे सभी अच्छी चीजें करने की अनुमति देता है जो हम सभी को पसंद हैं (शेलकोड इंजेक्ट करना, अनमैनेज्ड DLL, PEs लोड करना आदि)
पेलोड के त्वरित पुन: टूलिंग और हथियारीकरण की अनुमति देता है। किसी मैनुअल संकलन की आवश्यकता नहीं है।
यदि आप इसमें रुचि रखते हैं, तो यहां कुछ अन्य उपकरण हैं जो DLR को हथियार बनाने का प्रयास करते हैं:
उचित चेतावनी, यदि आप यह सामग्री पढ़ना शुरू करते हैं तो यह आपको एक भयानक खरगोश के बिल में भेज देगी (वास्तविक दानव खरगोशों के साथ)।
| PowerShell के भीतर एक एम्बेडेड कंपाइलर से Lua कोड निष्पादित करता है। |