实验内容
- 学会安装使用自由软件SNORT
- 截获以太网数据包,并描述以太网数据包的各层的帧结构。
- 截获ARP,TCP协议数据包并进行分析
实验步骤
实验需要两个主机A(192.168.1.104)和B(192.168.1.105),A访问B,B进行TCP和ARP抓包,本实验报告为抓包主机B视角。
环境配置
主机B需要进行环境配置:设置账户密码、打开FTP站点
设置账户密码
控制面板——用户账户——设置密码
打开FTP站点
控制面板——管理工具——Internet信息服务——FTP站点——属性——用户名——浏览——查找账户——选择ligong
——应用——确认
A访问B
ftp
open 192.168.1.105
- 输入用户名(
ligong
)和密码(123
,也就是刚才设置的密码) - 一些操作,如
dir
quit
,退出,断开连接
B进行抓包
使用Snort
软件进行抓包,进入D:/snort/bin
目录。
输入snort -dev -l /snort/log
,开始抓包,按下Ctrl+C
停止抓包。
如果主机B抓到了A发出的FTP请求,在D:/snort/log
目录下可以找到文件夹192.168.104
,在其中可以看到名如TCP_1980-21.ids
的文件,21为端口号。
数据包分析
ARP抓包失败,原因未知,其他同学似乎也未抓到,抓到的都是3号机器广播的ARP包。下边进队TCP数据包进行分析。
TCP数据包分析
-
TCP是面向连接的协议,所以TCP运输连接的建立和释放时每一次通信中必不可少的过程。
-
运输连接分为三个阶段:连接建立、数据传送、连接释放。
每一次握手大概包括以下内容:
第一行数据包括了时间戳、源物理地址、目的物理地址、类型、长度;
第二行数据包括了源IP、目的IP、TCP、TTL、TOS、ID、IP长度、Dgm长度;
第三行数据包括SYN位、ACK位、序号、确认号、窗口大小、TCP长度;
第四行信息包括TCP选项等。
以下主要选取TCP数据包中连接建立(三次握手)和连接释放(四次握手)的相关内容进行分析。
连接建立
01/01-01:40:15.948470 0:16:EC:D2:50:7D -> 0:19:21:57:7:85 type:0x800 len:0x3E
192.168.1.104:1980 -> 192.168.1.105:21 TCP TTL:128 TOS:0x0 ID:11743 IpLen:20 DgmLen:48 DF
******S* Seq: 0x75C7623D Ack: 0x0 Win: 0xFFFF TcpLen: 28
TCP Options (4) => MSS: 1460 NOP NOP SackOK
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
上边为连接建立的第一次握手,可以看到数据包从主机A(104)发往主机B(105)的21号端口;
SYN位设置为1;
序号为0x75C7623D
。
01/01-01:40:15.948524 0:19:21:57:7:85 -> 0:16:EC:D2:50:7D type:0x800 len:0x3E
192.168.1.105:21 -> 192.168.1.104:1980 TCP TTL:128 TOS:0x0 ID:11647 IpLen:20 DgmLen:48 DF
***A**S* Seq: 0xF085016 Ack: 0x75C7623E Win: 0xFFFF TcpLen: 28
TCP Options (4) => MSS: 1460 NOP NOP SackOK
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
上边为连接建立的第二次握手,可以看到数据包从105发往104,
SYN位设置为1;
ACK位设为1;
序号为0xF085016
;
确认号为0x75C7623E
,即确认号为上一次握手序号+1的值。
01/01-01:40:15.948661 0:16:EC:D2:50:7D -> 0:19:21:57:7:85 type:0x800 len:0x3C
192.168.1.104:1980 -> 192.168.1.105:21 TCP TTL:128 TOS:0x0 ID:11744 IpLen:20 DgmLen:40 DF
***A**** Seq: 0x75C7623E Ack: 0xF085017 Win: 0xFFFF TcpLen: 20
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
上边为连接建立的第三次握手,可以看到数据包从104发往105,
ACK位设为1;
序号为0x75C7623E
,即序号为上一次握手的确认号,本质是A上一次向B发出的请求的序号+1;
确认号为0xF085017
,即确认号为上一次握手序号+1的值。
数据传送
连接释放
注意:这里是服务器主动释放连接,与教材上写的客户机主动释放情况不同。
01/01-01:40:25.769622 0:19:21:57:7:85 -> 0:16:EC:D2:50:7D type:0x800 len:0x36
192.168.1.105:21 -> 192.168.1.104:1980 TCP TTL:128 TOS:0x0 ID:11666 IpLen:20 DgmLen:40 DF
***A***F Seq: 0xF085092 Ack: 0x75C7625B Win: 0xFFE2 TcpLen: 20
上边为连接释放的第一次握手,可以看到数据包从105发往104,
ACK位设为1;
FIN位设为1;
序号为0xF085092
;
确认号为0x75C7625B
。
01/01-01:40:25.769759 0:16:EC:D2:50:7D -> 0:19:21:57:7:85 type:0x800 len:0x3C
192.168.1.104:1980 -> 192.168.1.105:21 TCP TTL:128 TOS:0x0 ID:11763 IpLen:20 DgmLen:40 DF
***A**** Seq: 0x75C7625B Ack: 0xF085093 Win: 0xFF84 TcpLen: 20
上边为连接释放的第二次握手,可以看到数据包从104发往105,
ACK位设为1;
序号为0x75C7625B
,即序号等于上次握手确认号;
确认号为0xF085093
,即确认号等于上次握手序号+1。
01/01-01:40:25.771844 0:16:EC:D2:50:7D -> 0:19:21:57:7:85 type:0x800 len:0x3C
192.168.1.104:1980 -> 192.168.1.105:21 TCP TTL:128 TOS:0x0 ID:11764 IpLen:20 DgmLen:40 DF
***A***F Seq: 0x75C7625B Ack: 0xF085093 Win: 0xFF84 TcpLen: 20
上边为连接释放的第三次握手,可以看到数据包从104发往105,
ACK位设为1;
FIN位设置为1;
序号为0x75C7625B
,即序号等于上次握手序号;
确认号为0xF085093
,即确认号等于上次握手确认号。
01/01-01:40:25.771894 0:19:21:57:7:85 -> 0:16:EC:D2:50:7D type:0x800 len:0x36
192.168.1.105:21 -> 192.168.1.104:1980 TCP TTL:128 TOS:0x0 ID:11667 IpLen:20 DgmLen:40 DF
***A**** Seq: 0xF085093 Ack: 0x75C7625C Win: 0xFFE2 TcpLen: 20
上边为连接释放的第四次握手,可以看到数据包从105发往104,
ACK位设为1;
序号为0xF085093
,即序号等于上次握手确认号;
确认号为0x75C7625C
,即确认号等于上次握手序号+1。