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

Metasploit Framework — самый масштабный и распиаренный из всех фреймворков для эксплуатации и постэксплуатации. Даже если ты не используешь его сам, то наверняка встречал немало упоминаний MSF в наших статьях. Однако вводной статьи по нему в «Хакере» не было, а если и была, то так давно, что не считается. Я попробую начать с самого начала, а заодно расскажу, как именно этот фреймворк использует моя команда, и дам разные практические советы.

WARNING

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

Установка Metasploit Framework

В дистрибутивах, предназначенных для тестирования на проникновение (к примеру, Kali или Parrot OS), этот продукт либо предустановлен, либо легко устанавливается следующей командой:

apt install metasploit-framework

Если же ты хочешь использовать Metasploit Framework, например, в Ubuntu, то его можно установить из официального репозитория. Для этого набери в консоли следующие директивы:

curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
sudo chmod 755 msfinstall
sudo ./msfinstall

База данных Metasploit

Довольно часто пользователям Metasploit приходится ломать сети, содержащие очень много хостов. И наступает момент, когда аккумулирование всей полученной информации занимает непозволительно долгое время. Именно тогда начинаешь ценить возможность работы Metasploit Framework с СУБД PostgreSQL. Metasploit может сам сохранять и удобно формализовать полученную информацию благодаря модулю msfdb. Для работы с базами необходимо запустить службу postgresql и создать базу для Metasploit.

service postgresql start
msfdb init
Сообщение msfdb об успешном создании базы данных

Проверить подключение к базе данных можно из самого фреймворка, выполнив команду db_status.

Успешное подключение к базе данных Metasploit

Чтобы было удобней работать с различными областями (хостами, сетями или доменами) и разделять данные для структуризации, msfdb имеет поддержку так называемого рабочего пространства. Давай добавим новое пространство в наш проект.

> workspace -a xakep
Создание нового рабочего пространства

Теперь мы действуем в созданном рабочем пространстве. Представим, что мы находимся в сети 192.168.6.0.24. Давай поищем в ней доступные хосты. Для этого будем использовать Nmap, но из Metasploit и с привязкой к текущей базе данных — db_nmap.

> db_nmap -O 192.168.6.0/24

Сам вывод Nmap нам неинтересен: все, что нужно, будет сохранено в базе данных. К примеру, у нас есть уже все просканированные хосты и мы можем их просмотреть одним списком с помощью команды hosts.

Список просканированных хостов, сохраненный в базе данных

Но заодно с хостами были сохранены и все службы, список которых у нас теперь также всегда будет под рукой. При этом мы можем посмотреть как вообще все службы на портах, так и список служб для определенного хоста.

Список всех найденных служб
Список найденных на определенном хосте служб

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

> search type auxiliary/scanner -S "_login"
Модули для брутфорса учетных данных некоторых служб

Обрати внимание на SMB. Чтобы узнать, для чего именно предназначен определенный модуль и его описание (со ссылкой на cvedetails), а также посмотреть данные, которые нужно передать в качестве параметров, следует воспользоваться командой info.

info auxiliary/scanner/smb/smb_login
Описание модуля smb_login

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

msf5 > use auxiliary/scanner/smb/smb_login
msf5 auxiliary(scanner/smb/smb_login) > set RHOSTS 192.168.6.129
msf5 auxiliary(scanner/smb/smb_login) > set SMBUser root
msf5 auxiliary(scanner/smb/smb_login) > set PASS_FILE /home/ralf/tmp/pass.txt
msf5 auxiliary(scanner/smb/smb_login) > set SMBDomain DOMAIN
msf5 auxiliary(scanner/smb/smb_login) > run
Настройка модуля smb_login
Обнаруженный smb_login пароль для целевого пользователя

Если найденный пользователь — администратор, Metasploit сообщит нам об этом, что очень удобно. Но ведь в нашей сети может быть 100 машин и даже больше, а на них наверняка запущено множество служб. Как правило, удается собрать много учетных данных, используя только модули брутфорса. Использование msfdb позволяет не тратить время на коллекционирование всех обнаруженных логинов, хешей, паролей, так как они автоматически остаются в хранилище учетных данных, посмотреть которое можно командой creds.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Комментарии (4)

  • Что-то у меня db_nmap -O 192.168.6.0/24 не сработал. Всё без ошибок, но hosts пуст
    Зато получилось импортировать в базу

    $ cd $(mktemp -d); nmap -T5 192.168.1.0/24 -oX foo 2>&1 1>/dev/null; ls $(pwd)/foo
    /tmp/tmp.CIPj4nZZwR/foo

    и

    msf5 > db_import /tmp/tmp.CIPj4nZZwR/foo
    [*] Successfully imported /tmp/tmp.CIPj4nZZwR/foo

    Тогда hosts выводит что-надо

    • db_nmap -O не будет работать, если метасплоит запущен не под рутовой учеткой, из-за флага -O. Тогда сам nmap возвращает ошибку, что требуются рутовые привилегии для такого сканирования. Использование флагов, не требующих рутовых привилегий, проблем не вызывает.
      Под рутовой учеткой все отрабатывает прекрасно, но я предпочитаю sudo.

  • Empire был, Metasploit был, жду статью про обход АВ с использованием этих инструментов

Похожие материалы