DOS(denial of service--拒绝服务)攻击的目的是使服务正常功能不可用。不像其他类型的攻击的目的是获取敏感信息,Dos攻击是不会威胁到敏感信息而是使合法用户不能使用服务。有时候Dos在其他攻击中也会存在一定的作用,比如使web应用防火墙拒绝服务,从而绕过防火墙。

DOS与DDOS的区别

Dos是拒绝服务攻击,而DDOS是分布式拒绝服务攻击;Dos与DDOS都是攻击目标服务器、网络服务的一种方式。Dos是利用自己的计算机攻击目标,也是一对一的关系,而DDOS是DoS攻击基础之上产生的一种新的攻击方式,利用控制成百上千台肉鸡,组成一个DDOS攻击群,同一时刻对目标发起攻击。

从理论上来说,无论目标服务器、网络服务的资源多大,也是带宽、内存、CPU多大,都无法避免Dos与DDOS攻击,因此任何资源再大也有一个极限值,比如说,一台服务器每秒可以处理1000个数据包,而通过DOS攻击给这台服务器发送1001个数据包,这时服务器无法正常运行,需要给服务器扩容。 从技术上来说,DOS和DDOS都是攻击目标服务器的带宽和连通性,使得目标服务器的带宽资源耗尽,无法正常运行。

DOS的类型

DOS攻击可以分为两个大类,一个是应用层攻击一个网路层攻击。那么我们首先要了解层的概念,这里的层是OSI模型中的层级划分,包括:应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层。下图就是OSI模型的简单介绍:

网络和传输层攻击

这种攻击方式通常是向服务器发送恶意流量,尽可能消耗服务器的资源来达到拒绝服务的目的。

TCP SYN floods

SYN洪水攻击在传输层,为了更好的理解这种类型的攻击,我们需要先了解TCP的三次握手。

先来看张图如下:

对照上图来理解一下:

第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;

第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。 完成了三次握手,客户端和服务器端就可以开始传送数据。

想要了解更多关于tcp关于三次握手的技术细节,可以参看我朋友的公众号,有想学习java的也可以关注一下,传送门点我。

如果攻击者发送足够的SYN数据包,因为服务器的并发TCP连接数量有限所以会导致服务器没有更多的资源可用。 如果服务器达到限制,在现有的处于SYN-RCVD状态的连接超时之前则不能在建立新的连接,这就造成了拒绝服务攻击。

SYN洪水攻击测试工具,我们可以用hping3,下载地址:http://www.hping.org/hping3.html

命令:

1 简单例子: hping3 -S --flood -V -p TARGET_PORT TARGET_SITE

2 随机源IP: hping3 -c 20000 -d 120 -S -w 64 -p TARGET_PORT --flood --rand-source TARGET_SITE

UDP floods

UDP协议是无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

由于UDP协议是无连接性的,所以只要开了一个UDP的端口提供相关服务的话,那么就可针对相关的服务进行攻击。这种攻击的原理是通过伪造的IP向目标服务器发送大量的UDP数据包,服务器在接收到数据包后无法处理每一条请求,并且通过向服务器发送ICMP "destination unreachable"来消耗其带宽。

测试工具:

1 hping3 命令:hping3 --flood --rand-source --udp -p TARGET_PORT TARGET_IP

2 loic 下载地址: https://sourceforge.net/projects/loic/

TCP FIN Flood

这种FIM标志的数据包只有在TCP建立连接之后才会被接受,如果没有建立TCP连接,那么这个标志的数据包将会被简单的删除处理。

如果攻击者只是在没有建立TCP连接的情况下对服务器进行泛洪攻击,那么FIN数据包将会别丢弃,但是服务器还是会分配一些资源来查看数据包防止冗余。

这种攻击很容易被实现。

测试工具:hping3

命令:hping3 --flood --rand-source -F -p TARGET_PORT TARGET_IP

TCP RST Flood

TCP中的RST包的意思是立即断开连接,当连接出错需要停止掉的时候非常有用。

如果攻击者能够以某种方式查看从源到目的地的流量,则可以发送具有适当值的RST报文(源IP,目的IP,源端口,目的端口,序列号等),该报文将断开源和目的地之间的TCP连接。 这也是一种拒绝服务的方式。

RST泛洪的测试工具也是hping3

命令:hping3 --flood --rand-source -R -p TARGET_PORT TARGET_IP

PUSH and ACK Flood

通过大量的PUSH和ACK泛洪可以是服务器停止对正常用户的请求进行响应。

测试工具:hping3 和 LOIC

命令:hping3 --flood --rand-source -PA -p TARGET_PORT TARGET_IP

ICMP and IGMP Floods

ICMP(Internet Control Message Protocol--Internet控制消息协议)和IGMP(Internet Group Management Protocol--Internet组管理协议)是网络层的协议类似于UDP。ICMP递送状态消息,错误报告,回答某些请求,报告路由信息,并且常用于测试网络的连通性和排查问题。IGMP是IP网络上的系统和相邻路由用来建立和维护多播组成员关系的协议。

ICMP and IGMP Floods类似于UDP不需要任何漏洞,只需要发送大量的ICMP或IGMP数据包,在处理每一个数据包的时候资源消耗殆尽导致拒绝服务。

测试工具:hping3

命令:hping3 --flood --rand-source -1 -p TARGET_PORT TARGET_IP

放大攻击

利用回复包比请求包大的特点(放大流量),伪造请求包的源IP地址,将应答包引向被攻击的目标。例如:攻击者伪造源IP为目标的IP然后使用路由广播IP地址向多个IP发送消息,然后这些设备都向目标IP进行回应。如图:

想要使用放大攻击必须使用不需要验证源IP的无连接协议,像DNS、ICMP( Smurf attack)、UDP(Fraggle attack)等协议。

Smurf Attack

攻击者会选择一些中间站点作为放大器,然后发送巨大数量ICMP(ping)请求到这些中间站点的广播IP。通过这种方式,将所有的源IP改为目标的IP地址,这些中间地址将这些数据包广播到所有子网的主机。最后所有主机的回应都发回给目标。

测试工具:hping3

命令:hping3 --icmp --spoof TARGET_IP BROADCAST_IP

DNS Amplification

当前许多DNS服务器支持EDNS。EDNS是DNS的一套扩大机制,RFC 2671对此有介绍。一些选择能够让DNS回复超过512字节并且仍然使用UDP,如果要求者指出它能够处理这样大的DNS查询的话。攻击者已经利用这种方法产生了大量的通讯。通过发送一个60个字节的查询来获取一个大约4000个字节的记录,攻击者能够把通讯量放大66倍。一些这种性质的攻击已经产生了 每秒钟许多GB的通讯量,对于某些目标的攻击甚至超过了每秒钟10GB的通讯量。

下面看两个图,正常的查询:

下面是放大攻击的图:

对比上面的连个图,发下放大攻击之后有大量的数据查询后的响应数据包返回给受害者的机器,这样就造成了对受害者的拒绝服务攻击。

测试工具:Tsunami

下载地址: https://www.infosec-ninjas.com/tsunami

测试命令:

1 收集dns服务器 ./tsunami -o recursive_dns.txt -l 4 -e 172.0.0.0/8

2 对目标进行攻击 ./tsunami -s TARGET_IP -n pentest.blog -p 3 -f recursive_dns.txt

Fraggle Attack

攻击者向UDP端点发送大量的欺骗UDP洪促使这些端口回应目标。

应用层攻击

应用层攻击也叫第七层攻击,可以实行DoS和DDoS攻击,这种类型的攻击是基于模仿人的行为。

可能被利用的协议包括HTTP、HTTPS、DNS、SMTP、FTP、VOIP和其他的应用协议

HTTP泛洪

HTTP泛洪是应用层攻击中最常见的攻击方式。

这种类型的攻击可以尝试使用HTTP GET或者POST方式向服务器发出请求。通常来说需要多个电脑同时发出请求。

测试工具:

1 LOIC

2 hulk http://www.sectorix.com/2012/05/17/hulk-web-server-dos-tool/

命令:python hulk.py -site http://TARGET.com/test/

3 Apache JMeter https://jmeter.apache.org/

DNS泛洪

DNS泛洪像其他洪水攻击一样,DNS泛宏攻击的目的是向DNS应用发送大量DNS请求。DNS服务器不堪重负,无法处理来自其他用户的所有合法请求。

测试工具:

1 mz http://www.perihel.at/sec/mz/

命令:mz -A rand -B TARGET_DNS_SERVER -t dns "q=pentest.blog" -c 10000000

2 netstressng https://sourceforge.net/projects/netstressng/

命令:netstress.fullrandom -d TARGET_DNS_SERVER -a dns -t a -n 4 -P 53

Low和Slow攻击

这个攻击不像其他的泛洪攻击,他不需要大量的数据流量。这种类型的攻击针对的是应用程序和服务器资源。

这种方式很难被检测,因为其流量跟正常流量没什么两样。

测试工具:https://github.com/llaera/slowloris.pl

这个工具的原理就是通过打开多个连接并保持连接,直到服务器无法处理跟多的http请求,导致拒绝服务。

总结

这里说了这么多关于拒绝服务的方式,我知道这些内容并不是很全,而且解释的也比较简单,没有深入去解释各种协议,这些基础的东西就需要大家自行去研究学习。这里只是做一个简要介绍做个笔记。里面涉及的攻击就只能请大家自行测试了 。

