Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Pyramid — una herramienta para ayudar a operar en los puntos ciegos de los EDR | Kitploit
Herramientas/GitHubGitHub/naksyn/pyramid
Post-ExplotaciónPruebas de PenetraciónRed Teaming
GitHubnaksyn/pyramid

Pyramid

una herramienta para ayudar a operar en los puntos ciegos de los EDR

Ver Repositorio
77590hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Supported Python versions Twitter

Pyramid

immagine

¿Qué es?

Pyramid está compuesto por:

  1. un servidor HTTP/S en Python que puede entregar archivos cifrados (chacha, xor)
  2. módulos de Python que pueden cargar dependencias en memoria de herramientas ofensivas como Bloodhound-py, secretsdump, LaZagne, Pythonnet, DonPAPI, pythonmemorymodule, paramiko, pproxy.
  3. dependencias de Python fijas (archivos zip) que pueden importarse en memoria
  4. un cargador inicial (cradle) de Python que puede descargar, descifrar y ejecutar módulos de Pyramid en memoria

¿Por qué es útil?

Pyramid es útil para realizar tareas de post-explotación de manera evasiva, ejecutando herramientas ofensivas desde un binario firmado (por ejemplo, python.exe) importando sus dependencias en memoria. Esto se puede lograr porque:

  1. el paquete Python Embeddable proporciona un intérprete de Python firmado con buena reputación;
  2. Python tiene muchas aplicaciones legítimas, por lo que hay mucha telemetría diferente proveniente del binario python.exe, ya que el intérprete ejecuta las APIs de forma nativa. Esto se puede abusar operando dentro del proceso Python.exe e intentando mezclarse con la enorme "huella de telemetría" del binario python.exe.
  3. Hay una falta de auditoría para la ejecución de código en Python - PEP-578 intentó solucionarlo, pero el binario python.exe estándar no tiene capacidades de auditoría habilitadas por defecto.
  4. Las operaciones pueden realizarse de forma nativa desde python.exe utilizando el lenguaje Python para realizar tareas de post-explotación, como importar dinámicamente módulos de Python para ejecutar herramientas ofensivas y ejecutar Beacon Object Files (después de algunas modificaciones de BOF) directamente dentro de python.exe.

Para más información, consulte la presentación del talk "Python vs Modern Defenses" en DEFCON30 - Adversary village y este post en mi blog.

Descargo de responsabilidad

Esta herramienta fue creada para demostrar una estrategia de evasión contra EDR basada en algunas suposiciones de puntos ciegos. Es una combinación de técnicas y herramientas ya existentes de una manera (hasta donde sé) novedosa que puede ayudar a evadir defensas. La única intención de la herramienta es ayudar a la comunidad a aumentar la conciencia sobre este tipo de uso y acelerar una resolución. No es un 0day, no es un C2 completo y brillante; Pyramid explota lo que podrían ser puntos ciegos de los EDR y la herramienta se ha hecho pública para arrojar luz sobre ellos. Se ha incluido un párrafo sobre defensa, con la esperanza de que los blue-teamers experimentados puedan contribuir y proporcionar una mejor resolución posible sobre el problema que Pyramid pretende resaltar. Toda la información se proporciona únicamente con fines educativos. Siga las instrucciones bajo su propio riesgo. Ni el autor ni su empleador son responsables de ningún daño o pérdida directa o consecuente que surja de cualquier persona u organización.

Créditos

La carga en memoria de Pyramid se inspiró inicialmente y se amplió a partir de la Empyre - Finder Class de xorrior.

Contribuyentes

snovvcrash construyó los módulos mod-DonPAPI.py - mod-LaZagne.py - mod-clr.py

Funcionalidades actuales

Las capacidades de los módulos de Pyramid pueden ejecutarse directamente desde un intérprete de Python y actualmente son:

  1. Descarga, descifrado y carga en memoria de dependencias de Python.
  2. Carga dinámica y ejecución de BloodHound Python, impacket secretsdump, DonPAPI, LaZagne.
  3. Carga en memoria de un dll o exe obtenido remotamente a través de PythonMemoryModule
  4. Proxy SOCKS5 a través de túnel SSH de reenvío de puerto inverso.
  5. Carga de ensamblados .NET en memoria a través de Pythonnet

Funcionalidades principales del servidor HTTP Pyramid:

  1. cifrado sobre la marcha (chacha, xor) de los archivos a entregar
  2. generación automática de configuraciones del servidor basadas en la línea de comandos de Pyramid
  3. decodificación y descifrado de parámetros HTTP (URL)
  4. Autenticación HTTP básica

Funcionalidades principales del cargador inicial (cradle):

  1. Descarga, descifrado y ejecución en memoria de módulos de Pyramid.
  2. Dependencia solo de bibliotecas estándar de Python

Descripción

Pyramid se puede usar con un intérprete de Python ya existente en una máquina objetivo, o descomprimiendo un paquete Python Embeddable oficial y luego ejecutando python.exe para ejecutar un cargador inicial de descarga de Python. Esta es una forma sencilla de evitar crear un patrón de árbol de procesos poco común y parecerse al uso normal de una aplicación Python.

En Pyramid, el cargador inicial de descarga se utiliza para llegar a un servidor Pyramid a través de HTTP/S para obtener módulos y dependencias.

Los módulos son específicos para la función que se desea usar y contienen:

  1. Una clase Finder personalizada para importar en memoria las dependencias requeridas (archivos zip).
  2. Código para descargar las dependencias requeridas.
  3. Lógica principal para el programa que se desea ejecutar (bloodhound, secretsdump, paramiko, etc.).

Las dependencias de Python ya han sido fijadas y modificadas para importarse en memoria sin conflictos.

Actualmente hay 8 módulos de Pyramid disponibles:

  1. bh.py importa y ejecuta en memoria python-BloodHound.
  2. secretsdump.py importa y ejecuta en memoria Impacket secretsdump.
  3. shellcode.py es un inyector de shellcode en memoria simple.
  4. DonPAPI.py importa y ejecuta en memoria DonPAPI. Los resultados y credenciales extraídas se guardan en disco en el Directorio del Paquete Python Embeddable.
  5. LaZagne.py importa y ejecuta en memoria LaZagne
  6. tunnel-socks5 importa y ejecuta paramiko en un nuevo hilo para crear un reenvío de puerto remoto SSH a un servidor SSH, luego se ejecuta un servidor proxy socks5 localmente en el objetivo y se hace accesible remotamente a través del túnel SSH.
  7. clr importa Pythonnet para cargar y ejecutar un ensamblado .NET en memoria.
  8. pythonmemorymodule importa PythonMemoryModule para cargar un dll desde memoria.

Uso

Iniciar el servidor

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

Generar certificados SSL para el servidor HTTP:

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

Si desea usar su propio certificado SSL firmado, asegúrese de:

  1. usar formato pem
  2. renombrar los archivos como key.pem y cert.pem
  3. colocar ambos archivos en la carpeta Server.

Configurar el módulo

Como ejemplo, si desea usar pythonmemorymodule con Pyramid, coloque su payload en la carpeta Delivery_files, luego abra pythonmemorymodule.py y configure los parámetros necesarios en la parte superior del script, como el nombre del archivo payload y el procedimiento que desea llamar después de cargar el PE.

Descomprimir el paquete incrustable y ejecutar el cargador inicial en el objetivo

Una vez que el servidor Pyramid esté en ejecución y el script Base esté listo, puede configurar la variable pyramid_module en el archivo Agent/cradle.py y ejecutarlo en el objetivo. El cargador inicial está diseñado para ejecutarse con las bibliotecas estándar de Python.

Ejemplo

Ejemplo de ejecución del servidor HTTP Pyramid usando certificado SSL, proporcionando autenticación básica, cifrando archivos de entrega con ChaCha y generando automáticamente la configuración del servidor en los módulos e imprimiendo un cargador inicial listo para pegar para 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

Al iniciar, pyramid.py analizará su propia estructura de carpetas para buscar key.pem, cert.pem y entregará archivos desde la carpeta Server.

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

Consejo para ejecutar Pyramid sin ventana visible

Para ejecutar Pyramid sin mostrar una ventana visible de python.exe, puede aprovechar pythonw.exe, que no abrirá una ventana de consola al ejecutarse y está contenido en el mismo paquete Windows Embeddable Package. La siguiente imagen ilustra un ejemplo de uso de pythonw.exe para ejecutar base-tunnel-socks5.py en una máquina remota sin abrir una ventana de consola de python.exe.

image

Limitaciones

La carga dinámica de módulos de Python no admite de forma nativa la importación de archivos *.pyd que son esencialmente dlls. La única solución pública que conozco que resuelve este problema es la proporcionada por Scythe *(in-memory-execution) mediante la reingeniería del intérprete CPython. Para no perder la firma digital, una solución que permitiría usar el paquete Python Embeddable nativo implica eliminar en disco los archivos pyd o wheels requeridos. Esto no debería tener implicaciones OPSEC significativas en la mayoría de los casos; sin embargo, tenga en cuenta que los siguientes wheels que contienen archivos pyd se eliminan en disco para permitir que se complete la carga dinámica: *. Cryptodome: necesario para Bloodhound-Python, Impacket, DonPAPI y LaZagne *. bcrypt, cryptography, nacl, cffi: necesario para paramiko

Cómo defenderse de esta técnica

Python.exe es un binario firmado con buena reputación y no proporciona visibilidad sobre el código dinámico de Python. Pyramid explota estas propiedades de evasión llevando a cabo tareas ofensivas desde el mismo proceso python.exe.

Por esta razón, una de las soluciones más eficientes sería bloquear por defecto los binarios y dlls firmados por la Python Foundation, creando excepciones solo para los usuarios que realmente necesiten usar binarios de Python.

También se pueden generar alertas sobre descargas de paquetes incrustables.

La implementación de PEP-578 también es factible, aunque compleja; esta es una implementación de muestra. Sin embargo, implementar PEP-578 sin bloquear el uso de binarios Python estándar podría hacer que esta contramedida sea inútil.

Descargar herramienta