Введение
Кибератака с использованием скомпрометированных данных DNS
DNS-спуфинг, также известный как отравление кэша DNS, — это вид компьютерного взлома, при котором в кэш DNS-резольвера вводятся скомпрометированные данные системы доменных имен, что приводит к возврату сервером имен неверной записи, например, IP-адреса. В результате трафик перенаправляется на любой компьютер, выбранный злоумышленником.
Обзор системы доменных имен
Сервер системы доменных имен (DNS) преобразует удобочитаемое доменное имя (например, example.com) в числовой IP-адрес, который используется для маршрутизации коммуникаций между узлами. Как правило, если сервер не знает запрошенный адрес, он обращается к другому серверу, и этот процесс продолжается рекурсивно. Для повышения производительности сервер обычно запоминает (кеширует) эти преобразования на определенное время. Это означает, что при получении повторного запроса на то же преобразование он может ответить, не обращаясь к другим серверам, пока не истечет срок действия кэша. Если DNS-сервер получил неверное преобразование и кэшировал его для оптимизации производительности, он считается скомпрометированным и предоставляет ложные данные клиентам. В случае компрометации DNS-сервера он может возвращать неверный IP-адрес, перенаправляя трафик на другой компьютер (часто принадлежащий злоумышленнику).
Атаки с использованием кэша
Обычно компьютер, подключенный к сети, использует DNS-сервер, предоставляемый интернет-провайдером (ISP) или организацией пользователя. DNS-серверы используются в сети организации для повышения производительности разрешения имен путем кэширования ранее полученных результатов запросов. Атаки отравления DNS-сервера могут затронуть пользователей, обслуживаемых непосредственно скомпрометированным сервером, или тех, кто обслуживается косвенно через его нижестоящие серверы, если таковые имеются. Для проведения атаки с отравлением кэша злоумышленник использует уязвимости в программном обеспечении DNS. Сервер должен корректно проверять ответы DNS, чтобы убедиться в их подлинности (например, с помощью DNSSEC); в противном случае сервер может кэшировать неверные записи локально и предоставлять их другим пользователям, делающим аналогичные запросы. Эта атака может быть использована для перенаправления пользователей с легитимного веб-сайта на сайт, выбранный злоумышленником. Например, злоумышленник подменяет IP-адреса DNS-записей целевого веб-сайта на заданном DNS-сервере, заменяя их IP-адресом сервера, находящегося под его контролем. Затем злоумышленник создает на контролируемом сервере файлы с именами, соответствующими файлам на целевом сервере. Эти файлы обычно содержат вредоносный код, такой как компьютерные черви или вирусы. Пользователь, чей компьютер обращается к отравленному DNS-серверу, обманом заставляет себя принять контент с неавторизованного сервера и непреднамеренно загружает вредоносный код. Этот метод также может использоваться для фишинговых атак, когда создается поддельная версия легитимного веб-сайта для сбора личной информации, такой как банковские и данные кредитных/дебетовых карт. Уязвимость систем к отравлению кэша DNS выходит за рамки его непосредственных последствий, поскольку она подвергает пользователей дополнительным рискам, таким как фишинг, внедрение вредоносного ПО, отказ в обслуживании и угон веб-сайтов из-за уязвимостей системы. Различные методы, от использования тактик социальной инженерии до эксплуатации слабостей в программном обеспечении DNS-сервера, могут привести к этим атакам.
Варианты
В следующих вариантах записи для сервера будут скомпрометированы и перенаправлены на сервер имен злоумышленника по IP-адресу. Эти атаки предполагают, что сервер имен для [имя домена] является...
Для осуществления этих атак злоумышленник должен заставить целевой DNS-сервер сделать запрос к домену, контролируемому одним из серверов имен злоумышленника.
To accomplish the attacks, the attacker must force the target DNS server to make a request for a domain controlled by one of the attacker's nameservers.
Профилактика и смягчение последствий
Многие атаки на DNS-серверы могут быть предотвращены, если меньше доверять информации, передаваемой им другими DNS-серверами, и игнорировать любые DNS-записи, возвращаемые в ответ, которые не имеют прямого отношения к запросу. Например, версии BIND 9.5.0 P1 и выше выполняют эти проверки. Рандомизация исходного порта для DNS-запросов в сочетании с использованием криптографически безопасных случайных чисел для выбора как исходного порта, так и 16-битной криптографической нонсы может значительно снизить вероятность успешных атак типа «гонка» на DNS. Однако, когда маршрутизаторы, брандмауэры, прокси и другие шлюзовые устройства выполняют преобразование сетевых адресов (NAT) или, более конкретно, преобразование адресов портов (PAT), они могут переписывать исходные порты для отслеживания состояния соединения. При изменении исходных портов устройства PAT могут удалять случайность исходного порта, реализованную серверами имен и усеченными решателями. Secure DNS (DNSSEC) использует криптографические цифровые подписи, подписанные доверенным открытым ключом, для определения подлинности данных. DNSSEC может противодействовать атакам отравления кэша. В 2010 году DNSSEC был реализован в серверах корневой зоны Интернета, но его также необходимо развернуть на всех серверах доменов верхнего уровня. Готовность этих серверов к DNSSEC показана в списке доменов верхнего уровня Интернета. По состоянию на 2020 год все оригинальные TLD поддерживают DNSSEC, как и TLD с кодом страны большинства крупных стран, но многие TLD с кодом страны все еще не поддерживают его. Этот тип атаки может быть смягчен на транспортном или прикладном уровне путем выполнения сквозной проверки после установления соединения. Распространенным примером этого является использование безопасности транспортного уровня и цифровых подписей. Например, используя HTTPS (защищенную версию HTTP), пользователи могут проверить, является ли цифровой сертификат сервера действительным и принадлежит ли он ожидаемому владельцу веб-сайта. Аналогично, программа удаленного входа в систему с защищенной оболочкой проверяет цифровые сертификаты на конечных точках (если они известны) перед началом сеанса. Для приложений, которые автоматически загружают обновления, приложение может встраивать копию сертификата подписи локально и проверять подпись, хранящуюся в обновлении программного обеспечения, по отношению к встроенному сертификату.