alosafuzz/icsFuzzer

GitHub: alosafuzz/icsFuzzer

一款支持十种工业控制系统网络协议的模块化模糊测试工具,附带软件响应器用于校准预期行为,帮助研究者在真实硬件上可靠地发现 ICS 设备漏洞。

Stars: 0 | Forks: 0

# icsFuzzer 一个针对工业控制系统 (ICS/OT) 网络协议的模块化 fuzzer。icsFuzzer 生成针对十种协议的畸形和违规流量,对响应进行 分类,并为每个协议提供了一个严格遵循规范的软件响应器, 以便您在接触真实硬件之前就能校准预期行为。 一篇关于此工具在真实硬件(ESP32 和 OpenPLC v3/v4)上发现的漏洞——以及五位 维护者的回应——的详细报告发布在博客上: [**在真实硬件上 fuzzing 十种 ICS 协议**](https://alosafuzz.github.io/2026/07/30/fuzzing-ten-ics-protocols-on-real-hardware.html)。 ## 支持的协议 | 协议 | 默认端口 | 传输协议 | |---|---|---| | Modbus | 502 | TCP | | DNP3 | 20000 | TCP | | OPC-UA | 4840 | TCP | | EtherNet/IP | 44818 | TCP | | IEC 61850 / MMS | 102 | TCP | | BACnet | 47808 | UDP | | IEC 104 | 2404 | TCP | | PROFINET | 34964 | UDP | | S7comm | 102 | TCP | | FINS | 9600 | UDP | ## 为什么软件响应器很重要 在实时设备上,连接断开的原因是不明确的——设备可能崩溃了,也可能 是正确地拒绝了一个坏帧。每个协议都附带一个软件响应器, 它将处理的每一个请求记录到 sidecar 文件中, 并记录它是否是有意关闭连接(例如,因为协议 ID 错误)。首先针对 响应器进行校准,每个崩溃指标都会被明确为要么是预期的关闭,要么是一个真正的 漏洞。然后,您就可以相信在真实硬件上看到的差异。 ## 安装 需要 Python 3.10+。大多数模块仅依赖标准库。 ``` git clone https://github.com/alosafuzz/icsFuzzer cd icsFuzzer pip install -r requirements.txt ``` ## 快速开始 在任何实时目标之前,先针对软件响应器进行校准: ``` # terminal 1 — 启动 Modbus responder(无需 root;端口 5020) python3 scripts/modbus_responder.py --output output/ # terminal 2 — fuzz responder python3 icsFuzzer.py --protocol modbus --target 127.0.0.1:5020 --yes ``` 然后将其指向已授权的目标: ``` python3 icsFuzzer.py --protocol s7comm --target 192.168.1.10:102 --yes python3 icsFuzzer.py --protocol modbus --target 192.168.1.10:502 --delay 0.1 ``` 有用的标志:`--categories a,b,c`(运行子集),`--dry-run`(生成用例但不 发送),`--rate-limit PPS`,`--replay ` / `--replay-all-crashes`(从之前 运行的日志中重新发送)。 ## 输出 运行记录以 JSONL 格式记录在 `output/` 目录下,每个用例一条记录, 包含异常分类和原始请求/响应字节。重新运行报告程序以总结或重放 之前的会话。 ## 测试 ``` pip install pytest pytest ``` 测试套件涵盖了按协议进行的用例生成,以及直接驱动每个 软件响应器的集成测试。 ## 概念验证脚本 [`poc/`](poc/) 目录包含了一小部分用于复现 使用 icsFuzzer 发现的问题的独立脚本。**此处仅包含针对已修复或已公开问题的 PoC。** 针对未修补或未披露问题的复现脚本将暂缓公布,等待协调 披露——请参阅 [poc/README.md](poc/README.md)。 ## 扩展它 添加协议模块的端到端文档在 [docs/adding-a-protocol-module.md](docs/adding-a-protocol-module.md) 中,包括那些只在 首次真实运行中才会出现的陷阱(多 ADU 排空、序列号处理、 异常与崩溃的分类、异常后重连)。 ## 安全与负责任的使用 使用前请阅读 [SECURITY.md](SECURITY.md)。如果您使用此工具在供应商的产品中发现漏洞, 请在发布前与供应商协调披露事宜。 ## 许可证 [MIT](LICENSE) © 2026 Shad Malloy (alosafuzz)。 ## 作者 由 Shad Malloy (**alosafuzz**) 构建,独立的 ICS/OT 安全研究。 联系方式:alosafuzz@proton.me
标签:ICS/OT协议, PKINIT, Python, 协议分析, 实时处理, 工控安全, 无后门, 时序数据库, 权限提升, 逆向工具