Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методы сканирования портов.doc
Скачиваний:
117
Добавлен:
01.05.2014
Размер:
268.8 Кб
Скачать

Санкт-Петербургский государственный электротехнический университет

Кафедра МОЭВМ

Реферат.

Методы сканирования портов.

Выполнил:

Студент гр.3351

Сергеев М. В.

Санкт-Петербург

2006г.

Содержание

1. Введение 3

2. Открытые методы сканирования 4

2.1. Сканирование TCP-портов методом reverse-ident (обратной идентификации) 5

3. Полуоткрытые методы сканирования 6

3.1. SYN scan (ТСР-сканирование пакетами с установленным флагом SYN) 6

3.2. Сканирование с использованием "немого" хоста ("dumb" host scan) 7

4. Скрытые (stealth) методы сканирования 9

4.1. SYN|ACK scan (ТСР-сканирование пакетами с установленными флагами SYN и ACK) 9

4.2. Fin scan (ТСР-сканирование пакетами с установленным флагом FIN) 10

4.3. Ack scan (ТСР-сканирование пакетами с установленным флагом ACK) 10

4.4. Null scan (ТСР-сканирование нулевыми пакетами) 11

4.5. Xmas Tree scan (TCP-сканирование методом "рождественской елки") 11

4.6. TCP Fragmenting (TCP-сканирование с использованием IP-фрагментации) 12

5. Остальные методы сканирования 12

5.1. Сканирование UDP-портов проверкой ICMP-сообщения "Порт недоступен" 13

5.2. Сканирование TCP-портов с использованием атаки «Прорыв через FTP» 13

6. Обнаружение и блокировка пакетных аномалий 15

  1. Введение

Рассмотрим существующие на сегодняшний день различные методы сетевого сканирования. Для этого необходимо ответить на следующий вопрос: "Что такое сканирование портов, и для чего оно применяется?"

Прежде чем переходить к ответу, вспомним, что представляют собой сетевые службы предоставления удаленного сервиса (серверные приложения), такие как WWW, FTP, TELNET и т.д. Эти программы (в UNIX-средах они обычно запускаются в режиме демона) после загрузки ожидают получения удаленных запросов на подключение от клиентов на определенных, заранее для них зарезервированных TCP- или, значительно реже, UDP-портax.

Таким образом, список открытых (активных) портов на сервере означает наличие запущенных на нем серверных приложений, предоставляющих удаленный доступ. Список портов, зарезервированных для основных служб можно найти в соответствующем стандарте (RFC).

Рассмотрим подробнее процесс подключения к серверному приложению, ожидающему запросы на каком-либо TCP-порту. Данный процесс состоит из двух этапов. На первом этапе клиенту необходимо создать обычное TCP-соединение с указанным TCP-портом сервера. Для этого по схеме, описанной в разделе "Подмена одного из субъектов TCP-соединения в сети Internet", клиент передает на сервер TCP SYN-запрос на необходимый порт.

Если клиент получает ответ на этот запрос (TCP SYN АСК), то порт открыт b TCP-соединение будет создано. Если же ответ за определенный промежуток времени так и не пришел, то это означает, что либо порт закрыт и соответствующий сервер не запущен, либо имеют место физические проблемы со связью с данным IP-адресом (это достаточно легко проверить, используя утилиты ping или traceroute). На втором этапе, после создания TCP-соединения, клиент и сервер обмениваются специфичными для данных приложений командами, создавая соединение уже на уровне приложения (в терминах модели OSI - на прикладном уровне).

Необходимо обратить внимание на то, что первый этап (создание ТСР-соединения с указанным портом) является стандартным и абсолютно инвариантным относительно вида серверного приложения, к которому осуществляется подключение. На этой особенности и основаны все методы сетевого сканирования.

Сканированием портов называется метод удаленного анализа, осуществляемый путем передачи тестовых запросов на создание соединения и позволяющий определить список активных служб предоставления удаленного сервиса на каком-либо хосте. Сканирование портов (или разведка) применяется на подготовительной стадии перед атакой, так как позволяет получить необходимые начальные сведения о потенциальном объекте воздействия: список открытых портов, а следовательно, и перечень потенциально атакуемых серверных приложений, загруженных на компьютере.

Все известные на сегодняшний день основные методы сканирования портов в зависимости от возможности определения объектом непосредственного инициатора сканирования (хоста, откуда осуществлялся удаленный анализ) можно разделить на три группы:

1) Методы открытого сканирования: непосредственный инициатор однозначно определяется объектом сканирования по IP-адресу приходящих запросов.

2) Методы полуоткрытого сканирования. Инициатор сканирования может быть обнаружен, только если на объекте сканирования установлена IDS(Intrusion Detection System - система обнаружения вторжений).

3) Методы "скрытого" анонимного сканирования. Непосредственный инициатор не определяется объектом сканирования, таким образом, гарантируется анонимность инициатора сканирования.

На диаграмме приведен список всех известных на сегодня методов сканирования, включая их комбинации с командой ping.

  1. Открытые методы сканирования

Данный метод является основным для сканирования портов по протоколу TCP. Функция connect() позволяет хосту соединиться с любым портом сервера. Если порт, указанный в качестве параметра функции, прослушивается сервером (т.е. порт открыт для соединения), то результатом выполнения функции будет установление соединения с сервером по указанному порту.

Frame1

В противном случае, если соединение не установлено, то порт с указанным номером является закрытым.

Frame2

Этот метод обладает одним серьезным преимуществом: его может применить любой пользователь, не обладающий никакими привилегиями на хосте. Другое преимущество - скорость исследования. Последовательный перебор портов путем вызова функции connect() для очередного номера порта, определение его состояния и закрытие соединения - достаточно долгий процесс. Однако его можно ускорить, применив метод "параллельного просмотра" с использованием неблокированного соединения (non-blocked socket). Такой метод позволяет определить состояние практически всех портов сервера одновременно.

Большим недостатком данного метода является возможность обнаружения и фильтрации такого рода сканирования, причем сделать это достаточно легко. Log-файл сканируемого сервера укажет службам, отвечающим за внешние подключения, на наличие многочисленных попыток подключения с одного адреса и ошибок установления соединения (поскольку хост исследующего после соединения с сервером сразу обрывает его), а те, в свою очередь, немедленно заблокируют доступ к серверу для хоста с данным адресом.

Преимущества:быстрый, безошибочный, не требует дополнительных привилегий

Недостатки:легко обнаруживается и протоколируется (логируется)

    1. Сканирование tcp-портов методом reverse-ident (обратной идентификации)

Протокол ident позволяет определить имя (username или login, указанное при входе в систему) владельца любого запущенного на сервере процесса, связанного с ним, даже если сам этот процесс не инициализировал TCP-соединение.

Протокол ident иначе называется протоколом аутентификации сервера. За ним зарезервирован 113-й TCP-порт, который используется демоном (синоним драйвера в ОС Windows) identd, выполняющим функции аутентификации согласно протокола ident, для приема запросов и передачи ответов на них. Этот процесс происходит следующим образом.

Сервер прослушивает 113 порт и ожидает прихода запроса на соединение. Как только соединение установлено, сервер считывает блок данных, характеризующий соединение, для которого необходимо получить информацию аутентификации. В запросе, помимо информации, находящейся в IP и TCP-заголовках, передается небольшой текстовый блок данных, состоящий из двух полей:

<Порт сервера>,<Порт клиента>

где <Порт сервера> - это номер порта сервера, на котором запущен identd и о котором необходимо получить информацию, а <Порт клиента> - номер порта на хосте, посылающем запрос серверу, на который сервер должен прислать ответ. Например:

6191 , 23

означает, что клиенту необходимо узнать, кто в настоящее время использует 6191 порт на сервере, и передать эту информацию сервер должен на 23-й порт хоста. Ответ сервера выглядит следующим образом:

<Порт сервера>,<Порт клиента>:<Ответ>:<Дополн.инф.>

где <Порт сервера> и <Порт клиента> копируются из запроса хоста, <Ответ> представляет собой ключевое слово, определяющее тип ответа, а <Дополн.инф.> является текстовой строкой, содержание которой зависит от типа ответа. Например:

6193, 23 : USERID : UNIX : stjohns

6195, 23 : ERROR : NO-USER

Как и большинство программ, identd имеет некоторые интересные особенности функционирования, позволяющие получить требуемую информацию, не используя стандартный 113 порт и уж тем более не проходя процедуру аутентификации. Так, например, имеется возможность подключиться к http-порту и затем использовать identd чтобы определить, работает ли на сервере пользователь root.

К сожалению, это может быть сделано только при установлении «полного» TCP-соединения к порту исследуемого сервера, что позволяет системному администратору отследить ваши действия.

Преимущества:быстрый, не требует дополнительных привилегий, дает важную информацию о хосте

Недостатки:легко обнаруживается