- •Введение
- •1 Анализ основных типов мэ и способов их применения
- •1.1 Типы межсетевых экранов
- •1.1.1 Фильтры пакетов
- •1.1.2 Фильтры пакетов с контекстной проверкой
- •1.1.3 Сервер уровня соединения
- •1.1.4 Серверы прикладного уровня
- •1.2 Способы применения межсетевых экранов
- •1.Стандартные схемы защиты отдельной локальной сети.
- •1.2.1 Стандартные схемы защиты отдельной локальной сети
- •1.2.2 Применение в составе средств коллективной защиты
- •1.3 Персональные межсетевые экраны
- •1.4 Обобщенная концепция применения межсетевых экранов
- •1.5 Обзор персональных межсетевых экранов, доступных на рынке
- •2 Классификация уязвимостей сетевых экранов, создающих предпосылки их компрометации
- •2.1 Уязвимости сетевых протоколов
- •2.1.1 Снифферы пакетов
- •2.1.2 Уязвимость маршрутизации от источника
- •2.1.4 Атаки типа “отказ в обслуживании”
- •2.1.5 Атаки syn flood
- •2.1.6 Атака Smurf
- •2.1.7 Атака Tribe Flood Network
- •2.1.8 Атака WinFreeze.
- •2.1.9 Атака Loki.
- •2.1.10 Arp атаки
- •2.1.11 Фрагментация
- •2.2 Уязвимости операционных систем
- •2.2.1 Получение прав другого пользователя
- •2.2.2 Нелегальное подключение к системе
- •2.2.3 Человеческий фактор
- •2.2.4 Совместимость с другими операционными системами
- •2.2.5 Парольные атаки
- •2.2.6 Вирусы и приложения типа "троянский конь"
- •2.3 Уязвимости программной реализации сетевых экранов
- •2.3.1 Атаки через туннели в межсетевом экране
- •2.3.2 Атаки вследствие неправильной конфигурации межсетевого экрана
- •2.3.3 Атаки осуществляемые в обход межсетевого экрана
- •2.3.4 Атаки осуществляемые из доверенных узлов и сетей
- •2.3.5 Атаки путем подмены адреса источника
- •2.3.6 Атаки на сам межсетевой экран
- •2.3.7 Атаки на подсистему аутентификации межсетевого экрана
- •2.4 Выводы
- •3 Исследование архитектуры и функционирования мэ на примере предложенного по
- •3.1 Исследование механизмов взаимодействия средств сетевой безопасности с операционной системой
- •3.1.1 Подходы к организации фильтрования трафика в ос Windows
- •3.3 Выводы
- •4 Разработка алгоритмов для проверки уязвимостей средств сетевой безопасности
- •4.1 Обобщённый алгоритм воздействия на средства сетевой безопасности
- •4.3.2.1 Инвентаризация Windows nt/2000/xp
- •4.3.2.3 Инвентаризация unix
- •4.3.3 Проникновение в сеть и захват контроля над хостом
- •4.3.3.1 Взлом хоста с ос Windows
- •4.3.3.2 Взлом хоста с ос Unix
- •4.4 Разработка алгоритмов воздействия на средства сетевой защиты изнутри защищенной сети
- •4.4.1 «Инъекции» кода
- •4.4.2 Использование виртуальной машины
- •4.4.3 Использование уязвимостей ActiveX
- •4.5 Разработка алгоритмов, основанных на уязвимостях механизма взаимодействия средств сетевой безопасности с операционной системой
- •4.6 Разработка алгоритмов установления соединения с компьютером, защищенным межсетевым экраном, персональным сетевым экраном и несколькими сетевыми экранами
- •4.6.1 Http-тунелирование
- •4.6.2 Icmp-тунелирование
- •4.6.4 Pcap-тунелирование
- •4.7 Выводы
4.3.2.3 Инвентаризация unix
Инвентаризация пользователей и групп UNIX
Самым старым приемом инвентаризации учетных записей пользователей является утилита finger. Эта утилита предоставляла простой и удобный способ получения информации о пользователях удаленного узла еще в те времена, когда сеть Internet не была настолько большой и простой в использовании. Многие средства проникновения в сеть по-прежнему базируются на использовании этой утилиты, поскольку нерадивые системные администраторы зачастую запускают системный процесс fingerd без каких-либо мер обеспечения безопасности. Предполагается, что в процессе сканирования портов была получена информация о том, что на исследуемом узле запущена служба finger (порт 79).
[root$]finger -I @target.hackme.com
[target.hackme.com]
Login: root Name: root
Directory: /root Shell: /bin/bash
On since Sun Mar 28 11:01 (PST) on ttyl 11 minutes idle
(messages off)
On since Sun Mar 28 11:01 (PST) on ttypO from :0.0
3 minutes 6 seconds idle
No mail.
Plan:
John Smith Security Guru Telnet password is my birthdate.
Команда finger 0@имя-узла также позволяет получить интересный результат.
[root$]finger 00192.168.202.34
[192.168.202.34]
Line User Host(s) Idle Location
* 2 vty 0 idle 0 192.168.202.14
SeO Sync PPP 00:00:02
Большая часть информации, которая отображается утилитой finger, не имеет особого значения (она выбирается из соответствующих полей файла /etc/password). Можно сказать, что с точки зрения безопасности самой опасной является информация об именах пользователей, зарегистрированных в системе, а также о времени, в течение которой пользователь не выполняет каких-либо операций (idle). Это поможет злоумышленнику определить, кто в данный момент "присматривает" за машиной (возможно, пользователь root?) и насколько внимательно он это делает. Некоторая дополнительная информация может использоваться при попытке проникновения в сеть с помощью приемов социальной инженерии. Пользователи, которые помещают в свой рабочий каталог файлы .plan или .project, могут дать очень хорошую наводку злоумышленнику (содержимое этих файлов выводится командой finger).
Обнаружить и устранить подобную утечку информации очень просто. Достаточно не запускать демон fingerd (для этого нужно закомментировать соответствующую строку в файле inetd.conf и выполнить команду killall -HUP inetd), а также заблокировать порт 79 на брандмауэре. Если по каким-то причинам все же необходимо иметь доступ к программе finger, используйте TCP-оболочки, чтобы ограничить доступ к узлу и регистрировать все соответствующие события. Можно также воспользоваться модифицированным демоном finger, предоставляющим ограниченное количество информации.
Существуют также и другие, менее популярные утилиты, например rusers и rwho. Как и в случае с программой finger, от них лучше отказаться (обычно эти утилиты запускаются независимо от демона inetd). Поищите в файлах загрузки ссылки на файлы rpc.rwhod и rpc.rusersd). Утилита rwho возвращает перечень пользователей, которые в данный момент зарегистрированы на удаленном узле,
rwho 192.168.202.34
root localhost:ttypO Apr 11 09:21
jack beanstalk:ttypl Apr 10 15:01
jimbo 192.168.202.77:ttyp2 Apr 10 17:40
При использовании параметра -1 утилита rusers позволяет получить более подробную информацию. Кроме сведений о пользователях она предоставляет данные о времени, прошедшем после последнего нажатия пользователем клавиш на клавиатуре,
rusers -1 192.168.202.34
root 192. 168..202.34:ttyl Apr 10 18:58 :51
root 192.168.202.34:ttypO Apr 10 18:59 :02 (:0.0)
Еще один классический метод инвентаризации основан на использовании универсального средства почтовой доставки Internet — протокола SMTP (Simple Mail Transfer Protocol). Этот протокол поддерживает две встроенные команды, которые позволяют выполнять инвентаризацию пользовательских учетных записей. Команда VRFY подтверждает, что введенное имя имеется в системе, а команда EXPN отображает реальный адрес доставки письма вместо псевдонима или списка рассылки. Хотя в настоящее время многие компании и так достаточно свободно предоставляют информацию об электронных адресах, разрешение подобной деятельности на почтовом сервере может дать взломщику ценную информацию о пользователях, а также предоставить ему возможность фальсификации.
telnet 192.168.202.34 25
Trying 192.168.202.34...
Connected to 192.168.202.34.
Escape character is -'^]'.
220 mail.bigcorp.com ESMTP Sendmail
8.8.7/8.8.7; Sun, 11 Apr 1999
10:08:49 -0700
vrfy root
250 root <root@bigcorp.com>
expn adm
250 adm <adm@bigcorp.com>
quit
221 mail.bigcorp.com closing connection
Это еще один пример того, что нужно всегда помнить о старых «хакерских» приемах и вовремя отключать соответствующие режимы. Популярная программа sendmail, предназначенная для обмена информацией с использованием протокола SMTP (http://www.sendmail.org), начиная с версии 8, поддерживает синтаксис, который позволяет поместить в файл mail.cf параметры, запрещающие подобные команды или требующие аутентификации. Другие реализации SMTP-сервера должны предоставлять аналогичные возможности.
Самым популярным приемом злоумышленников UNIX является попытка получения файла /etc/passwd. Необходимо отметить, что один из наиболее популярных методов получения этого файла состоит в использовании протокола TFTP (Trivial File Transfer Protocol — простой протокол передачи файлов).
tftp 192.168.202.34
tftp> connect 192.168.202.34
tftp> get /etc/passwd /tmp/passwd.cracklater
tftp> quit
Помимо того, что в данном примере взломщику удалось получить файл паролей, которые он может попытаться взломать в любой момент, прямо из этого файла он может получить информацию о пользователях. Решение данной проблемы состоит в том, чтобы вообще отказаться от протокола TFTP. В тех же случаях, когда это действительно необходимо, упаковывайте передаваемые по этому протоколу пакеты данных, ограничьте доступ к каталогу /tftpboot и убедитесь, что протокол заблокирован на уровне пограничного брандмауэра.
Инвентаризация приложений и идентификационных маркеров
Как и любой другой сетевой ресурс, приложения должны иметь возможность обмениваться друг с другом информацией по сети. Одним из самых популярных протоколов, разработанных для обеспечения этого процесса, является протокол RPC (Remote Procedure Call). На основе RPC работает программа rpcbind, основная задача которой состоит в посредничестве между запросами клиентов и портами, которые эта программа динамически назначает находящимся в режиме ожидания приложениям. Несмотря на постоянную головную боль, которую много лет вызывают у администраторов брандмауэров подобные программы, служба RPC остается чрезвычайно популярным механизмом. Существует утилита rpcinfo, которая, подобно программе finger, может применяться для инвентаризации приложений RPC, находящихся в состоянии ожидания запроса на удаленном узле. Обычно для того чтобы воспользоваться этой утилитой, во время сканирования достаточно установить, что открыт порт 111 (rcbind) или 32771 (вариант утилиты от компании Sun).
rpcinfo -p 192.168.202.34
program vers proto port
100000 2 tcp 111 rpcbind
100002 3 udp 712 rusersd
100011 2 udp 754 rquotad
100005 I udp 635 mountd
100003 2 udp 2049 nfs
100004 2 tcp 778 ypserv
Из полученных результатов можно заключить, что на данном узле запущен системный процесс rusersd, программное обеспечение служб NFS и NIS (ypserv — сервер службы NIS). Таким образом, с помощью команд rusers, shomount -e и pscan -n можно попытаться получить более подробную информацию. Кроме того, для инвентаризации можно также воспользоваться утилитой pscan (упоминавшейся выше) с параметром -г.
Утилиту, аналогичную rpcinfo, можно применять и в системе Windows NT. Эта утилита, написанная Дэвидом Литчфилдом (David Litchfield) называется rpcdump. Как видно из следующего примера, утилита rpcdump ведет себя аналогично rpcinfo с параметром -р.
D:\Toolbox>rpcdump 192.168.202.105
Program no. Name Version Protocol Port
(100000) portmapper 4 TCP 111
(100000) portmapper 3 TCP 222
(100001) rstatd 2 UDP 32774
(100021) nlockmgr 1 UDP 4045
Существует и несколько других приемов использования службы RPC, с помощью которых злоумышленники могут получать требуемую информацию. Так, в системе Solaris компании Sun используется вторая утилита, необходимая для работы с портами с номерами выше 32771. Следовательно, модифицированная версия утилиты rpcinfo при обращении к этому порту позволит получить приведенную выше информацию, даже если порт 111 заблокирован.
Хотя лучший инструмент RFC-сканирования из всех, которые нам доводилось видеть, входит в состав коммерческого пакета CyberCop Scanner компании Network Associates, Inc., для поиска определенных приложений RPC злоумышленник может воспользоваться бесплатной утилитой rpcinfo со специальными параметрами. Например, для того чтобы проверить, работает ли на исследуемом компьютере по адресу 192.168.202.34 сервер TTDB (ToolTalk Database), известный своей уязвимостью, можно воспользоваться следующей командой.
rcpinfo -n 32771 -t 192.168.202.34 100083
В службе RPC серверу TTDB соответствует программный номер 100083.
Самый простой способ воспрепятствовать такой утечке информации, —предусмотреть тот или иной механизм аутентификации, применяемый со службой RPC (более подробные сведения об имеющихся возможностях можно получить из документации). Второй метод состоит в использовании пакета, подобного Secure RPC компании Sun, который обладает встроенными средствами аутентификации, базирующимися на криптографическом механизме с использованием открытого ключа. Наконец, обязательно убедитесь в том, что порты 111 и 32771 (rpcbind) фильтруются на уровне брандмауэра.
Классический способ проведения инвентаризации приложений практически любой системы состоит в подключении к порту, о котором известно, что он находится в состоянии ожидания запросов. Это можно осуществить с помощью утилит telnet или netcat. Попробуйте перенаправить вывод специального текстового файла на вход netcat, чтобы попытаться получить более подробную информацию. Создайте файл nudge. txt, содержащий одну-единственную строку GET / HTTP/1.0 и два символа перевода строки, а затем, запустите следующую команду.
nc -nw -о banners.txt
192.168.202.34 80 < nudge.txt
HTTP/1.0 200 OK
Server: Sun_WebServer/2.0
Date: Sat, 10 Apr 1999 07:42:59 GMT
Content-Type: text/html
Last-Modified: Wed, 07 Apr 1999 15:54:18
GMT
ETag: "370a7fbb-2188-4"
Content-Length: 8584
<HTML> <HEAD>
<META NAME="keywords"
CONTENT="BigCorp, hacking, security">
<META NAME="description"
CONTENT»"Welcome to BigCorp's Web site.
BigCorp is a leading manufacturer of security holes.">
<
TITLE>BigCorp
Corporate Home Page</TITLE>
</HEAD>
Рис. 4.23 - Команда Crawl Website программы Sam Spade
Если в качестве параметра утилиты netcat используется IP-адрес исследуемого компьютера, то нужно указать также параметр -n.
Другими примерами содержимого такого текстового файла являются строки HEAD /HTTP/1.0<cr><cr>, QUiT<cr>, HELP<cr>, ECHO <cr> и даже просто пара символов перевода строки (<сr>).
Необходимо также отметить, что немало "лакомых кусочков" информации можно найти в исходном HTML-коде Web-страниц. Одним из наших любимых инструментов для проверки целых Web-узлов (а также для выполнения других не менее полезных функций) является утилита Sam Spade компании Blighty Design (http://www.blighty. com/products/spade). На Рис. 4.6 показано, как программа Sam Spade может проверить весь Web-узел в поисках заданной информации, например слова password.
