сломал метасплоит :)

сломал метасплоит :)

Введение

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

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

Дисклеймер

Существуют нормативно-правовые акты, запрещающие создание, распространение, копирование и иную активность, связанную с вредоносным ПО с целями получения несанкционированного доступа, и т.д. и т.п. Данный пост нацелен на повышение осведомленности и углубленного понимания принципов работы СЗИ.

0x00> Почему опять метерпретер?

О нём написано очень много постов, гайдов, видеоуроков и статьей, да и я не остался в стороне, и написал про него в предыдущем посте :)

Но вот вопрос, если работа с шеллкодом реверс шелла интуитивно понятна, то как, вместо него, таким же способом (копируют код на место NOP-инструкций в exe файле) создают нагрузки метерпретера? Это же не позиционно независимый машинный ассемблерный код, а целая DLL-библиотека.

Может я, конечно, плохо искал, но не нашел про это ни постов, ни статей, ни видеоуроков, только общее описание в официальной доке. Во всех остальных гайдах с ним работают, как с некой абстракцией, пишут свои “надстройки” — лоадеры, пакеры и энкодеры над нагрузкой, сгенерированной через msfvenom, не углубляясь в концепцию его работы. Это побудило меня изучить исходники, поэкспериментировать и написать данный пост, не обошлось и без подводных камней. Далее я пройдусь по внутренней кухне метасплоита и метерпретера, покажу, как собрать нагрузку, контролируя каждый этап. В конце порассуждаю на тему его детекта антивирусами и EDR-ами и, собственно, покажу PoC с пропатченной нагрузкой.

0x01> Компилируем свой metsrv

Основным его компонентом метерпретера является metsrv — агент в виде DLL-библиотеки, который содержит в себе экспортируемую функцию для техники Reflected DLL Injection, с помощью которой он и загружает DLL в память.

Базовая команда для создания исполняемого файла, все её знают, всё делали:

msfvenom -p windows/x64/meterpreter_reverse_tcp -f exe -o /tmp/payload.exe

Meterpreter, можно сказать, является прародителем всех C2-фреймворков. В нём есть весь необходимый функционал для управления и эксплуатации. Единственное, чего на мой взгляд ему не хватает — это работы в режиме маячка, с прерывистым трафиком и временными задержками. В остальном это отличный агент для удаленного управления, который активно обновляется с 2003 года и по сей день. Давайте же скомпилируем его.

Для этого нам понадобится: