Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
GraphStrike — Cobalt Strike द्वारा Microsoft Graph API के माध्यम से HTTPS बीकनिंग | Kitploit
उपकरण/GitHubGitHub/redsiege/graphstrike
भेद्यता परीक्षण फ्रेमवर्कशोषण फ्रेमवर्कक्लाउड सुरक्षाकमांड एंड कंट्रोलरेड टीमिंगAPI सुरक्षा
GitHubredsiege/graphstrike

GraphStrike

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

रिपॉजिटरी देखें
635992 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

GraphStrike

gscolor

रिलीज़ ब्लॉग: 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 पर रूट होंगे:

image

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

image

GraphStrike Azure में कोई भुगतान संसाधन नहीं बनाता है, इसलिए GraphStrike या इसके प्रोविज़नर के उपयोग से कोई अतिरिक्त लागत नहीं आती है।

क्यों?

कई अलग-अलग APT द्वारा Microsoft Graph API और अन्य Microsoft सेवाओं का आक्रामक अभियानों के लिए उपयोग करने के बारे में थ्रेट इंटेलिजेंस जारी किया गया है:

  1. BLUELIGHT - APT37/InkySquid/ScarCruft
  2. Graphite - APT28/Fancy Bear
  3. Graphican - APT15/Nickel/The Flea
  4. SiestaGraph - UNKNOWN

धमकी देने वाले अभिनेता लगातार अवैध उद्देश्यों के लिए वैध सेवाओं का उपयोग कर रहे हैं। C2 संचार के लिए graph.microsoft.com जैसे उच्च-प्रतिष्ठा वाले डोमेन का उपयोग करना अत्यधिक प्रभावी और वांछनीय है, लेकिन अक्सर समय और प्रयास के दृष्टिकोण से जटिल और निषेधात्मक होता है। अधिकांश C2 फ्रेमवर्क एक्सेस टोकन प्राप्त करने या घुमाने के तरीकों का समर्थन नहीं करते हैं, जो उन्हें Graph API का उपयोग करने में असमर्थ बनाता है। यह रेड टीमों के लिए इन तकनीकों को दोहराना कठिन बना सकता है, और डिफेंडरों को इस प्रकार की गतिविधि के लिए अवलोकन और हस्ताक्षर विकसित करने के अवसर से वंचित करता है। GraphStrike उस बोझ को कम करना चाहता है और Cobalt Strike उपयोगकर्ता अनुभव की परिचितता और विश्वसनीयता को बनाए रखते हुए Microsoft Graph API का लाभ उठाने के लिए एक विश्वसनीय और दोहराने योग्य प्रक्रिया प्रदान करता है।

क्या यह एक External C2 है?

तकनीकी रूप से, नहीं। पहले 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 गतिविधियों का समर्थन करता है:

  1. Cobalt Strike SOCKS प्रॉक्सी के माध्यम से Proxychains का उपयोग (हालांकि यह बहुत धीमा है...)
  2. बड़ी फ़ाइलों का अपलोड/डाउनलोड
  3. BOFs, execute-assembly, आदि।

इसमें GraphStrike के sleep, exit, और remove कमांड का एकीकरण भी शामिल है ताकि GraphStrike Server की स्लीप टाइम्स Beacon से मेल खाएं और जब Beacon को बाहर निकाला या हटाया जाता है तो SharePoint में फ़ाइलें हटा दी जाएं।

GraphStrike में मूल AceLdr की सभी विशेषताओं और कार्यक्षमता को भी शामिल किया गया है, जिसमें कॉल स्टैक स्पूफिंग का उपयोग करने के लिए कुछ अतिरिक्त API भी शामिल हैं।

आवश्यकताएँ

GraphStrike शुरू करने से पहले निम्नलिखित आवश्यक है:

  1. SharePoint/O365 लाइसेंस वाला एक Microsoft Azure टेनेंट + साइट बनाई गई हो। डिफ़ॉल्ट साइट ठीक है।
  2. उस टेनेंट में Global Administrator अनुमतियों वाला एक Azure खाता।
  3. Python 3.8-3.11नोट #4 (और अतिरिक्त निर्भरताएँ जो सेटअप प्रक्रिया के दौरान स्थापित की जाएंगी)

फ़ायरवॉल नियम

  1. सुनिश्चित करें कि प्रत्येक मशीन जिस पर Cobalt Strike क्लाइंट चलता है, Cobalt Strike टीम सर्वर मशीन से पोर्ट 443 और 5000 पर कनेक्ट करने में सक्षम है।

सेटअप

सेटअप प्रक्रिया के साथ आगे बढ़ने से पहले निम्नलिखित पर ध्यान दें:

