2025 · 期刊论文
ICEPRE:基于数据驱动混合符号执行的工控协议逆向工程
ICEPRE: ICS Protocol Reverse Engineering via Data-Driven Concolic Execution
在二进制协议解析器中沿具体报文引导的路径分析,再进行符号化重放,提取字节级数据流以推断报文字段边界。它依据保持原值的运算和相似处理轨迹合并字节。作者在四种公开工控协议、每组 1,000 条报文的数据集上,报告平均边界 F1 分数为 0.76、字段完美分割率为 0.67。
研究范围与局限
恢复的是报文语法,并非字段语义、协议状态机或端点等价性。方法需要二进制、加载配置,以及正确识别的初始化、输入和解析函数;尤其在缺少符号时,仍需人工筛选。不支持加密协议和位级字段;被忽略或仅被复制的字节可能遭到错误合并。完美分割率衡量两端边界均正确的字段。量化实验使用四种公开协议的 50 条与 1,000 条报文集合;另行开展的专有协议研究覆盖五个固件目标中的三种协议,在三台设备上进行交互检查,并由人工建立真实标签。这些检查不能证明完整设备行为。
与本合集的关联
补充借助固件与混合符号分析推断协议格式的方法,与实时服务端插桩和仅基于流量的字段推断互补。
发表与复核详情
- 发表载体
- Proceedings of the ACM on Software Engineering (ISSTA 2025)
- 发表状态
- 期刊论文
- 出版/提交日期
- 2025 年 6 月 22 日
- 日期依据
- ACM 文章页面与出版方提交的 Crossref 元数据均将出版日期列为 2025-06-22;本条目不以 ISSTA 报告日期替代该期刊出版日期。
- DOI
- 10.1145/3728982
出版方将文章编号列为 ISSTA105,并以 CC BY 4.0 授权论文;其数据可用性章节链接了仓库。所审阅的 2025-04-16 代码快照未声明项目级许可证。Python 3 依赖使用兼容版本范围,包括 angr~=9.2.100、Netzob~=2.0.0 与 scapy~=2.5.0;论文说明使用 Ghidra 11.0.3 进行函数分析。仓库包含公开协议配置和一份 Modbus 捕获数据,但没有固件映像;目标二进制与库需要另行提供。论文指定轨迹相似度阈值为 0.9,发布的 InferSyntax.py 则在百分制上使用 99。批量评估器将异常轨迹排除在汇总指标之外。这些源码差异意味着不能将此快照视为已复现的论文配置。本次未下载固件、捕获数据或模型载荷,也未运行上游代码或实验。
来源复核于
本合集仅做来源复核,未重新运行论文实验。请通过原始论文或 BibTeX 引用原作者。
一手来源
- https://dl.acm.org/doi/10.1145/3728982
- https://api.crossref.org/works/10.1145/3728982
- https://github.com/QYbPtqyb/ICEPRE/blob/506bdf1f970460d0eaa52f67ae9ae338795ef48b/README.md
- https://github.com/QYbPtqyb/ICEPRE/blob/506bdf1f970460d0eaa52f67ae9ae338795ef48b/requirements.txt
- https://github.com/QYbPtqyb/ICEPRE/blob/506bdf1f970460d0eaa52f67ae9ae338795ef48b/ICEPRE.py
- https://github.com/QYbPtqyb/ICEPRE/blob/506bdf1f970460d0eaa52f67ae9ae338795ef48b/Ctracer.py
- https://github.com/QYbPtqyb/ICEPRE/blob/506bdf1f970460d0eaa52f67ae9ae338795ef48b/InferSyntax.py
- https://github.com/QYbPtqyb/ICEPRE/blob/506bdf1f970460d0eaa52f67ae9ae338795ef48b/config/modbus_config.yaml
- https://github.com/QYbPtqyb/ICEPRE/blob/506bdf1f970460d0eaa52f67ae9ae338795ef48b/config/enip_config.yaml
- https://github.com/QYbPtqyb/ICEPRE/blob/506bdf1f970460d0eaa52f67ae9ae338795ef48b/config/iec104_config.yaml
- https://github.com/QYbPtqyb/ICEPRE/blob/506bdf1f970460d0eaa52f67ae9ae338795ef48b/config/s7comm_config.yaml
- https://github.com/QYbPtqyb/ICEPRE/blob/506bdf1f970460d0eaa52f67ae9ae338795ef48b/evaluation/syntax_evaluation.py