实例介绍
特征码是每一钟协议中特有的固定的编码。特征码的用处是帮助我们识别每一种 协议的包。
简单介绍一下tcp包头的内容: Source port:源端口 Destination port:目的端口 Sequence number:序列号 cr length:头长度 Fags:标记位,占8bt位 0 Congestion window Reduced(CWR): Not set 0 ECN-Echo: Not set 0 Urgent: Not set 0 Acknowledgement: Not set 0 Push: Not set Reset: Not set syn: set 0=Fin: Not set 经常用的位就是ack位,symn位和fin位。当ack=0,syn=1时,这就是一个请求 包,很显然这是一个请求包。 Window size:窗口值 Checksum:检验和 Options:选项 第二个tp包: “121、vuu,t,p,DLrt,dv叭-d中t2,bV,h,L,Lev sourceporthttp(so) Destinat ion port: avocent-ads ap (3871) [Stream index: 0] sequence number:o (relative sequence number) Acknowledgement number: 1 (relative ack number) Header length: 28 b f Flags: 0x12 (SYN, ACK) window size: 5840 e checksum: ox89da [validation disabled] (8 bytes) 这是建立连接时的第二个tp包,ags位ack==1,syn==1代表这是一个应答包 Ack确认号为1代表收到了序号为0的包,期望收到下一个包的序号为1。 第三个tp包: Source port: avocent-ads ap (3871) Destinationporthttp(80) [stream index: 0] sequence number: 1 (relative sequence number Acknowledgement number: 1 (relative ack number Header length: 20 bytes ±F1ags:0×10(ACK) window size: 65535 t checksum: Oxcdse [validation disabled] [SEQ/ACK analysis] Sequence number为I,代表发送包的第一个字节的序号为1,ack确认号为1代 表期望收到对方下一个包以1为序号开始。Ack标记号为1表示确认收到了对方 发来的包。 U 3 User Datagram Protocol, Src Port: 11500(11500), Dst Port: rrilwm (1695) Source port: 11500(11500 Destination port: rrilwm (1695) Length: 1084 t Checksum: 0x6bd2 [validation disabled] Udp首部很简单,就一个源端口,目的端口,携带数据长度和校验和。注意携带 数据长度是不包括首部在内的。 特征码分析方法介绍 特征码 特征码是每一钟协议中特有的固定的编码。特征码的用处是帮助我们识别每一种 协议的包。具体到我们公司的产品就是用来搞流量监控 要找特征码,我们必须清楚明白什么是特征码。 Ud 举例来说,我们要分析pps的特征码。下面是我们抓取到的pps的包: 800522,551081 192.168,1,38 123.161,156.254 Source port: 11500 Destination port: 800622.553569 111.72,197,49 192.168.1.36 source port: dragonfly Dest ination pc 800722.553769 192.168.1.38 111.72.197.49 Source port: 11500 Destination port: 800822.55619B 123 67,44 192.168,1.38 Source port; netrek Destination port 800922.556332 192.168.1.38 801022.560039 1a)168.1.38 source port: 11500 Destination port 123.151,144.93 801122.560130 192.168.1.38 source port: adobeserver-2 Destinat ic 801222.560189 192.1 123.151,144.93 Source port: adobeserver-2 Desti natic 801322.560216 192.168.1.38 123.151,144.93 Source port: adobeserver-2 Destinat ic 01422.560243 192,168.1,38 123.151,144.98 801522.564385 220.173.190.146 801622.564625 192,168,1.3c36 source port: altav-remmct Destinatio 220.173.190 source port: 11500 Destination port: 801722.566841 110.182.132.147 192.168.1.38 ource port: 11305 Destination port: 801822.567038 192.168,1.38 110.182.132.147 source port: 11500 Dest ination port: 123.163.67,44 192.168,1.38 source port: netrek Dest nation port: pps传输数据用的是udp协议。抓到的每一个包的内容如下 日ε能es2 9 bytes on wire" 9 bytes captur ed) t Ethernet II, src: 90: e6: ba: 3C: 88: 01(90: e6: ba: 3C: 88: 01), Dst: Hangzhou_65: bc: 38(00: Of: e2: 65: bc: 38) Internet protoco1,src:192.168.1,38(192,168.1,38),Dst:123.151.144.93(123.151,144,93) e user Datagr am protocol, src Port: adobeserver-2(1103), Dst Port: fprams (4122) e Data(87 bytes) 其中有p头,udp包头,和 payload数据字段,也就是data字段。我们要找的特 征码也就是在data字段。通过多个包比较我们就可以统计出特征码。比如通过 查看5个udp包的data字段为 bytes lf00430000d200c6968 Offfffff6866f43362f6df3017ff6 beaecfo02ab9a327580 I f00430000d200c69680ffffffff56866f43362f6df3017ff6fbeaecfcO2ab9a327580 lf00430000d200c69680 ffffffftse6866f43362f6df3017ff6 beaecfc02ab9a327580 79bytes 4F0043327lFF00000000001456866F43362F6DF30l7FF6FB. 133bytes 8100430000820056866f43362f6df30l7ff6 fbeaecfc02ab9a32750002010000000b0064 0l0c000。。。 从上面的16进制的包中可以发现他们都有共同的特征0043,那么0043就可以 作为pps的特征码的一部分。通过深入的查找还可以发现其实前两个字节也是有 规律的,那就是 35=116+f+479=4*16+f+4133=8*16+1+4 那么这也就是ppS的特征码的一部分。 再往下看我们发现长度大于256的包,和上面的特征不符,他的包为: 1123 5f04430000d9004cea84feffffffffl 100000056866f43362f6df3017ff6fbeaecfco2aba 32 750。。 106l 2104430000A200010BAAA67 FFFFFFFFF3E000000030000C8 很显然1123!=5*16+f+41061!=2*16+1+4通过比较发现 1123=5*16+F+4*256+41061=2*16+1+4*256+4而之前统计的包也完全符合 这样的规律,比如35=1*16++4+0*256 所以吏加准确的特征码应该是len= payload[O]+ payload[]*256+4 综上所述:我们找到的一条pps的特征码为 len=payload[o]+payload[ 1] 256+4&&payload[2 ==43&&payload[ 3==0 当然对于携带数据的tep包也可以采用同样的方法进行査找特征码。 http 对于 payload字段是htp包的协议,我们的协议判别方法有很多种。 首先让我们来学习一下htp包的结构 还是通过实例抓包来学习: 1)一种最简单的识别方法就是通过关键字来识别: 如下一个包 3 Hypertext Transfer Protoco l GET/vod/.26%CE%c0%9%A%B2%8F‰83%6%A1‰80%8 Host: pl. pps tvr\n Accept:“/rn User-Agent: PPStream-Client/1.o\rn r\n 把每一行称为一个字段的值。 Giet字段值是用来传送请求的。 Host字段表示的是服务器的地址。从中我们看到有pps,于是判定host字段值为 pL. pps.tv的包是pps协议的包。 User- agent字段表示的是用户代理。从中我们看到用户代理是 ppstream-client,很 显然这是一个ps的客户端,于是判定 user-agent字段值为 ppstream-client的包 是pps协议的包。 2)通过hp特征序列来判断协议 通过htp特征序列来判断协议的前提是你已经知道了这个包是属于哪个协议 我们抓的包如下 B Hypertext Transfer Protocol + get/getFile Http/1.1rN Accept: */*r\n x-VERSION: 1r\n X-SRCUSERTYPE: 1r\n X-5 RCUIN:409037887rn X-D5TUN:45740557rn x-DSTUSERTYPE: 1r\n X-IMAGE TYPE: 1r\n x-5IGNSTRING: 67151A09A2 5FD3AD3CDA7 FA2FECBF7B3ASE5D067A002FF65r\n X-FILEHASH: D63F6BE35FE960F54CC89D4DB0AD6580\r\n User-Agent: Mozilla/4.0(compatible; MSIE 6.0; windows NT 5. 1)\r\n Host:183.60.13,212r\n Pragma: no-cacher\n Arn 我发现了x- srcuin:409037887,这是我的q号码,于是我知道这个htp包是 q协议的包。但是我不能把409037887作为特征码,因为这是个具体的号码而 不具有抽象性,他会经常的变化。那么应该怎么样来判断这个包属于q协议呢? 这就用到了htt序列。通过多个包的比较你就会发现,只有q会用这样的http 序列: get/accept/x-versio/x-srcusertype/x-srcuin/x-dstuin/x-dstusertype/x-imagetype/xsignsr ing/x-filehash/user-agent/host/pragma 于是我们就可以将这样的序列作为qg协议的一个特征码。 3)迅雷伪装ie下载 我们先抓取迅雷下载的一个hp包 Hypertext Transter Protocol e Get/GetinTerfacestate. php?timestamp-1281151592984 htTp/1. 1rIn Accept: "/r\n Accept-Language: zh-cn'r\n Referer:http://192.168.1.201/desktop.phprn Accept-Encoding: gzip, deflate\r\n user-Agent:Mozilla/4.0(compatible: MSIE 6. 0; windows NT 5. 1: SVl: Moz111a/4. 0(compatible; MSIE 6. 0: windows NT 5.1 Ho5t:192.168.1.201rn Connection: Keep-Aliver\n cookie: 2DEDebuggerpresent-php, html, php3; PHPSESSID-dr6cbpo9r1s6a44n2f11v998c7rin 很显然我们无法通过关键字得知这个包是不是迅雷下载的包还只是普通的网页 流浪。之所以把他称为伪ie是因为迅雷的用户代理也就是 user-agent字段是ie 的标志,可以从包中看出是msie6.0。 像这种情况,我们当然可以通过上述的htt序列来判断 通过仔细的统计比较,你会发现,迅雷的 user-agent字段和i还是有所区别的。 迅雷的user- agent字段经常为: User-Agent: Mozilla/4.0(compatible; MsIE 6.0; Windows Nt5.1; SVI;. NET CLR 1.1.4322; NET CLR20.50727) le的user- agent字段经常为: User-Agent: Mozilla/4.0(compatible; msIE 6.0: Windows Nt 5.1: SVl: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SVI);. NET CLR 2.0.50727; InfoPath. 2) 这样我们也可以把迅雷的user- agent字段值作为特征码。 通过以上三种特征码的查找方法,基本上已经可以找出大部分协议的特征码。 但还有一些包不是那么容易识别,这样我们就需要对多个连接包来进行分析识 别 2行为分析识别 例如迅雷下载,倘若采用udp协议进行下载,则本地软件会采用相同端口多i 进行下载,通过抓包我们可以发现这些 192.168.1,35 113.70,91.97 UDP Source port: 21871 Destinat ion port: 36345 125.86.28.43 192.168.1.35 source port: 7881 Destination port: 21871 195 116.54.119.238 estination 19 192.168.1.35 116.54.119.238 UDP Source port: 21871 Destination port: 14281 119.137.104.96 192.168.1.35 Destinat ion port 119.137.104.96 192.168.1,35 UDP source port 3 Desti nat ion port: 192.168.1,35 119.137.104.96 UDP source port: Destination port: 192.168.1.35 125.86.28.43 UDP source port Destination port 113.70.91.97 192.168.1.35 UDP source port Destination port: 21871 125.86.28,43 192.168.1,35 Source port: Destination port: 21871 192.168.1.35 125,86.28.43 Source port: 21871 Destination port: 7881 192168.1.35是我本地机器的,对于不同的i16.54119.238和183.16,18893 却采用相同的端口进行通信,据此可以判定他们其实是相同协议的包,当然仅凭 此还不能判定他就是p2p下载,要判定其为p2p下载还需要对其连接数和流量 进行统计。 如果迅雷采用tep协议进行下载,为了加速下载,他会采用相同ip多端口进行下 载。 ⊥⊥,⊥D∠.D,)U ,⊥0。,⊥,22 nIIP tont I lon or nHn-nI It LI I Ic 192.168.1.35 211.162.62.50 Http Get/Down/qq20105p1. zip Http/1.1 192.168.1.35 211.162.62.50 Http Get/Down/qq20105p1. zip Http/1.1 192.168.1.35 211.162.62.50 Http Get/Down/qq20105p1. zip Http/1.1 192.168.1.35 211.162.62.50 Http Get/Down/qq2010sp1. zip Http/1.1 192.168.1.35 211.162.62.50 Http Get/Down/Qq20105p1. zip Http/1.1 「, mn了1 从上图中,你可能会误以为,192.168.1.35和211.162.62.50只是一个连接,其实 不然,他们是5个连接,有5个不同的端口。因此我们也可以把get字段子相同, ip地址相同,但端口号不同作为判断迅雷协议的一个特征。 在分析特征码时,分析比较是非常重要的,比如我们分析迅雷协议,先要比较迅 雷的包来找共同点,然后还要和其他的htp包相比较来找不同点,这样找出来的 才能算是准确的特征码,否则很可能和其他的包相混淆。 程序模块的更新 相关程序: 在协议文件中添加你所找到的特征码 在 Ipq -main.c中添加匹配流程 Ui ipq _protocols_osdpi. h, ipq _protocols. h, Makefile 【实例截图】
【核心代码】
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论