(SEED-Lab) DNS_Local Attack Lab

(SEED-Lab) DNS_Local Attack Lab

欢迎大家访问我的GitHub博客

https://lunan0320.cn

一、实验目标

掌握DNS以及它的工作方式
学会如何设置DNS
执行DNS cache poisoning attack
伪造DNS response
包的嗅探和伪造
使用Scapy工具

二、实验原理

此处使用的是本地DNS 攻击,DNS的过程也就是将域名转换为IP地址的过程。
在这种解析发生的过程中很容易发起攻击,此处就是针对在DNS解析的过程中发起的攻击。

三、实验过程Part I Setting Up a Local DNS Server

DNS_Server 、DNS_User、以及DNS_Attacker的IP地址如下表
Host IP
DNS_Server 10.0.2.5
DNS_User 10.0.2.6
DNS_Attacker 10.0.2.8

3.1 Task 1: Confifigure the User Machine

打开的是User作为Victim的主机,去修改其resolv.conf文件夹下的head文件,DNS服务器的IP为表格中的DNS_Server
在这里插入图片描述
并执行使其生效的命令。
在这里插入图片描述
此时UserMachine就配置好了。
需要注意的是,此处修改文件需要root权限,没有root权限是无法执行成功的。
此时,使用dig命令去探测一台主机。此处lunan0320.cyou是我自己使用的域名。
在这里插入图片描述
在这个过程中通过抓包观察,分析DNS数据包可以看到,User先将query发送给DNS_Server,然后有DNS_Server去执行接下来的query过程。
在这里插入图片描述
需要注意的是,此处的结果是因为这台虚拟机已经自动配置好了DNS Server部分,因此,直接就可以看到了成功的状态。

3.2 Task 2: Set up a Local DNS Server

Step 1: Confifigure the BIND 9 server

修改指定文件即可
在这里插入图片描述

Step 2: Turn off DNS SEC

在这里插入图片描述
关闭DNS的防御机制

Step 3: Start DNS server

在修改完文件之后,需要重启DNS服务器,使得修改生效。
在这里插入图片描述

Step 4: Use the DNS server

此处,ping www.baidu.com
在这里插入图片描述
使用抓包工具,分析DNS过程。可以看到DNS Server已经生效。对于User发送的数据包,先到了DNS_Server,然后由DNS_Server向其他主机发送DNS请求报文。
在这里插入图片描述

3.3 Task 3: Host a Zone in the Local DNS Server

Step 1: Create zones

此处是为了创建区域条目,直接根据提示在文件/etc/bind/named.conf 中添加相应内容即可。
在这里插入图片描述

Step 2: Setup the forward lookup zone fifile

设置forward lookup zone fifile,也是直接在当前目录/etc/bind下创建example.com.db
在这里插入图片描述

Step 3: Set up the reverse lookup zone fifile

设置reverse lookup zone fifile,也是直接在当前目录下添加192.168.0.db文件即可。
在这里插入图片描述

Step 4: Restart the BIND server and test

重启服务器后,需要dig命令到www.example.com,发现配置成功。
在这里插入图片描述

需要注意的是,此处是在Uer-machine中执行dig命令,起初一直在DNS_Server中执行dig,出错。

四、实验过程Part II Attacks on DNS

Task 4: Modifying the Host File

此处是要求在user中去修改/etc/hosts 文件,从而将在user中添加恶意ip地址与域名www.bank32.com的映射,以使得user在访问该域名的时候,不会去查询远程的DNS服务器,而是直接根据映射关系,得到对应的IP地址。
在未修改时,使用ping命令去查询该域名,可以看到,得到了真实的IP地址,即31.102.136.180。
在这里插入图片描述
在/etc/hosts中添加如下条目,其中10.0.2.8就是攻击者的IP地址。
在这里插入图片描述
在修改之后去ping该域名的时候,就可以看到,此时就是得到的我刚刚添加的IP地址,也就是攻击者的IP了。
在这里插入图片描述

Task 5: Directly Spoofifing Response to User

在上一个程序中只是演示了一下这个过程,但是上一个题目的权力过大,因此,在这里假设的是一种直接在局域网中嗅探的方式。
流程如下图所示:
在这里插入图片描述
使用的是netwox的105命令。其中需要自己构造的部分在文档中已经给出。
在这里插入图片描述
在这里插入图片描述
构造的攻击程序如下:
sudo netwox 105 --hostname “www.example.net” --hostnameip “6.6.6.6” --authns “HACK.com” --authnsip “8.8.8.8”

首先是在没有攻击的情况下,在user机器上执行dig www.example.net命令。
得到的结果如下,是正常的情况。
在这里插入图片描述

