DDOS的攻击与防御(引用)

一、背景

  在前几天,我们运营的某网站遭受了一次ddos攻击,我们的网站是一个公益性质的网站,为各个厂商和白帽子之间搭建一个平台以传递安全问题等信息,我们并不清楚因为什么原因会遭遇这种无耻的攻击。因为我们本身并不从事这种类型的攻击,这种攻击技术一般也是比较粗糙的,所以讨论得比较少,但是既然发生了这样的攻击我们觉得分享攻击发生后我们在这个过程中学到得东西,以及针对这种攻击我们的想法才能让这次攻击产生真正的价值,而并不是这样的攻击仅仅浪费大家的时间而已。

  另外,我们发现大型的企业都有遭受攻击的案例,但是大家遭受攻击之后的应对措施及学到的经验却分享都比较少,这导致各家都是自行的摸索经验,依然停留在一家企业对抗整个互联网的攻击的局面,而对于攻击者却是此次攻击针对你,下次攻击却是针对他了,而且攻击之后无论是技术还是资源都没有任何的损耗,这也是导致这种攻击频繁并且肆无忌惮的原因。

  我们来尝试做一些改变:)

  二、应急响应

  在攻击发生后,第一个现象是我们的网站上不去了,但是依然可以访问到管理界面,我们登陆上去简单执行了命令:


1

netstat -antp

  我们看到有大量的链接存在着,并且都是ESTABLISHED状态,正常状态下我们的网站访问量没有这么高,如果有这么高我们相信中国的信息安全就有希望了,对于这样的情况其实处理就比较简单,这是一次四层的攻击,也就是所有ip都是真实的,由于目前为止只是消耗了webserver的网络连接资源,所以我们只需要简单的将这些ip在网络层封禁就可以,很简单,用下面的命令即可:


1

2

3

4

5

for i in `netstat -an | grep -i ‘:80 ‘|grep ‘EST’ | awk ‘{print $5}’ | cut -d : -f 1 | sort | uniq -c | awk ‘{if($1 > 50) {print $2}}’`

echo $i

echo $i >> /tmp/banip

/sbin/iptables -A INPUT -p tcp -j DROP -s $i

done

  然后作为计划任务一分钟执行一次即可,很快,iptables的封禁列表就充斥了大量的封禁ip,我们简单的统计了下连接数最大的一些ip发现都来自韩国。为了保证系统的性能,我们调大了系统的可接受的连接数以及对Nginx进行了每个连接能够进行的请求速率,系统于是恢复了正常的运行。

  正常状态一直持续到第二天,但是到中午之后我们发现访问又出现了问题,网络很慢,使用ping发现大概出现了70%左右的丢包,在艰难的登陆到系统上之后,发现系统已经很少有TCP的正常连接,为了查明原因,我们对系统进行了抓包:


1

2

tcpdump -w tmp.pcap port not 22

tcpdump -r tmp.pcap -nnA

我们发现攻击已经从应用层的攻击调整到了网络层的攻击,大量的目标端口是80的udp和icmp包以极快的速度充满了网络,一个包大小大概在1k左右,这次占据的资源纯粹是带宽资源了,即使在系统上做限制也解决不了这个问题,不过也没有关系,对于网络层的问题我们可以在网络层上做限制,我们只需要在网络上把到达我们ip的非TCP的所有包如UDP和ICMP等协议都禁止掉即可,但是我们没有自己的服务器也缺乏对网络设备的控制权,目前是由工信部 CERT提供支持的,由于临时无法协调进行相应的操作,后果如大家看到,我们的服务很慢,基本上停止了服务,在一段时间之后攻击者停止了攻击,服务才进行了恢复,很憋屈是么?但是同时我们得到了很多热心朋友的帮助,得到了更好的网络和服务器资源,在网络资源方面的能力得到了很大的提升,缓解了这方面的问题,这里对他们表示感谢。

  三、常见ddos攻击及防御

  继续秉承80sec的”Know it then hack it”,这里简单谈一下ddos攻击和防御方面的问题。ddos的全称是分布式拒绝服务攻击,既然是拒绝服务一定是因为某些原因而停止服务的,其中最重要的也是最常用的原因就是利用服务端方面资源的有限性,这种服务端的资源范围很广,可以简单的梳理一个请求正常完成的过程:

  1 用户在客户端浏览器输入请求的地址

  2 浏览器解析该请求,包括分析其中的dns以明确需要到达的远程服务器地址

  3 明确地址后浏览器和服务器的服务尝试建立连接,尝试建立连接的数据包通过本地网络,中间路由最终艰苦到达目标网络再到达目标服务器

  4 网络连接建立完成之后浏览器根据请求建立不同的数据包并且将数据包发送到服务器某个端口

  5 端口映射到进程,进程接受到数据包之后进行内部的解析

  6 请求服务器内部的各种不同的资源,包括后端的API以及一些数据库或者文件等

  7 在逻辑处理完成之后数据包按照之前建立的通道返回到用户浏览器,浏览器完成解析,请求完成。

  上面各个点都可以被用来进行ddos攻击,包括:

  1 某些著名的客户端劫持病毒,还记得访问百度跳搜狗的事情么?:)

  2 某个大型互联网公司发生的dns劫持事件,或者直接大量的dns请求直接攻击dns服务器,这里可以使用一些专业的第三方dns服务来缓解这个问题,如Dnspod

  3 利用建立网络连接需要的网络资源攻击服务器带宽使得正常数据包无法到达如udp的洪水攻击,消耗前端设备的cpu资源以使得数据包不能有效转发如icmp 和一些碎片包的洪水攻击,消耗服务器方建立正常连接需要的资源如syn flood或者就是占用大量的连接使得正常的连接无法发起,譬如这次的TCP flood

  4 利用webserver的一些特点进行攻击,相比nginx来说,apache处理一个请求的过程就比较笨重。

  5 利用应用程序内部的一些特性攻击程序内部的资源如mysql,后端消耗资源大的接口等等,这也就是传统意义上的CC攻击。

  这里涉及到攻防的概念,但是实际上如果了解对方的攻击点和攻击手法,防御会变成简单的一个拼资源的过程,不要用你最弱的地方去抗人家最强的地方,应该从最合适的地方入手把问题解决掉,譬如在路由器等设备上解决应用层攻击就不是一个好的办法,同理,在应用层尝试解决网络层的问题也是不可能的,简单来说,目标是只让正常的数据和请求进入到我们的服务,一个完善的防御体系应该考虑如下几个层面:

  1 作为用户请求的入口,必须有良好的dns防御

  2 与你的价值相匹配的带宽资源,并且在核心节点上布置好应用层的防御策略,只允许你的正常应用的网络数据包能够进入,譬如封杀除了80以外的所有数据包

  3 有支持你的服务价值的机器集群来抵抗应用层的压力,有必要的话需要将一个http请求继续分解,将连接建立的过程压力分解到其他的集群里,这里似乎已经有一般的硬件防火墙能做这个事情,甚至将正常的http请求解析过程都进行分解,保证到达后端的是正常的请求,剔除掉畸形的请求,将正常的请求的请求频度等行为进行记录和监控,一旦发生异常就在这里进行应用层的封杀

  每个公司都有自己对自己价值的评估从而决定安全投入上的大小,每一次攻击也会涉及到利益的存在,正如防御因为种种原因譬如投入上的不足和实施过程中的不完美,有着天生的弱点一样,攻击也是有着天生的弱点的,因为每一次攻击涉及到不同的环节,每个环节都可能由不同水平的人完成,他所拥有的资源,他使用的工具和技术都不会是完美的,所以才有可能进行防御,另外,我相信进行DDOS攻击的人是一个固定的行业,会有一些固定的人群,对于其中使用的技术,工具,资源和利益链都是比较固定的,与之相对的是各个企业却缺乏相应的沟通,以个人企业对抗一个产业自然是比较困难,而如果每一个企业都能将自己遭受攻击时的经验分享出来,包括僵尸网络的大小及IP分布,攻击工具的特征,甚至有能力的可以去分析背后的利益点及操作者,那么每一次攻击都能让大家的整体防御能力上升,让攻击者的攻击能力有损失,我们很愿意来做这个事情。

  四、根源及反击

  我困惑的是一点,攻击我们并不能得到实际的好处为什么还是有人来攻击,而且听说其他公司都有被攻击的情况,我觉得有一点原因就是攻击我们的确得不到什么好处,但是实际上攻击者也并不损失什么,无论是资源上还是法律风险上,他不会因为一次攻击而损失太多,而相比之下,服务提供者损失的东西却太多了,这从经济学角度来讲就是不平衡的,我们处于弱势。

  一般而言,的确对于作恶者是没有什么惩罚措施,但是这次,我们觉得我们是可以做一些事情的,我们尝试挖掘背后的攻击者,甚至清除这个僵尸网络。

  首先这次攻击起源于应用层的攻击,所以所有的ip都是真实的,经过与CERT沟通,也发现这些ip都是韩国的,并且控制端不在国内,因为期间没有与国内有过通讯,即使在后面换成了udp+icmp的flood,但是依然是那些韩国的ip,这很有意思,正常情况下udp+icmp的数据包是可以伪造的,但是这里居然没有伪造,这在后面大概被我们证实了原因。

  这些ip是真实存在的ip,而且这些ip肯定在攻击完我们之后一定依然跟攻击者保持着联系,而一般的联系方式因为需要控制的方便都是dns域名,既然如此,如果我们能挖掘到这个dns域名我们就可能间接的挖掘出真正幕后黑手在哪里。首先,我们迅速的找出了这次攻击ip中开放了80端口的机器,因为我们对80端口上的安全问题比较自信,应该很快可以获知这些ip背后的细节(80sec名称由来),我们发现大部分是一些路由器和一些web的vpn设备,我们猜测这次攻击的主要是韩国的个人用户,而个人用户的机器操作系统一般是windows所以在较高版本上发送数据包方面可能有着比较大的限制,这也解释了为什么即使是udp+icmp的攻击我们看到的大都是真实ip。发现这些路由设备之后我们尝试深入得更多,很快用一些弱口令譬如admin/admin 登陆进去,果然全世界的网民都一样,admin/admin是天生的入口。

