一、背景

1.拒绝服务攻击即是攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。
2.其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。
3.拒绝服务攻击问题也一直得不到合理的解决,究其原因是因为网络协议本身的安全缺陷,从而拒绝服务攻击也成为攻击者的终极手法。
拒绝服务攻击并不是一个攻击方式,而是一类具有相似特征的攻击方式的集合。
4.黑客可能会利用TCP/IP协议层中数据 链路层、网络层、传输层和应用层各种协议漏洞发起拒绝服务攻击。下面按照这些协议的顺序来介绍一下各种拒绝服务攻击以及实现的方法。

二、数据链路层的拒绝服务攻击

1.数据链路层发起的拒绝服务攻击方式
它的攻击目标是二层交换机。
这种攻击方式的目的并不是要二层交换机停止工作,而是要二层交换机以一种不正常的方式工作

什么是交换机不正常的工作方式呢? 让交换机成为 “集线器

根据交换机的特性:当CAM表被填满时,收到未知单播帧,会将这个帧进行广播处理。这时受到攻击的交换机实际上已经退化成了集线器了。这时黑客只需要在自己的计算机上将网卡设置为混杂模式,就可以监听整个网络的通信了。

一个专门用来完成这种攻击的工具 –macof ,这个工具的使用方法很简单,下面给出了这个工具的使用格式。

Usage: macof[-s src][-d dst][-e tha][-x sport][-y dport][-i interface][-n times]

在实际应用中,这里面的参数只有-i是会使用到的,这个参数用来指定发送这些伪造数据包的网卡。

使用macof的方法很简单,然后输入macof即可启动这个工具。

root@kali:~# macof

交换机在遭到攻击之后,内部的CAM表很快就被填满。
交换机退化成集线器,会将收到的数据包全部广播出去,从而无法正常向局域网提供转发功能,实现的过程很简单。

2.操作步骤
(1)第一步:构造随机MAC和IP,scapy模块中的**RandMAC()RandIP()**可以很方便地实现这一点,也可以生成固定网段IP,如 RandIP(“192.168.1.*”)

运行结果:

构造其他形式的随机包:

(2)第二步:数据包中包含指定的源IP和MAC,那么交换机就会记录,例如ARP包。
*Ether(src=RandMAC(),dst=“FF:FF:FF:FF:FF:FF”)/ARP(op=2,scr=“0.0.0.0”,hwdst=“FF:FF:FF:FF:FF:FF”)/Padding(load="X"18)

或者ICMP包:
Ether(src=RandMAC(),dst=RandMAC())/IP(src=RandIP(),dst=RandIP())/ICMP()

模拟macof的完整代码如下

三、网络层的拒绝服务攻击

位于网络层的协议包括ARP、IP和ICMP等,
其中,ICMP主要用来在IP主机、路由器之间传递控制消息。
平时检测网络连通情况时使用的Ping命令就是基于ICMP的。

仍然使用Ping命令来尝试一下。
这次将ICMP数据包设置的足够大,Ping命令发送的数据包大小可以使用 -1 来指定(这个值一般指定为65500),这样构造好的数据包被称作“死亡之Ping”,因为早期的系统无法处理这么大的ICMP数据包,在接收到这种数据包之后就会死机
现在的系统则不会出现这种问题,但是可以考虑使用这种方式向目标连续地发送这种“死亡之Ping”来消耗目标主机的资源

现在的操作系统和CPU完全有能力处理这个数量级的数据包。

既然对方能够承受这个速度的数据包了,那么这里的拒绝服务攻击也就没有效果了,必须想办法提高发送到目标的数据包的数量
主要有两个办法,一是同时使用多台计算机发送ICMP数据包(),二是提高发送的ICMP数据包的速度。

另外,除了像上面这种使用本机地址不断地向目标发送ICMP包的方法之外,还有两种方法,一是使用 随机地址 不断向目标发送ICMP包,二是 向不同的地址不断发送以受害者的IP地址为源IP地址的数据包。这种攻击模式里,最终淹没目标的洪水不是由攻击者发出的,也不是伪造IP发出的,而是正常通信的服务器发出的

除了前面使用的RandIP(),还可以使用下面的方法模拟出一个随机IP地址。

