Skip to main content
Covenant - un C2 basado en .NET

Covenant – un C2 basado en .NET

Covenant está desarrollado en C# y se caracteriza por contar con una interfaz web que permite aprovechar todas sus carácterísticas de una forma más visual y sencilla.

Bienvenidos a una nueva entrada de Byte Mind. En este caso vamos a hablar de Covenant, uno de los C2 más potentes disponibles actualmente.

Covenant está desarrollado en C# y se caracteriza por contar con una interfaz web que permite aprovechar todas sus carácterísticas de una forma más visual y sencilla. Al igual que otros C2 está enfocado por completo en tareas de post-explotación de sistemas windows, que veremos en detalle en futuros posts.

Cada uno de los elementos de Covenant cuentan con varios mecanismos interesantes para generar sesiones y stagers en la máquina comprometida de una forma muy similar a la que utiliza Metasploit Framework.

Vamos con la instalación del mismo y después continuaremos explicando las partes de este C2.

 

Instalación de Covenant

Para la instalación de Covenant hay dos métodos disponibles, instalando DotNet en el sistema donde se ejecutará la herramienta o mediante docker.

Instalación en el sistema

El primer paso será descargar el core de DotNet, el cual puede hacerse desde el siguiente enlace, eso sí, la versión debe ser la 3.1

Posteriormente descargamos el código desde github

Accedemos al directorio que se acaba de generar

Y lanzaremos covenant

 

Instalación con docker

Si se opta por utilizar docker, la instalación del mismo es muy sencilla.

Descargaremos el código de github

Accedemos al directorio que se acaba de generar

Y construimos nuestro contenedor

Como último paso nos quedará arrancar el contenedor sustituyendo la ruta por donde esté nuestro código de github

 

Una vez instalado, ya sea de una forma u otra, el acceso será a través del navegador y elpuerto 7443 y el primer paso será crear un usuario que será el admin.

 

Listeners

Una vez está el entorno levantado lo primero de todo será crear un Listener, en otras palabras una escucha a la cual deberá conectarse el equipo víctima

Es vital tener en cuenta que la IP y el puerto seleccionado sean accesibles para el equipo víctima, sino será imposible llevar a cabo el ataque.

Se pueden crear tantos como sean necesarios por lo que no hay ningún tipo de límite en este aspeco, además la gestión de los mismos es muy simple desde su interfaz web. Esto listeners serán utilizados posteriormente por los Launchers, encargados de generar los comandos a ejecutar en el equipo víctima.

 

Listeners en Covenant

 

Launchers

Los Launchers representan los comandos que se deben ejecutar en el sistema comprometido para recibir una conexión poder controlarlo de forma remota. Como vemos en la sigueinte captura hay varios tipos disponibles, aunque algunos de ellos ya indica que pueden no funcionar correctamente en windows 10 o las últimas versiones de windows server.

 

Launchers en Covenant

 

Si se accede a algunos de los launchers, es necesario configurar el listener al cual se va a conectar nuestro launcher. 

Una vez completado pinchamos en Generate para generar nuestro payload/binario y posteriormente copiar o descargar el mismo para proceder a ejecutarlo en la máquina víctima y conseguir acceso a la misma.

 

Launchers en Covenant

 

Grunts

Una vez ejecutado el Launcher en la máquina comprometida, dicha instrucción será la encargada de establecer una conexión al listener indicado obteniendo un nuevo Grunt, que en verdad sería el equivalente a un Agent en otras plataformas de C2. En el caso siguiente he creado una vm con un windows 10 home, muy básico, pero suficiente para poder mostrar el potencial de esta herramienta.

 

 

Cada grunt dispone de un identificador único y mostrará en una simple tabla algunos detalles básicos como el sistema comprometido, el usuario que lo ha ejecutado o el nivel de integridad obtenido.

Si pinchamos en uno de los grunt existentes veremos 4 pestañas que explicamos a continuación:

  • Info -> donde mostrará información del sistema víctima infectado
  • Interact -> donde mostrará una consola a través de la cual podremos enviar nuestros comandos al sistema
  • Task -> donde se puede ver las tareas disponible a lanzar en el sistema víctima
  • Taskings -> donde se pueden observar cada tarea ejecutada y el estado de las mismas

Una de las funcionalidades muy útiles en este C2 es que las tareas se ejecutan de forma asíncrona por lo que podemos lanzar varias tareas a la vez sin necesidad de interrumpir o esperar a que finalice la anterior.

 

 

Comprendido el funcionamiento de la herramienta, pasaremos a conocer los principales comandos existentes y como utilizarlos de forma adecuada.

 

Tasks

Los tasks son una serie de elementos ya preparados en la herramienta para realizar tareas de explotación.

Por defecto la herramienta viene con cerca de 100 tasks diferentes disponibles en la sección de cada grunt.

Si nos fijamos en los mismos, hay comandos muy básicos que se pueden ejecutar en una terminal, pero que la posibilidad de ejecutar varias tareas a la vez ayuda a poder realizar una ataque de forma más eficiente.

Tasks en Covenant

 

En la pestaña de Taskings veremos un histórico de los comandos ejecutados en los diferentes grunt, independientemente de que el grunt se haya eliminado o no.

 

Ejecución de comandos

Ahora que ya conocemos las diferentes secciones de la herramienta vamos a ejecutar comandos en el equipo víctima que hemos preparado.

Nos vamos al grunt en el cual hemos ejecutado previamente nuestro launcher y desde la pestaña de interact lanzamos, por ejemplo, un whoami para conocer el nombre del usuario a través del cual tenemos acceso.

 

Además, tal y como hemos comentado anteriormente, en la pestaña de taskings podemos ver todos los comandos lanzados que se van completando de forma asíncrona, por lo que podemos lanzar n tareas a la vez y esperar a que las mismas se vayan completando.

 

Entre todas las herramientas disponibles hasta el momento hay varias que podríamos destacar como podría ser KeyLogger, Mimikatz, SeatBealt, Rubeus… 

Mediante el comando de Help se puede ver un listado de las herramientas disponibles, a las cuales se sumarían posteriormente las diferentes opciones de ejecución disponibles en cada una de ellas.

 

 

Y hasta aquí todo por hoy, espero que les sirva de ayuda en sus ctf, pentesting, etc… y gracias por leernos. Como siempre cualquier duda o aportación es bienvenida en la sección de comentarios.