إطار عمل للفريق الأحمر في CI/CD لإظهار مخاطر أمان خطوط البناء.
إطار عمل الفريق الأحمر لـ CI/CD
مثل Metasploit، لكن لخطوط أنابيب CI/CD.
من صناع poutine ماسح SAST لخطوط البناء في BoostSecurity Labs.

تحذير: هذه الأداة مخصصة لاختبار الأمان المصرح به فقط.
SmokedMeat موجودة لأن تهديدات خطوط أنابيب CI/CD يتم التقليل من شأنها بشكل كبير. نادرًا ما يغطي التدريب التقليدي للأمان هجمات سلسلة التوريد، مما يترك المدافعين غير مستعدين لتقنيات يستغلها الخصوم بنشاط في البرية.
لقد بنينا هذا لإعطاء فرق الأمان القدرة على التعلم والممارسة والتحقق من الدفاعات ضد تقنيات هجوم CI/CD المتقدمة من خلال تمارين الفريق الأحمر الواقعية.
استخدم فقط ضد الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها.
SmokedMeat هو إطار عمل ما بعد الاستغلال لخطوط أنابيب CI/CD. قم بتوجيهه إلى منظمة GitHub، ودعه يجد سير العمل الضعيفة، وانشر غرسة في مشغل مخترق، ثم تنقل عبر موفري السحابة، واستخرج الأسرار، وارسم خريطة لنطاق الانفجار - كل ذلك من واجهة مستخدم طرفية.
ما يفعله:
الفلسفة: جريء وصاخب. هذه ليست أداة لتجنب EDR. إنه إطار عرض يوضح مدى عمق اختراق CI/CD قبل أن يطلق أي شيء إنذارًا.
لمن هو:
لتجربة SmokedMeat لأول مرة، قم بتثبيت Docker و make. Go غير مطلوب.
git clone https://github.com/boostsecurityio/smokedmeat.git
cd smokedmeat
make quickstart
make quickstart هو التشغيل الأول الموصى به. يبدأ مجموعة البداية السريعة للإصدار المستقر محليًا ويطلق واجهة المشغل الطرفية (Counter) ضد خادم فريق C2 المحلي (Kitchen).
التشغيل الأول الموصى به:
whoolipublic_repo⚠ يُفضل PAT كلاسيكي. يمكن أن تكون PATs الدقيقة مقيدة جدًا وقد تمنع اختبار الأهداف العامة في منظمات أخرى، بما في ذلك whooli.
whooli هي ساحة لعب هجوم CI/CD الضعيفة عن قصد من SmokedMeat. إنها الهدف الأول الموصى به للمسار العام.
يرشدك معالج الإعداد خلال:
repo.whooli أو المنظمة/المستودع الخاص بكللحصول على تدفق التحدي الكامل، راجع دليل whooli أو انتقل مباشرة إلى منظمة whooli على GitHub.
عند الانتهاء:
make quickstart-down # إيقاف الحاويات
make quickstart-purge # إيقاف وحذف جميع البيانات
إذا كنت ترغب في العمل من المصدر بدلاً من ذلك، راجع التطوير.
إذا كنت تشارك أو تكرر على شجرة المصدر محليًا، قم بتثبيت Go 1.26+ واستخدم البداية السريعة للتطوير:
make dev-quickstart
make dev-quickstart يبني صورة smokedmeat-cloud-shell المحلية، ويبدأ cloudflared و nats وخادم فريق C2 (Kitchen)، ثم يطلق واجهة المشغل الطرفية من المصدر.
إذا كنت تريد البنية التحتية أولاً وواجهة المشغل لاحقًا:
make dev-quickstart-up
make dev-quickstart-counter
عند الانتهاء:
make dev-quickstart-down # إيقاف الحاويات
make dev-quickstart-purge # إيقاف وحذف جميع البيانات
مزيد من أنماط النشر وتفاصيل التطوير المحلي موجودة في [docs/deployment.md](https://github.com/boostsecurityio/smokedmeat/blob/main/docs/deployment.md).
## التحقق من الإصدار
يتحقق Counter من وجود إصدارات أحدث من SmokedMeat عند بدء التشغيل. يمكن تعطيل ذلك بتعيين متغير البيئة `SMOKEDMEAT_DISABLE_VERSION_CHECK`.
## المكونات الأساسية
| المصطلح القياسي | اسم SmokedMeat | الوصف |
|---------------|-----------------|-------------|
| **واجهة المشغل الطرفية** | `Counter` | واجهة طرفية للتحليل وتسليم الحمولة وسير عمل ما بعد الاستغلال. |
| **خادم فريق C2** | `Kitchen` | خادم API وWebSocket لجلسات المشغل والمنصبات والاستدعاءات وحالة الرسم البياني. |
| **الغرسة** | `Brisket` | وكيل يتم تسليمه إلى مشغلات CI المخترقة للاتصال وتنفيذ الأوامر والتنقل. |
| **عرض الرسم البياني في المتصفح** | `Browser View` | رسم بياني حي للهجوم يقدمه خادم فريق C2 في `/graph`. |
## أنماط النشر
| النمط | استخدمه عندما | نقطة الدخول |
|------|-------------|-------------|
| **البداية السريعة** | أسرع تشغيل أول على الإصدار المثبت | `make quickstart` |
| **البداية السريعة للتطوير** | العمل على شجرة المصدر محليًا | `make dev-quickstart` |
| **خادم فريق مستضاف** | تشغيل مشاركة حقيقية مع نطاق ثابت | [docs/deployment.md](https://github.com/boostsecurityio/smokedmeat/blob/main/docs/deployment.md) |
خادم الفريق المستضاف يشغل خادم فريق C2 على مضيف مخصص وواجهة المشغل الطرفية محليًا على كل محطة عمل مشغل.
## البنية المعمارية
على مستوى عالٍ، تتحدث واجهة المشغل الطرفية (`Counter`) مع خادم فريق C2 (`Kitchen`)، الذي يدير الغرسات (`Brisket`) التي تعمل على مشغلات CI المخترقة ويقدم الرسم البياني الحي للهجوم.
┌──────────────┐ │ SSH AGENT │ │ (Auth) │ └──────┬───────┘ │ ▼ ┌──────────────┐ ┌──────────────┐ │ THE COUNTER │ ───────────────▶│ THE KITCHEN │ │ (Operator) │ WebSocket │ (Teamserver) │ │ Bubbletea │◀─────────────── │ │ │ TUI │ Events/Graph │ ┌──────────┐ │ └──────────────┘ │ │ Database │ │ │ └──────────┘ │ ┌──────────────┐ │ │ │ BROWSER │ ───────────────▶│ │ │ Graph View │ WebSocket │ │ │ Visualizer │◀─────────────── │ │ └──────────────┘ Live Updates └──────────────┘ │ ▲ │ │ Creates PR │ │ Stager fetches implant binary │ │ Implant HTTP Beacon/Commands ▼ │ ┌────────────────────────────────────────────┴──────────────────────────────────┐ │ GITHUB.COM │ │ │ │ ┌─────────────────────┐ ┌─────────────────────────────────────────┐ │ │ │ Malicious PR │ triggers │ GitHub Actions Runner │ │ │ │ (Vulnerable │─────────▶│ │ │ │ │ Workflow) │ │ ┌────────────┐ ┌────────────────┐ │ │ │ └─────────────────────┘ │ │ Stager │─────▶│ THE BRISKET │ │ │ │ │ │ │ │ (Implant) │ │ │ │ │ └────────────┘ └────────────────┘ │ │ │ └─────────────────────────────────────────┘ │ └───────────────────────────────────────────────────────────────────────────────┘
## الميزات
التفاصيل الكاملة في [docs/FEATURES.md](https://github.com/boostsecurityio/smokedmeat/blob/main/docs/FEATURES.md).