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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
InlineExecute-Assembly — Cobalt Strike BOF para ejecución de ensamblados .NET en proceso con omisión de AMSI/ETW, AppDomain personalizado y redirección de salida por named pipe/mailslot. | Kitploit
Herramientas/GitHubGitHub/anthemtotheego/inlineexecute-assembly
Post-ExplotaciónRed Teaming
GitHubanthemtotheego/inlineexecute-assembly

InlineExecute-Assembly

Cobalt Strike BOF para ejecución de ensamblados .NET en proceso con omisión de AMSI/ETW, AppDomain personalizado y redirección de salida por named pipe/mailslot.

Ver Repositorio
76614021hace 5 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

InlineExecute-Assembly

InlineExecute-Assembly es una prueba de concepto de archivo de objeto de baliza (BOF) que permite a los profesionales de seguridad realizar la ejecución de ensamblados .NET en proceso como alternativa al módulo tradicional de fork and run execute-assembly de Cobalt Strike. InlineExecute-Assembly ejecutará cualquier ensamblado con el punto de entrada Main(string[] args) o Main(). Esto debería permitir ejecutar la mayoría de las herramientas publicadas sin necesidad de modificaciones previas.

El BOF determinará automáticamente qué Common Language Runtime (CLR) se necesita cargar en el proceso para su ensamblado (v2.0.50727 o v4.0.30319) antes de la ejecución y, en la mayoría de los casos, debería finalizar correctamente si surge algún problema. El BOF también admite varias banderas que permiten al operador dictar varios comportamientos antes de la ejecución de .NET, que incluyen: deshabilitar AMSI mediante parches en memoria, deshabilitar y restaurar ETW mediante parches en memoria, personalización del nombre del dominio de aplicación CLR a crear, si se debe crear y dirigir la salida de consola de su ensamblado a una named pipe o mailslot, y permite al operador cambiar el punto de entrada predeterminado de Main(string[] args) a Main(). Más detalles sobre el uso, casos de uso y posibles detecciones se pueden encontrar a continuación y en https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/.

Por último, la ventaja de ejecutar nuestros ensamblados .NET en el mismo proceso que nuestro beacon implant es que evitamos el comportamiento predeterminado del módulo execute-assembly de Cobalt Strike, que crea un nuevo proceso para luego cargar/inyectar el CLR/ensamblado .NET. Sin embargo, aún existen otras consideraciones de opsec, por ejemplo, ¿el proceso en el que estamos ejecutando normalmente carga el CLR? ¿O el ensamblado .NET que estamos ejecutando tiene alguna firma conocida? Por lo tanto, la desventaja es que si algo se detecta y se mata, por ejemplo por AMSI, también se mata su beacon.

Referencias del tema

Esta herramienta no existiría sin poder apoyarse en investigaciones, herramientas y código realmente excelentes ya publicados por miembros de la comunidad de seguridad. Muchas gracias. Por último, si cree que alguien ha quedado fuera a continuación, por favor hágamelo saber y me aseguraré de agregarlo.

  • HostingCLR - aquí - Lógica de ejecución de ensamblados/CLR
  • Dotnet-Loader-Shellcode - (por @modexpblog) - aquí - Investigación excelente en general, incluidas interfaces COM para ejecutar .NET en C -> Real MVP
  • Donut - (por @TheRealWover y @modexpblog) - aquí - Encabezado de interfaces COM
  • Memory Patching AMSI Bypass - (por @_RastaMouse) - aquí - Investigación sobre parches de memoria AMSI
  • Metasploit-Execute-Assembly - (por @b4rtik) - aquí - Parches AMSI modificados y función de búsqueda de versión .NET utilizada
  • ExecuteAssembly - (por @med0x2e)- aquí - Script aggressor modificado
  • Hiding Your .NET ETW - (por @xpn) - aquí - Gran investigación sobre ETW
  • ETW BOF - (por @ajpc500)- aquí - Parches ETW modificados
  • ExecuteAssembly_Mailslot - (por @N4k3dTurtl3)- aquí - Uso de mailslots para redirección de consola modificado
  • @freefirex2 - Fue tan amable de compartir algunos buenos detalles internos y trampas de los BOF.

