
CobaltStrike Beacons में अप्रबंधित Windows निष्पादन योग्य फ़ाइलों को निष्पादित करें
Inline-Execute-PE CobaltStrike के लिए Beacon Object Files (BOF's) और एक संगत Aggressor स्क्रिप्ट का एक सूट है जो ऑपरेटरों को अप्रबंधित Windows निष्पादन योग्य फ़ाइलों को Beacon मेमोरी में लोड करने और उन्हें निष्पादित करने, आउटपुट प्राप्त करने और Beacon कंसोल में प्रस्तुत करने में सक्षम बनाता है।
यह ऑपरेटरों को कई तृतीय-पक्ष टूल्स (Mimikatz, Dsquery, Sysinternals टूल्स, आदि) का उपयोग करने में सक्षम बनाता है, बिना उन्हें डिस्क पर डालने, Donut जैसे टूल का उपयोग करके पोजीशन-इंडिपेंडेंट कोड में सुधारने, या उन्हें चलाने के लिए एक नई प्रक्रिया बनाने की आवश्यकता के।
ये निष्पादन योग्य फ़ाइलें Beacon मेमोरी में मैप की जाती हैं ताकि उन्हें बार-बार चलाया जा सके, बिना उन्हें नेटवर्क पर भेजने, नई मेमोरी आवंटित करने, और हर बार एक नया conhost.exe प्रक्रिया बनाने की आवश्यकता के।
Beacons में लोड की गई निष्पादन योग्य फ़ाइलें CobaltStrike Team Server से जुड़े सभी CobaltStrike Clients द्वारा सुलभ और चलाने योग्य होती हैं।
Inline-Execute-PE को x64 Beacons और Mingw या Visual Studio का उपयोग करके संकलित x64 Windows C या C++ निष्पादन योग्य फ़ाइलों के लिए डिज़ाइन किया गया था। यह प्रोजेक्ट x86 निष्पादन योग्य फ़ाइलों या किसी भिन्न भाषा में लिखी गई या किसी भिन्न कंपाइलर का उपयोग करके संकलित x64 निष्पादन योग्य फ़ाइलों का समर्थन नहीं करता है।

रिपॉजिटरी को क्लोन करें और BOF's को पुनः संकलित करने के लिए वैकल्पिक रूप से make चलाएं।
CobaltStrike क्लाइंट में Inline-Execute-PE.cna लोड करें। सुनिश्चित करें कि जिस निर्देशिका से CobaltStrike चल रहा है वह आपके उपयोगकर्ता द्वारा लिखने योग्य है; Inline-Execute-PE वहां एक टेक्स्ट फ़ाइल (petable.txt) बनाता है ताकि Inline-Execute-PE के कार्य करने के लिए आवश्यक डेटा की उपलब्धता सुनिश्चित हो सके।
Inline-Execute-PE में 3 लक्ष्य-मुखी कमांड होते हैं जो BOF's चलाते हैं, और 3 आंतरिक कमांड होते हैं जो प्रोजेक्ट डेटा-संरचना में हेरफेर करते हैं:
लक्ष्य-मुखी:
आंतरिक डेटा-संरचना:
peload Inline-Execute-PE की शुरुआत है। इस कमांड का उपयोग PE को Beacon मेमोरी में लोड करने के लिए किया जाता है। यह निम्नलिखित प्रमुख क्रियाएं करता है:
perun Inline-Execute-PE में दूसरा चरण है। यह निम्नलिखित प्रमुख क्रियाएं करता है:
peunload को तब कॉल किया जाता है जब कोई ऑपरेटर PE के साथ काम पूरा कर लेता है या कोई भिन्न PE लोड करना चाहता है। यह निम्नलिखित प्रमुख क्रियाएं करता है:
petable का उपयोग वर्तमान में Beacons में लोड सभी PE के बारे में जानकारी प्रदर्शित करने के लिए किया जाता है।
प्रत्येक CobaltStrike क्लाइंट का अपना petable होता है; Inline-Execute-PE अपने डेटा की सिंक्रोनिटी सुनिश्चित करने के लिए बहुत प्रयास करता है ताकि PE का उपयोग सभी ऑपरेटरों द्वारा किया जा सके। इसके बारे में अधिक जानने के लिए, "Design Considerations and Commentary" देखें।

peconfig का उपयोग Inline-Execute-PE के कार्य करने के तरीके से संबंधित विकल्पों को कॉन्फ़िगर करने के लिए किया जाता है। दो वर्तमान विकल्प जिन्हें बदला जा सकता है वे हैं:
pebroadcast का उपयोग किसी क्लाइंट के petable की सामग्री को मैन्युअल रूप से अन्य सभी जुड़े CobaltStrike क्लाइंट्स को प्रसारित करने के लिए किया जा सकता है।
अन्य सभी CobaltStrike क्लाइंट प्रसारित डेटा के साथ अपने petable को अपडेट करेंगे। यह वास्तव में कभी भी आवश्यक नहीं होना चाहिए, लेकिन यह सुविधा केवल मामले में मौजूद है।
PE को Beacon मेमोरी में लोड करने के लिए peload का उपयोग करें

वैकल्पिक रूप से, यदि लक्ष्य मशीन पर कोई PE है जिसे आप एक नई प्रक्रिया बनाए बिना उपयोग करना चाहते हैं, तो पथ और --local स्विच प्रदान करें

perun को कॉल करें, लोड किए गए PE को कोई भी तर्क पास करें

तर्कों में डबल कोट्स को बैकस्लैश का उपयोग करके एस्केप किया जाना चाहिए

यदि आपने पहचान लिया है कि एक PE अनलोड के दौरान DLL को मुक्त करने का प्रयास करने पर समस्याएं पैदा करता है, तो unloadlibraries को false पर सेट करने के लिए peconfig का उपयोग करें

एक बार जब आप PE का उपयोग कर लेते हैं, तो इसे Beacon से साफ करने के लिए peunload को कॉल करें

अब एक अलग PE को Beacon में लोड किया जा सकता है
