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

Вчера был какой-то теоретический день. Может быть сегодня будет больше практики. Переходим к разделу «STORE INFORMATION IN A DATABASE USING METASPLOIT» (Хранение информации в базе данных с использованием Metasploit).

База данных, которая используются в Metasploit помогает отследить все события, которые произошли вследствие атаки. Используются PostgreSQL, кстати. Короче, база данных используется по своему назначению. Так, а вот следующий раздел поинтереснее:

Раздел «USING THE DATABASE IN METASPLOIT» (Использование базы данных в Metasploit).

Содержание этого раздела аккумулирует 10 подразделов по работе с БД. Думаю, это не стоит пропускать, так как ранее я уже сталкивался с работой с БД, когда в первый день попытался разобраться с Nessus (как оказалось, зря).

Для начала нужно запустить сервер postgresql:

root@kali:~# systemctl start postgresql

После необходимо создать и инициализировать базу данных msf.

root@kali:~# msfdb init

На самом деле, она сама устанавливается и инициализируется. Теперь можно войти в msfconsole и проверить ее статус:

msf6 > db_status

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

Далее предлагается изменить текущее «рабочее место». У меня только одно. Пришлось немного пролистать, чтобы понять, как добавить новые разделы. Для этого используются ключи -a и -d (созвучные с действиями). Далее, чтобы выбрать нужные раздел, необходимо написать «workspace раздел». Хелп, по стандарту вызывается ключом -h.

Существует несколько команд, начинающихся с db_. Далее речь о них. Сканировать host можно прямо из msfconsole. Для чего есть команда db_nmap. После своего выполнения, данные будут сохранены в рабочей области.

msf6 > db_nmap -A 192.168.56.104
msf6 > hosts

Так же можно экспортировать данные (которые получили после сканирования, например) при помощи команды db_export и ключа -f. Второй параметр формат, третий путь:

msf6 > db_export -f xml /root/msfu/export.xml

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

Попробуем вывести данные в виде имени хоста и операционной системы. Используем ключ -c:

msf6 > hosts -c address,os_flavor

Если добавить ключ -S, то можно искать что-то более конкретное:

msf6 > hosts -c address,os_flavor -S 104

В моем случае только один ip адрес просканирован, и только он есть в базе. Заюзаем вспомогательный сканер, чтобы попробовать передать данные из базы данных в него.

msf6 > use auxiliary/scanner/portscan/tcp

Используем команду hosts с ключом -R, чтобы передать данные в RHOSTS:

msf6 auxiliary(scanner/portscan/tcp) > hosts -R

Если ввести команду show options, то видно, как RHOSTS изменился на нужный. hosts использовал без дополнительных ключей, так как у меня всего один просканированный хост. Очень полезная информация. Теперь можно меньше писать команд. Если у меня было бы сохранено множество хостов, то команда выше добавила их все в RHOSTS и после запуска сканера, они были бы просканированы все.

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

msf6 > services -c name,port,info 192.168.56.104

Очень много вариантов для поиска, лучше это смотреть на сайте. Результаты команд hosts и services можно сохранить в файл CSV, например. Для этого есть ключ -o, после которого указывается путь:

msf6 > services -c name,port,info 192.168.56.104 -o /root/msfu/export_serv.csv

Далее рассмотрим команду creds. Он вернет все найденные учетные данные в целевых машинах. В первый день я использовал уязвимость в SMB, после чего сохранилась учетная запись. Заюзаем scanner/mysql/mysql_login:

msf6 > use auxiliary/scanner/mysql/mysql_login

Этот модуль просто запрашивает экземпляр MySQL для определенного user/pass. Так как Metasploitable 3 предназначена для обучения, то имя пользователя используется по умолчанию – root. После запуска сканнера при помощи команды run, в credit появилось новое поле с логин/пароль для MySQL.

Можно добавить учетные записи вручную. Для чего используется ключ -a в следующем формате:

creds -a ХОСТ -p ПОРТ -u ЛОГИН -P ПАРОЛЬ

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

Все понял, аналогия с хранением паролей в базе данных (на сайте, например).  Долго не получалось запустить эксплойт. Пришлось использовать сканер smb_version, который определяет версию SMB. Она оказалась второй, а эксплойт, как я понимаю с определенной третьей версией работает. Надеюсь, я все правильно понял. Надо будет вернуться к этому вопросу позднее.

msf6 > use auxiliary/scanner/smb/smb_version

Далее попробовал запустит эксплойт exploit/windows/smb/psexec, но ничего не вышло. Как потом понял (после того как вывел фоновые процессы командой jobs), висел какой-то процесс, работающий с 4444 портом (ранее что-то пытался запустить, а он так и завис в фоне). Урок на будущее: необходимо проверять незавершенные фоновые процессы.

Раздел «ABOUT THE METASPLOIT METERPRETER» (Что такое METERPRETER)

С этим я разбирался вчера. Сейчас будет видимо подробнее. Meterpreter – это динамически расширяемая полезная нагрузка, которая использует промежуточные этапы внедрения DLL в память и расширяется по сети во время выполнения.

Как работает Meterpreter? Stager (третий тип полезной нагрузки, день 2) загружает DLL с префиксом Reflective. Далее устанавливается канал через протокол TLS/1.0. Metasploit получает ответ и настраивает клиент. Далее Meterpreter загружает расширения. Мало что понятно.

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

Раздел «METERPRETER BASIC COMMANDS» (Основные команды Meterpreter)

Здесь написано о том, что Meterpreter является новой (сторонней) средой, для работы с которой следует изучить основные команды. Так же обещают на протяжении курса (о, это курс оказывается) рассмотреть все доступные команды. Далее написано что-то типа: «Для тех, кто в танке, экспериментирование является ключом к успешному обучению» – не поспоришь.

Снова использовал эксплойт exploit/windows/smb/psexec. Чтобы скрыть сессию, необходимо использовать команду background. Чтобы просмотреть открытые сессии, следует ввести команду sessions. Чтобы вернуть управление: sessions -i 1, где 1 – это номер сессии.

Команда cat аналогична своему прототипу из nix систем. Команда cd для перемещения и pwd для определения текущего каталога.

Интересная команда без аргументов clearev, которая очищает журналы приложений, системы и безопасности в системе Windows. И правда, все очистила.

При помощи команды download можно скачать нужные файлы с целевой машины. А при помощи команды edit можно открыть любой файл в редакторе vim.

Следующая интересная команда позволяет запускать исполняемое приложение, например, калькулятор:

meterpreter > execute -f  calc.exe

Он запускается в фоне и его найти можно в процессах (calc.exe *32). Если добавить ключ -i, то можно взаимодействовать с процессом, после его создания.

Команда getuid отобразит пользователя, на котором работает сервер Meterpreter.

А вот и hashdump, который у меня не получился в разделе про базу данных.

meterpreter > run post/windows/gather/hashdump

Пока гуглил что именно делает этот модуль, натолкнулся на сайт infosecmatter.com. Там много полезной информации. Если кратко, то модуль, который представлен выше, выгружает локальные учетные записи пользователей из базы данных SAM, используя реестр. SAM – диспетчер учетных записей безопасности, т.е. RPC-сервер Windows, оперирующий базой данных учетных записей (цитата из Википедии).

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

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

Далее, команда ipconfig отображает сетевые интерфейсы и адреса на удаленной машине.

Команды lpwd и lcd аналогичны pwd и cd. Но это не точно. Так же есть команда ls.

А вот и способ перемещаться между процессами – модуль migrate:

meterpreter > run post/windows/manage/migrate

Наш сервер будет запускаться в рандомном (наверное) рабочем процессе. Попробовал несколько раз запустить модуль. Сервер открылся сначала в powershell.exe, потом в notepad.exe. Интересно, как это реализовано. Да, кстати, если завершить процесс, на котором запущен сервер Meterpreter, то он сбежать не успеет и сессия оборвется.

Команда ps отображает список запущенные процессов на целевом устройстве.

Команда resource предназначена для построчного выполнения команд, написанных в файле. Короче, для автоматизации.

Команда search говорит сама за себя.

Команда shell предоставляет стандартную оболочку целевой системы.

Команда upload позволяет загрузить файлы на целевую машину.

Команда webcam_list отобразит все доступные веб-камеры на целевом хосте. А при помощи команды webcam_snap можно сделать скриншот, который будет сохранен в активном рабочем каталоге с произвольным именем.

На этом на сегодня хватит. Сегодня получился продуктивный день. Разобрался (но не полностью) с базой данных, а именно с сохранением и обработкой наработанной информации. А самое главное, удалось попрактиковаться с нагрузкой Meterpreter. Даже в такой небольшой статье ощутил ее мощь.

Завтра продолжу работать с Meterpreter.

Ссылки дня:

  1. Про модуль hashdump: https://www.infosecmatter.com/metasploit-module-library/?mm=post/windows/gather/hashdump
  2. Про SAM: https://ru.wikipedia.org/wiki/Security_Account_Manager
Просмотров: 34
12.03.2022
Автор