>
Сентябрь 2017
Пн Вт Ср Чт Пт Сб Вс
« Авг    
 123
45678910
11121314151617
18192021222324
252627282930  

Metasploit Penetration Testing. часть 4

Предлагаю вам перевод четвертой части книги “Metasploit Penetration Testing Cookbook“. Не забудьте прочитать: часть 1,часть 2,часть 3

Глава 7. Работа с модулями

В этой главе изучим следующее:

  • Работа со вспомогательными скан-модулями
  • Работа со вспомогательными админ-модулями
  • SQL injection и DOS модули
  • Пост-эксплуатационные модули
  • Основы создания модулей
  • Анализ модулей
  • Создание пост-эксплуатационного модуля

Введение

В первой главе мы говорили про основы Metasploit. Мы начали с того, что он имеет модульную архитектуру. Это значит, что все exploits, payloads, encoders и т.д. присутствуют в виде модулей. Модульная архитектура позволяет легко расширить функциональность фреймворка. Любой программист может разработать свой собственный модуль и легко включить его в Metasploit framework. Процесс тестирования на проникновение может включать в себя несколько модулей при эксплуатации системы. Например, мы начинаем с эксплуатационного модуля, потом начинаем использовать модуль полезной нагрузки (payload), потом можем использовать несколько пост-эксплуатационных модулей. Наконец, можем воспользоваться различными модулями для подключения к БД, чтобы сохранить наши выводы и результаты.

В этой главе особое внимание уделяется каталогу /pentest/exploits/framework3/modules, который содержит полный перечень полезных модулей, которые помогут нам в тестировании на проникновение.

Работа со вспомогательными скан-модулями

Давайте начнем с модулей сканирования. Мы уже подробно изучили сканирование, когда говорили про nmap. В этом рецепте проанализируем некоторые готовые модули, которые поставляются с Metasploit. Хотя nmap представляет из себя мощный инструмент сканирования, существуют ситуации в которых необходим особый тип сканирования, например сканирование на наличие БД MySQL. Чтобы найти список доступных сканеров, мы должны перейти в /pentest/exploits/framework3/modules/auxiliary/scanner. Давайте начнем с основного HTTP сканера.

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

Команда show options, покажет доступные опции, которые можно включить в модуле.

Давайте рассмотрим конкретный пример. Модуль mysql_login, который сканирует цель на наличие MySQL сервера и если находит, пытается выйти в БД используя грубую силу для атаки:

Как видите, модуль содержит много параметров. Можно указать файлы с именами пользователей и паролей. Давайте так и сделаем:

Теперь мы готовы использовать брут. Осталось указать цель и запустить модуль:

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

Работа со вспомогательными админ-модулями

Изучим несколько admin-модулей. Модули могут служить различным целям, например поиск админ-панели или проверка на дефолтные логин/пароль. Все это зависит от функциональных возможностей. Рассмотримmysql_enum:

Как видите, модуль принимает параметры логин, пароль и RHOST. Его можно использовать для поиска БД MySQL, а также для брута. Проанализируем выполнение команды:

Модуль возвращает много полезной информации. Он говорит нам, что cmdshell и удаленный доступ были включены на целевой MySQL. Он также возвращает имя БД, которая запущенна как процесс на целевой машине.

Существует несколько подобных модулей для других служб, таких как MSSQL и Apache. Принцип работы у всех одинаковый. Не забудьте использовать команду show options для того, чтобы убедиться, что вы передаете необходимые параметры.

SQL injection и DOS модули

Модуль SQL injection использует известные уязвимости, введите ее использования и предоставления несанкционированного доступа. Уязвимость, как известно, влияет на Oracle 9i и 10g. Metasploit содержит несколько модулей, использующих известные уязвимости в Oracle. Модули можно найти вmodules/auxiliary/sqli/oracle.

Проанализируем oracle уязвимость Oracle DBMS_METADATA XML. Эта уязвимость будет производить эскалацию привилегий с DB_USER до DB_ADMINISTRATOR (Администратор БД). Будем использовать модуль dbms_metadata_get_xml:

База данных сначала проверяет вход в систему, используя учетные данные по умолчанию «scott» и «tiger». Когда модуль получает вход в качестве пользователя базы данных, затем он выполняет вредоносный код для эскалации привилегий до администратора базы данных.

Следующий модуль, который расмотрим, связан с атакой отказ в обслуживании (DOS). Мы будем анализировать простую уязвимостиь IIS 6.0, которая позволяет злоумышленнику уронить (crash) сервер путем отправки POST запроса, содержащий более чем 40000 параметров запроса (request parameters). Этот модуль был протестирован на непропатченной Windows 2003 сервере под управлением IIS 6.0. В качестве модуля будем использовать ms10_065_ii6_asp_dos:

После команды run, модуль начнет атаковать целевой сервер IIS, отправив HTTP запрос на 80 порт с URI в виде page.asp. Успешное выполнение модуля будет приводить к полному отказу в обслуживании сервера IIS.

Базы данных oracle уязвимость эксплуатируется с помощью инъекций пользовательскую функцию PL/SQL, который выполняется в SYS контексте, и это возвышает привилегии пользователя «scott» в качестве администратора.
Давайте посмотрим на две уязвимости. Oracle базы данных уязвимости путем Уязвимость выполняется путем инъекций пользовательской функции PL/SQL, которая выполняется в контексте SYS и повышает права пользователя «scott» до администратора.
Пример функции:

Функция приведет к эскалации привилегий пользователя «scott».

В предыдущих строках кода объясняется процесс инъекции. Детальный анализ уязвимости в программном обеспечении Oracle выходит за рамки книги/перевода.

Сейчас идет DOS-атаку модуль, который использует уязвимость в IIS 6.0 сервер. Злоумышленник отправляет POST-запрос, который включает в себя более 40000 параметров запроса, и отправляется в форме application/x-www-form-urlencoded, тип кодировки. Вот часть сценария, который служит модуль:

Теперь рассмотрим модуль для DOS атаки, который эксплуатирует уязвимость в сервере IIS 6.0. Злоумышленник отправляет POST-запрос, который включает более чем 40000 параметров запроса (request parameters) и отправляет в виде application/x-www-form-urlencoded, тип кодировки.

Как видите, скрипт генерирует размер полезной нагрузки более чем 40000. Затем устанавливается соединение на порт 80, для отправки HTTP-запроса на сервер IIS. После того, как запрос был передан на сервер, он рухнет и перестанет работать.

Пост-эксплуатационные модули

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

Пост-модули — коллекция наиболее интересных и удобных функций, которые вы можете использовать во время тестирования на проникновение. Давайте быстро проанализируем некоторые из них. Будем использовать не пропаченую Windows 7 с активной meterpreter сессией.

Давайте начнем с простого enum_logged_on_users модуля. Он показывает список пользователей, вошедших в систему Windows.

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

Возьмем еще один пример. Есть интересный пост-модуль, который делает скриншот экрана на целевой машине.

Можете проанализировать сценарии enum_logged_on_user.rb и screen_spy.rb вmodules/post/windows/gather. Они помогут получить представление о том, как эти модули работают.

Основы создания модулей

Чтобы начать создание собственного модуля нам понадобятся базовые знания о Ruby. Мы уже обсуждали использование и реализацию Ruby в meterpreter скриптинге.
Начнем с основ. Для того, чтобы модуль был читаем для Metasploit, нужно импортировать MSF библиотеки:
require ‘msf/core’

Эта строка указывает, что модуль будет включать все зависимости и функции Metasploit framework.
class Metasploit3 < Msf::Auxiliary
Эта строка определяет класс, который наследует свойства вспомогательной семьи (auxiliary family). Вспомогательный модуль может импортировать несколько функции, такие как сканирование, открытие соединения, использование БД и так далее:

Оператор include используется для включения конкретной функциональности фреймворка в модуль. Например, если строим модуль сканера, тогда можно включить его как:

Эта линия будет включать в себя функциональность удаленного TCP-сканирования.

Cтроки сценария дают нам сведения о модуле, его название, версия, автор, описание и т.д.

 

Анализ модулей

Сейчас будем анализировать ftp-модуль. Мы уже обсуждали базовый шаблон модуля в предыдущем рецепте поэтому здесь будем исходить из основной части скрипта.
Для анализа возьмем модуль анонимного ftp доступа. Основной сценарий находтится по следующему адресу:pentest/exploits/framework3/modules/auxiliary/scanner/ftp/anonymous.rb
Полный скрипт для справки:

Проанализируем, как работает скрипт:

Эта функция используется, чтобы начать подключение. Переменная res содержит логическое значение trueили false. Функция connect_login установлевает соединение с удаленным хостом.

Как только соединение будет установлено, модуль пытается проверить, имеет ли анонимный пользователь права на чтение/запись или нет. write_check проверяет, возможна ли операция записи или нет. Затем проверяется, является ли операция успешна или нет. В зависимости от статуса привилегий, печатается сообщение на экране. Если операция записи «провалилась», то статус печатается как ro или только для чтения (read-only):

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

Создание пост-эксплуатационного модуля

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

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

Сначала импортируем фреймворк библиотеки и включим требуемые зависимости:

Сценарий начинается с включая библиотек ядра Metasploit. Затем мы создаем класс, который расширяет свойства модулей Msf::Post.

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

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

Здесь следует отметить то, что мы включили “rex“, а также библиотеки «реестра».

Теперь нашим следующим шагом будет создать таблицу, которая может отображать наш извлеченный результат. У нас есть специальная библиотека Rex::Ui::Text, которая может использоваться для выполнения этой задачи.

Тело скрипта начинается с построения таблицы и различных имен столбцов. Затем создается отдельный массив в реестре, который будет использоваться для перечисления списка приложений. Массив будет состоять из различных строк реестра, которые содержат информацию об установленных приложениях на целевом компьютере. Данные приложения хранятся в отдельном массиве, названный как apps.

Итак, мы начинаем обрабатывать перечисление запустив цикл, который смотрит в разных местах реестра хранятся в appskey массива. Затем начинается процесс перечисления, запустив цикл, который смотрит в разные локации в реестре и хранится в массиве appskey:

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

Последние несколько строк скрипта используются для хранения информации, в отдельный текстовый файл с именем applications.txt. Файл заполняется с использованием store_loot функция, которая сохраняет полную таблицу в текстовый файл.

Последние несколько строк сценария используются для хранения информации в отдельном текстовом файле с именем applications.txt. Файл заполняется с помощью функции store_loot, которая хранит полную таблицу в текстовом файле.

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

Share Button
[Всего голосов: 0    Средний: 0/5]

Вам может быть интересно также:

Last updated by at .

Leave a Reply

You can use these HTML tags

<a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">