Портирование эксплоитов

Портирование эксплоита в Metasploit Framework

 

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

 

Для начала, нам необходимо выбрать порт эксплоита снова. Мы будем использовать конвертер эксплоита A-PDF WAV в MP3. При портировании эксплоитов, нет необходимости, начинать кодирование с нуля; мы можем просто выбрать уже существующий эксплоит модуль и модифицировать его в соответствии с нашими целями. Поскольку это формат файлов эксплоита, мы будем смотреть под modules/exploits/windows/fileformat/ от главного Metasploit каталога для подходящего кандидата. Этот эксплоит перезаписывает SEH таким образом, мы должны обнаружить эксплоит модуль, который использует mixin Msf::Exploit::Remote::Seh. Мы можем найти в верхней части эксплоита audiotran_pls.rb как это видно ниже.

Перезаписывание эксплоитом SEH
Dante

 

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

 

Как только мы обнаружим подходящий шаблон для нашего модуля, мы вырезаем все специфичное для существующего модуля и сохраняем в папке ~/.msf4/modules/exploits/windows/fileformat/. Вам возможно потребуется создать дополнительные директории в домашней директории. Обратите внимание, что можно сохранить эксплоит модуль в основном каталоге Metasploit, но это может вызвать проблемы при обновлении framework, если вы в конце подачи модуль должен быть включен в ствол. Вырезку из эксплоит модуля вы можете видеть ниже:

Вырезка модуля экспоит
Dante

 

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

Переполнение буфера
Dante

 

Все объяснения в этой точке, кроме модульной структуры Metasploit, до сих пор не имеют ничего сложного. Продолжая дальше о модуле, мы обеспечим EXITFUNC установленный в ‘SEH‘ и установим ‘DisablePayloadHandler‘ в ‘true’ для того чтобы устранить любые конфликты с обработчиком payload в ожидании shell. Во время изучения публичного эксплоита в обработчике, и вы определили что около 600 байт пространства доступно в shell коде и что \x00 и \x0a плохие символы, которые будет возвращать наш shell код. Поиск плохих символов всегда утомителен, но для обеспечения надежности эксплуатации это является необходимым злом.

 

В разделе цели ‘Targets‘ мы добавляем важные обратные адреса эксплоита pop/pop/retn, длина буфера необходимого для достижения SE обработчика и комментарии о том куда адреса приходят. Так как этот адрес возвращается из бинарного приложения цели ‘Windows Universal‘ в этом случае. Наконец мы добавляем дату открытия эксплоита и убеждаемся что значение ‘DefaultTarget‘ установлено в 0.

Возврат адреса из бинарного приложения
Dante

 

Последняя часть которую необходимо отредактировать, прежде чем переходить к фактической эксплуатации, является раздел ‘register_options‘. В этом случае мы должны сказать Metasploit что по умолчанию имя файла будет для эксплоита. В сетевых эксплоитах мы бы объявили такие вещи по умолчанию как порт для использования.

register options в эксплоите
Dante

 

Окончательным и самым интересным разделом для редактирования является блок ‘exploit‘, где все части собираются вместе. Во-первых, rand_text_alpha_upper(target[‘Offset’]) создаст наш буфер, ведущий к SE обработчику используя случайные прописные буквенные символы, используя длину указанную в блоке модуля ‘Targets‘. Затем generate_seh_record(target.ret) добавляет короткий прыжок и возвращение адреса что мы обычно видим в публичных эксплоитах. В следующей части make_nops(12) достаточно очевидно; Metasploit будет использовать различные инструкции No-Op, чтобы помочь в уклонении IDS/IPS/AV. Наконец payload.encoded добавляет динамически генерируемый shell код к эксплоиту. Сообщение будет выводиться на экран и наш вредоносный файл записывается на диск, поэтому мы можем отправить его к нашей цели.

Отправка вредоносного файла цели
Dante

 

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

Тестирование созданного модуля
Dante

 

До сих пор все кажется работает хорошо. Теперь мы просто должны настроить meterpreter listenter и мы должны иметь нашу жертву, которая откроет наш вредоносный файл в уязвимом приложении.

Использование эксплоита
Dante

 

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

 

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

https://github.com/rapid7/metasploit-framework/blob/master/HACKING

https://github.com/rapid7/metasploit-framework/blob/master/CONTRIBUTING.md

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *