по теме : "Исследование систем обеспечения безопасности компьютерных сетей"
автор : Волкогон Андрей Владимирович
специальность: “Компьютерные интеллектуальные системы и сети”
E-mail : volkogon@mail.ru
руководитель : кандидат технических наук, доцент кафедры ЭВМ Ковалев Сергей Александрович
Донецк 2002
Общая характеристика работы
Internet как информационный образ прошлого, настоящего и во многом будущего развития мира занимает
мысли техников и ученых, бизнесменов и банкиров, школьников, домохозяек, писателей-фантастов и,
конечно же, специалистов, отвечающих за надежность и достоверность систем связи и управления.
Наша страна по разным причинам открыла окно в этот мир совсем недавно.
При этом все упомянутые выше категории пользователей (а их на самом деле гораздо больше, чем
принято считать) имеют свой собственный взгляд на мир Internet и ожидают от него решения своих,
иногда очень специфических, проблем. Для кого-то это средство общения, для других - обучения,
приобщения к сокровищам мировой культуры, сфера решения деловых проблем. Это все может быть
объединено общим термином "сбор и обмен информацией". Но есть и такие, для которых Internet - это
среда воздействия на информационную сферу, способ приобретения скандальной известности или "славы
Герострата".
Предполагается, что существуют методы и средства, которые, будучи применены специалистами, оградят
законопослушных пользователей от хулиганствующих юнцов или профессиональных злоумышленников. Судя
по огромному количеству статей по безопасности телекоммуникаций, посвященных специальным
протоколам, методам шифрования, системам Firewall, фильтрующим шлюзам и т.п., непрофессионалу
кажется, что еще немного - и проблема будет решена. Так ли это?
Взлом системы, как правило, приносит ее владельцу множество проблем. Поскольку многие
злоумышленники попросту стирают содержимое жестких дисков, взлом часто сопровождается потерей
данных, которые не были сохранены на резервных носителях.
Помимо потери данных, пользователи узлов, подвергшихся нападению, теряют доступ к Internet.
Провайдеры обычно отключают такую систему до тех пор, пока последствия взлома не будут полностью
ликвидированы. Администратор должен не только восстановить поврежденную систему, но и выяснить,
как злоумышленник смог проникнуть в нее, и принять меры для того чтобы подобное не повторялось в
дальнейшем.
Для автоматизации процесса поиска проблем в безопасности системы или целой сети существуют
средства автоматизированного контроля безопасности. Наиболее известные из них : ISS (Internet
Security Scaner), COPS (Computer Oracle and Password System) и, конечно, SATAN (Security
Administrator Tool for Analizyng Networks). К сожалению, им обычно присущи следующие недостатки:
- системозависимость - обычно они рассчитаны на вполне конкретную ОС или даже ее версию;
- ненадежность и неадекватность - если эти программы сообщают, что все "О'key" , это совсем не значит, что так на самом деле и есть; и наоборот - некая "уязвимость" , с их точки зрения, может оказаться специальным вариантом конфигурации системы;
- малое время жизни - т. к. с момента обнаружения уязвимости до ее искоренения проходит не очень большое время (порядка года), программа быстро устаревает;
- неактуальность - более того, с момента выхода программы в свет все новые (поэтому самые опасные) уязвимости оказываются неизвестными для нее, и ее ценность быстро сводится к нулю. Этот недостаток является самым серьезным;
- наконец, это возможность их использования с прямо противоположными целями - для поиска изъянов в вашей системе.
Можно заметить явную аналогию этих программ с антивирусными сканерами первого поколения - те
знали лишь строго определенный набор вирусов, новые вирусы добавлялись только в следующем выпуске
программы. Если посмотреть на возможности современных антивирусных программ - это и оперативное
лечение вирусов, и автоматизированное пополнение базы вирусов самим пользователем, и поиск
неизвестных вирусов, - то можно пожелать, чтобы хороший сканер Internet смог позаимствовать
некоторые из них. В первую очередь - это возможность пополнения базы новыми уязвимостями. Причем
в наши дни это несложно сделать - стоит лишь скачивать информацию с источников, занимающихся как
раз сбором таких сведений, типа CERT или CIAC.
Целью данной работы является исследование работы стека TCP/IP различных сетевых ОС, методов
проведения незаконного проникновения в систему, выявления способов предотвращения атак. Особое
внимание уделяется атакам типа "отказ в обслуживании" (DoS - Denial of Service), которые стали
очень популярными в настоящее время.
Основными задачами исследования являются:
- Сбор данных о различиях в работе стека TCP/IP для идентификации устройств и ОС (fingerprint), создание базы данных отпечатков систем.
- Исследование методов сканирования сетевых портов для выявления работающих сервисов.
- Исследование, методов проведения атак на сетевые сервисы удаленных систем. Создание базы знаний атак и методов борьбы с ними.
- Исследование методов проведения атак типа "отказ в обслуживании". Создание базы знаний атак и методов борьбы с ними.
- Сравнение защищенности различных операционных систем в сети.
Научная новизна работы заключается в получении экспериментальных данных , структуризации их и
составлении баз знаний по безопасности систем, составлении сравнительных характеристик
защищенности различных систем.
Содержание работы
Идентификация удаленного сетевого устройства и его операционной системы.
Для осуществления анализа безопасности сети необходимо составить схему сети и идентифицировать
устройства входящие в нее. Одним из базовых этапов составления схемы сети является зондирование
программой ping диапазона IP-адресов и блоков сетевых адресов для определения реально
функционирующих систем. Утилита ping традиционно применяется для отправки адресуемой системе ICMP
ECHO (тип 8) запроса, с целью получения ответного пакета ICMP ECHO_REPLAY (тип 0) указывающего
на то, что удаленная система действительно работает в сети. Также с помощью утилиты ping можно
выяснить (предварительно) операционную систему удаленной системы. В зависимости от ОС, при посылке
эхо запроса, возвращается различный TTL.
Проблема определения типа и версии операционной системы (далее - ОС) удаленного хоста является
весьма актуальной на начальном этапе реализации атаки на хост. В зависимости от того, какая ОС
установлена на удаленном хосте, атакующий будет планировать свои дальнейшие действия, воздействуя
на известную "дыру" (если таковая имеется) в безопасности установленной на хосте ОС. При этом, чем
точнее атакующий определит тип и версию ОС удаленного хоста, тем эффективней будет выполнен его
"взлом". В подтверждении этого, рассмотрим несколько возможных ситуаций.
Допустим, осуществляется попытка проникновения в удаленный хост. В результате сканирования портов
было обнаружено, что 53-й порт хоста открыт. На основании данного признака можно предположить, что
на хосте установлена одна из версий ОС UNIX, и выполняется одна из уязвимых версий демона bind.
Если это весьма условное предположение является верным, атакующий имеет только одну попытку
использовать обнаруженную "дыру", поскольку неудавшаяся попытка атаки "подвесит" демона и порт
окажется закрытым, после чего атакующему придется искать новые "дыры" в безопасности удаленного
хоста.
Если атакующий точно определит тип и версию ОС удаленного хоста (например, Linux kernel 2.0.35 или
Solaris 2.51), он может соответствующим образом скоординировать свои действия, проанализировав
информацию, касающуюся известных проблем в безопасности определенной ОС.
Используя программные средства, обеспечивающие определение ОС удаленного хоста, атакующий способен
просканировать множество хостов и определить тип и версию ОС, установленную на каждом из них.
Затем, когда кто-нибудь опубликует в сети Интернет информацию об обнаруженной "дыре" в
безопасности конкретной ОС, атакующий автоматически получает список уязвимых хостов, на которых
установлена данная версия ОС.
Метод опроса стека TCP/IP удаленного хоста
Как правило, реакцией сервера на любое удаленное воздействие (входящий пакет данных, запрос)
является пакет данных, посылаемый источнику данного воздействия (в дальнейшем под термином
"сервер" понимается атакуемый хост, а под термином "хост" - хост атакующего).
Как показывает практика, различные ОС при работе в сети по-разному реагируют на один и тот же
запрос. Исследовав особенности реакций на запрос ОС, версии которых заранее известны, можно
набрать определенную статистику, сопоставив реакции на запрос с типом ОС. При использовании
комбинированного воздействия, статистическая информация становится более конкретизированной.
В дальнейшем, исследуя реакцию сервера с неизвестной ОС, с использованием накопленной статистики
можно определить не только тип, но и версию установленной на сервере ОС. Например, возможно точно
отличить Solaris 2.4 от Solaris 2.50 или Linux kernel version 2.0.30 (для всех Linux далее
указывается версия ядра) от Linux 2.0.35.
Рассмотрим более подробно основные методы исследования ОС сервера, но перед этим рассмотрим схему
создания TCP-соединения (рисунок 2) .
Предположим, что хосту А необходимо создать TCP-соединение с хостом В. Тогда А посылает на В
следующее сообщение:
Схема установления TCP соединения
Флаги и их предназначение:
- URG: Urgent Pointer field significant (Срочное сообщение)
- ACK: Acknowledgment field significant (Указано поле подтверждения)
- PSH: Push Function (Предоставить данные приложению как можно быстрее)
- RST: Reset the connection (Разрыв соединения)
- SYN: Synchronize sequence numbers (Установка соединения, синхронизация)
- FIN: No more data from sender (Нет данных для передачи)
- 1. A - > B: SYN, ISSa
Это означает, что в передаваемом A сообщении установлен бит SYN (synchronize sequence number),
а в поле Sequence Number установлено начальное 32-битное значение ISSa (Initial Sequence Number).
В отвечает:
- 2. B - > A: SYN, ACK, ISSb, ACK(ISSa+1)
В ответ на полученный от А запрос В отвечает сообщением, в котором установлен бит SYN и установлен
бит ACK; в поле Sequence Number хостом В устанавливается свое начальное значение счетчика - ISSb;
поле Acknowledgment Number содержит значение ISSa, полученное в первом пакете от хоста А и
увеличенное на единицу. А, завершая рукопожатие (handshake), посылает:
- 3. A - > B: ACK, ISSa+1, ACK(ISSb+1)
В этом пакете установлен бит ACK; поле Sequence Number содержит ISSa + 1; поле Acknowledgment
Num-ber содержит значение ISSb + 1. Посылкой этого пакета на хост В заканчивается трехступенчатый
handshake, и TCP-соединение между хостами А и В считается установленным.
Теперь хост А может посылать пакеты с данными на хост В по только что созданному виртуальному
TCP-каналу:
- 4. A - > B: ACK, ISSa+1, ACK(ISSb+1); DATA
Сканирование портов на удаленном узле.
Определение открытых портов на удаленно машине является важной задачей как администраторов
серверов так и хакеров. Сканирование сервера сети на открытые порты (особенно сразу после
установки на него ОС) дает сведения об запущенных на нем сервисах. Отключение этих сервисов
позволяет избежать части проблем связанных с незаконным вторжением в систему используя не нужные
(но запущенные) сервисы. Дальнейшее периодическое сканирование портов позволяет обнаружить сервисы
которые могли запустить хакеры после вторжения в систему. Хакер на основе анализа открытых портов
также получает много информации об удаленной системе. На их основе можно сделать заключение об ОС
работающей на удаленном хосте ( некоторые сервисы существуют только для определенных ОС). Получив
название службы, ее версию и ОС под которой работает хост можно (зная соответствующие уязвимости в
этих службах) без особых усилий проникнуть на удаленный хост и получить права администратора.
Сетевые службы предоставления доступа WWW, Telnet, Ftp и т.д (в UNIX средах они
запускаются в виде демонов) после запуска ожидают получения удаленных запросов на подключение от
клиентов на определенных, заранее зарезервированных TCP или значительно реже UDP портах. Так как
UDP порты используются значительно реже то далее будет рассмотрено сканирование TCP портов (хотя
принципиально сканирование не отличается).
Таким образом, список открытых (активных) портов на сервере означает наличие запущенных на
нем серверных приложений, предоставляющих удаленный доступ. В приложении к курсовому проекту
находится список портов с соответствующими им сетевыми службами.
Рассмотрим процесс подключения к серверному приложению, ожидающему запросы на каком - либо
TCP порту. Данный процесс состоит из двух этапов. На первом этапе клиенту необходимо создать
обычное TCP соединение с указанным TCP портом сервера. Для этого клиент передает на сервер TCP SYN
запрос на необходимый порт (TCP SYN запрос означает TCP пакет с установленным SYN битом).
Если клиент получает ответ на этот запрос (TCP SYN ASK), то порт открыт и TCP соединение
будет создано. Если же ответ за определенный промежуток времени так и не пришел, то либо порт
закрыт и соответствующий ему сервис не доступен, либо имеют место физические проблемы с линией
связи. На втором этапе, после установления TCP соединения, клиент и сервер обмениваются
специфичными для данных приложений командами, создавая соединение уже на уровне приложения (в
терминах модели OSI - на прикладном уровне).
Основные результаты работы
- Изучено поведение сетевых подсистем в нестандартных ситуациях. Составлена база данных отпечатков систем.
- Исследованы методы определения работающих сетевых сервисов.
- Исследованы способы вторжения в систему, созданы программные модули для проверки уязвимостей.
- Исследованы способы приведения системы к краху, созданы программные модули для проверки уязвимостей.
- Создано программное обеспечение позволяющее производить комплексный анализ защищенности ситсем.
- Проанализированы полученные результаты исследований. Составлены сравнительные характеристики защищенности систем.
Перечень публикаций
1.МЕТОДЫ DoS АТАК И ИХ ПРЕДОТВРАЩЕНИЕ В КОМПЬЮТЕРНЫХ СЕТЯХ
C.А. Ковалев, А.В. Волкогон
Кафедра ЭВМ, ДонНТУ
Библиографические ссылки
- 1. Максимальная безопасность в Linux. : Пер. с англ./Автор анонимный - К.:
Издательство "ДиаСофт" 2000. - 400c.
- 2. Брандмауэры в Linux : Пер. с англ.: Уч. пос. - М. : Издательский
дом "Вильямс", 2000. - 384c.
- 3. Linux IP Stacks в комментариях : Пер. с англ./Стефен Т. Сэтчелл и Х.Б. Дж.
Клиффорд. - К: Издательство "ДиаСофт",
2001. - 288 c.
- 4. Безопасность глобальных сетевых
технологий : Зима В.М. : BHV C-Петербург, 2000 г.
320с.
- 5. Защита информации и безопасность
компьютерных сетей : Домарев В.Н. :DiaSoft, 2000 г. 480с.
- 6. Секреты хакеров : Пер. с англ./Стюарт Макклуре, Ждоел
Скембрей-К : Издательство "Лори",
2001.-435c.
- 7. Атака через Internet : И. Медведовский, П. Семьянов, В.
|