深入了解DoS攻击-理论
关键词:DoS 网络协议 服务资源 攻击类别
DoS攻击原理
DoS攻击是指利用网络协议漏洞或其他系统以及应用软件的漏洞耗尽被攻击目标资源,使得被攻击的计算机或网络无法正常提供服务,直至系统停止响应甚至崩溃的攻击方式,即攻击者通过某种手段,导致目标机器或网络停止向合法用户提供正常的服务或资源访问。
服务资源:网络带宽、磁盘容量、开放的进程和允许的连接。
DoS攻击成因
- 利用现有网络协议中存在的缺点
- 利用现有软件和应用程序自身的漏洞
- 利用合法的服务请求耗尽服务资源
DoS攻击的分类如下图所示:
DoS攻击分类
以下将对每一个攻击类别做简要的介绍:
SYN Flood
SYN Flood攻击特征
- 目标主机的网络上出现大量的SYN包,而没有相应的应答包
- SYN包的源地址可能是伪造的,甚至无规律可循
防止措施
- 针对网络:
- 防火墙或者路由器可以在给定时间内只允许有限数量的半开连接
- 入侵检测,可以发现这样的DoS攻击行为
- 针对主机:
- 限制SYN Timeout的时间
- 打补丁:Linux和Solaris使用了一种被称为SYN cookie的技术来解决SYN Flood攻击:在半开连接队列之外另设置了一套机制,使得合法连接得以正常继续
死ping(ping of death)
原理
直接利用ping包,即ICMP Echo包,有些系统在收到大量比最大包还要长的数据包,会挂起或者死机
攻击方法
直接利用ping工具,发送超大的ping数据包
防止措施
- 打补丁:现在所有的标准TCP/IP实现都已实现对付超大尺寸的包,并且大多数防火墙能够自动过滤这些攻击,包括:从windows98之后的windows,NT(service pack 3之后),linux、Solaris、和Mac OS都具有抵抗一般ping of death攻击的能力
- 防火墙能阻止这样的ping包
攻击指令
Windows:ping -l 65570 [IP Addr]
UNIX:ping –s 65570 [IP Addr]
(合法的包的大小范围是0-65500)
泪滴(teardrop)
原理
- 发送一系列高度碎片化的过大的ICMP数据包
- IP碎片攻击利用那些在TCP/IP协议栈实现中,信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括service pack 4以前的NT)在收到含有重叠偏移的伪造分段时将崩溃(此部分内容将在下一篇DDoS实践中详细说明)
常见的IP碎片程序
jolt2、teardrop、newtear、syndrop、boink等
防御措施
服务器应用最新的服务包,或者在设置防火墙时对分段进行重组,而不是转发它们
带外传输攻击(Winnuke)
原理
向Windows系统的目标端口(53、137、138、139)发送带外数据,目标主机在处理带外数据时会出现挂起和重启动等异常现象,大多数情况会导致系统死机
防御措施
升级补丁
Echo-chargen攻击
原理
- 各种各样的假冒攻击利用简单的TCP/IP服务,如chargen和Echo来传送毫无用处的占满带宽的数据
- 通过伪造与某一主机的chargen服务之间的一次的UDP连接,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间的足够多的无用数据流,如果足够多的数据流就会导致带宽耗尽的拒绝服务攻击
防御措施
- 关掉不必要的TCP/IP服务
- 对防火墙进行配置阻断来自Internet对这些服务的UDP请求
Land攻击
原理
在Land攻击中,构造一个特别的SYN包,它的原地址和目标地址都被设置成某一个服务器地址,此举将导致接受服务器向它自己的地址发送SYN ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时掉,对Land攻击反应不同,许多UNIX实现将崩溃,NT变得极其缓慢(大约持续五分钟)
(这是一种比较老的攻击,目前大部分操作系统都能避免)防御措施
- 打最新的补丁
- 在防火墙进行配置,将那些在外部接口上入站的含有内部源地址滤掉(包括10域、127域、192.168域、172.16到172.31域)
Ping flood
原理
发送大量的ping包耗尽服务资源。前提是掌握足够多的的肉鸡。
(PingFlood和死ping不同,一个是发送大小足够大的包,一个是发送数量足够多的包)防御措施
- 防火墙
- IP安全策略
Smurf
攻击特征
- 涉及到三方:攻击者、中间目标网络、受害者
- 以较小的网络带宽资源,通过放大作用,吃掉较大带宽的受害者系统
- smurf放大器
smuf放大器网络:不仅允许ICMP Echo请求发给网络的广播地址,并且允许ICMP Echo-Reply发送回去
样的公司越多,对Internet的危害就越大实施smurf攻击
- 需要长期的准备,首先找到足够多的中间网络
- 集中向这些中间网络发出ICMP Echo包
防御措施
- 针对最终受害者
没有直接的方法可以阻止自己接收ICMP Echo Reply消息
在路由器上阻止这样的应答消息,但是,路由器本身会遭受DoS攻击
与中间目标网络联系- 针对中间网络
关闭外来的IP广播消息,但是,如果攻击者从内部机器发起攻击,仍然不能阻止smurf攻击
配置操作系统,对于广播地址的ICMP包不响应
Udp flood
原理
发送大量的UDP包
防御
防火墙
修改ARP缓存
原理
ARP是地址解析协议,将IP地址转换为物理地址,攻击者向肉鸡发送虚假的IP/MAC对应信息,篡改网关MAC地址,使受害者成为假网关。
修改ARP缓存只能被用于局域网(黑客必须已经获得局域网中某台机器的访问权)防御措施
- 网关建立静态IP/MAC对应关系,各主机建立MAC数据库
- 建立DHCP服务器
- IDS监听网络安全
修改DNS缓存
原理
DNS用于实现域名解析,也就是将域名对应到相应的IP地址。客户端以特定的标识ID向DNS服务器发送域名查询数据包,DNS服务器查询之后以同样的ID返回给客户端响应数据包,攻击者拦截该响应数据包,并修改其内容,返回给客户端。将用户访问的合法网址重定向到另一个网址。
防御措施
- 将用户访问的合法网址重定向到另一个网址
- 直接用IP地址连接服务器
- 用加密的连接访问服务器,如SSL
注:若想了解ARP欺骗和DNS欺骗的实现可查看上一篇文章四种假消息攻击
理论学习到这里就结束了,虽然这都是一些过时了的DoS攻击,但是了解经典、知其原理才能给自己带来收获和灵感,千里之行始于足下,懂得攻击的原理才会懂得如何防御,如果你对DoS感兴趣,可以关注我的下一篇文章“拒绝服务攻击的发展趋势-DDoS(分布式拒绝服务攻击)”,会安利一个简易的DDoS工具哦。
(注:本人是个刚起步的小菜鸡,表达能力也不强,总结得不对的地方还请大家多多包涵,欢迎大家相互交流,共同学习,一起进步,感激不尽)