
Автоматизированный инструмент для подгрузки DLL с возможностями обхода EDR

Хотя подгрузка DLL (DLL sideloading) может использоваться в легитимных целях, таких как загрузка необходимых библиотек для работы программы, она также может применяться и в злонамеренных целях. Злоумышленники могут использовать подгрузку DLL для выполнения произвольного кода в целевой системе, часто эксплуатируя уязвимости в легитимных приложениях, которые используются для загрузки DLL.
Чтобы автоматизировать процесс подгрузки DLL и сделать его более эффективным, был создан Chimera — инструмент, включающий методы обхода для обхода продуктов EDR/AV. Этот инструмент может автоматически шифровать шелл-код с помощью XOR со случайным ключом и создавать шаблонные образы, которые можно импортировать в Visual Studio для создания вредоносной DLL.
Кроме того, используются динамические системные вызовы из SysWhispers3 и модифицированная ассемблерная версия для обхода шаблонов, которые ищет EDR; добавляются случайные NOP-ледники и перемещаются регистры. Также применяется инъекция Early Bird для внедрения шелл-кода в другой процесс, который пользователь может указать, с механизмами обхода песочницы, такими как проверка жесткого диска и проверка на отладку процесса. Наконец, в загрузчик добавлена временная атака, использующая ожидаемые таймеры для задержки выполнения шелл-кода.
Этот инструмент был протестирован и показал свою эффективность в обходе продуктов EDR/AV и выполнении произвольного кода в целевой системе.
Обновленная версия Chimera Unleashed продемонстрировала значительные успехи в обходе как статического, так и динамического анализа, особенно в контексте системы Endpoint Detection and Response (EDR) Microsoft 365. Методы подгрузки DLL инструмента, даже при применении к известным бинарным файлам, таким как OneDrive, успешно избегали обнаружения. Однако стоит отметить, что хотя аспект подгрузки DLL остался незамеченным, используемый инструментом процесс инъекции Early Bird был идентифицирован системой EDR. Это указывает на область для дальнейшего улучшения общей скрытности инструмента.
Ключевые обновления и функции:
Chimera написан на Python3, и нет необходимости устанавливать дополнительные зависимости.
В настоящее время Chimera поддерживает два варианта DLL: либо Microsoft Teams, либо Microsoft OneDrive.
Можно создать userenv.dll — отсутствующую DLL из Microsoft Teams — и поместить её в конкретную папку:
%USERPROFILE%/Appdata/local/Microsoft/Teams/current
Для Microsoft OneDrive скрипт использует DLL версии, что распространено, так как она отсутствует в бинарном файле, например, onedriveupdater.exe.
Chimera Unleashed использует argparser для разбора аргументов командной строки. Доступны следующие аргументы:
--raw или -r: Путь к файлу, содержащему шелл-код. Обязательный.--path или -p: Путь для вывода файла шаблона C. Обязательный.--pname или -n: Имя процесса для инъекции шелл-кода. Обязательный.--dexports или -d: Укажите, какие экспорты DLL использовать ('teams' или 'onedrive'). Обязательный.--enc или -e: Укажите предпочитаемое шифрование (XOR / AES). Обязательный.--inj или -i: Укажите предпочитаемую технику инъекции (EB / MS). Обязательный.--rshell или -s: [Необязательно] Заменить имя переменной шелл-кода на уникальное. По умолчанию 'encoded_shell'.Пример использования: python Chimera.py --raw <path_to_shellcode> --path <output_path> --pname <process_name> --dexports <exports_file> --enc AES --inj EB --rshell my_shellcode
После завершения компиляции будет создана DLL, которая должна содержать либо "version.dll" для OneDrive, либо "userenv.dll" для Microsoft Teams. Затем необходимо переименовать оригинальные DLL.
Например, оригинальную "userenv.dll" следует переименовать в "tmpB0F7.dll", а оригинальную "version.dll" — в "tmp44BC.dll". Кроме того, вы можете изменить имя прокси- DLL по желанию, изменяя исходный код экспортов DLL вместо использования имен по умолчанию из скрипта.
Файл code.h содержит шелл-код.
Шаг 1: Создание нового проекта Visual Studio с шаблоном DLL


Шаг 2: Импорт файлов в проект Visual Studio
Шаг 3: Настройка сборки
Шаг 4: Включение MASM

Шаг 5:


Шаг 1: Изменение оптимизации

Шаг 2: Удаление отладочной информации

Первоначальный автор:
Участник:
В максимальной степени, разрешенной применимым законодательством, я (George Sotiriadis) и/или аффилированные лица, предоставившие контент в мой репозиторий, не несут ответственности за любые косвенные, случайные, особые, косвенные или штрафные убытки, а также за любые потери прибыли или доходов, возникшие прямо или косвенно, или за любые потери данных, использования, деловой репутации или других нематериальных активов, возникшие в результате (i) вашего доступа к этому ресурсу и/или невозможности доступа к этому ресурсу; (ii) любого поведения или контента любой третьей стороны, на которую ссылается этот ресурс, включая, без ограничений, любые клеветнические, оскорбительные или незаконные действия других пользователей или третьих сторон; (iii) любого контента, полученного из этого ресурса.
https://evasions.checkpoint.com/
https://github.com/Flangvik/SharpDllProxy
--rxor или -x: [Необязательно] Заменить имя шифрования XOR на уникальное. По умолчанию 'do_xor'.--rkey или -k: [Необязательно] Заменить имя переменной ключа на уникальное. По умолчанию 'key'.--rsleep или -z: [Необязательно] Общее время сна для включения во время выполнения (в секундах). По умолчанию 4000.--size или -f: [Необязательно] Размер файла мусорных данных в КБ. Ноль (0) отключено, единица (1) — случайный размер файла. По умолчанию 0.