Брандмауэры
С тех пор как Чесвик (Cheswick) и Белоувин (Bellovin) написали свой фундаментальный труд о построении брандмауэров и борьбе с коварным хакером Берфердом (Berferd), желание подключить Web-сервер (или любой другой компьютер) к Internet без развертывания брандмауэра считается самоубийством. Примерно то же можно сказать в ситуации, когда функции брандмауэра возлагаются на переносной компьютер сетевого администратора. Хотя таким опытным специалистам должны быть хорошо известны технические нюансы реализации брандмауэра, как правило, они совершенно не заботятся об обеспечении безопасности и не учитывают цели и средства коварных хакеров. В результате брандмауэры могут оказаться неправильно сконфигурированными, что позволяет взломщикам проникнуть в вашу сеть и послужить причиной далеко не самых лучших ощущений.
Дополнительное исследование брандмауэров
Если прямое сканирование портов, отслеживание маршрутов и сбор маркеров не принесли успеха, взломщики могут прибегнуть к дополнительной инвентаризации брандмауэра на более высоком уровне. При этом идентифицировать брандмауэры и получить их правила ACL можно в процессе исследования цели и анализа полученной информации (или не полученной).
Простой способ получения данных с помощью утилиты nmар
Утилита nmар является прекрасным средством исследования брандмауэров, и мы постоянно ею пользуемся. В процессе сканирования узла эта утилита сообщает не только об открытых или закрытых портах, но и о тех из них, которые оказались заблокированными. При этом полученные (или отсутствующие) данные позволяют узнать о конфигурации брандмауэра много важной информации.
Если в результате сканирования утилита nmap "пометила" порт как фильтруемый, то это означает возникновение одного из следующих условий.
Не получен пакет SYN/ACK.
Не получен пакет RST/ACK.
Получено ICMP-сообщение типа 3 (Destination Unreachable) с кодом 13 (Communication Administratively Prohibited — RFC 1812).
При выполнении любого из этих трех условий утилита nmap сообщит о порте как о фильтруемом (filtered). Например, при сканировании узла www.company.com мы получили два IСМР-пакета, что говорит о блокировании брандмауэром портов 23 и 111.
[root]# nmap -p20,21,23,53,80,111 -PO -w 192.168.51.100
Starting nmap V.2.08 by Fyodor (fyodor@dhp.com,
www.insecure.org/nmap/)
Initiating TCP connect() scan against (192.168.51.100)
Adding TCP port 53 (state Open).
Adding TCP port 111 (state Firewalled).
Adding TCP port 80 (state Open).
Adding TCP port 23 (state Firewalled).
Interesting ports on (192.168.51.100):
Port State Protocol Service
23 filtered tcp telnet
53 open tcp domain
80 open tcp http
111 filtered tcp sunrpc
Состояние Firewalled из предыдущего фрагмента свидетельствует о получении 1СМР-пакета типа 3 с кодом 13 (admin prohibited filter), как видно из следующего листинга утилиты tcpdump.
23:14:01.229743 10.55.2.1 > 172.29.11.207: icmp: host 172.32.12.4
Unreachable - admin prohibited filter
23:14:01.979743 10.55.2.1 > 172.29.11.207: icmp: host 172.32.12.4
Unreachable - admin prohibited filter
Каким же образом утилите nmap удается связать получаемые пакеты с исходными сообщениями, особенно, когда они являются лишь малой частью данных, передаваемых по сети? Дело в том, что в ответном ICMP-пакете, передаваемом на сканирующий узел, содержится вся информация, необходимая для понимания того, что же произошло. О блокировании порта сообщается в однобайтовом блоке заголовка IСМР по адресу 0x41, а в случае обращения к фильтруемому порту брандмауэр отправит сообщение в IP-блоке пакета по адресу 0xlb (4 байта).
И наконец, о нефильтруемых (unf iltered) портах утилита nmap сообщает лишь в том случае, когда при их сканировании обратно возвращается пакет RST/ACK. В этом случае тестовый пакет либо достигает целевого узла, который сообщает о том, что порт не находится в состоянии ожидания запросов, либо брандмауэр имитирует IP-адрес этого узла, устанавливая флаг RST/ACK. Например, при сканировании локальной системы было выявлено два нефильтруемых порта, поскольку не пришло двух ответных пакетов RST/ACK. Подобная ситуация может быть имитирована и некоторыми брандмауэрами, например, ChackPoint на которых действует правило REJECT.
[root]# nmap -sS -pl-300 172.18.20.55
Starting nmap V. 2.08 by Fyodor (fyodor@dhp.com,
www.insecure.org/nmap/)
Interesting ports on (172.18.20.55):
(Not showing ports in state: filtered)
Port State Protocol Service
7 unfiltered tcp echo
53 unfiltered tcp domain
256 open tcp rap
257 open tcp set
258 open tcp yak-chat
Nmap run completed -- 1 IP address
(1 host up) scanned in 15 seconds
При отслеживании пакетов с помощью утилиты tcpdump можно увидеть, что обратно возвращаются пакеты RST/ACK.
21:26:22.742482 172.18.20.55.258 > 172.29.11.207.39667: S
415920470:1415920470(0) ack 3963453111 win 9112 <mss 536> (DF)
(ttl 254, id 50438)
21:26:23.282482 172.18.20.55.53 > 172.29.11.207.39667:
R 0:0(0) ack 3963453111 win 0 (DF) (ttl 44, id 50439) 21:26:24.362482
172.18.20.55.257 > 172.29.11.207.39667: S 1416174328:1416174328(0)
ack 3963453111 win 9112 <mss 536>
(DF) (ttl 254, id 50440)
21:26:26.282482 172.18.20.55.7 > 172.29.11.207.39667:
R 0:0(0) ack 3963453111 win 0 (DF) (ttl 44, id 50441)
Контрмеры против применения утилиты nmар
Обнаружение
Для выявления попыток сканирования с использованием утилиты nmap можно применять подходы, описанные в главе 2. Кроме того, можно также дать следующий совет. Настройте процедуру обнаружения сканирования таким образом, чтобы отдельно получать информацию о попытках сканирования брандмауэров.
Предотвращение
Для того чтобы предотвратить возможность инвентаризации списков ACL маршрутизаторов и брандмауэров, нужно отключить на них режим передачи ответных сообщений ICMP с типом 13. На маршрутизаторах Cisco это можно осуществить, запретив передачу ответных IP-сообщений о недостижимости цели. no ip unreachables
Идентификация портов
Некоторые брандмауэры имеют уникальные характеристики, отличающие их от других брандмауэров и представленные в виде последовательности цифр. Например, такую последовательность можно получить при подключении к TCP-порту 257 (SNMP) брандмауэров Checkpoint. Наличие портов 256-259 является хорошим признаком брандмауэра Firewall-1 компании Checkpoint. А следующий тест поможет в этом удостовериться.
[root]# nc -v -n 192.168.51.1 257
(UNKNOWN) [192.168.51.1] 257 (?)
open
30000003
[root]# no -v -n 172.29.11.191 257
(UNKNOWN) [172.29.11.191] 257 (?)
open 31000000
Контрмеры: защита от идентификации портов
Обнаружение
Факт подключения злоумышленника к портам можно выявить, добавив аудит соответствующего события в программе RealSecure. Вот что для этого нужно сделать.
1. Активизируйте режим редактирования политики.
2. Перейдите во вкладку Connection Events.
3. Щелкните на кнопке Add Connection и введите параметры записи, соответствующие брандмауэру Checkpoint.
4. Выберите диапазон портов и щелкните на кнопке Add.
5. Введите значения в поля службы и порта, а затем щелкните на кнопке ОК.
6. Выберите новый порт и снова щелкните на кнопке ОК.
7. Щелкните на кнопке ОК, чтобы применить политику с измененными параметрами.
Предотвращение
Возможность подключения к TCP-порту можно предотвратить, заблокировав его на маршрутизаторе исходящих сообщений. Следующий простой список ACL брандмауэров Cisco поможет явно запретить все попытки подключения. access-list 101 deny tcp any any eq 257 log ! Блокирование сканирования Firewall-1
Фильтрация пакетов
Работа брандмауэров с фильтрацией пакетов (в том числе с сохранением состояний) типа Firewall-1 от компании CheckPoint, PIX и IOS от компании Cisco (да, IOS тоже можно использовать в качестве брандмауэра) основывается на списках ACL или правилах, служащих для определения того, является ли авторизованным трафик, передаваемый в/из внутренней сети. В большинстве случаев эти списки грамотно разработаны и их очень трудно обойти. Однако зачастую можно обойти брандмауэры с нестрогим списком ACL и передать отдельные пакеты во внутреннюю сеть.
Нестрогие списки ACL
Нестрогие списки ACL применяются на гораздо большем числе брандмауэров, чем это можно себе представить. Предположим, что провайдеру услуг Internet какой-то организации необходимо разрешить перенос зоны. В этом случае вместо нестрогого списка ACL, такого как "Разрешить выполнение действий с сервера DNS провайдера услуг Internet с исходного TCP-порта 53 и порта назначения 53", может быть реализован следующий: "Разрешить выполнение любых действий с исходного TCP-порта 53". Подобные ошибки в конфигурации могут оказаться поистине разрушительными, поскольку злоумышленник сможет просканировать всю сеть извне. Большинство из таких атак начинается со сканирования узла, расположенного позади брандмауэра, и использования в качестве исходного ложного TCP-порта 53 (DNS).
Контрмеры против нестрогих списков ACL
Предотвращение
Удостоверьтесь, что правила вашего брандмауэра разрешают лишь определенные подключения. Например, если вашему провайдеру услуг Internet требуется выполнять перенос зоны, это должно быть явно указано в установленных правилах. При этом требуйте указания в правиле как исходного IP-адреса, так и IP-адреса назначения (внутреннего сервера DNS).
Если вы используете брандмауэр Checkpoint, то для ограничения возможности использования исходного порта 53 (DNS) лишь службой DNS провайдера можно реализовать следующее правило. Например, если адресом сервера DNS провайдера является 192.168.66.2, а адресом внутреннего сервера DNS — 172.30.140.1, то это правило будет иметь следующий вид.
Source | Destination | Service | Action | Track |
(источник) | (назначение) | (служба) | (действие) | (регистрация) |
192.168.66.2 | 172.30.140.1 | domain-tcp | Accept | Short |
![](2.gif)
Предотвращение
В зависимости от требований к конфигурации можно запретить большую часть трафика, разрешенного по умолчанию. При этом необходимо соблюдайте осторожность, поскольку можно случайно запретить и передачу авторизованных данных. Для ограничения доступа выполните следующие действия.
1. В диалоговом окне редактирования политики безопасности выберите команду Policy1* Properties.
2. Сбросьте флажки Accept, расположенные рядом с именами всех функций, которые не являются необходимыми. Например, пользователям многих узлов не требуется выполнять загрузку данных DNS. В этом случае нужно сбросить флажок Accept Domain Name Downloads. Этот же прием можно использовать также для управления трафиком RIP и DNS.
3. Создайте свое собственное правило, разрешающее обмен данными DNS с определенным авторизованным сервером DNS (как описано в разделе "Контрмеры Против Нестрогих Списков ACL").
Туннелирование трафика ICMP и UDP
Туннелирование трафика ICMP — это возможность инкапсуляции реальных данных в заголовке пакета ICMP. Против такой атаки бессильны многие маршрутизаторы, разрешающие прохождение ICMP-пакетов ECHO, ECHO REPLY и UDP-пакетов. Подобно ситуации с брандмауэром CheckPoint, связанной с передачей данных DNS, возможность использования туннелирования трафика ICMP и UDP базируется на том, что в распоряжении взломщика уже имеется взломанный узел, находящийся позади брандмауэра.
Джереми Раух (Jeremy Rauch) и Майк Шифман (Mike Schiffman) тщательно исследовали эту концепцию и создали средства для ее использования: утилиты loki и lokid (клиент и сервер). После запуска сервера lokid на взломанном узле, расположенном позади брандмауэра, который разрешает прохождение ICMP-пакетов ECHO и ECHO REPLY, взломщик может запустить клиентскую часть (loki), чтобы помешать каждую передаваемую серверу lokid команду в ICMP-пакет ECHO. После этого утилита lokid будет "извлекать" полученные команды, выполнять их локально, а затем помешать полученные результаты в ICMP-пакеты ECHO REPLY и передавать их обратно взломщику. При использовании такого подхода у злоумышленников имеется возможность полного обхода брандмауэра. Описанная концепция и средства, которые ее реализуют, подробно рассматриваются в главе 14.
Контрмеры: защита от туннелирования трафика ICMP и UDP
Предотвращение
Для зашиты от атак такого типа можно полностью запретить доступ по протоколу 1СМР через брандмауэр или обеспечить управляемую избирательную передачу ICMP-пакетов. Например, следующий список ACL брандмауэров Cisco позволит полностью запретить передачу административных данных ICMP за пределы подсети 172.29.10.0 (демилитаризованной зоны).
access-list 101 permit icmp any 172.29.10.0 0.255.255.255 8!
echo access-list 101 permit icmp any 172.29.10.0 0.255.255.255 0!
echo-reply access-list 102 deny ip any any log!
запретить, иначе регистрировать все события
Если ваш провайдер услуг Internet отслеживает работоспособность компьютеров, расположенных позади брандмауэра, с помощью утилиты ping (чего мы не советуем делать), то такие списки ACL нарушат этот процесс. Уточните у своего провайдера, применяет ли он эту утилиту.
Идентификация брандмауэров
Почти каждый брандмауэр имеет свои отличительные особенности. Поэтому с помощью сканирования портов, инвентаризации и сбора идентификационных маркеров взломщики могут правильно определить тип, версию и набор правил практически каждого брандмауэра в сети. Почему так важна подобная идентификация? Как только вся эта информация будет получена, взломщик может приступать к ее анализу, поиску уязвимых мест и дальнейшему их использованию.
Прямое сканирование
Самый простой способ поиска брандмауэров заключается в сканировании определенных портов, используемых ими по умолчанию. Некоторые современные брандмауэры можно уникально идентифицировать, выполнив простое сканирование портов. Для этого необходимо лишь знать, что именно вы хотите найти. Например, брандмауэры Firewall-1 компании Checkpoint ожидают поступления запросов с TCP-портов 256, 257 и 258, a Proxy Server компании Microsoft обычно прослушивает TCP-порты с номерами 1080 и 1745. Обладая такой информацией, поиск этих типов брандмауэров окажется тривиальным, если воспользоваться сканером портов, таким как утилита nmap.
nmap -n -vv -P0 -p256,1080,1745 192.168.50.1-60.254
Параметр -P0 отключает передачу тестовых ICMP-пакетов перед сканированием. Это оказывается очень важным, поскольку многие брандмауэры не реагируют на поступающие эхо-запросы ICMP.
Чтобы найти все бреши в защите пограничных устройств вашей сети, как начинающий, так и опытный взломщик прибегнет к сканированию широкого диапазона портов. Однако наиболее опасные злоумышленники постараются выполнить сканирование как можно более незаметно. При этом для того чтобы избежать разоблачения, они могут воспользоваться любым из многочисленных приемов, включая ping-прослушивание случайно выбранных адресов, произвольных портов, а также использование ложных узлов и выполнение распределенного сканирования.
Если вы надеетесь, что система выявления вторжений (IDS - Intrusion -> Detection System) сможет выявить подобные атаки, то оцените потенциальную опасность еще раз. Большинство систем IDS настроено таким образом, что они способны обнаружить лишь наиболее "шумное" или прямолинейное сканирование портов. Если систему IDS не настроить должным образом, большинство злоумышленников останутся абсолютно незамеченными. Сканирование произвольных портов можно реализовать с помощью сценария Perl.
Контрмеры: защита от прямого сканирования
Способы предотвращения сканирования портов брандмауэра во многом совпадают с методами, рассмотренными в главе 2. Необходимо заблокировать попытки такого сканирования на пограничном маршрутизаторе или воспользоваться одним из средств выявления вторжений (свободно распространяемым или коммерческим). Однако и в этом случае нельзя предотвратить простое сканирование портов, поскольку по умолчанию большинство систем IDS не позволяет обнаружить подобную деятельность. Так что перед их использованием необходимо выполнить соответствующую настройку.
Обнаружение
Для того чтобы безошибочно обнаружить факт сканирования портов по случайному закону или с применением ложных узлов, нужно тонко настроить соответствующую сигнатуру. Для получения дополнительной информации по этому вопросу внимательно изучите документацию, входящую в комплект поставки используемой системы IDS.
Для того чтобы обнаружить сканирование портов из предыдущего примера с использованием системы RealSecure 3.0, нужно дополнительно повысить ее чувствительность, модифицировав специальные параметры. Мы рекомендуем внести следующие изменения.
1. Выберите и настройте политику Network Engine Policy.
2. Выберите команду Port Scan и щелкните на кнопке Options.
3. В поле Ports внесите значение 5.
4. В поле Delta задайте интервал 60 секунд.
При использовании брандмауэра Firewall-1 системы UNIX для выявления попыток сканирования можно воспользоваться утилитой Ланца Спитзнера. Как упоминалось в главе 2, его сценарий alert.sh поможет настроить брандмауэр компании Checkpoint и осуществить мониторинг сканирования портов, а при обнаружении такой деятельности будет сгенерировано уведомление, установленное пользователем.
Предотвращение
Для того чтобы предотвратить сканирование портов брандмауэра из Internet, нужно заблокировать эти порты на маршрутизаторе, расположенном перед брандмауэром. Если эти устройства управляются вашим провайдером услуг Internet, то этот вопрос придется согласовать с ним. Если же вы самостоятельно управляете маршрутизатором, то для явного блокирования попыток сканирования воспользуйтесь следующим списком ACL компании Cisco.
access- list 101 deny tcp any any eq 256 log!
Блокирование сканирования Firewall-1
access-list 101 deny tcp any any eq 257 log!
Блокирование сканирования Firewall-1
access-list 101 deny tcp any any eq 258 log!
Блокирование сканирования Firewall-1
access-list 101 deny tcp any any eq 1080 log!
Блокирование сканирования Socks
access-list 101 deny tcp any any eq 1745 log!
Блокирование сканирования Winsock
Если вы заблокируете порты Checkpoint (256-258) на пограничных маршрутизаторах, то не сможете управлять брандмауэром по Internet. Администратор Cisco может без особых проблем применить вышеперечисленные правила. Нужно просто перейти в режим редактирования параметров и ввести по очереди предыдущие строки. После этого необходимо выйти из режима редактирования и ввести команду write, чтобы внесенные изменения были внесены в конфигурационный файл.
Кроме того, на всех маршрутизаторах в любом случае должно быть задано правило очистки (если они не препятствуют поступлению пакетов по умолчанию), которое имеет тот же смысл, что и приведенная ниже операция.
access-list 101 deny ip any any log!
Запрещение и регистрация любого пакета, удовлетворяющего приведенному списку ACL
Отслеживание маршрута
Более скрытый и изощренный метод поиска брандмауэров в сети заключается в использовании утилиты traceroute. Для поиска каждого сегмента пути к целевому узлу можно воспользоваться утилитой traceroute системы UNIX или аналогичной утилитой tracert.exe системы NT. Затем на основании полученной информации можно сделать некоторые логические предположения. В версии утилиты traceroute из системы Linux имеется параметр -I, при указании которого для поиска сегментов будут посылаться пакеты ICMP, а не UDP-пакеты, используемые по умолчанию.
[sm]$ traceroute -I 192.168.51.100
traceroute to 192.168.51.101 (192.168.51.100), 30 hops max, 40 byte
packets
1 attack-gw (192.168.50.21) 5.801 ms 5.105 ms 5.445 ms
2 gwl.smallisp.net (192.168.51.1)
3 gw2.smallisp.net (192.168.52.2)
13 hssi.bigisp.net (10.55.201.2)
14 seriall.bigisp.net (10.55.202.1)
15 192.168.51.101 (192.168.51.100)
Особого внимания заслуживает сегмент, предшествующий целевому узлу (10. 55.202 .1). Почти наверняка по этому адресу находится брандмауэр, однако для полной уверенности в этом необходимо выполнить некоторые дополнительные исследования.
Предыдущая команда предоставит большое количество информации, если маршрутизатор, расположенный между целевым сервером и компьютером взломщика, отвечает на пакеты, время жизни которых, определяемое значением TTL (Time-To-Live), истекло. Однако некоторые маршрутизаторы и брандмауэры настроены таким образом, что они не возвращают lCMP-пакеты в ответ на поступившие ICMP- и UDP-пакеты с истекшим временем TTL. Все, что в данном случае можно сделать, — это воспользоваться утилитой traceroute и посмотреть на последний сегмент полученного маршрута. Этот узел может оказаться полнофункциональным брандмауэром или, как минимум, первым маршутизатором пути, с которого началось блокирование пакетов с истекшим временем TTL. В приведенном ниже примере произошло блокирование передачи ICMP-пакетов источнику назначения. Как следствие, данные о маршрутизаторах, расположенных на пути к целевому узлу дальше маршрутизатора client-gw.smallisp.net, в полученной информации отсутствуют.
1 stoneface (192.168.10.33) 12.640 ms 8.367 ms
2 gwl.localisp.net (172.31.10.1) 214.582 ms 197.992 ms
3 gw2.localisp.net (172.31.10.2) 2C6.627 ms 38.931 ms
4 dsl.localisp.net (172.31.12.254) 47.167 ms 52.640 ms
14 ATM6.LAX2.BIGISP.NET (10.50.2.1) 250.030 ms 391.716 ms
15 ATM7.SDG.BIGISP.NET (10.50.2.5) 234.668 ms 384.525 ms
16 client~gw.smallisp.net (10.50.3.250) 244.065 ms!X * *
17 * * *
18 * * *
Контрмеры: защита от отслеживания маршрута
Для того чтобы предотвратить получение информации с помощью утилиты traceroute, запретите передачу ответных пакетов на пакеты с истекшим временем TTL на всех брандмауэрах и маршрутизаторах, на которых это возможно. Однако помните о том, что полностью решить этот вопрос можно далеко не всегда, поскольку многие маршрутизаторы могут оказаться под управлениям вашего провайдера услуг Internet.
Обнаружение
Попытки получения маршрутов с использованием стандартных средств можно выявить на границах сети в процессе мониторинга ICMP- и UDP-пакетов со значением TTL, равным 1. Это можно осуществить с помощью пакета RealSecure 3.0, выбрав имя TRACE_ ROUTE среди параметров безопасности Security Events политики Network Engine Policy.
Предотвращение
Для того чтобы предотвратить возможность отслеживания маршрутов на границе сети, маршрутизаторы необходимо настроить таким образом, чтобы они не отправляли пакеты в ответ на сообщения с временем TTL, равным 0 или 1. На маршрутизаторах Cisco для этого можно воспользоваться следующим списком ACL. access-list 101 deny ip any any 11 0 ! Время ttl истекло
Однако лучше всего полностью заблокировать передачу пакетов UDP на пограничных маршрутизаторах.
Сбор маркеров
Сканирование портов позволяет определить местоположение брандмауэров, однако многие из них, подобно продуктам компаний Checkpoint и Microsoft, не прослушивают порты, установленные по умолчанию. Так что для подтверждения имеющихся сведений требуется получить дополнительные данные. В главе 3 подробно рассматривались методы получения имен запущенных приложений и их версий. Для этого необходимо подключиться к активным службам и извлечь связанные с ними идентификационные маркеры. Многие популярные брандмауэры предоставляют всю необходимую информацию сразу же после установки с ними соединения. Многие промежуточные узлы информируют злоумышленника о том, что они являются брандмауэрами, а некоторые из них дополнительно сообщают свой тип, а также версию. Например, при подключении с помощью утилиты netcat к порту 21 (FTP) узла, который, очевидно, является брандмауэром, можно получить некоторую важную информацию.
C:\>nc -v -n 192.168.51.129 21
(UNKNOWN) [192.168.51.129] 21 (?) open
220 Secure Gateway FTP server ready.
Сообщение Secure Gateway FTP server ready позволяет сделать вывод о том, что мы имеем дело со старым устройством Eagle Raptor. Последующее подключение к порту 23 (telnet) предоставляет еще одно доказательство этого предположения.
C:\>nc -v -n 192.168.51.129 23
(UNKNOWN) [192.168.51.129] 23 (?) open
Eagle Secure Gateway.
Hostname:
И наконец, если вы все еще не совсем уверены в том, что исследуемый узел является брандмауэром, можно подключиться с помощью утилиты netcat к порту 25 (SMTP). После этого все сомнения рассеются окончательно.
C:\>nc -v -n 192.168.51.129 25
(UNKNOWN) [192.168.51.129] 25 (?) open
421 fw3.acme.com Sorry, the firewall does not
provide mail service to you.
Как видно из приведенных примеров, в процессе идентификации брандмауэров чрезвычайно важной может оказаться информация о маркерах. После ее анализа можно воспользоваться хорошо известными изъянами или широко распространенными ошибками в настройке.
Контрмеры: защита от сбора маркеров
Для того чтобы избежать утечки информации, необходимо ограничить количество данных, предоставляемых по внешним запросам. К каждому маркеру можно добавить также сообщение о юридической ответственности, а, кроме того, все попытки получения этой информации должны регистрироваться в системных журналах. Специфика изменения маркеров, используемых по умолчанию, сильно зависит от типа используемого брандмауэра, так что перед выполнением подобных действий внимательно прочтите документацию или проконсультируйтесь с производителем.
Предотвращение
Для того чтобы предотвратить возможность сбора маркеров злоумышленником и, как следствие, получение им подробной информации о брандмауэре, можно изменить соответствующие конфигурационные файлы. Конкретные рекомендации зависят от типа брандмауэра. Например, для брандмауэров Eagle Raptor можно модифицировать маркеры FTP и telnet, изменив файлы сообщений с событиями дня (message-of-the day) ftp.motd и telnet.motd.
Изъяны программных посредников
Вообще, уязвимость программных посредников не очень высока. После зашиты самого брандмауэра и реализации надежных правил, используемых программным посредником, вероятность обхода брандмауэра будет значительно ниже. Однако, как и следует ожидать, зачастую брандмауэр оказывается настроен неправильно.
Имя узла: localhost
Ранние программные посредники системы UNIX не заботились о необходимости ограничения локального доступа. Несмотря на контроль пользователей, использующих Internet, было вполне возможно, чтобы внутренний пользователь мог получить локальный доступ к самому брандмауэру. Несомненно, при использовании такой атаки требуется знание корректного имени пользователя или пароля, используемых на брандмауэре. Однако вы очень удивитесь после того, как узнаете, насколько легко их подобрать в некоторых случаях. Для того чтобы проверить, уязвим ли ваш программный посредник подобным атакам, выполните следующие действия.
После появления на экране приглашения на регистрацию
С:\> nc -v -n 192.168.51.129 23
(UNKNOWN)[192.168.51.129] 23 (?) open
Eagle Secure Gateway.
Hostname:
1. Введите localhost.
2. Введите известное имя пользователя и пароль (или попробуйте с нескольких попыток их подобрать).
3. Если процесс аутентификации успешно завершился, значит, вы получили локальный доступ на брандмауэре.
4. Воспользуйтесь одним из средств генерации переполнения локального буфера (например, утилитой rdist) или любой другой аналогичной программой, чтобы получить привилегии администратора.
Контрмеры: защита от использования имени localhost
Предотвращение
Способ устранения ошибок в конфигурации во многом зависит от типа используемого брандмауэра. В любом случае можно реализовать правило, ограничивающее возможность доступа с определенных узлов. Конечно, лучше всего вообще запретить регистрацию с использованием имени localhost. Однако если это все же необходимо, установите TCP-оболочку, с помощью которой можно разрешить соединение лишь узлам с определенными IP-адресами.
Неавторизованный внешний доступ к программному посреднику
Такой подход наиболее пригоден для доступа к брандмауэрам, реализующим прозрачные функции, однако мы довольно часто сталкиваемся с его использованием. Администратор может уделить самое пристальное внимание обеспечению безопасности брандмауэра и установить строгие правила доступа, однако в то же время забыть о необходимости блокирования доступа извне. В этом случае сразу же возникнет два типа опасности: (1) взломщик может воспользоваться proxy-сервером для атак на всевозможные узлы Internet, активно применяя изъяны сценариев CG1 и различные методы мошенничества в Web, и (2) с помощью средств Web злоумышленник сможет получить доступ к вашей интрасети. Нам приходилось встречать подобным образом сконфигурированные брандмауэры и каждый раз мы могли получить доступ ко всей корпоративной интрасети.
Дня того чтобы узнать, уязвим ли ваш брандмауэр для такой атаки, измените в броузере параметры proxy-сервера так, чтобы они указывали на подозрительный (т.е. проверяемый) брандмауэр. В броузере Netscape для этого выполните следующие действия.
1. Выберите команду Edit>Preferences.
2. Выделите поддеревья Advanced и Proxies.
3. Щелкните на кнопке Manual Proxy Configuration.
4. Щелкните на кнопке View.
5. Добавьте адрес тестируемого брандмауэра в соответствующий список адресов HTTP и выберите порт, находящийся в состоянии прослушивания. (Обычно 80, 81. 8000 или 8080, однако реальные номера могут значительно варьироваться. Для определения корректного порта воспользуйтесь утилитой шпар или другим аналогичным средством.)
6. Введите в броузере адрес своего любимого Web-узла и следите за информацией, появляющейся в строке состояния.
Если в строке состояния отобразится адрес proxy-сервера, а затем на экране появится Web-стрпница, то, очевидно, вы имеете дело с неавторизованным proxy-сервером.
Если у вас имеется IP-адрес внутреннего Web-узла (не важно, маршрутизируется он или нет), то аналогичным образом можно попытаться получить доступ и к нему. Иногда этот внутренний IP-адрес можно встретить во время просмотра исходного кода HTTP. Зачастую Web-дизайнеры помещают имена узлов и IP-адреса в атрибуте HREF дескрипторов Web-страниц.
Контрмеры: защита от неавторизованного внешнего доступа к программному посреднику
Предотвращение
Для того чтобы предотвратить такую атаку, нужно запретить доступ к программному посреднику со стороны внешнего интерфейса брандмауэра. Поскольку конкретный алгоритм решения этой задачи сильно зависит от производителя, свяжитесь с ним для получения более подробной дополнительной информации.
На уровне сети необходимо ограничить входящий трафик к программному посреднику на пограничных маршрутизаторах. Это без особых проблем можно осуществить с помощью задания списков ACL этих маршрутизаторов.
Изъяны WinGate
Известно, что популярный программный брандмауэр WinGate систем Windows 95/NT (http://wingate.deerfield.com/) обладает несколькими уязвимыми местами. Большинство из них связано со значениями параметров, установленными по умолчанию, разрешающими неавторизованное использование служб telnet, SOCKS и Web. Хотя доступ к этим службам можно ограничить на уровне отдельных пользователей (и интерфейсов), в большинстве случаев установка и использование этого программного пакета выполняется без учета каких бы то ни было требований к защите. Список серверов WinGate можно найти на узле группы энтузиастов CyberArmy по адресу http://www.cyberarmy.com/wingate/.
Неавторизованный просмотр
Как и многие другие неправильно сконфигурированные программные посредники, определенные версии брандмауэра WinGate (в частности, 2.1 для NT) позволяют внешним пользователям абсолютно анонимно просматривать Internet. Такая возможность оказывается чрезвычайно важной для взломщиков, нацеленных на "захват" приложений Web-сервера, поскольку ею содержимое можно получить без риска быть пойманным. Защититься от Web-атак очень сложно, поскольку весь трафик туннелируется и направляется на порт 80. Более подробно хакинг Web рассматривается в главе 15.
Для того чтобы проверить, уязвим ли ваш сервер WinGate, выполните следующие действия.
1. Подключитесь к Internet с использованием нефильтруемого соединения (лучше всего удаленного).
2. Измените параметры броузера так, чтобы они указывали на proxy-сервер.
3. Задайте адрес проверяемого сервера и номер требуемого порта.
Еще одним изъяном конфигурации, используемой по умолчанию, является возможность неавторизованного доступа к службе SOCKS (TCP 1080). Как и в случае открытого TCP-порта 80, используемого службами Web, взломщик может просматривать ресурсы Internet, оставаясь практически полностью незамеченным (особенно, если отключен режим регистрации системных событий).
Контрмеры: защита от неавторизованного просмотра
Предотвращение
Для того чтобы нейтрализовать описанный изъян сервера WinGate, нужно просто ограничить привязку определенных служб. Для ограничения использования служб proxy-сервера на многоадаптерном (multihomed) узле выполните следующие действия.
1. Откройте диалоговое окно свойств службы SOCKS или WWW Proxy Server.
2. Перейдите во вкладку Bindings.
3. Выберите режим Connections Will Be Accepted On The Following Interface Only и задайте внутренний интерфейс сервера WinGate.
Лучший подарок хакеру: . неконтролируемый доступ к службе telnet
Неавторизованный доступ к службе telnet гораздо опаснее возможности просмотра ресурсов Web. Средства telnet чрезвычайно важны для взломщика. Подключившись к службе telnet неправильно сконфигурированного WinGate, злоумышленники могут использовать его для сокрытия следов своей деятельности. Для поиска уязвимых серверов выполните следующие действия.
1. С помошью утилиты telnet попробуйте подсоединиться к серверу.
[root]* telnet 172.29.11.191
Trying 172.29.11.191... Connected to 172.29.11.191.
Escape character is 1/s]'. Wingate> 10.50.21.5
2. После появления на экране приведенного выше текста введите адрес узла для подключения.
3. Если на экране появилось новое приглашение для регистрации, значит, вы имеете дело с уязвимым сервером.
Connecting to host 10.50.21.5...Connected
SunOS 5.6
login:
Контрмеры: защита от неавторизованного доступа к службе telnet
Предотвращение
В данном случае можно воспользоваться теми же рекомендациями, что приведены в разделе " Контрмеры: Защита От Неавторизованного Просмотра". Для устранения проблемы просто ограничьте привязку определенных служб сервера WinGate. На многоадаптерном узле выполните для этого следующие действия.
1. Откррйте диалоговое окно свойств сервера Telnet.
2. Перейдите во вкладку Bindings.
3. Выберите режим Connections Will Be Accepted On The Following Interface Only и задайте внутренний интерфейс сервера WinGate.
Просмотр файлов
Согласно одной из статей бюллетеня Digital Security Advisory сервер WinGate 3.0 через порт управления 8010 позволяет любому пользователю просматривать файлы системы. Для того чтобы проверить, уязвима ли ваша система, выполните следующие инструкции.
http://192.168.51.101:8010/c:/
http://192.168.51.101:8010//
http://192.168.51.101:8010/..../
Если система уязвима, то вы сможете просмотреть каждый файл каталога, а также перемещаться по иерархии каталогов по своему усмотрению. Такая возможность чрезвычайно опасна, поскольку некоторые приложения хранят имена пользователей и пороли в виде незашифрованного текста. Например, если для удаленного управления серверами на вашем компьютере установлены программы Remotely Possible или ControlIT компании Computer Associates, то имена пользователей и пароли, используемые при аутентификации, хранятся либо в незашифрованном виде, либо в форме, которую не составляет труда расшифровать (см. главу 13).
Контрмеры: предотвращение просмотра файлов
Для текущей версии сервера WinGate в настоящее время нет модуля обновления, позволяющего устранить проблему просмотра файлов. Для получения более подробной информации о доступных модулях обновления обратитесь на соответствующий узле поддержки по адресу http: /wingate.deerfield.com/helpdesk/.
Основные сведения
На современном рынке преобладает два типа брандмауэров: программные посредники (application proxy) и шлюзы фильтрации пакетов (packet filtering gateways). Хотя программные посредники считаются более надежными, чем шлюзы фильтрации пакетов, их ограниченность и невысокая производительность обуславливают их применение в основном к исходящему трафику, а не к входящему потоку сообщений, поступающему на Web-серверы многих компаний. В то же время, шлюзы фильтрации пакетов или более сложные шлюзы с сохранением состояния (stateful) можно найти во многих крупных организациях, в которых высокие требования предъявляются к исходящему трафику.
После появления первого брандмауэра они стали защищать многочисленные сети от глаз и нападок злоумышленников. Однако брандмауэры все же нельзя рассматривать как панацею от всех бед. Ежегодно новые слабые места обнаруживаются в системе защиты практически каждого брандмауэра, присутствующего на рынке. Что еще хуже, большинство брандмауэров зачастую неправильно настраивается, обслуживается и проверяется. В результате они становятся очень похожи на электронные ограничители, которые лишь не дают двери широко распахнуться, но все же оставляют небольшую щель для проникновения.
Не вызывает никаких сомнений, что правильно разработанный, сконфигурированный и обслуживаемый брандмауэр является практически неуязвимым. Это известно многим опытным злоумышленникам, которые стремятся обойти такие брандмауэры и воспользоваться доверительными отношениями, уязвимыми линиями связи или вообще прибегнуть к нападению через учетную запись удаленного доступа. Из всего вышесказанного можно сделать лишь один вывод: большинство взломщиков предпочитают обойти надежный брандмауэр. Поэтому необходимо позаботиться о его надежности.
Что же касается самих администраторов, то они должны хорошо представлять своих противников и их возможности. Очень важно знать о том, какие первые шаги предпримет злоумышленник для обхода брандмауэра, чтобы вовремя выявить подобную деятельность и предотвратить нападение. В этой главе будут рассмотрены типичные приемы, используемые в настоящее время для исследования и инвентаризации брандмауэров, а также несколько методов, которыми могут воспользоваться взломщики для их обхода. Кроме того, вы узнаете о том, как выявить и предотвратить каждую из подобных атак.
На самом деле правильно сконфигурированный
На самом деле правильно сконфигурированный брандмауэр оказывается чрезвычайно хорошо защищенным. Однако при использовании средств сбора информации, таких как утилиты traceroute, hping и nmap, взломщики могут исследовать потенциальные пути прохождения маршрутизатора и брандмауэра, а также определить их тип (или как минимум сделать на этот счет определенные предположения). Большинство из известных в настоящее время изъянов связано с неправильной настройкой брандмауэра или недостаточным вниманием к его администрированию. Использование взломщиком любого из них может привести к настоящей катастрофе.
Кроме того, в обоих типах брандмауэров имеются свои собственные специфические изъяны, в том числе возможность использования служб Web, telnet и локальной регистрации. Для предотвращения большинства из рассмотренных слабых мест можно воспользоваться определенными контрмерами, однако в некоторых случаях возможно лишь их выявление.
Многие считают, что в будущем неизбежно произойдет слияние обоих технологий — программных посредников и брандмауэров с фильтрацией пакетов, — что позволит ограничить количество ошибок, возникающих при их конфигурировании в настоящее время. Подсистема противодействия также станет составной частью брандмауэров нового поколения. Компания NAI уже реализовала свою архитектуру такой подсистемы — Active Security. После выявления вторжения она позволяет автоматически инициировать предопределенные изменения конфигурации сервера, подвергнувшегося атаке. Например, если системой выявления вторжений обнаружено туннелирование пакетов ICMP, то она может направить брандмауэру сообщение о необходимости игнорирования запросов ECHO. Однако в таком сценарии по-прежнему остается место для атак DoS, так что сотрудникам службы безопасности не стоит забывать об этом.
Война с брандмауэрами
Не волнуйтесь, в данном разделе мы Не будем рассматривать чудодейственные способы вывода из строя действующих брандмауэров. Мы лишь познакомимся с несколькими приемами, которые позволяют собрать некоторую важную информацию о различных путях проникновения через брандмауэры и их обхода.
Передача тестовых пакетов
Утилита hping, написанная Сальватором Санфилиппо (Salvatore Sanfilippo), передает TCP-пакеты на порт назначения и сообщает о том, какие ответные пакеты были получены. В зависимости от многочисленных условий эта утилита предоставляет самые разнообразные сведения. Каждый отдельный пакет и все пакеты в целом способны предоставить довольно ясное представление об используемых на брандмауэрах списках управления доступом. Например, с помощью утилиты hping можно выявить открытые и заблокированные порты, а также потерянные и отвергнутые пакеты.
В следующем примере утилита hping сообщила о том, что открыт порт 80, который готов установить соединение. Такое заключение можно сделать на основании того, что мы получили пакет с установленным флагом SA (пакет SYN/ACK).
[root]# hping 192.168.51.101 -с2 -S -р80 -n
HPING www.yourcomapany.com (ethO 172.30.1.20): S set, 40 data bytes
60 bytes from 172.30.1.20: flags=SA seq=0 ttl=242 id=65121 win=64240
time=144.4 ms
Теперь нам известен открытый порт на пути к желанной цели, однако мы еще ничего не знаем о брандмауэре. В следующем примере утилита hping сообщает о том. что с узла 192.168.70.2 ею получен ICMP-пакет типа 13 (Destination Unreachable — получатель недостижим). В главе 2 упоминалось, что такой пакет обычно передается маршрутизатором с фильтрацией пакетов типа Cisco IOS, на котором взаимодействие с определенными портами административно запрещено.
[root]# hping 192.168.51.101 -с2 -S -p23 -n
HPING 192.168.51.101 (ethO 172.30.1.20): S set, 40 data bytes
ICMP Unreachable type 13 from 192.168.70.2
С этого момента наше предположение подтвердилось: узел 172.168.70.2, скорее всего, является брандмауэром. Кроме того, нам известно, что на нем явно блокируется порт 23. Другими словами, если узел представляет собой маршрутизатор Cisco, то в его конфигурационном файле наверняка имеется следующая строка.
access- list 101 deny tcp any any 23!telnet
В приведенном ниже примере мы получили ответный пакет RST/ACK, что свидетельствует о выполнении одного из двух возможных условий: (1) пакет прошел через брандмауэр и на целевом узле заданный порт не находится в состоянии ожидания запросов или (2) брандмауэр отверг пакет (что вполне возможно, если на брандмауэре Checkpoint действует правило REJECT).
[root]# hping 192.168.50.3 -с2 -S -p22 -n
HPING 192.168.50.3 (ethO 192.168.50.3): S set, 40 data bytes
60 bytes from 192.168.50.3:flags=RA
seq=0 ttl=59 id=0 win=0 time=0.3 ms
Поскольку ранее был получен ICMP-пакет типа 13, можно сделать вывод о том, что брандмауэр (192.168.70.2) позволяет пакетам проходить дальше по маршруту, однако на целевом узле опрашиваемый порт не находится в состоянии ожидания запросов.
Если при сканировании портов на пути к цели оказался брандмауэр Checkpoint, то утилита hping сообщит IP-адрес целевого узла, однако на самом деле пакет будет отправлен с внешнего сетевого адаптера брандмауэра CheckPoint. В данном случае хитрость заключается в том, что брандмауэр CheckPoint генерирует ответный пакет вместо внутреннего узла, помещая в этот пакет его ложный адрес. Однако если взломщик столкнется с подобной ситуацией в Internet, то ему никогда не удастся узнать об этом, поскольку на его компьютер МАС-адрес никогда не попадет.
И наконец, если брандмауэр вообще блокирует пакеты, передаваемые на заданный порт, как правило, в ответ не будет получено никакой информации.
[root]# hping 192.168.50.3 -с2 -S -p22 -n
HPING 192.168.50.3 (ethO 192.168.50.3): S set,40 data bytes
Такой результат утилита hping может предоставить по двум причинам: (1) пакет не смог достичь источника назначения и был утерян в процессе передачи или (2) наиболее вероятно, пакет был отброшен устройством (возможно, брандмауэром — 192 .168. 70.2) в соответствии с установленными правилами ACL.
Контрмеры: защита от тестовых пакетов
Предотвращение
Предотвратить атаки с использованием утилиты hping очень трудно. Лучше всего просто заблокировать передачу сообщений ICMP с типом 13 (как описано в разделе, посвященному утилите nmap).
Утилита firewalk
Утилита firewalk является небольшим прекрасным средством, которое, подобно программам-сканнерам, позволяет исследовать порты узлов, расположенных позади брандмауэра. Она написана Майком Шифманом (Mike Schiffman) и Дэйвом Гольдсмитом (Dave Goldsmith). С помощью этой утилиты можно просканировать такие узлы и получить установленные на них правила. Причем вся процедура выполняется без реального "прикосновения" к целевой системе.
Утилита firewalk генерирует IP-пакеты с параметром TTL, который вычисляется так, чтобы время жизни пакета истекло в следующем за брандмауэром сегменте маршрута. Теоретические предпосылки такого подхода заключаются в том, что если пакет пропускается брандмауэром, то по истечении времени его жизни будет получено сообщение ICMP TTL, expired in transit (время жизни истекло в процессе передачи). В то же время, если пакет блокируется на основании заданного списка ACL брандмауэра, то этот пакет будет отвергнут. В результате либо вообще не будет получено никакого ответного сообщения, либо будет получен ICMP-пакет с типом 13.
[root]# firewalk -pTCP -S135-140 10.22.3.1
192.168.1.1
Ramping up hopcounts to binding host...
probe: 1 TTL: 1 port 33434: expired from [exposed.acme.com]
probe: 2 TTL: 2 port 33434: expired from [rtr.isp.net]
probe: 3 TTL: 3 port 33434: Bound scan at 3 hops [rtr.isp.net]
port 135: open
port 136: open
port 137: open
port 138: open
port 139: *
port 140: open
Относительно утилиты firewalk необходимо упомянуть об одной проблеме, которая заключается в том, что ее результаты могут оказаться непредсказуемыми. Некоторые брандмауэры способны выявить истечение времени жизни пакета до проверки своего списка ACL, что приводит к передаче ответного ICMP-сообшения TTL EXPIRED в любом случае. В результате утилитой firewalk все порты будут считаться открытыми.
Контрмеры: защита от утилиты firewalk
Предотвращение
На уровне внешнего интерфейса можно заблокировать передачу ICMP-пакетов TTL EXPIRED, однако это может отрицательно сказаться на производительности, поскольку легитимные клиенты никогда не смогут узнать, что же произошло с их соединением.
Сканирование с исходного порта
Традиционные брандмауэры с фильтрацией пакетов типа IOS Cisco имеют один существенный недостаток: они не сохраняют состояние! Для большинства читателей этот факт выглядит вполне очевидным, не так ли? Однако проанализируйте его еше раз. Если брандмауэр не может поддерживать состояние, то он не может определить, с внутренней или с внешней стороны было установлено соединение. Другими словами, такие брандмауэры не могут полностью управлять некоторыми потоками данных. Как следствие, в качестве исходного можно задать порт, который обычно является "легитимным", например TCP 53 (перенос зоны) и TCP 20 (FTP), а затем для получения ценной информации приступить к сканированию (или к атаке).
Для того чтобы определить, позволяет ли брандмауэр выполнять сканирование с заданного исходного порта 20 (канала данных FTP), воспользуйтесь утилитой nmap с параметром -д.
nmap -sS -Р0 -д 20 -р 139 10.1.1.1
При задании статического исходного порта в качестве параметра утилиты шпар необходимо воспользоваться методом сканирования с неполным открытием сеанса или с использованием сообщений SYN.
Если сканируемые порты оказались открытыми, то, очевидно, вы имеете дело с уязвимым брандмауэром, который расположен между вашим компьютером и целевым узлом. Для лучшего понимания описываемого процесса проанатазируйте приведенную ниже диаграмму.
![](1.gif)
Если обнаружится, что брандмауэр не сохраняет состояние соединений, то можно воспользоваться этим преимуществом и приступить к атаке уязвимых узлов, расположенных за этим брандмауэром. С помощью модифицированной утилиты перенаправления портов, например Fpipe от группы Foundstone, можно задать исходный порт 20, а затем приступить к атаке целевого узла через брандмауэр.
Контрмеры: защита и сканирования с исходного порта Предотвращение
Решить описанную проблему очень просто, однако это решение выглядит не очень эффектным. Необходимо запретить любые сетевые взаимодействия, для которых требуется комбинация из нескольких портов (FTP), либо перейти к промежуточным программным брандмауэрам или тем, которые сохраняют состояние соединений. При этом можно значительно повысить управляемость входящими и исходящими соединениями, а также реально контролировать весь процесс.