August 3, 2020

Обнаружение уязвимости

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

Умные списки слов уменьшают количество запросов к серверу и быстрее возвращают результаты. Это не панацея, но для начала неплохо. В этой главе мы рассмотрим следующие темы:

Различные типы тестирования на проникновение;

Построение карты сети с помощью различных сетевых и веб-сканеров;

Типы тестирования

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

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

Сценарии серого ящика более распространены, поскольку предоставляют достаточно информации, чтобы тестировщики могли правильно исследовать приложение. Клиент предоставляет учетные данные и немного информации о дизайне инфраструктуры или приложения, но не более. Идея заключается в том, что клиент предполагает, что злоумышленник уже располагает определенным уровнем доступа или знаний, и клиент должен понять, как можно причинить гораздо бóльший ущерб.

Наконец, тестирование черного ящика будет имитировать атаку с точки зрения постороннего лица, не имеющего сведений о приложении или об инфра­структуре. Компании, загружающие приложения в интернет, постоянно подвергаются атакам извне. В то же время важно помнить, что не все зло­умышленники действуют извне, поскольку недовольные сотрудники могут нанести такой же ущерб, вредоносные атаки типа «черный ящик» довольно распространены и могут быть очень разрушительными.

Построение карты сети

Традиционный nmap всего диапазона портов с обнаружением служб всегда является неплохой отправной точкой для сбора информации о жертве. Nmap – это средство сканирования сетей, которое используется на протяжении многих лет. Это по-прежнему очень мощная и очень актуальная утилита, доступная большинству платформ, в том числе Kali, BlackArch и даже Windows.

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

Если экземпляр Kali Linux является свежим или Metasploit был установлен недавно, базу данных может понадобиться подтолкнуть, чтобы запустить.

В командной строке Kali запустите службу PostgreSQL с помощью команды service. В случае успеха не должно возвращаться никакое сообщение.

root@kali:~# service postgresql start

root@kali:~#

Затем можно запустить Metasploit с помощью команды msfconsole, которая выведет нас в подприглашение с префиксом msf вместо традиционного пригла­шения bash.

root@kali:~# msfconsole

[...]

msf > db_status

[*] postgresql selected, no connection

msf >

Предыдущая серия команд запустила службу базы данных PostgreSQL, которую Metasploit использует как хранилище. Консоль Metasploit запущена, и мы можем проверить состояние базы данных с помощью команды db_status.

Можно использовать команду exit для возврата в терминал bash:

msf > exit

root@kali:~#

Теперь можно использовать команду Metasploit msfdb, которая поможет нам инициализировать (init) базу данных.

root@kali:~# msfdb init

Creating database user 'msf'

Enter password for new role:

Enter it again:

Creating databases 'msf' and 'msf_test'

Creating configuration file in

/usr/share/metasploit-framework/config/database.yml

Creating initial database schema

root@kali:~#

Команда msfdb создает все необходимые файлы конфигурации, чтобы Metasploit мог подключаться к базе данных. Подчеркнем: мы можем запустить консоль Metasploit, используя команду msfconsole в командной строке Linux.

root@kali:~# msfconsole

[...]

msf >

Файл конфигурации базы данных формата YML, созданный с помощью команды msfdb init, можно передать в консольную команду db_connect как ключ –y.

msf > db_connect -y

/usr/share/metasploit-framework/config/database.yml

[*] Rebuilding the module cache in the background...

msf > db_status

[*] postgresql connected to msf

msf >

Теперь можем создать рабочее пространство для целевого приложения, которое поможет собрать результаты из различных модулей MSF, сканирования или эксплойтов.

msf > workspace -a target1

[*] Added workspace: target1

msf > workspace

default

* target1

Команда workspace без каких-либо параметров выведет список доступных рабочих областей, помечая активную звездочкой. На этом этапе можем начать сканирование Nmap из MSF. Команда db_nmap является оболочкой для инструмента сканирования Nmap. Разница в том, что результаты сканирования анализируются и хранятся в базе данных Metasploit для удобного просмотра.

Команда db_nmap от MSF использует те же параметры, что и обычная команда nmap. В приведенном ниже примере сканируем общие порты и опрашиваем запущенные службы.

Целью сканирования является внутренний хост 10.0.5.198 . Мы приказываем Nmap выполнить сканирование службы (-sV) без проверки связи с хостами (-Pn) и использования подробного вывода (-v).

msf > db_nmap -sV -Pn -v 10.0.5.198

[...]

[*] Nmap: Scanning 10.0.5.198 [1000 ports]

[*] Nmap: Discovered open port 3389/tcp on 10.0.5.198

[*] Nmap: Discovered open port 5357/tcp on 10.0.5.198

[*] Nmap: Completed SYN Stealth Scan at 19:50, 12.05s elapsed

(1000 total ports)

[*] Nmap: Initiating Service scan at 19:50

[...]

После завершения сканирования можно запросить и отфильтровать результаты с помощью команды services. Например, можно найти все HTTP-службы, обнаруженные с помощью ключа –s.

msf > services -s http

Services

========

host port proto name state info

---- ---- ----- ---- ----- ----

10.0.5.198 5357 tcp http open Microsoft HTTPAPI httpd 2.0

SSDP/UPnP

Masscan

Nmap – полнофункциональный инструмент с кучей опций и возможностей, но у него есть одна проблема: небольшая скорость. При работе со значительными сегментами сети Nmap может быть очень медлительным, а иногда вообще отказывается работать. Клиенты нередко просят провести тест на проникновение для огромного IP-пространства за небольшое количество времени, выделенное для фазы картирования и сканирования.

masscan может просканировать все интернет-пространство IP за шесть минут. Это впечатляет, и, masscan, безусловно, является одним из самых быстрых сканеров портов.

Во время выполнения задания сначала мы, возможно, нацелимся на веб-приложения, и masscan быстро вернет все открытые веб-порты с помощью всего пары ключей.

С помощью знакомого ключа -p можно указать серию или диапазон портов, которые нужно искать. Ключ --banners попытается получить информацию обо всех открытых портах, которые были обнаружены. Для больших IP-пространств, где время имеет существенное значение, можно использовать ключ --rate, чтобы указать большое число пакетов в секунду, например миллион или больше.

Видно, что предыдущее сканирование было отменено досрочно с помощью прерывания Ctrl+C, и masscan сохранил свою работу в файле paused.conf, чтобы мы могли возобновить сканирование позже. Чтобы узнать, где мы остановились, можно использовать ключ --resume , передав в качестве параметра файл paused.conf.

Результаты masscan можно передать в Nmap для дальнейшей обработки либо в веб-сканер для более глубокого поиска уязвимостей.

hatWeb

После того как мы определили одно или несколько веб-приложений в целевой среде с помощью masscan или Nmap, можно начать копать дальше. WhatWeb – простой, но эффективный инструмент, который способен, взглянув на конкретное веб-приложение, определить, какие технологии были использованы для его разработки и запуска. У него свыше 1000 плагинов, которые могут пассивно идентифицировать все – начиная с того, какая система управления контентом (CMS) работает в приложении, и заканчивая тем, какая версия Apache или NGINX поддерживает все это.

WhatWeb доступен в Kali Linux и большинстве других дистрибутивов для тестирования на проникновение. Его также можно загрузить с сайта https:// github.com/urbanadventurer/WhaWeb.

Nikto

Nikto полезен на начальных этапах выполнения задания. Он довольно ненавязчив и, используя встроенные плагины, позволяет быстро составить представление о приложении. Он также предлагает некоторые более агрессивные функции сканирования, которые могут привести к успеху, когда речь идет о более старых приложениях или инфраструктуре.

Если от нас не требуется особой скрытности, не помешает пробежаться и по более шумным опциям Nikto. Nikto может определять поддомены, сообщать о необычных заголовках и проверять файл robots.txt на предмет наличия интересной информации.

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

Nikto можно загрузить с сайта https://github.com/sullo/nikto . Он также доступен в большинстве дистрибутивов Linux, ориентированных на тестирование на проникновение, таких как Kali или BlackArch.

CMS-сканеры

Когда жертва использует систему управления контентом, такую как​​ Joomla, Drupal или WordPress, следующий шаг – запуск инструмента автоматического тестирования уязвимостей.

WordPress – популярная CMS, поскольку она предоставляет плагины практически для любого типа сайта, что делает ее легконастраиваемой и широко распространенной. В то же время она имеет большую поверхность для атаки. Для этой CMS существует множество уязвимых плагинов, и пользователи обычно не часто обновляют их.

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

WordPress в этом отношении не одинок. Joomla и Drupal также очень популярны и обладают множеством тех же уязвимостей и проблем конфигурации.

Существует несколько бесплатных сканеров, предназначенных для тестирования этих CMS:

WPScan (https://wpscan.org/): мощный инструмент для тестирования сайтов на WordPress;

JoomScan (https://github.com/rezasp/joomscan): как видно из названия, это CMS-сканер, специализирующийся на тестировании сайтов на Joomla;

Droopescan (https://github.com/droope/droopescan): сканер для Drupal с некоторой поддержкой Joomla;

CMSmap (https://github.com/Dionach/CMSmap): более универсальный сканер и инструмент для атак методом полного перебора, поддерживающий WordPress, Joomla и Drupal.

На этом сегодня все, удачи суперпользователь

До связи.