通信协议的逆向工程

10

我很好奇,有哪些自动化甚至是半自动化的技术可以用于通信协议逆向工程

我特别感兴趣的是在嗅探流量并尝试了解协议的情况。

我在google学术上能找到一些论文,但根据我的经验,这通常是一个完全手动的过程。

如果有人在这个领域有经验,并愿意分享,那将不胜感激。


你是在尝试将代码反向工程成状态机,还是通过观察消息流量来猜测协议是什么? - Ira Baxter
后者 - 我正在询问如何通过观察流量来获取协议规范的详细信息。 - JohnIdol
这非常困难。首先,您需要假设一个基本的协议模型,比如“纯有限状态自动机”;如果您假设错误(例如它有一个隐藏的计数器或计时器),那么无论您做什么都无法得到正确的答案。如果您假设正确,您仍然需要确定消息的字段结构,哪些元素触发协议转换以及实际的转换条件。人们撰写博士论文试图从“用例模型”中归纳出FSA。如果您不愿意带来更多的知识,那么您将会遇到极其困难的问题。 - Ira Baxter
谢谢你对这个问题的看法 - 我正在努力了解问题的规模。即使基于许多假设 - 典型的现实场景等,我也很乐意得到一些指针。 - JohnIdol
1个回答

4
  • 获得通信链路的某种控制,并嗅探数据。然后运用相关应用程序的操作范围,以了解协议之间的关系,从而收集一般性观察。

  • 在谷歌上搜索该协议。也许它已经被公开发布了。也许有人已经弄清楚了,或者有人不小心泄露了有关细节。

  • 编写一个测试程序来替换协议的一端:通过试错尝试引出另一端的响应。

  • 通常,协议是另一个协议的后代,或者至少在很多方面与另一个协议有关。通过看到具体情况并熟悉许多协议,人们通常可以对其特性和能力作出良好的教育猜测。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接