
Техника внедрения шелл-кода на C++ с использованием XOR-шифрования и преобразования строк UUID для обхода Windows Defender, с обфускацией вызовов функций и выполнением в памяти через VirtualAlloc и EnumChildWindows.
Ещё одна техника внедрения шелл-кода с использованием C++, которая пытается обойти Защитник Windows с помощью XOR-шифрования и безумия со строками UUID :).
Сначала сгенерируйте полезную нагрузку в двоичном формате (с помощью Havoc, CobaltStrike или msfvenom). Например, в msfvenom это можно сделать так (используемая нагрузка приведена в иллюстративных целях; вы можете использовать любую по вашему желанию):
msfvenom -p windows/messagebox -f raw -o shellcode.bin
Затем преобразуйте шелл-код (в двоичном/«сыром» формате) в формат строки UUID с помощью скрипта Python3 bin_to_uuid.py:
./bin_to_uuid.py -p shellcode.bin -o uuid.txt
Зашифруйте строки UUID из файла uuid.txt с помощью xor с использованием скрипта Python3 xor_encryptor.py.
./xor_encryptor.py uuid.txt > xor_crypted_out.txt
Скопируйте массив в стиле C из файла xor_crypted_out.txt и вставьте его в файл C++ в качестве массива unsigned char, т.е. unsigned char payload[]{ваш_вывод_из_xor_crypted_out.txt}
Эта техника внедрения шелл-кода включает следующие последовательные шаги:
VirtualAlloc.xor с использованием значения ключа xor.UuidFromStringA для преобразования строк UUID в их двоичное представление и сохранения их в ранее выделенной памяти. Это позволяет избежать использования подозрительных API, таких как WriteProcessMemory или memcpy.EnumChildWindows для выполнения ранее загруженной в память полезной нагрузки (на шаге 1).memcpy или WriteProcessMemory, которые, как известно, вызывают тревогу у антивирусов/EDR. Эта программа использует функцию Windows API под названием UuidFromStringA, которая может использоваться как для декодирования данных, так и для записи их в память (Разве это не здорово, народ? И, пожалуйста, не говорите «НЕТ!» :)).xor (строка 85) на тот, который вы хотите. Это также нужно сделать в скрипте Python3 ./xor_encryptor.py, изменив переменную KEY. Ключи должны совпадать!имя исполняемого файла (строка 90) на имя вашего файла.mingw, но вы можете использовать любой компилятор по вашему желанию. :)make


Бинарный файл был просканирован с помощью antiscan.me 01/08/2022.
