kali-pentest

Docker 模式

当没有可用的 Kali SSH 服务器,且任务可以在持久化 Kali 容器内通过 CLI 工具完成时,使用 Docker 模式。

Docker 是一种执行环境,不只是安装方式。应保持容器持久化,使已安装工具和生成的工件能跨会话保留。

推荐用法

场景 推荐方式
有完整 Kali SSH 服务器 使用 SSH/服务器模式
没有 Kali 服务器,但可用 Docker 使用持久化命名容器
需要可复现的本地环境 使用自定义 Dockerfile
同 LAN、依赖 ARP、无线、重度原始套接字或服务栈较重的任务 优先通过 SSH 使用完整 Kali VM/server

Agent 工作流

  1. 检查持久化容器是否存在。
  2. 如果容器已停止,则启动它。
  3. 将缺少的工具安装到持久化容器中,不要安装到临时容器。
  4. 使用 docker exec 运行 Kali 命令。
  5. 使用 docker cp 复制需要的工件。
  6. 任务完成后停止容器,不要删除。

脚本传递

向容器发送 Python 或 Shell 脚本时,使用 docker cp 而非 heredoc 管道——heredoc 会引入 CRLF 行尾(macOS)和 shell 变量冲突(如 UID 在 bash 中为只读变量)。

cat > /tmp/script.py << 'EOF'
# 脚本内容
EOF
docker cp /tmp/script.py kali-pentest:/tmp/script.py
docker exec kali-pentest python3 /tmp/script.py

避免在通过此方式传递的脚本中使用含嵌套引号的 f-string——使用 % 格式化或预计算变量,防止跨 shell 层的转义问题。

文档

官方参考