disclaimer: Данный материал является свободным (приближенным к оригиналу) переводом методического материала PWK, в частности Глава 8. Сканирование на уязвимости. В связи с закрытым форматом распространения данного материала убедительная просьба ознакомившихся с ней не осуществлять свободное распространение содержимого статьи, чтобы не ставить под удар других участников форума. Приятного чтения.
Часть информации в данной статье могла устареть к моменту публикации. При публикации не ставилась цель корректировки переведенной статьи до актуального состояния содержимого. Уточненная информация содержится в других ветках форума и на официальных страницах проектов.
Вступление
Обнаружение уязвимостей является неотъемлемой частью любой оценки безопасности. Не смотря на то, что наиболее предпочтительным является ручное сканирование, существуют ситуации, когда автоматические сканеры уязвимостей предпочтительнее для использовании. В этой главе будет представлен обзор автоматического ПО для сканирования уязвимостей, рассмотрены его различные аспекты и особое внимание уделено Nessus и Nmap, как совершенно необходимым инструментам.
Обзор и рекомендации по сканированию уязвимостей
Прежде чем углубляться в обзор инструментов, необходимо уделить некоторое время обсуждению процесса сканирования уязвимостей, изложить основные соображения, касающиеся как автоматического, так и ручного сканирования, а также обсудить как критические нюансы, так и лучшие практики.
Как работают сканеры уязвимостей
Между собой реализации сканеров уязвимостей различаются, но обычно следуют стандартному рабочему процессу. Большинство автоматизированных сканеров будут:
1. Обнаруживать цель, если она запущена и работает.
2. Проводить полное или частичное сканирование портов, в зависимости от настроек.
3. Определять операционную систему, используя популярную технику "снятия отпечатков" .
4. Пытаться идентифицировать работающие сервисы с помощью распространенных методов, таких как захват баннера, идентификация поведения сервиса или поиск соответствующего файла.
5. Выполнять процесс сопоставления сигнатур, чтобы обнаружить уязвимости.
Обратите внимание, что указанный процесс в большинстве своем соответствует шагам, которые выполняются во время ручного анализа. Будучи пентестерами, можно мысленно выполнить некоторый процессы сопоставления сигнатур. Например, известно, что конкретная версия приложения, которая была обнаружена, уязвима для удаленной эксплуатации. Однако автоматизированный сканер выполнит данный шаг с помощью уникальных
Ссылка скрыта от гостей
уязвимостей.В рамках процесса сопоставления сигнатур многие сканеры используют захват баннеров, простой метод, при котором формируются текстовые строки, сгенерированные во время первоначального взаимодействия с приложением. Некоторые приложения генерируют очень специфические баннеры. Например, OpenSSH может вернуть "SSH-2.0-OpenSSH_7.9p1 Debian-10", позволяя точно определить версию приложения, в то время как другие приложения, такие как Apache Tomcat версии 4.1.x - 8.0.х, возвращает общий HTTP-заголовок "Apache-Coyote/1.1". Естественно, что более подробные заголовки и баннеры позволяют сканеру легче определять версию приложения и, соответственно, точнее определять потенциальные уязвимости.
Некоторые сканеры уязвимостей могут быть настроены на использование уязвимости при обнаружении. Это может снизить вероятность ложного срабатывания, но также увеличивает риск сбоя службы. Всегда внимательно проверяйте настройки сканера.
Большинство автоматизированных сканеров проверяют широкий спектр другой информации о цели в процессе сопоставления сигнатур. Тем не менее, даже полное совпадение сигнатур не гарантирует наличия уязвимости. Это означает, что автоматические сканеры могут генерировать довольно много
Ссылка скрыта от гостей
, и наоборот,
Ссылка скрыта от гостей
, в которых уязвимость игнорируется из-за несоответствия сигнатур. Ложно-положительные и ложно-отрицательные срабатывания также могут возникать из-за
Ссылка скрыта от гостей
, при котором "откатывают" исправления безопасности программного обеспечения до более старых версий. Это может привести к тому, что сканер пометит программное обеспечение как уязвимое в то время, как уязвимость была фактически устранена.В связи с этим необходимо тщательно проверять и вручную просматривать результаты сканирования уязвимостей. Учитывая постоянно меняющийся и сложный технологический ландшафт, уязвимости могут появляться в неожиданных местах. Как бы ни были хороши некоторые коммерческие сканеры, ни один из них не идеален. Однако, обновление базы данных сигнатур перед каждым сканированием, гарантирует, что сканер имеет наилучшие шансы на обнаружение последних уязвимостей.
Процесс сопоставления сигнатур довольно эффективен и намного быстрее, чем полностью ручная проверка, что делает автоматические сканеры уязвимостей отличным выбором для первого прохода во время оценки и идеальным компаньоном для ручной проверки.
Найдите время на то, чтобы изучить, как устроены автоматизированные инструменты, которые будут использоваться в полевых условиях, это является чрезвычайно ценным упражнением. Это не только поможет настроить инструменты и правильно обработать результаты, но и поможет понять ограничения, которые необходимо компенсировать с помощью ручного анализа.
Ручное сканирование VS автоматическое сканирование
Необходимо сочетать ручные и автоматические методы сканирования во время оценки, но понимание правильного соотношения приходит с опытом.
Обсудим основные преимущества и недостатки ручного и автоматизированного сканирования, чтобы помочь найти правильный баланс в ходе оценки.
Неавтоматический просмотр удаленной целевой сети будет неизбежно трудоемким и затратным. Поскольку такой подход в значительной степени опирается на взаимодействие с людьми и однотипными действиями, он подвержен ошибкам, в которых уязвимости могут быть упущены из виду. Однако,
Ссылка скрыта от гостей
в частности, требует хирургической точности и минимальных следов в сети, чтобы оставаться незамеченными как можно дольше. Использование автоматического сканера в таких ситуациях было бы не лучшим решением. Кроме того, ручной анализ позволяет обнаружить сложные и логические уязвимости, которые не так просто обнаружить с помощью любого типа автоматического сканера.Тем не менее автоматические сканеры уязвимостей бесценны при работе над крупными проектами в условиях стандартных временных ограничений, связанных с традиционными оценками безопасности. Независимо от того, используете ли вы сканер общего назначения по всей целевой сети или в отношении одного выделенного хоста, можно установить базовые состояния за гораздо более короткий отрезоке времени. Эти базовые состояния позволяют выявить легко обнаруживаемые уязвимости, или, по крайней мере, помогают понять общее положение дел с безопасностью цели.
Хотя сканирование уязвимостей имеет неоценимое значение, оно может также иметь и недостатки. Конфигурации сканирования могут быть обширными и сложными с предустановленными настройками, в следствии работы которых может быть нанесен вред цели. Например, многие сканеры могут и будут пытаться брутфорсить слабые пароли. Во время сканирования методы перебора должны быть строго регламентированы, так как они могут привести к блокировке учетных записей и к значительным простоям в работе клиента. Важно понять, как работает сканер уязвимостей и каковы его возможности перед выполнением сканирования.
Помните, что при использовании автоматического сканера уязвимостей наша работа в качестве пентестера заключается в том, чтобы предоставить дополнительную значимую информацию, помимо выходных данных любого инструмента.
Интернет-сканирование VS локальное сканирование
Сканеры уязвимостей могут с легкостью сканировать как цели, подключенные к Интернету, так и цели, подключенные к локальной сети. Однако, если рассматривать эти цели как равные, то результаты могут быть неполными или неточными. Наше сетевое расположение по отношению к цели может повлиять на скорость, права доступа, вероятность помех трафику и видимость самой цели.
Скорость соединения с целевой сетью обусловлена не только полной пропускной способностью, доступной нашему сканеру, но и другими факторами, такими как количество переходов к отдельным хостам. Это означает, что можно быстрее проводить более глубокое и всестороннее сканирование локально подключенных хостов. К тому же, необходимо постоянно помнить о генерируемом трафике, и понимать, что глубокое сканирование может отрицательно сказаться на старом оборудовании. Для получения оптимальных результатов обратите внимание на рекомендации, указанные в обсуждении сканирования портов в предыдущих статьях.
Для достижения наилучших результатов сканирования сначала рассмотрим скорость сканирования и значения тайм-аутов. Как только будем удовлетворены качеством результатов, можно начать постепенно увеличивать скорость до тех пор, пока не будет достигнут баланс.
Текущее расположение в сети также может повлиять на имеющиеся права доступа и создать возможные помехи трафику при взаимодействии с целями. Например, фаерволы или системы предотвращения вторжений (Intrusion Prevention Systems, IPS) могут блокировать доступ к узлам или портам и могут отбрасывать трафик при генерации предупреждения о нарушении безопасности. Эти устройства ограничивают наши возможности и впоследствии маскируют уязвимости, расположенные за устройствами, что негативно влияет на конечный продукт, который необходимо предоставить клиентам.
Наконец, расположение в сети может повлиять на видимость цели. Например, типичный сканер уязвимостей попытается обнаружить цели с помощью ping sweep или
Ссылка скрыта от гостей
. Однако, цели, подключенные к Интернету, не могут получать ARP трафик из внешних подсетей и могут
Ссылка скрыта от гостей
, а это означает, что сканер может полностью пропустить цели, если он был настроен на работу исключительно с этими опциями обнаружения.Необходимо время, чтобы тщательно разобраться в целевой сети, выбрать точное сетевое расположение, откуда будет осуществляться работа, и определить имеющийся доступ к цели, который обеспечивается текущим расположением в сети. И как всегда отмечается, важно знать используемые инструменты и как они работают.
Сканирование с аутентификацией VS сканирование без аутентификации
Большинство сканеров могут быть настроены для выполнения сканирования с аутентификацией, при котором сканер логинится в систему с набором действующих учетных данных. В большинстве случаев при сканировании с аутентификацией используется учетная запись привилегированного пользователя, чтобы иметь возможность лучше изучить целевую систему.
Чтобы запустить сканирование с аутентификацией для Linux машины, достаточно активировать службу SSH на Linux машине и настроить сканер с использованием действующих учетных данных пользователя. Большинство сканеров будут использовать такой способ доступа для изучения версий пакетов и проверки конфигураций, пытаясь обнаружить потенциальные уязвимости.
Для аутентификации Windows обычно требуется
Ссылка скрыта от гостей
вместе с учетными данными для домена или локальной учетной записи с разрешением на удаленное управление. Обратите внимание, что даже при настроенном WMI некоторые другие факторы могут блокировать аутентификацию, в том числе
Ссылка скрыта от гостей
и настройки фаервола. Однако при правильной настройке доступа большинство сканеров анализируют конфигурацию системы, параметры реестра, а также версии приложений и обновлений системы. Они просматривают файлы в каталогах Program Files, все вспомогательные исполняемые файлы и библиотеки DLL в папке Windows в попытке обнаружить потенциально уязвимое программное обеспечение.Сканирования с аутентификацией генерируют большой объем дополнительной информации и дают более точные результаты за счет более длительного сканирования. Хотя сканирование с аутентификацией может использоваться во время пентеста (например, с использованием обнаруженных учетных данных), оно чаще используется в процессе управления обновлениями.
Сканирование на уязвимости с Nessus
Сперва сосредоточимся на Nessus, популярном сканере уязвимостей, который поддерживает впечатляющие
Ссылка скрыта от гостей
(проверок уязвимостей) на момент написания этой главы. Изначально приложение разрабатывалось как приложение с открытым исходным кодом, но в 2005 году
Ссылка скрыта от гостей
. Переход к модели с закрытым исходным кодом привело к появлению форков проекта с открытым исходым кодом и к выпуску
Ссылка скрыта от гостей
.Существует множество коммерческих сканеров уязвимостей и сканеров с открытым исходным кодом со своими преимуществами и недостатками. Однако, Nessus представляет собой вполне рабочий отраслевой стандарт, а бесплатная версия "Essentials" позволяет сканировать до 16 IP адресов. Это дает представление о том, как можно использовать полную коммерческую версию без временных или иных ограничений. Общие концепции, рассмотренные в этом разделе, в целом, применимы к любому другому коммерческому сканеру.
Установка Nessus
Обратите внимание, что для работы с данной частью этой главы потребуется установить Nessus на виртуальной машине, которая используется для подключения к лаборатории PWK, так как потребуется доступ в Интернет для активации экземпляра Nessus и для загрузки плагинов. Также необходимо отметить, что сканеры уязвимостей, как правило, являются ресурсоемкими. Многие из них советуют установить минимальные требования, включающие не менее 2-х ядер процессора, а также 8ГБ оперативной памяти. В приведенном примере такие ресурсы не понадобятся.
Перед началом установки необходимо обновить списки пакетов Kali и обновить уже установленные пакеты до последних версий:
Bash:
kali@kali:~$ sudo apt update && sudo apt upgrade
Листинг 1 - Обновление списка пакетов и самих пакетов
Хоть Nessus и недоступен в репозиториях Kali, можно вручную скачать 64-битный .deb файл для Kali с веб-сайта Tenable:
Ссылка скрыта от гостей
.Можно посмотреть значение контрольной суммы SHA256, нажав на ссылку "Checksum" на странице загрузки (Рисунок 1) и подтвердить контрольную сумму загруженного файла с помощью sha256sum:
Рисунок 1: Nessus. Загрузка и Контрольная сумма
Bash:
kali@kali:~/nessus$ sha256sum Nessus-X.X.X.deb
34199e8ff70bc1502b82495272cee2d313dc15eacd1c0c1da6b851a32892d39d Nessus-X.X.X.deb
Листинг 2 - Проверка контрольной суммы
Значение, полученное после запуска sha256sum, и значение на веб-сайте должны совпасть. Стоит отметить, что эта контрольная сумма зависит от версии и может не совпадать со значением с картинки выше.
Так как хеш-суммы совпадают, можно установить пакет при помощи apt:
Bash:
kali@kali:~/nessus$ sudo apt install ./Nessus-X.X.X.deb
...
Preparing to unpack .../kali/nessus/Nessus-X.X.X.deb ...
Unpacking nessus (X.X.X) ...
Setting up nessus (X.X.X) ...
Unpacking Nessus Scanner Core Components...
- You can start Nessus Scanner by typing /etc/init.d/nessusd start
- Then go to https://kali:8834/ to configure your scanner
Processing triggers for systemd (241-3) ...
Листинг 3 - Установка Nessus
После установки пакета можно запустить сервис nessusd:
Bash:
kali@kali:~/nessus$ sudo /etc/init.d/nessusd start
Starting Nessus : .
Листинг 4 - Запуск Nessus
После старта Nessus можно запустить браузер и перейти на
Ссылка скрыта от гостей
. Получаем ошибку сертификата, указывающую на то, что издатель сертификата неизвестен. Но это ожидаемо, так как используется самоподписанный сертификат.Рисунок 2: Nessus. Ошибка сертификата
Чтобы принять самоподписанный сертификат необходимо нажать Advanced и Add exception...:
Рисунок 3: Добавление исключения для сертификата
Когда откроется всплывающее окно исключения безопасности, можно нажать Confirm Security Exception, чтобы принять сертификат:
Рисунок 4: Подтверждение исключения безопасности
После загрузки страницы предлагается выбрать продукт Nessus. Для наших будем использовать Nessus Essentials. Для этого необходимо выбрать из списка Nessus Essentials и нажать Continue.
Рисунок 5: Выбор Nessus Essentials
Далее предлагается запросить код активации для Nessus Essentials. Заполнив форму необходимой информацией и нажав кнопку Email, отправим код активации на адрес нашей электронной почты.
Рисунок 6: Запрос кода активации
После получения кода активации по почту можно ввести его в Nessus и нажать Continue
Рисунок 7: Активация Nessus
Теперь, когда Nessus активирован, предлагается создать локальную учетную запись пользователя Nessus:
Рисунок 8: Создание локальной учетной записи Nessus
Наконец, необходимо загрузить и скомпилировать все плагины. Это может занять значительное количество времени.
Рисунок 9: Обновление Nessus
Определение целей
Определение целей
Теперь, когда Nessus установлен, пришло время произвести настройку первого сканирования. Для начала просто нажмем кнопку New Scan.
Рисунок 10: Создание сканирования
Nessus поддерживает несколько типов сканирования, такие как:
- Basic Network Scan: Общее сканирование с различными проверками, которые подходят для использования против различных типов целей.
- Credentialed Patch Audit: Сканирование с аутентификацией, которое собирает информацию об отсутствующих патчах.
- Web Application Tests: Специализированное сканирование для обнаружения опубликованных уязвимостей в Web-приложениях.
- Spectre and Meltdown: Сканирование, направленное на уязвимости
Ссылка скрыта от гостей
и
Ссылка скрыта от гостей
.Рекомендуется поисследовать указанные типы сканирования, но в данном вводном разделе остановимся на стандартном, базовом сканировании сети, которое можно запустить, нажав Basic Network Scan.
Рисунок 11: Выбор Basic Network Scan
В результате появится окно настроек сканирования с двумя обязательными аргументами: именем создаваемого сканирования и списком целей. Nessus поддерживает добавление целей в виде IP адреса, диапазона IP адресов или разделенного запятыми FQDN (Fully Qualified Domain Name) или списка IP адресов.
Для этого примера просканируем компьютер Gamma в PWK-лаборатории с IP адресом 10.11.1.73. Введем "Gamma - Basic" в поле Name и IP адрес в поле Targets:
Рисунок 12: Настройка сканирования Gamma
Настройка параметров сканирования
Настройка параметров сканирования
В этом сценарии был выбран шаблон Basic Network Scan, который, как и все остальные шаблоны, поставляется с предустановленными настройками по умолчанию. Однако, эти параметры по умолчанию могут не соответствовать тем, которые необходимы, а также следует учесть окружение, временные ограничения и цель, которую будем сканировать. Некоторые моменты, которые необходимо учесть при настройке шаблона Basic Network Scan:
- Размещены ли наши цели во внутренней сети или они общедоступны?
- Должен ли сканер попытаться подобрать пользовательские учетные данные с помощью брутфорса?
- Нужно ли сканировать все TCP и UDP порты или только общие?
- Какие проверки должны выполняться сканером, а какие следует избегать?
- Сканер должен запускать сканирование с аутентификацией или без?
Рисунок 13: Доступ к настройкам Discovery
В выпадающем списке Scan Type изменяем значение с Port scan (common ports) на Custom.
Рисунок 14: Настройка сканера на использование пользовательских настроек портов
Это добавит дополнительные настройки в разделе Discovery. Далее нажимаем Discovery и Port Scanning для настройки диапазона портов:
Рисунок 15: Выбор новой опции сканирования портов
В секции Port Scanning выставим значение Port scan range в "0-65535", чтобы сканировать все порты:
Рисунок 16: Настройка сканера на сканирование всех портов
В этом сценарии были выбраны такие настройки, при которых будут сканироваться все TCP порты, а UDP порты сканироваться не будут. Хотя это увеличит скорость сканирования, можно пропустить важные сервисы, запущенные на цели. Во время взаимодействия необходимо учитывать стабильность атакуемой сети, масштабы цели, длительность взаимодействия и многие другие факторы при настройке сканирования портов.
Во время настройки опций сканирования не указывались никакие учетные данные, что подразумевает, что это сканирование будет выполняться без аутентификации. Кроме того, были приняты настройки по умолчанию в Basic Network Scan, что означает, что брутфорс пользовательских учетных данных не будет задействован. Если рассмотреть другие опции в Basic Network Scan, можно удостовериться, что к цели будут применены только общие проверки, в отличии от других шаблонов, таких как Spectre and Meltdown, которые включают в себя проверку на определенные уязвимости. Имейте в виду, что сканирование, настроенное таким образом, будет очень заметно на сетевом уровне, так как оно сканирует все порты и ищет все подходящие уязвимости.
Теперь, когда полностью рассмотрены все настройки и понятно (по крайней мере, на высоком уровне), что сканер собирается делать, можно приступить к первому сканированию.
Сканирование с Nessus без аутентификации
Чтобы запустить первую проверку без аутентификации, необходимо нажать на стрелку рядом с Save, а затем нажать Launch:
Рисунок 17: Запуск сканирования
Изначально сканирование будет иметь статус Running (Рисунок 18).
Рисунок 18: Статус сканирования в процессе выполнения
После завершения сканирования статус изменится на Completed (Рисунок 19).
Рисунок 19: Статус сканирования в процессе выполнения
Время сканирования будет варьироваться в зависимости от многих факторов, включая конфигурацию сканирования и скорость сети.
На экране "My Scans" можно нажать на название сканера, "Gamma - Basic", чтобы увидеть список хостов, обнаруженных во время сканирования и выявления потенциальных уязвимостей:
Рисунок 20: Просмотр отчета о сканировании
Сканируется ли один или несколько хостов, можно нажать на IP-адрес или имя хоста для отображения уязвимостей, обнаруженных для этой цели, как показано на рисунке 21:
Рисунок 21: Просмотр обнаруженных уязвимостей
Можно отфильтровать эти уязвимости по степени опасности (severity), эксплуатационной пригодности (exploitability), CVE и т.д. Для отображения уязвимости, которые, скорее всего, приведут к целевой компрометации, можно нажать кнопку Filter и изменить выпадающее на результирующей панели "Exploit Available", оставляя без изменений значения "is equal to", и "true". После настройки нажимаем Apply:
Рисунок 22: Фильтрация уязвимостей с помощью эксплойтов
В результате будет отображен список уязвимостей в группах, определенных Nessus:
Рисунок 23: Список уязвимостей с группами
Хотя данная группировка может быть полезной, нажмем на значок шестеренки в верхней правой части таблицы и нажмем кнопку Disable Groups. При этом будет представлен предпочитаемый формат вывода, перечисляющий все уязвимости на одной странице, отсортированные по степени опасности:
Рисунок 24: Отключение Grouping
Этот формат вывода идеально подходит, так как он показывает своего рода путь к потенциальной компрометации цели, при этом в первую очередь отображаются уязвимости с наивысшим риском:
Рисунок 25: Отключение Grouping
Конечно, некоторые из записей могут представлять собой ложные срабатывания, именно поэтому крайне важно просматривать данные сканирования и вручную проверять результаты.
Аутентифицированное сканирование с Nessus
Можно генерировать более подробную информацию и уменьшить количество ложных отчетов, выполнив аутентифицированное сканирование, для которого требуются действительные учетные данные цели. Чтобы продемонстрировать значение аутентифицированного сканирования, запустим его на Debian клиенте в лаборатории. Однако, имейте в виду, что пентестеры бы не проводили аутентифицированное сканирование в большинстве случаев без явного разрешения и полного взаимопонимания с администраторами целевой сети в связи с тем, что это влечет повышенный потенциальный риск непреднамеренных перерывов в работе производственных систем.
Чтобы начать сканирование, нажмите кнопку New Scan.
Рисунок 26: Запуск сканирования
Несмотря на то, что все шаблоны Nessus принимают учетные данные пользователей, будем использовать шаблон сканирования Credentialed Patch Audit, который поставляется предварительно сконфигурированным для выполнения локальной проверки безопасности по отношению к цели. Этот шаблон будет сканировать не только на предмет отсутствия патчей уровня операционной системы, но и проверять на наличие устаревших приложений, которые могут быть уязвимы для таких векторов, как повышение привилегий.
Далее нажимаем на карточку Credentialed Patch Audit:
Рисунок 27: Выбор сканирования "Credentialed Patch Audit"
Еще раз, предоставим имя для сканирования и установим цель. Обратите внимание, что IP адрес вашего Debian клиент будет отличаться. Пожалуйста, обратитесь к студенческой панели управления для получения правильного IP-адреса клиента Debian.
Рисунок 28: Базовая настройка аутентифицированного сканирования
Далее переходим во вкладку Credentials и категорию SSH. В раскрывающемся списке Authentication method выбираем password, устанавливаем имя пользователя "root" и предоставляем пароль для нашего клиента Debian. Правильную конфигурацию можно увидеть на рисунке 29:
Рисунок 29: Ввод учетных данных SSH
Хотя и будет использоваться только SSH конфигурация для этого примера, можно легко просмотреть другой пример механизма аутентификации, поддерживаемые Nessus, путем нажатия выпадающего меню Categories и выбирая All.
Наконец, можно нажать на стрелку рядом с пунктом Save, а затем запустить сканирование, кнопкой Launch:
Рисунок 30: Запуск сканирования
Как и при сканировании без аутентификации, во время сканирования состояние отображается как "Running". Как только сканирование достигнет статуса "Completed", можно нажать на название сканирования, чтобы открыть список и нажать на IP Debian клиента. Это нажатие покажет список обнаруженных уязвимостей, которые можно использовать на Debian цели:
Рисунок 31: Просмотр результатов
Обратите внимание, что на рисунке, уязвимости перечислены с номерами патчей. Это связано с тем, что во время этапа Обнаружение, Nessus определил, что цель работает под управлением Debian и выполнил только плагины
Ссылка скрыта от гостей
. Можно заметить, что аутентифицированное сканирование прошло успешно, так как теперь сканер умеет различать уязвимые приложения которые не подвергаются удаленному воздействию, например, Firefox.Сканирование с помощью отдельных подключаемых модулей Nessus
При запуске Nessus по умолчанию, он активирует ряд подключаемых модулей на заднем фоне. Хоть это и, безусловно, полезно во многих ситуациях, но можно индивидуально настроить необходимые параметры работы сканера, например, для быстрого запуска какого-то одного плагина. Можно использовать эту возможность, чтобы проверить предыдущий полученный результат, или для быстрого обнаружения в сети всех целей, уязвимых для определенного эксплойта.
В этом примере запустим плагин
Ссылка скрыта от гостей
в отношении хоста "Beta" в лабораторной сети. Можно использовать этот плагин для сбора информации с RPC-сервера (порт 111) и проверки, предоставляет ли цель в доступ какие-либо NFS ресурсы.Чтобы запустить сканирование с использованием одного плагина, начнем с New Scan:
Рисунок 32: Создание сканирования
В этот раз будем использовать шаблон Advanced Scan. В отличие от шаблонов Basic Network Scan и Credentialed Patch Audit, которые использовались ранее, шаблон Advanced Scan не использует стандартные рекомендации для конфигураций сканирования. Однако этот шаблон предлагает набор "расширенных" значений по умолчанию, которые обычно скрыты или недоступны для других шаблонов. Обратите внимание, что Advanced Scan позволяет выбирать отдельные плагины, а этот параметр недоступен для большинства других шаблонов.
Чтобы использовать этот шаблон, щелкните карточку Advanced Scan и настройте значения имя и цель:
Рисунок 33: Настройка частного сканирования
Чтобы сэкономить время и сканировать более тихо, отключим обнаружение хоста, поскольку знаем, что он доступен. Сделаем это, щелкнув Discovery > Host Discovery на вкладке Settings и сняв флажок "Ping the remote host":
Рисунок 34: Исключение обнаружения хоста
Помимо отключения обнаружения хоста, также можно сузить список сканируемых портов, если известно, на каком порту уже работает служба, и понимая, что службы не всегда прослушивают порт по умолчанию. Следует делать это только в том случае, если уверены, что служба действительно работает на этом порту. Поскольку производится сканирование службы RPC и известно, что RPC действительно работает на TCP-порту 111, будет сканироваться только этот порт.
Чтобы выплнить данную настройку, выберем Discovery > Port Scanning и на вкладке Settings введем "111" в поле Port scan range. Также снимем флажки со всех опций в разделе Local Port Enumerators, как показано на Рисунке 35.
Рисунок 35: Уменьшение количества объектов сканирования
Уменьшив некоторые параметры сканирования, можно начать выбирать плагины. Начнем с перехода на вкладку Plugins и нажатия Disable All в правом верхнем углу:
Рисунок 36: Отключение всех плагинов
На этом этапе сканирование будет выполняться очень быстро, но мало что даст! Чтобы сканировать открытые NFS ресурсы, перейдем к "RPC" в левом столбце и установим для параметра "NFS Exported Share Information Disclosure" в правом столбце значение Enabled:
Рисунок 37: Включение плагина NFS
Теперь, когда сканирование настроено, все готово для запуска. Нажмем стрелку рядом с Save, а затем Launch:
Рисунок 38: Запуск сканирования
Обратите внимание, что даже если было настроено сканирование только порта 111, запуск захвата пакетов во время сканирования покажет, что трафик на другие порты все еще есть. Это происходит потому, что сканирование портов - это только одна часть профиля сканирования Nessus, и большинство сканеров уязвимостей запускают дополнительные службы и плагины для скрытого сбора информации о цели. Нет простого способа полностью контролировать весь трафик, генерируемый автоматическим сканером. Необходимый уровень контроля достигается только при ручной работе.
После того, как сканирование будет "Завершено", можно щелкнуть имя сканирования, а затем IP-адрес Beta, чтобы открыть список обнаруженных уязвимостей. При переходе к одной критической уязвимости и нажатии на нее отображается подробная страница, на которой показаны все предоставляемые NFS ресурсы:
Рисунок 39: Просмотр результатов
Обратите внимание, что сканирование также сгенерировало два дополнительных вывода info. К ним относятся подробные сведения о сканировании и результат SYN сканирования.
Сканирование уязвимостей с помощью Nmap
Вместо Nessus также можно использовать
Ссылка скрыта от гостей
для выполнения автоматического сканирования уязвимостей. Хотя NSE не является полноценным сканером уязвимостей, у него есть внушительная библиотека скриптов, которые можно использовать для обнаружения и проверки уязвимостей. Скрипты NSE написаны на
Ссылка скрыта от гостей
и варьируются по функциональности от брутфорса и аутентификации до обнаружения и использования уязвимостей. В данный момент сосредоточимся на скриптах из категорий "vuln" и "exploit": первый обнаруживает уязвимость, а второй пытается ее использовать.Тем не менее, эти категории частично перекрывают друг друга, и некоторые "vuln" скрипты могут запускать урезанные эксплойты. По этой причине скрипты будут далее классифицироваться как "безопасные" или "интрузивные", и необходимо проявлять большую осторожность при выполнении последних, поскольку они могут привести к сбою удаленной службы или нарушить работоспособность цели.
Никогда не запускайте сценарии NSE вслепую. Найдите время, чтобы изучить их, чтобы понять, что они делают, прежде чем запускать их, и по возможности проверьте их на своих собственных машинах.
В Kali NSE скрипты можно найти в каталоге /usr/share/nmap/scripts/. Открытие любого из файлов *.nse в текстовом редакторе отобразит содержимое скрипта в простом, удобочитаемом формате. Найдите время, чтобы просмотреть некоторые из NSE скриптов, чтобы ознакомиться с форматом и типами тестов, выполняемых ими.
В этой папке также содержится файл script.db, который служит перечисляющим индексом для всех скриптов. Он также классифицирует каждый скрипт Nmap. Можно было бы, например, использовать этот файл для поиска командой grep скриптов из категорий "vuln" и "exploit", как показано в листинге 5:
Bash:
kali@kali:~$ cd /usr/share/nmap/scripts/
kali@kali:/usr/share/nmap/scripts$ head -n 5 script.db
Entry { filename = "acarsd-info.nse", categories = { "discovery", "safe", } }
Entry { filename = "address-info.nse", categories = { "default", "safe", } }
Entry { filename = "afp-brute.nse", categories = { "brute", "intrusive", } }
Entry { filename = "afp-ls.nse", categories = { "discovery", "safe", } }
Entry { filename = "afp-path-vuln.nse", categories = { "exploit", "intrusive", "vuln",
kali@kali:/usr/share/nmap/scripts$ cat script.db | grep '"vuln"\|"exploit"'
Entry { filename = "afp-path-vuln.nse", categories = { "exploit", "intrusive", "vuln",
Entry { filename = "clamav-exec.nse", categories = { "exploit", "vuln", } }
Entry { filename = "distcc-cve2004-2687.nse", categories = { "exploit", "intrusive", "
Entry { filename = "ftp-proftpd-backdoor.nse", categories = { "exploit", "intrusive",
Entry { filename = "ftp-vsftpd-backdoor.nse", categories = { "exploit", "intrusive", "
...
Листинг 5 - База данных скриптов Nmap
Попробуем использовать NSE для поиска уязвимости. В примере будет использоваться --script vuln для запуска всех скриптов в категории "vuln" в отношении цели в лаборатории PWK:
Bash:
kali@kali:~$ sudo nmap --script vuln 10.11.1.10
[sudo] password for kali:
Starting Nmap 7.70 ( https://nmap.org )
Pre-scan script results:
| broadcast-avahi-dos:
| Discovered hosts:
| 224.0.0.251
| After NULL UDP avahi packet DoS (CVE-2011-1002).
|_ Hosts are all up (not vulnerable).
Nmap scan report for 10.11.1.10
Host is up (0.099s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
80/tcp open http
| http-cookie-flags:
| /CFIDE/administrator/enter.cfm:
| CFID:
| httponly flag not set
| CFTOKEN:
| httponly flag not set
| /CFIDE/administrator/entman/index.cfm:
| CFID:
| httponly flag not set
| CFTOKEN:
| httponly flag not set
| /CFIDE/administrator/archives/index.cfm:
| CFID:
| httponly flag not set
| CFTOKEN:
|_ httponly flag not set
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-enum:
| /CFIDE/administrator/enter.cfm: ColdFusion Admin Console
| /CFIDE/administrator/entman/index.cfm: ColdFusion Admin Console
| /cfide/install.cfm: ColdFusion Admin Console
| /CFIDE/administrator/archives/index.cfm: ColdFusion Admin Console
| /CFIDE/wizards/common/_logintowizard.cfm: ColdFusion Admin Console
|_ /CFIDE/componentutils/login.cfm: ColdFusion Admin Console
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
| http-vuln-cve2010-2861:
| VULNERABLE:
| Adobe ColdFusion Directory Traversal Vulnerability
| State: VULNERABLE (Exploitable)
| IDs: CVE:CVE-2010-2861 OSVDB:67047
| Multiple directory traversal vulnerabilities in the administrator console
| in Adobe ColdFusion 9.0.1 and earlier allow remote attackers to read arbitrary
| files via the locale parameter
| Disclosure date: 2010-08-10
| Extra information:
|
| ColdFusion8
| HMAC: 749CD10DC95AF1713642CC5A1046857830C05E0B
| Salt: 1560458235684
| Hash: AAFDC23870ECBCD3D557B6423A8982134E17927E
|
| References:
| http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-2861
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-2861
| http://www.blackhatacademy.org/security101/Cold_Fusion_Hacking
| http://osvdb.org/67047
|_ http://www.nessus.org/plugins/index.php?view=single&id=48340
MAC Address: 00:50:56:93:38:CA (VMware)
Листинг 6 - Использование NSE сценариев "vuln" для конкретной виртуальной машины в лаборатории PWK
Видно, что скрипт http-vuln-cve2010-2861.nse успешно обнаружил уязвимость Adobe Coldfusion у цели. Это интересно и заслуживает дальнейшего изучения.
Хотя Nmap не является сканером уязвимостей в традиционном смысле, он может быть очень полезен для таких задач. Можно использовать Nmap во время пентеста для проверки результатов работы сканера уязвимостей, в качестве запасного специализированного сканера или для уменьшения количества ложных срабатываний.
Следует обратить внимание, что Nmap также имеет ряд рабочих нюансов, как и традиционные сканеры уязвимостей. Следует понимать, что скрипты будут, а что не будут проверять, объем трафика, который они будут генерировать, и какие потенциальные опасности, которые могут возникнуть от их работы.
Заключение
Сканирование уязвимостей может быть очень полезным на начальном этапе пентеста. После правильной настройки инструменты сканирования уязвимостей могут предоставить обширную информацию и выявить некоторые серьезные и непредвиденные уязвимости, которые могут оказаться неоспоримо полезными в процессе пентеста. При этом важно понимать, что ручная проверка по-прежнему требуется, и что сканеры могут обнаруживать только те уязвимости, для которых они запрограммированы. Наконец, всегда необходимо помнить, что инструменты сканирования уязвимостей могут выполнять действия, которые возможно повредят работе сети или цели, поэтому необходимо быть осторожными при их использовании.
Последнее редактирование: