
मौजूदा प्रक्रिया में .NET असेंबलियों को इंजेक्ट करें
यह टूल Cobalt Strike के लिए पारंपरिक fork and run निष्पादन का एक विकल्प है। लोडर को किसी भी प्रक्रिया में इंजेक्ट किया जा सकता है, जिसमें वर्तमान Beacon भी शामिल है। लंबे समय तक चलने वाली असेंबली चलती रहेंगी और Beacon को आउटपुट वापस भेजती रहेंगी, जो execute-assembly के व्यवहार के समान है।
inject-assembly के दो घटक हैं:
BOF आरंभक: एक छोटा प्रोग्राम जो किसी रिमोट प्रक्रिया में असेंबली लोडर को किसी भी तर्क के साथ इंजेक्ट करने के लिए जिम्मेदार है। यह इंजेक्शन करने के लिए BeaconInjectProcess का उपयोग करता है, जिसका अर्थ है कि इस व्यवहार को Malleable C2 प्रोफ़ाइल या प्रक्रिया इंजेक्शन BOF (संस्करण 4.5 के अनुसार) में अनुकूलित किया जा सकता है।
PIC असेंबली लोडर: परियोजना का मुख्य भाग। लोडर .NET रनटाइम को प्रारंभ करेगा, प्रदान की गई असेंबली को लोड करेगा, और असेंबली को निष्पादित करेगा। लोडर लक्ष्य प्रक्रिया में एक नया AppDomain बनाएगा ताकि निष्पादन पूर्ण होने पर लोड की गई असेंबली को पूरी तरह से अनलोड किया जा सके।
रिमोट प्रक्रिया और Beacon के बीच संचार एक नामांकित पाइप (named pipe) के माध्यम से होता है। Aggressor स्क्रिप्ट एक पाइप नाम उत्पन्न करती है और फिर इसे BOF आरंभक को भेजती है।
डाउनलोड करें और inject-assembly.cna Aggressor स्क्रिप्ट को Cobalt Strike में लोड करें। फिर आप निम्न कमांड का उपयोग करके असेंबली निष्पादित कर सकते हैं:
inject-assembly pid assembly [args...]
वर्तमान Beacon प्रक्रिया में निष्पादित करने के लिए PID के रूप में 0 निर्दिष्ट करें।
यह अनुशंसा की जाती है कि किसी अन्य टूल, जैसे FindObjects-BOF, का उपयोग करके एक ऐसी प्रक्रिया का पता लगाएं जो पहले से .NET रनटाइम लोड करती है, लेकिन inject-assembly के कार्य करने के लिए यह आवश्यक नहीं है।
jobkill का उपयोग करके नामांकित पाइप को डिस्कनेक्ट कर सकते हैं।यह परियोजना निम्नलिखित परियोजनाओं के बिना संभव नहीं होती:
अन्य सुविधाओं और प्रेरणा को निम्नलिखित संसाधनों से लिया गया है: