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

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

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

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

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

Категории

Все категории
Loading categories
Pyramid — инструмент для работы в слепых зонах EDR | Kitploit
Инструменты/GitHubGitHub/naksyn/pyramid
Пост-эксплуатацияТестирование на ПроникновениеRed Teaming
GitHubnaksyn/pyramid

Pyramid

инструмент для работы в слепых зонах EDR

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

Популярное

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

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

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

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

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

Supported Python versions Twitter

Pyramid

immagine

Что это такое

Pyramid состоит из:

  1. HTTP/S сервера на Python, который может доставлять зашифрованные файлы (chacha, xor)
  2. Модулей Python, которые могут загружать в память зависимости инструментов для атакующей работы, таких как Bloodhound-py, secretsdump, LaZagne, Pythonnet, DonPAPI, pythonmemorymodule, paramiko, pproxy.
  3. Фиксированных зависимостей Python (zip-файлов), которые можно импортировать в память
  4. Загрузчика Python, который может скачивать, расшифровывать и выполнять в памяти модули Pyramid

Зачем это нужно

Pyramid полезен для выполнения задач пост-эксплуатации обходным путем, запуская инструменты для атакующей работы из подписанного бинарного файла (например, python.exe) путем импорта их зависимостей в память. Это возможно благодаря тому, что:

  1. Python Embeddable package предоставляет подписанный интерпретатор Python с хорошей репутацией;
  2. У Python много легитимных применений, поэтому от бинарного файла python.exe исходит огромное количество разнообразной телеметрии, поскольку интерпретатор запускает API нативно. Этим можно злоупотреблять, работая внутри процесса Python.exe и пытаясь слиться с огромным "телеметрическим отпечатком" бинарного файла python.exe.
  3. Отсутствует аудит выполнения кода Python - PEP-578 пытался это исправить, но в стандартном бинарном файле python.exe возможности аудита по умолчанию не включены.
  4. Операции можно выполнять нативно из python.exe, используя язык Python для задач пост-эксплуатации, таких как динамический импорт модулей Python для запуска инструментов атакующей работы и выполнение Beacon Object Files (после некоторых модификаций BOF) непосредственно внутри python.exe.

Для получения дополнительной информации, пожалуйста, ознакомьтесь со слайдами выступления на DEFCON30 - Adversary village "Python vs Modern Defenses" и этой записью в моем блоге.

Отказ от ответственности

Этот инструмент был создан для демонстрации стратегии обхода EDR, основанной на некоторых предположениях о слепых зонах. Он представляет собой комбинацию уже существующих техник и инструментов, но (насколько мне известно) новым способом, который может помочь обойти защиту. Единственная цель инструмента — помочь сообществу повысить осведомленность о подобном использовании и ускорить поиск решения. Это не 0day, не полноценный блестящий C2, Pyramid использует то, что может быть слепыми зонами EDR, и инструмент был опубликован, чтобы пролить на них свет. Был включен раздел о защите, с надеждой, что опытные защитники смогут внести свой вклад и предложить возможное решение проблемы, которую Pyramid призван осветить. Вся информация предоставлена исключительно в образовательных целях. Следуйте инструкциям на свой страх и риск. Ни автор, ни его работодатель не несут ответственности за любой прямой или косвенный ущерб или убытки, возникшие у какого-либо лица или организации.

Авторство

Загрузка в память Pyramid изначально была вдохновлена и расширена на основе xorrior 's Empyre - Finder Class

Участники

snovvcrash создал модули mod-DonPAPI.py - mod-LaZagne.py - mod-clr.py

Текущие возможности

Возможности модулей Pyramid могут быть выполнены непосредственно из интерпретатора Python и на данный момент включают:

  1. Скачивание, расшифровка и загрузка в память зависимостей Python.
  2. Динамическая загрузка и выполнение BloodHound Python, impacket secretsdump, DonPAPI, LaZagne.
  3. Загрузка в память удаленно загруженной dll или exe через PythonMemoryModule
  4. Проксирование SOCKS5 через SSH-туннель с обратной переадресацией портов.
  5. Загрузка в память сборок .NET через Pythonnet

Основные возможности HTTP-сервера Pyramid:

  1. Шифрование на лету (chacha,xor) файлов для доставки
  2. Автоматическая генерация конфигураций сервера на основе командной строки pyramid
  3. Декодирование и расшифровка параметров HTTP (URL)
  4. Базовая HTTP-аутентификация

Основные возможности загрузчика:

  1. Скачивание, расшифровка и выполнение модулей Pyramid в памяти.
  2. Зависимость только от стандартных библиотек Python.

Описание

Pyramid можно использовать с уже установленным на целевой машине интерпретатором Python или распаковав официальный встраиваемый пакет Python и затем запустив python.exe для выполнения загрузчика Python. Это простой способ избежать создания необычных шаблонов дерева процессов и выглядеть как обычное использование приложения Python.

В Pyramid загрузчик используется для соединения с сервером Pyramid по HTTP/S для получения модулей и зависимостей.

