Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
aggrokatz — Aggrokatz هو إضافة وكيل عدواني لـ Cobalt Strike تمكن pypykatz من التفاعل مع الـ beacons عن بُعد وتتيح له تحليل ملفات تفريغ LSASS وملفات السجل (registry hive) لاستخراج بيانات الاعتماد والأسرار الأخرى المخزنة دون تحميل الملف ودون رفع أي كود مشبوه إلى الـ beacon. | Kitploit
أدوات/GitHubGitHub/sec-consult/aggrokatz
أطر الاستغلالما بعد الاستغلالاختبار الاختراقالفريق الأحمرتطوير الحمولات
GitHubsec-consult/aggrokatz

aggrokatz

Aggrokatz هو إضافة وكيل عدواني لـ Cobalt Strike تمكن pypykatz من التفاعل مع الـ beacons عن بُعد وتتيح له تحليل ملفات تفريغ LSASS وملفات السجل (registry hive) لاستخراج بيانات الاعتماد والأسرار الأخرى المخزنة دون تحميل الملف ودون رفع أي كود مشبوه إلى الـ beacon.

عرض المستودع
15526منذ 5 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

aggrokatz

aggro_card

ما هذا

aggrokatz هو امتداد مكون إضافي Aggressor لـ CobaltStrike يتيح لـ pypykatz التفاعل مع الـ Beacons عن بُعد.
النسخة الحالية من aggrokatz تسمح لـ pypykatz بتحليل ملفات تفريغ LSASS وملفات سجل Registry لاستخراج بيانات الاعتماد والأسرار الأخرى المخزنة دون تحميل الملف ودون تحميل أي كود مشبوه إلى الـ beacon (Cobalt Strike موجود على أي حال). في المستقبل، يهدف هذا المشروع إلى توفير ميزات إضافية للعمليات السرية مثل البحث وفك تشفير جميع أسرار DPAPI/kerberoasting وغيرها.

لقد نشرنا منشور مدونة قصيرًا لهذا الإصدار من الأداة، والذي يتضمن أيضًا بعض لقطات الشاشة.

ملاحظات مهمة - يُرجى قراءة هذا

تفريغ LSASS/Registry ليس الهدف من هذا المشروع، بل التحليل فقط. الأسباب:

  1. تقنيات متعددة للتفريغ مدمجة بالفعل في Cobalt Strike (CS) ومتاحة للعموم على نطاق واسع. مؤخرًا تحولنا إلى استخدام نسخة معدلة من CredBandit التي تفرغ البايتات الخام إلى القرص بدلاً من base64. أداة رائعة، جربها.
  2. نريد إبقاء تقنية التفريغ الخاصة بنا سرية.

في عميل CS، لا تستخدم "reload" ولا تحاول تفريغ البرنامج النصي يدويًا ثم إعادة تحميله إذا قمت بتعديله. يجب عليك تفريغه، إغلاق العميل، ثم فتحه من جديد، ثم تحميل البرنامج النصي المعدل. وإلا سيكون لديك عدة نسخ تعمل في وقت واحد وستظهر أخطاء كثيرة وسلوكيات غريبة!
أثناء تحليل ملفات LSASS/registry على الجهاز البعيد، يُرجى عدم التفاعل مع الـ beacon المحدد الذي بدأت البرنامج النصي عليه. عادةً لن يسبب ذلك أي مشاكل، لكن لا يمكنني تقديم أي ضمانات.

التثبيت

  • ستحتاج إلى تثبيت وإعداد pycobalt. يوجد ملف readme على صفحة GitHub الخاصة بهم.
  • ستحتاج إلى تثبيت pypykatz ويجب أن يكون الإصدار >=0.4.8
  • ستحتاج إلى Cobalt Strike

الإعداد

  • تأكد من إعداد ملف aggressor.cna الخاص بـ pycobalt وأنه يعرف موقع مترجم Python الخاص بك.
  • قم بتغيير المسار pycobalt_path في ملف aggrokatz.cna ليشير إلى pycobalt.cna
  • في CS، استخدم نوافذ View > Script Console و Cobalt Strike > Script Manager. باستخدام Script Manager قم بتحميل البرنامج النصي aggkatz.cna.

الاستخدام

  • إذا تم تحميل البرنامج النصي aggkatz.cna بنجاح، سيكون لديك عنصر قائمة جديد pypykatz عند النقر بزر الماوس الأيمن على الـ beacon.
  • أثناء التحليل، سترى رسائل تصحيح في نافذة Script Console.
  • بعد انتهاء التحليل، ستظهر النتائج في كل من نافذة Script Console ونافذة الـ Beacon نفسها.

معلمات قائمة تحليل تفريغ LSASS

  • LSASS file: موقع ملف lsass.dmp على الكمبيوتر البعيد. يمكنك أيضًا استخدام مسارات UNC للوصول إلى ملفات lsass.dmp المشتركة عبر SMB
  • chunksize : الحد الأقصى للكمية التي ستُقرأ في المرة الواحدة
  • BOF file : ملف BOF (Beacon Object File) الذي يسمح بقراءة مقسمة. سيتم تحميل هذا الملف وتنفيذه (في الذاكرة) في كل مرة يتم فيها قراءة جزء جديد.
  • (module) : يحدد الوحدات التي سيتم تحليلها. الافتراضي: all
  • Output : يحدد تنسيق (تنسيقات) الإخراج
  • Populate Credential tab : بعد التحليل الناجح، ستكون جميع بيانات الاعتماد التي تم الحصول عليها متاحة في علامة تبويب Credential في Cobalt Strike. هذه الميزة في مرحلة تجريبية
  • Delete remote file after parsing : بعد التحليل الناجح، سيتم إزالة ملف تفريغ LSASS من الهدف

معلمات قائمة تحليل تفريغ Registry

  • SYSTEM file: موقع ملف SYSTEM.reg على الكمبيوتر البعيد. يمكنك أيضًا استخدام مسارات UNC للوصول إلى الملفات المشتركة عبر SMB
  • SAM file (optional): موقع ملف SAM.reg على الكمبيوتر البعيد. يمكنك أيضًا استخدام مسارات UNC للوصول إلى الملفات المشتركة عبر SMB
  • SECURITY file (optional): موقع ملف SECURITY.reg على الكمبيوتر البعيد. يمكنك أيضًا استخدام مسارات UNC للوصول إلى الملفات المشتركة عبر SMB
  • SOFTWARE file (optional): موقع ملف SOFTWARE.reg على الكمبيوتر البعيد. يمكنك أيضًا استخدام مسارات UNC للوصول إلى الملفات المشتركة عبر SMB
  • chunksize : الحد الأقصى للكمية التي ستُقرأ في المرة الواحدة
  • BOF file : ملف BOF (Beacon Object File) الذي يسمح بقراءة مقسمة. سيتم تحميل هذا الملف وتنفيذه (في الذاكرة) في كل مرة يتم فيها قراءة جزء جديد.
  • Output : يحدد تنسيق (تنسيقات) الإخراج

القيود

يدعم BOF لقراءة الملفات حاليًا قراءة ملفات يصل حجمها إلى 4 جيجابايت. يمكن توسيع هذا النطاق مع بعض التعديلات، ولكن لم يتم ملاحظة مثل هذه الملفات الكبيرة حتى الآن.

كيف يعمل

TL;DR

عادةً، يقوم محلل pypykatz بتنفيذ سلسلة من عمليات قراءة الملفات على القرص، ولكن بمساعدة aggrokatz، يتم توجيه عمليات القراءة هذه إلى الـ beacon باستخدام BOF (Beacon Object File) مصمم خصيصًا يسمح بقراءة محتويات الملف البعيد على شكل أجزاء. وهذا يسمح لـ pypykatz باستخراج جميع الأسرار من الملفات البعيدة دون قراءة الملف بأكمله، بل فقط اقتطاف الأجزاء الضرورية التي توجد بها الأسرار.

بالتفصيل

للحصول على الصورة الكاملة للعملية بأكملها، هناك جزئان نحتاج إلى تسليط الضوء عليهما:

  1. كيفية تكامل pypykatz مع CobaltStrike
  2. كيفية قيام pypykatz باستخراج بيانات الاعتماد دون قراءة الملف بأكمله

تكامل pypykatz مع CobaltStrike

CobaltStrike (الوكيل) مكتوب بلغة Java، بينما pypykatz مكتوب بلغة Python. هذه مشكلة. لحسن الحظ، قام شخص مجهول بإنشاء pycobalt الذي يوفر واجهة أنيقة بين العالمين مع واجهات برمجية مفيدة يمكن استدعاؤها مباشرة من Python. على الرغم من أن pycobalt قطعة رائعة من الهندسة، إلا أن هناك بعض المشكلات/العيوب التي نحتاج إلى توضيحها:

  1. بخصوص الثقة في مشروع pycobalt:
  • حاولنا التواصل مع المؤلف لكننا لم نتلق ردًا.
  • لا يمكننا ضمان استمرارية صيانة مشروع pycobalt في المستقبل.
  • لا نتحكم في أي جانب من جوانب تطوير pycobalt.
  1. بخصوص المشكلات التقنية الملاحظة:
  • بشكل عام، هناك بعض مشكلات الترميز بين pycobalt و CobaltStrike. يؤدي ذلك إلى بعض استدعاءات واجهات البرمجة التي تعيد بايتات لا يمكن استخدامها لأن بعض البايتات تتعطل بواسطة المُشفر. من خلال فحص الكود، نستنتج أن معظم مشكلات الترميز/فك الترميز ترجع إلى أن pycobalt يستخدم STDOUT/STDIN للتواصل مع عملية Java.
  • على وجه الخصوص، استدعاء API bof_pack الذي يعتبر حاسمًا لهذا المشروع، كان يجب تنفيذه كبرنامج نصي Aggressor نقي واستدعاؤه فقط من Python باستخدام هياكل بيانات أساسية (string و int) وليس باستخدام بايتات.
  • واجهات برمجة التطبيقات (APIs) المحظورة فقط المتوفرة بواسطة حزمة pycobalt بدون دعم خيوط المعالجة (threading). حسنًا، على الأقل لاحظنا أن الخيوط تنفصل عشوائيًا، لكننا توقعنا هذا إلى حد ما.
  • واجهة برمجة محظورة + لا توجد خيوط + الاعتماد على الاستدعاءات الراجعة = اضطررنا إلى استخدام بعض الاختراقات الغريبة لجعلها تعمل بشكل صحيح.

