
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 피해자 VM을 다운로드하여 VirtualBox로 가져옵니다. VirtualBox에서: 파일 → 도구 → 네트워크 관리자 — 호스트 전용 어댑터의 IPv4 주소를 확인합니다 (192.168.56.0/24 서브넷에 있어야 합니다). 할당된 IP 주소(192.168.56.1 권장)가 실제 C2 머신 IP입니다.
Docker Desktop (또는 Linux의 Docker 데몬)을 시작합니다.
Windows (WSL) 사용자:
launch.sh는netsh를 사용하여 VirtualBox 어댑터에 IP 별칭을 추가하므로 관리자 권한이 필요합니다. 시작 메뉴에서 WSL 배포판(Ubuntu 또는 사용 중인 것)을 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행을 선택한 후 계속하십시오.
실행 스크립트를 실행합니다:
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 악용이 자동으로 실행됩니다. 셸코드는 https://<c2-redirector-IP>:8443/update/<token>에서 MicrosoftEdgeUpdate.exe를 다운로드하고, fodhelper UAC 우회를 통해 실행하며, 임플란트가 C2 컨트롤러에 다시 연결됩니다.
임플란트 세션이 컨트롤러 메뉴에 나타납니다. 번호를 선택하여 명령 루프에 들어갑니다.
6개의 컨테이너, 각각 별개의 머신을 나타냅니다:
두 개의 트래픽 채널, 각각 별도의 IP에 리디렉터 홉이 있음:
:443 mTLS): 피해자 → c2-redirector (C2_HOST_IP) → c2-server (backnet 전용):9443 HTTPS): 피해자 → exfil-redirector (EXFIL_HOST_IP) → exfil-receiver (exfilnet 전용)유출 데이터는 호스트 머신의 exfil-data/<hostname>/에 저장됩니다.
# 로그 추적
sudo docker logs -f delivery-server
sudo docker logs -f exploit-server
sudo docker logs -f exfil-receiver
# 컨테이너 셸 접속
sudo docker exec -it c2-server /bin/bash
# 모든 것 중지
sudo docker compose down
# 캡처된 유출 데이터 보기
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 릴레이 — 피해자 대면 홉, 실제 유출 IP 숨김 |
| 6 | exfil-receiver | (exfilnet 전용) | HTTPS POST 싱크 — 스크린샷, 키로그, 자격 증명 저장 |