23.dos和ddos

DoS&DDoS攻防测试

dos和ddos攻击 (拒绝服务攻击) 在应急响应中经常出现 , 如果你掌握了dos和ddos攻击的话 , 在应急抓包这块 , 分析流量这块问题就不大了 , 主要讲解一下各类攻击

0x01. 什么是DoS和DDoS

1.1 DoS不是DOS

注意 : DoS不是以前的那个DOS系统 , 全称叫做Denial of Service 拒绝服务

他是利用程序漏洞或一对一耗尽服务器资源 , 达到服务器无法提供服务的一种攻击方法 , 前提是你的攻击机配置

比对方服务器nb , 你俩一对一单挑 , 你比他强 , 你就能给他干死

1.2 DDoS

DoS是一对一的攻击完全拼各自的资源,效果差

DDoS是多对一的攻击汇聚资源能力,重点在于量大,属于资源耗尽型 , 是一种分布式拒绝服务攻击

补充 :

以前:欠缺技术能力的无赖,我ping死你(最难缠的无赖)现在是行不通了
		ping  ip -l 65500 -t  (win平台下用最大的字节包ping服务器)

现在:最强大最危险的攻击,攻击方式众多(专业化的勒索) 亲身经历:电商网站被勒索、Bill gates僵尸程序
           贩卖和租用肉鸡已经成为黑产中重要的一部分
          最终的办法就是拼资源,投资抗D,或者乖乖交保护费

■ Anonymous 匿名者

世界最著名的黑客组织,组织结构宽松,人员来自世界各地。以DDoS攻击著称的无政府主义者 -亦正亦邪,攻击

恐怖组织也攻击政府宗教机构 ,近些年来涉足政治斗争,成员露面时均带有Guy Fawkes面具,最早的核心成员

来自4chan图片社区 ,惯常雇佣外围黑客成员发动DDoS攻击

■ 口号

-We are Anonymous, We are a Legion,We do not forgive, We do not forget,Expect us

至此现在对于DDoS攻击任然是没有很完美的解决方法

0x02. DoS分类

2.1 D网络

基于巨量的Flood (洪水) 耗尽目标网络带宽资源

如:ICMP Flood (ping) , UDP Flood (流量攻击) , 这种是打防火墙 , 打路由器 , 打交换机的

2.2 D协议

攻击协议漏洞发起的拒绝服务攻击 , 这是协议本身存在的漏洞

如:Syn Flood、Ping of Death、ARP、DNS、802.11、SSL

2.3 D应用

针对应用软件和操作系统漏洞发起的拒绝服务攻击

大量频繁访问消耗系统资源严重的应用(CC) , 刷数据库

通常表现为操作系统运行正常,网络流量不大,但服务停止响应 , 可以是一击毙命的,也可以是耗尽目标资源的

个人分类 ( 不一定很准确 ) :

image-20210203140404923

0x03. 为何会被DoS

image-20210203135741882

从图上可以看出 , 正常情况下攻击者访问受害者 , 是经过受害者的路由器 , 防火墙 , 然后到目标主机的具体站点

那么攻击者可以从这三个环节展开攻击 , 任何一个环节被干掉了 , 服务器上对的目标站点都无法对外提供服务

从攻击者到被害者

  • 网络->FW ( 防火墙 ) ->服务器OS->服务应用

资源耗尽

  • 网络:带宽

  • FW : 吞吐量、并发连接

  • 服务器:CPU、内存、I/O

  • 应用:处理请求能力,对

  • OS资源的使用权

程序漏洞攻击

  • 缓冲区溢出

  • 协议、程序逻辑漏洞

  • 链路上任何一点都可成为目标

0x04. DoS实战

4.1 Syn-Flood

这是利用攻击者和目标主机建立tcp连接前三次握手发起的攻击 , 正常的三次握手是客户端(攻击者)发起请求连接 ,

服务端收到请求 , 然后也给客户端发起一个请求连接 , 然后客户端恢复服务端接受连接。

image-20210203141106224

而Syn-Foold是当服务端回复客户端 ,并发请与客户端的请求链接时 , 客户端不再向服务端发送确认连接的回复

而是一直发送与服务端端建立连接的请求

image-20210203141200986

如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源--

--数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的

IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务

器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户

端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到

了SYN Flood攻击(SYN洪水攻击)

攻击工具有很多种 , 这里就用win平台的fastsend攻击192.168.1.112的3389端口做演示

image-20210203142001136

然后点击Start进行攻击 ,打开实验服务器可以看到CPU在飙升

image-20210203142123411

同时3389端口也是无法远程连接的

image-20210203142221595

防范技术

关于SYN攻击防范技术,主要有两大类,一类是通过防火墙、路由器等过滤网关防护,另一类是通过加固TCP/IP

协议栈防范。

补充 :https://blog.csdn.net/qq_36390239/article/details/78453852

4.2 ip地址欺骗攻击

这种攻击方法现在效果不是很好 , 已经算是一个失效的方法了

它伪造大量的假ip地址去攻击目标站点

因为现在的路由器都具有自动过滤假的公网ip的功能了

4.3 Smurf攻击

世界上最古老的DDoS攻击技术

  • 向广播地址发送伪造源地址的ICMP echo Request (ping)包

  • LAN所有计算机向伪造源地址返回响应包

  • 对现代操作系统几乎无效(不响应目标为广播的ping)

这个攻击现在效果也不是很好 , 而且需要上百台的主机才有效果

4.4 sockstress攻击

Sockstress是2008年由Jack C. Louis发现的,其主要针对TCP服务的拒绝服务攻击

目的在于:消耗被攻击目标系统资源,但不消耗网络带宽资源,会产生大量TCP连接但不会产生大量流量

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

  2. 成功建立ESTABLISHED之后,攻击者会将数据包中window的值置为0(再回数据的时候,客户端与服务器

    端都会各自向对方确认自己的空间大小,防止双方各自传送内容过大,主要是流控的作用 。window的意思

    代表client这边一次可以接受的数据大小,置为0之后表示client没有window来接受server发来的数据,然后server就会分配内存来维持TCP连接直到client有空闲的window与之通信),然而攻击者可不会维持什

    么连接,他只会不断的请求TCP连接耗尽server的资源

  3. 当server这端维持连接达到一定数量之后,内存、CPU甚至是SWAP分区都会被耗尽,系统命令不能正常执

    行,然后也没有办法提供和服务了 , 想要恢复server唯一的办法就是断网

对于攻击者的优势:

1、攻击者资源消耗小(CPU、内存、宽带)

2、异步攻击,单机可拒绝服务高配资源服务器

实战 :

实战步骤很简单但是危害很大 , 建议大家拿自己的靶机做实验 , 不要攻击网上的任何服务器

第一步 : 下载攻击脚本并安装 , 这里我已经下载好了 ,就不一步一步演示了

下载地址 : https://github.com/defuse/sockstress

直接拖到kali中

image-20210203145545196

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

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

​ 受害者ip

iptables -L 查看防火墙策略
iptables -F 清空防火墙策略

image-20210203145823448

第三步 : 运行SOCKSTRESS攻击脚本,攻击靶机的80端口

./sockstress 192.168.1.112:8080 eth0 -p payloads/http -d 100
                             受害者ip:端口

image-20210203150000524

通过wireshark抓包可以看到攻击者数据包中的win=0 方向 : destination --> Source

image-20210203150733932

第四步 : 查看一下靶机可以看到内存和CPU已经被耗得差不多了,靶机的web服务已经访问不了,如果再多攻击一

会可能就直接宕机

image-20210203150107240

image-20210203150049809

防御措施

直到今天sockstress攻击仍然是一种很有效的DoS攻击方式由于建立完整的TCP三步握手,因此使用syn cookie

防御无效 , 根本的防御方法是采用白名单(不实际)

折中对策:限制单位时间内每个IP建立的TCP连接数

封杀每30秒与80端口建立连接超过10个的IP地址
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

**绿盟有一款抗DDoS的产品叫做黑洞 , 国内有名 **

详情 : https://cloud.tencent.com/developer/article/1180375

