Материал: Логико-лингвистические модели атак на компьютерные системы. Остапенко Г.А., Дмитриева Е.Ю

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

В рассматриваемом методе используются типы сообщений «Запрос эха» (8) и «Ответ на эхо» (0). Обычно запрос эха и связанный с ним ответ используются для проверки достижимости получателя (т.е. сканируемого сервера) IP-дейтаграммы и его способности отвечать на запросы.

Так как запрос эха и ответ на него передаются в IP-дейтаграммах, то успешный прием ответа свидетельствует о работоспособности основных частей транспортной системы, т.е. выполнена маршрутизация, работоспособны все промежуточные маршрутизаторы, получатель активен и работает корректно, программное обеспечение протоколов IP и ICMP выполняет свои функции. Иными словами, при получении ответа от сканируемого сервера на отправленный ему «запрос эха» свидетельствует о том, что сервер работает и, возможно, ожидает запрос на соединение [19].

Во многих операционных системах программа, используемая для посылки запроса эха, называется ping. По этой причине запрос эха называют еще ping-запросом. Программа ping специально предназначена для определения состояния любого объекта сети, имеющего собственный IP-адрес.

При сканировании больших сетей задержка во времени между посылкой запроса и получением ответа на него может превысить установленное значение, в результате чего ping может неправильно интерпретировать состояние объекта и указать на отсутствие к нему доступа. Аналогичная ситуация может произойти при «ручном» формировании запроса эха. В обоих случаях этого можно избежать, увеличив время ожидания ответа на ping-запрос.

2.2.1.1.2 Сканирование tcp-портов функцией connect()

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

Этот метод обладает некоторыми преимуществами. Во-первых, его может применить любой пользователь, не обладающий никакими привилегиями на хосте. Во-вторых, данный метод обеспечивает довольно высокую скорость исследования. Последовательный перебор портов путем вызова функции connect() для каждого номера порта, определение его состояния и закрытие соединения – достаточно долгий процесс. Однако его можно ускорить, применив метод «параллельного просмотра» с использованием неблокированного ввода/вывода (non-blocked I/O). Такой метод позволяет практически одновременно определить состояние всех портов сервера.

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

2.2.1.1.3 Сканирование tcp-портов флагом syn

Данный метод известен еще как «сканирование с установлением наполовину открытого соединения» (half-open scanning), поскольку полное установление TCP-соединения не производится. Рассмотрим схему создания TCP-соединения, описанную в протоколе TCP. В исходном состоянии сервер «прослушивает» порты в ожидании соединения. Соединение между хостом и сервером не установлено [5].

Рисунок 2.9 - Первый этап установления соединения

Первый этап (рисунок 2.9): хост посылает серверу SYN-пакет с указанием собственного номера очереди.

Рисунок 2.10 - Второй этап установления соединения

Второй этап (рисунок 2.10): сервер, приняв запрос на соединение, посылает хосту подтверждение и данные для синхронизации со своей стороны.

Рисунок 2. 11 - Третий этап установления соединения

Третий этап (рисунок 2.11): хост, приняв пакет синхронизации от сервера, посылает ему подтверждение о приеме.

Рисунок 2.12 - Хост передает данные серверу

Процесс, рассмотренный выше, называется трехступенчатой синхронизацией (3-way handshaking), и служит для установления соединения по протоколу TCP между двумя любыми объектами сети Интернет. После этого хост передает серверу данные (рисунок 2.12).

Как видно, процесс установления соединения предусматривает взаимный обмен пакетами синхронизации между сервером и хостом. Каждая из сторон должна получить первоначальный номер очереди (ISS) «партнера» и послать подтверждение. Пакет синхронизации представляет собой сформированное по правилам протокола TCP сообщение с выставленным в нем флагом SYN (либо SYN и ACK для подтверждения синхронизации) [5].

Алгоритм сканирования следующий. Хост отправляет на определенный порт сервера SYN-пакет, как бы намереваясь создать соединение, и ожидает ответ. Наличие в ответе флагов SYN|ACK означает, что порт открыт и прослушивается сервером. Получение в ответ TCP-пакета с флагом RST означает, что порт закрыт и не прослушивается.

В случае приема SYN|ACK-пакета хост немедленно отправляет RST-пакет для сброса устанавливаемого сервером соединения и не продолжает процесс обмена синхропакетами. Таким образом, производится проверка способности сканируемого сервера установить соединение по указанному порту.

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

2.2.1.1.4 Сканирование tcp-портов флагом fin

Лишь немногие серверы способны отследить попытку SYN-сканирования их портов. Так, некоторые брандмауэры и пакетные фильтры «ожидают» поддельные SYN-пакеты на закрытые порты защищенного ими сервера, и специальное программное обеспечение типа synlogger или courtney распознает попытку SYN-сканирования. Если сервер обрывает соединение после опроса нескольких портов, используется FIN-сканирование [63].

В этом методе используются FIN-пакеты, используемые в процедуре закрытия соединения. Пакет предусматривает установку в TCP-сообщении флага FIN. Процедура закрытия соединения следующая.

Рисунок 2.13 - Хост передает серверу данные

В исходном состоянии хост передает серверу данные (рисунок 2.13).

Рисунок 2.14 - Первый этап закрытия соединения

Первый этап (рисунок 2.14): по окончании передачи данных хост посылает серверу FIN-пакет с указанием собственного ISS, ACK и установленными флагами FIN и ACK [7].

Риснок 2.15 - Второй этап закрытия соединения

Второй этап (рисунок 2.15): сервер, приняв FIN-пакет, посылает хосту подтверждение о приеме.

Рисунок 2.16 - Третий этап закрытия соединения

Третий этап (рисунок 2.16): сервер посылает хосту FIN-пакет с указанием собственных данных.

Рисунок 2.17 - Четвертый этап закрытия соединения

Четвертый этап (рисунок 2.17): хост передает серверу подтверждение о приеме FIN-пакета. После этого соединение между сервером и хостом будет закрыто.

FIN-пакеты способны обойти средства защиты сети. Идея заключается в том, что на прибывший на закрытый порт FIN-пакет сервер должен ответить RST-пакетом (TCP-пакет с установленным в нем флагом RST). FIN-пакеты на открытые порты игнорируются сервером [41].

ОС Windows 95/98/NT имеют средства противодействия к такому сканированию, однако большинство ОС являются уязвимыми. Таким образом, совместно используя SYN и FIN-сканирование можно обойти средства защиты сервера и просканировать его порты.

2.2.1.1.5 Сканирование с использованием ip-фрагментации

Данный метод представляет собой комбинацию SYN и FIN-сканирования с небольшим усовершенствованием. Он основан на использовании функциональной особенности протокола IP, называемой фрагментацией.

Фрагментация – это процесс разделения большого пакета данных на несколько частей перед непосредственной передачей его в сеть для получения размера фрагмента, соответствующего стандарту используемой сети (т.н. параметр MTU – Maximum Transmission Unit, максимальный размер блока). Фрагментация пакета на стороне источника и его сборка на стороне приемника осуществляется автоматически. Каждая фрагментированная часть исходного пакета имеет одинаковый формат. Этот метод позволяет маршрутизировать фрагменты независимо друг от друга.

На рисунок 2.18 представлен пример исходного заголовка дейтаграммы протокола IP с приведением конкретных значений полей.

Общая длина фрагментируемой дейтаграммы составляет 472 байта (20 байт заголовок и 452 байта данных). Максимальное значение MTU примем равным 280 байт. На рисунок 2.19 приведены значения полей заголовков двух полученных в результате фрагментации дейтаграмм. Первый фрагмент возникает после фрагментации исходной дейтаграммы по границе 256 байт.

Поля «Идентификатор», «Флаги» и «Смещение фрагмента» предназначены для управления процессами фрагментации и сборки дейтаграммы.

«Идентификатор» используется для распознавания дейтаграмм, образованных процессом фрагментации. Все фрагменты исходной дейтаграммы должны иметь одинаковое значение этого поля [61].

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

 

Номер версии=4

Длина заголовка=5

Тип сервиса

Общая длина = 472

Идентификатор = 111

Флаги=0

Смещение фрагмента = 0

Время жизни = 123

Протокол = 6

Контрольная сумма заголовка

Адрес отправителя

Адрес получателя

Данные

Источник: https://studfile.net/preview/16563007/