基于DPI(深度报文解析)的应用识别

阅读: 评论:0

基于DPI(深度报⽂解析)的应⽤识别
⼀、概述
1.DPI(Deep packet inspection,深度报⽂解析)
所谓“深度”是和普通的报⽂分析层次相⽐较⽽⾔的,“普通报⽂检测”仅分析IP包4 层以下的内容,包括源地址、⽬的地址、源端⼝、⽬的端⼝以及协议类型,⽽DPI 除了对前⾯的层次分析外,还增加了应⽤层分析,识别各种应⽤及其内容,主要实现⼀下功能:
1)应⽤分析——⽹络流量构成分析、性能分析、流向分析等;
2)⽤户分析——⽤户区分、⾏为分析、终端分析、趋势分析等;
3)⽹元分析——根据区域属性(市、区、街道等)、负载情况进⾏分析等;
4)流量管控——P2P限速、保证QoS、带宽保障、⽹络资源优化等;
5)安全保障——DDoS攻击、数据⼴播风暴、防范恶意病毒攻击等。
2.⽹络应⽤的⼤致分类
现在的上的应⽤不计其数,但⼤众常⽤的⽹络应⽤可以进⾏穷举。
蒙特利尔公约据我的了解应⽤识别做的最好的就是华为,号称能识别4000种应⽤。协议分析是很多防⽕墙公司(华为、⽹神、天融信、⽹康等)的基础模块,也是很重要的模块,⽀撑着其他的功能模块的实现,精准的应⽤识别,⼤⼤提⾼产品的性能和可靠性。像我现在在做的基于⽹络流量特征识别恶意软件的建模,精准的,⼤量的协议识别也是很重要的⼀环。公司出⼝的流量剔除掉常⽤应⽤的⽹络流量,剩下的流量占⽐会很少,更好的进⾏恶意软件的分析,报警。
根据我的经验将现有常⽤的应⽤根据作⽤进⾏分类:
ps:根据个⼈对应⽤的理解进⾏应⽤分类,⼤家有什么好的建议欢迎留⾔提议
1、电⼦邮件类
2、视频类
3、游戏类
4、办公OA类
中脑边缘系统5、软件更新类
6、⾦融类(银⾏、⽀付宝)
7、股票类
8、社交通讯类(IM软件)
9、Web浏览(借助url可能会更好的识别)
10、下载⼯具类(⽹盘、P2P下载、BT类相关)
P2P下载是很蛋疼的硬⾻头!
P2P下载相关:迅雷、Flashget-2.4/3.4、EasyMule-1.1.11、QQDownload、Vagaa-2.6.7.1、Baidu下吧-4.0.0.1
BT类相关:BitComet/BitTorrent、gnutella、KAZAA、directconnect、ARES、SOUL、WINMX、APPLE、DC、MUTE、XDCC、WASTE
3.传统的协议识别
基于端⼝的协议识别
⽹络中多种应⽤层协议可以同时运⾏在同⼀台计算机的同⼀个 IP 地址上。由于 IP 地址与⽹络应⽤程序的关系是⼀对多的关系,所以主机需要通过端⼝号来区分不同的⽹络服务。
对于端⼝号的分配,有两种基本的⽅式:
1)全局分配,即由⼀个公认的中央机构(LANA)统⼀进⾏分配。虽然这样容易确定应⽤程序和端⼝的对应关系,但不能适应⼤量且迅速变化的端⼝使⽤环境;
2)本地分配,即动态分配。当某应⽤程序进程需要访问⽹络时,主机操作系统临时为该进程分配⼀个本地唯⼀的端⼝号。但本地分配⽅式使得其它主机⽆法获知分配情况,⽆法建⽴通信。
Internet 同时采⽤上述两种分配⽅式,将端⼝分成两部分:
1)保留端⼝,以全局⽅式(IANA)进⾏分配。这样每⼀个标准的服务器应⽤程序都拥有⼀个或多个全局的公认端⼝号;
2)另⼀部分是⾃由端⼝,以本地⽅式进⾏分配。当某应⽤程序想要通过⽹络和远地程序通信之前,它会⾸先申请⾃由端⼝号与远地程序通信,主机操作系统临时为该进程分配⼀个本地唯⼀的端⼝号。
下图是常⽤的保留端⼝,部分还有⼀定的参考价值。
传统上⼀直是基于端⼝映射机制对应⽤层协议进⾏识别。随着越来越多的⽹络协议不使⽤固定的端⼝进⾏通信,基于报⽂端⼝的协议识别受到很⼤限制,准确性受到很⼤挑战。但由于基于公知端⼝进⾏协议识别操作简单,识别速度快,现在的带宽越来越⼤,在识别 DNS、SMTP、POP3 等⽬前端⼝⽐较固定的传统协议时依然有⼀定的价值。
基于测度的协议识别
基于测度的协议识别根据各协议产⽣的流测度的差异识别应⽤层协议。
基于测度识别协议⽆需分析报⽂体的内容,只要根据报⽂头中的域值、报⽂⼤⼩、报⽂间隙等特征分析流量所属的应⽤类型。例如,Web 浏览产⽣的流量⼀般为短流⼩报⽂,⽽各种 P2P 协议的流量⼀般为长流⼤报⽂。基于测度的协议识别⼀般采⽤机器学习的⽅式,利⽤已经按协议类型分类的报⽂来训练系统,使其把握该类应⽤的流测度特征以识别新的流量。
温超、郑雪峰等提出通过⽹络流量信息识别 P2P 协议。基于流量分析的 P2P协议识别⽅法,依据以下四个特征识别 P2P 协议:启动子
1)P2P 主机的上下⾏流量基本相当;
2)P2P 主机连接的其它主机的数量较多;死人手指
3)P2P 主机既为服务器⼜为客户端;
4)P2P主机的监听端⼝的特点与其它协议不同。
虽然基于流量分析的识别⽅法只需对数据包的头部信息进⾏检测,不需要检测数据包的负载,具
有简单、⾼效的特点。但是只能识别出⽹络流量是否为 P2P 协议,⽆法识别出具体是哪种 P2P 协议或是哪种⾮ P2P 协议,具有应⽤的局限性。PS:有些p2p下载应⽤也是可以识别的,后续的⽂章可以分析⼀下试试。
毒素
基于负载的协议识别(基于正则表达式)
乔伊斯
基于负载的协议识别,对应⽤层协议交互过程中产⽣报⽂的内容进⾏分析,出不同于其它协议的模式特征,根据各协议特有的模式特征确定流量所属协议类型。基于负载的协议识别主要有采⽤固定字符串和正则表达式来表⽰协议特征两种⽅式。这也是现在最常⽤的⽅式,⼤部门应⽤可以利⽤这种⽅式识别。
采⽤固定字符串的⽅式过于笨拙,在这不在做介绍,其实可以把它理解成基于正则表达式的⼦集。正则表达式⽐固定字符串具有更强的表达能⼒和更好的灵活性,采⽤正则表达式代替固定字符串表⽰协议的特征成为研究的热点。
正则表达式:⼜称正规表⽰法、常规表⽰法(:Regular Expression,在代码中常简写为regex、regexp或RE)。正则表达式使⽤单个字符串来描述、匹配⼀系列符合某个句法规则的。
正则表达式语法学习⽹站:msdn.microsoft/zh-cn/library/ae5bf541(VS.80).aspx
上⾯说的相对⽐较全的正则表达式,下⾯这张表相对来说⽐较常⽤的:

本文发布于:2023-06-27 12:48:49,感谢您对本站的认可!

本文链接:https://patent.en369.cn/xueshu/136889.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:协议   识别   分析
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图