Python网络编程8-实现SYN Flood攻击与图形化展示

Python网络编程8-实现SYN Flood攻击与图形化展示,第1张

  最基本的DoS攻击就是攻击者利用大量合理的服务请求来占用攻击目标过多的服务资源,从而使合法用户无法得到服务的响应。DoS攻击一般是采用一对一方式的,当攻击目标各项性能指标不高时(例如CPU速度低、内存小或者网络带宽小等等),它的效果是明显的。

   泛洪攻击(Flood)

  指攻击者通过僵尸网络、代理或直接向攻击目标发送大量的伪装的请求服务报文,最终耗尽攻击目标的资源。发送的大量报文可以是TCP的SYN和ACK报文、UDP报文、ICMP报文、DNS报文HTTP/HTTPS报文等。

  以下Python脚本可实现简易的SYN Flood攻击

运行结果如下

使用Wirshark观察如下,产生大量TCP syn包;由于使用单IP单端口发送时,scapy使用了相同TCP序列号和数据,Wirshark认为是TCP重传,使用多IP多端口是则正常。

以下Python脚本可对捕获的SYN Flood包进行分析,并展示出数量大于5的连接。

运行结果如下

首先会打印出数量大于5的连接与其对应的数量。

同时会生成对应图表,可以直观的看到攻击目标主机和端口的源IP排名。

原理:在SYN Flood攻击中,利用TCP三次握手协议的缺陷,攻击者向目标主机发送大量伪造源地址的TCP SYN报文,目标主机分配必要的资源,然后向源地址返回SYN+ACK包,并等待源端返回ACK包。由于源地址是伪造的,所以源端永远都不会返回ACK报文,受害主机继续发送SYN+ACK包,并将半连接放入端口的积压队列中,虽然一般的主机都有超时机制和默认的重传次数,但由于端口的半连接队列的长度是有限的,如果不断的向受害主机发送大量的TCP SYN报文,半连接队列就会很快填满,服务器拒绝新的连接,将导致该端口无法响应其他机器进行的连接请求,最终使受害主机的资源耗尽。

防范手段:

�8�5 优化系统配置:包括缩短超时时间,增加半连接队列的长度,关闭不重要的服务等。

�8�5 优化路由器配置:配置路由器的内、外网卡。

�8�5 完善基础设施:增加源IP地址检查机制等。

�8�5 使用防火墙:采用半透明网关技术的放火墙可有效防范SYN Flooding攻击

�8�5 主动监视:监视TCP/IP流量,收集通信控制信息,分析状态,辨别攻击行为。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12068760.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存