Погружение в Metasploit


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

Предыстория

История Metasploit берет начало в 2003 году. HD Moore, работая пентестером в небольшой консалтинговой компании, замечает ряд неудобств в организации хранения и использования средств анализа безопасности. На тот момент, это был просто набор разрозненных эксплойтов и скриптов, общая информация о которых хранилась в базе данных. Информация о необходимом окружении для запуска скриптов как правило отсутствовала. Также они несли в себе множество устаревшего кода, требовали модификации жестко прописанных путей для каждого конкретного случая и т.п., что весьма затрудняло рабочий процесс и усложняло разработку новых инструментов.

В Metasploit автор, пытаясь решить эту проблему, создает консольную утилиту на Perl с псевдографическим интерфейсом и включает в неё порядка 11 эксплоитов. Сообщество встретило первую версию Metasploit весьма холодно, изрядно критикуя, как архитектуру, так и саму идею. Тем не менее, HD Moore не сдается и даже находит сподвижника в лице spoonm, с которым они доводят до ума модульную архитектуру фреймворка и выпускают вторую версию в 2004 году. Со временем фреймворк начинает набирать популярность и обретать новых контрибьюторов.

Следующим значимым шагом был перевод Metasploit c Perl на Ruby, для того чтобы избежать ограничений Perl, обеспечить кроссплатформенность и добиться большей гибкости при разработке. В 2009 году фреймворк приобретает компания Rapid7, под эгидой которой продолжилось развитие opensource-версии, а также стали появляться коммерческие версии продукта. Сам фреймворк давно перерос статус простого набора для пентестера и сегодня можно его можно встретить (хотя и нечасто) даже в арсенале “мирных” системных администраторов и программистов.

Версии

На момент написания статьи Metasploit распространяется в 4-х версиях:

  • Framework - базовая версия с консольным интерфейсом;
  • Community - бесплатная версия, включающая дополнительно веб-интерфейс и часть функционала из коммерческих версий;
  • Express - для коммерческих пользователей, включает функционал позволяющий упростить проведение базовых аудитов и формирование отчетности по ним;
  • Pro - самая продвинутая версия, предоставляет расширенные возможности для проведения атак, позволяет формировать цепочки задач для аудита, составлять подробную отчетность и многое другое.

Помимо веб-интерфейса, доступного в версиях Community, Express и Pro, существуют такие проекты, как Armitage и Cobalt strike, предоставляющие GUI-интерфейс для фреймворка.

Установка

На текущий момент поддерживаются все актуальные версии Windows и большинство популярных дистрибутивов Linux. В обоих случаях разработчики предоставляют графический инсталлятор, так что проблем с установкой возникнуть не должно. Специализированные дистрибутивы для пентеста, такие как Kali Linux, Pentoo, Black Arch и некоторые другие уже включают Metasploit в свой состав.

Стоит отметить, что необходимо перед установкой выключить антивирусы и другие средства защиты, т.к. большинство из них распознают Metasploit, как вредоносную программу.

База данных

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

Metasploit использует PostgreSQL, поэтому тебе понадобится установить её на свою систему. Затем убедиться, что запущены соотвествующие сервисы БД и фреймворка. Запустить их можно соотвествующими командами (команды приводятся для Kali Linux, могут отличаться в твоем дистрибутиве):

service postgresql start
service metasploit start

Далее проверим, что фреймворк успешно установил подключение. Откроем консоль Metasploit командой msfconsole, а затем выполним db_status, в ответ на которую система должна вернуть что соединение с базой установлено.

Структура фреймворка

Структура фреймворка

Сердцем Metasploit является библиотека Rex. Она требуется для операций общего назначения: работа с сокетами, протоколами, форматирование текста, работа с кодировками и т.п. На ней базируется библиотека MSF Core, которая предоставляет базовый функционал и “низкоуровневое” API. Его использует библиотека MSF Base, которая в свою очередь предоставляет API для плагинов, интерфейса пользователя (как консольного, так и графического), а также модулей.

На модулях стоит остановиться подробнее. Они делятся на несколько типов, в зависимости от предоставляемой функциональности:

  • Exploit - код эксплуатирующий определенную уязвимость на целевой системе (например, переполнение буфера);
  • Payload - код, который запускается на целевой системе после того, как отработал эксплоит (устанавливает соединение, выполняет шелл-скрипт и т.п.);
  • Post - код, который который запускается на системе после успешного проникновения (собирает пароли, скачивает файлы и т.п.);
  • Encoder - инструменты для обфускации модулей с целью избежать обнаружения антивирусами;
  • NOP - генераторы NOP’ов. Это ассемблерная инструкция, которая не производит никаких действий. Используется чтобы заполнять пустоту в исполняемых файлах, для подгонки под необходимый размер;
  • Auxiliary - модули для сканирования сети, анализа трафика, и т.д.

Команды msfconsole

Не смотря на наличие графических интерфейсов, самым распространенным способом работы с Metasploit по прежнему остается консольный интерфейс msfconsole. Рассмотрим основные команды:

  • use - выбрать определенный модуль для работы с ним;
  • back - операция обратная use: перестать работать с выбранным модулем и вернуться назад;
  • show - вывести список модулей определенного типа;
  • set- установить значение определенному объекту;
  • run - запустить вспомогательный модуль после того, как были установлены необходимые опции;
  • info - вывести информацию о модуле;
  • search - найти определенный модуль;
  • check - проверить подвержена ли целевая система уязвимости;
  • sessions - вывести список доступных сессий.

Пентест Wordpress

Вооружившись полученными знаниями, предлагаю в качестве “Hello world” провести простейший пентест сайта на Wordpress.

Тестовое окружение

Для начала необходимо поднять тестовое окружение. Для этого я буду пользоваться связкой VirtualBox+Vagrant и проектом VCCW, который позволит развернуть готовую виртуалку с Wordpress на борту буквально парой команд в консоли. Подробные инструкции ты сможешь найти на сайте проекта, здесь я покажу основные шаги.

Добавляем базовый образ:

vagrant box add miya0001/vccw

Затем скачаем с сайта проекта архив с Vagrantfile, кукбуками Chef и прочим, распаковываем, переходим в папку где лежит Vagrantfile, и выполним команду:

vagrant up

После этого у тебя должна подняться машина с развернутым Wordpress, доступная по адресу 192.168.33.10. Стоит отметить, что это уже готовый сетап, где настроена база и заведена админская учетка. Логин и пароль от неё указаны на сайте, но мы их узнаем другим путем. :)

Пентест

Откроем консоль Metasploit.

msfconsole

Запустим поиск по слову Wordpress, чтобы найти необходимый модуль.

search wordpress

Среди появившегося многообразия нас интересует модуль auxiliary/scanner/http/wordpress_login_enum который отвечает за брутфорс аутентификации Wordpress.

Результаты поиска модулей по запросу “wordpress”

Выберем его для работы:

use auxiliary/scanner/http/wordpress_login_enum

Чтобы понять как его использовать можно ввести команду info, она выведет краткое описание модуля и список используемых параметров.

Прежде всего, укажем адрес хоста на котором расположен сайт.

set RHOSTS 192.168.33.10

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

set PASS_FILE /root/10k-common-passwords.txt

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

set STOP_ON_SUCCESS true

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

set VERBOSE false

Теперь, когда подготовительные действия совершены, осталось ввести последнюю короткую команду и ждать результата:

run

Процесс перебора пароля по словарю в Metasploit

После окончания процесса мы увидим в выводе командной строки, что на сайте был найден пользователь с именем admin и пароль, который к нему подошел был тоже admin.

Результат работы модуля

Итог

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

Ссылки