网络协议与攻击模拟

网络协议与攻击模拟

一、ARP协议(地址解析协议)

工作原理

  • 将一个已知的IP地址解析为Mac地址,从而进行数据交互
  • 是一个三层的协议,但是工作在二层

工作流程

1、两个阶段

  • ARP请求(request 1)
  • ARP响应(reply 2)

2、ARP协议报文格式

  • 硬件类型:指明了发送方想知道的硬件类型,以太网的值为1;
  • 协议类型:指明了发送方提供的高层协议类型,IP为0800(16进制);
  • 硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
  • 操作类型:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
  • 发送方硬件地址(0-3字节):源主机硬件地址的前3个字节;
  • 发送方硬件地址(4-5字节):源主机硬件地址的后3个字节;
  • 发送方IP地址(0-1字节):源主机硬件地址的前2个字节;
  • 发送方IP地址(2-3字节):源主机硬件地址的后2个字节;
  • 目标硬件地址(0-1字节):目的主机硬件地址的前2个字节;
  • 目标硬件地址(2-5字节):目的主机硬件地址的后4个字节;
  • 目标IP地址(0-3字节):目的主机的IP地址

3、ARP缓存

  • 主要的目的是为了避免重复去发送ARP请求
  • windows操作系统的ARP命令
arp -a #查看ARP的缓存
arp -d #清楚ARP缓存

ARP攻击与欺骗

1、ARP攻击

  • 伪造ARP应答报文,向被攻击的主机响应虚假的MAC地址
  • 当被攻击的主机进行网络通讯时,会将数据交给虚假的MAC地址进行转发,由于虚假的MAC地址不存在,所以会造成被攻击主机无法访问网络

2、ARP欺骗

  • 欺骗网关
    。伪造ARP应答报文,向攻击主机和网络响应真实的MAC地址
    。当被攻击主机进行网络通讯时,会将数据交给真实MAC地址进行转发,从而来截获被攻击主机的数据,这时攻击主机是可以进行网络通讯
  • 欺骗主机
    。伪造ARP应答报文,向攻击主机和网络响应真实的MAC地址
    。当被攻击主机进行网络通讯时,会将数据交给真实MAC地址进行转发,从而来截获被攻击主机的数据,这时攻击主机是可以进行网络通讯

二、ICMP协议(Internet控制报文协议)

1、概念

  • 用于在IP主机、路由器之间传递控制消息(网络通不通,主机是否可达,路由是否可用等)
  • ICMP是属于网络层的协议,封装在传输层与网络层之间

2、 报文格式

输入图片描述
类型(type)
代码(code)

1、类型

。(8 0) 请求
。(0 0) 回显应答(正常应答)
。(3 1) 目标不可达(主机)
。(11 0) 超时,传输期间生存时间为0
。(3 3) 目标不可达(端口)
。(5 0) 重定向(网络)
。(5 1) 重定向(主机)

2、常见的报文

  • 响应请求
    使用ping,请求(type为0),响应(type为8)
  • 目标不可达
    type为3
  • 源抑制
    源抑制充当一个控制流量的角色,它通知主机减少数据包流量,由于ICMP没有恢复传输的报文,所以只要停止该报文,主机就会逐渐恢复传输速率 type为4
  • 超时报文
    类型为11 code为0 传输超时,code为1 重组分段超时
  • 时间戳
    type为13,时间戳请求
    type为14,时间戳应答

3、ICMP重定向

在某些特定的情况,路由器检查到主机使用非优化路由时候,会向主机发送ICMP重定向报文,使主机路由改变


三、TCP协议

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议

1、TCP报文格式

输入图片描述

2、TCP报文字段详解

第一行:源端口和目的端口

  • TCP源端口(Source Port):源计算机上的应用程序的端口号,占16位(bit)
  • TCP目的端口(Destination Port):目标计算机的应用程序端口号,占16位(bit)

第二行:序列号

  • TCP序列号(Sequence Number):占32位(bit),表示本报文段所发送数据的第一个字节的编号。在TCP连接中,所传送的字节流的每一个字节都会按顺序编号。
    • 比如分组的第一个数据包由文件的14个字节数据组成,那么该数据包所添加的序号就是1。
    • 同理,第二个数据包由文件的59个字节数据组成,那么该数据包所添加的序号就是5。

第三行:确认号

  • TCP确认号:占32位(bit),表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。
    • 比如接收端收到由文件14个字节数据+TCP首部组成的数据包后,删除首部提取14个字节数据,返回的确认号为5,即告诉发送端下一次应该发送文件的第5个字节及其之后字节组成的数据包过来。

第四行:(顺序如图从左到右)

  • 数据偏移(即首部长度,Header Length):
    • 占4位(bit),它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远,也就是TCP首部的长度。
    • “数据偏移”的单位是 32 位字(以 4 字节为计算单位),最大1111表示15x4=60个字节,即表示TCP首部最大长度为60个字节,因此TCP首部的“可选字段”部分最多40个字节。
  • 保留字段(Reserved):
    • 占 4 位。为 TCP 将来的发展预留空间,目前必须全部为 0。
  • 标志位字段:
    • CWR(Congestion Window Reduce):拥塞窗口减少标志,用来表明它接收到了设置 ECE 标志的 TCP 包。并且,发送方收到消息之后,通过减小发送窗口的大小来降低发送速率。
    • ECE==ECN(ECN Echo):用来在 TCP 三次握手时表明一个 TCP 端是具备 ECN (显式拥塞通告)功能的。在数据传输过程中,它也用来表明接收到的 TCP 包的 IP 头部的 ECN 被设置为 11,即网络线路拥堵。
    • URG(Urgent):表示本报文段中发送的数据是否包含紧急数据。URG=1 时表示有紧急数据。当 URG=1 时,后面的紧急指针字段才有效。
    • ACK:表示前面的确认号字段是否有效。ACK=1 时表示有效。只有当 ACK=1 时,前面的确认号字段才有效。TCP 规定,连接建立后,ACK 必须为 1。
    • PSH(Push):告诉对方收到该报文段后是否立即把数据推送给上层。如果值为 1,表示应当立即把数据提交给上层,而不是缓存起来。
    • RST:表示是否重置连接。如果 RST=1,说明 TCP 连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。
    • SYN:在建立连接时使用,用来同步序号。
      • 当 SYN=1,ACK=0 时,表示这是一个请求建立连接的报文段。
      • 当 SYN=1,ACK=1 时,表示对方同意建立连接。
      • SYN=1 时,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中 SYN 才为 1。
    • FIN:标记数据是否发送完毕。如果 FIN=1,表示数据已经发送完成,可以释放连接。
  • 窗口大小字段(Window Size):
    • 占16位,TCP流量控制,表示目前还有多少空间,能接收多少数据量。

第五行:

  • TCP 校验位(TCP Checksum):
    • 占 16 位。它用于确认传输的数据是否有损坏。发送端基于数据内容校验生成一个数值,接收端根据接收的数据校验生成一个值。两个值必须相同,才能证明数据是有效的。如果两个值不同,则丢掉这个数据包。
  • 紧急指针(Urgent Pointer):
    • 占 16 位。仅当前面的 URG 控制位为 1 时才有意义,它指出本数据段中为紧急数据的字节数,当所有紧急数据处理完后,TCP 就会告诉应用程序恢复到正常操作。即使当前窗口大小为 0,也是可以发送紧急数据的,因为紧急数据无须缓存。

第六行:可选项字段

可以自定义头部字段,长度不定,但长度必须是 32bits 的整数倍,最多40个字节。

第七行:TCP数据

数据部分(可以不发送任何数据)。

3、TCP的三次握手和四次挥手

输入图片描述

4、TCP常见端口号

  • 21 ftp–文件传输协议(FTP)端口
  • 22 ssh–安全 Shell(SSH)服务
  • 23 telnet–Telnet 服务
  • 25 smtp–简单邮件传输协议(SMTP)
  • 37 time–时间协议
  • 80 http–超文本传输协议
  • 109 pop2–邮局协议版本2
  • 110 pop3–邮局协议版本3
  • 161 snmp–简单网络管理协议
  • 179 bgp–边界网络协议
  • 213 ipx–互联网络分组交换协议
  • 443 https–安全超文本传输协议
  • 1521 oracle数据库
  • 3306 mysql数据库
  • 5000 sql server数据库

四、UDP协议(用户数据包协议)

1、特点

  • 不需要建立链接,直接发送数据,不会去重新排序,不需要确认

2、报文字段

  • 源端口
  • 目标端口
  • UDP长度
  • UDP校验

3、常见的UDP端口号

  • 53 DNS
  • 69 TFTP
  • 111 RPC
  • 123 NTP
  • 161 SNMP
posted @ 2023-03-16 18:30  lovelypartn  阅读(143)  评论(1)    收藏  举报