
أداة قائمة على الويب لتسجيل أنشطة الفريق الأحمر وإعداد التقارير والوعي الظرفي، مع تكامل مع Cobalt Strike وBloodHound.
مركز لأنشطة الفريق الأحمر للمساعدة في حفظ السجلات والوعي بالموقف وإعداد التقارير. توفر Stepping Stones واجهة مستخدم ويب للفريق لتسجيل الأنشطة وإنشاء مقتطفات تقارير. تهدف الواجهة إلى أن تكون سريعة بما يكفي لاستخدامها طوال فترة التمرين، وليس فقط في مرحلة إعداد التقارير.
Stepping Stones هي تطبيق Python Django، لذا لتشغيل نسخة محلية:
python -m venv .venv.venv\Scripts\activate أو source .venv/bin/activate على *nixpip install -r requirements.txtpython manage.py makemigrations background_taskpython manage.py migratepython manage.py runserver و python manage.py process_tasks بشكل متزامنpython manage.py check --deploy للحصول على نصائح التشديد، ثم اتبع دليلًا مثل:
https://docs.djangoproject.com/en/6.0/howto/deployment/على خادم الفريق - افتح ثغرة في جدار الحماية للسماح لـ Stepping Stones بالاتصال، على سبيل المثال:
sudo ufw allow proto tcp from 172.31.16.0/20 to any port 50050إذا كنت تشغل نسخة محلية، وعندما يتم تحديث الكود في git وتريد الميزات الجديدة:
sudo service ssbot stopsudo service steppingstones stoprm -rf /tmp/stepping-stones-main; unzip /tmp/stepping-stones-main.zip && cp -R /tmp/stepping-stones-main/* /opt/steppingstones.venv\Scripts\activate أو source .venv/bin/activate على *nixpip install -r requirements.txtpython manage.py makemigrations background_taskpython manage.py migrate.
python manage.py makemigrations فتوقف فورًا وتواصل مع مطوري Stepping Stones - من المهم أن يعمل جميع المستخدمين من نفس مجموعة سكربتات الترحيل ويجب تنسيق ذلك عبر المطورين.إذا كنت تستخدم نفس المثيل لمهام مختلفة وترغب في أرشفة البيانات القديمة ثم البدء من جديد، يمكنك:
mv db.sqlite3 db.sqlite.OLD_CLIENT_NAMEيستخدم النظام SQLite. قم بعمل نسخة احتياطية من ملف db.sqlite3 في جذر الخادم أو عبر واجهة الويب بشكل دوري لحماية بياناتك القيمة.
سيتم إرسال مستند JSON صغير إلى كل عنوان URL لخطاف الويب المُعد عند الأحداث الرئيسية. يتبع مستند JSON دائمًا البنية التالية:
{
"type": "notification type",
"message": "Human readable message"
}
يمكن أن يكون حقل type واحدًا مما يلي:
new beacon (منارة غير مسبوقة اتصلت بخادم فريق مراقَب)respawned beacon (منارة شوهدت سابقًا اتصلت بخادم فريق مراقَب)returned beacon (منارة تمت مراقبتها صراحةً لإعادة الاتصال وقد أعادت الاتصال للتو)لاستهلاك ذلك، يمكنك استخدام سيناريو https://make.com، استنادًا إلى المخطط التالي:
{"name":"Webhook to iOS","flow":[{"id":1,"module":"gateway:CustomWebHook","version":1,"parameters":{"hook":129792,"maxResults":1},"mapper":{},"metadata":{"designer":{"x":-386,"y":-129},"restore":{"parameters":{"hook":{"data":{"editable":"true"},"label":"My webhook"}}},"parameters":[{"name":"hook","type":"hook:gateway-webhook","label":"Webhook","required":true},{"name":"maxResults","type":"number","label":"Maximum number of results"}],"interface":[{"name":"type","type":"text"},{"name":"message","type":"text"}]}},{"id":8,"module":"ios:SendNotification","version":1,"parameters":{"device":171760},"mapper":{"body":"{{1.message}}","title":"{{1.type}}","action":"","priority":10,"collapsible":false},"metadata":{"designer":{"x":-31,"y":-128},"restore":{"expect":{"action":{"label":"Default"},"priority":{"label":"Deliver immediately"}},"parameters":{"device":{"data":{"editable":"undefined"},"label":"Personal Phone"}}},"parameters":[{"name":"device","type":"device:apn","label":"Device","required":true}],"expect":[{"name":"title","type":"text","label":"Title","required":true},{"name":"body","type":"text","label":"Body"},{"name":"action","type":"select","label":"Action","validate":{"enum":["open_url"]}},{"name":"priority","type":"select","label":"Priority","required":true,"validate":{"enum":[10,5]}},{"name":"collapsible","type":"boolean","label":"Collapse push notifications","required":true}}],"metadata":{"instant":true,"version":1,"scenario":{"roundtrips":1,"maxErrors":3,"autoCommit":true,"autoCommitTriggerLast":true,"sequential":false,"confidential":false,"dataloss":false,"dlq":false},"designer":{"orphans":[]},"zone":"eu1.make.com"}}
استورد المخطط أعلاه عن طريق إنشاء سيناريو فارغ واستخدام ميزة "Import Blueprint" تحت قائمة "..." (المزيد) الموجودة في أسفل منتصف واجهة الويب.
ثم يلزم خطوتان إضافيتان:
يمكن اختبار خطافات الويب عبر زر في صفحة خطافات الويب في Stepping Stones.
تستخدم Stepping Stones نظام أذونات Django على مستوى النموذج، مما يسمح بتقييد المستخدمين من إنشاء وتحرير وعرض وحذف كل نوع من نماذج البيانات.
يمكن العثور على المجموعات في وحدة التحكم /admin التي تمنح مجموعة من الأذونات، على سبيل المثال مناسبة للفريق الأزرق للعميل، لأي عضو في تلك المجموعة.
المجموعات الحالية هي:
| الدور | الوصف |
|---|---|
| الفريق الأزرق للعميل - قراءة فقط | يمكنه قراءة صفحتي الأحداث والملفات |
| الفريق الأزرق للعميل - كتابة محدودة | كما في الفريق الأزرق للعميل - قراءة فقط مع صلاحية الكتابة في حقلي النتيجة والاكتشاف للحدث |
يُمنح المستخدمون الذين يتم إنشاؤهم أثناء عملية التثبيت حالة "superuser" وبالتالي لديهم ضمنيًا جميع الأذونات الممكنة. ومع ذلك، عند إنشاء المستخدمين يدويًا عبر وحدة التحكم الإدارية، تأكد من عدم تمييزهم كـ "staff" ولا "superuser" بحيث يبدأون بدون أذونات ضمنية وبالتالي لن يحصلوا على أذونات إلا من خلال إضافتهم إلى مجموعات.
يمكن تعديل المناطق الزمنية للمستخدمين عبر بوابة /admin. يتم إخراج الأوقات في التقارير بتوقيت UTC عمدًا لتسهيل الربط من قبل الفرق الزرقاء.
يجب أن تتطابق تنسيقات التواريخ المعروضة في Stepping Stones مع إعدادات المتصفح المحلية. أي أن المستخدمين الذين يكون متصفحهم مضبوطًا على إعدادات محلية أمريكية سيشاهدون التواريخ بصيغة MM/DD/YYYY في واجهة الويب ومقتطفات التقارير.
يمكن لـ Stepping Stones استيعاب السجلات من الأدوات الأخرى إذا تم تنسيقها بتنسيق EventStream المخصص القائم على JSON. التنسيق موضح داخل الواجهة الرسومية لـ SteppingStones، بما في ذلك المخططات وبيانات الأمثلة.
بمجرد استيعاب سجل EventStream بواسطة Stepping Stones، يمكن نسخ الإدخالات ذات الصلة المحددة إلى أحداث للتقرير.
الطريقة المفضلة لتكامل Cobalt Strike هي عبر SSBot. يتطلب ذلك نسخة مرخّصة من Cobalt Strike في /opt/cobaltstrike أو c:\tools\cobaltstrike والتي ستُستخدم للاتصال بأي خوادم فريق (مفعّلة) تم تكوينها في الواجهة الرسومية.
بمجرد التكامل:
هناك أوامر إضافية لسطر الأوامر يمكن استخدامها إذا لم يعمل SSBot كما هو مقصود:
.\manage.py reset_cs_data [-s SERVER] - سيعيد تعيين أي بيانات تم تحليلها من خادم الفريق المحدد، أو الكل إذا لم يتم إعطاء اسم. لن يؤثر ذلك على البيانات المشتقة من سجلات CS، مثل الأحداث أو بيانات الاعتماد المستنسخة يدويًا..\manage.py parse_log_tar <file name> - سيحلل محتويات دليل سجلات، مضغوطًا كملف tar ومأخوذًا من خادم فريق. ملاحظة: لا يتضمن هذا جميع البيانات التي يمكن الوصول إليها عبر SSBot، وبالتالي فهي ليست تقنية الاستيعاب المفضلةسيتم استخدام خوادم Neo4j المكوّنة عبر واجهة الويب من أجل:
owned في BloodHound عند إضافة بيانات اعتماد مع كلمة مرور، أو عند تشغيل منارة على مضيف معين كمسؤول النظام (system).من الممكن توسيع وظائف Stepping Stones عبر الإضافات. توجد وثائق إضافية هنا
sudo service ssbot restartsudo service steppingstones restartjournalctl -u steppingstones