Windows ICF (Internet Connection Firewall – файрволл интернет-соединений) встроен в Windows XP (и в Home, и в Professional). Это действительно превосходный файрволл, который предотвратит большинство атак из Интернет. Однако, недостаточные возможности настройки ограничивают его использование опытными пользователями. В этой статье мы дадим обзор ICF, посмотрим, как он действует при моделируемой атаке, и обсудим все плюсы и минусы ICF.
Набор правил ICF может быть изменен вручную, конфигурированием «services» или программно, с использованием ICF API. ICF содержит стандартные сервисы, такие как HTTP и FTP. Кроме того, он позволяет добавлять дополнительные сервисы, использующие соответствующие дополнительные порты. Однако в наборе правил отсутствует возможность ограничить доступ с определенных адресов. Если вы разрешаете HTTP порт 80, вы разрешаете его для всего Интернет. Невозможно запретить доступ для определенного IP адреса, или набора адресов. Это огромный недостаток ICF.
Помимо ручной конфигурации, ICF имеет API, позволяющий приложениям временно изменять набор правил. На рисунке ниже вы видите, как Windows messenger автоматически открывает порты TCP 12212 и UDP 13037 для своей работы.
Это одновременно и полезная и вредная возможность. Полезная потому, что позволяет приложениям, таким как Windows messenger, взаимодействовать с ICF. Это особенно полезно для приложений, которые открывают динамические порты, для которых вы не можете специфицировать порт, так как он может меняться. Это свойство очень ценно для людей, которые играют в игры, поддерживающие DirectPlay 8. В то же время, большинство профессионалов безопасности настораживает возможность приложений самовольно менять наборы правил файрволл. Большое недовольство пользователей также вызывает то, что ICF API требует административных привилегий. И если у вас «limited» Windows XP эккаунт, приложение, которое вы используете, не может изменять набор правил ICF через API. Дополнительную информацию по ICF API можно посмотреть по адресу About Internet Connection Sharing and Internet Connection Firewall.
Наконец, ICF осуществляет некоторые дополнительные проверки, в отличие от стандартных фильтров пакетов:
Официальный обзор ICF от Microsoft смотрите на Internet Connection Firewall overview. Более подробная документация на Internet Connection Firewall Feature Overview.
Тестирование было сосредоточено на атаках из Интернет, поскольку большинство хакерских атак производятся именно извне. Кроме того, проверены возможные атаки при проникновении злонамеренного пользователя на саму Windows XP систему.
Мы запустили ISIC, сканеры портов, утилиты оценки уязвимости, перечисленные выше против Windows XP с запущенным ICF. Сканеры портов и утилиты оценки уязвимости используются многими хакерами для определения запущенных сервисов на удаленном компьютере и потенциальных уязвимостей. ISIC и Nmap использовались для создания пакетов, не соответствующих RFC с целью сильной загрузки ICF. Однако, ICF не только заблокировал все атаки, но даже не наблюдалось никакого уменьшения производительности. Пользователь бы даже не заметил проведенных атак. Все пакеты, не соответствующие RFC, созданные ISIC и Nmap, были заблокированы ICF как неправильные.
Также были проведены атаки с помощью fragrouter для фрагментации IP пакетов. С помощью этой утилиты, мы могли разделять единичный TCP пакет на несколько, в надежде, что ICF пропустит их. Ничего не вышло. Также были опробованы другие стандартные атаки против файрволлов. Итог таков, что ICF очень уверенно выдерживает атаки из Интернет.
Поскольку большинство файрволлов имеют DoS-защиту от внутренних пользователей, мы запустили Fscan с самой ICF-системы. И обнаружили небольшой сюрприз. Хотя не возникало ситуации DoS, мы увидели, что независимо от того, какой хост мы сканируем, порты 21, 389, 1002 и 1720 всегда открыты. Что это, backdoor? С чего это вдруг ICF открывает порты? После долгих исследований, мы определили, что эти порты открываются для прикладного прокси-сервера в сервисе ICF/ICS. Оказалось, что с целью поддержки протоколов, плохо работающих с файрволлами, Microsoft создал соответствующие прокси.
Что значит «плохо работающие» протоколы? Протоколы, динамически открывающие входящие порты, делают создание простого контекстного файрволла невозможным. Возьмем для примера протоколы FTP и H.323. В нормальном режиме FTP (не PASV), клиент подсоединяется к FTP серверу по 21 порту. Все замечательно до тех пор, пока клиент не выдаст команду FTP PORT. Эта команда говорит FTP серверу создать обратное соединение к клиенту по произвольному входящему порту для отсылки данных. Если файрволл не обнаруживает и не обрабатывает команду PORT, он заблокирует пакет. ICF включает FTP прокси для обработки команды PORT.
Аналогично, H.323 используется для соединений (звонков) VoIP (Voice over IP – голос через Интернет). Причем только для установки звонков. Реально голос и видео RTP потоки используют динамические порты, определяемые при звонке. Таким образом, ICF, чтобы пропустить соответствующий трафик, вынужден прослушивать 1720 порт.
Порты 389 и 1002 используются протоколами LDAP и ILS для работы Netmeeting.
Прикладные прокси были разработаны для ICS. Однако, поскольку ICS и ICF реализованы как один сервис, прокси работают даже при отключенном ICS. Но, несмотря на то, что и в прокси-серверах могут быть проблемы безопасности, мы остановили свои тесты на этом. Почему? Да потому, что если хакер физически проник уже на ваш компьютер или в локальную сеть в случае работы ICS, у вас уже возможны большие проблемы. Тем не менее, прикладные прокси-сервера могут оказаться хорошим объектом для поиска уязвимостей.
Также, ICF прослушивает PPTP подключения для разрешения пакетов GRE, а также T.120 соединения, используемые для VoIP.
Хотя ICF хорошо защищает от атак из Интернет, мы разработали троянскую атаку по e-mail, которая элементарно проходит через файрволл. Несомненно, ICF – не антивирусный сканер, и не должен обнаруживать трояны; однако, недостаточная фильтрация исходящего трафика позволяет нашему трояну открыть соединение для хакера. Подробнее о таких атаках читайте в статье When Dreamcasts Attack. Кроме того, хотя ICF и защищает против DDoS атак, предотвращая махинации с IP адресом источника, тем не менее, эти адреса можно изменить, создавая Ethernet пакеты с использованием вызовов драйвера NDIS.
В итоге, несмотря на небольшой шок, вызванный прикладными прокси-серверами, нужно констатировать, что ICF хорошо защищает от атак. Однако, недостаточная фильтрация исходящего трафика является огромным недостатком в ICF.