Обнаружение уязвимости
Приветствую суперпользователь сбор информации обычно являются первыми шагами при атаке на приложение. Цель их в том, чтобы как можно больше узнать о приложении в рекордно короткий период времени. Время – это роскошь, которой у нас нет, и мы должны максимально использовать свои ограниченные ресурсы. Эффективность также поможет нам оставаться немного тише при атаке на приложения.
Умные списки слов уменьшают количество запросов к серверу и быстрее возвращают результаты. Это не панацея, но для начала неплохо. В этой главе мы рассмотрим следующие темы:
Различные типы тестирования на проникновение;
Построение карты сети с помощью различных сетевых и веб-сканеров;
Типы тестирования
В зависимости от соглашения с клиентом у вас может быть некая требуемая информация, много информации или не быть ее вообще. Тестирование белого ящика позволяет тщательно проверить приложение. В этом случае злоумышленники обладают, по существу, тем же доступом, что и разработчик. У них есть не только аутентифицированный доступ к приложению, но и его исходный код, любые проектные документы и все остальное, что может понадобиться.
Тестирование белого ящика, как правило, проводится внутренними командами, и оно довольно трудоемко. Тестировщику предоставляется любая информация, необходимая для полной оценки приложения или инфраструктуры. Преимущество предоставления тестировщикам таких сведений заключается в том, что они смогут просматривать каждое приложение и проводить проверку на предмет наличия уязвимостей. Это роскошь, которой нет у злоумышленников, действующих снаружи, но она эффективно использует ограниченное время и ресурсы во время тестирования.
Сценарии серого ящика более распространены, поскольку предоставляют достаточно информации, чтобы тестировщики могли правильно исследовать приложение. Клиент предоставляет учетные данные и немного информации о дизайне инфраструктуры или приложения, но не более. Идея заключается в том, что клиент предполагает, что злоумышленник уже располагает определенным уровнем доступа или знаний, и клиент должен понять, как можно причинить гораздо бóльший ущерб.
Наконец, тестирование черного ящика будет имитировать атаку с точки зрения постороннего лица, не имеющего сведений о приложении или об инфраструктуре. Компании, загружающие приложения в интернет, постоянно подвергаются атакам извне. В то же время важно помнить, что не все злоумышленники действуют извне, поскольку недовольные сотрудники могут нанести такой же ущерб, вредоносные атаки типа «черный ящик» довольно распространены и могут быть очень разрушительными.
Построение карты сети
Традиционный 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.
На этом сегодня все, удачи суперпользователь
До связи.