Monday, September 14, 2009

使用wireshark了解HTTP的数据包

1. 之前做SA的时候, 出现过挂马现象(其实不是服务器的问题), 那时不知道怎么分析. 结果...不理!!
2. 从书上了解过HTTP的数据, 但没有检测过

使用wireshark, 从网络帧上了解数据包与上层HTTP数据. 会有一些新的, 有意思的事情被发现的


上面的图是访问www.google.com抓出的包. 还有其它包没有显示, 这里只分析GET / HTTP/1.1这个请求

GET /请求被分成三个帧:16, 18, 20. 这种帧在Info栏被称为"TCP segment of a reassembeld PDU". 第16, 18帧都带了1418bytes的, 如下:

看到图片最后: TCP segment data (1418 btyes )

重要: 如果分开去分析16, 18, 20这三个帧, 是很难出整体数据的全貌的.
当然, 要硬查看原始数据也是可以的:

上面就是frame16的data, 开始是HTTP头部数据. 如下是frame18的data:

frame18的data是二进制数据!, frame20也是二进制数据.
为什么? 因为HTTP包的数据部分可以是gzip数据!(下面分析HTTP头部时可以看出来)

如果分析这种被分开的数据包, 其中又包含有二进制数据块是很头大的. 还好, wireshark为大家化简了这种分析!
wireshark会在最后一个TCP包(这里为frame20)进行数据全貌整合, 这种整合只是对于GUI软件显示时出现的, 它并不会对其实数据包进行操作

上图就是frame20的具体情况, 917才是frame20的data部分, 但是还显示出了 Reassembled TCP segments ( 3753 bytes ), 这3753 bytes就是整合出来的

下面看一下整合出来的HTTP请求全貌:

 * 图中蓝色的就是HTTP的gzip数据部分: 二进制数据! 其中Content-Encoding: gzip 就是为什么frame16, 18是二进制数据的原因.

wireshark中也提供了查看HTTP中gzip数据的功能, 在整合帧(frame20)的数据窗口最下面有几个功能:



第一个为本帧的实现数据情况
第二个为整合的整体数据, 这时是有gzip数据的
第三个为解压gzip数据的HTTP情况

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.