
.NET/PowerShell/VBA आक्रामक सुरक्षा Obfuscator
[!CAUTION] यह रेपो अनुरक्षित नहीं है, नवीनतम संस्करण के लिए https://github.com/sadreck/Codecepticon पर जाएं।
Codecepticon एक .NET एप्लिकेशन है जो आपको C#, VBA/VB6 (मैक्रोज़), और PowerShell स्रोत कोड को अस्पष्ट (obfuscate) करने की अनुमति देता है, और इसे आक्रामक सुरक्षा अभियानों जैसे Red/Purple Teams के लिए विकसित किया गया है। Codecepticon को अन्य अस्पष्टकर्ताओं से अलग करता है कि यह संकलित एक्जीक्यूटेबल के बजाय स्रोत कोड को लक्षित करता है, और विशेष रूप से AV/EDR से बचाव के लिए विकसित किया गया था।
Codecepticon आपको कोड को अस्पष्ट और फिर से लिखने की अनुमति देता है, लेकिन कमांड लाइन को फिर से लिखने जैसी सुविधाएँ भी प्रदान करता है।
! शुरू करने से पहले !
यह दस्तावेज़ केवल Codecepticon को स्थापित करने और उपयोग करने के बारे में है। Rubeus और SharpHound जैसे उपकरणों के लिए संकलन, उपयोग और समर्थन प्रदान नहीं किया जाएगा। अधिक जानकारी के लिए प्रत्येक प्रोजेक्ट के रेपो को अलग-अलग देखें।
Codecepticon सक्रिय रूप से VS2022 में विकसित/परीक्षण किया जाता है, लेकिन यह VS2019 में भी काम करना चाहिए। VS2019 और उससे नीचे के लिए बनाए गए किसी भी टिकट/मुद्दे की जाँच नहीं की जाएगी जब तक कि समस्या VS2022 में प्रतिलिपि योग्य न हो। इसलिए कृपया नवीनतम और सर्वश्रेष्ठ VS2022 का उपयोग करें।
निम्नलिखित पैकेज v3.9.0 ही होने चाहिए, क्योंकि नए संस्करणों में निम्नलिखित समस्या है जो अभी भी खुली है: https://github.com/dotnet/roslyn/issues/58463
Codecepticon रनटाइम पर इन पैकेजों के संस्करण की जाँच करता है और यदि संस्करण v3.9.0 से भिन्न है तो आपको सूचित करेगा।
यह पर्याप्त रूप से जोर नहीं दिया जा सकता: हमेशा अपने अस्पष्ट कोड का पहले स्थानीय रूप से परीक्षण करें।


Codecepticon खोलें, सभी NuGet पैकेज डाउनलोड होने तक प्रतीक्षा करें और फिर समाधान बनाएँ।
Codecepticon का उपयोग करने के दो तरीके हैं: या तो सभी तर्कों को कमांड लाइन में डालकर या एक एकल XML कॉन्फ़िगरेशन फ़ाइल पास करके। समर्थित अनुकूलन के उच्च स्तर के कारण, --help आउटपुट से मैन्युअल रूप से गुज़रकर यह पता लगाने की अनुशंसा नहीं की जाती है कि कौन से पैरामीटर का उपयोग करना है और कैसे। CommandLineGenerator.html का उपयोग करें और अपनी कमांड जल्दी से जनरेट करें:

कमांड जनरेटर का आउटपुट फ़ॉर्मेट Console या XML हो सकता है, यह इस पर निर्भर करता है कि आप क्या पसंद करते हैं। कंसोल कमांड को इस प्रकार निष्पादित किया जा सकता है:
Codecepticon.exe --action obfuscate --module csharp --verbose ...etc
जबकि XML कॉन्फ़िग फ़ाइल का उपयोग करते समय, इस प्रकार:
Codecepticon.exe --config C:\Your\Path\To\The\File.xml
यदि आप Codecepticon की कार्यक्षमता में गहराई से जाना चाहते हैं, तो इस दस्तावेज़ को देखें।
उपयोगी टिप्स के लिए, इस दस्तावेज़ को देखें।
C# प्रोजेक्ट को अस्पष्ट करना सरल है, बस उस समाधान का चयन करें जिसे आप लक्षित करना चाहते हैं। ध्यान दें कि समाधान का कोई बैकअप नहीं लिया जाएगा, और वर्तमान वही होगा जिसे अस्पष्ट किया जाएगा। सुनिश्चित करें कि Codecepticon को चलाने का प्रयास करने से पहले आप लक्ष्य प्रोजेक्ट को स्वतंत्र रूप से संकलित कर सकते हैं।
VBA अस्पष्टीकरण Microsoft Office दस्तावेज़ के बजाय स्रोत कोड पर ही काम करता है। इसका मतलब है कि आप Codecepticon को doc(x) या xls(x) फ़ाइल पास नहीं कर सकते। यह मॉड्यूल का स्रोत कोड ही होना चाहिए (Alt-F11 दबाएं और वहाँ से कोड कॉपी करें)।
PowerShell स्क्रिप्ट की जटिलता के साथ-साथ स्क्रिप्ट लिखने में प्रदान की गई स्वतंत्रता के कारण, सभी किनारे मामलों को कवर करना और यह सुनिश्चित करना चुनौतीपूर्ण है कि अस्पष्ट परिणाम पूरी तरह से कार्यात्मक होगा। हालाँकि यह उम्मीद की जाती है कि Codecepticon सरल स्क्रिप्ट/कार्यक्षमता के खिलाफ ठीक काम करेगा, PowerView जैसी जटिल स्क्रिप्ट के खिलाफ इसे चलाना काम नहीं करेगा - यह प्रगति पर है।
किसी एप्लिकेशन या स्क्रिप्ट को अस्पष्ट करने के बाद, यह बहुत संभावना है कि कमांड लाइन तर्कों का भी नाम बदल दिया गया है। इसका समाधान HTML मैपिंग फ़ाइल का उपयोग करके नए नामों का पता लगाना है। उदाहरण के लिए, आइए निम्नलिखित कमांड लाइन को परिवर्तित करें:
SharpHound.exe --CollectionMethods DCOnly --OutputDirectory C:\temp\
प्रत्येक तर्क के लिए HTML मैपिंग फ़ाइल में खोज करने पर, हमें मिलता है:



