Крейг Хеффнер (Craig Heffner), старший инженер по безопасности в компании Seismic LLC, представил на конференции Black Hat 2010 доклад под громким названием «Как взломать миллионы роутеров» (How to Hack Millions of Routers). В своем выступлении он рассказал о новой, ранее неизвестной уязвимости.
Немного предыстории
Новая атака опирается на ряд малоизвестных концепций, поэтому для наилучшего понимания я опишу процесс поподробнее.
Служба доменных имен (DNS) возникла потому, что людям гораздо проще запоминать слова (доменные имена), чем цифры (IP-адреса). Пользователь вводит в адресной строке доменное имя, а веб-браузер запрашивает у соответствующего DNS-сервера IP-адрес для этого имени. Говоря профессиональным языком, между именем домена и его IP-адресом существует привязка.
Далеко не всем известно, что к одному доменному имени может быть привязано сразу несколько IP-адресов. Это обеспечивает дополнительную отказоустойчивость сайтам, для которых критично минимальное время простоя. С помощью NS Lookup можно, например, выяснить, что к доменному имени Google.com привязано шесть IP-адресов:
Теперь давайте посмотрим, как устроена новая атака.
Старый прием
Атака, связанная с подменой IP-адресов на уровне DNS, предусматривает использование мошеннического веб-сайта или (еще более хитрый способ) вредоносного баннера, размещенного на вполне легитимной веб-страничке. Как-то раз, в частности, от хакеров пострадал сайт New York Times.
Для удобства назовем этот мошеннический сайт example.com. Когда пользователь посещает сайт example.com, в его браузер загружается клиентский сценарий или апплет, который затем подключается к сайту example.com тайком от жертвы и независимо от веб-браузера. DNS-сервер мошенников при этом выдает правильный IP-адрес сайта example.com и личный IP-адрес компьютера жертвы.
Кэшировав эту информацию, веб-приложение запрашивает с сайта example.com новые данные. Мошеннический сервер в ответ на это сбрасывает TCP, чтобы убедить якобы легитимное веб-приложение (установленное хакерским сценарием), что первый IP-адрес example.com не работает. Тогда приложение проверяет кэш DNS и пытается соединиться со вторым IP-адресом для доменного имени example.com.
Тут-то и происходит самое интересное. Используя второй доверенный IP-адрес, вредоносный браузерный апплет получает сетевой доступ к компьютеру жертвы. Это позволяет злоумышленникам подключиться к любому веб-серверу во внутренней сети, выяснив его приватный IP-адрес.
А для чего нужны веб-серверы? Правильно, для работы большинства сетевых устройств и серверов веб-почты. Так что это дает хакерам возможность поставить на уши весь Интернет.
Проблема решена?..
Поскольку выше речь шла о старой атаке, логично предположить, что она уже нейтрализована. Действительно, разработчики быстро сообразили, что происходит, и изменили принцип обработки ответов DNS-сервера в веб-браузерах. Если ответ содержит немаршрутизируемый IP-адрес (RFC 1918), этот пакет сбрасывается. Таким способом атаку удалось нейтрализовать на несколько лет.
Новая атака
Как известно, доступ к настройкам домашних сетевых устройств осуществляется через веб-интерфейс с использованием внутреннего IP-адреса устройства. Подложные ответы DNS-сервера, в которых содержатся частные IP-адреса, как упоминалось выше, сбрасываются.
Казалось бы, это надежно защищает маршрутизаторы. На самом деле нет. По какой-то причине существует возможность получить доступ к веб-интерфейсу конфигурации маршрутизатора или шлюза, указав в браузере его публичный или маршрутизируемый IP-адрес. При этом запрос http исходит от компьютера во внутренней сети.
Что самое интересное, этот способ работает даже в том случае, если шлюз блокирует доступ с публичных адресов. Моя сеть защищена шлюзом ActionTec, и мне удалось получить доступ к его настройкам с использованием публичного IP, как показано ниже:
Крейг Хеффнер и его сотрудники испытали большинство домашних сетевых маршрутизаторов и составили список уязвимых и защищенных устройств и прошивок:
Что это значит на практике
Описанная атака — весьма неприятная, потому что действует незаметно. В большинстве домашних сетей маршрутизаторы определяют настройки DHCP для всех подключенных компьютеров с указанием IP-адреса и предпочитаемых DNS-серверов. Получив доступ к конфигурации сетевого устройства, злоумышленники могут подменить адреса DNS-серверов, указав вместо них свои, мошеннические, а это грозит большими неприятностями.
Защититься легко
Чтобы получить доступ к настройкам маршрутизатора, хакерам нужно знать имя пользователя и пароль к веб-интерфейсу устройства. Они, разумеется, рассчитывают на то, что большинство пользователей сохраняет заводские логин и пароль. Чтобы усложнить злоумышленникам задачу, поменяйте имя пользователя (если это возможно) и задайте новый, трудно угадываемый пароль. Это позволит нейтрализовать атаку.
Другой способ — запретить всем сайтам загружать любые сценарии без разрешения пользователя. В Firefox сделать это очень легко с помощью дополнения NoScript. Джорджо Маоне (Giorgio Maone), создатель этого дополнения, реализовал в новой версии NoScript функцию Application Boundaries Enforcer, которая по умолчанию содержит настройки для защиты от подмены IP-адресов на уровне DNS.
Наконец еще один совет — использовать только проверенные DNS-серверы и вшить их адреса в конфигурацию сетевого адаптера на постоянной основе. Я пользуюсь OpenDNS. Это защищает от целого ряда уязвимостей, связанных с DNS.
В заключение
В случае успеха описанная Крейгом Хеффнером атака очень опасна. К счастью, ее трудно реализовать и легко предотвратить. Все, что для этого нужно — отказаться от заводских паролей. Распространение информации приветствуется.