А. Н. Андрончик, В. В. Богданов, Н. А. Домуховский, А. С. Коллеров, Н. И. Синадский, Д. А. Хорьков
Скачать 9.2 Mb.
|
ВЫПОЛНИТЬ! Определите настройки протокола TCP/IP ва командой ipconfig из командной строки. Установите и запустите с захват сетевого трафика. Выполните ко ping *.*.*.* компьютера. Осуществите просмотр трафика. В полученных сетевых паке в наличии полей «источник», «приемник», «тип протокола». Найдите пакет, источником которого является Ваш компьютер, тип прото- кола — ICMP, описание — Echo. Откройте подробное описание данного пакета. Найдите тип пакета и отправляемые данные 38 6. Найдите ответный пакет (приемник — ваш компьютер, тип протокола — ICMP, описание — Echo Reply). Откройте подробное описание данного пакета. Сколько и каких символов отправляется в ответ? 7. Сколько раз осуществляется обмен ICMP-пакетами? Как представлены в IP-пакетах IP-адреса приемника и источника? Вторым широко распространенным способом выявления сетевой топо- логии является TCP-сканирование, которое заключается в последовательной попытке установления сетевого соединения по определенному порту с пере- бором IP-адресов. При установке TCP-соединения, как было указано ранее, первым паке- том, отправляемым на тестируемый узел, является пакет с установленным флагом SYN (рис. 2.4). В зависимости от того, присутствует ли в сети компь- ютер с указанным адресом, на котором включена тестируемая служба, воз- можны три ситуации. В том случае, если компьютер присутствует и на нем функционирует запрашиваемый порт, ответом будет пакет с установленными флагами ACK и SYN, указывающими на то, что по данному порту может быть установлено соединение (рис. 2.5). Анализируя данный ответ, атакующий не только может установить факт присутствия в сети узла, но и определить нали- чие на нем определенной сетевой службы. Рис. 2.5. Ответ о возможности установки TCP-соединения В том случае, если компьютер присутствует, но запрашиваемый порт на нем не открыт, в ответ отправляется TCP-пакет с установленными флагами ACK и RST, указывающими на то, что по запрашиваемому порту соединение 39 установить нельзя (рис. 2.6). Получив подобный ответ, атакующий принимает решение о присутствии в сети узла с интересующим IP-адресом, но недоступ- ности запрашиваемого порта. И, наконец, если в сети нет искомого узла, то в ответ не будет получено ничего. Рис. 2.6. Ответ о невозможности установки TCP-соединения 2.3. Обнаружение доступных сетевых служб Выше была описана технология выявления сетевых узлов путем уста- новки TCP-соединения. Аналогичная технология используется, когда заранее известно, что узел в сети присутствует, но необходимо получить информацию о доступных сетевых службах, т. е. выполнить сканирование портов сетевого узла. В этом случае последовательно осуществляются попытки подключения к сетевым портам в определенном диапазоне. Чаще всего применяются не подряд все номера портов, а только те из них, которые наиболее интересны злоумышленникам с целью дальнейшего проникновения. В ряде случаев перечень номеров портов может быть сфор- мирован злоумышленниками на основе полученной ранее по коду ICMP- ответа информации о типе операционной системы. Одиночный запрос установки TCP-соединения по одному из портов мо- жет считаться атакой лишь в случае, когда защищаемая сеть является «кли- ентской». Однако если мы защищаем «клиентскую» сеть, которая не должна 40 предоставлять вовне каких-либо сетевых услуг, то и одиночные попытки ус- тановки соединения должны интерпретироваться как атака. Последователь- ные же попытки установить соединение с несколькими портами явно свиде- тельствует о начавшейся сетевой атаке. Таким образом, в случае TCP-пакетов атакой будем считать все попытки установки TCP-соединения, инициируемые извне. Рис. 2.7. Последовательные попытки установки TCP-соединений Заметим, что мы рассмотрели только классический способ TCP- сканирования, известный как сканирование методом Connect(), когда устанав- ливается полное TCP-соединение. Вместе с тем известны более изощренные методы, позволяющие процесс сканирования осуществлять скрытно: SYN- сканирование, FIN-сканирование, ACK-сканирование, XMAS-сканирование, NULL-сканирование. Соответственно известны утилиты, позволяющие авто- матизировать указанные методы. Коротко опишем эти методы. Метод сканирования TCP-портов системным вызовом Connect() являет- ся основным для сканирования портов по протоколу TCP. Функция Connect() позволяет атакующему узлу соединиться с любым портом сервера. Если порт, указанный в качестве параметра функции, прослушивается сервером (т. е. порт открыт для соединения), то результатом выполнения функции будет ус- тановление соединения с сервером по указанному порту. В противном случае, если соединение не установлено, то порт с указанным номером является за- 41 крытым. Метод Connect() является легко обнаруживаемым благодаря наличию многочисленных попыток подключения с одного адреса и ошибок установле- ния соединения (поскольку атакующий узел после соединения с сервером сра- зу обрывает его). Метод сканирования TCP-портов флагом SYN известен еще как «скани- рование с установлением наполовину открытого соединения» поскольку уста- новление полного TCP-соединения не производится. Вместо этого атакующий отправляет на определенный порт сервера SYN-пакет, как бы намереваясь создать соединение, и ожидает ответ. Наличие в ответе флагов SYN|ACK оз- начает, что порт открыт и прослушивается сервером. Получение в ответ TCP- пакета с флагом RST означает, что порт закрыт и не прослушивается. В случае приема SYN|ACK-пакета узел немедленно отправляет RST-пакет для сброса устанавливаемого сервером соединения. Метод сканирования TCP-портов флагом FIN известен по-другому как «обратное стелс-сканирование с использованием флага FIN». Идея метода за- ключается в том, что согласно RFC 793 на прибывший FIN-пакет на закрытый порт сервер должен ответить RST-пакетом. FIN-пакеты на открытые порты игнорируются объектом сканирования. Метод сканирования TCP-портов флагом ACK похож на FIN- сканирование, известен по-другому как «обратное стелс-сканирование с ис- пользованием флага ACK». Идея метода заключается в том, что согласно RFC 793 на прибывший ACK-пакет на закрытый порт сервер должен ответить RST- пакетом. ACK-пакеты на открытые порты игнорируются объектом сканирова- ния. Методы сканирования XMAS («Новогодняя елка») и NULL заключают- ся в отправке на сервер TCP-пакета с установленными всеми флагами (XMAS) либо со всеми сброшенными флагами (NULL). В соответствии с RFC 793 на прибывший пакет с данными значениями флагов на закрытый порт сервер должен ответить RST-пакетом. Такие пакеты на открытые порты игнорируют- ся объектом сканирования. Указанные выше методы сканирования позволяют злоумышленнику вы- яснить наличие открытых TCP-портов на атакуемом узле. Для обнаружения открытых UDP-портов применяется иной подход. Выполнить анализ открытых UDP-портов злоумышленнику несколько сложнее, чем TCP-портов. Причина в том, что в отличие от протокола TCP, UDP является протоколом с негарантированной доставкой данных. Поэтому UDP-порт не посылает подтверждение приема запроса на установление со- единения, и нет никакой гарантии, что отправленные UDP-порту данные ус- пешно дойдут до него. Тем не менее большинство серверов в ответ на пакет, прибывший на закрытый UDP-порт, отправляют ICMP-сообщение «Порт не- доступен» (Port Unreachable — PU). Таким образом, если в ответ на UDP- пакет пришло ICMP-сообщение PU, то сканируемый порт является закрытым, в противном случае (при отсутствии PU) порт открыт. 42 Рис. 2.8. Пример UDP-сканирования Обычно сканеры работают следующим образом: на тестируемый порт отправляется UDP-пакет, состоящий, например, из 18 нулей (рис. 2.8). Если соответствующий порт открыт, то в ответ тестируемый компьютер может ли- бо ничего не отправить, либо отправить ответный UDP-пакет. В этом случае сканер делает вывод о том, что порт открыт. Если же порт закрыт, то тести- руемый компьютер должен ответить ICMP-сообщением с кодом 0х03 (Port Unreachable). Получив такое сообщение (рис. 2.9), сканер сделает вывод о за- крытости данной службы. Для UDP-протокола нет четкого понятия, кто является инициатором па- кета. Так, исходящий UDP-запрос на любую службу, очевидно, предполагает входящий UDP-ответ. Вместе с тем любой UDP-пакет с равной вероятностью может быть и входящим UDP-ответом, и исходящим UDP-запросом. Следова- тельно, в отличие от протокола TCP здесь нельзя четко разделить входящие и исходящие UDP-пакеты. Единственным критерием, который позволяет идентифицировать вхо- дящие UDP-пакеты как атаку, является последовательность пакетов, отправ- ляемая на различные UDP-порты. При этом порт отправителя вероятнее всего будет в «клиентском» диапазоне — больше 1024. 43 Рис. 2.9. Пример ICMP-пакета Port Unreachable ВЫПОЛНИТЬ! 8. Запустите программу-сканер портов SAURON. 9. Осуществите захват сетевого трафика. 10. Выполните сканирование TCP- и UDP- портов соседнего компьютера в диапазоне от 130 до 140, последовательно выполняя сканирование различ- ными методами: Connect(), SYN-сканированием, FIN-сканированием, ACK-сканированием, XMAS-сканированием, NULL-сканированием, UDP- сканированием. 11. Проанализируйте полученный трафик. Найдите отличительные признаки каждого метода сканирования. Сформулируйте признаки подобных атак. Сделайте вывод о возможности блокирования данных атак. 2.4. Выявление уязвимых мест атакуемой системы Данный этап атаки производится чаще всего одновременно с выяснени- ем открытых портов. Суть его заключается в определении типа и версии про- граммного продукта, отвечающего за получение информации на открытом порту. Это может быть, например, операционная система в целом, web- , ftp- или иной сервер. Зная версию программного продукта, злоумышленник мо- 44 жет, воспользовавшись известными уязвимостями данной версии, осущест- вить целенаправленную атаку. Так, например, выяснив наличие открытого порта 25, злоумышленник отправляет стандартный запрос на соединение с ним и в ответ получает вер- сию программного продукта, реализующего SMTP-сервер (рис. 2.10). Признаком атаки в данном случае является выполнение входящих за- просов к внутренним сетевым службам, особенно к таким, которые редко ис- пользуются для работы в Интернет. Рис. 2.10. Пример ответа SMTP-сервера 2.5. Реализации атак В литературе содержится большое количество упоминаний реализаций атак на различные сетевые службы: «Ping Flood» (затопление ICMP- пакетами), «Ping of Death» (превышение максимально возможного размера IP- пакета), «SYN Flood» (затопление SYN-пакетами), «Teardrop», «UDP Bomb» и т. д. Так как целью пособия не является изучение всех алгоритмов атак, ог- раничимся только двумя атаками типа «отказ в обслуживании» (DoS), приво- дящими к «зависанию» либо сетевой службы, либо компьютера в целом. За- 45 метим, что описываемые атаки были актуальны для операционных систем предыдущего поколения. Атака «Ping of Death» приводила к зависанию реализации стека прото- колов TCP/IP в ОС Windows 95. Атака основана на отправке IP-пакета, длина которого превышает стандартную величину. Напомним, что максимальный размер IP-пакета составляет 65535 байт, из них 20 байт отводится на заголо- вок. Таким образом, максимальный размер данных, передаваемых в одном па- кете, составляет 65515 байт. В реализации ряда ОС именно такой буфер и от- водился для хранения получаемых данных, а размер буфера не контролиро- вался. Если же приходил пакет большей длины, то получаемые данные зати- рали машинный код в оперативной памяти, находившийся после отведенного буфера. Для реализации атаки достаточно было использовать стандартную утилиту ping следующим образом: ping -l 65527 -s 1 адрес_жертвы В этом случае отправляемые данные составляют 65527 байт, заголовок ICMP — 8 байт, заголовок IP — 20 байт. Таким образом, отправлялся пакет длиной 65555 байт, что на 20 байт превышало максимальный размер IP- пакета. Другая известная атака, достаточно долго приводившая в неработоспо- собное состояние сетевые узлы под управлением ОС Windows NT версии 4.0, получила название WinNuke. Для ее реализации в Интернет можно было най- ти программу с аналогичным названием и простым интерфейсом (рис. 2.11). В процессе выполнения программа WinNuke устанавливает стандартное TCP-соединение с портом 139 атакуемого узла. Особенностью соединения яв- ляется то, что атакующим для установки соединения используется TCP-порт с номером 40, в отличие от обычно используемых номеров портов больших, чем 1024. После установки соединения атакующий отправляет нестандартный для SMB-протокола пакет (рис. 2.12), в результате получения которого ОС Windows NT версии 4.0 «вылетала в синий экран смерти». 2.6. Выявление атаки на протокол SMB Протокол SMB/CIFS (Server Message Blocks/Common Internet File System) предназначен для соединения компьютеров с ОС типа Windows 9* и Windows NT 5.* между собой или с сервером Samba (UNIX-сервером). Про- токол SMB включает в себя все возможные операции (команды) для работы с файлами и принтерами (открытие, закрытие, создание и удаление файлов и директорий, чтение и запись в файл, поиск файлов, отправка на печать и от- мена печати). 46 Рис. 2.11. Интерфейс программы WinNuke Рис. 2.12. Пример сетевого пакета программы WinNuke SMB-сообщение состоит из двух частей: заголовка фиксированного размера и поля команды, размер которой меняется динамически в зависимо- сти от состава сообщения. Протокол SMB имеет несколько версий и диалек- тов, каждая из последующих совместима с предыдущей (табл. 2.1). 47 Таблица 2.1 Диалекты протокола SMB Название протокола Обозначение Core PC NETWORK PROGRAM 1.0 Core Plus MICROSOFT NETWORKS 1.03 LAN Manager 1.0 LANMAN1.0 LAN Manager 2.0 LM1.2X002 LAN Manager 2.1 LANMAN2.1 NT LAN Manager 1.0 NT LM 0.12 Samba's NT LM 0.12 Samba Common Internet File System CIFS 1.0 Среди особенностей каждой из версий следует отметить применяемый алгоритм аутентификации, в частности применение открытых или зашифро- ванных паролей. Установка соединения между сервером (компьютером, предоставляю- щим доступ к ресурсу) и клиентом (компьютером, который желает воспользо- ваться данным ресурсом) происходит в 4 шага: 1. Установка виртуального соединения. Создается двунаправленный вир- туальный канал между клиентом и сервером. 2. Выбор версии протокола (рис. 2.13). Клиент посылает запрос, содержа- щий список всех версий протоколов SMB, по которым он может создать со- единение. Сервер отвечает номером записи в списке, предложенном клиентом (считая записи с 0), или значением 0xFF, если ни один из вариантов предло- женных протоколов не подходит. Здесь же сервер передает требуемый режим безопасности, признак необходимости шифрования пароля и «вызов» (8 слу- чайных байт), используя который клиент зашифрует пароль и передаст его серверу в виде «ответа» на следующем шаге. 3. Установка параметров сессии (рис. 2.14). Клиент посылает имя пользо- вателя, пароль (если он существует) в виде «ответа», имя рабочей группы, а также полный путь к доступной директории на сервере (перечень доступных директорий сервер предоставляет клиенту ранее по иному запросу). 4. Получение доступа к ресурсу. Сервер выдает клиенту идентификатор (TID — уникальный идентификатор для ресурса, используемого клиентом), показывая тем самым, что пользователь прошел процедуру авторизации и ре- сурс готов к использованию. Сервер указывает тип службы доступа: A — для диска или файла; LPT1 — для вывода на печать; COM — для прямого соеди- нения принтеров и модемов, IPC — для идентификации при доступе к ресур- су. 48 C SMB_COM_NEGOTIATE Список диалектов R SMB_COM_NEGOTIATE Диалект, режим защиты, вызов К Л И Е Н Т С Е Р В Е Р Рис. 2.13. Согласование SMB-диалекта C SMB_COM_SESSION_SETUP_ANDX Имя, домен, пароль/ответ R SMB_COM_SESSION_SETUP_ANDX TID К Л И Е Н Т С Е Р В Е Р Рис. 2.14. Установка параметров сессии ВЫПОЛНИТЬ! 12. Создайте на виртуальном компьютере, работающем под управлением ОС Windows 2000, каталоги и в нем небольшой текстовый файл. Предоставьте созданный каталог в сетевой доступ. 13. Включите захват трафика. В основной ОС откройте в сетевом окружении на виртуальном компьютере созданный текстовый файл. Для чего зареги- стрируйтесь, введя имя и пароль пользователя, имеющегося на виртуаль- ной ОС. 14. Просмотрите полученный трафик. Какой протокол используется для фай- лового обмена? Какие номера TCP-портов задействованы на приемнике и источнике? 15. Найдите пакеты этапа согласования SMB-диалекта. Какой диалект выбран сервером? 16. Найдите пакет, в котором передается имя пользователя. Передается ли па- роль пользователя в открытом виде? 49 17. Найдите пакет, в котором передается текст открытого вами файла (описа- ние пакета начинается с «R read & X»). Передается ли текст файла в за- шифрованном виде? Одной из основных широко известных уязвимостей [4], присутствую- щих в сетевых настройках по умолчанию в ОС Windows 2000 (исправлено в Windows XP), является возможность установления «нулевого сеанса» (ано- нимного подключения). Целью данной атаки являлось подключение к сете- вым ресурсам ОС Windows 2000 без указания имени пользователя и пароля. Для установления «нулевого сеанса» осуществляется подключение к ресурсу IPC$ удаленного компьютера без указания имени и пароля при помо- щи стандартной утилиты net: net use \\*.*.*.*\IPC$ "" /user:"", где *.*.*.* — IP-адрес компьютера, /user:"" — имя пользователя (пус- то); "" — пароль пользователя (пусто). ВЫПОЛНИТЬ! 18. Разорвите все установленные ранее соединения командой: net use * /delete 19. Включите режим захвата трафика. Выполните анонимное подключение к виртуальному компьютеру. Просмотрите полученный трафик. Какие но- мера TCP-портов задействованы на приемнике и источнике? Какой SMB- диалект выбран сервером? Найдите пакет, в котором передается имя поль- зователя в виде пустой строки. 20. Сделайте вывод о возможности обнаружения и блокирования данной атаки. |