Слабые стороны технологии WPAD
В процессе анализа ежемесячных обновлений от Microsoft мое внимание привлек бюллетень MS09-008, а точнее, его часть, в которой фигурирует имя WPAD.
Этот бюллетень исправляет целый ряд уязвимостей в службах Microsoft DNS и Microsoft WINS, среди которых значится «Уязвимость регистрации WPAD», однако данное имя не первый раз встречается в уведомлениях по безопасности. Впервые о слабых сторонах WPAD заговорили в 1999 г., в 2007 г. был опубликован широкий спектр проблем, связанных с этой технологией, в том же году на конференции ShmooCon 2007 Крис Пейджет (Chris Paget) представил практические примеры эксплуатации уязвимостей WPAD. Сейчас, спустя 10 лет, Microsoft продолжает выпускать заплатки, закрывающие бреши данной технологии, а вопрос о безопасности сетей, в которых применяется WPAD, так и остался открытым. Успешная атака на WPAD гарантирует злоумышленникам полный контроль над пользовательскими данными, передаваемыми в Интернет, что может привести к краже критической информации, такой как пароли или номера банковских карт. На потенциальную опасность WPAD во многом влияют два фактора: во-первых, использование в конфигурации «по умолчанию», во-вторых, слабая осведомленность рядовых пользователей в данном вопросе.
В этой статье мы поговорим об архитектуре WPAD и основных принципах функционирования данной технологии в корпоративных и домовых сетях, рассмотрим реальные примеры атак, а также разработаем рекомендации для рядовых пользователей и системных администраторов, позволяющие обезопасить себя от действий злоумышленников.
Обзор WPAD
WPAD (Web Proxy Auto Discovery) – протокол, позволяющий Web-клиентам автоматически определять местоположение файла настроек браузера для работы через прокси-сервер. В 1999 г. Microsoft представила данный протокол на рассмотрение в IETF, однако в качестве стандарта WPAD так и не был принят. В настоящее время WPAD поддерживается семейством браузеров Internet Explorer и Mozilla Firefox (Google Chrome и Apple Safari используют настройки прокси-серверов браузера Internet Explorer, т.е. также поддерживают WPAD). Поддержка WPAD присутствует и в семействе открытых операционных систем, например, в браузере Konquerror в ОС Linux.
Включение WPAD в Microsoft Internet Explorer
По сути WPAD – это протокол обнаружения в сети специального файла (сценария). В спецификации WPAD перечислены способы и протоколы, с помощью которых осуществляется поиск. Для понимания технологии WPAD необходимо более детально познакомиться со сценариями автоматической настройки браузеров.
Сценарии Proxy Auto Configuration
Файл Proxy Auto Configuration (далее PAC-файл) используется в корпоративных сетях для централизованного распространения настроек, которые применяются при работе через прокси-сервер для браузеров пользователей.
По сути PAC представляет собой сценарий на языке JavaScript.
В нем должна быть определена функция FindProxyForURL(url, host), где
url – запрашиваемый адрес;
host – часть url в формате «имя хоста:порт».
Пример PAC файла:
function FindProxyForURL(url, host)
{
return «PROXY proxy.example.com:8080; DIRECT»;
}
Этот конфигурационный файл дает указание браузеру использовать прокси-сервер proxy.example.com для получения всех Web-страниц. Более подробное описание синтаксиса PAC-файлов можно найти в [3].
PAC-файлы могут использоваться как совместно с WPAD, так и обособленно, в этом случае в Интернет-браузере необходимо явно указать сетевой путь к данному файлу.
WPAD предоставляет пользователю возможность получения месторасположения PAC-файла одним из следующих способов:
- от DHCP-сервера;
- запрос к DNS-серверу;
- запрос к WINS-серверу;
- широковещательный запрос NetBIOS Name;
- локальный файл hosts;
- локальный файл lmhosts.
При использовании WPAD к PAC-файлу предъявляются следующие требования:
- PAC-файл должен располагаться в корневой папке, опубликованной на Web-сервере;
- PAC-файл должен иметь имя wpad.dat.
Принцип работы WPAD в корпоративной сети
Принцип работы WPAD
- Администратор создает специальный файл конфигурации (PAC-файл);
- Администратор резервирует WPAD- имя для сетевого узла, на котором настраивает Web-сервер, доступный по порту 80/tcp. В корневой каталог Web-сервера помещается PAC-файл с именем wpad.dat;
- Браузер клиента получает месторасположение PAC-файла;
- Браузер считывает содержимое файла, используя HTTP-запрос;
- Браузер выполняет настройку параметров работы через прокси-сервер.
Сценарии атак на Web Proxy Auto Discovery
В Internet Explorer WPAD включен по умолчанию, что делает уязвимым к атакам огромное число пользователей, отдающих предпочтение данному браузеру, а также браузерам, импортирующим его настройки. По данным SpyLog за апрель 2009 г. Internet Explorer, Apple Safari и Google Chrome вместе используют 55% пользователей Рунета
Наиболее уязвимым местом в технологии WPAD является поиск месторасположения PAC-файла. Если злоумышленнику удается убедить клиента в том, что необходимый файл конфигурации находится на сетевом узле, подконтрольном атакующему, атаку можно считать состоявшейся.
Для успешной атаки злоумышленнику необходимо иметь:
- Подконтрольный Web-сервер для расположения на нем PAC-файла;
- Подконтрольный прокси-сервер;
- Инструменты для контроля трафика, состав которых выбирается исходя из поставленных задач, например: перехватчик SSL-сессий, анализатор сетевых пакетов и т.д.
В рамках данной статьи не будут рассматриваться атаки, основанные на внедрении в сеть ложного DHCP-сервера, так как такая атака позволяет полностью контролировать все настройки сетевой подсистемы клиента, в том числе и WPAD. Далее по тексту предполагается, что месторасположение PAC-файла в данной сети по DHCP не распространяется. Локальные файлы hosts и lmhosts будем считать недоступными для злоумышленника.
Атака с использованием DNS-сервера
Система DNS поддерживает динамические обновления записей, что позволяет клиентам автоматически регистрировать свои имена и IP-адреса на DNS-сервере при входе в сеть или изменении IP-адресов с помощью сервера DHCP. Если в атакуемой зоне разрешены неаутентифицированные динамические обновления, то для регистрации записи достаточно одного специального DNS-пакета.
:
Сценарий атаки с использованием DNS-сервера
На схеме показан общий случай, во время атаки прокси-сервер злоумышленника и точка распространения PAC-файлов может находиться на одном и том же сетевом узле.
- Злоумышленник регистрирует на DNS-сервере следующую запись:
wpad.<атакуемый домен> IN A
- Клиент запрашивает у DNS-сервера IP-адрес узла с именем wpad.<домен>;
- DNS-сервер в ответ на этот запрос возвращает IP-адрес злоумышленника;
- Клиент запрашивает PAC-файл (wpad.dat);
- Клиент настраивает браузер в соответствии с PAC-файлом;
- Далее весь трафик клиента проходит через прокси-сервер, контролируемый злоумышленником.
Примечания: Если DNS-сервер работает в составе домена Active Directory, возможна более безопасная конфигурация, позволяющая динамическое обновление записей только для аутентифицированных пользователей. Для успешной атаки в этом случае злоумышленнику необходимо иметь корректную учетную запись в атакуемом домене. [4]
Данный класс атак актуален только в сетях, имеющих доменную структуру, так как в сети на базе рабочих групп поиск PAC-файла при помощи запроса к DNS-серверу не используется. Атакам, описанным далее, подвержены как доменные, так и одноранговые сети.
Атака с использованием WINS-сервера
Регистрация имен компьютеров, входящих в сеть, является штатной функцией WINS-сервера. Как и в случае с DNS-сервером регистрация осуществляется при помощи одного специального пакета.
Сценарий атаки с использованием WINS-сервера
- Злоумышленник регистрирует на WINS-сервере следующую запись:
WPAD(тип записи Unique) - Клиент запрашивает от WINS-сервера IP-адрес узла с NetBIOS-именем WPAD;
- WINS-сервер в ответ на этот запрос возвращает IP-адрес злоумышленника;
- Клиент запрашивает PAC-файл (wpad.dat);
- Клиент настраивает браузер в соответствии с PAC-файлом;
- Далее весь трафик клиента проходит через прокси-сервер, контролируемый злоумышленником.
Атака в доступной подсети
Если месторасположение PAC-файла не найдено путем запроса к DNS- или WINS-серверам, согласно стандарту WPAD Web-клиенты делают широковещательный NetBIOS-запрос имени WPAD по всей подсети согласно сетевой маске.
Данный вектор атаки доступен, если у злоумышленника есть физический доступ к подсети клиента.
Сценарий атаки в доступной подсети
- Злоумышленник входит в сеть с NetBIOS-именем WPAD ;
- Клиент выполняет широковещательный запрос имени WPAD;
- Злоумышленник посылает в ответ на запрос свой IP-адрес;
- Клиент запрашивает PAC-файл (wpad.dat);
- Клиент настраивает браузер в соответствии с PAC-файлом;
- Далее весь трафик клиента проходит через прокси-сервер, контролируемый злоумышленником.
Описанный выше класс атак легко реализуется в большинстве сетей, где отсутствует строгая политика безопасности. Как пример можно привести домовые сети, сети небольших провайдеров, WiFi-интернет в кафе и торговых центрах, где WINS-серверы не используются, а NetBIOS-трафик не фильтруется на сетевых устройствах.
Использование WPAD в службах Microsoft
Помимо браузеров технологию WPAD для поиска прокси-сервера используют и ряд системных компонентов Microsoft:
- служба Windows Update. Данная служба задействует WPAD в момент поиска доступной точки распространения обновлений Microsoft;
- Microsoft Crypto API. При попытке получить обновления списка отозванных сертификатов (CRL — Certificate revocation list) или списка корневых удостоверяющих центров (Root CA – Root Certificate Authority) Crypto API также использует WPAD.
Эти службы задействуют WPAD всегда независимо от настроек Internet Explorer.
Примечание: Windows Update и Crypto API передают только подписанные данные, поэтому не подвержены атакам класса «человек посередине». При организации одной из приведенных выше атак можно вызвать некорректную работу данных служб.
- Microsoft Firewall client for ISA server. При определенной настройке данное приложение выполняет поиск ISA-сервера путем запроса имени wpad от DNS-сервера.
Устранение «Уязвимости регистрации WPAD» от Microsoft
В бюллетене MS09-008 исправляются следующие уязвимости:
- DNS Server Vulnerability in WPAD Registration (CVE-2009-0093);
- WPAD WINS Server Registration Vulnerability (CVE-2009-0094).
Несмотря на название, установка исправлений не вносит никаких изменений в сам процесс регистрации имен, некоторые коррективы вносятся только в процесс разрешения (resolving) DNS- и NetBIOS-имени соответственно. До поиска в базе DNS- и WINS-серверы выполняют поиск запрашиваемого имени по «черному списку». Если имя находится в списке, то клиенту возвращается код ошибки «имя не найдено», иначе продолжается штатная работа сервера. Внедрение «черных списков» только сужает потенциальный масштаб атаки, а именно, возможность использования злоумышленником собственных записей на DNS- и WINS-сервере, однако атака на доступную подсеть все равно может быть реализована. Специалисты Microsoft объясняют такое поведение заботой о клиентах, которые внедрили и активно используют технологию WPAD.
«Черные списки» хранятся в следующих ключах реестра:
- HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDNSParametersGlobalQueryBlockList;
- HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWINSParametersQueryBlockList.
Состав «черных списков» по умолчанию:
Для DNS-сервера — «wpad isatap»;
Для WINS-сервера — «WPAD WPAD. ISATAP».
Обратите внимание, что если на момент установки исправления в базе WINS или DNS существовали некоторые из вышеперечисленных записей, то они не добавляются в указанные списки.
«Черные списки» распространяются только на динамические записи, таким образом, у администратора есть возможность организовать работу WPAD путем регистрации статической записи в базах DNS и WINS соответственно.
Примечание: динамические записи добавляются в базу DNS- и WINS-сервера с помощью специального запроса регистрации, а статические – через консоль управления сервером.
Рассмотрим чуть подробнее имена, добавляемые в «черные списки». Именам WPAD посвящена вся данная статья. WPAD. (WPAD с точкой) используется компонентами Windows Updates и Crypto API, а ISATAP запрашивается для поиска маршрутизаторов, поддерживающих одноименный протокол. ISATAP (Intra-Site Automatic Tunnel Addressing Protocol) — протокол туннелирования пакетов IPv6 в пакетах IPv4, используемый для связи сегментов сети IPv6 через сегмент IPv4. Атаки с использованием имени ISATAP в статье не рассматриваются ввиду малой распространенности протокола IPv6.
Рекомендации по устранению уязвимости
Для конечных пользователей:
- отключить поддержку WPAD в настройках браузера;
- указать точку распространения PAC-файла в настройках браузера, если в сети используется конфигурирование настроек прокси-серверов через PAC-файл, и его месторасположение заранее известно.
Для системных администраторов
В силу специфики уязвимостей более подверженными атакам являются сети, не использующие Web Proxy Auto Discovery, чем сети, где WPAD штатно работает. Для повышения уровня защищенности сети можно предпринять следующие действия:
- Внедрить поддержку WPAD;
- Зарезервировать имена WPAD и WPAD. при помощи статических записей в DNS и WINS, например, для IP-адреса 0.0.0.0. Сервер Microsoft WINS не позволяет регистрировать имена для некорректных IP-адресов, однако, Крис Пейджет (Chris Paget) описал способ, который позволяет обойти это ограничение: можно зарезервировать имя для корректного IP-адреса, а затем изменить этот IP-адрес на 0.0.0.0.
В домене Active Directory существуют способы дополнительного повышения уровня безопасности:
- Разрешить только аутентифицированные обновления записей на DNS-сервере;
- Распространять месторасположение PAC-файла через групповую политику.
Выводы
Основным фактором, делающим атаки на WPAD такими опасными, является его повсеместное использование в конфигурации «по умолчанию». В настоящее время корпорация Microsoft активно пропагандирует подход Secure by Default (безопасность по умолчанию) как один из основополагающих принципов SDL (Security Development Lifecycle – цикл разработки безопасных приложений), однако конфигурация прокси-серверов в Internet Explorer служит ярким примером нарушения данного принципа.
О слабых сторонах протокола WPAD известно еще с 1999 года, однако он продолжает использоваться и по сей день. Во многом на это повлияло доминирующее положение Microsoft на рынке Интернет-браузеров, и даже отсутствие стандартизации не смогло приостановить распространение данной технологии.
В статье описаны лишь самые простые атаки на WPAD, но существуют и более трудоемкие, требующие от атакующего дополнительных мер по противодействию средствам защиты. Подмена IP-адреса в пакетах регистрации или временный вывод из строя корпоративного DNS-сервера может помочь обойти ряд ограничений по эксплуатации уязвимости. Выбирая защитные механизмы, сетевым администраторам необходимо учитывать существование довольно большого спектра возможных векторов атаки, а также тот факт, что исправления от Microsoft закрывают уязвимость лишь частично.
Слабые места в использовании WPAD до сих пор не устранены, а значит, у злоумышленников есть широкий простор для атакующих действий.
Возможно, пока вы читаете эту статью, ваш браузер ищет по сети волшебное имя WPAD
Об авторе:
Сергей Рублев закончил МГТУ им. Баумана. Эксперт в области криптографии и протоколов защищенного обмена данными. В компании Positive Technologies специализируется на анилизе уязвимостей в сетевых службах и разработке расширений к сканерам XSpider и MaxPatrol 8.
Свежие комментарии