基于 Docker 的多阶段攻击模拟实验,演示 CVE-2017-5638 和 CVE-2021-41773 的漏洞利用、横向移动,以及 Suricata IDS 在现实 10 容器网络环境中的检测能力。
一个基于Docker的7主机攻击模拟实验室,设计用于演示多阶段杀伤链、横向移动和多重IDS检测。
本实验室模拟了一个真实的网络环境,攻击者从初始侦察开始,逐步建立立足点,最终通过跳板攻击高价值目标。它包含两个独立的Suricata IDS实例,作为关键主机的伴生容器,为整个攻击生命周期提供“防御者视角”。
172.28.0.0/24 子网内执行网络扫描(ICMP、TCP SYN、HTTP 横幅抓取)。Content-Type 头中的OGNL注入,攻击易受攻击的 Apache Struts 2 服务器(web-struts)。web-struts 主机,攻击者对内部目标发起二次利用。web-vuln)的路径遍历和RCE漏洞获取 root 权限。实验室共包含10个容器:
web-struts(172.28.0.11):Apache Struts 2.3.28(易受S2-045攻击)。web-vuln(172.28.0.10):Apache httpd 2.4.49(易受路径遍历/RCE攻击)。db-mysql(172.28.0.12):支持数据库。ssh-server(172.28.0.13):旧版立足点目标。ftp-server、smb-server、dns-server:用于模拟真实环境的基础设施服务。ids-suricata-struts:监控 web-struts 网络命名空间。ids-suricata-web:监控 web-vuln 网络命名空间。运行设置脚本以构建并启动环境:
./scripts/setup.sh
这将初始化网络,拉取/构建镜像,并启动全部10个容器。
本实验室提供一个调度脚本,用于触发攻击的不同阶段。
./scripts/attack.sh full
./scripts/attack.sh recon./scripts/attack.sh struts-foothold./scripts/attack.sh struts-pivot./scripts/attack.sh direct你可以向最终目标传递自定义命令:
./scripts/attack.sh full "whoami; cat /etc/os-release"
每个IDS实例的告警会写入各自的 eve.json 文件:
./alerts/web-struts/eve.json./alerts/web-vuln/eve.json你可以使用以下命令实时跟踪两个告警流:
./scripts/tail-alerts.sh
停止并移除所有实验室组件:
./scripts/teardown.sh