4.5 TearDrop

Tear是“眼泪”的意思,drop是“掉落”的意思,顾名思义,Teardrop是一种令人落泪的攻击方法

主要针对早期微软操作系统(95、98、3.x、nt)

近些年有人发现对2.x版本的android系统、6.0 IOS系统攻击有效

原理很有趣

  • 使用IP分段偏移值实现分段覆盖,接收端处理分段覆盖时可被拒绝服务

攻击效果

  • 受害者蓝屏、重启、卡死

image-20210203152344960

这种攻击方法已经淘汰了 , 因为对于现在的win10等操作系统根本不起作用了

4.6 DNS放大攻击

产生大流量的攻击方法

  • 单机的带宽优势

  • 巨大单机数量形成的流量汇聚

  • 利用协议特性实现放大效果的流量

DNS协议放大效果

  • 查询请求流量小,但响应流量可能非常巨大

  • digANYhp.com @202.106.0.20 (流量放大约8倍)

攻击原理

  • 伪造源地址为被攻击目标地址,向递归域名查询服务器发起查询

  • DNS服务器成为流量放大和实施攻击者,大量DNS服务器实现DDoS

当对方服务器有自己的DNS解析服务器 , 我们在kali中dig一下 , 我们是花费很少的资源去查询 , 但是服务端要花费较大的资源去查询然后返回 , 如果有几千台肉鸡一起dig的话 , 服务端就处理不过来了 , 导致拒绝服务攻击

详情 : https://cloud.tencent.com/developer/article/1462668

4.7 SNMP放大攻击

简单网络管理协议 , win和linux系统中都有 , win需要在控制面板中安装 ,用在监控领域 , 可以监控硬件信息 , 流量

  • Simple Network Management Protocol

  • 服务端 UDP 161 / 162

  • 管理站(manager /客户端)、被管理设备(agent /服务端)

  • 管理信息数据库(MIB)是一个信息存储库,包含管理代理中的有关配置和性能的数据,按照不同分类,包含分属不同组的多个数据对象

  • 每一个节点都有一个对象标识符(OID)来唯一的标识 -IETF定义便准的MIB库/厂家自定义MIB库

攻击原理

  • 请求流量小,查询结果返回流量大 -结合伪造源地址实现攻击

4.8 NTP放大攻击

NTP , 全称: Network Time Protocol 网络时间协议 , 这个攻击实际上就是一个漏洞

假如你有多个linux服务器 , 同时你的业务( 金融 )是要保证所有linux服务器上的时间一直 , 这个时候你必须在一台

linux服务器上搭建一个NTP服务 , 保证时间一致

作用 :

  • 保证网络设备时间同步

  • 电子设备互相干扰导致时钟差异越来越大

  • 影响应用正常运行、日志审计不可信

  • 服务端 UDP 123

攻击原理

NTP服务提供monlist (MON_GETLIST)查询功能

监控NTP服务器的状况 , 客户端查询时,NTP服务器返回最后同步时间的600个客户端IP

每6个IP—个数据包,最多100个数据包(放大约100倍), 如果有1000台客户端同时发起时间同步 , 那么NTP

服务端就会消耗很大的内存 , 带宽 导致拒绝服务

发现NTP服务

nmap -sU -p123 1.1.1.1

image-20210203154513736

发现漏洞

ntpdc -n -c monlist 1.1.1.1
ntpq -c rv 1.1.1.1
ntpdc -c sysinfo 192.168.20.5

配置文件

/etc/ntp.conf
restrict -4 default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

NTP攻击对策

升级到ntpd 4.2.7p26及以上的版本(默认关闭monlist查询) 手动关闭monlist查询功能

0x05. 应用层DoS

目前来说应用层拒绝服务攻击是最多的 , 攻击者最喜欢用的攻击方法

应用服务漏洞 :

服务代码存在漏洞,遇异常提交数据时程序崩溃

应用处理大量并发请求能力有限,被拒绝的是应用或OS

缓冲区溢出漏洞 :

向目标函数随机提交数据,特定情况下数据覆盖临近寄存器或内存

影响:远程代码执行、DoS

利用模糊测试方法发现缓冲区溢出漏洞

Searchsploit ms12-020 这个命令是搜索kail下面相关漏洞利用工具

CesarFTP 0.99 服务漏洞 :

ftp_fuzz.py # MKD/RMD

MS12-020远程桌面协议DoS漏洞

5.1 基于php语言的dos攻击

这个是php的漏洞 , 这个升级系统啥的都没用

环境 : phpnow phpstudy没有效果

脚本 : php-multipartform-dos-poc.py 是一位百度员工开发的

靶机运行 phpnow

双击启动 , 输入20 , 回车

image-20210203160851995

访问站点 :

http://192.168.1.112:8080

image-20210203161100448

运行攻击脚本

php-multipartform-dos-poc.py -t http://192.168.1.112:8080/

image-20210203162030703

查看靶机 , cpu直接跑满

image-20210203162136001

5.2 Slowhttptest ( 慢速攻击 )

简单介绍 :

谷歌公司研究出来的一种慢速攻击

SlowHTTPTest是一款对服务器进行慢攻击的测试软件 , 最早由Python编写,跨平台支持(Linux、win、

Cygwin、OSX) -尤其擅长攻击apache、tomcat (几乎百发百中),所谓的慢攻击就是相对于cc或者DDoS的快而

言的,并不是只有量大速度快才能把服务器搞挂,使用慢攻击有时候也能到达同一效果。slowhttptest包含了之前

几种慢攻击的攻击方式,包括slowloris, Slow HTTP POST, Slow Read attack等。那么这些慢攻击工具的原理就

是想办法让服务器等待,当服务器在保持连接等待时,自然就消耗了资源。低带宽应用层慢速DoS攻击(相对于

CC等快速攻击而言的慢速)

攻击原理 :

耗尽应用的并发连接池,类似于Http层的Syn flood

HTTP协议默认在服务器全部接收请求之后才开始处理,若客户端发送速度缓慢或不完整,服务器时钟为其保留连

接资源池占用,此类大量并发将导致DoS

如果对上述原理不太理解,笔者给大家描述一个生活中常见的场景:当大家在麦当劳点餐的时候,最前面点餐的那个人点了一个汉堡,然后他还准备点其他东西,但是又一直不说要啥,就一直霸站着收银台导致后面的客人无法点餐,如果麦当劳的每个收银台都被这样的客人霸占着,那么最后就会导致麦当劳无法做生意了,也就造成了DoS攻击

攻击方式 :

Slowloris : 完整的http请求结尾是\r\n\r\n,攻击发\r\n...... 代表传输没有完成 , 服务器会一直等待

Slow POST: HTTP头content-length声明长度,但body部分缓慢发送

实战 :

执行攻击脚本

python torshammer.py -t 192.168.1.112 -p 8080 -r 1000

image-20210203163602257

查看靶机

虽然cpu和内存消耗不高 , 但是网站打不开

image-20210203163641363

image-20210203163713961

攻击者会创建大量的端口与受害者的8080端口进行连接

image-20210203163759481

抓包可以看到很多字段后面有\r\n

image-20210203164238677

image-20210203164230664

如果你做安全维护看到大量的这样的请求包 , 就应该判断出这是应用层的慢速攻击

5.3 cc攻击 ( 快速攻击 )

发送大量且非常快速的数据库查询请求 , 很快目前没有一种数据库能够承受的起 , 然后数据库就挂了

这个是中国人研究出来的一种手段 , 那个站点遇到他 , 必挂 , 据说是一位求职者面试绿盟 , 由于一些原因

没有应聘成功 , 然后他就搞出来了一个cc攻击( 快速刷数据库 ) , 直接把绿盟的网站给打死了 , 因为当时绿盟的

防DoS的防护墙压根就没有防cc的功能 。所以当时一出来几乎就是通杀

实战 :

靶机 :192.168.1.112:89 南方数据站点

工具 : HttpDDoS.exe

image-20210203170014084

查看靶机 , cpu使用飙升 , 网站打不开

image-20210203170517689

image-20210203170540430

5.4 邮件攻击

炸邮箱

使用垃圾邮件塞满邮箱

5.5 RUDY攻击

RUDY

-慢速应用层HTTP POST攻击,与slowhttptest原理相同
-每次只传输一个字节的数据
-美剧“黑客军团”中曾提到此攻击手段
-攻击有表单WEB页面,攻击时需指定攻击的参数名称

https://sourceforge.net/projects/r-u-dead-yet/

0x06. 拒绝服务攻击工具

简单演示一下kali系统中自带的一些拒绝服务攻击的工具 , 可能有些工具在最新版的kali中已不存在

6.1 Hping3工具

-几乎可以定制发送任何TCP/IP数据包,用于测试FW、端口扫描、性能测试

Syn Flood 攻击

-hping3 -c 1000 -d 120 -S -w 64 -p 80 --flood --rand-source  1.1.1.1
-hping3 -S -P -U -p 80 --flood --rand-source 1.1.1.1
-hping3 -SARFUP -p 80 --flood --rand-source 1.1.1.1 (TCP Flood)

ICMP Flood 攻击

-hping3 -q -n -a 1.1.1.1 --icmp -d 56 --flood 1.1.1.2

UDP Flood 攻击

-hping3 -a 1.1.1.1 --udp -s 53 -d 100 -p 53 --flood 1.1.1.2
--rand-source 用公网随机地址进行攻击
-a 1.1.1.1 伪造成1.1.1.1进行攻击

详细帮助文档:http://cnhotfire.blog.51cto.com/2042323/698362/

实战 :

kali机器中执行以下命令

hping3 -c 1000 -d 120 -S -w 64 -p 8080 --flood --rand-source  192.168.1.112
1.No:代表数据包标号。
2.Time:在软件启动的多长时间内抓到。
3.Source:来源ip。
4.Destination: 目的ip。
5.Protocol:协议。
6.Length:数据包长度。
7.info:数据包信息

image-20210203172136953

hping3 -a 1.1.1.1 --udp -s 53 -d 100 -p 53 --flood 192.168.1.112

image-20210203172437875

6.2 LAND攻击

特殊种类的SYN Flood攻击 源地址、目的地址都是受害者的ip,受害者与自己完成三次握手

land 攻击是一种使用相同的源和目的主机和端口发送数据包到某台机器的攻击。当操作系统接收到这类数据包

时,不知道该如何处理,或者循环发送和接收该数据包,这样会消耗大量的系统资源,从而有可能造成系统崩溃或

死机。

攻击原理

在Land攻击中,一个特别打造的SYN包中的原地址和目标地址都被设置成某一个服务器地址,这时将导致接受服

务器向它自己的地址发送SYN-ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接

都将保留直到超时掉。对Land攻击反应不同,许多UNIX实现将崩溃,而 Windows NT 会变的极其缓慢(大约持

续五分钟)。

TCP全链接DoS攻击

nping --tcp-connect --rate=10000 -c 1000000000 -q 1.1.1.1
 //--rate=100000 一次建10000个连接,-C是一共建1000000000连接。

查公网ip

nping --echo-client "public" echo.nmap.org --udp

6.3 Siege

http/https压力测试工具,模拟多个用户并发访问请求

siege -g http://1.1.1.1/a.php       //扫描网站banner信息

siege -i -c 1000 http://1.1.1.1/a.php -A siegehttp  -vv

同时攻击多个url,使用-f调用字典文件 /etc/siege/urls.txt,也可以直接

编辑urls.txt把要攻击的地址放进去直接使用siege –i –c 1000 -vv就可以攻击

6.4 T50网络压力测试

t50 1.1.1.1 --flood --turbo -S --protocol TCP --dport 80 
t50 1.1.1.1 --flood --turbo -S TCP UDP OSPF EIGRP --dport 22

6.5 Nmap

grep dos /usr/share/nmap/scripts/script.db |cut -d "\"" -f 2
posted @ 2021-12-22 22:53  Mn猿  阅读(39)  评论(0编辑  收藏  举报