Война с брандмауэрами
Контрмеры: защита от тестовых пакетов
Предотвращение
Предотвратить атаки с использованием утилиты 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 с параметром -g.
nmap – sS – Р0 – g 20 – р 139 10.1.1.1
При задании статического исходного порта в качестве параметра утилиты nmap необходимо воспользоваться методом сканирования с неполным открытием сеанса или с использованием сообщений SYN.
Если сканируемые порты оказались открытыми, то, очевидно, вы имеете дело с уязвимым брандмауэром, который расположен между вашим компьютером и целевым узлом. Для лучшего понимания описываемого процесса проанализируйте приведенную ниже диаграмму.
Если обнаружится, что брандмауэр не сохраняет состояние соединений, то можно воспользоваться этим преимуществом и приступить к атаке уязвимых узлов, расположенных за этим брандмауэром. С помощью модифицированной утилиты перенаправления портов, например Fpipe от группы Foundstone, можно задать исходный порт 20, а затем приступить к атаке целевого узла через брандмауэр.
Контрмеры: защита и сканирования с исходного порта Предотвращение
Решить описанную проблему очень просто, однако это решение выглядит не очень эффектным. Необходимо запретить любые сетевые взаимодействия, для которых требуется комбинация из нескольких портов (FTP), либо перейти к промежуточным программным брандмауэрам или тем, которые сохраняют состояние соединений. При этом можно значительно повысить управляемость входящими и исходящими соединениями, а также реально контролировать весь процесс.