协议

image-20221015210110012

流量抓取工具(Wireshark)

1、网卡模式

  • 混杂模式:不管目的主机是否是自己,都接收
  • 非混杂模式:默认情况下,主机网卡处于此模式,不会接收目的非自己的数据

2、界面认识

3、两种过滤器

  • 捕获过滤器:在抓包前先进行过滤(只抓取特定类型的包或者不抓取某些类型的包)
  • 显示过滤器:抓包前抓包后皆可进行过滤,但不会影响抓取的包

4、过滤器

  • 捕获过滤器

    • 语法

      • 类型:host net port
      • 方向:src dst
      • 协议:ether ip udp http frp……
      • 逻辑运算符:&&与   或 !非
    • 举例

      • src host 192.168.1.100 && dst port 80

      • host 192.168.1.100   192.168.10.99
      • 不抓取广播包

        • ! broadcast
      • 抓取源ip为192.168.1.100或者源ip为192.168.1.0/24,目的TCP端口号在200到1000之间,并且目的位于129.0.0.0/8

        (src host 192.168.1.100 || src net 192.168.1.0/24) && (dst portrange 200-1000 && dst net 129.0.0.0/8
        
    • 显示过滤器

    • 语法

      • 比较操作符:==(eq) != (neq) > (gt) < (lt) >= (ge) <=(le)
      • 逻辑操作符:and(&&) or(   ) not
      • ip地址过滤:ip.addr ip.src ip.dst
      • 端口过滤:tcp.port udp.port tcp.dstport tcp.flag.syn tcp.flag.ack
      • 协议过滤:arp ip icmp udp tcp http
    • 举例

      • 显示源ip等于192.168.18.14并且tcp端口为443

        ip.src==192.168.18.14 and tcp.port==443
        
      • 显示源ip不为192.168.18.14且目的ip不为192.168.1.100

        ip.src!=192.168.18.14 and ip.dst!=192.168.1.100
        

ARP协议(地址解析协议)

作用:将一个已知的IP地址解析为MAC地址,从而进行二层数据交互

本身是一个三层协议,但是工作在二层,是一个2.5层协议

一、工作流程

  • ARP请求
  • ARP响应

image-20221015224128378

1、ARP协议报文格式

2、ARP报文格式

3、ARP缓存

  • 目的是为了避免重复的请求查询

  • arp -a	#查询本机arp缓存,一般缓存周期为180s
    
  • arp -s 192.168.1.100 00-0c-2f-56-ce-4d	#将ip与mac进行arp绑定
    arp -d	#清除某个arp绑定
    

二、ARP攻击及欺骗

1、ARP攻击

  • 伪造ARP应答报文,向被攻击方响应虚假的mac地址,造成被攻击主机无法进行网络通信

2、ARP欺骗

  • 欺骗网关
    • 攻击方作为假网关进行网络中间人活动
  • 欺骗主机
    • 攻击方作为进行网络中间人活动

3、实施攻击

一、环境

1、kali linux

  • 攻击工具:arpspoof

2、win10

  • 被攻击主机

二、kali配置

kali linux基于debian linux系统,采用deb包管理方式,使用apt源方式进行安装

echo 1 >> /procsys/net/ipv4/ip_forward	#将”1“追加到后面这个文件中,开启ip转发功能,">" 表示覆盖加,">>"表示追加。	”0“表示关闭该功能

apt-get install dsniff	#安装arp攻击工具,arpspoof工具集成在其中
arpspoof -i eth0 -t 192.168.10.11 192.168.10.2	#攻击命令

driftnet 	#嗅探被攻击者网页浏览中的图像内容

ICMP协议(网络层)

1、理解ICMP协议

2、理解ICMP重定向

3、会使用wireshark分析ICMP重定向流量

实验

一、ICMP基本概念

1、ICMP协议

  • internet控制报文协议,用于在ip主机、路由器间传递控制消息,控制消息指网络通不通,主机是否可达,路由器是否可用等
  • 网络层协议,封装在网络层与传输层之间

image-20221019232142585

2、ICMP报文格式

  • 类型(type)

  • 代码(code)

    • (8 0):请求报文
    • (0 0):回显应答(比较正常的应答)
    • (11 0):请求超时(传输期间生存时间为0)
    • (3 1):目标主机不可达
    • (3 3):目标端口不可达
    • (3 2):目标协议不可达
    • 类型13 14报文 时间戳请求和应答
    • 共有0/3~18 18种类型
    • (5 0) 重定向(网络重定向)
    • (5 1) 重定向(主机重定向)

image-20221020202401616

二、ICMP重定向

在某些特定情况下,路由器检测到主机使用非优化路由的时候,会向主机发送一个ICMP重定向报文,使主机的路由改变,安全问题:ICMP重定向攻击

image-20221020205705008

image-20221020205515288

1、ICMP重定向攻击(重定向网关)

  • 使用ettercapt工具

  • 使用netwox

    netwox 86 -g 192.168.10.2	#86为ICMP重定向攻击模块编号,后面为重定向目的网关地址
    

传输层协议

TCP协议

回顾内容

  • 传输层功能:定义应用层协议数据报文的端口号,流量控制
  • 对原始数据进行分段处理

传输层所提供的服务

  1. 传输连接服务
  2. 数据传输服务:流量控制、差错控制、序列控制

一、传输层的TCP协议

1、面向连接的协议(TCP)

  • 要求数据在传输前必须建立连接,传输完成后,必须释放连接
  • 仅支持单播传输:在两个终端间建立的点对点连接

2、UDP(用户数据报协议)

二、TCP报文

image-20221020215304764

源端口和目的端口字段

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

序列号字段

CP序列号(Sequence Number):占 32 位。它表示本报文段所发送数据的第一个字节的编号。在 TCP 连接中,所传送的字节流的每一个字节都会按顺序编号。当SYN标记不为1时,这是当前数据分段第一个字母的序列号;如果SYN的值是1时,这个字段的值就是初始序列值(ISN),用于对序列号进行同步。这时,第一个字节的序列号比这个字段的值大1,也就是ISN加1。

确认号字段

TCP 确认号(Acknowledgment Number,ACK Number):占 32 位。它表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。其值是接收计算机即将接收到的下一个序列号,也就是下一个接收到的字节的序列号加1。

数据偏移字段

TCP 首部长度(Header Length):数据偏移是指数据段中的“数据”部分起始处距离 TCP 数据段起始处的字节偏移量,占 4 位。其实这里的“数据偏移”也是在确定 TCP 数据段头部分的长度,告诉接收端的应用程序,数据从何处开始。

保留字段

保留(Reserved):占 4 位。为 TCP 将来的发展预留空间,目前必须全部为 0。

标志位字段

  • CWR(Congestion Window Reduce):拥塞窗口减少标志,用来表明它接收到了设置 ECE 标志的 TCP 包。并且,发送方收到消息之后,通过减小发送窗口的大小来降低发送速率。
  • ECE(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 位。它表示从 Ack Number 开始还可以接收多少字节的数据量,也表示当前接收端的接收窗口还有多少剩余空间。该字段可以用于 TCP 的流量控制。

TCP 校验和字段

校验位(TCP Checksum):占 16 位。它用于确认传输的数据是否有损坏。发送端基于数据内容校验生成一个数值,接收端根据接收的数据校验生成一个值。两个值必须相同,才能证明数据是有效的。如果两个值不同,则丢掉这个数据包。Checksum 是根据伪头 + TCP 头 + TCP 数据三部分进行计算的。

紧急指针字段

紧急指针(Urgent Pointer):仅当前面的 URG 控制位为 1 时才有意义。它指出本数据段中为紧急数据的字节数,占 16 位。当所有紧急数据处理完后,TCP 就会告诉应用程序恢复到正常操作。即使当前窗口大小为 0,也是可以发送紧急数据的,因为紧急数据无须缓存。

可选项字段

选项(Option):长度不定,但长度必须是 32bits 的整数倍。

三次握手过程:

image-20221020223717493

屏幕截图_20221101_144259