
CVE-2021-21220 Exploitation infrastructure
Жертва переходит на размещенную веб-страницу. Эксплойт запускается через шелл-код, встроенный в utils.js (выполняется на стороне клиента в браузере жертвы через CVE-2021-21220). Шелл-код выполняется на машине жертвы, вызывает HTTPS сервер доставки, скачивает MicrosoftEdgeUpdate.exe и запускает его. После запуска имплант подключается к C2-серверу через промежуточный хоп (C2-редиректор) с использованием TLS для получения подписанного сертификата, затем переподключается по полному взаимному 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 жертвы из общего диска и импортируйте её в VirtualBox. В VirtualBox: Файл → Инструменты → Менеджер сети — обратите внимание на IPv4-адрес вашего адаптера host-only (он должен быть в подсети 192.168.56.0/24). Любой назначенный IP-адрес (рекомендуем 192.168.56.1) будет вашим реальным IP машины C2.
Запустите Docker Desktop (или демон Docker на 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 мог привязаться к нему. Жертва подключается только к этому алиасу — ваш реальный IP машины остается скрытым.
Скрипт:
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, и имплант подключается обратно к контроллеру C2.
Сессия импланта появляется в меню контроллера. Выберите её по номеру, чтобы войти в цикл команд.
Шесть контейнеров, каждый представляет отдельную машину:
Два канала трафика, каждый с хопом-редиректором на отдельном IP:
:443 mTLS): жертва → c2-redirector (C2_HOST_IP) → c2-server (только backnet):9443 HTTPS): жертва → exfil-redirector (EXFIL_HOST_IP) → exfil-receiver (только exfilnet)Данные эксфильтрации сохраняются в 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 ретранслятор — хоп для жертвы, скрывает реальный IP C2 |
| 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 ретранслятор — хоп для жертвы, скрывает реальный IP эксфильтрации |
| 6 | exfil-receiver | (только exfilnet) | HTTPS POST приемник — сохраняет скриншоты, нажатия клавиш, учетные данные |