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

Я буду использовать shellcode runner, который применял ранее.

Для демонстрации я использую виртуальную машину 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 - Хакер

Комментарии (5)


  1. mixsture
    21.12.2024 15:55

    Ух, демонстрация идеи обхода эвристик дефендера - супер, но форматирование кода кошмар.
    Нет отступов на операторных скобках, названия переменных не отражают содержания.
    Вы же не обязаны быть обфускатором, вы можете форматировать удобно для восприятия. Все равно обфускатор потом запустите, и он (обычно) названия на свои переделает.


  1. randomsimplenumber
    21.12.2024 15:55

    Это штош, получается, чтобы обойти Defender, нужно применить обфускацию? Я удивлен и обескуражен.

    Ну да, перевод..


  1. MonkAlex
    21.12.2024 15:55

    Так, а как запустить повершелл скрипт на чужой машине, чтобы заиметь доступ?

    По умолчанию у меня скрипты не выполняются на машине и требуется админский доступ чтобы включить выполнение скриптов.


    1. mc2
      21.12.2024 15:55

      cat script|powershell

      ?


      1. MonkAlex
        21.12.2024 15:55

        В статье речь про Windows Defender, я делаю вывод - статья про Windows.

        "cat" не является внутренней или внешней
        командой, исполняемой программой или пакетным файлом.