在 GitHub 上加星Star1.1k 个星标

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 引用原作者。

报告条目过时 建议修正翻译

综述中的讨论

一手来源

  1. https://dl.acm.org/doi/10.1145/3728982
  2. https://api.crossref.org/works/10.1145/3728982
  3. README.md GitHub · QYbPtqyb/ICEPRE · 修订 506bdf1
  4. requirements.txt GitHub · QYbPtqyb/ICEPRE · 修订 506bdf1
  5. ICEPRE.py GitHub · QYbPtqyb/ICEPRE · 修订 506bdf1
  6. Ctracer.py GitHub · QYbPtqyb/ICEPRE · 修订 506bdf1
  7. InferSyntax.py GitHub · QYbPtqyb/ICEPRE · 修订 506bdf1
  8. config/modbus_config.yaml GitHub · QYbPtqyb/ICEPRE · 修订 506bdf1
  9. config/enip_config.yaml GitHub · QYbPtqyb/ICEPRE · 修订 506bdf1
  10. config/iec104_config.yaml GitHub · QYbPtqyb/ICEPRE · 修订 506bdf1
  11. config/s7comm_config.yaml GitHub · QYbPtqyb/ICEPRE · 修订 506bdf1
  12. evaluation/syntax_evaluation.py GitHub · QYbPtqyb/ICEPRE · 修订 506bdf1
↑↓ 移动↵ 打开⌘↵ 新标签页