Слабые стороны технологии WPAD

Тема в разделе "Статьи", создана пользователем Hookman, 23 май 2009.

  1. Hookman
    Hookman Guest
    В процессе анализа ежемесячных обновлений от 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.

    [​IMG]


    Включение 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 в корпоративной сети

    [​IMG]

    Принцип работы 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-пакета.

    [​IMG]

    Сценарий атаки с использованием DNS-сервера​

    На схеме показан общий случай, во время атаки прокси-сервер злоумышленника и точка распространения PAC-файлов может находиться на одном и том же сетевом узле.

    1. Злоумышленник регистрирует на DNS-сервере следующую запись:

    wpad.<атакуемый домен> IN A <IP-адрес злоумышленника>.

    1. Клиент запрашивает у DNS-сервера IP-адрес узла с именем wpad.<домен>;
    2. DNS-сервер в ответ на этот запрос возвращает IP-адрес злоумышленника;
    3. Клиент запрашивает PAC-файл (wpad.dat);
    4. Клиент настраивает браузер в соответствии с PAC-файлом;
    5. Далее весь трафик клиента проходит через прокси-сервер, контролируемый злоумышленником.

    Примечания: Если DNS-сервер работает в составе домена Active Directory, возможна более безопасная конфигурация, позволяющая динамическое обновление записей только для аутентифицированных пользователей. Для успешной атаки в этом случае злоумышленнику необходимо иметь корректную учетную запись в атакуемом домене. [4]

    Данный класс атак актуален только в сетях, имеющих доменную структуру, так как в сети на базе рабочих групп поиск PAC-файла при помощи запроса к DNS-серверу не используется. Атакам, описанным далее, подвержены как доменные, так и одноранговые сети.


    Атака с использованием WINS-сервера​


    Регистрация имен компьютеров, входящих в сеть, является штатной функцией WINS-сервера. Как и в случае с DNS-сервером регистрация осуществляется при помощи одного специального пакета.

    [​IMG]

    Сценарий атаки с использованием WINS-сервера​

    * Злоумышленник регистрирует на WINS-сервере следующую запись:
    WPAD <IP-адрес злоумышленника> (тип записи Unique)
    * Клиент запрашивает от WINS-сервера IP-адрес узла с NetBIOS-именем WPAD;
    * WINS-сервер в ответ на этот запрос возвращает IP-адрес злоумышленника;
    * Клиент запрашивает PAC-файл (wpad.dat);
    * Клиент настраивает браузер в соответствии с PAC-файлом;
    * Далее весь трафик клиента проходит через прокси-сервер, контролируемый злоумышленником.

    Атака в доступной подсети​


    Если месторасположение PAC-файла не найдено путем запроса к DNS- или WINS-серверам, согласно стандарту WPAD Web-клиенты делают широковещательный NetBIOS-запрос имени WPAD по всей подсети согласно сетевой маске.

    Данный вектор атаки доступен, если у злоумышленника есть физический доступ к подсети клиента.

    [​IMG]

    Сценарий атаки в доступной подсети​

    * Злоумышленник входит в сеть с 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_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters\GlobalQueryBlockList;
    * HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WINS\Parameters\QueryBlockList.

    Состав «черных списков» по умолчанию:

    Для 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

    Источник: Securitylab.ru
    Автор: Сергей Рублев закончил МГТУ им. Баумана. Эксперт в области криптографии и протоколов защищенного обмена данными. В компании Positive Technologies специализируется на анилизе уязвимостей в сетевых службах и разработке расширений к сканерам XSpider и MaxPatrol 8.
     
    23 май 2009
    1 человеку нравится это.
  2. daref
    daref Новичок
    Симпатии:
    0
    для новичка, как я, статья показалась очень сложной
     
    26 май 2009
Загрузка...