sparksbenjamin/DeepPrint

GitHub: sparksbenjamin/DeepPrint

DeepPrint 是一个基于 Python 的欺骗工程工具,用于将 T-Pot 蜜罐部署自动化包装为逼真的 OT、ICS 及企业角色。

Stars: 0 | Forks: 0

# DeepPrint DeepPrint 是一个基于 Python 的欺骗工程部署框架,用于将 [T-Pot](https://github.com/telekom-security/tpotce) 安装重新包装为选定的 操作角色。它会生成特定角色的 Docker Compose 清单文件, 设置明确的主机名和容器名,更新环境变量, (可选)分配符合厂商规范的 MAC 标识,并可以将横幅 和内容文件注入到正在运行的蜜罐容器中。 DeepPrint 帮助防御者通过将 Cowrie、Conpot 和 Suricata 等服务重新包装为逼真的 OT、ICS、企业和工业角色,从而将原版 T-Pot 或 T-PotCE 部署转变为更可信的蜜罐。 目标很简单:登录 T-Pot 主机,运行一条命令,选择一个角色, 在不手动编辑 Compose 文件、环境变量、横幅资产和服务元数据的情况下, 部署一个更具欺骗性的足迹。 面向 AI 和代码助手的信息,请参阅 [llms.txt](llms.txt)。 ## 概览 - T-Pot / T-PotCE 欺骗自动化 - 针对 Cowrie、Conpot 和 Suricata 的蜜罐角色部署 - OT/ICS、工业和企业欺骗工程 - 主机名、横幅、MAC 地址和容器元数据自定义 - 在实时 T-Pot 主机上的一键式引导部署 ## 为什么要将 DeepPrint 与 T-Pot 结合使用 T-Pot 提供了一个强大的蜜罐平台,但默认部署可能 仍显得大众化。DeepPrint 通过帮助 T-Pot 在面向欺骗的部署中看起来更像是刻意为之 而非出厂默认,从而提高其效用。 DeepPrint 旨在增加攻击者的阻力。环境看起来越一致、越可信, 攻击者区分欺骗目标和真实操作目标所需的工作就越多。 实际上,这意味着: - 更可信的主机名和服务标识 - 通过交错的服务启动实现更可信的重启行为 - 可选的 MAC 地址随机化,可在需要时保留厂商 OUI - 跨容器、横幅和注入文件的一致角色数据 - 对于不想在主机上手动微调 YAML 的操作员来说,部署更快 - 通过预览模式、备份和恢复支持实现更安全的更改 ## DeepPrint 的功能 - 将角色应用于 T-Pot 服务,如 `cowrie`、`conpot` 和 `suricata` - 在 Compose 中强制指定 `hostname` 值,以免 Docker 分配随机 ID - 更新环境变量以反映所选的标识 - 对于桥接服务,可以设置完整的 `mac_address` 或根据提供的厂商前缀随机化后三个八位字节 - 支持针对横幅、主机名、站点名称和其他角色数据的提示输入 - 将本地文件(如 `motd.txt` 或 `index.html`)注入到正在运行的容器中 - 在实时部署和恢复期间,以微小的随机延迟启动服务,使重启流量看起来不那么刻意 - 支持预览模式和实时部署模式 - 可以直接针对实时的 `~/tpotce` 安装进行操作 ## 快速开始 对于实时 T-Pot 主机上的大多数操作员来说,这是最快的路径: ``` curl -fsSL https://raw.githubusercontent.com/sparksbenjamin/DeepPrint/main/bootstrap.py | python3 - ``` 该引导脚本将: 1. 将 DeepPrint 下载到 `~/.deepprint` 2. 确保已安装 `PyYAML` 3. 启动交互式向导 4. 检测可能的 T-Pot 安装(例如 `~/tpotce`) 5. 引导您完成角色选择、提示输入、预览和部署 如果您只想先预览角色: ``` python3 DeepPrint/deepprint.py --deploy power_plant --dry-run ``` ## 仓库结构 ``` DeepPrint/ |-- DeepPrint/ | |-- deepprint.py | |-- footprints/ | `-- templates/ |-- bootstrap.py `-- README.md ``` - `DeepPrint/deepprint.py` 用于渲染或部署角色的主要引擎和 CLI。 - `DeepPrint/footprints/` 角色定义和可注入资产。 - `DeepPrint/templates/` 用于渲染的基础 Compose 和环境模板。 - `bootstrap.py` T-Pot 主机上操作员的一行代码引导入口点。 ## 系统要求 - Python 3.10+ - 带有 `docker compose` 或 `docker-compose` 的 Docker - `PyYAML` - 如果要部署到实时主机,则需要 T-Pot 安装 如果缺少 `PyYAML`,引导脚本将尝试自动安装它。 如果您是从该仓库的克隆版本进行工作,请使用以下命令安装运行时 依赖项: ``` python -m pip install -r requirements.txt ``` ## 在 T-Pot 上的一键启动 在 T-Pot 主机上,运行: ``` curl -fsSL https://raw.githubusercontent.com/sparksbenjamin/DeepPrint/main/bootstrap.py | python3 - ``` 当您希望该工具引导从角色选择 到渲染和部署的整个过程时,这是推荐的部署路径。 ## 交互式使用 如果仓库已存在于本地: ``` python3 DeepPrint/deepprint.py --interactive ``` 要直接指向实时的 T-Pot 安装: ``` python3 DeepPrint/deepprint.py --interactive --tpot-root ~/tpotce ``` 交互式流程可以: - 列出可用的角色 - 提示输入目标 T-Pot 根目录 - 询问特定于角色的问题 - 提供试运行 - 在部署之前显示生成的 Compose 清单 - 在进行更改之前请求最终确认 ## 非交互式使用 列出可用角色: ``` python3 DeepPrint/deepprint.py --list-personas ``` 预览角色而不部署: ``` python3 DeepPrint/deepprint.py --deploy power_plant --dry-run ``` 针对捆绑模板部署角色: ``` python3 DeepPrint/deepprint.py --deploy power_plant ``` 直接部署到实时 T-Pot 主机: ``` python3 DeepPrint/deepprint.py --deploy power_plant --tpot-root ~/tpotce ``` 如果您的主机使用 `tpot.service` 来管理堆栈,请在手动 执行 DeepPrint 切换之前停止它: ``` sudo systemctl stop tpot ``` 从 DeepPrint 备份文件恢复之前的实时 T-Pot 配置: ``` python3 DeepPrint/deepprint.py --restore --tpot-root ~/tpotce ``` ## 实时 T-Pot 行为 当使用 `--tpot-root ~/tpotce` 时,DeepPrint 将该目录视为 活动的 T-Pot 安装,并将: 1. 使用活动的 Compose 和 `.env` 停止当前堆栈 2. 将新的 DeepPrint 特定文件渲染到 T-Pot 根目录 3. 将活动文件备份为: - `docker-compose.yml.deepprint.bak` - `.env.deepprint.bak` 4. 替换: - `docker-compose.yml` - `.env` 5. 启动更新后的堆栈 - DeepPrint 会以微小的随机暂停增量启动服务,使角色交换在网络上的表现更接近真实的重启事件 6. 使用 `docker cp` 将角色资产注入到正在运行的容器中 它还会写入: - `docker-compose.deepprint.yml` - `.env.deepprint` 这些生成的文件使得在部署之前或之后更容易检查 DeepPrint 渲染的内容。 ## 回滚和恢复 每次实时部署都会存储之前活动的 T-Pot 文件的备份: - `docker-compose.yml.deepprint.bak` - `.env.deepprint.bak` 要回滚到最后一个 DeepPrint 之前的状态: ``` python3 DeepPrint/deepprint.py --restore --tpot-root ~/tpotce ``` 恢复命令将: 1. 停止当前活动的堆栈 2. 将 DeepPrint 备份文件复制回原位 3. 使用恢复的文件重启 T-Pot ## 提示的角色值 角色可以定义 `prompts:` 块。当存在该块时,DeepPrint 会 在交互式终端中询问操作员这些值,并使用答案来渲染服务设置和可注入的文本文件。 如果您想构建自己的足迹,请参阅 [DeepPrint/CUSTOM_PERSONAS.md](DeepPrint/CUSTOM_PERSONAS.md)。 典型的提示值包括: - 站点名称 - 主机名前缀 - SSH 横幅主机名 - 桥接服务的可选 MAC 厂商前缀 - IDS 传感器名称 - 警告文本 - 运维联系人姓名 当 stdin 为非交互式时,DeepPrint 将使用提示的默认值。 ## 角色格式 每个足迹位于 `DeepPrint/footprints//` 下,通常 包含: - `persona.yaml` - `assets/motd.txt` - `assets/index.html` 示例: ``` prompts: - id: site_name message: Facility display name default: River Bend Generation Station required: true global_prefix: riverbend services: cowrie: hostname: eng-workstation-ssh container_name: siemens-eng-ssh environment_variables: COWRIE_HOSTNAME: SIEMENS-ENG-WS01 COWRIE_MOTD_PATH: /etc/motd files_to_inject: - service: cowrie source: assets/motd.txt destination: /etc/motd ``` DeepPrint 会验证必需的密钥,并在遇到缺失或格式错误的 角色数据时快速失败。 对于 MAC 标识至关重要的面向欺骗的环境,角色 还可以定义: - `mac_address` 为桥接容器设置完整的静态 MAC 地址。 - `mac_address_prefix` 提供前三个八位字节,让 DeepPrint 每次部署时随机化后缀。 有关完整的分步自定义角色指南,请参阅 [DeepPrint/CUSTOM_PERSONAS.md](DeepPrint/CUSTOM_PERSONAS.md)。 ## 包含的足迹 该仓库目前包含 17 个可部署的角色: - `airport_ops` - `datacenter_core` - `food_processing` - `hospital_imaging` - `maritime_port` - `mining_operations` - `oil_gas_pipeline` - `pharma_cleanroom` - `power_plant` - `rail_operations` - `retail_payment` - `semiconductor_fab` - `smart_warehouse` - `telecom_edge` - `university_research` - `utility_substation` - `water_treatment` 有关目录摘要,请参阅 [DeepPrint/footprints/README.md](DeepPrint/footprints/README.md)。 ## CLI 参考 ``` usage: deepprint.py [-h] [--deploy PERSONA] [--list-personas] [--restore] [--interactive] [--dry-run] [--tpot-root TPOT_ROOT] [--base-compose BASE_COMPOSE] [--base-env BASE_ENV] [--output-compose OUTPUT_COMPOSE] [--output-env OUTPUT_ENV] ``` - `--deploy PERSONA` 渲染或部署指定的角色。 - `--list-personas` 打印所有可用的角色并退出。 - `--restore` 从 DeepPrint 备份文件恢复 `docker-compose.yml` 和 `.env`。 - `--interactive` 启动引导向导。 - `--dry-run` 打印生成的 Compose 清单而不是进行部署。 - `--tpot-root` 针对实时的 T-Pot 安装(例如 `~/tpotce`)。 - `--base-compose` 覆盖基础 Compose 模板路径。 - `--base-env` 覆盖基础环境文件路径。 - `--output-compose` 覆盖生成的 Compose 输出路径。 - `--output-env` 覆盖生成的环境输出路径。 ## 安全说明 - DeepPrint 旨在用于受控的实验室、欺骗和研究用途。 - 它是一种欺骗工程工具,旨在增加攻击者的阻力,而不是 在未经批准的环境下静默模仿生产资产。 - 在暴露主机之前,请检查生成的 Compose 和 env 文件。 - 如果您要部署到实时的 T-Pot 安装,请将其视为堆栈 重新配置并适当安排时间。 - 生成的文件和备份应保留,直到部署经过 验证。 ## 开发说明 在处理该项目时有用的命令: ``` python -m pip install -r requirements.txt python -m py_compile DeepPrint/deepprint.py bootstrap.py python DeepPrint/deepprint.py --list-personas python DeepPrint/deepprint.py --deploy power_plant --dry-run python -m unittest discover -s tests -v ``` ## 测试和 CI 该仓库包括: - `tests/test_deepprint.py` 针对角色渲染、实时部署文件处理和恢复的冒烟测试。 - `tests/test_bootstrap.py` 一个引导冒烟测试,用于验证一键启动器构建本地 安装并将控制权移交给 CLI。 - `.github/workflows/ci.yml` GitHub Actions 工作流,用于安装依赖项、编译脚本、 列出角色,并在 Python 3.10 和 3.11 上运行单元测试套件。
标签:Banner伪造, BOF, Conpot, Deception Engineering, Docker Compose, MAC地址欺骗, minikerberos, OT/ICS安全, PKINIT, Python, Suricata, Web截图, Windows安全, 主机名伪装, 企业安全, 元数据定制, 容器安全, 工控安全, 开源安全工具, 恶意代码分类, 攻击者迷惑, 无后门, 欺骗防御, 版权保护, 特权提升, 现代安全运营, 网络安全, 网络资产管理, 自动化部署, 蜜罐, 蜜罐伪装, 被动防御, 证书利用, 诱捕技术, 请求拦截, 逆向工具, 逆向工程平台, 隐私保护