Исследование политики фаервола, сканирование TCP-портов

Автор работы: Пользователь скрыл имя, 23 Августа 2013 в 17:11, реферат

Краткое описание

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

Содержание

1. ВСТУПЛЕНИЕ 9
2. ОТКРЫТЫЕ МЕТОДЫ СКАНИРОВАНИЯ 12
2.1. Сканирование TCP-портов методом reverse-ident 13
3. ПОЛУОТКРЫТЫЕ МЕТОДЫ СКАНИРОВАНИЯ 14
4. СКРЫТЫЕ (STEALTH) МЕТОДЫ СКАНИРОВАНИЯ 20
4.1. SYN|ACK scan 20
4.2. Fin scan 21
4.3. Ack scan 23
4.4. Null scan 24
4.5. Xmas Tree scan 25
4.6. TCP Fragmenting 26
5. ОСТАЛЬНЫЕ МЕТОДЫ СКАНИРОВАНИЯ 28
5.1. Сканирование UDP-портов проверкой ICMP-сообщения 28
5.2. Сканирование TCP-портов с использованием атаки 30
СПИСОК ЛИТЕРАТУРЫ 33

Вложенные файлы: 1 файл

referat 1.doc

— 227.50 Кб (Скачать файл)
Реферат на тему:

«Исследование политики фаервола, сканирование TCP-портов»

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                              Виконав роботу: Акімов Владислав Петрович                                                     

                                               Перевірив: Ободяк Віктор Корнелійович

 

 

 

Содержание

 

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.

 

 

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

 

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

 

 

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

 

 

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

 

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

 

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

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

2.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-соединения к порту исследуемого сервера, что позволяет системному администратору отследить ваши действия.

 

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Под «полуоткрытыми» понимаются методы сканирования, которые разрывают  соединение до окончания трехстороннего рукопожатия (процедуры полного  установления соединения). Обычно применение этих методов остается незамеченным IDS’ами, которые следят только за установленными соединениями и, кроме того, эти методы дают довольно хороший результат (по распознаванию открытых/закрытых портов)

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

 

Данный метод известен еще как "сканирование с установлением  наполовину открытого соединения" (half-open scanning), поскольку установление полного TCP-соединения не производится. Вместо этого хост отправляет на определенный порт сервера SYN-пакет, как бы намереваясь создать соединение, и ожидает ответ. Наличие в ответе флагов SYN|ACK означает, что порт открыт и прослушивается сервером.

 

Получение в ответ TCP-пакета с флагом RST означает, что порт закрыт и не прослушивается.

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

 

Преимущества: быстрый, надежный, обходит простые IDS, не устанавливает полного соединения.

Недостатки: необходимы права администратора (root)

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

 

Сальвадор Сапфилинпо (Salvatore Sanfilippo) из Intesis Security Lab впервые заявил об этом методе 18 декабря 1998 года в конференции BUGTRAQ. Оригинальное название метода Dumb host scan переводится как "сканирование с использованием "немого" хоста". Основные положения, лежащие в основе метода, состоят в следующем:

С каждым переданным пакетом значение ID в заголовке IP-пакета обычно увеличивается  на 1.

  • хост отвечает на TCP SYN-3aпpoc TCP SYN ACK, если порт открыт; и TCP RST, если порт закрыт;
  • существует возможность узнать количество пакетов, переданных хостом, но параметру ID в заголовке IP;
  • хост отвечает TCP RST на TCP SYN ACK и ничего не отвечает на TCP RST.

Естественно, это происходит только в случае "неожиданного" прихода  таких пакетов (при ip spoofing, например).

 

Рассмотрим, как работает данный метод.

 

Пусть X-Hacker - хост атакующего, откуда осуществляется сканирование, объект В - "тихий" хост (обычный хост, который не будет передавать пакеты, пока происходит сканирование хоста  С; таких хостов вполне достаточно в Internet), а хост С - объект сканирования. Хост X-Hacker при помощи, например, утилиты hping контролирует число исходящих от хоста В пакетов по ID из заголовка IP, имеющего вид:

 

#hping B -r

HPING B (eth0 194.94.94.94): no flags are set, 40 data bytes

60 bytes from 194.94.94.94: flags=RA seq=0 ttl=64 id=41660 win=0 time=1.2 ms

60 bytes from 194.94.94.94: flags=RA seq=1 ttl=64 id=+1 win=0 time=75 ms

60 bytes from 194.94.94.94: flags=RA seq=2 ttl=64 id=+1 win=0 time=91 ms

60 bytes from 194.94.94.94: flags=RA seq=3 ttl=64 id=+1 win=0 time=90 ms

60 bytes from 194.94.94.94: flags=RA seq=4 ttl=64 id=+1 win=0 time=91 ms

60 bytes from 194.94.94.94: flags=RA seq=5 ttl=64 id=+1 win=0 time=87 ms

 

Как видно, ID увеличивается с каждым пакетом  на 1, следовательно, хост В - именно тот "тихий" хост, который нужен  хакеру.

 

X-Hacker посылает TCP SYN-запрос на порт Х хоста  С от имени В (автор метода  предлагает для этого использовать  утилиту hping с его сайта http://www.kyuzz.org/antirez, но можно применять и любые другие программные средства). Если порт Х хоста С открыт, то хост С пошлет на хост В ответ TCP SYN АСК (хост С не может знать, что этот пакет на самом деле пришел от X-Hacker). В этом случае объект В в ответ на TCP SYN АСК ответит на С пакетом TCP RST. Если атакующий пошлет на С определенное количество TCP SYN от имени хоста В, то В, получив несколько TCP SYN АСК, ответит столькими же TCP RST, и на хосте X-Hacker будет видно, что В посылает пакеты, следовательно, порт Х открыт. Выглядит это следующим образом:

 

60 bytes from 194.94.94.94: flags=RA seq=17 ttl=64 id=+1 win=0 time=96 ms

60 bytes from 194.94.94.94: flags=RA seq=18 ttl=64 id=+1 win=0 time=80 ms

60 bytes from 194.94.94.94: flags=RA seq=19 ttl=64 id=+2 win=0 time=83 ms

60 bytes from 194.94.94.94: flags=RA seq=20 ttl=64 id=+3 win=0 time=94 ms

60 bytes from 194.94.94.94: flags=RA seq=21 ttl=64 id=+1 win=0 time=92 ms

60 bytes from 194.94.94.94: flags=RA seq=22 ttl=64 id=+2 win=0 time=82 ms

Порт открыт!

 

В том случае, если порт Х хоста С закрыт, то передача на С нескольких TCP SYN-пакетов  от имени В вызовет ответный пакет TCP RST. Хост В, получив от хоста С  такой пакет, проигнорирует его. Выглядит это так:

 

60 bytes from 194.94.94.94: flags=RA seq=52 ttl=64 id=+1 win=0 time=85 ms

60 bytes from 194.94.94.94: flags=RA seq=53 ttl=64 id=+1 win=0 time=83 ms

60 bytes from 194.94.94.94: flags=RA seq=54 ttl=64 id=+1 win=0 time=93 ms

60 bytes from 194.94.94.94: flags=RA seq=55 ttl=64 id=+1 win=0 time=74 ms

60 bytes from 194.94.94.94: flags=RA seq=56 ttl=64 id=+1 win=0 time=95 ms

60 bytes from 194.94.94.94: flags=RA seq=57 ttl=64 id=+1 win=0 time=81 ms

Информация о работе Исследование политики фаервола, сканирование TCP-портов