Почему я не вижу адрес атакующего в пути DNS - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь создать 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.

Я не могу понятьиз того, что имеет значение.Заранее спасибо!

...