Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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
Inline-Execute-PE — Ejecutar ejecutables de Windows no administrados en Balizas de CobaltStrike | Kitploit
Herramientas/GitHubGitHub/octoberfest7/inline-execute-pe
Escalada de Privilegios
GitHuboctoberfest7/inline-execute-pe

Inline-Execute-PE

Ejecutar ejecutables de Windows no administrados en Balizas de CobaltStrike

Ver Repositorio
7231037hace 3 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

Inline-Execute-PE

AVISO:

Este proyecto es complejo y no entender cómo funciona ni probarlo adecuadamente puede resultar en el colapso de los Beacons y la pérdida de acceso.

Recomiendo encarecidamente leer toda la documentación hasta la sección "Consideraciones de diseño y comentarios".

Introducción

Inline-Execute-PE es un conjunto de archivos objeto de Beacon (BOF) y un script Aggressor para CobaltStrike que permite a los Operadores cargar ejecutables de Windows no administrados en la memoria de Beacon y ejecutarlos, recuperando la salida y mostrándola en la consola de Beacon.

Esto permite a los Operadores usar muchas herramientas de terceros (Mimikatz, Dsquery, herramientas de Sysinternals, etc.) sin necesidad de descargarlas a disco, reformatearlas como código independiente de posición usando una herramienta como Donut, o crear un nuevo proceso para ejecutarlas.

Estos ejecutables se asignan en la memoria de Beacon para que puedan ejecutarse repetidamente sin necesidad de enviarlos a través de la red, asignar nueva memoria y crear un nuevo proceso conhost.exe cada vez.

Los ejecutables cargados en los Beacons son accesibles y pueden ser ejecutados por todos los clientes de CobaltStrike conectados al servidor de equipo de CobaltStrike.

Inline-Execute-PE fue diseñado para Beacons x64 y ejecutables de Windows x64 en C o C++ compilados con Mingw o Visual Studio. Este proyecto no soporta ejecutables x86 ni ejecutables x64 escritos en otro lenguaje o compilados con un compilador diferente.

Configuración

Clone el repositorio y, opcionalmente, ejecute make para recompilar los BOF.

Cargue Inline-Execute-PE.cna en el cliente de CobaltStrike. Asegúrese de que el directorio desde el que se ejecuta CobaltStrike sea escribible por su usuario; Inline-Execute-PE crea un archivo de texto allí (petable.txt) para garantizar la disponibilidad de los datos necesarios para que Inline-Execute-PE funcione.

Comandos

Inline-Execute-PE consta de 3 comandos orientados al objetivo que ejecutan BOF y 3 comandos internos que manipulan la estructura de datos del proyecto:

Orientados al objetivo:

  1. peload
  2. perun
  3. peunload

Estructura de datos interna:

  1. petable
  2. peconfig
  3. pebroadcast

peload

peload es el inicio de Inline-Execute-PE. Este comando se utiliza para cargar un PE en la memoria de Beacon. Realiza las siguientes acciones principales:

  1. Envía el PE especificado a través de la red a Beacon O envía el nombre del PE para leerlo desde el disco en la máquina objetivo
  2. Crea una estructura en la memoria de Beacon para almacenar varios punteros y manejadores requeridos por Inline-Execute-PE durante su ciclo de vida
  3. Asigna memoria en Beacon y escribe el PE en ella con protección RW
  4. Cifra XOR el PE en memoria usando una clave especificada por el usuario
  5. Asigna otro bloque de memoria y copia el PE cifrado XOR en él. Esto es necesario para poder "revertir" el PE en ejecuciones posteriores
  6. Genera un proceso hijo conhost.exe bajo Beacon para inicializar stdin/stdout/stderr
  7. Redirige stdout y stderr a una tubería anónima para que se pueda capturar la salida del PE

perun

perun es el segundo paso en Inline-Execute-PE. Realiza las siguientes acciones principales:

  1. Envía los argumentos de la línea de comandos a través de la red a Beacon
  2. Descifra XOR el PE en memoria
  3. Corrige la tabla de direcciones de importación del PE, enganchando ciertas API relacionadas con los argumentos de la línea de comandos y la salida de procesos
  4. Cambia la protección de memoria del PE a RWX
  5. Ejecuta el PE en su propio hilo
  6. Captura la salida del PE y la devuelve a CobaltStrike
  7. Revierte la protección de memoria del PE a RW
  8. Sobrescribe el PE en memoria con la copia cifrada XOR que se hizo durante peload

peunload

peunload se llama para eliminar el PE de la memoria de Beacon cuando un Operador termina con él o desea cargar un PE diferente. Realiza las siguientes acciones principales:

  1. Cierra los manejadores y punteros de archivo creados durante peload
  2. Termina el proceso conhost.exe creado durante peload
  3. Pone a cero y luego libera ambas copias del PE en memoria
  4. Intenta descargar cualquier DLL cargada por el PE en el proceso de Beacon (opcional)

petable

petable se utiliza para mostrar información sobre todos los PE cargados actualmente en los Beacons.

Cada cliente de CobaltStrike tiene su propio petable; Inline-Execute-PE hace grandes esfuerzos para garantizar la sincronización de sus datos entre todos los clientes de CobaltStrike conectados para que los PE puedan ser utilizados por todos los Operadores. Para más información, consulte "Consideraciones de diseño y comentarios".

image

peconfig

peconfig se utiliza para configurar opciones relacionadas con el funcionamiento de Inline-Execute-PE. Las dos opciones actuales que se pueden modificar son:

  1. Timeout. Esto determina cuánto tiempo esperará perun a que el PE complete su ejecución antes de terminarlo. Existe como una salvaguarda en caso de que se proporcionen argumentos incorrectos a un PE que hagan que nunca retorne/finalice la ejecución. Esta configuración tiene un valor predeterminado de 60 segundos, pero se puede modificar para adaptarse a PE de ejecución más larga.
  2. UnloadLibraries. Esta opción controla si peunload intentará liberar DLL del proceso de Beacon que fueron cargadas por el PE. Está configurada como TRUE por defecto. Algunos PE causan problemas cuando se descargan DLL del proceso de Beacon y pueden causar que Beacon se bloquee, en cuyo caso es mejor dejar todas las DLL cargadas por el PE en el proceso de Beacon. Esto se ha observado al usar powershell.exe (quizás debido a que carga el CLR .Net en el proceso de Beacon).

pebroadcast

pebroadcast se puede usar para transmitir manualmente el contenido del petable de un Cliente a todos los demás clientes de CobaltStrike conectados.

Cada otro cliente de CobaltStrike actualizará su petable con los datos transmitidos. Esto nunca debería ser realmente necesario, pero la característica existe por si acaso.

Uso

Use peload para cargar un PE en la memoria de Beacon
image

Alternativamente, si hay un PE en la máquina objetivo que desea usar sin crear un nuevo proceso, proporcione la ruta y el conmutador --local
image

Llame a perun, pasando cualquier argumento al PE cargado
image

Las comillas dobles en los argumentos deben escaparse con barras invertidas
image

Si ha identificado que un PE causa problemas al intentar liberar DLL durante la descarga, use peconfig para establecer unloadlibraries en false
image

Una vez que haya terminado de usar un PE, llame a peunload para limpiarlo de Beacon
image

Ahora se puede cargar un PE diferente en el Beacon
image

Descargar herramienta