Введение

Приложение, предназначенное для обнаружения открытых портов. Сканер портов — это приложение, предназначенное для проверки сервера или хоста на наличие открытых портов. Такие приложения могут использоваться администраторами для проверки политик безопасности их сетей и злоумышленниками для выявления сетевых служб, работающих на хосте, и использования уязвимостей. Сканирование портов, или portscan, — это процесс отправки клиентских запросов на диапазон портов сервера на хосте с целью обнаружения активных портов; само по себе это не является злонамеренной операцией. Большинство случаев использования сканирования портов не являются атаками, а скорее простыми проверками для определения доступных служб на удалённой машине. Просканировать несколько хостов на предмет определённого открытого порта означает выполнить portsweep. Portsweep обычно используется для поиска конкретной службы, например, компьютерный червь, основанный на SQL, может выполнять portsweep в поисках хостов, прослушивающих TCP-порт 1433.

Предположения

Все формы сканирования портов основываются на предположении, что целевой хост соответствует требованиям RFC. Хотя это обычно так, существует вероятность, что хост может отправлять необычные пакеты или даже генерировать ложные срабатывания, если TCP/IP стек хоста не соответствует RFC или был модифицирован. Это особенно актуально для менее распространенных техник сканирования, зависящих от операционной системы (например, FIN-сканирование). Метод определения отпечатков TCP/IP стека также использует эти различные сетевые ответы на определенный запрос для определения типа операционной системы, работающей на хосте.

Сканирование TCP

Самые простые сканеры портов используют сетевые функции операционной системы и обычно являются следующим вариантом, если SYN-сканирование невозможно (описано далее). Nmap называет этот режим сканированием типа connect, названным в честь системного вызова Unix connect. Если порт открыт, операционная система завершает трехстороннее рукопожатие TCP, а сканер портов немедленно закрывает соединение, чтобы избежать осуществления DoS-атаки (атаки типа «отказ в обслуживании»). Альтернативный подход заключается в отправке UDP-пакетов, специфичных для приложений, в надежде получить ответ на уровне приложения. Например, отправка DNS-запроса на порт 53 приведет к ответу, если DNS-сервер запущен. Этот метод гораздо надежнее для определения открытых портов. Однако он ограничен сканированием портов, для которых доступен зондирующий пакет, предназначенный для конкретного приложения. Некоторые инструменты (например, Nmap, Unionscan) обычно имеют зонды для менее чем 20 служб UDP, в то время как некоторые коммерческие инструменты поддерживают до 70. В некоторых случаях служба может прослушивать порт, но быть настроена так, чтобы не отвечать на конкретный зондирующий пакет.

Сканирование ACK

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

Сканирование окон

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

Сканирование FIN

Поскольку сканирование SYN недостаточно скрытное, брандмауэры обычно обнаруживают и блокируют пакеты, оформленные как SYN-пакеты.

Другие типы сканирования

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

Безопасность

Информация, собранная в результате сканирования портов, имеет множество законных применений, включая инвентаризацию сети и проверку её безопасности. Однако сканирование портов также может быть использовано для нарушения безопасности. Многие эксплойты используют сканирование портов для обнаружения открытых портов и отправки специфических шаблонов данных в попытке вызвать состояние, известное как переполнение буфера. Подобное поведение может скомпрометировать безопасность сети и компьютеров в ней, приводя к потере или раскрытию конфиденциальной информации и потере работоспособности. Несмотря на это, вероятность того, что сканирование портов само по себе приведет к реальной атаке, невелика. Вероятность атаки значительно возрастает, если сканирование портов сочетается со сканированием на наличие уязвимостей.

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

Из-за присущей Интернету открытой и децентрализованной архитектуры, законодатели с момента его создания испытывают трудности с определением правовых границ, позволяющих эффективно преследовать киберпреступников. Случаи, связанные с проверкой портов, являются примером сложностей, возникающих при оценке нарушений. Хотя такие случаи редки, в большинстве случаев юридический процесс предполагает доказательство наличия намерения совершить взлом или несанкционированный доступ, а не просто факт проведения сканирования портов. В июне 2003 года израильтянин Ави Мизрахи был обвинен израильскими властями в попытке несанкционированного доступа к компьютерной информации. Он просканировал сайт Моссада. 29 февраля 2004 года он был оправдан по всем обвинениям. Судья постановил, что подобные действия не следует пресекать, если они совершаются с конструктивными целями. 17-летний финн был обвинен в попытке взлома компьютерной системы крупного финского банка. 9 апреля 2003 года Верховный суд Финляндии признал его виновным и обязал выплатить 12 000 долларов США для покрытия расходов на проведение судебно-технической экспертизы, осуществленной банком. В 1998 году он просканировал порты банковской сети в попытке получить доступ к закрытой сети, но не преуспел. В 2006 году парламент Великобритании проголосовал за поправку к Закону о компьютерных злоупотреблениях 1990 года, согласно которой лицо признается виновным в совершении преступления, если оно "изготавливает, адаптирует, поставляет или предлагает поставить какое-либо устройство, зная, что оно предназначено или адаптировано для использования при совершении или в связи с преступлением, предусмотренным статьями 1 или 3 [Закона о компьютерных злоупотреблениях]". Тем не менее, сфера действия этой поправки размыта и широко критикуется экспертами в области безопасности. Германия, со статьями Strafgesetzbuch § 202a,b,c, также имеет аналогичный закон, а Совет Европейского Союза опубликовал пресс-релиз, в котором заявил о планах принять аналогичный закон, но более четкий.

Моултон против VC3

В декабре 1999 года Скотт Моултон был арестован ФБР и обвинен в попытке несанкционированного доступа к компьютерным системам в соответствии с Законом штата Джорджия о защите компьютерных систем и федеральным Законом о компьютерном мошенничестве и злоупотреблениях. В то время его компания, предоставляющая ИТ-услуги, имела действующий контракт с округом Чероки (Джорджия) на обслуживание и модернизацию системы безопасности центра 911. Он провел несколько сканирований портов серверов округа Чероки для проверки их безопасности и в конечном итоге просканировал порт веб-сервера, за которым следила другая ИТ-компания, что привело к спору, который завершился судебным разбирательством. В 2000 году он был оправдан, и судья Томас Трэш в деле Moulton v. VC3 (N. D. Ga. 2000) постановил, что не было нанесено ущерба, который бы нарушил целостность и доступность сети.