【问题标题】:Identify application based on its packets根据数据包识别应用程序
【发布时间】:2016-09-05 07:11:32
【问题描述】:

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

【问题讨论】:

  • 您可能对深度包检测库感兴趣。恕我直言,最好的开源库是 nDPI。基本上,它为每个支持的应用程序(Skype、Gmail、YouTube 等)都有一个指纹数据库。有时确定应用程序需要检查同一流上的多个数据包。其他库使用统计信息(数据包大小、经过时间等)来识别数据包en.wikipedia.org/wiki/Deep_packet_inspection

标签: machine-learning network-programming classification decision-tree c4.5


【解决方案1】:

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

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

简而言之,基于网络分析,您可以猜测应用程序。但是,没有任何方法可以 100% 准确地告诉您。

【讨论】:

    猜你喜欢
    • 2011-11-25
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2020-02-06
    • 2016-02-09
    • 1970-01-01
    相关资源
    最近更新 更多