如何分析未知的网络协议?

信息安全 网络 协议 嗅探器
2021-09-04 20:12:25

当然,Wireshark 可用于嗅探流量——您可以检查每个数据包或数据包链。

但你会如何更聪明地做到这一点?您使用哪些工具来识别行为或自动化流程?

我的目标是识别不同的功能、操作码以及我可以了解的有关协议和软件的所有内容(我同时拥有客户端和服务器)。

1个回答

由于协议是由人类设计的,因此无法以任何有用的方式轻松实现自动化。因此,他们并没有真正遵循任何固定的模式或规则。你将不得不在自己身上投入大脑工作来剖析它们。

但是,有一些技巧:

  • 使用 Wireshark 分离单个对话并识别高级通信模式。
  • 使用“智能”十六进制编辑器剖析数据包。Hex Workshop 是一个不错的选择(尽管它不是免费的),因为它允许您在数据上定义 C 风格的结构。
  • 使用差异工具来识别数据包之间的变化。
  • 使用 IDA(或其他静态分析工具)来识别网络 API(例如 Winsock)用于发送/接收数据的位置,并弄清楚它们在做什么。
  • 使用 ImmunityDebugger、OllyDbg、WinDbg 或其他调试器在实时环境中跟踪执行。这在向客户端或服务器应用程序发送测试数据包时特别有用,因为您可以查看验证测试通过/失败的位置以及原因。在这些数据包中使用不同的值可以让您查看哪些类型的数据流向代码的不同部分,从而可以识别它们的功能。

最后,你仍然必须是一个体面的逆向工程师才能处理这个问题。如果您从未尝试过这样的事情,我建议您使用一个简单的公开记录的协议来尝试它并向后工作 - 尝试弄清楚它是如何工作的,然后将您的观察结果与文档进行比较。