wireshark TCP状态转换+HTTP抓包分析+提取木马SNORT规则

时间:2024-04-06 21:00:03

这里把TCP三次握手四次挥手+HTTP抓包分析放在一起分析。

说是HTTP,其实并不打算真的就协议层面去分析HTTP。因为那又是一个可以另外水一篇博客的例子了。


Tcp状态图+HTTP抓包分析


在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,


SYN表示建立连接, 

FIN表示关闭连接,

 ACK表示响应,

PSH表示有 DATA数据传输, 

RST表示连接重置。


首先做一个分享:两个链接,说的挺全的,一个是socket部分的tcp,还有一个是TCP Client / Server示例,我就不再堆砌内容了。


OCKETS - SERVER & CLIENT - 2017

http://www.bogotobogo.com/cplusplus/sockets_server_client.php

TCP Client / Server示例

https://notes.shichao.io/unp/ch5/




以下是tcp 11种状态转换图RFC793

wireshark TCP状态转换+HTTP抓包分析+提取木马SNORT规则

很乱对吧,我反正这么觉得。。。


TCP连接过程更能“简洁”地说明问题



wireshark TCP状态转换+HTTP抓包分析+提取木马SNORT规则

   可以看到

  1. 客户端client独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 (4)CLOSING (5)TIME_WAIT 。
  2. 服务器server独有的:(1)LISTEN (2)SYN_RCVD (3)CLOSE_WAIT (4)LAST_ACK 。
  3. 共有的:(1)CLOSED (2)ESTABLISHED 。


客户端
SYN-SENT -在发送连接请求后等待匹配的连接请求;
FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT-2 - 从远程TCP等待连接中断请求;
TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认;
CLOSING -等待远程TCP对连接中断的确认; (在连接过程图中并没有出现,是比较特殊的状态,可以回溯到tcp 11种状态图)

服务器端

LISTEN - 侦听来自远方TCP端口的连接请求;
SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认;
CLOSE-WAIT - 等待从本地用户发来的连接中断请求;
LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认;

共有的
ESTABLISHED- 代表一个打开的连接,数据可以传送给用户;
CLOSED - 没有任何连接状态;


配合上我们的抓包分析

wireshark TCP状态转换+HTTP抓包分析+提取木马SNORT规则


注意:

MSS这个可选项告知对方本端能够接收的最大报文(当然,这个大小是TCP净荷的大小)

TCP segment of a reassembled PDU,即根据MSS重组的包。

可以看到重组的包的大小。

wireshark TCP状态转换+HTTP抓包分析+提取木马SNORT规则



对比两次get请求,可以发现第二次请求的是图片剩余的部分。

wireshark TCP状态转换+HTTP抓包分析+提取木马SNORT规则



提取木马SNORT规则


在掌握了抓包以后,我们可以开始更深入地分析流量包了。

比如通过pcap包分析木马。


从pcap找规则提取方法:

1)  搜索引擎了解木马介绍和使用方法及是否有现成的snort或固定特征;

2)  pcap包中搜索木马英文名、中文名、版本信息;

3)  pcap包搜索域名方法,正则表达式([a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+)匹配pcap中域名信息;



这里我说的比较简单。因为设计业务内容的就不再赘述了。


通过运行客户端 和 服务器端的可执行文件,进行抓包,并对流量进行统计

wireshark TCP状态转换+HTTP抓包分析+提取木马SNORT规则


可以看到木马对应的流量信息(包括端口等等):

wireshark TCP状态转换+HTTP抓包分析+提取木马SNORT规则


之后可以通过DPI更细致地发现特征:(之后按照规则写成snort规则吧)

wireshark TCP状态转换+HTTP抓包分析+提取木马SNORT规则