تحليل بيانات الاعتماد على كومة من البطاقات

كان لا بد من تعديل pypykatz ووحدته المصاحبة minidump للسماح بتحليل مجزأ أكثر كفاءة مما كان مطبقًا سابقًا، لكن هذا موضوع ليوم آخر.
بعد أن أصبح pypykatz قادرًا على التفاعل مع CobaltStrike عبر pycobalt، كانت الخطوة التالية هي السماح بقراءة الملفات المجزأة. لسوء الحظ، هذه الميزة غير متوفرة بشكل افتراضي في أي من حلول C2 التي رأيناها، لذا كان علينا تنفيذها. الطريقة التي تعاملنا بها مع هذه المشكلة هي تنفيذ القراءة المجزأة باستخدام واجهة Beacon Object Files الخاصة بـ CobaltStrike، والمختصرة بـ BOF. BOFs هي برامج C تعمل على الـ beacon ليس كملف تنفيذي منفصل ولكن كجزء من الـ beacon الجاري بالفعل. هذه الواجهة مفيدة للغاية لأنها تجعل BOFs أكثر سرية حيث يتم تنفيذ كل الكود في الذاكرة دون كتابة أي شيء على القرص.
حلنا لـ BOF هو دالة بسيطة تأخذ 4 معاملات:

  • fileName : المسار الكامل لملف تفريغ LSASS أو سجل Registry (على الجهاز البعيد)
  • buffsize : الكمية (بالبايت) التي سيتم قراءتها من الملف
  • seekSize : الموضع الذي يجب أن تبدأ منه عملية قراءة الملف (من بداية الملف)
  • rplyid : رقم تعريف يتم تضمينه في الرد لتجنب التصادمات المحتملة

باستخدام هذه المعاملات، يمكن لـ pypykatz (الذي يعمل على الوكيل) إصدار عمليات قراءة ملفات على الـ beacon (الكمبيوتر الهدف) تستهدف أجزاء معينة من الملف.
على الجانب الآخر (في CobaltStrike)، يقوم aggrokatz بتسجيل استدعاء راجعة (callback) لمراقبة كل رسالة يتم إرجاعها بواسطة الـ beacon الهدف. إذا تطابق رأس الرسالة مع رأس عملية قراءة ملف، فسيتم معالجتها كجزء من ملف minidump وسيتم إرسالها إلى محلل minidump الذي سيرسل النتيجة إلى pypykatz. في حالة الحاجة إلى مزيد من القراءة، سيصدر pypykatz عملية قراءة باستخدام قارئ minidump الذي سيرسل أمر قراءة جديد إلى الـ beacon عبر واجهة BOF. تتكرر هذه العملية حتى يتم تحليل الملف.

النتائج

بعد تحليل حوالي 100 تفريغ LSASS باستخدام هذه الطريقة، يمكننا ذكر ما يلي (حجم الجزء المستخدم كان 20 كيلوبايت):

  • اعتمادًا على حجم ملف تفريغ LSASS (كانت تفريغاتنا بين 40 ميجابايت - 300 ميجابايت) في المتوسط، يمكن استخراج جميع الأسرار باستخدام 3.5 ميجابايت. لاحظ أن هذا الرقم لا يعتمد على حجم تفريغ LSASS بقدر ما يعتمد على كمية الأسرار وعدد الحزم التي تختار تحليلها.
  • في المتوسط، تم استخدام 250 عملية قراءة لتحليل ناجح.
  • الوقت المستغرق للتحليل يعتمد فقط على إعدادات jitter/sleep الخاصة بك، لذلك لا جدوى من قياسه.

العيوب

  • لكل عملية قراءة، يجب تحميل BOF إلى الـ beacon. (نأمل سرًا أن ينظر أحد من Cobalt Strike إلى هذه المقالة ويقرر تنفيذ عمليات قراءة ملفات أساسية كإعداد افتراضي، حتى نتمكن من تجنب استخدام هذا الحل).
  • يمكن أن يكون عدد عمليات القراءة مشكلة إذا كنت تستخدم beacon بقيمة jitter/sleep كبيرة جدًا.

الشكر

dcsync - مؤلف pycobalt
@anthemtotheego تويتر - منشئ CredBandit
Nicol Jos @shinepaw - تصميم الشعار

تنزيل الأداة