falangalabs/simpleics-pot
GitHub: falangalabs/simpleics-pot
一个有状态的 Modbus TCP 工控蜜罐,通过确定性进程模拟为 ICS 欺骗研究提供真实可交互的诱饵环境。
Stars: 0 | Forks: 0
# SimpleICS Pot
SimpleICS Pot 是一个小巧的、有状态的 Modbus TCP 蜜罐,专为防御性研究而设计。
它模拟了一个合成的湿井泵控制器,而不是仅仅暴露一个静态的
banner 或一个扁平的寄存器阵列。读取操作会返回不断变化的进程状态,有效的
写入操作会影响该进程,执行器的反馈具有延迟性,并且每一个被处理的
事务都会产生一个结构化的 JSON 事件。
## 它的不同之处
- 确定性的进程模拟,包含液位、流量、泵电流和警报;
- 连贯的 AUTO/MANUAL 控制、设定值、命令和反馈;
- Modbus 读取 FC1-FC4 以及有界的写入 FC5、FC6、FC15 和 FC16;
- 经过验证的寄存器范围以及对无效多次写入的原子拒绝;
- 版本化 JSONL 遥测数据中包含的会话、事务和对端上下文;
- 连接、待处理请求、缓冲区、空闲和不完整帧的限制;
- 在单个寄存器映射文档中提供合成的、可配置的设备身份;
- 非 root、只读、无 capability 的容器配置;
- 没有凭证、出站集成、Web UI 或管理端点。
## 快速开始
要求:带有 Compose 插件的 Docker Engine。
```
docker compose up --build
```
默认监听器仅在 `127.0.0.1:1502` 上可用。在另一个
终端中,运行包含的授权目标演示:
```
python3 -m venv .venv
.venv/bin/pip install --require-hashes -r requirements.lock
.venv/bin/pip install --require-hashes -r requirements-build.lock
.venv/bin/python examples/modbus_demo.py
```
停止并移除容器:
```
docker compose down
```
在更改绑定地址之前,请参阅[部署](docs/DEPLOYMENT.md)。
## 进程模型
包含的社区配置是一个虚构的紧凑型提升泵站控制器,
故意设计得与任何私有部署不同。它的 21 个
点涵盖了线圈、离散输入、保持寄存器和输入寄存器。
例如,授权客户端可以切换到 MANUAL,发出泵命令,
观察延迟的运行反馈,然后看到出水流量、电机电流和
水箱液位做出连贯的响应。
完整的地址表和缩放规则位于
[`config/register_map.v1.json`](config/register_map.v1.json) 中。该身份是
明确合成的,绝不能模仿真实的供应商或已部署的资产。
在暴露于 Internet 之前,请创建您自己的虚构身份和进程
配置;不要从真实设备中复制标识符或测量数据。
## 事件输出与连接器
事件以每行一个紧凑的 JSON 对象的形式发出。Docker 默认会保留
有限的本地日志。操作员可以将任何本地日志收集器连接到
stdout 或 Docker 日志接口;蜜罐本身没有出站
发送方或目标凭证。
有关字段和经过脱敏处理的示例,请参阅[事件契约](docs/EVENTS.md)。
## 本地开发
需要 Python 3.11 或更高版本。
```
python3 -m venv .venv
.venv/bin/pip install --require-hashes -r requirements-build.lock
.venv/bin/pip install --require-hashes -r requirements.lock
.venv/bin/pip install --no-build-isolation --no-deps -e .
.venv/bin/python tools/validate_register_map.py
.venv/bin/python -m unittest discover -s tests -p 'test_*.py' -v
```
除非操作员明确确认了更广泛的绑定,否则 CLI 仅限回环使用:
```
.venv/bin/simpleics-pot
```
## 项目范围
此版本有意仅包含 Modbus 诱饵、进程模型、
本地结构化遥测契约、测试和受限的容器
配置。它不执行归因、扫描客户端、丰富地址、
发布威胁情报或通过网络发送数据。
## 贡献与安全
欢迎贡献。请先阅读 [CONTRIBUTING.md](CONTRIBUTING.md) 和
[SECURITY.md](SECURITY.md)。请勿提交真实的凭证、真实的 OT 数据、
数据包捕获或实时传感器部署的详细信息。
采用 [Apache License 2.0](LICENSE) 授权。依赖项归因说明位于
[THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) 中。
标签:BOF, Docker, ICS, NTLM Relay, PKINIT, Python, 安全防御评估, 工控安全, 无后门, 欺骗防御, 版权保护, 蜜罐, 证书利用, 请求拦截, 逆向工具, 防御绕过