DDOS攻击

Posted Zovt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DDOS攻击相关的知识,希望对你有一定的参考价值。

一、实验目的

  1. 理解DDOS攻击原理
  2. 使用TFN2K发起攻击

二、实验环境

  1. 系统环境:Windows环境,kail环境
  2. 软件环境:TFN2K

三、实验原理

  1. DDOS攻击原理
    分布式拒绝服务攻击的英文意思是DistributedDenialofService,简称DDOS。它利用在已经侵入并已控制的不同的高带宽主机(可能是数百,甚至成千上万台)上安装大量的DOS服务程序,他们等待来自中央攻击控制中心的命令,中央攻击控制中心适时启动全体受控主机的DOS服务进程,让它们对一个特定目标发送尽可能多的网络访问请求,形成一股DOS洪流冲击目标系统,猛烈的DOS攻击同一个网站。在寡不敌众的力量抗衡下,被攻击的目标网站会很快失去反应而不能及时处理正常的访问甚至系统瘫痪、崩溃。
  2. DDOS攻击角色分析

    从上图可以看出,DDOS攻击分为三层:攻击者、主控端、代理端,三者在攻击中扮演者不同的角色。
    (1)攻击者
    攻击者所用的计算机可以是网络上的任何一台主机,甚至可以是一个活动的便携机。攻击者操作整个攻击过程,它向主控端发送攻击命令。
    (2)代理端
    代理端同样也是攻击者入侵并控制的一批主机,它们上面运行攻击者程序,接受和运行主控端发来的命令。代理端主机是攻击的执行者,真正向受害者主机发送攻击。

三.DDOS攻击流程

攻击者发起DDOS攻击的第一步,就是寻找在Internet上有漏洞的主机,进入系统后在其上面安装后门程序,攻击者入侵的主机越多,他的攻击队伍就越壮大。第二步在入侵主机上安装攻击程序,其中一部分主机充当攻击的主控端,一部分主机充当攻击的代理端。最后各部分主机各司其职,在攻击者的调遣下对攻击对象发起攻击。由于攻击者在幕后操作,所以在攻击时不会受到监控系统的跟踪,身份不容易被发现。

四.TFN2K简介

  • TFN2K是由德国著名黑客Mixter编写的分布式拒绝服务攻击工具,是同类攻击工具TFN的后续版本。

  • TFN2K通过主控端利用大量代理端主机的资源进行对一个或多个目标的协同攻击。当前互联网中的UNIX,Solaris和WindowsNT等平台的主机能被用于此类攻击,而且这个工具非常容易被移植到其他系统平台上。

  • TFN2K由两部分组成:在主控端主机上的客户端和代理端主机上的守护进程。主控端向其他代理端发起攻击指定的目标主机列表。代理端据此对目标进行拒绝服务攻击。有一个主控端控制的多个代理端主机,能够在攻击过程中相互协同,保证攻击的连续性。主控端和代理端的网络通讯是经过加密的,还可能混杂了许多虚假数据包。整个TFN2K网络可能使用不同的TCP,UDP或ICMP包进行通讯,而且主控端还能伪造其IP地址。所有这些特征都使发展防御TFN2K攻击的策略和技术都非常困难或效率低下。

  • TFN2K常用攻击命令:

-f 这个参数后面跟文本文件名,就是真正实现DDOS攻击
-h DOS攻击也就是单机,一对一的攻击,后面跟一个主机或IP地址
-p 后面指定一个端口
-c 最关键的参数,一共由11个选项:
0 停止攻击
1 反欺骗等级设定,因为TFN这个工具在攻击的时候所发出的数据包是带有源地址的,但是源地址是随机的,也就是说地址不是你自己给的,所以不用担心会反查到你的IP地址
2 改编数据包的包尺寸:缺省的ICMP/8,smurf,udp攻击缺省使用最小包,可以通过改变每个包的有效载荷的字节增加它的大小
3 绑定rootshell:启动一个会话服务,然后连接一个指定端口就可以得到一个rootshell
4 UDP洪水攻击:这个攻击是利用这样一个事实:每个UDP包被送往一个关闭的端口,这样就会有一个ICMP不可达到的信息返回,增加了攻击的能力
5 SYN洪水攻击:这个攻击由规律的送虚假的链接请求。结果会是目标端口拒绝服务,添满TCP连接表,通过对不存在主机的TCP/RST响应增加攻击潜力,是标准的拒绝服务攻击
6 ICMP响应(ping)攻击:这个攻击发送虚假地址的ping请求,目标主机会回送相同大小的响应包
7 SMURF攻击:用目标主机的地址发送ping请求以广播扩大,这样目标主机将得到回复一个多倍的回复
8 MIX攻击:按照1:1:1的关系交替的发送UDP,SYN,ICMP包,这样就可以对付路由器,其它包转发设备,NIDS,sniffers等,轮播轰炸
9 TARGA3攻击
10 远程命令执行,这个参数是TFN的附加功能,其实TFN的攻击不仅仅是DOS,还可以远程的进行明令控制
  • 控制命令:
./tfn -f hostext -c 10 -i "mkdir /root/edison"在所有的HOST上root目录建立edison,-i后面跟“命令”
./tfn -f hostext -c 4 -i x.x.x.x 使用hostext文件中记录的主机对x.x.x.x服务器进行UDP攻击
./tfn -f hostext -c 5 -i x.x.x.x -p xxxx 使用hostext文件中记录的主机对x.x.x.x服务器进行TCP拒绝服务攻击
./tfn -f hostext -c 6 -i x.x.x.x 使用hostext文件中记录的主机对x.x.x.x服务器进行ICMP攻击

四、实验步骤:

  • 本次实验使用TFN2K进行DDOS攻击。
  • TFN2K安装:
    在进行攻击之前,需对TFN2K进行安装,其安装压缩包在实验工具文件夹中提供。打开kali虚拟机,解压实验文件夹中的tfn2k.tar文件,解压文件如下图所示:

    双击进入TFN2K文件夹,并在此文件夹中打开终端,如下图所示:

    在终端输入命令make命令编译源文件,在此期间会要求输入通信密钥,该密钥可以任意输入,此处输入12345678,这里输入密码最少8为,这个必须记住是调用代理端td进程的唯一认证,如下图所示:

    输入密钥之后点击回车,编译完成后,生成执行文件tfn与td,如下图所示:
  • tfn为主控端,通过此程序对代理端加密、下发攻击指令。Td为代理端,负责解密、接受攻击命令并发起攻击。代理端和主控端之间的网络通讯是进行加密的,使用的是AES对此加密算法,所以作为加密、解密的双方都需要知道密钥,加密方使用密钥对信息进行加密,解密方使用密钥对信息解密。
  • 在tfn2k中,作为下发控制命令的主控端利用密钥对发送信息进行加密,作为接受命令的代理端则利用密钥对接受的信息进行解密并执行命令,与此同时代理端可以通过密钥确定主控端身份。
  • tfn2k攻击:
    此次实验虚构背景为攻击者已经攻破了目标机器并且可以上传任意文件,便可以将td代理程序植入目标机器中并将其运行。
    通过ssh远程连接傀儡机,傀儡机的IP:192.168.70.137

    攻击者植入td程序后,首先将其运行,运行td程序命令./td

    查看系统进程,命令:ps -a ,从图中可以得知td程序已于后台运行并监听来自主控端的命令,准备对目标主机发起攻击
  • 确定td程序运行之后可以首先进行测试,测试td程序是否能够接受到主控端的命令并且执行命令。例如主控端发送命令让td程序在目标主机中新建test文件夹,若test文件夹被成功创建说明td程序正常运行。
  • 在进行攻击测试之前需要在主控端新建一个代理主机文件(ip.txt),并且将代理主机的IP地址加入进去,新建代理主机文件以及添加IP地址的命令如下:
    touch ip.txt
    echo “192.168.70.137”>ip.txt
  • 通过主控端tfn程序发送新建test文件夹的命令给代理端来进行简单的控制测试,通过tfn攻击命令在傀儡机tmp目录下新建test文件夹,命令如下:
    ./tfn -f ip.txt -c 10 -i "mkdir /tmp/test"
    打开tmp目录,发现test文件夹创建成功,通信正常

    打开傀儡机的tmp目录下,发现test文件夹已经成功被创建

    确认主控端与代理端通讯正常后,便可以开始对目标主机进行攻击。启动window7虚拟机,Windows7虚拟机为被攻击目标机器。获取Windows7虚拟机的IP地址,打开wireshark I/O图表,从I/O图标中可以得知每秒钟收发数据包数仅为两位数,如下如所示:

    主控端向代理端开始发起攻击指令,命令代理端向目标机器发起SYN泛洪攻击。指令如下(192.168.70.139为被攻击电脑Windows7虚拟机IP),输入通信密钥后点击回车,代理端接受到主控端的命令开始对目标机器发起SYN泛洪攻击,如下图所示:
    攻击命令:./tfn -f ip.txt -c 5 -i 192.168.70.139

    在Windows7虚拟机中查看wireshark抓包结果可以得知接受到了大量的数据包,如下图所示:

    在I/O图表中可以得知每秒捕获数万个数据包

    主控端向代理端下发停止攻击指令,如下图:
    停止攻击命令:./tfn -f ip.txt -c 0
  • 结论:利用一台傀儡机进行攻击,便可以每秒捕获上万伪造数据包,却明显感觉被攻击的操作系统开始卡顿,若有更多的机器同时发起攻击,无疑会造成的后果将更加严重。

DDoS攻击防御方法

  1. 过滤不必要的服务和端口:可以使用Inexpress、Express、Forwarding等工具来过滤不必要的服务和端口,即在路由器上过滤假IP。比如Cisco公司的CEF(Cisco Express Forwarding)可以针对封包Source IP和Routing Table做比较,并加以过滤。只开放服务端口成为目前很多服务器的流行做法,例如WWW服务器那么只开放80而将其他所有端口关闭或在防火墙上做阻止策略。
  2. 异常流量的清洗过滤:通过DDOS硬件防火墙对异常流量的清洗过滤,通过数据包的规则过滤、数据流指纹检测过滤、及数据包内容定制过滤等顶尖技术能准确判断外来访问流量是否正常,进一步将异常流量禁止过滤。单台负载每秒可防御800-927万个syn攻击包。
  3. 分布式集群防御:这是目前网络安全界防御大规模DDOS攻击的最有效办法。分布式集群防御的特点是在每个节点服务器配置多个IP地址(负载均衡),并且每个节点能承受不低于10G的DDOS攻击,如一个节点受攻击无法提供服务,系统将会根据优先级设置自动切换另一个节点,并将攻击者的数据包全部返回发送点,使攻击源成为瘫痪状态,从更为深度的安全防护角度去影响企业的安全执行决策。
  4. 高防智能DNS解析:高智能DNS解析系统与DDOS防御系统的完美结合,为企业提供对抗新兴安全威胁的超级检测功能。它颠覆了传统一个域名对应一个镜像的做法,智能根据用户的上网路线将DNS解析请求解析到用户所属网络的服务器。同时智能DNS解析系统还有宕机检测功能,随时可将瘫痪的服务器IP智能更换成正常服务器IP,为企业的网络保持一个永不宕机的服务状态。

什么是DDoS攻击?如何抵御DDos攻击?

什么是DDoS攻击?如何抵御DDos攻击?

单纯的土豆 2016-05-23

安全报道显示2015年DDoS攻击强度创下新纪录,那么DDoS到底是什么呢?了解一些,对产品经理与后台的同事沟通有好处。