登陆进去一些路由之后我们发现这些路由器里面存在一个功能是设置自己的dns,这意味着这下面的所有dns请求都可以被定向到我们自己设置的dns 服务器,这对于我们去了解内部网络的细节会很有用,于是我们建立了一个自己的dns服务器,并且开启了dns请求的日志功能以记录所有请求的细节。我们大约控制了20台路由器的dns指向,并且都成功重定向到我们自己的服务器。

  剩下的就是简单的数据分析,在这之前我们可以对僵尸网络的控制域名做如下的猜测:

  1 这个dns应该为了灵活的控制域名的缓存时间TTL一般不会特别长

  2 这个dns应该是定期的被请求,所以会在dns请求里有较大的出现比例

  3 这个dns应该是为了控制而存在的,所以域名不应该在搜索引擎以及其他地方获得较高的访问指数,这与2中的规则配合起来会比较好确定,是一个天生的矛盾。

  4 这个dns应该在各个路由下面都会被请求

  这些通过简单的统计就很容易得出答案,我们发现了一些3322的通用恶意软件域名但是发现它并不是我们需要的,因为只有少数机器去访问到,经过一些时间之后最后我们发现一个域名访问量与naver(韩国的一个门户)的访问量持平,workgroup001.snow****.net,看起来似乎对自己的僵尸网络管理很好嘛,大概有18台机器访问过这个域名,这个域名的主机托管在新加坡,生存时间TTL在1800也就是半小时,这个域名在所有的搜索引擎中都不存在记录,是一个韩国人在godady一年前才注册的,同时我们访问这个域名指向主机的3389,简单的通过5下shift就判断出它上面存在着一个典型的windows后门,似乎我们找到它了,不是么?经过后续的观察,一段时间后这个域名指向到了127.0.0.1,我们确信了我们的答案,workgroup001.snow****.net,看起来似乎对自己的僵尸网络管理很好嘛:)

  这是一次典型的ddos攻击,攻击之后我们获得了参与攻击的主机列表和控制端的域名及ip,相信中国和韩国的cert对于清理这次的攻击源很有兴趣,我们是有一些损失,但是攻击者也有损失了(大概包括一个僵尸网络及一个控制端域名,甚至可能包括一次内部的法律调查),我们不再是不平等的了,不是么?

  五、总结

  正如一个朋友所讲的,所有的防御是不完美的正如攻击是不完美的一样,好的防御者在提升自己的防御能力趋于完美的同时也要善于寻找攻击者的不完美,寻找一次攻击中的漏洞,不要对攻击心生恐惧,对于Ddos攻击而言,发起一次攻击一样是存在漏洞的,如果我们都能够擅长利用其中的漏洞并且抓住后面的攻击者那么相信以后的ddos攻击案例将会减少很多,在针对目标发起攻击之前攻击者也会做更多的权衡,损失,利益和法律。

时间: 2024-08-05 19:37:43

DDOS的攻击与防御(引用)的相关文章

防御DDOS等攻击的有效措施

到目前为止,进行DDoS攻击的防御还是比较困难的.首先,这种攻击的特点是它利用了TCP/IP协议的漏洞,除非你不用TCP/IP,才有可能完全抵御住DDoS攻击.一位资深的安全专家给了个形象的比喻:DDoS就好象有1,000个人同时给你家里打电话,这时候你的朋友还打得进来吗?不过即使它难于防范,也不是说我们就应该逆来顺受,实际上防止DDoS并不是绝对不可行的事情.下面介绍几种措施: 1.采用高性能的网络设备引首先要保证网络设备不能成为瓶颈,因此选择路由器.交换机.硬件防火墙等设备的时候要尽量选用知

DDoS恶意攻击高发 趋势教你如何防御