और सभी स्ट्रिंग्स को बदलने पर परिणाम है:
ObfuscatedSharpHound.exe --AphylesPiansAsp TurthsTance --AnineWondon C:\temp\
हालाँकि, कुछ मान एक से अधिक श्रेणी में मौजूद हो सकते हैं:

इसलिए हमेशा अपने परिणाम का पहले स्थानीय वातावरण में परीक्षण करना महत्वपूर्ण है।
Codecepticon का उपयोग करके डिजिटल रूप से एक्जीक्यूटेबल फ़ाइलों (आपके संकलित आउटपुट) पर हस्ताक्षर करना भी संभव है। Codecepticon आपके लिए एक हस्ताक्षर प्रमाणपत्र उत्पन्न कर सकता है और साथ ही आपकी लक्ष्य फ़ाइल पर हस्ताक्षर करने के लिए इसका (या कोई अन्य जो आप प्रदान कर सकते हैं) उपयोग कर सकता है।
संकलित आउटपुट में बहुत सारे निर्भरता DLL शामिल हैं, जिन्हें लाइसेंसिंग आवश्यकताओं के कारण हम लिखित सहमति के बिना पुनर्वितरित नहीं कर सकते।
नहीं, Codecepticon को हर चीज़ के साथ काम करना चाहिए। प्रोफ़ाइल केवल कुछ अतिरिक्त ट्वीक हैं जो लक्ष्य प्रोजेक्ट में किए जाते हैं ताकि इसे और अधिक विश्वसनीय और साथ काम करने में आसान बनाया जा सके।
लेकिन जैसा कि सभी कोड अद्वितीय है, ऐसे उदाहरण होंगे जहाँ किसी प्रोजेक्ट को अस्पष्ट करने पर एक या दो त्रुटियाँ होंगी जो इसे संकलित या निष्पादित होने से रोकेंगी। इस मामले में एक नई प्रोफ़ाइल की आवश्यकता हो सकती है - कृपया यदि ऐसा है तो एक नया मुद्दा बनाएं।
यही सिद्धांत PowerShell/VBA कोड पर भी लागू होता है - हालाँकि वर्तमान में उनके पास Codecepticon के साथ कोई प्रोफ़ाइल नहीं है, यदि कुछ की आवश्यकता हो तो उन्हें जोड़ना एक आसान काम है।
बग रिपोर्ट करने और नई सुविधाओं का सुझाव देने के लिए, कृपया एक मुद्दा बनाएं।
पुल रिक्वेस्ट सबमिट करने के लिए, कृपया योगदान अनुभाग देखें।
Codecepticon चलाने से पहले सुनिश्चित करें कि आप लक्ष्य प्रोजेक्ट का साफ़ संस्करण संकलित कर सकते हैं। अक्सर जब यह समस्या दिखाई देती है, तो यह Codecepticon के बजाय लक्ष्य समाधान के लिए लापता निर्भरता के कारण होती है। लेकिन यदि यह अभी भी संकलित नहीं होता है:
मैं अपनी पूरी कोशिश करूँगा, लेकिन PowerShell स्क्रिप्ट बहुत जटिल हो सकती हैं और PSParser C# के लिए Roslyn जितना उन्नत नहीं है, इसलिए कोई वादा नहीं किया जा सकता। यही बात VBA/VB6 पर भी लागू होती है।
हो सकता है कि आप किसी बिंदु पर निम्नलिखित त्रुटि का सामना करें:

अभी भी इसकी तह तक जाने की कोशिश कर रहा हूँ, एक त्वरित समाधान NuGet पैकेज मैनेजर से System.Collections.Immutable पैकेज को अनइंस्टॉल और पुनः इंस्टॉल करना है।
चाहे वह टाइपो हो, बग हो या नई सुविधा, Codecepticon योगदान के लिए बहुत खुला है जब तक हम निम्नलिखित पर सहमत हैं: