Что такое сканер портов
Что такое сканер портов
Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами разобрали, как вычисляется дата установки Windows. В сегодняшней заметке мы рассмотрим информацию, позволяющую запускать у себя сканер портов в локальной сети, мы разберем для чего, это может потребоваться и где вы это сможете применить в своей практике. Материал представлен в исключительно познавательных целей.
Задача
Предположим у вас в компании проходит аудит программного обеспечения и вы выводите из эксплуатации старый софт. Вы посмотрели список программ установленных на сервере, но вам еще необходимо проверить, какие порты случает он. Для увеличения производительности по решению задачи, мы будем использовать специальную утилиту, ее еще называют сканер портов в локальной сети. Ниже я приведу примеры таких программ и описание по их использованию.
Что такое сканер портов?
Сканер портов относится к программному приложению, которое сканирует сервер на наличие открытых портов. Он позволяет аудиторам и сетевым администраторам проверять сетевую безопасность, в то время как злоумышленники и хакеры используют ее для определения открытых портов для использования или запуска вредоносных служб на компьютере или сервере.
Порты различаются по своим назначениям. Они пронумерованы от 0 до 65535, но определенные диапазоны используются чаще. Порты с 0 по 1023 идентифицируются (https://ru.wikipedia.org/wiki/Список_портов_TCP_и_UDP), как «общеизвестные порты» или стандартные порты и были назначены для определенных служб, агентством по присвоению номеров в Интернете (IANA). Некоторые из наиболее известных портов и назначенных им служб включают в себя:
Методы сканирования портов
Сканирование портов отправляет тщательно подготовленный пакет на каждый номер порта назначения. Основные методы, которые может использовать программное обеспечение для сканирования портов:
Сканеры открытых портов
Я могу выделить вот такие бесплатные программы, которые выполняют роль сканеров портов в локальной сети:
Перед описанием каждой утилиты, я напоминаю, что порты есть TCP и UDP, и мы ранее уже проверяли доступность порта и слушает ли его, какая-либо служба. Так же очень наглядную таблицу в режиме реального времени по портам вы можете увидеть через утилиту netstat, но она к сожалению не такая дружелюбная и не умеет сканировать удаленные компьютеры в вашей локальной сети, ее кстати графическим аналогом выступает утилита TCPView.
Использование утилиты Angry IP Scanner
Структура такого файла представлена на картинке, тут ip-адреса идут с новой строки.
Если вы сканируете порты у целой подсети, то вам нужно указать ее префикс (Маску). После чего нажимаем «Старт».
Наш сканер открытых портов начнет планомерно проверять каждого участника. Цветовое обозначение узлов:
Настроим диапазон портов, которые я бы хотел проверить на предмет их прослушивания. Для этого нажмите значок шестеренки. В открывшемся окне перейдите на вкладку порты. В поле выбора порта укажите диапазон, в моем примере, это будет диапазон от 1 до 1024. Именно его мы и будем проверять.
У вас в столбце Ports изменится значение, нажимаем кнопку «Старт».
Начинается процесс обращения к портам, хочу отметить, что сама процедура не быстрая и идет в 100 потоков, но так же у каждой операционной системы свои лимиты и тайминги. В итоге вы увидите в столбце Ports список портов, которые прослушивает ip адрес сервера, к которому было обращение. Мы таким образом определяли порты Active Directory. Angry IP Scanner имеет и дополнительные встроенные утилиты, кликните правым кликом по нужному хосту и из пункта «Открыть» вы можете увидеть их:
Еще интересным моментом у Angry IP Scanner может выступать добавление дополнительных полей. Для этого нажмите кнопку в виде параллельных палочек. В открывшемся окне с помощью стрелок переместите нужные поля. Я для примера добавил TTL и MAC Address.
При необходимости программа сканера портов легко может экспортировать полученные данные в текстовый файл для дальнейшего изучения. Сделать это можно из меню «Сканирование» или нажатие клавиш Ctrl+S.
Отчет будет выглядеть вот в такой форме.
Использование утилиты Advanced Port Scanner
Видим симпатичную девушку хакера, которая намекает нажать зеленую кнопку.
Установка утилита Advanced Port Scanner так же проста и незамысловата, мы ее пропусти. Открываем ваш сканер портов компьютера. Задаем диапазон ip-адресов для поиска, указываем необходимый диапазон портов и нажимаем кнопку «Сканировать».
Advanced Port Scanner работает быстрее Angry IP Scanner, в результате данный сканер нашел 4 компьютера со списком прослушиваемых портов, и самое классное, что есть сводная таблица по конкретному порту и отвечаемой на нем службе.
Вы легко можете экспортировать данный отчет, либо в txt формат или же в html.
Advanced Port Scanner имеет встроенные сетевые утилиты:
Лично мне данный сканер открытых портов нравится больше, чем Angry IP Scanner.
Программа для сканирования портов и IP-адресов в локальной Сети
Для диагностики корректности работы и безопасности сетевых устройств необходимо применять сканер портов в локальной Сети как на этапе разработки, так и в процессе эксплуатации. Следует заметить, что зачастую такое программное обеспечение используется не только не по назначению, а именно для попыток совершить неправомерные действия, но и весьма дилетантским образом. В этой статье рассматривается как теоретическая, так и практическая база, которую можно использовать в своей профессиональной деятельности. Также приводятся юридические и моральные аспекты, касающиеся нарушения законодательства РФ.
Что такое сканер портов?
Сканер портов – это специализированное программное обеспечение, которое позволяет производить анализ хостов в локально-вычислительной Сети на предмет наличия открытых портов. На сегодня наиболее распространенным набором сетевых протоколов являются TCP/IP, при которых каждая служба на сетевом устройстве характеризуется двумя параметрами: айпи адресом и номером порта, всего их количество составляет 65536 штук.
Следует заметить, что для стандартных наборов (сервер печати, FTP, HTTP и т. д.) номер порта утверждается администрацией адресного пространства Интернет (т. е. по умолчанию службе HTTP выделяется порт 80, 8080 и т. д.). Результатом работы сканера является вывод о состоянии одного или диапазона портов, которое может принимать три значения:
Важно знать! Если состояние под номером 1 угрожает безопасности и стабильности как работе служб, так и системы, вариант номер 2 – только системы. При этом защита файерволом гарантирует безопасность нужного сервиса, поскольку на сегодня не известны методы, позволяющие «взламывать» заблокированный порт.
Все известные программы-сканеры основаны на принципе стандартизации, по которым работают сетевые устройства (хосты) и который называется ICPM, или протокол управления пересылкой. Однако иногда бывает и так, что этот метод не работает, поскольку можно, например, настроить так называемый порт-ловушку, который будет выдавать заведомо ложные значения состояния (об этом будет сказано ниже).
Для чего необходимо сканировать порты и айпи адреса в локальной Сети
Вариантов, для чего необходимо производить сканирование портов и IP-адресов, может быть всего два:
Обратите внимание! В последнее время к вопросу о защите конфиденциальной и персональной информации, а также авторских прав контролирующие органы подходят серьезно, поскольку нынешний век именуется веком цифровой эпохи, в которой виртуальное пространство фактически приравнивается к реальному. Поэтому настоятельно не рекомендуется использовать полученные навыки для осуществления неправомерных действий, поскольку, во-первых, это неэтично, а во-вторых, с вероятностью 99% будет выявлено и пресечено.
Методы сканирования портов
Предлагаем ознакомиться с методами сканирования портов:
Проверка активности хоста
Этот метод настоятельно рекомендуется использовать перед полноценным сканированием, поскольку он позволяет значительно сэкономить время, указывая программному обеспечению адреса только активных устройств. Сделать это можно, последовательно отправляя Echo-пакеты при помощи команды ping на диапазон адресов, либо же на широковещательный адрес. При этом попытки сканирования могут быть отслежены путем анализа данных сообщений. Существует и альтернативный метод с использованием ответов на нереальные запросы от DNS. В таком случае ответ, говорящий о недоступности хоста, индицирует о том, что устройство неактивно. Однако, как упоминалось выше, это не всегда так, поскольку ради обеспечения безопасности зачастую стандарты сетевых протоколов нарушаются.
Сканирование SYN-пакетами
Основан этот метод на использовании так называемого правила «трехкратного рукопожатия» протокола TCP. Сетевое устройство, на котором используется программа-сканер, отправляет запрос в виде пакета с установленным флагом синхронизации («SYN» — synchronize), после чего опрашиваемый хост должен ответить пакетом уже с двумя флагами – «SYN» и «ACK» (второй означает acknowledges – подтверждение, признание). На последнем шаге от машины с программой-сканером также должен поступить одобряющий ответ, однако вместо этого устанавливается флаг «RST» — reset, что означает сброс, т. е. завершение процесса соединения. Плюс такого подхода заключается в том, что осуществляется полный контроль над размером пакетов, их временной задержкой, а также ответными сообщениями, содержащими исчерпывающую информацию об удаленном устройстве. Вред от SYN-флуда сомнителен, потому что он может оказать значительное влияние только на простые устройства, такие как, к примеру, сетевые принтеры.
Сканирование стандартными средствами ОС
Метод схож с предыдущим, также использует три этапа «рукопожатия», только с завершением установки соединения (отправка флага «ACK» в конце). Применяется тогда, когда SYN-сканирование неосуществимо по какой-либо причине. Соответственно, такой подход не обеспечивает хост с программой-сканером должным уровнем информации, поскольку не подразумевает работу с пакетами на низком уровне. Однако самым главным минусом является то, что из-за большого количества установки и разрыва соединений легко заметить и вычислить работу такого сканера в сети.
Использование UDP
Для сканирования диапазона адресов и портов также можно формировать UDP-пакеты, хотя это и не самое лучшее решение в силу ряда особенностей. Принцип работы заключается в том, что при помощи ICMP-сообщений можно получать прямой ответ от порта «Закрыт», если он недоступен, и «Открыт», если ответа не последовало вовсе. При этом блокировка порта брандмауэром также выдаст состояние как «Открыт», что будет ошибкой. Такая же картина будет наблюдаться, если на опрашиваемом хосте запрещены ICMP-сообщения. Выход из положения может быть достигнут при помощи отправки некоторых стандартных пакетов, так называемых пробников, на которые приложения, работающие на указанном порте, дают заведомо известный ответ. При этом следует помнить, что защитой будет являться настройка этих служб с нетиповой конфигурацией. Также можно вначале отправлять UDP-запрос, и если порт находится в неопределенном состоянии, направлять на него ряд «пробников».
Использование флага ACK
Наиболее эффективный метод для выявления уязвимостей (или вообще наличия) брандмауэра. Пакеты с таким флагом будут запросто проходить через файерволы, имеющие стандартный набор правил, тогда как более сложные настройки приведут к их блокировке.
Использование флага FIN
Этот флаг является аббревиатурой от «final» и указывает на закрытие соединения. Его использование обусловлено тем, что многие серверы настроены на определение и распознание последовательных попыток отправки однотипных SYN-пакетов как на открытый, так и закрытый порт, после чего разрывают соединение с хостом. Дело в том, что по стандарту, FIN-пакеты должны игнорироваться и поэтому могут с успехом использоваться на том этапе, когда производится поиск активного порта, т. е. перед проведением SYN-сканирования. Тут следует сказать, что системы семейства Windows 95/98/NT этого стандарта не придерживаются, поэтому для них этот метод будет недейственным.
Другие типы сканирования
Следует сказать, что существует еще два флага: PSH и URG, а также способ, когда поле code bit остается пустым, при применении которых ответом будет флаг RST, если порт закрыт и отсутствие ответа, если открыт. Эти методы также хорошо подходят, чтобы искать активные хосты.
Сканеры открытых портов и айпи адресов
Использование бесплатных программ
Для сканирования Сети на сегодня существует множество бесплатных программ, которые довольно дружелюбны по интерфейсу и предоставляют при этом множество полезных инструментов. Следует заметить, что в основном они все рассчитаны на работу под ОС семейства Windows. Вот некоторые из них:
Программа для определения IP-адресов в локальной Сети
Защита от сканирования портов
Фактически, защититься от сканирования портов невозможно, единственный способ – это отключить компьютер от Сети. Обезопасить соединение реально, используя так называемый белый список для брандмауэра, когда открыты только те порты, которые необходимы для использования. При этом службы, настроенные на них, должны применять нестандартные конфигурации.
Ранее уже было сказано о сетевых «ловушках». Здесь следует упомянуть о принципе действия одной из них, которая является весьма эффективной:
Моральные и юридические ограничения
С моральной точки зрения, использование специализированного ПО с целью получения доступа к конфиденциальной или персональной информации на чужом компьютере – это неэтично. При этом зачастую такие действия не направлены на извлечение материальной выгоды (что также вряд ли оправдано, поскольку можно применить свои навыки в мирных целях и заработать на этом законно), а ставят перед собой целью реализовать так называемый прессинг (травлю) пользователя Сети при помощи шантажа. Юридический аспект также присутствует, использование и создание приложений для взлома компьютера с персональной информацией расцениваются главой 28 УК РФ (статьи 272, 273, 274) как незаконные действия, за которые можно получить судимость (клеймо на всю жизнь, которое поставит крест на карьерном росте и закроет путь в престижные IT-компании), штраф и реальный срок.
Как видно, для анализа отказоустойчивости и безопасности сетевого оборудования может использоваться как уже разработанная программа для сканирования IP-адресов в локальной Сети, так и собственное разработанное ПО. Следует помнить, что основой безопасности является создание «белых» списков портов с настройкой сложных правил брандмауэра.
Сканирование портов
Сканирование портов (port scanning) — способ обнаружения уязвимых узлов в сети путем обращения к разным портам хоста (подключенного к сети устройства) или к одному и тому же порту на разных хостах. Может применяться злоумышленниками на подготовительном этапе атаки для сбора информации о целевом хосте, а также специалистами по безопасности в качестве инструмента для поиска уязвимых мест IT-инфраструктуры.
Виды сканирования портов
Различают несколько разновидностей сканирования портов:
Способы сканирования портов
Существуют различные способы проверить, какие порты открыты и доступны извне. Наиболее распространенные из них:
Цели сканирования портов
Сканирование портов позволяет узнать:
Злоумышленники используют эту информацию для подготовки атаки. В частности, для проникновения они могут воспользоваться уязвимостями в доступных извне сетевых службах, операционной системе устройства и так далее.
Специалисты по безопасности используют эту информацию для совершенствования защиты ресурсов организации. Так, по результатам сканирования можно поместить уязвимые службы за брандмауэр и закрыть ненужные порты.
Защита от сканирования портов
Обнаружить попытку сканирования портов могут аппаратные и программные брандмауэры. При выявлении подобной активности брандмауэр может, например, на время открыть все порты, чтобы запутать злоумышленников.
Специалистам по безопасности стоит самостоятельно проводить сканирование портов, так как это позволит закрыть неиспользуемые порты и защитить хост или сеть от аналогичных действий злоумышленников. Это тоже метод защиты от несанкционированного сканирования портов.
Публикации на схожие темы
Kaspersky IoT Scanner: как обезопасить домашнюю сеть и умные устройства в ней
Kaspersky Security Bulletin 2021. Статистика
Развитие информационных угроз в третьем квартале 2021 года. Статистика по ПК
Прогнозы в сфере конфиденциальности на 2022 год
Прочитай и сделай: проводим сканирование сети самостоятельно
В свете последних событий в мире много компаний перешли на удаленный режим работы. При этом для сохранения эффективности бизнес-процессов на сетевые периметры были вынесены приложения, которые не предназначены для прямого размещения на периметре, например внутрикорпоративные веб-приложения, на эту тему недавно было наше исследование. Если между службами ИТ и ИБ нет тесной связи, возникают ситуации, когда на сетевом периметре появилось бизнес-приложение, о котором у службы ИБ нет информации.
Решением подобных проблем может быть периодическое исследование периметра организации. Для решения задачи подходят сетевые сканеры, поисковики по интернету вещей, сканеры уязвимостей и услуги по анализу защищенности. Далее в статье рассмотрим виды и параметры сканирования, их преимущества и недостатки, инструменты, которые часто используются, и методы обработки результатов.
Ping-сканирование
Первый рассматриваемый вид сканирования — ping-сканирование. Основная задача — обнаружить «живые» узлы в сети. Под ping-сканированием понимают широковещательную рассылку пакетов ICMP. Сканер рассылает пакеты типа Echo REQUEST по указанным IP-адресам и ожидает в ответ пакеты типа Echo REPLY. Если ответ получен, считается, что узел присутствует в сети по указанному IP-адресу.
Протокол ICMP широко используется администраторами сетей для диагностики, поэтому, чтобы избежать разглашения информации об узлах, важна корректная настройка средств защиты периметра. Для корпоративных сетей такой вид сканирования не релевантен при внешнем сканировании, потому что большинство средств защиты по умолчанию блокируют протокол ICMP либо ответы по этому протоколу. При отсутствии нестандартных задач в корпоративной сети на выход, как правило, разрешены следующие виды ICMP-сообщений: Destination Unreachable, Echo REQUEST, Bad IP header, а на вход разрешены Echo REPLY, Destination Unreachable, Source Quench, Time Exceeded, Bad IP header. В локальных сетях не такая строгая политика безопасности, и злоумышленники могут применять этот способ, когда уже проникли в сеть, однако это легко детектируется.
Сканирование портов
Объединим TCP-сканирование и UDP-сканирование под общим названием — сканирование портов. Сканирование этими методами определяет доступные порты на узлах, а затем на основе полученных данных делается предположение о типе используемой операционной системы или конкретного приложения, запущенного на конечном узле. Под сканированием портов понимают пробные попытки подключения к внешним узлам. Рассмотрим основные методы, реализованные в автоматизированных сетевых сканерах:
Если после нескольких запросов не приходит никакого ответа, то сетевой трафик до порта узла назначения фильтруется средствами межсетевого экранирования (далее будем использовать термин «порт фильтруется»). Также порт помечается как фильтруемый, если в ответ приходит сообщение ICMP с ошибкой достижимости (Destination Unreachable) и определенными кодами и флагами.
Метод TCP CONNECT менее популярен, чем TCP SYN, но все-таки часто встречается на практике. При реализации метода TCP CONNECT производится попытка установить соединение по протоколу TCP к нужному порту с процедурой handshake. Процедура заключается в обмене сообщениями для согласования параметров соединения, то есть служебными сообщениями SYN, SYN/ACK, ACK, между узлами. Соединение устанавливается на уровне операционной системы, поэтому существует шанс, что оно будет заблокировано средством защиты и попадет в журнал событий.
UDP-сканирование медленнее и сложнее, чем TCP-сканирование. Из-за специфики сканирования UDP-портов о них часто забывают, ведь полное время сканирование 65 535 UDP-портов со стандартными параметрами на один узел занимает у большинства автоматизированных сканеров до 18 часов. Это время можно уменьшить за счет распараллеливания процесса сканирования и рядом других способов. Следует уделять внимание поиску UDP-служб, потому что UDP-службы реализуют обмен данными с большим числом инфраструктурных сервисов, которые, как правило, вызывают интерес злоумышленников.
На сетевых периметрах часто встречаются UDP-сервисы DNS (53), NTP (123), SNMP (161), VPN (500, 1194, 4500), RDG (3391). Реже встречаются сервисные службы типа echo (7), discard (9), chargen (19), а также DAYTIME (13), TFTP (69), SIP (5060), сервисы NFS (2049), RPC (111, 137-139, 761 и др.), СУБД (1434).
Для определения статуса порта посылается пустой UDP-заголовок, и если в ответ приходит ошибка достижимости ICMP Destination Unreachable с кодом Destination port unreachable, это значит, что порт закрыт; другие ошибки достижимости ICMP (Destination host unreachable, Destination protocol unreachable, Network administratively prohibited, Host administratively prohibited, Communication administratively prohibited) означают, что порт фильтруется. Если порт отвечает UDP-пакетом, значит, он открыт. Из-за специфики UDP и потери пакетов запросы повторяются несколько раз, обычно три и более. Как правило, если ответ не получен, статус порта определяется в состоянии «открыт» или «фильтруется», поскольку непонятно, что стало причиной — блокировка трафика средством защиты или потеря пакетов.
Для точности определения статуса порта и самой службы, запущенной на UDP-порте, используется специальная полезная нагрузка, наличие которой должно вызвать определенную реакцию у исследуемого приложения.
Редкие методы сканирования
Методы, которые практически не используются:
Методы TCP NULL, FIN, Xmas заключаются в отправке пакетов с отключенными флагами в заголовке TCP. При NULL-сканировании не устанавливаются никакие биты, при FIN-сканировании устанавливается бит TCP FIN, а в Xmas-сканировании устанавливаются флаги FIN, PSH и URG. Методы основаны на особенности спецификации RFC 793, согласно которой при закрытом порте входящий сегмент, не содержащий RST, повлечет за собой отправку RST в ответ. Когда порт открыт, ответа не будет. Ошибка достижимости ICMP означает, что порт фильтруется. Эти методы считаются более скрытными, чем SYN-сканирование, однако и менее точны, потому что не все системы придерживаются RFC 793.
«Ленивое сканирование» является самым скрытным из методов, поскольку для сканирования используется другой узел сети, который называется зомби-узлом. Метод применяется злоумышленниками для разведки. Преимущество такого сканирования в том, что статус портов определяется для зомби-узла, поэтому, используя разные узлы, можно установить доверительные связи между узлами сети. Полное описание метода доступно по ссылке.
Процесс выявления уязвимостей
Под уязвимостью будем понимать слабое место узла в целом или его отдельных программных компонентов, которое может быть использовано для реализации атаки. В стандартной ситуации наличие уязвимостей объясняется ошибками в программном коде или используемой библиотеке, а также ошибками конфигурации.
Уязвимость регистрируется в MITRE CVE, а подробности публикуются в NVD. Уязвимости присваивается идентификатор CVE, а также общий балл системы оценки уязвимости CVSS, отражающий уровень риска, который уязвимость представляет для конечной системы. Подробно об оценке уязвимостей написано в нашей статье. Централизованный список MITRE CVE — ориентир для сканеров уязвимостей, ведь задача сканирования — обнаружить уязвимое программное обеспечение.
Ошибка конфигурации — тоже уязвимость, но подобные уязвимости нечасто попадают в базу MITRE; впрочем, они все равно попадают в базы знаний сканеров с внутренними идентификаторами. В базы знаний сканеров попадают и другие типы уязвимостей, которых нет в MITRE CVE, поэтому при выборе инструмента для сканирования важно обращать внимание на экспертизу его разработчика. Сканер уязвимостей будет опрашивать узлы и сравнивать собранную информацию с базой данных уязвимостей или списком известных уязвимостей. Чем больше информации у сканера, тем точнее результат.
Рассмотрим параметры сканирования, виды сканирования и принципы обнаружения уязвимостей при помощи сканеров уязвимостей.
Параметры сканирования
За месяц периметр организации может неоднократно поменяться. Проводя сканирование периметра в лоб можно затратить время, за которое результаты станут нерелевантными. При сильном увеличении скорости сканирования сервисы могут «упасть». Надо найти баланс и правильно выбрать параметры сканирования. От выбора зависят потраченное время, точность и релевантность результатов. Всего можно сканировать 65 535 TCP-портов и столько же UDP-портов. По нашему опыту, среднестатистический периметр компании, который попадает в пул сканирования, составляет две полных сети класса «С» с маской 24.
Если в сети используются сервисы на нестандартных портах, их также стоит добавить в список сканируемых. Для регулярного сканирования мы рекомендуем использовать средний вариант, при котором сканируются все TCP-порты и популярные UDP-порты. Такой вариант наиболее сбалансирован по времени и точности результатов. При проведении тестирования на проникновение или полного аудита сетевого периметра рекомендуется сканировать все TCP- и UDP-порты.
Важная ремарка: не получится увидеть реальную картину периметра, сканируя из локальной сети, потому что на сканер будут действовать правила межсетевых экранов для трафика из внутренней сети. Сканирование периметра необходимо проводить с одной или нескольких внешних площадок; в использовании разных площадок есть смысл, только если они расположены в разных странах.
Под глубиной сканирования подразумевается количество данных, которые собираются о цели сканирования. Сюда входит операционная система, версии программного обеспечения, информация об используемой криптографии по различным протоколам, информация о веб-приложениях. При этом имеется прямая зависимость: чем больше хотим узнать, тем дольше сканер будет работать и собирать информацию об узлах.
При выборе скорости необходимо руководствоваться пропускной способностью канала, с которого происходит сканирование, пропускной способностью канала, который сканируется, и возможностями сканера. Существуют пороговые значения, превышение которых не позволяет гарантировать точность результатов, сохранение работоспособности сканируемых узлов и отдельных служб. Не забывайте учитывать время, за которое необходимо успеть провести сканирование.
Параметры определения уязвимостей — наиболее обширный раздел параметров сканирования, от которого зависит скорость сканирования и объем уязвимостей, которые могут быть обнаружены. Например, баннерные проверки не займут много времени. Имитации атак будут проведены только для отдельных сервисов и тоже не займут много времени. Самый долгий вид — веб-сканирование.
Полное сканирование сотни веб-приложений может длиться неделями, так как зависит от используемых словарей и количества входных точек приложения, которые необходимо проверить. Важно понимать, что из-за особенностей реализации веб-модулей и веб-сканеров инструментальная проверка веб-уязвимостей не даст стопроцентной точности, но может очень сильно замедлить весь процесс.
Веб-сканирование лучше проводить отдельно от регулярного, тщательно выбирая приложения для проверки. Для глубокого анализа использовать инструменты статического и динамического анализа приложений или услуги тестирования на проникновение. Мы не рекомендуем использовать опасные проверки при проведении регулярного сканирования, поскольку существует риск нарушения работоспособности сервисов. Подробно о проверках см. далее, в разделе про работу сканеров.
Инструментарий
Если вы когда-нибудь изучали журналы безопасности своих узлов, наверняка замечали, что интернет сканирует большое количество исследователей, онлайн-сервисы, ботнеты. Подробно описывать все инструменты нет смысла, перечислим некоторые сканеры и сервисы, которые используются для сканирования сетевых периметров и интернета. Каждый из инструментов сканирования служит своей цели, поэтому при выборе инструмента должно быть понимание, зачем он используется. Иногда правильно применять несколько сканеров для получения полных и точных результатов.
Сетевые сканеры: Masscan, Zmap, nmap. На самом деле утилит для сканирования сети намного больше, однако для сканирования периметра вряд ли вам понадобятся другие. Эти утилиты позволяют решить большинство задач, связанных со сканированием портов и служб.
Поисковики по интернету вещей, или онлайн-сканеры — важные инструменты для сбора информации об интернете в целом. Они предоставляют сводку о принадлежности узлов к организации, сведения о сертификатах, активных службах и иную информацию. С разработчиками этого типа сканеров можно договориться об исключении ваших ресурсов из списка сканирования или о сохранении информации о ресурсах только для корпоративного пользования. Наиболее известные поисковики: Shodan, Censys, Fofa.
Для решения задачи не обязательно применять сложный коммерческий инструмент с большим числом проверок: это излишне для сканирования пары «легких» приложений и сервисов. В таких случаях будет достаточно бесплатных сканеров. Бесплатных веб-сканеров много, и тяжело выделить наиболее эффективные, здесь выбор, скорее, дело вкуса; наиболее известные: Skipfish, Nikto, ZAP, Acunetix, SQLmap.
Для выполнения минимальных задач сканирования и обеспечения «бумажной» безопасности могут подойти бюджетные коммерческие сканеры с постоянно пополняемой базой знаний уязвимостей, а также поддержкой и экспертизой от вендора, сертификатами ФСТЭК. Наиболее известные: XSpider, RedCheck, Сканер-ВС.
При тщательном ручном анализе будут полезны инструменты Burp Suite, Metasploit и OpenVAS. Недавно вышел сканер Tsunami компании Google.
Отдельной строкой стоит упомянуть об онлайн-поисковике уязвимостей Vulners. Это большая база данных контента информационной безопасности, где собирается информация об уязвимостях с большого количества источников, куда, кроме типовых баз, входят вендорские бюллетени безопасности, программы bug bounty и другие тематические ресурсы. Ресурс предоставляет API, через который можно забирать результаты, поэтому можно реализовать баннерные проверки своих систем без фактического сканирования здесь и сейчас. Либо использовать Vulners vulnerability scanner, который будет собирать информацию об операционной системе, установленных пакетах и проверять уязвимости через API Vulners. Часть функций ресурса платные.
Средства анализа защищенности
Все коммерческие системы защиты поддерживают основные режимы сканирования, которые описаны ниже, интеграцию с различными внешними системами, такими как SIEM-системы, patch management systems, CMBD, системы тикетов. Коммерческие системы анализа уязвимостей могут присылать оповещения по разным критериям, а поддерживают различные форматы и типы отчетов. Все разработчики систем используют общие базы уязвимостей, а также собственные базы знаний, которые постоянно обновляются на основе исследований.
Основные различия между коммерческими средствами анализа защищенности — поддерживаемые стандарты, лицензии государственных структур, количество и качество реализованных проверок, а также направленность на тот или иной рынок сбыта, например поддержка сканирования отечественного ПО. Статья не призвана представить качественное сравнение систем анализа уязвимостей. На наш взгляд, у каждой системы есть свои преимущества и недостатки. Для анализа защищенности подходят перечисленные средства, можно использовать их комбинации: Qualys, MaxPatrol 8, Rapid 7 InsightVM, Tenable SecurityCenter.
Как работают системы анализа защищенности
Режимы сканирования реализованы по трем схожим принципам:
Аудит — режим белого ящика, который позволяет провести полную инвентаризацию сети, обнаружить все ПО, определить его версии и параметры и на основе этого сделать выводы об уязвимости систем на детальном уровне, а также проверить системы на использование слабых паролей. Процесс сканирования требует определенной степени интеграции с корпоративной сетью, в частности необходимы учетные записи для авторизации на узлах.
Авторизованному пользователю, в роли которого выступает сканер, значительно проще получать детальную информацию об узле, его программном обеспечении и конфигурационных параметрах. При сканировании используются различные механизмы и транспорты операционных систем для сбора данных, зависящие от специфики системы, с которой собираются данные. Список транспортов включает, но не ограничивается WMI, NetBios, LDAP, SSH, Telnet, Oracle, MS SQL, SAP DIAG, SAP RFC, Remote Engine с использованием соответствующих протоколов и портов.
Комплаенс — режим проверки на соответствие каким-либо стандартам, требованиям или политикам безопасности. Режим использует схожие с аудитом механизмы и транспорты. Особенность режима — возможность проверки корпоративных систем на соответствие стандартам, которые заложены в сканеры безопасности. Примерами стандартов являются PCI DSS для платежных систем и процессинга, СТО БР ИББС для российских банков, GDPR для соответствия требованиям Евросоюза. Другой пример — внутренние политики безопасности, которые могут иметь более высокие требования, чем указанные в стандартах. Кроме того, существуют проверки установки обновлений и другие пользовательские проверки.
Пентест — режим черного ящика, в котором у сканера нет никаких данных, кроме адреса цели или доменного имени. Рассмотрим типы проверок, которые используются в режиме:
Имитация атаки — это безопасная попытка эксплуатации уязвимости на узле. Имитации атаки имеют низкий шанс на ложное срабатывание и тщательно тестируются. Когда сканер обнаруживает на цели сканирования характерный для уязвимости признак, проводится эксплуатация уязвимости. При проверках используют методы, необходимые для обнаружения уязвимости; к примеру, приложению посылается нетипичный запрос, который не вызывает отказа в обслуживании, а наличие уязвимости определяется по ответу, характерному для уязвимого приложения.
Другой метод: при успешной эксплуатации уязвимости, которая позволяет выполнить код, сканер может направить исходящий запрос типа PING либо DNS-запрос от уязвимого узла к себе. Важно понимать, что не всегда уязвимости удается проверить безопасно, поэтому зачастую в режиме пентеста проверки появляются позже, чем других режимах сканирования.
Веб-проверки — наиболее обширный и долгий вид проверок, которым могут быть подвергнуты обнаруженные веб-приложения. На первом этапе происходит сканирование каталогов веб-приложения, обнаруживаются параметры и поля, где потенциально могут быть уязвимости. Скорость такого сканирования зависит от используемого словаря для перебора каталогов и от размера веб-приложения.
На этом же этапе собираются баннеры CMS и плагинов приложения, по которым проводится баннерная проверка на известные уязвимости. Следующий этап — основные веб-проверки: поиск SQL Injection разных видов, поиск недочетов системы аутентификации и хранения сессий, поиск чувствительных данных и незащищенных конфигураций, проверки на XXE Injection, межсайтовый скриптинг, небезопасную десериализацию, загрузку произвольных файлов, удаленное исполнение кода и обход пути. Список может быть шире в зависимости от параметров сканирования и возможностей сканера, обычно при максимальных параметрах проверки проходят по списку OWASP Top Ten.
Проверки конфигураций направлены на выявление ошибок конфигураций ПО. Они выявляют пароли по умолчанию либо перебирают пароли по короткому заданному списку с разными учетными записями. Выявляют административные панели аутентификации и управляющие интерфейсы, доступные принтеры, слабые алгоритмы шифрования, ошибки прав доступа и раскрытие конфиденциальной информации по стандартным путям, доступные для скачивания резервные копии и другие подобные ошибки, допущенные администраторами IT-систем и систем ИБ.
В число опасных проверок попадают те, использование которых потенциально приводит к нарушению целостности или доступности данных. Сюда относят проверки на отказ в обслуживании, варианты SQL Injection с параметрами на удаление данных или внесение изменений. Атаки перебора паролей без ограничений попыток подбора, которые приводят к блокировке учетной записи. Опасные проверки крайне редко используются из-за возможных последствий, однако поддерживаются сканерами безопасности как средство эмуляции действий злоумышленника, который не будет переживать за сохранность данных.
Сканирование и результаты
Мы рассмотрели основные методы сканирования и инструменты, перейдем к вопросу о том, как использовать эти знания на практике. Для начала требуется ответить на вопрос, что и как необходимо сканировать. Для ответа на этот вопрос необходимо собрать информацию о внешних IP-адресах и доменных именах, которые принадлежат организации. По нашему опыту, лучше разделять цели сканирования на инвентаризацию и определение уязвимостей.
Инвентаризационное сканирование можно проводить гораздо чаще, чем сканирование на уязвимости. При инвентаризации хорошей практикой является обогащение результатов информацией об администраторе сервиса, внутреннем IP-адресе сервиса, если используется NAT, а также о важности сервиса и его назначении. Информация в будущем поможет оперативно устранять инциденты, связанные с обнаружением нежелательных или уязвимых сервисов. В идеальном случае в компании есть процесс и политика размещения сервисов на сетевом периметре, в процессе участвуют службы ИТ и ИБ.
Даже при таком подходе присутствует вероятность ошибок по причинам, связанным с человеческим фактором и различными техническими сбоями, которые приводят к появлению нежелательных сервисов на периметре. Простой пример: на сетевом устройстве Check Point написано правило, которое транслирует порт 443 из внутренней сети на периметр. Сервис, который там был, устарел и выведен из эксплуатации. Службе ИТ об этом не сообщили, соответственно правило осталось. В таком случае на периметре может оказаться аутентификация в административную панель устройства Check Point либо другой внутренний сервис, который не планировали там размещать. При этом формально картина периметра не менялась и порт доступен.
Чтобы обнаружить подобные изменения, необходимо сканировать периодически и применять дифференциальное сравнение результатов, тогда будет заметно изменение баннера сервиса, которое привлечет внимание и приведет к разбору инцидента.
Устранение уязвимостей
Первым шагом к правильной технической реализации процесса устранения уязвимостей является грамотное представление результатов сканирования, с которыми придется работать. Если используется несколько разнородных сканеров, правильнее всего будет анализировать и объединять информацию по узлам в одном месте. Для этого рекомендуется использовать аналитические системы, где также будет храниться вся информация об инвентаризации.
Базовым способом для устранения уязвимости является установка обновлений. Можно использовать и другой способ — вывести сервис из состава периметра (при этом все равно необходимо установить обновления безопасности).
Можно применять компенсирующие меры по настройке, то есть исключать использование уязвимого компонента или приложения. Еще вариант — использовать специализированные средства защиты, такие как IPS или application firewall. Конечно, правильнее не допускать появления нежелательных сервисов на сетевом периметре, но такой подход не всегда возможен в силу различных обстоятельств, в особенности требований бизнеса.
Приоритет устранения уязвимостей
Приоритет устранения уязвимостей зависит от внутренних процессов в организации. При работе по устранению уязвимостей для сетевого периметра важно четкое понимание, для чего сервис находится на периметре, кто его администрирует и кто является его владельцем. В первую очередь можно устранять уязвимости на узлах, которые отвечают за критически важные бизнес-функции компании. Естественно, такие сервисы нельзя вывести из состава периметра, однако можно применить компенсирующие меры или дополнительные средства защиты. С менее значимыми сервисами проще: их можно временно вывести из состава периметра, не спеша обновить и вернуть в строй.
Другой способ — приоритет устранения по опасности или количеству уязвимостей на узле. Когда на узле обнаруживается 10–40 подозрений на уязвимость от баннерной проверки — нет смысла проверять, существуют ли они там все, в первую очередь это сигнал о том, что пора обновить программное обеспечение на этом узле. Когда возможности для обновления нет, необходимо прорабатывать компенсирующие меры. Если в организации большое количество узлов, где обнаруживаются уязвимые компоненты ПО, для которых отсутствуют обновления, то пора задуматься о переходе на программного обеспечение, еще находящееся в цикле обновления (поддержки). Возможна ситуация, когда для обновления программного обеспечения сначала требуется обновить операционную систему.
Итоги
Всю информацию о сервисах и службах на вашем сетевом периметре можете получить не только вы, но и любой желающий из интернета. С определенной точностью возможно определить уязвимости систем даже без сканирования. Для снижения рисков возникновения инцидентов информационной безопасности необходимо следить за своим сетевым периметром, вовремя прятать или защищать нежелательные сервисы, а также устанавливать обновления.
Неважно, организован процесс собственными силами или с привлечением сторонних экспертов, оказывающих услуги по контролю периметра или анализу защищенности. Самое главное — обеспечить контроль периметра и устранение уязвимостей на регулярной основе.
Автор: Максим Федотов, старший специалист отдела онлайн-сервисов, PT Expert Security Center, Positive Technologies