i.src=“%i.%i.%i.%i” %(random.randint(1,254),random.randint(1,254),random.randint(1,254),random.randint(1,254))
id.dst=""
send(IP(dst=“1.2.3.4”)/ICMP())

下面给出了一个完整的攻击程序

使用WireShark来捕获发出的数据包,可以看到快速地以1.1.1.1向各个地址发送ICMP请求,这个地址在收到了请求之后,很快就会向1.1.1.1发回应答。这就是第三种攻击方式

四、传输层的拒绝服务攻击

1.TCP(Transmission Control Protocol,传输控制协议

是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的SYN执行ACK确认。这种建立连接的方法可以防止产生错误的连接。

2.TCP三次握手的过程如下
(1)客户端向服务器端发送SYN(SEQ=x)数据包,并进入SYN_SEND状态。
(2)服务器端在收到客户端发出的SYN报文之后,回应一个SYN(SEQ=y)ACK(ACK=x+1)数据包,并进入SYN_RECV状态。
(3)客户端收到服务器端的SYN数据包,回应一个ACK(ACK=y+1)数据包,进入Established状态。

3.不同于针对ICMP和UDP的拒绝服务攻击方式,基于TCP的攻击方式是面向连接的。只需要和目标主机的端口建立大量的TCP连接,就可以让目标主机的连接表被填满,从而不会再接收任何新的连接。

基于TCP的拒绝攻击方式有两种:
一种是和目标端口完成三次握手,建立一个完整连接
另一种是只和目标端口完成三次握手中的前两次,建立的是一个不完整的连接

攻击方会向目标端口发送大量设置了SYN标志位的TCP数据包,受攻击的服务器会根据这些数据包建立连接,并将连接的信息存储在 连接表 中,而攻击方不断地发送SYN数据包,很快就会将连接表填满,此时受攻击的服务器就无法接收新来的连接请求了。

攻击方会向目标端口发送大量设置了SYN标志位的TCP数据包,受攻击的服务器会根据这些数据包建立连接,并将连接的信息存储在 连接表 中,而攻击方不断地发送SYN数据包,很快就会将连接表填满,此时受攻击的服务器就无法接收新来的连接请求了。

pdst= “%i.%i.%i.%i” % (random.randint(1,254),random.randint(1,254),random.randint(1,254),random.randint(1,254))

攻击目标时使用TCP,端口为80,将标志位设置为syn。

TCP(dport=80, flags=“S”)

下面给出完整的程序

执行这段程序,将参数设置为192.168.0.116,使用WireShark捕获这些数据包,执行的结果如图

五、应用层的拒绝服务攻击

位于应用层的协议比较多,常见的有HTTP、FTP、DNS、DHCP等。这里面的每个协议都可能被利用来发起拒绝服务攻击

DHCP为例,DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中地管理、分配IP地址,使网络环境中的主机动态地获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。

一次DHCP的过程如图

DHCP攻击的目标也是服务器( DHCP ),怀有恶意的用户伪造大量DHCP请求报文发送到服务器,这样DHCP服务器地址池中的IP地址会很快就分配完毕,从而导致合法用户无法申请到IP地址。
同时大量的DHCP请求也会导致服务器高负荷运行,从而导致设备瘫痪。

首先编写一段程序来搜索网络中的DHCP服务器,只需要在网络中广播DHCP的discover数据包,源端口为68,目标端口为67.这个构造的过程涉及多个层次。

dhcp_discover = Ether(dst=“ff:ff:ff:ff:ff:ff”)/IP(src=“0.0.0.0”,dst=“255.255.255.255”)/UDP(sport=68,dport=67)/BOOTP()/DHCP(options=[(“message-type”,“discover”),“end”])

完整的程序如下所示。

这时可以打开WireShark,并将过滤器设置为udp,然后执行上面的这个程序

分析得到的数据包,可以看出来网络中有一个DHCP服务器,地址为192.168.26.254。
这个程序也可以用来检测网络中的 非法DHCP服务器

在这一节中用到两个工具,
一个是Yersinia,这是一个十分强大的拒绝服务攻击工具,另一个是Metasploit

Yersinia进行DHCP攻击实验,这是一款图形化工具,在命令行中输入“yersinia -G”就可以以图形化界面的形式启动这款工具。

root@kali:~# yersinia -G

基于DHCP的攻击中一共提供了4种发包形式,这4种模式的含义如下所示。
(1)sending RAW packet: 发送原始数据包。
(2)sending DISCOVER packet:发送请求获取IP地址数据包,占用所有的IP,造成拒绝服务。
(3)creating DHCP rogue server:创建虚假DHCP服务器,让用户连接,真正的DHCP无法工作。
(4)sending RELEASE packet:发送释放IP请求到DHCP服务器,致使正在使用的IP全部失效。

理论上,所有提供连接的协议都可能会受到拒绝服务的攻击,Metasploit中提供了很多用于各种协议的拒绝服务攻击模块,可以启动Metasploit,并在其中查询使用对应的模块。

root@kali:~# msfconsole

成功启动Metasploit之后,可以使用search命令来查找与DoS(拒绝服务攻击)相关的模块

仍然使用这里的模块对目标进行一次SYN拒绝服务攻,使用auxiliary/dos/tcp/synflood模块来完成这个攻击。首先选择对应的模块:

msf > use auxiliary/dos/tcp/synflood

使用show opinions来查看这个模块的参数

synflood这个模块需要的参数包括RHOST、RPORT、SNAPLEN和TIMEOUT,后面的三个参数都有默认值,所以需要设置的只有RHOST,这也正是要发起拒绝服务攻击服务器的IP地址。这个目标必须是对外提供HTTP服务的服务器。

将参数设置为目标192.168.26.101

然后就可以使用exploit命令发起攻击

如果事先获得了关于目标的足够信息,也可以利用目标主机上一些特定的服务进行拒绝服务攻击。
例如很多人都拥有两台以上的计算机.一台在单位,另外一台在家里,如果上班时间没有完成全部工作,回到家中可以远程连接到单位的计算机。但是这需要计算机提供远程控制的服务.
Windows操作系统中就提供了远程桌面协议,这是一个多通道的协议,用户可以利用这个协议(客户端或称“本地计算机”)连上提供微软终端机服务的计算机(服务器端或称“远程计算机”)。

但是微软提供的这个服务被发现存在一个编号为MS12-020的漏洞,Windows在处理某些RDP报文时Terminal Server存在错误,可被利用造成服务停止响应。默认情况下,任何Windows操作系统都未启用远程桌面协议(RDP)。没有启用RDP的系统不受威胁。

还是在Metasploit中启动对应的模块:

msf > use auxiliary/dos/windows/rdp/ms12_020_maxchannelids

使用“show options”来查看这个模块所要使用的参数

这个模块的参数也十分简单,只需要设置一个RHOST即可,这也就是目标的IP地址,在这里将其设置为192.168.0.116

设置完攻击目标之后,就可以对目标发起攻击,使用run命令发起攻击:如成功,会使主机down机

Python渗透测试编程技术-拒绝服务攻击相关推荐

  1. Python渗透测试编程技术--------身份认证攻击(一)

    Python渗透测试编程技术 身份认证攻击 目前最为常见的身份验证模式采用的仍然是"用户名+密码"的方式,用户自行设定密码在登录时如果输入正确的密码,计算机就会认为操作者是合法用户 ...

  2. python渗透测试编程技术基础书评_【新手必看】渗透测试学习书籍推荐

    Web综合渗透方向 <Web安全攻防:渗透测试实战指南> 该书出版于2018-7,全书416页,涉及知识面虽广,但90%的知识点都不深入,在新手层面相对深入讲解了SQL注入的利用:知识排序 ...

  3. 《Python渗透测试编程技术:方法与实践》:信息的利用

    第六章.对漏洞进行渗透(基础部分) 本章学习如何开发一个漏洞渗透模块,选择的目标是一款简单的软件FreeFloat FTP Server.这款软件早期的版本存在一个栈溢出漏洞,因此被人利用从而发生远程 ...

  4. 《Python渗透测试编程技术:方法与实践》:网络嗅探与欺骗

    第八章 网络嗅探与欺骗 漏洞渗透程序在网络中都以数据包形式传输,如果能对网络中的数据包进行分析,就可以深入掌握渗透原理,另外,很多网络攻击方法都是利用精心构造的数据包来完成,例如常见的ARP欺骗,利用 ...

  5. 《Python黑帽子:黑客与渗透测试编程之道》读书笔记(九):自动化攻击取证

    目录 前言 1.Volatility配置 2.抓取口令的哈希值 3.直接代码注入 4.插入shellcode 结语 前言 <Python黑帽子:黑客与渗透测试编程之道>的读书笔记,会包括书 ...

  6. 《Python黑帽子:黑客与渗透测试编程之道》读书笔记(四):web攻击

    目录 前言 1.urllib2 2.开源web应用安装 3.破解目录和文件位置 4.破解HTML表格认证 结语 前言 <Python黑帽子:黑客与渗透测试编程之道>的读书笔记,会包括书中源 ...

  7. 关于《Python黑帽子:黑客与渗透测试编程之道》的学习笔记

    本篇文章是学习<Python黑帽子:黑客与渗透测试编程之道>的笔记,会持续地将书上的代码自己敲一遍,从而让自己对Python的安全编程有更多的了解,同时希望各位可以给给建议,不足之处太多了 ...

  8. 《Python黑帽子:黑客与渗透测试编程之道》读书笔记(五):扩展burp代理

    目录 前言 1.burp的fuzz脚本 2.burp中利用Bing服务 3.利用网站内容生成密码字典 结语 前言 <Python黑帽子:黑客与渗透测试编程之道>的读书笔记,会包括书中源码, ...

  9. 《Python黑帽子:黑客与渗透测试编程之道》读书笔记(三):scapy——网络的掌控者

    目录 前言 1.窃取email认证 2.ARP缓存投毒 3.PCAP文件处理 结语 前言 <Python黑帽子:黑客与渗透测试编程之道>的读书笔记,会包括书中源码,并自己将其中一些改写成P ...

最新文章

  1. 图像拼接--Seam Carving for Content-Aware Image Resizing
  2. Python面向对象编程:类继承和其衍生术语
  3. DivCo: Diverse Conditional Image Synthesis via Contrastive Generative Adversarial Network
  4. Delphi7 (第一天:类的编写)续
  5. 简单说说:JavaSE、JavaEE、JavaME这三大体系
  6. GPUImage – 像素色值亮度平均(漫画效果) GPUImageAverageLuminanceThresholdFilter
  7. php json_decode NULL
  8. Combating Adversarial Misspellings with Robust Word Recognition
  9. SSM-jsp页面放在web-INF下受保护,读取出现404页面tomcat获取不到资源-问题解决配置docBase
  10. C#属性默认值设置(model实体类)
  11. 唐宇迪opencv-背景建模
  12. linux php 集成安装,1.2.2 XAMPP-Linux版PHP集成化安装包
  13. 传统企业如何开启O2O营销模式?
  14. Python之通过API获取数据库数据及图片
  15. python爬虫简单入门级,小白讲说
  16. win10固态硬盘分区 整数_台式机械硬盘怎么安装?机械硬盘安装图解教程(SATA固态可参考)...
  17. 海思Hi3516dv300屏幕调试MIPI TX接口LCD屏幕(京东方JD9366)
  18. 隐藏的区别:display:none 和visibility:hidden
  19. 都才40出头,近一个月已有至少5名优秀青年学者英年早逝!健康不容忽视
  20. 小记:vue-cli3.0项目 eslint 保存 控制台飘红问题error

热门文章

  1. Android Crash signal 4 (SIGILL), code 1 (ILL_ILLOPC), fault addr b56cb106
  2. Spring Boot Web应用集成Keycloak进阶之细粒度权限控制
  3. 写给互联网大厂员工的真心话,醍醐灌顶!
  4. 我大抵是卷上瘾了,横竖睡不着!竟让一个Bug,搞我两次!
  5. 栓奶牛:二分更胜DP一筹
  6. python朋友圈教程_Python 生成你的朋友圈九宫格图片
  7. Unity中通过场景切换但音乐继续播放
  8. python中find函数是什么意思_find函数什么意思
  9. 10_Mysql查询
  10. 【docker】top命令报错 “TERM environment variable not set.”