找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 29853|回复: 38

[layer7] 怎么利用layer7来进行应用层拦截 By sullybear

  [复制链接]
发表于 2009-12-16 23:21:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
怎么利用layer7来进行应用层拦截        By sullybear

panabit提供了一个绝佳的应用层流控工具,由于编写了私有的应用层描述算法,因此识别和流控效果远远好于目前所应用的各类开源方案,同时由于采用了端点ip记录并跟踪的技术,使得流控性能提升非常大。本人非常赞同在P2P流控控制领域使用免费的panabit。
但是在非流控领域,所谓的流控想达到的效果其实也就是拦截想达到的效果,举例来讲,对股票软件进行流控的本质目的是想对股票软件进行控制、拦截。相信没人会给根本不占带宽的股票软件分配一个流控通道,因此想达到拦截的效果,使用ros自带的L7来执行可以起到节省设备的效果。
言归正传,利用layer7也许已经无法正确识别网络中的各种复杂流量,但是layer7还是可以正常并准确地对某种应用起到DROP的效果。关键是在于DPI算法的其他应用,关键连接特征识别。
Layer7只利用了DPI算法的其中一种算法,而ipp2p则用到了两种。但是灵活运用DPI则要看对于网络连接的理解,例如,下载工具可以进行应用层加密,但是下载工具在连接服务器的过程中总有初始的连接是固定的,要么传输的是明文,要么传输的是对称密钥。
前一篇文章我讲述了如何正确理解连接过程,那么接下来我将对这个关键连接特征的识别进行详细说明。
首先说明下什么是关键特征连接,打个好比方那就是没有A连接,那么就不会有B连接,接着整个通讯过程不会被建立起来,这样达到了想要的DROP效果。比如:网际快车(flashget)的多资源请求过程(对于P4S的POST过程),OK,只要拦截这个过程,快车就变成了ie另存为。
同理,很多协议存在握手过程,只要拦截了初始握手过程,接下来基本都无法进行通讯,协议加密的原理是在握手过程中交换密钥,那么其实握手过程也成了layer7拦截应用的唯一途径。
于是来看看迅雷,同理于快车,不用在做任何解释,抓过迅雷包的人就明白迅雷是怎么做到多线程请求不同资源的,限制这个过程,迅雷就变成了ie另存为,至于迅雷私有的peer2peer协议,layer7官方给出了高人的表达式,至今还可以利用。说道迅雷,则一定要理解迅雷的工作原理,先不理迅雷的bt和电驴下载,迅雷可以利用ftp、http和迅雷私有协议进行通讯。其中http下载在请求后,迅雷客户端能利用多线程对不同的大量资源同时进行请求,这也是迅雷为什么拖带宽的原因。
再来看带宽浪费的大户网络电视,pplive、ppstream,这些个最狠的其实还不算下载,更是浪费了宝贵的上行带宽,抓包就能看到不断对外发送数据。Pplive是目前我测试过的唯一无法做到关键特征拦截的客户端,因为协议复杂,我测试了一段时间后不愿意在继续分析各种频道的资源来源。但正如我前面所说,无论怎么样的连接,加密也好,伪装也罢,总有一个过程是会暴露layer7特征的,pplive的特征来自于peer和peer之间通讯控制消息,请亲自去抓包分析。
有人说抓包出来一堆数据我怎么分析,头都乱了。好,俺就在这里以协议相当复杂的pplive作为代表,来讲述下怎么分析应用层数据包。首先,请理解pplive 的通讯过程,具体可以参考本人上一篇文章。其次,请用wireshark抓包,时间可以长点,会得到很长的一大堆数据包。在数据交换的那一部分(98%的包都是数据交换部分,注意是UDP),随便选择一条,并追踪该节点(不好意思请panabit原谅)。于是你就能得到本地和该ip的通讯包了,自然也包括我前面所说的关键特征包(握手包)了,呵呵,接下来识做了吧,再随便选择节点ip再次进行追踪,几个ip分析下来,关键特征就被你抓住了,恭喜你,你已经抓出了能DROP这个pplive的特征连接了,剩下的工作就不用我交代。当然也有可能,本地和该peer的通讯是没有传输控制消息(握手包)的,不要紧,这个时候就检查这个peer的ip来源,也就是本地和谁通讯而得到了这个节点peer的ip的。方法非常简单,在第一个握手包以前找,不出以外,你就能找到本地和某一节点peer的通讯,传输内容为一堆加密后的数据,我敢在这里说那堆加密的数据就是这么多节点的ip。(想理解这个过程,请查看网上牛人破解迅雷加密程序的那篇文章)。于是,照旧,找出本地与这个通讯节点的关键特征,其实就是本地与服务器或者中心节点的连接。也许你会说,如果这个过程也没有关键传输特征呢,那么我只能说恭喜,你抓的是emule客户端和ED2K超级节点之间的通讯过程。
讲完了抓包分析的方法,接下来说下怎么利用分析得出的数据编写正则表达式,正则表达式的教程就不说了,网上有的是教程,请各位随便看。我在这里再强调,假如不能确定某个非常像关键连接的连接是否就是能起到DROP效果的关键连接,则需要进行测试才能通过。测试方法介绍:1、从短到长。表达式特征要一个一个确定,假如你确定了第一个字符,那么你已经完成了一半了,接下来会顺风顺水。2、debug。比如某个位置的特征为多个字符的随机表现([ab]),那么就需要进行debug来确定所有的可能性。3、灵活的用字符符号(.?+),debug过程发现正则表达式很难确定,这时则需要灵活随机使用符号来填充替代,举个例子就是qq.pat,请自己去参考。
洋洋洒洒一堆文字,只是把自己的经验给写了出来,希望能对大家起到一点帮助。我始终认为,多抓包、多理解连接过程才是编写layer7表达式的关键。

                                                                                                                Liyong  2009-12-16

