Создание Powershell Shellcode Downloader для обхода Defender (Без обхода Amsi)

от автора

Сегодня я покажу, как модифицировать powershell shellcode runner для загрузки и выполнения нагрузки в обход Windows Defender.

Я буду использовать shellcode runner, который применял ранее: https://github.com/dievus/PowerShellRunner/blob/main/runner.ps1

Для демонстрации я использую виртуальную машину Windows с временно отключённым Defender. Я скопирую код и создам на его основе новый файл, используя PowerShell ISE.

Здесь я собираюсь добавить переменную $url, содержащую URL-адрес, с которого мы будем загружать наш .bin файл, а затем изменить переменную $buf так, чтобы она загружала необработанные данные. При этом [Byte[]] в начале гарантирует, что данные будут прочитаны в виде байтов.

Теперь нам нужно убедиться, что мы выделили достаточно места для любого шеллкода, который мы собираемся выполнить. Я собираюсь переместить переменную $cucumbers ниже переменной $buf. Я изменю аргумент, который отвечает за размер, нужно установить его равным размеру переменной $buf.

Далее я создам обратную оболочку (reverse shell) в msfvenom с типом файла raw и сохраню её как rev.bin.

Я собираюсь запустить мой HTTP-сервер на Python, откуда он скачает rev.bin.

Также я запущу Netcat-листенер, через который я получу обратную оболочку.

А теперь давайте протестируем наш PowerShell-скрипт. И у нас есть shell!

Однако это работает только до тех пор, пока у нас отключен Defender. Воспользуемся AmsiTrigger, чтобы посмотреть, какие строки кода могут быть определены как вредоносные.

Как видно, первая строка уже может вызвать проблему, так как она указывает на функцию GetAssemblies().

Вынесем эту часть кода в отдельный файл и воспользуемся Invoke-Obfuscation для его обфускации. Импортируем модуль, а затем запускаем Invoke-Obfuscation.

Затем мы устанавливаем scriptpath на наш файл, который нужно обфусцировать.

Далее используем token/all/1, чтобы применить все техники обфускации.

И мы получаем наш обфусцированный код.

Примечание: Результат будет всегда отличаться, так как при обфускации используется определенная рандомизация. Иногда это может приводить к ошибкам в коде, и вам придется выполнить обфускацию повторно.

Заменим исходный код на наш обфусцированный.

Сохраняем файл. Включаем защиту и запускаем PowerShell-скрипт.

И мы получаем обратный shell при рабочем Defender.

Теперь вы можете использовать это для выполнения любого шеллкода, сохраненного в файле с расширением .bin, обходя защиту Defender. Однако не удивляйтесь, если спустя некоторое время антивирус заметит вредоносную активность. При необходимости, просто попытайтесь снова изменить скрипт самостоятельно.

Life-Hack — Хакер


ссылка на оригинал статьи https://habr.com/ru/articles/868622/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *