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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
aggrokatz — Aggrokatz एक आक्रामक प्लगइन एक्सटेंशन है जो Cobalt Strike के लिए है, जो pypykatz को बीकन के साथ दूरस्थ रूप से इंटरफेस करने में सक्षम बनाता है और इसे LSASS डंप फ़ाइलों और रजिस्ट्री हाइव फ़ाइलों को पार्स करके फ़ाइल डाउनलोड किए बिना और बीकन पर कोई संदिग्ध कोड अपलोड किए बिना क्रेडेंशियल्स और अन्य संग्रहीत रहस्यों को निकालने की अनुमति देता है। | Kitploit
उपकरण/GitHubGitHub/sec-consult/aggrokatz
शोषण फ्रेमवर्कपोस्ट-शोषणपेनिट्रेशन टेस्टिंगरेड टीमिंगपेलोड डेवलपमेंट
GitHubsec-consult/aggrokatz

aggrokatz

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

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

सभी देखें →

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

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

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

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

विवरण

Aggrokatz एक आक्रामक प्लगइन एक्सटेंशन है जो Cobalt Strike के लिए है, जो pypykatz को बीकन के साथ दूरस्थ रूप से इंटरफेस करने में सक्षम बनाता है और इसे LSASS डंप फ़ाइलों और रजिस्ट्री हाइव फ़ाइलों को पार्स करके फ़ाइल डाउनलोड किए बिना और बीकन पर कोई संदिग्ध कोड अपलोड किए बिना क्रेडेंशियल्स और अन्य संग्रहीत रहस्यों को निकालने की अनुमति देता है।

साझा करें

aggrokatz

aggro_card

यह क्या है

aggrokatz एक Aggressor प्लगइन एक्सटेंशन है CobaltStrike के लिए, जो pypykatz को बीकन के साथ दूरस्थ रूप से इंटरफ़ेस करने में सक्षम बनाता है।
aggrokatz का वर्तमान संस्करण pypykatz को LSASS डंप फ़ाइलों और Registry Hive फ़ाइलों को पार्स करने की अनुमति देता है ताकि क्रेडेंशियल और अन्य रहस्यों को निकाला जा सके, बिना फ़ाइल डाउनलोड किए और बिना कोई संदिग्ध कोड बीकन पर अपलोड किए (Cobalt Strike तो पहले से ही है)। भविष्य में इस परियोजना का उद्देश्य गुप्त ऑपरेशनों के लिए अतिरिक्त सुविधाएँ प्रदान करना है, जैसे कि सभी DPAPI रहस्यों/केर्बेरोस्टिंग आदि की खोज और डिक्रिप्ट करना।

हमने इस टूल रिलीज़ के लिए एक छोटा blog post प्रकाशित किया है, जिसमें कुछ स्क्रीनशॉट भी शामिल हैं।

महत्वपूर्ण नोट - कृपया इसे पढ़ें

LSASS/Registry डंप करना इस प्रोजेक्ट का लक्ष्य नहीं है, केवल पार्स करना है। कारण:

  1. डंप करने की कई तकनीकें पहले से ही Cobalt Strike (CS) से लागू हैं और व्यापक रूप से सार्वजनिक रूप से उपलब्ध हैं। हाल ही में हमने CredBandit के एक संशोधित संस्करण का उपयोग करना शुरू किया है जो बेस64 के बजाय डिस्क पर रॉ बाइट्स डंप करता है। बढ़िया टूल, इसे देखें।
  2. हम अपनी डंपिंग तकनीक को निजी रखना चाहते हैं।

CS क्लाइंट में, यदि आपने स्क्रिप्ट को संशोधित किया है तो "reload" का उपयोग न करें या मैन्युअल रूप से अनलोड और फिर से लोड करने का प्रयास न करें। आपको इसे अनलोड करना होगा, क्लाइंट को बंद करना होगा और फिर से शुरू करना होगा, फिर संशोधित स्क्रिप्ट को लोड करना होगा। अन्यथा आपके पास एक साथ कई संस्करण चल रहे होंगे और बहुत सारी त्रुटियाँ और अजीब व्यवहार होंगे!
दूरस्थ सिरे पर LSASS/Registry फ़ाइलों को पार्स करते समय कृपया उस विशेष बीकन के साथ इंटरैक्ट न करें जिस पर आपने स्क्रिप्ट शुरू की थी। सामान्यतः इससे कोई समस्या नहीं होगी, लेकिन मैं कोई गारंटी नहीं दे सकता।

स्थापना

  • आपको pycobalt को स्थापित और सेटअप करना होगा। उनके गिटहब पेज पर एक readme है।
  • आपको pypykatz स्थापित करना होगा, संस्करण >=0.4.8 होना चाहिए
  • आपको Cobalt Strike की आवश्यकता होगी

सेटअप

  • सुनिश्चित करें कि pycobalt का aggressor.cna फ़ाइल सेटअप है और आपके पायथन इंटरप्रेटर के स्थान के बारे में जानता है
  • aggrokatz.cna में pycobalt_path को pycobalt.cna की ओर इंगित करने के लिए बदलें
  • CS में View > Script Console और Cobalt Strike > Script Manager विंडो का उपयोग करें। Script Manager का उपयोग करके aggkatz.cna स्क्रिप्ट लोड करें।

उपयोग

  • यदि aggkatz.cna स्क्रिप्ट सफलतापूर्वक लोड हुई, तो आपको बीकन पर राइट-क्लिक करने पर एक नया मेनू आइटम pypykatz दिखाई देगा।
  • पार्सिंग के दौरान आपको Script Console विंडो में डीबग संदेश दिखाई देंगे।
  • पार्सिंग समाप्त होने के बाद, परिणाम Script Console विंडो और बीकन की अपनी विंडो दोनों में प्रदर्शित होंगे।

LSASS डंप पार्स मेनू पैरामीटर

  • LSASS file: रिमोट कंप्यूटर पर lsass.dmp फ़ाइल का स्थान। आप SMB पर साझा lsass.dmp फ़ाइलों तक पहुँचने के लिए UNC पथों का भी उपयोग कर सकते हैं।
  • chunksize : अधिकतम मात्रा जो एक बार में पढ़ी जाएगी
  • BOF file : BOF फ़ाइल (Beacon Object File) जो चंक्ड रीड को अनुमति देती है। यह फ़ाइल प्रत्येक बार जब कोई नया चंक पढ़ा जाता है, अपलोड और निष्पादित (इन-मेमोरी) की जाएगी।
  • (module) : निर्दिष्ट करता है कि कौन से मॉड्यूल पार्स किए जाएंगे। डिफ़ॉल्ट: all
  • Output : आउटपुट प्रारूप निर्दिष्ट करता है
  • Populate Credential tab : सफल पार्सिंग के बाद प्राप्त सभी क्रेडेंशियल Cobalt Strike के क्रेडेंशियल टैब पर उपलब्ध होंगे। यह सुविधा बीटा में है
  • Delete remote file after parsing : सफल पार्सिंग के बाद LSASS डंप फ़ाइल लक्ष्य से हटा दी जाएगी

Registry डंप पार्स मेनू पैरामीटर

  • SYSTEM file: रिमोट कंप्यूटर पर SYSTEM.reg फ़ाइल का स्थान। आप SMB पर साझा फ़ाइलों तक पहुँचने के लिए UNC पथों का भी उपयोग कर सकते हैं।
  • SAM file (optional): रिमोट कंप्यूटर पर SAM.reg फ़ाइल का स्थान। आप SMB पर साझा फ़ाइलों तक पहुँचने के लिए UNC पथों का भी उपयोग कर सकते हैं।
  • SECURITY file (optional): रिमोट कंप्यूटर पर SECURITY.reg फ़ाइल का स्थान। आप SMB पर साझा फ़ाइलों तक पहुँचने के लिए UNC पथों का भी उपयोग कर सकते हैं।
  • SOFTWARE file (optional): रिमोट कंप्यूटर पर SOFTWARE.reg फ़ाइल का स्थान। आप SMB पर साझा फ़ाइलों तक पहुँचने के लिए UNC पथों का भी उपयोग कर सकते हैं।
  • chunksize : अधिकतम मात्रा जो एक बार में पढ़ी जाएगी
  • BOF file : BOF फ़ाइल (Beacon Object File) जो चंक्ड रीड को अनुमति देती है। यह फ़ाइल प्रत्येक बार जब कोई नया चंक पढ़ा जाता है, अपलोड और निष्पादित (इन-मेमोरी) की जाएगी।
  • Output : आउटपुट प्रारूप निर्दिष्ट करता है

सीमाएँ

फ़ाइल रीड BOF वर्तमान में 4Gb तक की फ़ाइल रीड का समर्थन करता है। कुछ संशोधनों के साथ इसे बढ़ाया जा सकता है, लेकिन अब तक ऐसी बड़ी फ़ाइलें देखी नहीं गई हैं।

यह कैसे काम करता है

TL;DR

सामान्यतः pypykatz का पार्सर डिस्क पर फ़ाइल रीड ऑपरेशनों की एक श्रृंखला करता है, लेकिन aggrokatz की मदद से ये रीड ऑपरेशन बीकन पर एक विशेष रूप से तैयार BOF (Beacon Object File) के माध्यम से टनेल किए जाते हैं जो रिमोट फ़ाइल सामग्री को चंक में पढ़ने की अनुमति देता है। यह pypykatz को पूरी फ़ाइल को पढ़े बिना रिमोट फ़ाइलों से सभी रहस्यों को निकालने में सक्षम बनाता है, केवल उन आवश्यक चंकों को पकड़कर जहाँ रहस्य स्थित हैं।

गहराई से समझना

पूरी प्रक्रिया की पूरी तस्वीर प्राप्त करने के लिए, हमें दो भागों पर प्रकाश डालना होगा:

  1. pypykatz कैसे CobaltStrike के साथ एकीकृत होता है
  2. pypykatz पूरी फ़ाइल पढ़े बिना क्रेडेंशियल निष्कर्षण कैसे करता है

pypykatz का CobaltStrike में एकीकरण

CobaltStrike (एजेंट) Java में लिखा गया है, pypykatz Python में लिखा गया है। यह एक समस्या है। हमारे लिए भाग्यशाली है कि एक अज्ञात इकाई ने pycobalt बनाया है जो दो दुनियाओं के बीच एक साफ-सुथरा इंटरफ़ेस प्रदान करता है, जिसमें उपयोगी APIs शामिल हैं जिन्हें सीधे Python से लागू किया जा सकता है। pycobalt एक शानदार इंजीनियरिंग का टुकड़ा होने के बावजूद, इसके साथ कुछ समस्याएँ/कमियाँ हैं जिन्हें हमें इंगित करना होगा:

  1. pycobalt प्रोजेक्ट पर भरोसा करने के बारे में:
  • हमने लेखक से संपर्क करने का प्रयास किया लेकिन हमें कोई उत्तर नहीं मिला।
  • हम गारंटी नहीं दे सकते कि pycobalt प्रोजेक्ट भविष्य में बनाए रखा जाएगा।
  • हम pycobalt के विकास के किसी भी पहलू को नियंत्रित नहीं करते हैं।
  1. देखी गई तकनीकी समस्याओं के बारे में:
  • सामान्यतः pycobalt और CobaltStrike के बीच कुछ एन्कोडिंग समस्याएँ हैं। इसके परिणामस्वरूप कुछ API कॉल्स ऐसे बाइट्स लौटाती हैं जिनका उपयोग नहीं किया जा सकता क्योंकि एन्कोडर द्वारा कुछ बाइट्स खराब हो जाते हैं। कोड की जाँच करके हम निष्कर्ष निकालते हैं कि अधिकांश एन्कोडिंग/डीकोडिंग समस्याएँ इसलिए हैं क्योंकि pycobalt Java प्रक्रिया के साथ संवाद करने के लिए STDOUT/STDIN का उपयोग करता है।
  • विशेष रूप से bof_pack API कॉल, जो इस प्रोजेक्ट के लिए महत्वपूर्ण है, को शुद्ध-aggressor स्क्रिप्ट के रूप में लागू करना पड़ा और केवल बुनियादी डेटा संरचनाओं (स्ट्रिंग और int) का उपयोग करके Python से लागू किया गया, बाइट्स का उपयोग नहीं किया गया।
  • pycobalt पैकेज द्वारा प्रदान किए गए केवल ब्लॉकिंग APIs बिना थ्रेडिंग समर्थन के। कम से कम, हमने देखा कि थ्रेडिंग बेतरतीब ढंग से टूट जाती है, लेकिन हमने कुछ हद तक इसकी उम्मीद की थी।
  • ब्लॉकिंग API + कोई थ्रेडिंग नहीं + कॉलबैक पर निर्भरता = हमें इसे सही करने के लिए कुछ अजीब हैक्स का उपयोग करना पड़ा।

कार्ड के ढेर पर क्रेडेंशियल पार्सिंग

pypykatz और इसके साथी मॉड्यूल minidump को संशोधित करना पड़ा ताकि पहले से लागू की तुलना में अधिक कुशल चंकड पार्सिंग की अनुमति मिल सके, लेकिन यह किसी और दिन की बात है।
pypykatz के pycobalt के माध्यम से CobaltStrike के साथ इंटरफ़ेस करने में सक्षम होने के बाद अगला कदम चंकड फ़ाइल रीडिंग की अनुमति देना था। दुर्भाग्य से यह सुविधा हमारे द्वारा देखे गए किसी भी C2 समाधान में डिफ़ॉल्ट रूप से उपलब्ध नहीं है, इसलिए हमें इसे लागू करना पड़ा। हमने इस समस्या को हल करने का तरीका यह है कि CobaltStrike के Beacon Object Files इंटरफ़ेस का उपयोग करके चंकड रीडिंग लागू किया जाए, जिसे BOF के रूप में जाना जाता है। BOFs C प्रोग्राम होते हैं जो बीकन पर एक अलग निष्पादन योग्य के रूप में नहीं बल्कि पहले से चल रहे बीकन के भाग के रूप में चलते हैं। यह इंटरफ़ेस अत्यंत उपयोगी है क्योंकि यह BOFs को और अधिक गुप्त बनाता है क्योंकि सभी कोड मेमोरी में निष्पादित होता है, डिस्क पर कुछ भी नहीं लिखा जाता है।
हमारा BOF समाधान एक सरल फ़ंक्शन है और 4 तर्क लेता है:

  • fileName : LSASS डंप फ़ाइल या registry hive का पूर्ण फ़ाइल पथ (रिमोट एंड पर)
  • buffsize : फ़ाइल से पढ़ी जाने वाली मात्रा (बाइट्स में)
  • seekSize : वह स्थान जहाँ फ़ाइल रीड ऑपरेशन शुरू होना चाहिए (फ़ाइल की शुरुआत से)
  • rplyid : एक पहचान संख्या जो संभावित टकरावों से बचने के लिए प्रतिक्रिया में शामिल की जाएगी

इन मापदंडों के साथ, pypykatz (एजेंट पर चल रहा) बीकन (लक्ष्य कंप्यूटर) पर फ़ाइल रीड ऑपरेशन जारी कर सकता है जो विशेष रूप से फ़ाइल के कुछ हिस्सों को लक्षित करता है।
दूसरी तरफ (CobaltStrike में) aggrokatz एक कॉलबैक पंजीकृत करता है जो लक्ष्य बीकन द्वारा लौटाए गए प्रत्येक संदेश की निगरानी करता है। यदि संदेश का हेडर फ़ाइल रीड ऑपरेशन के हेडर से मेल खाता है, तो इसे minidump फ़ाइल के एक चंक के रूप में संसाधित किया जाएगा और minidump पार्सर को भेजा जाएगा जो परिणाम pypykatz को भेजेगा। यदि अधिक पढ़ने की आवश्यकता है तो pypykatz minidump रीडर का उपयोग करके एक पढ़ने का आदेश जारी करेगा जो BOF इंटरफ़ेस के माध्यम से बीकन पर एक नया पढ़ने का आदेश भेजेगा। यह प्रक्रिया तब तक दोहराई जाती है जब तक फ़ाइल पार्स नहीं हो जाती।

परिणाम

इस विधि का उपयोग करके लगभग 100 LSASS डंप पार्स करने के बाद, हम निम्नलिखित कह सकते हैं (उपयोग किए गए चंक का आकार 20k था):

  • LSASS डंप फ़ाइल के आकार पर निर्भर करता है (हमारे डंप 40Mb - 300Mb के बीच थे) औसतन सभी रहस्यों को 3.5Mb का उपयोग करके निकाला जा सकता है। ध्यान दें कि यह संख्या LSASS डंप के आकार पर नहीं बल्कि रहस्यों की मात्रा और आपके द्वारा पार्स करने के लिए चुने गए पैकेजों की मात्रा पर निर्भर करती है।
  • सफल पार्स के लिए औसतन 250 रीड ऑपरेशन का उपयोग किया गया।
  • पार्स करने का समय केवल आपके jitter/sleep कॉन्फ़िगरेशन पर निर्भर करता है, इसलिए इसे मापना व्यर्थ है।

कमियाँ

  • प्रत्येक रीड ऑपरेशन के लिए एक BOF को बीकन पर अपलोड करने की आवश्यकता होती है। (हम गुप्त रूप से आशा करते हैं कि CobaltStrike से कोई इस लेख को देखेगा और डिफ़ॉल्ट रूप से बुनियादी फ़ाइल रीड ऑपरेशन को लागू करने का निर्णय लेगा, ताकि हम इस समाधान का उपयोग करने से बच सकें)।
  • यदि आप वास्तव में बड़े jitter/sleep के साथ बीकन का उपयोग कर रहे हैं तो रीड ऑपरेशनों की संख्या समस्या पैदा कर सकती है।

श्रेय

dcsync - pycobalt के लेखक
@anthemtotheego Twitter - CredBandit के निर्माता
Nicol Jos @shinepaw - लोगो डिज़ाइन

टूल डाउनलोड करें