4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
TCP/UDP协议安全:SYN flooding 与nmap的使用_Y努力学习..._CSDN博客
来自 : CSDN技术社区 发布时间:2021-03-25

一、SYN Flooding
1.1 简介
鼎鼎大名的SYN flooding攻击相信信安爱好者都很熟知。它发生在TCP三次握手之间 攻击者向服务器发送很多的SYN请求而收到SYN ACK后不恢复ACK从而占用服务器资源使其丧失正常服务能力。
若目标机器未开启防护措施 echo 0 tcp_syncookies 我们使用netwox 76命令就可以发起攻击了

netwox 76 -i 目标IP -p 端口

1.2 防范措施
通过限制相同IP发起的连接数量看似可以解决这个问题 但其实是不行的。因为伪造IP是一件很简单的事 攻击者更可以通过僵尸网络发起攻击。

接下来我们看看另一种方法 叫做syncache。通常一个四元组可以锁定一个连接 源、目的IP及端口 因此我们可以仅储存该必要信息 而不是直接分配TCB Transmission Control Block 。收到ACK时再检查SYNCache 若找到了对应项则建立连接。

最后介绍一种现在用的最多的方案 叫做SYNCookies 这种方案思路与上面一种类似 不过更加有效 这种方案在ACK到达之前不分配任何资源。接下来重点介绍这种非常巧妙的方法

1.3 SYNCookies
我们都知道 TCB第二次握手是服务器发送SYN ACK包 其中SYN的seq是由服务器自己构建 而客户端需要回复seq 1的ACK包才能完成连接。利用这种机制 我们可以仅通过ACK包的seq序列号来判断我们发送的SYN ACK的序列号 因此我们便可以想办法将我们的信息“储存”在序列号中 而非我们的内存中 这便是SYNCookies的原理。

在收到SYN包后 服务器不为其创建TCB 而回复ACK SYN 而其序列号是我们精心创建的

前5位 t mod 32中3位 表示m的编码值最后24位 s

其中t是一个缓慢递增的时间戳 通常是time 逻辑上右移6个位置 这给出了64秒的分辨率
m为服务器在SYN队列条目中存储的最大段大小 MSS 值
s是通过服务器IP地址和端口号、客户端IP地址和端口号以及值t计算的加密哈希函数的结果。返回值s必须是24位值。

那么这么设置有什么作用呢 我们收到未建立连接的ACK包后 检查其SEQ位 将其减1并拆拆分。通过前五位 我们可以得知时间 判断其有没有过期 通过中3位 可以重建SYN队列条目 通过重新计算s可以确认是否是个有效的SYN Cookie。
问题
1.慢
2.MSS只有三位 只能表示八个值
3.丢弃其余的TCP选项
4.客户端发送的连接ACK数据包丢失 服务器不会重新发送SYN ACK

二、nmap
2.1 nmap简介
nmap是一个网络连接端扫描软件 用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端 并且推断计算机运行哪个操作系统 这是亦称 fingerprinting 。它是网络管理员必用的软件之一 以及用以评估网络系统安全。

2.2 各种参数介绍
2.2.1 nmap 目标IP 最不建议使用的 也称为 tcp connect -sT
\"在这里插入图片描述\"
在这种默认不加参数的情况下 nmap会尝试与目标机器建立TCP连接 若目标端口开放 则顺利建立连接 nmap发送RST释放连接 若端口关闭 则服务器收到SYN包后回复RST直接断开连接。若SYN包被过滤则无法收到回复。

功能:与目标发送并尝试建立TCP连接 通过各种情况判断目标机器端口开放/过滤情况优点 不需要特殊权限 TCP正常握手过程 不需要权限 缺点 需要建立连接 不够隐秘 若目标主机防火墙功能强无法判断端口情况
\"在这里插入图片描述\"
\"在这里插入图片描述\"
2.2.2 sudo nmap 目标IP (最常用的 也称为TCP SYN 半开-sS)
提供了权限 这样我们可以违反协议栈的规定来发包了。这样我们会在接受到服务器返回的SYN ACK后回复RST 不用建立TCP连接。功能 向目标发送SYN若收到ACK SYN则回复RST优点 不需建立TCP连接 隐秘性比较好缺点 需要权限 若目标主机防火墙功能强无法判断端口情况
\"![在这里插入图片描述](https://img-blog.csdnimg.cn/20190420010537874.png\"
\"\"

以上两种nmap方法 若目标防火墙过滤了就无可奈何了 接下介绍另外几种
2.2.3 sudo nmap -sA
针对端口被过滤的情况 我们有另一种测试目标是否被过滤的方法 -sA。即向目标直接发送ACK 服务器莫名其妙收到ACK后会很客气的回复一个RST。但如果目标端口被过滤了我们就收不到RST了。

功能 判断目标机器的端口过滤情况缺点 无法判断端口开放情况
\"在这里插入图片描述\"
\"在这里插入图片描述\"

2.2.4 sudo nmap -sF/-sX/-sN 判断目标端口是否被关闭
其中FIN扫描是设置TCP FIN位 Xmas扫描是设置FIN、PSH以及URG位 NULL扫描是不设置任何标志位。

主要是对这些数据包 如果是开放的端口 那么不会产生任何的响应 如果是关闭的端口 会生成一个RST回复。当然 如果端口被过滤 也不会有任何响应。所以 这些扫描并不能判断开放端口 它只能返回open|filtered 或者是closed。

-sA可以判断目标端口是否被过滤 -sF可以判断目标端口是open|filtered 因此两者综合就可以判断目标主机的端口情况了 如下图
\"在这里插入图片描述\"
2.2.5 sudo nmap -f 目标端口
使用微小碎片 将TCP头部拆成几个碎片 使其更加隐蔽与难以被过滤

2.2.6 nmap idle 扫描
这是一种更加隐蔽的扫描方式 攻击者可以不用向目标发送数据包就完成扫描工作。
其要点就是利用一台短时间内没有数据流的zombie主机。
流程

扫描者发送SYN/ACK给zombie主机 得到一个RST回复 记录下其IP ID
\"在这里插入图片描述\"扫描这伪造数据包 冒充zombie发给目标主机SYN包。如果目标主机上该端口是开着的 那么会发送SYN ACK zombie收到这个数据包 会发送RST 如果是关着的 会发送RST zombie收到这个数据包 会直接忽略。
\"在这里插入图片描述\"扫描者再次发送SYN/ACK到Zombie 查看IPID。如果增加为2 说明目标主机相应端口开放 否则如果增加1 说明目标主机端口关闭。如果是增加了一个比2还大的数字 那么就说明Zombie主机不太称职 它发的包太多了

观察以上流程 在这种扫描形式下 有一点很重要 寻找这样的Zombie主机 并且确保在探测期间 IPID不会因为其他原因而增加。

优点 非常隐蔽 可能还能利用zombie主机与服务器的信任关系绕过一些过滤机制。
缺点 无法判断关闭/过滤情况。且收zombie的使用情况影响。

2.2.7 sudo nmap -sV IP 版本扫描
版本扫描顾名思义 就是针对软件版本的扫描 这种扫描需要发送大量的数据包 并且需要与自己内部的指纹库进行比较 从而判断。

参考 https://zhuanlan.zhihu.com/p/59750145

本文链接: http://cachesyn.immuno-online.com/view-753915.html

发布于 : 2021-03-25 阅读(0)
公司介绍
品牌分类
其他
联络我们
服务热线:4000-520-616
(限工作日9:00-18:00)
QQ :1570468124
手机:18915418616