1. कुछ घटक अन्य संसाधनों का पता लगाने के लिए सापेक्ष पथों का उपयोग करते हैं। कृपया नीचे दिए गए निर्देशानुसार निर्देशिकाएँ बदलें।
2. Cobalt Strike प्रोफ़ाइल को नीचे दी गई सेटअप प्रक्रिया के चरण 5 से पहले ही संपादित किया जा सकता हैनोट #1।

उस मशीन पर जो Cobalt Strike टीम सर्वर चलाएगी:

  1. रिपो को क्लोन करें।
  2. रिपो निर्देशिका से, आवश्यक सिस्टम निर्भरताएँ स्थापित करने के लिए sudo setup/install_dependencies.sh चलाएं।
  3. python3 -m venv virtual और फिर source virtual/bin/activate चलाकर वर्चुअल वातावरण बनाएं और फिर उसमें प्रवेश करें।
  4. सेटअप निर्देशिका में बदलें और pip3 install -r requirements.txt चलाएं।
  5. ./provisioner.py new चलाएं और सेटअप प्रक्रिया पूरी करें।
  6. malleable C2 प्रोफ़ाइल के रूप में graphstrike.profile का उपयोग करके Cobalt Strike टीम सर्वर शुरू करें।
  7. एक Cobalt Strike क्लाइंट इंस्टेंस शुरू करें (आप इसे क्लाइंट मशीन पर कर सकते हैं, या TS बॉक्स पर करके बाद में इसे खत्म कर सकते हैं) और HTTPS Hosts और HTTPS Host(Stager) फ़ील्ड में graph.microsoft.com के साथ पोर्ट 443 पर एक Cobalt Strike HTTPS लिस्नर बनाएं।
  8. मुख्य रिपो निर्देशिका में वापस जाएं और ./GraphStrike.py का उपयोग करके GraphStrike सर्वर चलाएं।

सभी मशीनों पर जो Cobalt Strike क्लाइंट चलाएंगी:

  1. TS मशीन से क्लाइंट मशीन पर GraphStrike/client निर्देशिका को कॉपी करें। यह केवल प्रोविज़निंग पूरी होने के बाद ही किया जाना चाहिए!
  2. स्क्रिप्ट मैनेजर का उपयोग करके GraphStrike.cna को Cobalt Strike में आयात करें।
  3. Cobalt Strike पेलोड बनाएं, चाहे वह रॉ शेलकोड हो या आर्टिफैक्ट किट या वैकल्पिक पेलोड जनरेशन फ्रेमवर्क का उपयोग करके संकलित आर्टिफैक्ट हों। आर्टिफैक्ट किट उपयोगकर्ता नीचे देखें!
  4. लाभ उठाएं।

आर्टिफैक्ट किट उपयोगकर्ता

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

सफाई

उस मशीन पर जो TS + GraphStrike सर्वर चला रही है:

  1. GraphStrike सर्वर को रोकें
  2. सेटअप निर्देशिका में वापस जाएं और बनाए गए Azure संसाधनों को हटाने के लिए ./provisioner.py delete चलाएं।

नोट्स

