Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/optiv/ivy
Генерация полезной нагрузкиЭксплуатацияШелл-кодПост-эксплуатацияТестирование на ПроникновениеRed TeamingРазработка Полезной НагрузкиArchived
GitHuboptiv/ivy

Ivy

Ivy — это фреймворк для создания полезных нагрузок, предназначенный для выполнения произвольного исходного кода VBA (макросов) непосредственно в памяти. Загрузчик Ivy делает это, используя программный доступ в объектной среде VBA для загрузки, расшифровки и выполнения шеллкода.

Репозиторий
743129273 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

ЭТОТ РЕПОЗИТОРИЙ БЫЛ АРХИВИРОВАН

Чтобы просмотреть последнюю версию Ivy или сообщить о проблеме, обратитесь по адресу https://github.com/Tylous/Ivy.



Дополнительная информация

Если вы хотите узнать больше о методах, используемых в этом фреймворке, а также о защитных мерах, которые помогут от него защититься, ознакомьтесь со Статьей.

Описание

Ivy — это фреймворк для создания полезных нагрузок, предназначенный для выполнения произвольного VBA (макрос) кода в памяти. Загрузчик Ivy делает это, злоупотребляя программным доступом к объектной среде VBA для загрузки, расшифровки и выполнения шелл-кода. Эта техника максимально приближена к истинному «безфайловому» подходу, поскольку большинство современных безфайловых атак требуют сброса каких-либо файлов на диск, тем самым обходя стандартные сигнатурные правила обнаружения VBA-кода. Обычные VBA-нагрузки имеют следующие характеристики:

  • Существуют в документах Office с поддержкой макросов
  • Эти макросы хранятся на диске

Выполняясь исключительно в памяти, эти поведенческие характеристики усложняют обнаружение системами EDR.

Загрузчики Ivy шифруются с помощью RC4 (AES-шифрование создает много избыточного кода и требует много времени для расшифровки в VBA), а затем разбиваются на отдельные строки, предотвращая распознавание этих строк как зашифрованных в песочницах. Это также не позволяет механизмам декодирования воспринимать эти нагрузки как что-либо, кроме мусорных символов.

Загрузчик Ivy сначала выполняет запрос к реестру для включения «Доверять доступу к объектной модели проектов VBA». Это значение ключа реестра хранится в пользовательском режиме, что позволяет пользователю изменять его без необходимости повышенных привилегий. Значение реестра устанавливается с нуля на единицу; если ключ реестра не существует, Ivy создаст его со значением «1». При включенном значении разрешается программный доступ к объектной среде VBA из другого процесса.

После этого загрузчик запускает скрытый процесс Excel и загружает зашифрованные строки в функцию VBA. Это делается с помощью ActiveX для имитации GUI-действий, выполняющих ту же задачу. Это помогает обойти множество традиционных средств контроля выполнения. В результате функция расшифровки и шелл-код перемещаются из одного буфера памяти в другой, никогда не касаясь диска. Наконец, загрузчик использует команды GUI и выполняет функцию run, которая имитирует нажатие кнопки запуска макроса на GUI-панели VBA, запуская функцию расшифровки, а затем фактическое выполнение шелл-кода.

ВАЖНО

На целевом компьютере должен быть установлен и активирован Microsoft Office, так как Ivy использует программный доступ к среде VBA Microsoft Office.

Режим отключения хуков EDR

Этот режим позволяет Ivy использовать низкоуровневые системные вызовы для создания собственной версии функции Windows WriteProcessMemory, косвенно обращаясь к прямому адресу памяти и значениям регистров. Ivy может перезаписывать участки памяти, которые не доступны для записи, без вызова каких-либо API-функций изменения памяти. Это возможно благодаря особенности WriteProcessMemory, которая временно изменяет права на область памяти на запись (если у вас есть достаточные привилегии, что у нас есть, так как мы владеем процессом). Она записывает значение и восстанавливает исходные права без вызова функции VirtualProtect, а вместо этого автоматически вызывает соответствующий системный вызов (NtProtectVirtualMemory).

