Codebra
01 февраля 2026 в 14:32

Урок 23. Поиск сетевых уязвимостей с помощью Metasploit Framework (MSF)

Познакомимся с инструментом Metasploit Framework (MSF), базой данных msfdb и базовыми командами утилиты.
📝

Внимание! На этой странице вы найдете материал урока из архивного курса по пентесту (Тестирование на проникновение во внутреннюю сеть под управлением Active Directory). Курс был написан в 2024 году и будет интересен системным администраторам, специалистам по защите данных и другим специалистам.

Полный список уроков доступен по тегу Архивный курс по пентесту Active Directory и на странице первого урока.

Автор статьи никого не призывает к правонарушениям и отказывается нести ответственность за ваши действия. Вся информация предоставлена исключительно в образовательных и ознакомительных целях. Все действия происходят на виртуальных машинах и внутри локальной сети автора. Спасибо!

📝 Кратко
  • Metasploit Framework - популярная платформа с открытым исходным кодом для поиска и тестирования уязвимостей.
  • Фреймворк написан на языке Ruby и позволяет хранить результаты тестирования в базе данных PostgreSQL.
  • Модули Metasploit делятся на несколько типов: Exploit, Payload, Post, Encoder, NOP и Auxiliary.
  • Основные команды, используемые в Metasploit: search, info, show, use, back, check и set.
  • Настройка базы данных Metasploit и рабочего пространства является важным этапом работы с фреймворком.
  • В Metasploit можно использовать многофункциональный сканер Nmap для сканирования хостов на наличие уязвимостей.
  • База данных Metasploit DB хранит информацию о целях сканирования, обнаруженных службах, найденных уязвимостях и других данных.
  • В статье обсуждаются команды для просмотра и использования собранных данных в базе данных Metasploit DB.
  • Metasploit Framework используется для поиска сетевых уязвимостей и может быть настроен для быстрого заполнения нужных параметров в своих внутренних модулях.

В предыдущем уроке продолжили знакомство с CrackMapExec и научились с помощью его модулей искать уязвимости. В этом уроке познакомимся с инструментом Metasploit Framework (сокр. MSF или Metasploit).

Metasploit - популярная платформа с открытым исходным кодом для поиска и тестирования уязвимостей. Фреймворк написан на языке Ruby.

Базовые понятия и структура

В Metasploit Framework есть возможность хранить результаты тестирования в базе данных PostgreSQL. Об ее инициализации будет позже. Кстати, использовать базу данных необязательно, она не является обязательным условием работы фреймворка, а лишь упрощает работу с ним.

Модули Metasploit делятся на несколько типов:

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

Так же познакомимся с основными командами, которыми мы будем пользоваться в Metasploit:

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

Более подробно о командах можно почитать здесь: Msfconsole Commands

Начальная настройка Metasploit Framework и базы данных

Несмотря на наличие графического интерфейса, мы будет использовать Metasploit через консоль. Получив навыки работы с консолью, вы без труда разберётесь с графическим интерфейсом.

Для начала нам нужно настроить базу данных. Проверим, включена ли служба PostgreSQL:

systemctl status postgresql

Включим ее:

sudo systemctl enable --now postgresql

Теперь проверим базу данных Metasploit:

sudo msfdb status

В последней строке указано отсутствие конфигурационного файла. Инициализируем базу данных:

sudo msfdb init

И еще раз проверим ее статус:

Первоначальную настройку базы данных выполнили, можем запускать Metasploit Framework:

msfconsole

Проверяем, подключился ли фреймворк к базе данных:

db_status

Переходим к настройке рабочего пространства.

Настройка рабочего пространства (workspace) в Metasploit

Не очень удобно, когда все результаты хранятся в одном месте. Чтобы отделить один проект от другого, необходимо создать рабочее пространство. Выведем существующие:

workspace

Звездочка указывает на выбранное рабочее пространство. Создадим новое с именем goad:

workspace -a goad