DDoS攻击是目前最有效的网络恶意攻击形式之一,而这种攻击更多的是针对DNS进行.就在本季度,趋势科技发现了一波专门针对该通信协议漏洞的DDoS反射攻击,这些攻击会利用被入侵的网络对攻击目标发送大量的回复封包和错误信息. 安全性不高的默认服务器设置会成为DDoS反射攻击的利用对象,黑客可以更容易地运用这些漏洞来攻击选定的目标. 其实,这项攻击其实早在13年前就已经有了解决方法,那就是BCP-38.那么,像DDoS这类攻击到底该如何预防呢?以下,趋势科技给出了总结方案: 采用防火墙应对大规模攻击

转载-浅谈Ddos攻击攻击与防御

EMail: jianxin#80sec.comSite: http://www.80sec.comDate: 2011-2-10From: http://www.80sec.com/ [ 目录 ]一 背景二 应急响应三 常见ddos攻击及防御四 根源及反击五 总结 一 背景 在前几天,我们运营的某网站遭受了一次ddos攻击,我们的网站是一个公益性质的网站,为各个厂商和白帽子之间搭建一个平台以传递安全问题等信息,我们并不清楚因为什么原因会遭遇这种无耻的攻击.因为我们本身并不从事这种类型的攻击,这

不可不知 DDoS的攻击原理与防御方法

DoS攻击.DDoS攻击和DRDoS攻击相信大家已经早有耳闻了吧!DoS是Denial of Service的简写就是拒绝服务,而DDoS就是Distributed Denial of Service的简写就是分布式拒绝服务,而DRDoS就是Distributed Reflection Denial of Service的简写,这是分布反射式拒绝服务的意思. 不过这3中攻击方法最厉害的还是DDoS,那个DRDoS攻击虽然是新近出的一种攻击方法,但它只是DDoS攻击的变形,它的唯一不同就是不用占领

DDoS 攻击与防御:从原理到实践(上)

欢迎访问网易云社区,了解更多网易技术产品运营经验. 可怕的 DDoS 出于打击报复.敲诈勒索.政治需要等各种原因,加上攻击成本越来越低.效果特别明显等趋势,DDoS 攻击已经演变成全球性的网络安全威胁. 危害 根据卡巴斯基 2016Q3 的调查报告,DDoS 攻击造成 61% 的公司无法访问其关键业务信息,38% 的公司无法访问其关键业务,33% 的受害者因此有商业合同或者合同上的损失.  趋势 总结来看,现在的 DDoS 攻击具有以下趋势: 1. 国际化 现在的 DDoS 攻击越来越国际化,而

Kali Linux 渗透测试之拒绝服务攻击及防御

作为渗透测试人员,有时候需要对客户的系统进行DDOS攻击测试,那么这个时候就需要我们有一款合格的测试工具.而在Kali Linux上就集成了一些DDOS测试工具供测试者使用,下面就简单介绍一些测试工具. kali下的拒绝服务攻击: D(D)OS........................................1 yersinia......................................2 hping3................................

Linux之DNS服务器搭建及常见DNS攻击和防御

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析).DNS协议运行在UDP协议之上,使用端口号53. 主机名到IP地址的映射有两种方式: 1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用: 2)动态映射,建立一套域名解析系统(DNS),只在

DDos/CC攻击单靠单独硬防有用?

网络虽然可以让人快速暴富,但也存在着不可避免的困扰.比如一些游戏或者人气站点很容易受到同行攻击或索要保护费等.DDOS与CC攻击是最为常见,其中DDOS流量攻击最为致命 也是最难防御的.除非依靠庞大的网络带宽及硬件防火墙才能缓解或与之抗衡,但真实的费用将是天文数字.即使有能力租用,但频繁掉线与速度卡又成了越来越多客户头疼而又不得不面对的现实.更何况作为机房而言,不可能把所有的带宽会让一家入住公司给霸占 .毕竟一家经营性机房是由多家ISP公司入住经营的,所以单独依靠硬件防火墙去抗衡DDOS攻击的话

分布式拒绝服务(DDOS)攻击发展趋势

分布式拒绝服务 (DDoS) 攻击虽然已不是一个新概念,但其攻击效果却非常有效.近年来,DDoS 攻击的强度和数量不断上升,但攻击时间却通常仅持续数小时.攻击者轻而易举就可实施攻击,并给目标公司带来毁灭性打击.特别是目前极为常见的放大攻击,此类攻击支持小型僵尸网络入侵大型目标.攻击过程中,攻击者向第三方服务发送欺骗性流量,并向攻击目标提供回复.为放大响应流量,攻击者会选择使用智能查询技术,从而导致产生大量服务回复.例如,它可能会向 DNS 服务器重复请求所有记录,或使用 NTP 服务器的 mon