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安全, 主机名伪装, 企业安全, 元数据定制, 容器安全, 工控安全, 开源安全工具, 恶意代码分类, 攻击者迷惑, 无后门, 欺骗防御, 版权保护, 特权提升, 现代安全运营, 网络安全, 网络资产管理, 自动化部署, 蜜罐, 蜜罐伪装, 被动防御, 证书利用, 诱捕技术, 请求拦截, 逆向工具, 逆向工程平台, 隐私保护