Рабочее пространство goad уже выбрано. Если необходимо выбрать другое рабочее пространство, выполните команду workspace:

workspace <имя_workspace>

Знакомимся со встроенной в Metasploit утилитой Nmap

С многофункциональным сканером Nmap мы встречались несколько раз: искали активные хосты, службы и сканировали хосты на наличие уязвимостей. Точно так же можно использовать Nmap в Metasploit. Все результаты сканирования будут сохранены в базе данных, которую мы инициализировали ранее. Это очень удобно. Вместо nmap используем db_nmap:

db_nmap -PN -sC -sV 192.168.56.10,11,12,22,23

Точно такой же вывод:

Далее разберемся, где и как смотреть сохраненные результаты.

Работа с базой данных Metasploit Framework

База данных Metasploit DB хранит информацию о целях сканирования, обнаруженных службах, найденных уязвимостях, собранных учетных данных и других данных, полученных во время тестирования. С командами db_status, workspace и db_nmap познакомились, теперь научимся просматривать собранные данные, а немного позже их использовать для быстрого заполнения требуемых параметров в модулях.

Просмотр собранной информации о целях сканирования выполняется командой hosts:

hosts

С помощью команды services можно получить информацию об активных сервисах, связанных с целями сканирования:

services

Команда vulns выведет список обнаруженных уязвимостей:

vulns

Команда creds выведет собранные во время тестирования учетные данные:

creds

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

Поиск сетевых уязвимостей с помощью Metasploit Framework

Теперь попробуем запустить модуль для получения информации об удаленном SMB сервере и поддерживаемых версиях (если поддерживается первая версия SMB, то мы можем получить информацию об операционной системе хоста). Так же определим подписывается ли SMB. Подключим модуль auxiliary/scanner/smb/smb_version:

use auxiliary/scanner/smb/smb_version

Далее введем команду options, чтобы узнать обязательные параметры (в колонке Required написано yes).

Параметр RHOSTS обязательный. В описании написано предназначение параметра. Как правило, во всех модулях они выполняют одинаковые функции. RHOSTS - список целевых хостов.

Мы можем указать список хостов вручную, используя команду set:

set RHOSTS 192.168.56.10 192.168.56.11 192.168.56.12 192.168.56.22 192.168.56.23

Постоянно вводить параметры вручную быстро надоест, поэтому научимся использовать возможности Metasploit для быстрого заполнения нужных полей:

services -R

Теперь запустим сканер:

run

В результатах работы на первый взгляд сложно что-то разобрать. Мы сейчас и не будем этим заниматься. Введем еще раз команду vulns:

vulns

Ранее таблица была пустой, но после сканирования модулем auxiliary/scanner/smb/smb_version были найдены уязвимости и добавлены в базу данных Metasploit DB. Найденная нами уязвимость SMB Signing Is Not Required на самом деле таковой не является. В дальнейшем мы научимся злоупотреблять этим мисконфигом в Relay-атаках, но пока не будем забегать вперед.

Кстати, ранее мы уже определили отсутствие подписи SMB у двух хостов с помощью CrackMapExec:

crackmapexec smb 192.168.56.0-23

Поиск модулей в Metasploit

Для поиска модулей используется команда search:

search smb

Чтобы сузить поиск, например, только проверенные модули, указываем дополнительно <поле>:<значение>:

search check:yes smb

Далее можно использовать модуль двумя способами. Либо полностью указать его имя:

use exploit/windows/smb/ms17_010_eternalblue

Либо указать порядковый номер из первого столбца:

use 7

Думаю, этого достаточно для первого знакомства с Metasploit Framework. Мы настроили базу данных, научились создавать рабочие пространства для разделения проектов, использовать db_nmap, просматривать собранные данные в базе данных и использовать встроенные модули для поиска сетевых уязвимостей.

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

📝

Переходите к следующему уроку курса, а так же не забудьте посмотреть новый материал на Codebra по тегам Пентест и Active Directory.