Автор перевода: GooDWin

w00w00!

Привет, люди, вы можете не знать, что такое Хакинг (или Спуфинг) DNS
ID. Хакинг DNS ID - это необычный способ хакинга/спуфинга. Этот метод основан на уязвимости самого механизма DNS. Грубо говоря хакинг/спуфинг DNS ID -
очень эффективен и очень силен, так как нет поколения DNS демонов, которые позволяют избежать этого (даже
WinNT!).

Объяснение механизма работы DNS

На первом этапе вы должны знать, как работает DNS. Я объясню только наиболее важные детали этого протокола. Для того, чтобы сделать это, мы
проследим пакет DNS запроса от A до Z!

1: клиент (bla.bibi.com) посылает запрос на разрешение домена "www.heike.com".
Для трансляции имени bla.bibi.com использует "dns.bibi.com" для DNS. Давайте
взглянем на следующую картинку.

111.1.2.123 = bla.bibi.com
111.1.2.222 = dns.bibi.com
формат: 
IP_АДРЕС:ПОРТ->IP_АДРЕС:ПОРТ
пример: 
111.1.2.123:2999->111.1.2.222:53

gethosbyname("www.heike.com");

[bla.bibi.com] [dns.bibi.com] 
111.1.2.123:1999 --->[?www.heike.com]------> 111.1.2.222:53

Здесь мы видим наш запрос на разрешение имени из
нашего порта 1999,  который посылается на 53
порт dns.

[примечание: DNS всегда на порту 53]

Теперь, когда dns.bibi.com получил запрос на
трансляцию имени в IP от bla.bibi.com, dns.bibi.com, он должен
сопоставить это имя с адресом, давайте посмотрим,
как это происходит...

[dns.bibi.com] [ns.internic.net]
111.1.2.222:53 -------->[dns?www.heike.com]----> 198.41.0.4:53

dns.bibi.com запрашивает ns.internic.net, который является корневым сервером имен для адреса www.heike.com, и если там нет этого, то он посылает запрос серверу имен, который отвечает за '.com' домены.

[примечание: мы запрашиваем internic, так как он мог содержать этот запрос в своем кеше]

[ns.internic.net] [ns.bibi.com]
198.41.0.4:53 ------>[ns for.com это 144.44.44.4]------> 111.1.2.222:53

Здесь мы можем увидеть, как ns.internic.net отвечает ns.bibi.com (чей
DNS отвечает за домен bibi.com), что вышестоящий сервер имен
- for.com, его IP адрес 144.44.44.4 [позвольте назвать его ns.for.com]. Теперь наш ns.bibi.com
запрашивает у ns.for.com адрес www.heike.com:

[ns.bibi.com] [ns.for.com]
111.1.2.222:53 ------>[?www.heike.com]-----> 144.44.44.4:53

Ответ от ns.for.com

[ns.for.com] [ns.bibi.com]
144.44.44.4:53 ------>[ns для heike.com это 31.33.7.4]---> 144.44.44.4:53

Теперь, когда мы знаем, какой IP адрес имеет отвечающий за домен
"heike.com" [назовем его ns.heike.com], мы запрашиваем у него IP машины на www
[затем www.heike.com :)].

[ns.bibi.com] [ns.heike.com]
111.1.2.222:53 ----->[?www.heike.com]----> 31.33.7.4:53

И теперь мы по крайней мере получили наш ответ!!
Уф... Утрем лоб платочком. 

[ns.heike.com] [ns.bibi.com]
31.33.7.4:53 ------->[www.heike.com == 31.33.7.44] ----> 111.1.2.222:53

Великолепно, у нас есть ответ, теперь мы можем переслать его нашему клиенту
на bla.bibi.com.

[ns.bibi.com] [bla.bibi.com]
111.1.2.222:53 ------->[www.heike.com == 31.33.7.44]----> 111.1.2.123:1999

Хе-хе, теперь bla.bibi.com знает IP адрес www.heike.com 🙂

Итак, все круто, у нас наконец то есть адрес.
Теперь давайте представим, что мы хотим узнать имя машины по
этому IP, чтобы сделать это, мы продолжим несколько иным путем. так
как нам нужно трансформировать:

пример: 
100.20.40.3 станет 3.40.20.100.in-addr.arpa

Внимание!! Этот метод только для запроса разрешения IP (обратный
DNS).

Итак давайте посмотрим практически, когда мы возьмем IP www.heike.com
(31.33.7.44 или "44.7.33.31.in-addr.arpa" после перевода его в понятный DNS формат).

...
gethostbyaddr("31.33.7.44");
...

[bla.bibi.com] [ns.bibi.com]
111.1.2.123:2600 ----->[?44.7.33.31.in-addr.arpa]-----> 111.1.2.222:53

Мы шлем наш запрос на ns.bibi.com

[ns.bibi.com] [ns.internic.net]
111.1.2.222:53 ----->[?44.7.33.31.in-addr.arpa]------> 198.41.0.4:53 

ns.internic.net пошлет IP сервера имен, который ответственен за '31.in-addr.arpa'.

[ns.internic.net] [ns.bibi.com]
198.41.0.4:53 --> [DNS для 31.in-addr.arpa - 144.44.44.4] -> 111.1.2.222:53

Теперь ns.bibi.com запросит то же самое у DNS на 144.44.44.4.

[ns.bibi.com] [ns.for.com]
111.1.2.222:53 ----->[?44.7.33.31.in-addr.arpa]------> 144.44.44.4:53

и так далее...
Фактически механизм тот же, что был использован для разрешения имени.

Я надеюсь вы поняли диалог, по которому работает DNS. Теперь давайте
изучим формат DNS сообщений.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии