
Mangle is a tool that manipulates aspects of compiled executables (.exe or DLL) to avoid detection from EDRs
Чтобы просмотреть последнюю версию Mangle или отправить запрос, обратитесь к https://github.com/Tylous/Mangle.
Автор: Tyl0us
Представлено на Source Zero Con 2022
Mangle — это инструмент, который манипулирует аспектами скомпилированных исполняемых файлов (.exe или DLL). Mangle может удалять известные строки, основанные на индикаторах компрометации (IoC), и заменять их случайными символами, изменять файл, увеличивая его размер, чтобы избежать EDR, а также клонировать сертификаты подписи кода из легитимных файлов. Таким образом, Mangle помогает загрузчикам обходить сканеры на диске и в памяти.
Mangle был разработан на Golang.
Первым шагом, как всегда, является клонирование репозитория. Перед компиляцией Mangle необходимо установить зависимости. Для их установки выполните следующие команды:
go get github.com/Binject/debug/pe
Затем соберите его
go build Mangle.go
Хотя Mangle написан на Golang, многие функции предназначены для работы с исполняемыми файлами на других языках. На момент выпуска единственной функцией, специфичной для Golang, является часть манипуляции строками.
./mangle -h
_____ .__
/ \ _____ ____ ____ | | ____
/ \ / \\__ \ / \ / ___\| | _/ __ \
/ Y \/ __ \| | \/ /_/ > |_\ ___/
\____|__ (____ /___| /\___ /|____/\___ >
\/ \/ \//_____/ \/
(@Tyl0us)
Usage of ./Mangle:
-C string
Path to the file containing the certificate you want to clone
-I string
Path to the orginal file
-M Edit the PE file to strip out Go indicators
-O string
The new file name
-S int
How many MBs to increase the file by
Mangle принимает входной исполняемый файл и ищет известные строки, которые продукты безопасности ищут или на которые оповещают. Сами по себе эти строки не являются единственной точкой обнаружения. Часто эти строки сочетаются с другими точками данных и телеметрией для обнаружения и предотвращения. Mangle находит эти известные строки и заменяет их шестнадцатеричные значения на случайные, чтобы удалить их. ВАЖНО: Mangle заменяет строки точно того же размера, с которым работает. Он не добавляет ни больше, ни меньше, так как это создало бы несоосности и нестабильность в файле. Mangle делает это с помощью опции командной строки -M.
В настоящее время Mangle работает только с файлами Golang, но со временем будут добавлены другие языки. Если вам известны строки для других языков, пожалуйста, откройте тикет в разделе Issues и отправьте их.
До
После
Практически все EDR не могут сканировать как файлы на диске, так и в памяти, если размер превышает определенный порог. Это связано с тем, что большие файлы требуют больше времени для проверки, сканирования или мониторинга. EDR не хотят влиять на производительность, замедляя работу пользователя. Mangle увеличивает размер файлов, добавляя заполнение нулевыми байтами (нулями) в конец файла. Это гарантирует, что содержимое файла не будет затронуто. Чтобы увеличить размер исполняемого файла, используйте опцию командной строки -S вместе с количеством байт, которое вы хотите добавить к файлу. Большие полезные нагрузки больше не являются проблемой с нынешними скоростями интернета, однако не рекомендуется создавать файл размером 2 гигабайта.
Основываясь на тестовых сценариях с множеством пользовательских и ядерных EDR, рекомендуется увеличивать размер на 95-100 мегабайт. Поскольку поставщики не проверяют большие файлы, активность остается незамеченной, что приводит к успешному выполнению шелл-кода.
Mangle также позволяет взять полную цепочку и все атрибуты из легитимного сертификата подписи кода из файла и скопировать их в другой файл. Это включает дату подписания, встречные подписи и другие измеряемые атрибуты. Хотя эта функция может показаться похожей на другой инструмент, который я разработал, Limelighter, основное различие между ними заключается в том, что Limelighter создает поддельный сертификат на основе домена и подписывает его текущей датой и временем, в то время как здесь используются действительные атрибуты, где временная метка берется из исходного файла. Эта опция может использовать файлы DLL или .exe для копирования с помощью опции командной строки -C вместе с путем к файлу, из которого вы хотите скопировать сертификат.