Сканер портов: различия между версиями

Перейти к навигации Перейти к поиску
м
орфография
м (уточнение названия категории, по обсуждению)
м (орфография)
 
== Техническая сторона ==
 
Технологии сканирования портов исходят из предположения, что хост поддерживает «Протокол управления пересылкой» ([[ICMP]]), определённый в RFC 792<ref>RFC 792 — Internet Control Message Protocol]{{ref-en}}</ref>. Хотя это в большинстве случаев так, тем не менее, хост может посылать в ответ странные пакеты, или даже генерировать ложные положительные срабатывания, когда используемый [[TCP/IP|стек TCP/IP]] не соответствует RFC или был подвергнут изменениям.
 
== Типы сканирований ==
 
=== Проверка онлайна ===
В ряде случаев, прежде чем начать собственно сканирование, является полезной проверка наличия работающей системы на целевом IP-адресе.
Эта задача может быть решена путём посылки Echo-сообщений протокола [[ICMP]] с помощью утилиты [[ping]] c последовательным перебором всех адресов сети или отправкой Echo-сообщения по широковещательному адресу.<br />
Анализируя трафик и отслеживая Echo-сообщения, посылаемые за короткий промежуток времени всем узлам, можно выявить попытки сканирования. Вместо Echo-сообщений могут применяться [[TCP]]-сегменты с code bit [[TCP#Формат TCP-сегмента|RST]], ответы на несуществующие [[DNS]]-запросы. Если сканер получит в ответ [[ICMP]] Destination Unreachable пакет с кодом 1 ([[ICMP#Формат ICMP-пакета|host unreachable]]), то значит, тестируемый узел выключен или не подключен к сети.
 
 
=== SYN-сканирование ===
 
Данный тип сканирования является наиболее популярным. Вместо использования сетевых функций операционной системы, сканер портов сам генерирует IP пакеты, и отслеживает ответы на них. Эту технику часто называют сканированием с использованием полуоткрытых соединений, поскольку полное соединение TCP/IP никогда не открывается. Сканер портов генерирует пакет SYN. Если порт на целевом хосте открыт, с него придёт пакет SYN-ACK. Хост сканера отвечает пакетом RST, закрывая тем самым соединение до того, как процесс установления соединения завершился.
 
 
=== TCP-сканирование ===
 
Данный более простой метод использует сетевые функции операционной системы, и применяется, когда SYN-сканирование по тем или иным причинам неосуществимо. Операционная система, в случае, если порт открыт, завершает трёхэтапную процедуру установления соединения, и затем сразу закрывает соединение. В противном случае, возвращается код ошибки. Преимуществом данного метода является то, что он не требует от пользователя специальных прав доступа. Тем не менее, использование сетевых функций операционной системы не позволяет производить низкоуровневый контроль, поэтому данный тип используется не столь широко.
 
 
=== UDP-сканирование ===
 
Сканирование с помощью пакетов [[UDP]] также возможно, хотя имеет ряд особенностей. Для UDP отсутствует понятие соединения, и нет эквивалента TCP-пакету SYN. Тем не менее, если послать UDP-пакет на закрытый порт, система ответит сообщением [[ICMP]] «порт недоступен». Отсутствие такого сообщения истолковывается как сигнал того, что порт открыт. Однако, если порт блокируется [[Межсетевой экран|брандмауэром]], метод неверно покажет, что порт открыт. Если заблокированы ICMP-сообщения о недоступности порта, все порты будут казаться открытыми. Также, может быть установлено ограничение на частоту использования ICMP-пакетов, что также влияет на результаты, даваемые методом.
 
 
=== ACK-сканирование ===
 
Данное сканирование применяется для определения, фильтруется данный порт или нет, и особенно эффективен для определения наличия [[Межсетевой экран|брандмауэров]] и выяснения их правил. Простая фильтрация пакетов разрешит прохождение пакетов с установленным битом ACK (используемые для уже установленных соединений), тогда как более сложные брандмауэры — нет.
 
 
=== Другие типы сканирования ===
 
И ещё один способ заключается в том, чтобы отправлять сегменты с флагами [[TCP#Формат TCP-сегмента|FIN]](no more data from sender), [[TCP#Формат TCP-сегмента|PSH]](push function), [[TCP#Формат TCP-сегмента|URG]](urgent pointer field significant) либо вообще с пустым полем code bit. Если порт закрыт, то в ответ придёт сегмент с флагом [[TCP#Формат TCP-сегмента|RST]], если ответа не будет, то порт открыт (так как такой сегмент просто игнорируется).
<!--
 
== Защита от сканирования портов ==
 
Большинство [[Межсетевой экран|брандмауэров]] могут защитить от сканирования портов. Брандмауэр может открыть все порты в системе, чтобы остановить показ портов тем, кто занимается сканированием. Данный метод работает в большинстве случаев, однако, не защищает от новых техник сканирования портов, в числе которых сканирование с помощью [[ICMP|ICMP-порта]] и NULL-сканирование.
 
 
== Моральные и юридические ограничения ==
 
Многие [[интернет-провайдер]]ы прямо запрещают пользователям производить сканирование портов. Обычно данный запрет включается в правила обслуживания, с которыми клиент должен согласиться при подключении.
 
[[Уголовный кодекс Российской Федерации|Уголовным кодексом Российской Федерации]] предусмотрена [[уголовная ответственность]] за следующие преступления<ref>[[s:Уголовный кодекс Российской Федерации/Глава 28|Уголовный кодекс Российской Федерации]]. Глава 28. Преступления в сфере компьютерной информации.</ref>:
* Неправомерный доступ к компьютерной информации, если это повлекло уничтожение, блокирование, модификацию либо копирование информации, нарушение работы ЭВМ, системы ЭВМ или их сети;
* Создание, использование и распространение вредоносных программ для ЭВМ;
* Нарушение правил эксплуатации ЭВМ, системы ЭВМ или их сети, повлекшееповлёкшее уничтожение, блокирование или модификацию информации.
 
== Программное обеспечение ==
* [[Nmap]] <ref name="insecure">http://www.insecure.org {{ref-en}} — сайт разработчиков программы [[Nmap]]</ref> — один из самых доступных кроссплатформенных сканеров портов.
* В [[Mac OS X]]  — встроенное приложение [[Network Utility]].
 
== См. также ==

Навигация