Ivy не использует собственную версию NtWriteVirtualMemory, потому что в этом случае процесс временного изменения прав памяти не происходит, защита конкретного адреса памяти не изменяется, и выполнение завершается ошибкой. Это «функция», выпущенная Microsoft для повышения стабильности отладчиков. Поскольку отладчики хотят изменять память на лету, они могут просто изменить участок без необходимости выполнять несколько задач. (См. devblogs.microsoft.com для получения информации)

Давайте рассмотрим последовательность событий, которые увидит EDR:

  • Ivy создает функцию WriteProcessMemory, которая вручную устанавливает правильные значения регистров.
  • Наша функция вызывает точный адрес памяти, где хранится WriteProcessMemory. (Это будет выглядеть как вызов регистра RAX, а не kernel32.WriteProcessMemory)
  • Это значит, что мы не вызываем WriteProcessMemory напрямую, но при этом используем все его возможности.
  • EDR увидит только строку ассемблера, которая не соответствует злонамеренным индикаторам для адреса памяти.
  • Этот адрес памяти будет началом функции, но адрес функции уникален из-за ASLR; потребуется поиск каждой функции.
  • Перед выполнением записи запускается системный вызов ZWQueryVirtualMemory для просмотра защиты области памяти.
  • Если эта память не установлена как записываемая, вызывается NtProtectVirtualMemory для изменения прав.
  • Затем 8 байт ассемблера записываются по указанному адресу памяти.
  • NtProtectVirtualMemory снова вызывается для восстановления исходного значения защиты.

После удаления всех хуков EDR загрузчик выполняет обычное действие для установки удаленной сессии.

Ivy решает эту задачу, снимая хуки с общих системных DLL, которые перехватывает EDR:

  • Ntdll.dll
  • Kernel32.dll
  • Kernelbase.dll
  • Advapi32.dll
  • Sechost.dll
  • Ws2_32.dll
  • Winmmbase.dll

При использовании unhook с типом нагрузки Inject загрузчик Ivy сначала снимет хуки с процесса Office, удаляя EDR из него, а затем удалит хуки в инжектированном процессе. Это гарантирует, что оба процесса свободны от хуков, предотвращая отправку телеметрии от родительского и дочернего процессов в EDR.

Пэтчинг ETW

Используя ту же технику для снятия хуков, Ivy может патчить функции ETW, предотвращая генерацию любых событий процессом. ETW использует встроенные системные вызовы для генерации этой телеметрии. Поскольку ETW является встроенной функцией Windows, продуктам безопасности не нужно «хукать» системные вызовы ETW для получения информации. В результате, чтобы предотвратить ETW, Ivy патчит многочисленные системные вызовы ETW, сбрасывая регистры и возвращая поток выполнения к следующей инструкции. Пэтчинг ETW теперь включен по умолчанию во всех загрузчиках; если вы не хотите патчить ETW, используйте опцию командной строки -noetw, чтобы отключить это в вашем загрузчике.

Демонстрация

Установка

Ivy разработан на Go.

Первый шаг, как всегда, — клонировать репозиторий. Перед компиляцией Ivy вам нужно установить зависимости. Для их установки выполните следующие команды:

go get github.com/fatih/color
go get github.com/KyleBanks/XOREncryption/Go

Затем соберите его:

go build Ivy.go

Справка

$ ./Ivy -h

     ___   ___      ___  ___    ___
    |\  \ |\  \    /  /||\  \  /  /|
    \ \  \\ \  \  /  / /\ \  \/  / /
     \ \  \\ \  \/  / /  \ \    / /
      \ \  \\ \    / /    \/  /  /
       \ \__\\ \__/ /   __/  / /
        \|__| \|__|/   |\___/ /
                       \|___|/
                       (@Tyl0us)
The suffering. The pain. Can't you hear them?
Their cries for mercy?
Скачать инструмент