وكيل عكسي لـ C2 من Cobalt Strike يصد الفرق الزرقاء ومضادات الفيروسات وأنظمة EDR والماسحات من خلال فحص الحزم وارتباط Malleable Profile
(المعروف سابقًا باسم إضافة proxy2's malleable_redirector)
دعونا نرفع مستوى مرونة موجهات C2 أمام فرق الاستجابة للحوادث، أليس كذلك؟

شهد مجال فرق الاختراق الأحمر عدة أفكار رائعة حول كيفية مواجهة فرق الاستجابة للحوادث وتضليلهم مع تقديم شبكة موجهات C2 مقاومة في نفس الوقت.
يجمع هذا العمل العديد من تلك الأفكار الرائعة في أداة واحدة خفيفة الوزن، تحاكي Apache2 في جوهرها كخادم وكيل عكسي بسيط HTTP(S).
من خلال الجمع بين فهم ملفات تعريف Malleable C2، ومعرفة تجمعات عناوين IP الضارة، ومرونة إضافة منطق فحص وتوجيه خاطئ جديد بسهولة - نتج عن ذلك طارد ماهر لعمليات فحص فرق الاستجابة للحوادث.

إذا وصلت أي حزمة واردة غير صالحة إلى RedWarden - يمكنك redirect (إعادة توجيه)، أو reset (إعادة تعيين)، أو مجرد proxy (وكيل) بعيدًا!
يعمل هذا البرنامج كخادم وكيل عكسي HTTP/HTTPS مع عدة قيود مفروضة على طلبات C2 HTTP الواردة، حيث يختار أي الحزم يجب توجيهها إلى Teamserver وأيها يجب إسقاطها، على غرار قيود ملف .htaccess المفروضة في Apache2's mod_rewrite.
تم إنشاء RedWarden لحل مشكلة تجنب IR/AV/EDRs/Sandboxes في طبقة موجه C2. وهو يهدف إلى استبدال الإعدادات التقليدية لـ Apache2 + mod_rewrite المستخدمة لهذا الغرض.
الميزات:
يأخذ RedWarden ملف تعريف C2 Malleable و hostname:port الخاص بـ Teamserver كمدخلات. ثم يقوم بتحليل أقسام ملف التعريف المقدمة لفهم العقد وتمرير فقط تلك الطلبات الواردة التي تفي به مع توجيه الآخرين بشكل خاطئ.
يتم استخدام أقسام مثل http-stager و http-get و http-post و URIs المقابلة لها، والرؤوس، وأنماط prepend/append، و User-Agent كلها للتمييز بين طلب Beacon الشرعي والضوضاء غير المرتبطة بالإنترنت أو الحزم الخارجة عن نطاق IR/AV/EDRs.
يستفيد البرنامج من نطاقات IP السيئة المعروفة الرائعة القادمة من: curi0usJack وآخرون: https://gist.github.com/curi0usJack/971385e8334e189d93a6cb4671238b10
باستخدام القائمة السوداء لعناوين IP إلى جانب البحث عن الكلمات المفتاحية السيئة المعروفة من خلال استعلامات Reverse-IP DNS وفحص رؤوس HTTP، يوفر ذلك موثوقية لزيادة مرونة الموجه أمام النظائر غير المصرح لهم الذين يرغبون في فحص بنى المهاجمين التحتية.
يمكن توجيه الحزم غير الصالحة بشكل خاطئ وفقًا لثلاث استراتيجيات:
يتم فرض هذا التكوين في ملف التكوين:```yaml
drop_action: redirect
المثال أدناه يظهر نتيجة `redirect` إلى `https://googole.com`:

استخدم بحكمة، كن آمنًا.
### المتطلبات
يمكن لهذا البرنامج العمل فقط على أنظمة لينكس لأنه يستخدم fork لإنشاء عمليات متعددة.
أيضًا، من المتوقع أن يكون الأمر النظامي `openssl` مثبتًا لأنه يُستخدم لإنشاء شهادات SSL.
أخيرًا، قم بتثبيت جميع متطلبات Python3 PIP بسهولة باستخدام:```shell
bash $ sudo pip3 install -r requirements.txt
قد يحتوي ملف التكوين config.yaml الخاص بـ RedWarden على:```yaml port:
profile: jquery-c2.3.14.profile
ssl_cacert: /etc/letsencrypt/live/attacker.com/fullchain.pem ssl_cakey: /etc/letsencrypt/live/attacker.com/privkey.pem
teamserver_url:
drop_action: reset
ثم، يمكن تشغيل البرنامج عن طريق إعطائه مسارًا لملف التكوين:```shell
bash$ sudo python3 RedWarden.py -c config.yaml
[INFO] 19:21:42: Loading 1 plugin...
[INFO] 19:21:42: Plugin "malleable_redirector" has been installed.
[INFO] 19:21:42: Preparing SSL certificates and keys for https traffic interception...
[INFO] 19:21:42: Using provided CA key file: ca-cert/ca.key
[INFO] 19:21:42: Using provided CA certificate file: ca-cert/ca.crt
[INFO] 19:21:42: Using provided Certificate key: ca-cert/cert.key
[INFO] 19:21:42: Serving http proxy on: 0.0.0.0, port: 80...
[INFO] 19:21:42: Serving https proxy on: 0.0.0.0, port: 443...
[INFO] 19:21:42: [REQUEST] GET /jquery-3.3.1.min.js
[INFO] 19:21:42: == Valid malleable http-get request inbound.
[INFO] 19:21:42: Plugin redirected request from [code.jquery.com] to [1.2.3.4:8080]
[INFO] 19:21:42: [RESPONSE] HTTP 200 OK, length: 5543
[INFO] 19:21:45: [REQUEST] GET /jquery-3.3.1.min.js
[INFO] 19:21:45: == Valid malleable http-get request inbound.
[INFO] 19:21:45: Plugin redirected request from [code.jquery.com] to [1.2.3.4:8080]
[INFO] 19:21:45: [RESPONSE] HTTP 200 OK, length: 5543
[INFO] 19:21:46: [REQUEST] GET /
[...]
[ERROR] 19:24:46: [DROP, reason:1] inbound User-Agent differs from the one defined in C2 profile.
[...]
[INFO] 19:24:46: [RESPONSE] HTTP 301 Moved Permanently, length: 212
[INFO] 19:24:48: [REQUEST] GET /jquery-3.3.1.min.js
[INFO] 19:24:48: == Valid malleable http-get request inbound.
[INFO] 19:24:48: Plugin redirected request from [code.jquery.com] to [1.2.3.4:8080]
[...]
يحتوي الإخراج أعلاه على سطر يشير إلى وجود طلب وارد غير مصرح به، وغير متوافق مع ملف تعريف C2 الخاص بنا، وقد تم إسقاطه بسبب سلسلة User-Agent غير متوافقة المقدمة:``` [...] [DROP, reason:1] inbound User-Agent differs from the one defined in C2 profile. [...]
## حالات الاستخدام
### فرض تحديد الموقع الجغرافي للـ IP على مصادر حركة المرور الخاصة بـ Beacon