
Cobalt Strike द्वारा Microsoft Graph API के माध्यम से HTTPS बीकनिंग

रिलीज़ ब्लॉग: GraphStrike: Using Microsoft Graph API to Make Beacon Traffic Disappear
डेवलपर ब्लॉग: GraphStrike: Anatomy of Offensive Tool Development
GraphStrike टूलों का एक सूट है जो Cobalt Strike के HTTPS Beacon को C2 संचार के लिए Microsoft Graph API का उपयोग करने में सक्षम बनाता है। सभी Beacon ट्रैफ़िक हमलावर के SharePoint साइट पर बनाई गई दो फ़ाइलों के माध्यम से प्रेषित होगा, और Beacon से सभी संचार https://graph.microsoft.com पर रूट होंगे:

GraphStrike में Graph API पर Cobalt Strike HTTPS के लिए आवश्यक Azure संसाधन बनाने के लिए एक प्रोविज़नर शामिल है:

GraphStrike Azure में कोई भुगतान संसाधन नहीं बनाता है, इसलिए GraphStrike या इसके प्रोविज़नर के उपयोग से कोई अतिरिक्त लागत नहीं आती है।
कई अलग-अलग APT द्वारा Microsoft Graph API और अन्य Microsoft सेवाओं का आक्रामक अभियानों के लिए उपयोग करने के बारे में थ्रेट इंटेलिजेंस जारी किया गया है:
धमकी देने वाले अभिनेता लगातार अवैध उद्देश्यों के लिए वैध सेवाओं का उपयोग कर रहे हैं। C2 संचार के लिए graph.microsoft.com जैसे उच्च-प्रतिष्ठा वाले डोमेन का उपयोग करना अत्यधिक प्रभावी और वांछनीय है, लेकिन अक्सर समय और प्रयास के दृष्टिकोण से जटिल और निषेधात्मक होता है। अधिकांश C2 फ्रेमवर्क एक्सेस टोकन प्राप्त करने या घुमाने के तरीकों का समर्थन नहीं करते हैं, जो उन्हें Graph API का उपयोग करने में असमर्थ बनाता है। यह रेड टीमों के लिए इन तकनीकों को दोहराना कठिन बना सकता है, और डिफेंडरों को इस प्रकार की गतिविधि के लिए अवलोकन और हस्ताक्षर विकसित करने के अवसर से वंचित करता है। GraphStrike उस बोझ को कम करना चाहता है और Cobalt Strike उपयोगकर्ता अनुभव की परिचितता और विश्वसनीयता को बनाए रखते हुए Microsoft Graph API का लाभ उठाने के लिए एक विश्वसनीय और दोहराने योग्य प्रक्रिया प्रदान करता है।
तकनीकी रूप से, नहीं। पहले Graph API का उपयोग करके एक सच्चा External C2 बनाया गया था (जो Beacon ट्रैफ़िक को Microsoft Teams संदेशों के रूप में भेजता था), उसके बाद एक कस्टम इम्प्लांट विकसित करने, बनाए रखने और एकीकृत करने का बोझ जो External C2 विनिर्देश को पूरा करता हो और काम करता हो, बहुत परिचित है। GraphStrike इसके बजाय काइल एवरी (Kyle Avery) द्वारा एक ओपन-सोर्स User Defined Reflective Loader(UDRL) का उपयोग करता है जिसे AceLdr कहा जाता है (इस प्रोजेक्ट में 'GraphLdr' के रूप में अनुकूलित) ताकि Beacon सामान्य रूप से जो WinINet लाइब्रेरी कॉल करता है उन्हें हुक किया जा सके और Graph API का उपयोग करने के लिए आवश्यकतानुसार उनमें हेरफेर किया जा सके। कोई कस्टम इम्प्लांट या अतिरिक्त प्रक्रिया नहीं है, बस कुछ हुक किए गए Windows API के साथ Beacon प्रक्रिया है। सर्वर साइड पर एक Python3 प्रोग्राम है जो Cobalt Strike Team Server ट्रैफ़िक को Graph API ट्रैफ़िक में और इसके विपरीत अनुवाद करता है।
GraphStrike लगभग सभी सामान्य Cobalt Strike गतिविधियों का समर्थन करता है:
इसमें GraphStrike के sleep, exit, और remove कमांड का एकीकरण भी शामिल है ताकि GraphStrike Server की स्लीप टाइम्स Beacon से मेल खाएं और जब Beacon को बाहर निकाला या हटाया जाता है तो SharePoint में फ़ाइलें हटा दी जाएं।
GraphStrike में मूल AceLdr की सभी विशेषताओं और कार्यक्षमता को भी शामिल किया गया है, जिसमें कॉल स्टैक स्पूफिंग का उपयोग करने के लिए कुछ अतिरिक्त API भी शामिल हैं।
GraphStrike शुरू करने से पहले निम्नलिखित आवश्यक है:
सेटअप प्रक्रिया के साथ आगे बढ़ने से पहले निम्नलिखित पर ध्यान दें:
1. कुछ घटक अन्य संसाधनों का पता लगाने के लिए सापेक्ष पथों का उपयोग करते हैं। कृपया नीचे दिए गए निर्देशानुसार निर्देशिकाएँ बदलें।
2. Cobalt Strike प्रोफ़ाइल को नीचे दी गई सेटअप प्रक्रिया के चरण 5 से पहले ही संपादित किया जा सकता हैनोट #1।
sudo setup/install_dependencies.sh चलाएं।python3 -m venv virtual और फिर source virtual/bin/activate चलाकर वर्चुअल वातावरण बनाएं और फिर उसमें प्रवेश करें।pip3 install -r requirements.txt चलाएं।./provisioner.py new चलाएं और सेटअप प्रक्रिया पूरी करें।graph.microsoft.com के साथ पोर्ट 443 पर एक Cobalt Strike HTTPS लिस्नर बनाएं।./GraphStrike.py का उपयोग करके GraphStrike सर्वर चलाएं।GraphLdr के आकार के कारण, आर्टिफैक्ट किट के उपयोगकर्ताओं को इसे विशिष्ट विकल्पों के साथ पुनः संकलित करना होगा ताकि GraphStrike आर्टिफैक्ट किट द्वारा उत्पन्न पेलोड के साथ संगत हो। विशेष रूप से, 'Stage Size' और 'RDLL Size' फ़ील्ड को 100K RDLL आकार का उपयोग करने के लिए निर्दिष्ट करने की आवश्यकता है। काम करने वाले दो सिंटैक्स उदाहरण नीचे दिए गए हैं:
./build.sh pipe VirtualAlloc 505029 100 false false none /opt/cobaltstrike/artifacts
./build.sh peek HeapAlloc 492376 100 false true indirect /opt/cobaltstrike/artifacts
./provisioner.py delete चलाएं।