浅谈ddos的测试方式相关推荐

  1. 浅谈 DDoS 攻击与防御

    浅谈 DDoS 攻击与防御 原创: iMike 运维之美  什么是 DDoS DDoS 是英文 Distributed Denial of Service 的缩写,中文译作分布式拒绝服务.那什么又是拒 ...

  2. 终端软件测试风险,浅谈三大终端测试 - 测试泡泡 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    浅谈三大终端测试 K#JCx8q6v0文章出处:新浪科技 作者:李波 马治国 孙元宇 发布时间:2005-11-01 ac"x"E h)?+CywU3J0WCDMA.CDMA200 ...

  3. 浅谈尾递归的优化方式

    在上文<尾递归与Continuation>里,我们谈到了尾递归的概念和示例,不过有些朋友对于尾递归的功效依然有所怀疑.因此现在,我再简单讲解一下尾递归的优化原理,希望能给大家以一定理性认识 ...

  4. 浅谈Ddos攻击攻击与防御

    EMail: jianxin#80sec.com Site: http://www.80sec.com Date: 2011-2-10 From: http://www.80sec.com/ [ 目录 ...

  5. 浅谈互联网金融测试平台规划

    浅谈互联网金融测试平台规划 最近,测试团队的测试平台逐渐成型,记得16年我刚来公司时做的一个规划,打算将测试平台建设起来,谈谈自己的一些理解和体会,算是事后为这个事情的一种复盘:最早测试平台规划时,我 ...

  6. 浅谈DDOS攻击,你以为的白嫖???

    浅谈DDOS攻击,你以为白嫖的免费的软件真的好用吗? 一个网络安全小白的无聊时刻! 很多人都知道ddos攻击的原理是通过傀儡机控制大量的搜集向目标端口发送数据包导致目标ip的网络瘫痪那么什么是肉鸡呢? ...

  7. 浅谈TC8数据链路层测试

    当今时代,智能汽车已成为一个炙手可热的话题,各种先进汽车电子技术蓬勃发展,比如自动驾驶.V2X.OTA......这些新技术的背后都离不开车载以太网通信技术的支持.其中数据链路层实现了链路管理.虚拟局 ...

  8. 测试老司机浅谈软件敏捷测试是否写测试用例?

    件敏捷测试是否写测试用例 敏捷测试是否写测试用例?答案多种化如果是你,你会选用写还是不用写呢? 软件测试时代风起云涌,问题虽小,意义却大,让大家一起学习一起探讨! 经过大家的水深火热的探讨答案出来了, ...

  9. 浅谈如何管理测试团队

    巧妇难为无米之炊,管理团队,还得从招人说起.测试团队怎么招人呢?首先参考下测试团队的一般组成.一个小规模的团队,一般由功能测试.自动化测试以及性能测试这三种职位组成.一个较大的团队,还可能有配置管理员 ...

最新文章

  1. rest api_REST API
  2. 解决.Net Core跨域问题
  3. 浙江理工大学2019年4月赛
  4. python 图表 web_Web | Django 与 Chart.js 联用做出精美的图表
  5. 前端工作面试问题(下)
  6. 深度学习基础(一)起源
  7. 华为鸿蒙与magic,如果荣耀Magic3搭载了屏下镜头和鸿蒙系统,你会做第一批吗?...
  8. [jstl] forEach标签使用
  9. TCP/IP,HTTP,Socket的区别与联系
  10. 轻松搞定 Nginx 配置的好工具!
  11. 全能型AI!用通用预训练感知模型处理多模态多任务!商汤西交港中文提出:Uni-Perceiver...
  12. 【工具推荐】光影魔术手
  13. APUE实战篇1:在Ubuntu环境搭载apue的环境
  14. Android 照相机
  15. 产品经理素质能力模型
  16. GetDc与GetWindowDc的含义
  17. osgEarth示例分析——osgearth_features
  18. JPG、GIF、PNG和BMP格式的图片各有什么优点和缺点
  19. JavaScript 静态方法
  20. Linux7配置team聚合链之主备模式

热门文章

  1. 【软件测试】现状问题及对策
  2. linux 命令 ppt,linux基本命令的使用.ppt
  3. 跟狼叔聊了一夜,终于搞明白了 Serverless 是什么
  4. CAXA CAD工艺图表 2022,打造高效数字化制造新纪元
  5. 转一篇好文 -- 《单靠低成本的软件外包企业前景不容乐观》
  6. 开发中常见的低级错误--被自己气哭
  7. lnmp部署Ansible部署zabbix6.0版本
  8. python获取DeepMind发布的文章
  9. (转)深度学习前沿算法思想
  10. raspberry pi 3b 无显示器,无路由器安装教程