Comenzando

  1. Copie la carpeta inlineExecute-Assembly con todo su contenido a un sistema al que planea conectarse mediante la aplicación GUI de Cobalt Strike.
  2. Cargue el script Aggressor inlineExecute-Assembly.cna
  3. Ejecute inlineExecute-Assembly --dotnetassembly /ruta/al/ensamblado.exe para la ejecución más básica (consulte los casos de uso a continuación para ejemplos específicos de banderas)

Compile el suyo propio

Ejecute el siguiente comando dentro del directorio src mediante el x64 Native Tools Command Prompt para VS 2019

cl.exe /c inlineExecute-Assembly.c /GS- /FoinlineExecute-Assemblyx64.o

Ejecute el siguiente comando dentro del directorio src mediante el x86 Native Tools Command Prompt para VS 2019

cl.exe /c inlineExecute-Assembly.c /GS- /FoinlineExecute-Assemblyx86.o

Banderas

--dotnetassembly        Ruta del directorio a su ensamblado **obligatorio**
--assemblyargs          Argumentos del ensamblado a pasar
--appdomain             Cambiar el nombre predeterminado del AppDomain enviado (el valor predeterminado es totesLegit y se establece mediante el script aggressor incluido) *El dominio siempre se descarga*
--amsi                  Intenta deshabilitar AMSI mediante parches en memoria (si tiene éxito, AMSI se deshabilitará durante toda la vida del proceso)
--etw                   Intenta deshabilitar ETW mediante parches en memoria (si tiene éxito, ETW se deshabilitará durante toda la vida del proceso a menos que se revierta)
--revertetw             Intenta deshabilitar ETW mediante parches en memoria y luego lo vuelve a parchear a su estado original
--pipe                  Cambiar el nombre predeterminado de la named pipe (el valor predeterminado es totesLegit y se establece mediante el script aggressor incluido)
--mailslot              Cambia a usar mailslots para redirigir la salida de consola. Cambia el nombre predeterminado del mailslot (si se deja en blanco, el valor predeterminado es totesLegit y se establece mediante el script aggressor incluido)
--main                  Cambia el punto de entrada a Main() (el valor predeterminado es Main(string[] args))

Caso de uso

Ejecutar ensamblado .NET

Sintaxis

beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe

Caso de uso

Ejecutar ensamblado .NET con argumentos

Sintaxis

beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe --assemblyargs AntiVirus AppLocker

Caso de uso

Ejecutar ensamblado .NET con argumentos y deshabilitar AMSI

Sintaxis

beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe --assemblyargs AntiVirus AppLocker --amsi

Caso de uso

Ejecutar ensamblado .NET con argumentos y deshabilitar ETW

Sintaxis

beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe --assemblyargs AntiVirus AppLocker --etw

Caso de uso

Ejecutar ensamblado .NET con argumentos y redirigir la salida mediante mailslots en lugar de la named pipe predeterminada

Sintaxis

beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe --mailslot

Caso de uso

Ejecutar ensamblado .NET con argumentos y cambiar el nombre predeterminado de la named pipe establecido en el script aggressor

Sintaxis

beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe --pipe forRealLegit

Caso de uso

Ejecutar ensamblado .NET y cambiar el dominio de aplicación predeterminado establecido en el script aggressor

Sintaxis

beacon> inlineExecute-Assembly --dotnetassembly /root/Desktop/Seatbelt.exe --appdomain forRealLegit

Caso de uso

Ejecutar ensamblado .NET con punto de entrada Main() en lugar del predeterminado Main(string[] args)

Sintaxis

Descargar herramienta