分布式拒绝服务(DDoS:Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。

技术分享图片

如何理解DDoS攻击

一群恶霸试图让对面那家有着竞争关系的商铺无法正常营业,他们会采取什么手段呢?(只为举例,切勿模仿)

恶霸们扮作普通客户一直拥挤在对手的商铺,赖着不走,真正的购物者却无法进入;或者总是和营业员有一搭没一搭的东扯西扯,让工作人员不能正常服务客户;也可以为商铺的经营者提供虚假信息,商铺的上上下下忙成一团之后却发现都是一场空,最终跑了真正的大客户,损失惨重。

此外恶霸们完成这些坏事有时凭单干难以完成,需要叫上很多人一起。嗯,网络安全领域中DoS和DDoS攻击就遵循着这些思路。

攻击方式

DDoS攻击通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。

这种攻击方式可分为以下几种:

  • 通过使网络过载来干扰甚至阻断正常的网络通讯;

  • 通过向服务器提交大量请求,使服务器超负荷;

  • 阻断某一用户访问服务器;

  • 阻断某服务与特定系统或个人的通讯。

IP Spoofing

IP欺骗攻击是一种黑客通过向服务端发送虚假的包以欺骗服务器的 DDOS攻击示意图做法。

具体说,就是将包中的源IP地址设置为不存在或不合法的值。服务器一旦接受到该包便会返回接受请求包,但实际上这个包永远返回不到来源处的计算机。

这种做法使服务器必需开启自己的监听端口不断等待,也就浪费了系统各方面的资源。

LAND attack

这种攻击方式与SYN floods类似,不过在LAND attack攻击包中的原地址和目标地址都是攻击对象的IP。

这种攻击会导致被攻击的机器死循环,最终耗尽资源而死机。

ICMP floods

ICMPfloods是通过向未良好设置的路由器发送广播信息占用系统资源的做法。

Application

与前面叙说的攻击方式不同,Application level floods主要是针对应用软件层的,也就是高于OSI的。

它同样是以大量消耗系统资源为目的,通过向IIS这样的网络服务程序提出无节制的资源申请来迫害正常的网络服务。

攻击原理

拒绝服务攻击即攻击者想办法让目标机器停止提供服务或资源访问。这些资源包括磁盘空间、内存、进程甚至网络带宽,从而阻止正常用户的访问。

其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。

拒绝服务攻击问题也一直得不到合理的解决,究其原因是因为这是由于网络协议本身的安全缺陷造成的,从而拒绝服务攻击也成为了攻击者的终极手法。

攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:

  • 一是迫使服务器的缓冲区满,不接收新的请求;

  • 二是使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接。

虽然同样是拒绝服务攻击,但是DDOS 和DOS 还是有所不同

DDOS的攻击策略侧重于通过很多“僵尸主机”(被攻击者入侵过或可间接利用的主机)向受害主机发送大量看似合法的网络包, 从而造成网络阻塞或服务器资源耗尽而导致拒绝服务。

分布式拒绝服务攻击一旦被实施, 攻击网络包就会犹如洪水般涌向受害主机, 从而把合法用户的网络包淹没, 导致合法用户无法正常访问服务器的网络资源, 因此, 拒绝服务攻击又被称之为 “洪水式攻击” 。

常见的 DDOS 攻击手段有 SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood 等。

而 DOS 则侧重于通过对主机特定漏洞的利用攻击导致网络栈失效、系统崩溃、 主机死机而无法提供正常的网络服务功能, 从而造成拒绝服务。

常见的 DOS 攻击手段有 T earDrop、 Land、 Jolt、 IGMP Nuker、 Boink、 Smurf、 Bonk、OOB 等。

就这两种拒绝服务攻击而言,危害较大的主要是 DDOS 攻击,原因是很难防范,至于 DOS 攻击,通过给主机服务器打补丁或安装防火墙软件就可以很好地防范。

DDOS 的表现形式主要有两种:

  • 一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞, 合法网络包被虚假的攻击包淹没而无法到达主机;

  • 另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或CPU 被内核及应用程序占完,造成的无法提供网络服务。

如何判断网站是否遭受了流量攻击?

如何判断网站是否遭受了流量攻击可通过 Ping 命令来测试,若发现 Ping 超时或丢包严重(假定平时是正常的),则可能遭受了流量攻击,此时若发现和你的主机接在同一交换机上的服务器也访问不了, 基本可以确定是遭受了流量攻击。

当然, 这样测试的前提是你到服务器主机之间的 ICMP 协议没有被路由器和防火墙等设备屏蔽, 否则可采取 T elnet 主机服务器的网络服务端口来测试,效果是一样的。

不过有一点可以肯定,假如平时 Ping 你的主机服务器和接在同一交换机上的主机服务器都是正常的,突然都 Ping 不通了或者是严重丢包,那么假如可以排除网络故障因素的话则肯定是遭受了流量攻击,再一个流量攻击的典型现象是,一旦遭受流量攻击,会发现用远程终端连接网站服务器会失败。

如何判断网站是否遭受了资源耗尽攻击?

相对于流量攻击而言, 资源耗尽攻击要容易判断一些, 假如平时 Ping 网站主机和访问网站都是正常的,发现突然网站访问非常缓慢或无法访问了,而 Ping 还可以 Ping 通,则很可能遭受了资源耗尽攻击 。

此时若在服务器上用Nistat -na命令观察到有大量的SYN_RECEIVED、TIME_W AIT、FIN_W AIT_1 等状态存在,而EST BLISHED 很少,则可判定肯定是遭受了资源耗尽攻击。

还有一种属于资源耗尽攻击的现象是,Ping 自己的网站主机 Ping 不通或者是丢包严重,而 Ping 与自己的主机在同一交换机上的服务器则正常,造成这种原因是网站主机遭受攻击后导致系统内核或某些应用程序 CPU 利用率达到 100%无法回应 Ping 命令,其实带宽还是有的,否则就 Ping 不通接在同一交换机上的主机了。

当前主要有三种流行的 DDOS

1、SYN/ACK Flood 攻击:

这种攻击方法是经典最有效的 DDOS 方法, 可通杀各种系统的网络服务, 主要是通过向受害主机发送大量伪造源 IP 和源端口的 SYN 或 ACK 包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务。

由于源都是伪造的故追踪起来比较困难, 缺点是实施起来有一定难度, 需要高带宽的僵尸主机支持。

少量的这种攻击会导致主机服务器无法访问, 但却可以 Ping 的通, 在服务器上用 Netstat -na 命令会观察到存在大量的 SYN_RECEIVED 状态,大量的这种攻击会导致 Ping 失败、TCP/IP 栈失效,并会出现系统凝固现象,即不响应键盘和鼠标。普通防火墙大多无法抵御此种攻击。

2、TCP 全连接攻击:

这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过滤 T earDrop、Land 等 DOS 攻击的能力。

但对于正常的 TCP 连接是放过的,殊不知很多网络服务程序(如:IIS、Apache 等 W eb 服务器)能接受的 TCP 连接数是有限的,一旦有大量的 TCP 连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问。

TCP 全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的 TCP 连接,直到服务器的内存等资源被耗尽而被拖跨, 从而造成拒绝服务, 这种攻击的特点是可绕过一般防火墙的防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的 IP 是暴露的,因此容易被追踪。

3、刷 Script 脚本攻击:

这种攻击主要是针对存在 ASP、JSP、PHP、CGI 等脚本程序,并调用 MSSQLServer、MySQLServer、Oracle 等数据库的网站系统而设计的,特征是和服务器建立正常的 TCP 连接, 并不断的向脚本程序提交查询、 列表等大量耗费数据库资源的调用。

一般来说, 提交一个 GET 或 POST 指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此请求却可能要从上万条记录中去查出某个记录, 这种处理过程对资源的耗费是很大的, 常见的数据库服务器很少能支持数百个查询指令同时执行。

而这对于客户端来说却是轻而易举的, 因此攻击者只需通过 Proxy 代理向主机服务器大量递交查询指令, 只需数分钟就会把服务器资源消耗掉而导致拒绝服务。

常见的现象就是网站慢如蜗牛、ASP 程序失效、PHP 连接数据库失败、数据库主程序占用 CPU 偏高。

这种攻击的特点是可以完全绕过普通的防火墙防护, 轻松找一些 Proxy 代理就可实施攻击, 缺点是对付只有静态页面的网站效果会大打折扣,并且有些 Proxy 会暴露攻击者的 IP 地址。

怎么抵御 DDOS

仅仅依靠某种系统或产品防住 DDOS 是不现实的, 可以肯定的是, 完全杜绝 DDOS是不可能的,但通过适当的措施抵御 90%的 DDOS 攻击是可以做到的。

基于攻击和防御都有成本开销的缘故,若通过适当的办法增强了抵御 DDOS 的能力,也就意味着加大了攻击者的攻击成本,那么绝大多数攻击者将无法继续下去而放弃,也就相当于成功的抵御了DDOS 攻击。

1、采用高性能的网络设备引

首先要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、 口碑好的产品。

再就是假如和网络提供商有特殊关系或协议的话就更好了,当大量攻击发生的时候请他们在网络接点处做一下流量限制来对抗某些种类的DDOS 攻击是非常有效的。

2、尽量避免 NAT 的使用

无论是路由器还是硬件防护墙设备要尽量避免采用网络地址转换 NAT 的使用, 因为采用此技术会较大降低网络通信能力。

其实原因很简单,因为 NAT 需要对地址来回转换,转换过程中需要对网络包的校验和进行计算,因此浪费了很多 CPU 的时间,但有些时候必须使用 NA T,那就没有好办法了。

3、充足的网络带宽保证

网络带宽直接决定了能抗受攻击的能力, 假若仅仅有 10M 带宽的话, 无论采取什么措施都很难对抗当今的 SYNFlood 攻击, 至少要选择 100M 的共享带宽,最好的当然是挂在1000M 的主干上了。

但需要注意的是,主机上的网卡是 1000M 的并不意味着它的网络带宽就是千兆的, 若把它接在 100M 的交换机上, 它的实际带宽不会超过 100M, 再就是接在 100M的带宽上也不等于就有了百兆的带宽, 因为网络服务商很可能会在交换机上限制实际带宽为10M,这点一定要搞清楚。

4、升级主机服务器硬件

在有网络带宽保证的前提下,请尽量提升硬件配置,要有效对抗每秒 10 万个 SYN 攻击包,服务器的配置至少应该为:P4 2.4G/DDR512M/SCSI-HD。

起关键作用的主要是 CPU 和内存, 若有志强双 CPU 的话就用它吧, 内存一定要选择 DDR 的高速内存, 硬盘要尽量选择SCSI 的,别只贪 IDE 价格不贵量还足的便宜,否则会付出高昂的性能代价,再就是网卡一定要选用 3COM 或 Intel 等名牌的,若是 Realtek 的还是用在自己的 PC 上吧。

5、把网站做成静态页面

大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦,至少到为止关于 HTML 的溢出还没出现,新浪、搜狐、网易等门户网站主要都是静态页面。

若你非需要动态脚本调用, 那就把它弄到另外一台单独主机去,免的遭受攻击时连累主服务器, 当然, 适当放一些不做数据库调用脚本还是可以的。

此外,最好在需要调用数据库的脚本中拒绝使用代理的访问, 因为经验表明使用代理访问你网站的80%属于恶意行为。

以上是关于DDOS攻击的主要内容,如果未能解决你的问题,请参考以下文章

DDoS攻击都有哪些防御方法?怎么做好防御工作?

php--防止DDos攻击代码

开源服务器 Jenkins 曝漏洞,可用于发动 DDoS 攻击

1.7 Tbps!Memcached DDoS攻击峰值再次刷新!

1.7 Tbps!Memcached DDoS攻击刷新纪录!

ddos攻击是啥?怎么阻止服务器被ddos?