
Covenant es un framework de comando y control para .NET que tiene como objetivo resaltar la superficie de ataque de .NET, facilitar el uso de técnicas ofensivas de .NET y servir como una plataforma colaborativa de comando y control para equipos rojos.
Covenant es una aplicación multiplataforma basada en ASP.NET Core que incluye una interfaz web que permite la colaboración multi-usuario.

Guía de inicio rápido
Consulte la guía de Instalación e Inicio para comenzar con Covenant.
La Wiki documenta la mayoría de las características principales de Covenant y cómo usarlas.
Características
Covenant tiene varias características clave que lo hacen útil y lo diferencian de otros frameworks de comando y control:
- Interfaz intuitiva - Covenant proporciona una aplicación web intuitiva para ejecutar fácilmente una operación colaborativa de equipo rojo.
- Multiplataforma - Covenant está dirigido a .NET Core, que es multiplataforma. Esto permite que Covenant se ejecute de forma nativa en Linux, macOS y Windows. Además, Covenant tiene soporte para docker, lo que permite ejecutarlo dentro de un contenedor en cualquier sistema que tenga docker instalado.
- Multiusuario - Covenant admite la colaboración multiusuario. La capacidad de colaborar se ha vuelto crucial para las operaciones efectivas de equipo rojo. Muchos usuarios pueden interactuar con el mismo servidor de Covenant y operar de forma independiente o colaborativa.
- Impulsado por API - Covenant está impulsado por una API que permite la colaboración multiusuario y es fácilmente extensible. Además, Covenant incluye una interfaz Swagger UI que facilita el desarrollo y la depuración.
- Perfiles de Listener - Covenant admite «perfiles» de listener que controlan cómo se ve la comunicación de red entre los implantes Grunt y los listeners de Covenant en el cable.
- Intercambio de claves cifrado - Covenant implementa un intercambio de claves cifrado entre los implantes Grunt y los listeners de Covenant que se basa en gran medida en un intercambio similar en el proyecto Empire, además del cifrado SSL opcional. Esto logra la propiedad criptográfica de secreto hacia adelante entre los implantes Grunt.
- Compilación dinámica - Covenant utiliza la API Roslyn para la compilación dinámica de C#. Cada vez que se genera un nuevo Grunt o se asigna una nueva tarea, el código relevante se recompila y ofusca con ConfuserEx, evitando payloads completamente estáticos. Covenant reutiliza gran parte del código de compilación del proyecto SharpGen, que describí con mucho más detalle en una publicación anterior.
- Ejecución de C# en línea - Covenant toma prestado código e ideas de los proyectos SharpGen y SharpShell para permitir a los operadores ejecutar fragmentos de una línea de C# en implantes Grunt. Esto permite una funcionalidad similar a la descrita en la publicación de SharpShell, pero permite que los fragmentos de una línea se ejecuten en implantes remotos.
- Indicadores de seguimiento - Covenant realiza un seguimiento de los «indicadores» a lo largo de una operación y los resume en el menú de Indicadores. Esto permite a un operador realizar acciones que se rastrean durante toda una operación y resumir fácilmente esas acciones al equipo azul durante o al final de una evaluación con fines de desconflicción y educativos. Esta característica aún está en sus inicios y todavía tiene margen de mejora.
- Desarrollado en C# - Personalmente, disfruto desarrollar en C#, lo que no será una sorpresa para quienes hayan leído mis últimos blogs o herramientas. No todos estarán de acuerdo en que el desarrollo en C# sea ideal, pero espero que todos coincidan en que es agradable tener todos los componentes del framework escritos en el mismo lenguaje. He encontrado muy conveniente escribir el servidor, el cliente y el implante en el mismo lenguaje. Esto puede no ser una «característica» real, pero con suerte permite que otros contribuyan al proyecto con bastante facilidad.
Preguntas y discusión
¿Tiene preguntas o desea charlar más sobre Covenant? Únase al canal #Covenant en el Slack de BloodHound Gang.