Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!
Bypass_AV — Обходит AV и песочницы на Windows с помощью анти-sandbox проверок, разворота (unhooking) ntdll, динамического разрешения API и многослойной обфускации шеллкода (XOR/RC4/Base64/MAC). | Kitploit
Обходит AV и песочницы на Windows с помощью анти-sandbox проверок, разворота (unhooking) ntdll, динамического разрешения API и многослойной обфускации шеллкода (XOR/RC4/Base64/MAC).
Это образец трояна, способный обойти подавляющее большинство антивирусов и песочниц
Ниже я опишу технологии, используемые в трояне, и объясню их отдельно для shellcode и загрузчика.
Секция загрузчика
1. Анти-песочница
Как известно, обычное детектирование анти-песочниц основано на операциях с CPU, памятью и жёстким диском хоста. Однако я лично считаю такой подход неудачным, потому что некоторые антивирусы или облачные песочницы проверяют функции анти-песочниц и мониторят чувствительные API, из-за чего можно попасться. Поэтому моя идея — детектировать ярлыки на рабочем столе, например ярлыки часто используемого ПО вроде QQ, WeChat и DingTalk, чтобы обойти облачные песочницы.
2. Перегрузка ntdll и динамический вызов API
Обычно механизм детектирования антивирусов заключается в установке хуков на некоторые чувствительные API. Используя перегрузку ntdll и технику динамического вызова API, мы можем обойти хуки и реализовать нужную функциональность. Перегрузка ntdll: из системного каталога загружается оригинальная ntdll.dll, и сегмент кода (.text) ntdll в текущем процессе, на который установлены хуки, заменяется оригинальным кодом. Динамический вызов API — это обход экспортной таблицы целевой DLL, сопоставление имени функции по хэшу, получение адреса целевой функции и выполнение через указатель.
3. Разделение shellcode и загрузчика
Помимо кодирования для обхода антивирусов, shellcode также можно отделить от загрузчика: если shellcode вообще не находится в exe, антивирусу становится довольно сложно обнаружить проблему.
Секция shellcode
В секции shellcode в основном применяется многослойное запутывание на основе XOR+RC4+base64+MAC. Итоговые данные хранятся в формате MAC-адреса, поскольку Windows достаточно терпима к строкам формата MAC.
Способ использования
Сначала зашифруйте shellcode с помощью encode.cpp. Если вы записываете shellcode в exe, поместите его в массив mac_shellcode в файле Unseparation_shellcode.cpp. Если хотите реализовать разделение параметров, можно просто запустить скомпилированный exe + shellcode.
Спасибо за чтение
Английская версия
Это образец трояна, способный обойти подавляющее большинство антивирусов и песочниц. Ниже я объясню технологии, используемые в трояне, уделяя внимание как shellcode, так и загрузчику.
Секция загрузчика
1. Анти-песочница
Общеизвестно, что обычное детектирование функций анти-песочниц основано на операциях с CPU, памятью, жёстким диском хоста и т.п. Однако я лично считаю этот подход неидеальным, потому что некоторые антивирусы или облачные песочницы отслеживают функции анти-песочниц и следят за чувствительными API, что может привести к обнаружению. Поэтому моя идея — детектировать ярлыки на рабочем столе, например ярлыки часто используемого ПО вроде QQ, WeChat и DingTalk, чтобы обойти облачные песочницы.
2. Перегрузка ntdll и динамический вызов API
Механизм детектирования обычных антивирусов заключается в установке хуков на некоторые чувствительные API. Поэтому мы можем обойти хуки и реализовать функцию с помощью перегрузки ntdll и техники динамического вызова API. Перегрузка ntdll: из системного каталога загружается оригинальная ntdll.dll, и сегмент кода (.text) в текущем процессе, на который установлены хуки, заменяется оригинальным кодом. Динамический вызов API — это обход экспортной таблицы целевой DLL, сопоставление имени функции по хэшу, получение адреса целевой функции и выполнение через указатель.
3. Разделение shellcode и загрузчика
Помимо кодирования для обхода антивирусов, shellcode также можно отделить от загрузчика. Если shellcode не включён в exe-файл, антивирусу становится довольно сложно обнаружить какие-либо проблемы.
Секция shellcode в основном проходит многослойное запутывание с использованием XOR, RC4, base64 и MAC. Итоговый вывод представлен в формате MAC-адреса, что использует терпимость Windows к строкам формата MAC.
Способ использования
Сначала зашифруйте shellcode с помощью encode.cpp. Если вы записываете shellcode в exe-файл, поместите его в массив mac_shellcode в файле Unseparation_shellcode.cpp. Если хотите добиться разделения параметров, можно просто запустить скомпилированный exe + shellcode.