<h4 style="margin-top:30px;margin-bottom:15px;color:#000000;font-weight:bold;padding:0px;font-family:Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, "" content"=""> 这篇文章主要针对新手蓝队做监测的小伙伴们。很多小伙伴在做监测的时候只会单纯的看告警,封ip,而对告警的流量包并不太会分析。这篇文章就带你彻底解决不会分析流量包的烦恼。
关于OSI网络模型的由来,这里不过多解释,感兴趣的小伙伴可自行学习。这里仅针对数据包中常见的TCP/IP 5层模型的数据包进行分析。
上图表示一个数据包从上层到下层封装的完整结构。
数据链路层是网络模型中的第二层!
数据链路层的传输单元:帧
数据帧主要负责在(以太网Ethernet == 局域网LAN == 内网)中进行通信。
数据链路层的协议:MAC子层协议
MAC子层协议:封装帧头和帧尾
帧结构的构成:MAC子层+上三层数据+FCS
MAC子层头部包含:目标MAC地址(6字节) 源MAC地址(6字节) 类型(2字节)
类型的值:作用是区分上层协议的! 0x0800-->IP协议 0x0806-->ARP协议
类型字段的作用:区分上层协议,0806代表上层协议是ARP协议,0800代表上层是IP协议
帧尾:FCS(Frame Checksum Sequence)=帧校验序列,长度4个字节 FCS作用:对整个帧进行序列校验,可以检测帧在传输过程中是否发送错误 一个帧是有最大承载能力限制的。一个帧的最大承受能力叫MTU值=1500
帧结构最终效果图:
2.1、IP包结构
首部长度:来标识IP包头的长度,20-60字节
TTL:Time To Live
生存时间,单位为跳数,作用是防止数据包再网络中永久的循环。TTL范围:1-255 windows系统TTL一般为128 linux系统一般为1-128之间,如56,64 如果返回地址是255/254,说明这个地址是在企业级的路由器上,也就是网关
协议号:作用是区分上层协议的,6代表TCP,17代表UDP,1代表同层的ICMP协议
总长度:上三层的总长度/IP包的总长度 当总长度超过1500字节,需要进行IP分片
标识符:区分不同的IP分片数据流!
标志:xxx共3位。第一个x,国际组织没有启用该位功能,保留位。 第二个X,为0代表进行了IP分片 为1代表没有分片 ·· 第三个x,为1代表还有后续数据,0代表最后一个数据了! 段偏移量:决定了IP分片的先后顺序!
TCP协议概述
TCP协议属于4层传输层协议! 传输层包括两大协议:TCP 和 UDP
TCP与UDP协议的区别
TCP协议:面向连接的服务(重传机制)、可靠传输数据、速度慢 UDP协议:无连接服务、不可靠、速度快· TCP与UDP的共同作用:通过源与目标端口号,来完成进程到进程的通信
TCP段结构
源端口号:一般客户机的源端口号都是随机的,且一般都是50000以上!
目标端口号:一般服务器上的目标端口号都是固定,如80、443、23、53
端口号范围:0-65535 0与65535有特殊用途、一般1-65534可用 1-1024区间基本被国际标准组织占用分配给了固定的服务器、如20、21、80、443、53、67、68等等
序号:seq,对每个报文字节的编号
确认号:ack,确认对方的报文
六位控制位:
SYN:请求建立连接位!!
FIN:请求断开连接位!!
RST:(Reset)重置位!!(强制断开位!!)
ACK:确认控制位!当ACK=1时,ack有效,当ACK=0,ack无效
PSH:push,推送位!当PSH=1时,代表有上层数据,需要推送数据到上层,反之为没有!
URG:urgen,紧急位!URG=1时,代表紧急数据需要第一时间推送给应用层,需要配合紧急指针完成工作!
窗口大小windows:用来做流量控制!类似与水龙头!
校验和:校验4+5层数据,也就是校验数据段!!!
TCP三次握手
UDP段结构
UDP包头长度:8个字节
UDP长度字段:代表4+5层数据的总长度
UDP校验和:校验4+5层数据,也就是校验数据段!!!也可能本字段是是UDP协议唯一的可靠机制!
通过查看流量包,发现开头很多arp协议的流量。通过info字段查看,这似乎是一个扫描的数据包。不熟悉ARP协议的可以在网上自行学习。
通过arp.opcode==2筛选出攻击者扫描到在线的主机
在arp的数据包中,应答包的opcode字段为2。 我们发现有三台主机进行了应答,分别为192.168.43.128、192.168.43.130、192.168.43.254.
因为tcp进行连接的时候会有一个tcp三次握手,tcp三次握手为客户端先向目标发送一个syn=1,如果目标收到后则会回复一个syn=1和ack=1,然后客户端收到后回复一个ack=1。通过这一点,我们可以利用目标机的回复包进行筛选, tcp.flag.ack==1 && tcp.flags.syn==1。
选择字符串搜索,可以搜索关键字password活着user或者Success等。 我这里搜索230,在ftp中,如果登陆成功,服务器会返回230状态码
向上查找数据包,查看是用什么用户名和密码登录的。注意:ftp为明文传输,所以能够查看。
通过数据包发现,ftp登录的用户名为test,密码为test123.
本篇文章简单的介绍了一下wireshark的使用,和一些简单的流量分析方法,希望大家有所收获。