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

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

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

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

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

Категории

Все категории
Loading categories
Inline-Execute-PE — Выполнение неуправляемых исполняемых файлов Windows в биконах CobaltStrike | Kitploit
Инструменты/GitHubGitHub/octoberfest7/inline-execute-pe
Повышение привилегий
GitHuboctoberfest7/inline-execute-pe

Inline-Execute-PE

Выполнение неуправляемых исполняемых файлов Windows в биконах CobaltStrike

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

Популярное

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

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

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

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

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

Inline-Execute-PE

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ:

Этот проект сложен, и непонимание принципов его работы, а также недостаточное тестирование могут привести к сбоям Beacon и потере доступа!

Настоятельно рекомендую прочитать всю документацию до раздела "Design Considerations and Commentary"!

Введение

Inline-Execute-PE — это набор BOF (Beacon Object Files) и сопутствующий скрипт Aggressor для CobaltStrike, позволяющий операторам загружать неуправляемые исполняемые файлы Windows в память Beacon и выполнять их, получая вывод и отображая его в консоли Beacon.

Это позволяет операторам использовать множество сторонних инструментов (Mimikatz, Dsquery, утилиты Sysinternals и т.д.) без необходимости сбрасывать их на диск, переформатировать в позиционно-независимый код с помощью таких инструментов, как Donut, или создавать новый процесс для их запуска.

Эти исполняемые файлы отображаются в памяти Beacon, чтобы их можно было запускать многократно без необходимости каждый раз передавать их по сети, выделять новую память и создавать новый процесс conhost.exe.

Исполняемые файлы, загруженные в Beacons, доступны и могут быть запущены всеми клиентами CobaltStrike, подключенными к Team Server CobaltStrike.

Inline-Execute-PE разработан для x64 Beacon и x64 исполняемых файлов Windows на C или C++, скомпилированных с помощью Mingw или Visual Studio. Этот проект не поддерживает x86 исполняемые файлы или x64 исполняемые файлы, написанные на другом языке или скомпилированные другим компилятором.

Установка

Клонируйте репозиторий и, при необходимости, выполните make для перекомпиляции BOF.

Загрузите Inline-Execute-PE.cna в клиент CobaltStrike. Убедитесь, что директория, из которой запускается CobaltStrike, доступна для записи вашим пользователем; Inline-Execute-PE создаёт там текстовый файл (petable.txt), чтобы обеспечить доступность данных, необходимых для работы Inline-Execute-PE.

Команды

Inline-Execute-PE состоит из 3 команд, взаимодействующих с целью и запускающих BOF, и 3 внутренних команд, управляющих структурой данных проекта:

Команды для цели:

  1. peload
  2. perun
  3. peunload

Внутренняя структура данных:

  1. petable
  2. peconfig
  3. pebroadcast

peload

peload — это начало работы с Inline-Execute-PE. Эта команда используется для загрузки PE в память Beacon. Она выполняет следующие основные действия:

  1. Отправляет указанный PE по сети в Beacon ИЛИ отправляет имя PE для чтения с диска на целевой машине
  2. Создаёт структуру в памяти Beacon для хранения различных указателей и дескрипторов, необходимых Inline-Execute-PE на протяжении его жизненного цикла
  3. Выделяет память в Beacon и записывает в неё PE с защитой RW
  4. XOR-шифрует PE в памяти с помощью указанного пользователем ключа
  5. Выделяет ещё один блок памяти и копирует в него XOR-зашифрованный PE. Это необходимо для возможности "восстановления" PE для последующих выполнений
  6. Создаёт дочерний процесс conhost.exe под Beacon для инициализации stdin/stdout/stderr
  7. Перенаправляет stdout и stderr в анонимный канал, чтобы можно было захватить вывод PE

perun

perun — это второй шаг Inline-Execute-PE. Он выполняет следующие основные действия:

  1. Отправляет аргументы командной строки по сети в Beacon
  2. XOR-расшифровывает PE в памяти
  3. Исправляет таблицу импорта PE, перехватывая определённые API, связанные с аргументами командной строки и завершением процессов
  4. Изменяет защиту памяти PE на RWX
  5. Запускает PE в собственном потоке
  6. Захватывает вывод PE и возвращает его в CobaltStrike
  7. Восстанавливает защиту памяти PE на RW
  8. Перезаписывает PE в памяти XOR-копией, созданной во время peload

peunload

peunload вызывается для удаления PE из памяти Beacon, когда оператор закончил работу с ним или хочет загрузить другой PE. Он выполняет следующие основные действия:

  1. Закрывает дескрипторы и указатели файлов, созданные во время peload
  2. Завершает процесс conhost.exe, созданный во время peload
  3. Обнуляет и затем освобождает обе копии PE в памяти
  4. Пытается выгрузить все DLL, загруженные PE в процесс Beacon (опционально)

petable

petable используется для отображения информации о всех PE, загруженных в Beacons.

У каждого клиента CobaltStrike есть своя собственная petable; Inline-Execute-PE прилагает значительные усилия для обеспечения синхронизации данных между всеми подключенными клиентами CobaltStrike, чтобы PE могли использоваться всеми операторами. Подробнее об этом см. "Design Considerations and Commentary".

image

peconfig

peconfig используется для настройки параметров, касающихся работы Inline-Execute-PE. Два текущих параметра, которые могут быть изменены:

  1. Timeout. Определяет, как долго perun будет ждать завершения выполнения PE, прежде чем завершить его. Это существует как мера предосторожности на случай, если PE переданы неверные аргументы, из-за которых он никогда не вернётся/не завершит выполнение. По умолчанию этот параметр равен 60 секундам, но может быть изменён для поддержки более длительных PE.
  2. UnloadLibraries. Этот параметр управляет тем, будет ли peunload пытаться освободить DLL из процесса Beacon, загруженные PE. По умолчанию установлено значение TRUE. Некоторые PE вызывают проблемы при выгрузке DLL из процесса Beacon и могут привести к сбою Beacon, в этом случае лучше оставить все DLL, загруженные PE, в процессе Beacon. Это наблюдалось при использовании powershell.exe (возможно, из-за загрузки CLR .Net в процесс Beacon).

pebroadcast

pebroadcast можно использовать для ручной рассылки содержимого petable клиента всем остальным подключенным клиентам CobaltStrike.

Каждый другой клиент CobaltStrike обновит свою petable полученными данными. Это вряд ли когда-либо понадобится, но функция существует на всякий случай.

Использование

Используйте peload для загрузки PE в память Beacon image

В качестве альтернативы, если на целевой машине есть PE, который вы хотите использовать без создания нового процесса, укажите путь и ключ --local image

Вызовите perun, передав аргументы загруженному PE image

Двойные кавычки в аргументах должны экранироваться обратной косой чертой image

Если вы обнаружили, что PE вызывает проблемы при попытке освободить DLL во время выгрузки, используйте peconfig, чтобы установить unloadlibraries в false image

Когда вы закончили использовать PE, вызовите peunload, чтобы очистить его из Beacon image

Теперь в Beacon можно загрузить другой PE image

Тайм-аут perun

Необходимо быть внимательным с аргументами командной строки, передаваемыми PE; некоторые PE сразу аварийно завершатся при неверных аргументах, в то время как другие будут работать бесконечно, из-за чего Beacon никогда не ответит, хотя процесс всё ещё работает.

Скачать инструмент