根据数据包识别应用程序

Identify application based on its packets

是否可以通过分析数据包来识别特定应用程序?如果是,数据包的哪些属性可能有助于唯一地识别应用程序?任何帮助将不胜感激。

这个问题的范围很广,如果你想出一个解决方案,你应该申请专利。您可以根据数据包和协议获得有关应用程序的知识,但规则并非在 100% 的情况下都有效。这些是您需要了解的一些注意事项(不是完整列表,但它们可以给您一个想法):

  • 根据 src 或 dst 端口,您可以获得有关两个节点之一中 运行 应用程序的信息。例如,默认情况下,Web 服务器使用端口 80 或 8080(或使用 HTTPS 的 443)。默认情况下,ssh 使用端口 22。但是,可以将应用程序配置为侦听不同的端口。许多不同的应用程序也使用 HTTP 通过端口 80、8080、443 进行通信。在后一种情况下,协议可能是 HTTP,但您无法确定它是哪个应用程序。
  • 如果通信未加密,您可以获得嗅探数据包有效载荷的信息。但是,例如,如果通过 SSL 进行通信,除非您实施中间人攻击,否则无法做到这一点。
  • 如果您可以访问一台机器,使用 netstat 或其他工具,您可以根据应用程序使用的端口识别应用程序。
  • 应用程序的其他猜测方式(比确定性更猜测)是通过分析通信模式。

简而言之,根据网络分析,您可以猜测应用程序。但是,没有一种方法可以100%准确地告诉你。