Я пытаюсь создать DNS-трассировщик для отслеживания пути, по которому dns-запрос идет к месту назначения, чтобы убедиться, что он не перенаправляется и не перехватывается.Используя инструмент dnstraceroute
, все работает отлично, и я могу обнаружить демонстрационные спуфинговые атаки, которые я провел.Я написал этот код, используя scapy, чтобы сделать то же самое:
from scapy.all import *
import time
for i in range(1, 28):
pkt = IP(dst='8.8.4.4', ttl=i) / UDP(sport=RandShort(),dport=53)/DNS(id = 102, qd=DNSQR(qname="www.google.com"))
# Send the packet and get a reply
reply = sr1(pkt, verbose=0)
if reply is None:
# No reply =(
print(i+ " ======[-]=====")
elif reply.type == 3:
# Destination Unreachable Message
print ("Done!", reply.src)
break
else:
# We're somewhere in the middle
print ("%d hops away: " % i , reply.src)
time.sleep(1)
Он отлично работает, и я вижу путь, как и ожидалось.Но, когда я перенаправляю DNS-запросы на мою машину злоумышленника, я не могу обнаружить перенаправление.Исходный сервер DNS в моей сети отвечает на первый пакет DNS (где значение ttl равно 1) с пакетом ICMP, даже если компьютер-злоумышленник получил пакет раньше.Но опять же, используя инструмент dnstraceroute
, машина-злоумышленник отвечает на этот пакет, и я вижу его адрес в выводе.
Я открыл wireshark и попытался найти что-то другое между пакетами, но они 'почти все то же самое. Вот DNS-пакет, сгенерированный моим сценарием , и Вот DNS-пакет, который был отправлен dnstraceroute
.
Я не могу понятьиз того, что имеет значение.Заранее спасибо!