Модули специфичны для нужной функции и содержат:

  1. Пользовательский класс Finder для импорта в память необходимых зависимостей (zip-файлов).
  2. Код для скачивания необходимых зависимостей.
  3. Основная логика программы, которую вы хотите выполнить (bloodhound, secretsdump, paramiko и т.д.).

Зависимости Python уже были исправлены и модифицированы для импорта в память без конфликтов.

В настоящее время доступно 8 модулей Pyramid:

  1. bh.py — импортирует в память и выполняет python-BloodHound.
  2. secretsdump.py — импортирует в память и выполняет Impacket secretsdump.
  3. shellcode.py — простой инжектор шеллкода в память.
  4. DonPAPI.py — импортирует в память и выполняет DonPAPI. Полученные результаты и учетные данные сохраняются на диск в каталоге Python Embeddable Package Directory.
  5. LaZagne.py — импортирует в память и выполняет LaZagne
  6. tunnel-socks5 — импортирует и выполняет paramiko в отдельном потоке для создания SSH-туннеля с удаленной переадресацией портов на SSH-сервер, затем на целевой машине локально запускается SOCKS5-прокси-сервер, который становится доступным удаленно через SSH-туннель.
  7. clr — импортирует Pythonnet для загрузки и выполнения сборки .NET в памяти.
  8. pythonmemorymodule — импортирует PythonMemoryModule для загрузки dll из памяти.

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

Запуск сервера

git clone https://github.com/naksyn/Pyramid

Сгенерируйте SSL-сертификаты для HTTP-сервера:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

Если вы хотите использовать свой собственный подписанный SSL-сертификат, убедитесь, что:

  1. вы используете формат pem
  2. файлы называются key.pem и cert.pem
  3. оба файла помещены в папку Server.

Настройка модуля

Например, если вы хотите использовать pythonmemorymodule с Pyramid, поместите вашу полезную нагрузку в папку Delivery_files, затем откройте pythonmemorymodule.py и настройте необходимые параметры в верхней части скрипта, такие как имя файла полезной нагрузки и процедуру, которую нужно вызвать после загрузки PE.

Распакуйте встраиваемый пакет и выполните загрузчик на целевой системе

После запуска сервера Pyramid и готовности базового скрипта вы можете установить переменную pyramid_module в файле Agent/cradle.py и выполнить его на цели. Загрузчик создан для работы со стандартными библиотеками Python.

Пример

Пример запуска HTTP-сервера Pyramid с использованием SSL-сертификата, базовой аутентификации, шифрования файлов доставки с помощью ChaCha и автоматической генерации конфигурации сервера в модулях, а также вывода готового к использованию загрузчика для pythonmemorymodule:

root@kitploit:~
python3 pyramid.py -p 443 -ssl -u testuser -pass Sup3rP4ss! -enc "chacha20" -passenc "TestPass1" -server "192.168.1.2" -generate -setcradle pythonmemorymodule.py

При запуске pyramid.py анализирует собственную структуру папок в поисках key.pem, cert.pem и будет доставлять файлы из папки Server.

https://github.com/naksyn/Pyramid/assets/59816245/4fbc997e-af2d-4ead-881b-ee108c91d195

Совет по выполнению Pyramid без видимого окна

Чтобы выполнить Pyramid без появления видимого окна python.exe, вы можете использовать pythonw.exe, который не открывает окно консоли при выполнении и содержится в том же Windows Embeddable Package. На следующем рисунке показан пример использования pythonw.exe для выполнения base-tunnel-socks5.py на удаленной машине без открытия окна консоли python.exe.

image

Ограничения

Динамическая загрузка модулей Python не поддерживает нативно импорт файлов *.pyd, которые по сути являются dll. Единственное публичное решение этой проблемы, известное мне, предоставлено Scythe (выполнение в памяти) путем перепроектирования интерпретатора CPython. Чтобы не потерять цифровую подпись, одно из решений, позволяющее использовать нативный встраиваемый пакет Python, включает выгрузку на диск необходимых pyd-файлов или колес. В большинстве случаев это не должно иметь значительных последствий для OPSEC, однако имейте в виду, что следующие колеса, содержащие pyd-файлы, выгружаются на диск для завершения динамической загрузки: *. Cryptodome — необходим для Bloodhound-Python, Impacket, DonPAPI и LaZagne *. bcrypt, cryptography, nacl, cffi — необходимы для paramiko

Как защититься от этой техники

Python.exe — это подписанный бинарный файл с хорошей репутацией, который не предоставляет видимости динамического кода Python. Pyramid использует эти свойства обхода, выполняя задачи атакующей работы из того же процесса python.exe.

По этой причине одним из наиболее эффективных решений было бы блокировать по умолчанию бинарные файлы и dll, подписанные Python Foundation, создавая исключения только для пользователей, которым действительно нужно использовать бинарные файлы Python.

Также могут быть настроены оповещения о загрузке встраиваемых пакетов.

Внедрение PEP-578 также возможно, хотя и сложно, пример реализации. Однако внедрение PEP-578 без блокировки использования стандартных бинарных файлов Python может сделать эту контрмеру бесполезной.

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