Каждый новый пакет, отправленный атакующим будет отличаться от предыдущего только измененными значениями полей «ID» и «Номер порта» (таблица 4.6).
Таблица 4.6. «Шторм» ложных DNS-ответов
Адрес отправителя |
Адрес получателя |
ID |
Номер порта |
Ответ на DNS-запрос |
IP-адрес DNS-сервера |
IP-адрес «жертвы» |
ID1 |
Номер порта1 |
IP-адрес атакующего |
IP-адрес DNS-сервера |
IP-адрес «жертвы» |
ID2 |
Номер порта2 |
IP-адрес атакующего |
IP-адрес DNS-сервера |
IP-адрес «жертвы» |
IDi |
Номер портаi |
IP-адрес атакующего |
IP-адрес DNS-сервера |
IP-адрес «жертвы» |
IDn |
Номер портаn |
IP-адрес атакующего |
Требования, предъявляемые к полученному от DNS-сервера ответу заключается в том чтобы:
- IP-адреса отправителя ответа совпадал с IP-адресом DNS-сервера.
- В DNS-ответе должно быть указано то же имя, что и в DNS-запросе.
- DNS-ответ должен быть направлен на тот же UDP-порт, с которого был послан DNS-запрос.
- В DNS-ответе поле идентификатор запроса в заголовке DNS (ID) должно содержать то же значение, что и в переданном DNS-запросе.
Внедрение в Internet ложного сервера путем создания направленного «шторма» ложных DNS-ответов на атакуемый хост:
а) атакующий создает направленный "шторм" ложных DNS-ответов на атакуемый хост (рисунок 4.14);
б) Атакуемый хост посылает DNS-запрос и немедленно получает ложный DNS-ответ (рисунок 4.15);
в) фаза приема, воздействия и передачи перехваченной информации на ложном сервере (рисунок 4.16).
Рисунок 4.14 - «Шторм» ложных DNS-ответов
В качестве объекта атаки обычно выбирается активный клиент сети. Ставка делается на то, что клиент будет пытаться связаться с каким-либо широко известным сервером. Методом простого перебора UDP-портов клиента и идентификаторов DNS-запросов ложный сервер DNS атакует потенциальную жертву «штормом» ложных ответов.
Рисунок 4.15 - Получение ложного DNS-ответа
Рисунок 4.16 - Работа сети во время атаки
Кроме того, следует помнить, что корпоративная сеть всегда имеет несколько серверов DNS, причем приоритет их для клиента хакеру заранее не известен. Поэтому если цель атаки - проникновение внутрь корпоративной сети, то ложный сервер DNS должен генерировать ответы от имени всех серверов DNS сети, что приведет к резкому снижению производительности соединения «локальная сеть – Internet» на длительный промежуток времени [41].
Данная атака основана на удаленном запросе (на поиск IP адреса сервера) от одного DNS-сервера к другому. Если указанное в запросе имя не обнаружено в базе данных имен запрашиваемого DNS-сервера, то запрос отсылается на один из корневых DNS-серверов (другими словами DNS-сервер сам является инициатором удаленного DNS-поиска). В этой связи атакующий может направить атаку непосредственно на DNS-сервер. В качестве цели атаки теперь будет выступать не хост, а DNS-сервер и ложные DNS-ответы будут направляться атакующим от имени корневого DNS-сервера на атакуемый DNS-сервер.
При этом важно учитывать следующую особенность работы DNS-сервера. Для ускорения работы каждый DNS-сервер кэширует в области памяти свою таблицу соответствия имен и IP-адресов хостов. В том числе в кэш заносится динамически изменяемая информация об именах и IP-адресах хостов, найденных в процессе функционирования DNS-сервера, а именно, если DNS-сервер, получив запрос, не находит у себя в кэш-таблице соответствующей записи, он пересылает ответ на следующий сервер и, получив ответ, заносит найденные сведения в кэш-таблицу в память (рисунок 4.17). Таким образом, при получении следующего запроса DNS-серверу уже не требуется вести удаленный поиск, так как необходимые сведения уже находятся у него в кэш-таблице. Cтановится очевидно, что в том случае, если в ответ на запрос от DNS-сервера атакующий направит ложный DNS-ответ (или в случае «шторма» ложных ответов будет вести их постоянную передачу), то в кэш-таблице сервера появится соответствующая запись с ложными сведениями и в дальнейшем все хосты, обратившиеся к данному DNS-серверу, будут дезинформированы, и при обращении к хосту, маршрут к которому атакующий решил изменить, связь с ним будет осуществляться через хост атакующего по схеме «Ложный объект». И с течением времени эта ложная информация, попавшая в кэш DNS-сервера, будет распространяться на соседние DNS-серверы высших уровней, а, следовательно, все больше хостов будут дезинформированы и атакованы.
В случае если атакующий компьютер не может перехватить DNS-запрос от DNS-сервера, для реализации атаки ему необходим «шторм» ложных DNS-ответов, направленный на DNS-сервер. При этом необходимо подбирать значение поля ID. Это обстоятельство делает практическую реализацию данной атаки очень трудноосуществимой. Ложный ответ должен быть получен целевым сервером в промежуток времени с момента посылки запроса и до момента прихода ответа от настоящего сервера, что на практике составляет не более нескольких секунд. За этот интервал времени атакующему необходимо послать 216 ложных ответов со всеми возможными значениями id, а в случае незнания порта эта цифра увеличивается еще в несколько десятков раз (обычно между серверами используется 53 порт). Поскольку размер IP-пакета, содержащего ложный ответ, составляет около 100 байт, то перед атакующим ставится задача пересылки нескольких мегабайт информации за несколько секунд, что в подавляющем большинстве случаев неосуществимо. Поскольку ложный сервер DNS в общем случае не знает, когда клиент обратится с DNS-запросом по конкретному узлу, «шторм» ложных ответов должен продолжаться достаточно долго, чтобы атака была результативной [4].
Внедрение в Internet ложного сервера путем создания направленного «шторма» ложных DNS-ответов на атакуемый DNS-сервер:
- атакующий создает направленный «шторм» ложных DNS-ответов от имени одного из корневых DNS-серверов и при этом провоцирует атакуемый DNS-сервер, посылая DNS-запрос (рисунок 4.18);
- DNS-сервер передает DNS-запрос на primary DNS-сервер и немедленно получает ложный DNS-ответ от атакующего;
- кэш-таблица DNS-сервера содержит информацию о соответствии имени IP-адресу хоста атакующего (рисунок 4.19).
Есть еще одно условие осуществления этой удаленной атаки на DNS-сервер при направленном «шторме» ложных DNS-ответов: атака будет иметь успех, только если DNS-сервер пошлет запрос на поиск определенного имени (которое содержится в ложном DNS-ответе). DNS-сервер посылает этот необходимый для атакующего запрос в том случае, если на него придет DNS-запрос от какого-либо хоста на поиск данного имени, и этого имени не окажется в кэш-таблице DNS-сервера [40].
Этот запрос может прийти когда угодно, и атакующему хосту вполне вероятно придется ждать результатов атаки сколь угодно долго. Однако ничто не мешает атакующему, не дожидаясь никого, самому послать на атакуемый DNS-сервер подобный DNS-запрос и спровоцировать DNS-сервер на поиск указанного в запросе имени, тогда эта атака с большой вероятностью будет иметь успех практически сразу же после начала ее осуществления.
Рисунок 4.17 - Нормальное функционирование DNS-серверов
Рисунок 4.18 - Отправка ложных DNS-ответов
Рисунок 4.19 - Отправка ложного DNS-ответа запросившему хосту
Обнаружение атак на DNS осуществляется при помощи анализа содержимого DNS трафика. Например при помощи программы dnstop. Эта утилита использующая libpcap для сниффинга DNS трафика и отображения кто и какие DNS запросы осуществляет в данный момент.
Логфайл программы:
Query Sources
Queries: 2 new, 57 total
Sources Count %
--------------- --------- ------
xx.172.220.163 3 5.3
xx.222.204.147 3 5.3
xxx.196.24.98 3 5.3
xx.60.124.201 3 5.3
xxx.77.99.18 2 3.5
xxx.2.181.6 2 3.5
xx.83.0.9 1 1.8
xx.231.32.10 1 1.8
xxx.71.10.161 1 1.8
xxx.204.183.61 1 1.8
xx.38.0.108 1 1.8
xx.160.37.3 1 1.8
xx.99.135.16 1 1.8
xxx.254.254.130 1 1.8
xxx.13.29.44 1 1.8
xx.25.5.150 1 1.8
xxx.207.78.69 1 1.8
xx.211.69.181 1 1.8
1st Level Query Names
Queries: 3 new, 440 total
Query Name Count %
------------ --------- ------
com 247 56.1
org 130 29.5
net 25 5.7
in-addr.arpa 19 4.3
us 19 4.3
2nd Level Query Names
Queries: 1 new, 509 total
Query Name Count %
----------------------- --------- ------
wpad.com 153 30.1
openresolvers.org 114 22.4
packet-pushers.com 103 20.2
measurement-factory.com 27 5.3
squid-cache.org 19 3.7
dont-contact.us 18 3.5
ircache.net 14 2.8
xx.in-addr.arpa 13 2.6
wpad.net 6 1.2
life-gone-hazy.com 4 0.8
wpad.org 4 0.8
web-polygraph.org 4 0.8
web-cache.com 4 0.8
wrec.org 4 0.8
wpad.us 3 0.6
nlanr.net 3 0.6
xx.in-addr.arpa 2 0.4
iwcw.org 2 0.4
Query Source and 2nd Level Domain
Queries: 2 new, 738 total
Source Query Name Count %
-------------- ----------------------- --------- ------
xx.160.37.4 measurement-factory.com 31 4.2
xxx.88.64.49 wpad.com 28 3.8
xxx.88.64.50 packet-pushers.com 14 1.9
xx.160.37.4 12.in-addr.arpa 12 1.6
xxx.88.64.50 wpad.com 7 0.9
xx.83.0.9 wpad.com 7 0.9
xx.160.37.4 life-gone-hazy.com 6 0.8
xxx.190.163.10 packet-pushers.com 4 0.5
xxx.155.0.15 packet-pushers.com 4 0.5
xx.18.192.242 wpad.com 4 0.5
xxx.69.16.18 packet-pushers.com 3 0.4