Try-H4ck-M3/modzero

GitHub: Try-H4ck-M3/modzero

ModZero 是一款基于 C++20 的 Modbus TCP 协议安全评估工具,用于 ICS/SCADA 环境下的 PLC 设备侦察、从机发现和内存转储。

Stars: 5 | Forks: 0

ModZero

C++20 License Modbus

ModBus Exploration Tool — Industrial Control Systems Reconnaissance & Assessment

ModZero 是一款** Modbus TCP 探索与安全评估工具**,专为工业控制系统(ICS/SCADA)安全研究人员和渗透测试人员设计。它可连接至可编程逻辑控制器(PLC),并执行设备识别、从机发现以及跨所有标准 Modbus 数据类型的内存转储。 ## 功能 - **设备侦察** — 通过 Modbus FC 43 / MEI Type 0x0E(读取设备标识)识别 PLC 供应商、产品代码、固件版本等 - **从机 ID 暴力破解** — 扫描从机 ID 1–247,发现 Modbus 网关背后的活动设备 - **内存转储** — 读取并显示所有四个 Modbus 数据区域的值: - 线圈(数字输出) - 离散输入(数字输入) - 输入寄存器(模拟输入) - 保持寄存器(模拟输出) - **智能边界检测** — 在触及内存限制时,从分块读取回退到单地址探测,并通过连续范围合并提供紧凑的输出 ## 快速开始 ### 前置条件 - 支持 C++20 的 **g++** - **libmodbus** 开发库 - **TCLAP**(Templatized C++ Command Line Parser)— 仅需头文件 #### 安装依赖 (Ubuntu) ``` sudo apt install g++ libmodbus-dev libtclap-dev ``` ### 构建 ``` git clone https://github.com/Try-H4ck-M3/modzero.git cd modzero ./build.sh ``` 编译后的二进制文件将位于 `bin/modzero`。 ## 使用方法 ``` modzero -i [options] [action(s)] ``` ### 参数 | 参数 | 描述 | |---|---| | `-i ` | 目标 PLC IP 地址 **(必填)** | | `-p ` | Modbus TCP 端口(默认:`502`) | | `-s ` | Modbus 单元/从机 ID(默认:`1`) | | `-t ` | 连接超时时间,以毫秒为单位(默认:`500`) | | `-d ` | Modbus 数据包之间的延迟,以毫秒为单位(默认:`100`) | | `-b` | 暴力破解从机 ID 1–247 | | `-r` | 设备识别(侦察) | | `-a` | 转储所有内存类型 | | `-c` | 转储线圈值 | | `-n` | 转储离散输入值 | | `-e` | 转储输入寄存器值 | | `-g` | 转储保持寄存器值 | | `-h` | 显示帮助 | ### 示例 **基本设备侦察:** ``` ./bin/modzero -i 192.168.1.100 -r ``` **暴力破解从机 ID:** ``` ./bin/modzero -i 192.168.1.100 -b ``` **转储特定从机的所有内存:** ``` ./bin/modzero -i 192.168.1.100 -s 10 -a ``` ## 项目结构 ``` modzero/ ├── build.sh # Build script ├── bin/ │ └── modzero # Compiled binary └── src/ ├── main.cpp # Entry point and CLI orchestration ├── includes.h # Central includes ├── logger.h/cpp # Color-coded logging ├── recon.h/cpp # Device identification & slave brute-force ├── read.h/cpp # Memory dump functions ├── write.h/cpp # Write stubs (not yet implemented) └── utils.h/cpp # Hex formatting & ASCII art banner ``` ## 路线图 - [X] 通过 Modbus FC 43 / MEI 0x0E 进行设备侦察 - [X] 从机 ID 暴力破解 (1–247) - [X] 内存转储 — 线圈、离散输入、输入寄存器、保持寄存器 - [X] 带范围合并的智能边界检测 - [X] 带颜色和时间戳的日志记录 - [X] ASCII 艺术 banner - [ ] 写入功能(线圈/寄存器写入操作) - [ ] 可配置的地址范围 - [ ] 机器可读的输出格式(JSON、CSV) - [ ] CMake 构建系统 - [ ] 或许支持 Modbus RTU(串行)? ## 免责声明 本工具仅供**授权的安全评估和研究目的**使用。未经授权访问任何计算机或 ICS 是违法的。作者不对因滥用本工具而造成的任何损害负责。请负责任地使用,并且仅在您拥有或获得明确测试许可的系统上使用。 ## 许可证 本项目基于 MIT 许可证授权。详情请参阅 [LICENSE](LICENSE) 文件。
标签:C++, PKINIT, SCADA, 协议分析, 哈希传递, 工控安全, 插件系统, 数据擦除, 权限提升