В первой части этой серии статей мы обсуждали, что создание эксплойта это все еще трудоемкий и отнимающий много времени процесс. Мы обсуждали общие проблемы, появляющиеся в процессе разработки эксплойта и то, как Metasploit Framework может решить некоторые из них. Эта статья начнется с краткого введения в интерфейс консоли и расскажет о том, как выбирать и использовать модули эксплойтов. Также мы опишем среду разработки, ее возможности и принципы работы.
В первой части этой серии статей мы обсуждали, что создание эксплойта это все еще трудоемкий и отнимающий много времени процесс. Мы обсуждали общие проблемы, появляющиеся в процессе разработки эксплойта и то, как Metasploit Framework может решить некоторые из них. Эта статья начнется с краткого введения в интерфейс консоли и расскажет о том, как выбирать и использовать модули эксплойтов. Также мы опишем среду разработки, ее возможности и принципы работы.
Установленный MSF имеет три рабочих окружения, msfconsole, интерфейс msfcli и интерфейс msfweb. Однако, основная (и предпочтительная) рабочая среда MSF это msfconsole. Это эффективный интерфейс командной строки, имеющий собственное программное окружение и систему команд. Несмотря на то, что Framework был разработан для Unix-подобный систем, типа Linux или BSD, он также будет работать под Windows через среду Cygwin. Windows инсталлятор с сайта metasploit.com включает в себя сконфигурированную урезанную версию Cygwin.
Во время инициализации msfconsole выполняются стандартные проверки. Если все пройдет нормально, мы увидим то, что показано на Рисунке 1.
Инстинктивно, введя команду help, можно увидеть список доступных команд, как это показано на Рисунке 2.
Команда show exploits показывает список доступных в данный момент эксплойтов. Здесь есть удаленные эксплойты для различных платформ и приложений, таких как Windows, Linux, IIS, Apache и т.д., которые помогают тестировать MSF и понять принципы его работы. Это показано на Рисунке 3 ниже.
Как вы могли заметить, установка Metasploit Framework 2.0 по умолчанию содержит 18 эксплойтов и 27 шелкодов, которые являются весьма внушительным запасом.
Чтобы просмотреть список представленных шелкодов, выполните команду show payloads. Шелкоды качественные, эффективные и очень хорошо написанные. Эти шелкоды выполняют множество задач, например, привязка командной оболочки к прослушиваемому порту, добавление новых учетных записей, загрузка и исполнение выбранной вами программы. MSF также имеет поддержку динамического создания шелкода, используя библиотеку InlineEgg, как это показано на рисунке 4.
Теперь мы опишем процедуру выбора и выполнения определенного эксплойта. Команды use имя_эксплойта активизирует среду для использования эксплойта имя_эксплойта.
Если вы выберете Microsoft RPC DCOM MSO3-026 эксплойт, используя имя msrpc_dcom_ms03_026, вы можете заметить, что приглашение командной строки изменится с msf > на msf msrpc_dcom_ms03_026 >. Это уведомление о том, что мы работаем во временном окружении этого эксплойта. Команда show может использоваться для просмотра информации о текущем эксплойте. Команды show options покажет различные параметры, которые обязательны для использования эксплойта, как показано на Рисунке 7.
Команда show payloads покажет все шелкоды совместимые с выбранным эксплойтом. MSF предотвращает вас от использования шелкода, неподходящего для данного эксплойта.
Мы должны установить все опции, помеченные как 'required', перед тем как использовать эксплойт. Для этого эксплойта есть только одна опция цели, поэтому мы установим переменную TARGET в 0, командой set TARGET 0. Многие эксплойты сами выберут подходящую цель для вас. Теперь установим IP адрес цели командой set RHOST 192.168.0.27.Затем нам нужно установить шелкод для эксплойта. Мы присваиваем значение winbind переменной PAYLOAD, используя команду set PAYLOAD winbind. Имена шелкодов могут изменяться в разных версиях MSF, поэтому всегда после обновления проверяйте вывод команды show payloads. Этот шелкод заставит сервер прослушивать определенный порт и создавать командную оболочку при соединении. Это показывает гибкость расширяемости набора эксплойтов MSF. Каждый отдельный эксплойт, включенный в MSF, позволяет выбирать и использовать произвольные шелкоды, даже те, которые вы разработали самостоятельно. Обратите внимание на изменение приглашения командной строки после выбора шелкода с msf msrpc_dcom_ms03_026 > на msf msrpc_dcom_ms03_026(winbind) >. Теперь мы используем команду show options, чтобы проверить, какие опции установлены, а какие еще необходимо установить. Как мы видим, нам все еще нужно установить значение переменной LPORT, как показано на Рисунке 8. Мы установим его, используя команду set LPORT 1536.
Переменная EXITFUNC доступна почти для всех Windows шелкодов. Эта переменная определяет как шелкод "подчистит" после себя, как только выполнит свою задачу. Довольно много уязвимостей могут быть эксплойтированы неоднократно, просто используя разные значения для EXITFUNC. К счастью, вы редко должны задумываться над этим, так как многие эксплойты автоматически выбирают наилучшее для вас значение. Если вы не знаете, что делаете, это значение не нужно устанавливать. Установка неправильного значения может нанести ущерб эксплойтируемой системе.
Многие эксплойты и шелкоды имеют дополнительный набор опций, названный расширенными опциями. Они могут быть отображены с помощью команды show advanced. Расширенные опции могут выполнять такие задачи, как модификация эксплойта с целью обмана сигнатур IDS, изменение настроек перебора или точное указание адреса возврата, который нужно использовать.Теперь все готово и все переменные установлены. Сделаем заключительную проверку эксплойта командой show options и убедимся, что мы готовы двигаться дальше.
Все выглядит отлично. Время начинать!Команда exploit начинает атаку, независимо оттого, что нужно сделать для выполнения шелкода на удаленной системе.
Команда check может быть использована для проверки, действительно ли целевая система уязвима для атаки. Такая возможность доступна не с каждым эксплойтом, но может быть полезна для определения, пропатчена ли система, перед попыткой ее атаки.Добавить новый эксплойт в MSF очень просто. MSF-совместимый удаленный эксплойт для переполнения буфера в IIS 5.x SSL PCT был публично выпущен 24/04/2004 (http://www.k-otik.com/exploits/04242004.iis5x_ssl_pct.pm.php). Для примера мы добавим этот эксплойт в нашу базу MSF.
После загрузки эксплойта, пользователь должен обратить внимание на имя Perl модуля эксплойта. Имя файла должно быть таким же, как и имя пакета, другими словами Msf::Exploit::iis5x_ssl_pct должен быть сохранен как iis5x_ssl_pct.pm. Теперь скопируйте модуль в директорию эксплойтов (если вы используете Windows это /home/framework-2.0/exploits). Как только файл скопирован, он готов к использованию и вам даже не нужно перезапускать консоль. Используйте команду show exploits, что убедиться, что модуль был загружен правильно.msf > show exploits Metasploit Framework Loaded Exploits ==================================== apache_chunked_win32 Apache Win32 Chunked Encoding exchange2000_xexch50 Exchange 2000 MS03-46 Heap Overflow ia_webmail IA WebMail 3.x Buffer Overflow iis50_nsiislog_post IIS 5.0 nsiislog.dll POST Overflow iis50_printer_overflow IIS 5.0 Printer Buffer Overflow iis50_webdav_ntdll IIS 5.0 WebDAV ntdll.dll Overflow iis5x_ssl_pct IIS 5.x SSL PCT Overflow imail_ldap IMail LDAP Service Buffer Overflow msrpc_dcom_ms03_026 Microsoft RPC DCOM MSO3-026 mssql2000_resolution MSSQL 2000 Resolution Overflow poptop_negative_read PoPToP Negative Read Overflow ...Эксплойт был успешно добавлен в список. Его можно запустить, так же как и любой другой эксплойт в MSF. Версия MSF 2.2 позволяет пользователям иметь собственные директории для эксплойтов, шелкодов, кодеров и nop'ов. Новый эксплойт может быть установлен для всей системы или для определенного пользователя.
Ниже, на Рисунке 9, показано, как мы устанавливаем значение переменных LHOST, LPORT и PAYLOAD глобального окружения и сохраняем изменения с помощью команды save.
Различные настройки таймаута и прокси могут быть изменены установкой следующих переменных окружения.
Msf::Socket::Proxies (глобальное имя) или Proxies (временное имя): Эта переменная может использоваться для установки настроек прокси (SOCKS4 и HTTP) для сетевого соединения. Поддерживаются цепочки прокси, которые должны быть указаны в формате тип:хост:порт и разделены запятыми для каждого прокси сервера.
Msf::Socket::RecvTimeout (глобальное имя) или RecvTimeout (временное имя): Задает максимальное число секунд чтения данных из сокета.Msf::Socket::ConnectTimeout (глобальное имя) или ConnectTimeout (временное имя): Задает таймаут сокета при установке соединения (по умолчанию 10 секунд).
Msf::Socket::RecvTimeoutLoop (глобальное имя) или RecvTimeoutLoop (временное имя): Устанавливает максимальное время (в секундах) ожидания подключения, прежде чем сокет будет закрыт. Эта значение восстанавливается после каждого приема данных.Переменная RandomNops указывает модулю генерации nop'ов использовать случайные последовательности nop-подобных команд вместо стандартного опкода nop. Это также может использовать для обмана сигнатур IDS. Версия 2.2 включает поддержку нового случайного генератора nop'ов, в котором для каждого эксплойта можно указать регистры, которые не должны быть изменены nop-подобными опкодами.
Эта статья приближается к третьей и заключительной части, в которой будут описаны другие пользовательские интерфейсы, вспомогательные утилиты из дистрибутива MSF, и даны некоторые рекомендации по разработке ваших собственных эксплойтов. Мы обсудим будущее развитие MSF, новые возможности, которые будут добавлены в среду разработки.
Спойлер: она начинается с подписки на наш канал