评分

参与人数 1铜板 +6 收起 理由
bobwalker + 6 文章不错。

查看全部评分

routeros
 楼主| 发表于 2009-12-16 23:22:33 | 显示全部楼层
不知道为什么添加附件不成功
routeros
回复

使用道具 举报

发表于 2009-12-18 00:33:35 | 显示全部楼层
顶楼主,强烈建议楼主多发些L7 造福大众!!!
routeros
回复

使用道具 举报

发表于 2009-12-18 22:32:41 | 显示全部楼层
顶楼主.写的不错.
routeros
回复

使用道具 举报

发表于 2009-12-19 00:55:57 | 显示全部楼层
恩恩 路过 阅了
routeros
回复

使用道具 举报

发表于 2009-12-19 02:31:21 | 显示全部楼层
大家一起研究l7限速
routeros
回复

使用道具 举报

发表于 2009-12-20 00:48:50 | 显示全部楼层
偶有些地方还是不懂。还要多学习。
routeros
回复

使用道具 举报

发表于 2009-12-21 12:37:15 | 显示全部楼层
枪手 滚!
routeros
回复

使用道具 举报

发表于 2009-12-22 01:18:32 | 显示全部楼层
楼上叫 什么 枪手 滚的 。你用这些词前,请了解这篇文章的重量,并对PA有所了解。
做到知己知彼,方能显示你的本事。

在这里,相信没人敢这样做,人贵有自知之明,知己知彼方为上,要不就是傻鸟一个。
我尊重PA的人。
routeros
回复

使用道具 举报

发表于 2009-12-22 23:38:38 | 显示全部楼层
楼主加油!
routeros
回复

使用道具 举报

发表于 2009-12-23 17:31:24 | 显示全部楼层
写得不错!
routeros
回复

使用道具 举报

发表于 2010-1-4 14:01:14 | 显示全部楼层
写了一堆没用的东西
routeros
回复

使用道具 举报

发表于 2010-1-10 00:53:15 | 显示全部楼层
太难得了,这个工作好辛苦哟。
routeros
回复

使用道具 举报

发表于 2010-1-16 23:32:12 | 显示全部楼层
不懂
routeros
回复

使用道具 举报

发表于 2010-1-31 20:40:30 | 显示全部楼层
楼主写的东西,要看懂估计是要些基础的。我没看懂。
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-12-25 02:52 , Processed in 0.183762 second(s), 17 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表