बिना किसी विशेष क्रम के, GraphStrike का पूर्ण उपयोग करने में मदद करने के लिए यहाँ कुछ सुझाव और अवलोकन दिए गए हैं।

  1. GraphStrike के साथ शामिल प्रोफ़ाइल बहुत न्यूनतम है; यह डिज़ाइन द्वारा है। प्रोफ़ाइल में मौजूदा फ़ील्ड में से किसी को भी बदलने से GraphStrike टूट सकता है! आप प्रोफ़ाइल में अतिरिक्त भाषा/व्यवहार को उन अनुभागों में जोड़ने में सक्षम होना चाहिए जो पहले से परिभाषित नहीं हैं (उदा. पाइप का नाम अनुकूलित करें, इंजेक्शन व्यवहार, आदि)। प्रोफ़ाइल में कोई भी संपादन प्रोविज़नर चलाने से पहले किया जाना चाहिए!
  2. वह Azure एप्लिकेशन जो Beacon और GraphStrike सर्वर दोनों द्वारा C2 संचार के लिए उपयोग किया जाता है, 1200 अनुरोध/मिनट तक सीमित है। GraphStrike सर्वर कार्य करने के लिए आधार रेखा के रूप में 120/मिनट का उपयोग करता है। Beacon की स्लीप टाइम जितनी कम होगी, वह उतने अधिक अनुरोध करेगा; इसके अतिरिक्त, GraphStrike का उपयोग करके बनाया गया प्रत्येक Beacon उस 1200/मिनट की सीमा का कुछ हिस्सा उपयोग करेगा। किसी Beacon के साथ इंटरैक्टिव जाना संभव है, लेकिन एक से अधिक Beacon के साथ इंटरैक्टिव जाना संभवतः नहीं है। यदि आप दर-सीमा की समस्या में भागते हैं, तो अपने बीकन की स्लीप टाइम बढ़ाने, चल रहे Beacon की संख्या कम करने, या दोनों पर विचार करें।
  3. जबकि GraphStrike सर्वर की स्लीप टाइम जारी किए गए स्लीप कमांड के अनुसार प्रति-Beacon आधार पर बदलती है, इसका वास्तव में मतलब यह है कि GraphStrike सर्वर टास्किंग के लिए TS से जाँच करने से पहले निर्दिष्ट समय तक सोएगा। इसका मतलब यह नहीं है कि Beacon तुरंत प्राप्त करेगा और टास्किंग को प्रोसेस करेगा जैसे ही इसे GraphStrike सर्वर द्वारा TS से पुनर्प्राप्त किया जाता है। Beacon SharePoint तक पहुँचने और TS टास्किंग प्राप्त करने से पहले निर्दिष्ट समय तक सोएगा, लेकिन async C2 की प्रकृति के कारण यह उस समय के साथ तालमेल में नहीं होगा जब GraphStrike सर्वर इसे अपलोड करता है।
  4. यदि कोई Beacon बिना सही तरीके से बाहर निकले मर जाता है (AV, यह क्रैश हो जाता है, आदि), तो Beacon दिखाई देगा मानो अभी भी TS में कॉल कर रहा हो, और यह तथ्य कि वह मर चुका है, तभी स्पष्ट होगा जब आप उसे कोई कमांड जारी करेंगे। वास्तव में TS से क्या जुड़ रहा है / जो Beacon को अभी भी कॉल इन करता दिखा रहा है वह GraphStrike सर्वर है, इसलिए यह वास्तव में Beacon के स्वास्थ्य का प्रतिबिंब नहीं है। ऐसी है async C2 की प्रकृति।
  5. GraphStrike 1:1:1 मॉडल पर काम करता है; 1 SharePoint साइट 1 GraphStrike सर्वर से जुड़ी होती है जो 1 TS से जुड़ा होता है। यदि आप एकल SharePoint साइट से दो TS/GraphStrike सर्वरों को जोड़ने का प्रयास करते हैं तो आपको समस्याएँ होंगी। आप निश्चित रूप से कई Cobalt Strike क्लाइंट्स को एकल TS / GraphStrike सर्वर से जोड़ सकते हैं, प्रत्येक क्लाइंट को केवल प्रोविज़निंग प्रक्रिया द्वारा उत्पन्न 'client' फ़ोल्डर की एक प्रति की आवश्यकता होती है।
  6. एक ज्ञात समस्या है जो GraphStrike द्वारा उपयोग की जाने वाली az उपयोगिता और Python 3.12 के बीच संगतता से संबंधित है।
  7. मैं अनुशंसा करूंगा कि आप AceLdr के दस्तावेज़ीकरण की समीक्षा करें, क्योंकि उस प्रोजेक्ट के सभी नोट्स यहाँ भी लागू होते हैं।

सीमाएँ

GraphStrike में निम्नलिखित सीमाएँ मौजूद हैं:

  1. केवल x64 Beacon समर्थित हैं।
  2. स्टेज्ड Beacon समर्थित नहीं हैं।
  3. GraphStrike केवल WinINet लाइब्रेरी के साथ संगत है; Beacon के लिए नया WinHTTP लाइब्रेरी विकल्प समर्थित नहीं है।
  4. Beacon के राइट-क्लिक मेनू के माध्यम से स्लीप कमांड जारी करने का समर्थन नहीं है। इसके बजाय कमांड लाइन विकल्प का उपयोग करके Beacon को सुलाएं।
  5. GraphStrike केवल Cobalt Strike के Linux इंस्टेंस पर समर्थित है। विंडोज समर्थन निश्चित रूप से लागू किया जा सकता है, और यह वास्तव में Python फ़ाइलों और Aggressor स्क्रिप्ट के भीतर कुछ पथों को बदलने का मामला है।

क्रेडिट्स

GraphStrike निम्नलिखित व्यक्तियों के योगदान के बिना संभव नहीं होता:

  1. काइल एवरी (Kyle Avery) AceLdr के लिए
  2. डिडिएर स्टीवंस (Didier Stevens) cs-decrypt-metadata.py के लिए
  3. Red Siege टीम से माइक सॉन्डर्स (Mike Saunders), कोरी ओवरस्ट्रीट (Corey Overstreet), क्रिस ट्रुन्सर (Chris Truncer), और जस्टिन पाक (Justin Palk) जिन्होंने कृपया GraphStrike का बीटा परीक्षण किया और रिलीज़ से पहले कई मुद्दों की पहचान की जिन्हें ठीक किया गया।
टूल डाउनलोड करें