接着在Attacker端执行攻击命令,并在user端dig 命令,得到回显。
在这里插入图片描述
可以看到,左侧的是Attacker的内容,显示的是构造出来的伪造的DNS response包
右侧是User收到的dig www.example.net之后收到的数据包.
此时,通过攻击,www.example.net对应的ip地址被伪造为了6.6.6.6。对应的域名伪造的是HACK.com,其ip是8.8.8.8。
说明攻击成功了!

Task 6: DNS Cache Poisoning Attack

此处需要实现的是攻击的是DNS Server,而不是前面的User machine。
对于DNS Server的cache中没有的域名,它会向其他的DNS Server请求。
当DNS Server从别的服务器找到了对应的answer,它就会将这个answer存储在本地(当然,是在有效期之内)。
此处,作为攻击者需要在别的DNS Server返回answer之前,将结果返回,才可以攻击成功。
此处,首先需清空DNS Server的Cache。
在这里插入图片描述
在构造命令的时候,我查阅了netwox 105的使用说明。
h是目的域名,H是目的域名的ip,a是这个DNS Server的域名,A 是该DNS Server的ip地址。除此之外,T是ttl有效期。
在这里插入图片描述
接着,在Attacker中执行攻击命令。
设置了6分钟的有效期。
需要注意的是:这里需要设置raw格式,否则,还要对Mac地址伪造。
在这里插入图片描述
同时,在User Machine中执行dig命令。
可以看到,攻击是成功的,成功伪造了6.6.6.6的ip地址。
在这里插入图片描述
在这里插入图片描述
抓包分析这个过程,也可看到,此时的DNS Server已经被污染,cache中给user返回的是我们伪造的Domain信息。
在这里插入图片描述
在这里插入图片描述
此处,去查看返回的数据包的信息。也可看到这个伪造的过程。
在这里插入图片描述

接着去DNS Server中查看此时的缓存是否对www.example.net进行了错误的映射。
可以看到,此时的DNS Server的cache已经成功的被污染。
在这里插入图片描述

Task 7: DNS Cache Poisoning: Targeting the Authority Section

在之前的攻击中,影响的只是www.example.net的映射关系,但是当使用dig命令去查询别的域名的时候,就会得到正确的映射关系。也就是说,需要再次发起对DNS Server的攻击才可以攻击其他域名的请求。
此处是为了前面域名的改进。通过修改Authority Section,伪造一个reply。需要将ns.attacker32.com缓存到nameserver中,之后的查询都将先到该DNS Server中查询。
在Attacker中执行python程序,执行攻击。
在这里插入图片描述
在User中可以看到,成功伪造,并且中间的域名服务器是ns.attacjer32.com
在这里插入图片描述
此时,在DNS Server中查看ns.attacker32.com是否已经成功映射。
可以看到,User的NS成功被污染。
在这里插入图片描述
在这个过程中,也能追踪域名返回的信息内容。抓包分析如下。
在这里插入图片描述
在这里插入图片描述
此处需要注意的是python代码的执行需要使用的是python2而不是python3,当使用python3执行的时候,会提示以下错误。
在这里插入图片描述

Task 8: Targeting Another Domain

Task8实验的目的是为了在Task7的基础上,对其扩展到其他的领域。也就是说,当查询example.net的时候,将attacker32.com也作为google.com的name server.
根据Guideline提示,书写了攻击代码如下
在这里插入图片描述
在Attacker中运行攻击代码程序
在这里插入图片描述
在User Machine中执行dig命令后,可以看到,同时在Authority Section段出现了example.net以及google.com这两个name server
在这里插入图片描述
抓包分析可以看到两个name server.
在这里插入图片描述
在这里插入图片描述
此时查看DNS Server的Cache,可以看到name Server只有一条。
在这里插入图片描述

Task 9: Targeting the Additional Section

此处是需要攻击的是DNS 的Addition字段。需要对Additional Section中写入更多的东西。
同样类似Task8,很容易得到Additonal段的代码。
此处,是对Addsec变量做调整,以及根据指导书中的提示完成即可。
在这里插入图片描述
在这里插入图片描述
接着在Attacker中运行攻击代码,在User Machine中执行dig命令。可以看到,成功对Additonal字段做出了修改。出现了三段。
在这里插入图片描述
抓包分析这个过程。
可以看到,都是按照预期的结果进行,确实成功response了这个结果。
在这里插入图片描述
在这里插入图片描述
然后查看DNS Server的缓存cache,发现www.facebook.com是没有添加进来的。
在这里插入图片描述

四、参考文献

[1] 如何伪造DNS响应? (biancheng.net)
http://c.biancheng.net/view/6460.html
[2] netwox使用说明_逗倪豌儿-CSDN博客_netwox
https://blog.csdn.net/u013636775/article/details/109456175
[3]
https://gbhackers.com/dns-attack/#:~:text=DNS%20Attack%20is%20a%20type%20of%20cyber%20attack,aspect%20of%20our%20life%20is%20around%20the%20internet.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值