评估与加固
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
概览
一个好的容器评估应该回答两项并行的问题。首先,从当前的工作负载攻击者能做什么?其次,哪些操作人员的选择使之成为可能?枚举工具有助于回答第一个问题,加固指南有助于第二个问题。将两者放在同一页,使该部分更像现场参考,而不仅仅是 escape 技巧的目录。
枚举工具
一些工具在快速描述容器环境时仍然很有用:
linpeas可以识别许多容器指示器、已挂载的套接字、capability 集合、危险的文件系统以及 breakout 提示。CDK专注于容器环境,包含枚举功能以及一些自动化的 escape 检查。amicontained轻量且有用,用于识别容器限制、capabilities、namespace 暴露和可能的 breakout 类型。deepce是另一个面向容器的枚举器,包含以 breakout 为导向的检查。grype在评估包含镜像/包漏洞审查而不仅仅是运行时 escape 分析时很有用。
这些工具的价值在于速度和覆盖,而不是确定性。它们帮助快速揭示大致姿态,但有趣的发现仍需针对实际的运行时、namespace、capability 和 mount 模型进行人工解读。
加固优先级
最重要的加固原则在概念上很简单,尽管其实现随平台而异。避免 privileged containers。避免挂载运行时 sockets。除非有非常具体的理由,不要给容器可写的 host 路径。尽可能使用 user namespaces 或 rootless execution。移除所有 capabilities,仅在工作负载确实需要时才恢复必要的 ones。保持 seccomp、AppArmor 和 SELinux 启用,而不是为了解决应用兼容性问题而禁用它们。限制资源,以免被攻陷的容器轻易地对主机造成拒绝服务。
镜像和构建的卫生与运行时姿态同等重要。使用最小化的 images,频繁重建、扫描它们,尽可能要求 provenance,并将 secrets 保出镜像层。以非 root 身份运行、使用小镜像并且 syscall 和 capability 面窄的容器,比以 host 等价的 root 运行并预装调试工具的大型便利镜像更容易防御。
资源耗尽示例
资源控制虽不吸引人,但它们是容器安全的一部分,因为可以限制被攻陷后的破坏范围。如果没有内存、CPU 或 PID 限制,一个简单的 shell 就可能足以影响主机或相邻的工作负载。
示例会影响主机的测试:
stress-ng --vm 1 --vm-bytes 1G --verify -t 5m
docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :; done'
nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc <target_ip> 4444; done
这些示例很有用,因为它们表明并非每个危险的容器结果都是一个干净的 “escape”。弱的 cgroup 限制仍然可以将 code execution 转化为真正的运营影响。
加固工具
对于以 Docker 为中心的环境,docker-bench-security 仍然是一个有用的主机端审计基线,因为它会根据广泛认可的基准指南检查常见的配置问题:
git clone https://github.com/docker/docker-bench-security.git
cd docker-bench-security
sudo sh docker-bench-security.sh
该工具不能替代 threat modeling,但仍然有助于发现随着时间累积的粗心 daemon、mount、network 和 runtime 的默认配置。
检查
在评估期间,可将下列命令用作快速初步检查:
id
capsh --print 2>/dev/null
grep -E 'Seccomp|NoNewPrivs' /proc/self/status
mount
find / -maxdepth 3 \( -name docker.sock -o -name containerd.sock -o -name crio.sock -o -name podman.sock \) 2>/dev/null
这里值得注意的是:
- 具有广泛权限的 root process 和
Seccomp: 0值得立即关注。 - 可疑的 mounts 和 runtime sockets 通常比任何 kernel exploit 更快提供到达影响的路径。
- 弱的 runtime posture 与弱的 resource limits 的组合通常表明这是一个总体宽松的 container environment,而不是单一的孤立失误。
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。


