24

CDK: 容器环境渗透测试自动化工具,各类容器场景的攻击手法集合

 3 years ago
source link: https://github.com/cdk-team/CDK/wiki/CDK-Home-CN
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

CDK - Zero Dependency Docker/K8s Penetration Toolkit

简体中文 | English

INfMVvj.jpg!mobile

免责声明

未经授权许可使用CDK攻击目标是非法的。 本程序应仅用于安全测试与研究目的。

介绍

CDK是一款为容器环境定制的渗透测试工具,在已攻陷的容器内部提供零依赖的常用命令及PoC/EXP。集成Docker/K8s场景特有的 逃逸、横向移动、持久化利用方式,插件化管理。

目前仍在施工中,欢迎 反馈 及建议 [email protected]

下载

将可执行文件投递到已攻入的容器内部开始使用

https://github.com/cdk-team/CDK/releases/

使用方法

Container DucK
Zero-dependency docker/k8s penetration toolkit by <[email protected]>
Find tutorial, configuration and use-case in https://github.com/Xyntax/CDK/wiki

Usage:
  cdk evaluate [--full]
  cdk run (--list | <exploit> [<args>...])
  cdk <tool> [<args>...]

Evaluate:
  cdk evaluate                              Gather information to find weekness inside container.
  cdk evaluate --full                       Enable file scan during information gathering.

Exploit:
  cdk run --list                            List all available exploits.
  cdk run <exploit> [<args>...]             Run single exploit, docs in https://github.com/Xyntax/CDK/wiki

Tool:
  vi <file>                                 Edit files in container like "vi" command.
  ps                                        Show process information like "ps -ef" command.
  nc [options]                              Create TCP tunnel.
  ifconfig                                  Show network information.
  kcurl	(get|post) <url> <data>             Make request to K8s api-server.
  ucurl (get|post) <socket> <uri> <data>    Make request to docker unix socket.
  probe <ip> <port> <parallel> <timeout-ms> TCP port scan, example: cdk probe 10.0.1.0-255 80,8080-9443 50 1000

Options:
  -h --help     Show this help msg.
  -v --version  Show version.

功能

CDK包括三个功能模块

  1. Evaluate: 容器内部信息收集,以发现潜在的弱点便于后续利用。
  2. Exploit: 提供容器逃逸、持久化、横向移动等利用方式。
  3. Tool: 修复渗透过程中常用的linux命令以及与Docker/K8s API交互的命令。

Evaluate 模块

Usage

cdk evaluate [--full]

用于本地信息收集,寻找可用的逃逸点,使用 --full 参数时会包含本地文件扫描。

检测项

类别 检测点 已支持 详细文档 本地信息收集 OS基本信息 ✔ link 本地信息收集 可用的Capabilities ✔ link 本地信息收集 可用的Linux命令 ✔ link 本地信息收集 挂载情况 ✔ link 本地信息收集 网络namespace隔离情况 ✔ link 本地信息收集 环境变量 ✔ link 本地信息收集 敏感服务 ✔ link 本地信息收集 敏感目录及文件 ✔ link 网络探测 K8s Api-server信息 ✔ link 网络探测 K8s Service-account信息 ✔ link 网络探测 云厂商Metadata API ✔ link

Exploit 模块

列举全部exp

cdk run --list

执行指定的exp

cdk run <script-name> [options]

列表

类别 功能 调用名 已支持 文档 容器逃逸 docker-runc CVE-2019-5736 runc-pwn ✔ 容器逃逸 docker-cp CVE-2019-14271 容器逃逸 containerd-shim CVE-2020-15257 shim-pwn ✔ link 容器逃逸 dirtycow CVE-2016-5159 容器逃逸 docker.sock逃逸PoC(docker-in-docker) docker-sock-check ✔ link 容器逃逸 docker.sock部署恶意镜像 docker-sock-deploy ✔ link 容器逃逸 挂载逃逸(特权容器) mount-disk ✔ link 容器逃逸 Cgroup逃逸(特权容器) mount-cgroup ✔ link 容器逃逸 Procfs目录挂载逃逸 mount-procfs ✔ link 容器逃逸 Ptrace逃逸PoC check-ptrace ✔ link 网络探测 K8s组件探测 service-probe ✔ link 信息收集 检查和获取Istio元信息 istio-check ✔ link 横向移动 K8s Service Account下发指令 横向移动 攻击K8s api-server 横向移动 攻击K8s Kubelet 横向移动 攻击K8s Dashboard 横向移动 攻击K8s Helm 横向移动 攻击K8s Etcd 横向移动 攻击私有镜像库 远程控制 反弹shell reverse-shell ✔ link 信息窃取 扫描AK及API认证凭据 ak-leakage ✔ link 信息窃取 窃取K8s Secrets k8s-secret-dump ✔ link 信息窃取 窃取K8s Config k8s-configmap-dump ✔ link 持久化 部署WebShell 持久化 部署后门Pod k8s-backdoor-daemonset ✔ link 持久化 部署影子K8s api-server k8s-shadow-apiserver ✔ link 持久 K8s MITM攻击(CVE-2020-8554) k8s-mitm-clusterip ✔ link 持久化 部署K8s CronJob 躲避防御 K8s审计日志清理

Tool 模块

还原部分常用的Linux命令,解决容器环境缩减的问题。参数略有不同,详见下面文档链接:

cdk nc [options]
cdk ps

列表

子命令 描述 已支持 详细文档 nc TCP隧道 ✔ link ps 获取进程信息 ✔ link ifconfig 获取网络信息 ✔ link vi 文本编辑 ✔ link kcurl 发包到K8s api-server ✔ link dcurl 发包到Docker HTTP API ucurl 发包到Docker Unix Socket ✔ link rcurl 发包到Docker Registry API probe IP/端口扫描 ✔ link kproxy kubectl代理转发

TODO

  1. echo loader便于通过web RCE植入CDK
  2. EDR检测对抗
  3. 条件编译
  4. 开发文档

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK