Demostración en vídeo de este post

 

En el post anterior se ha visto cómo instalar y utilizar Covenant, es una herramienta fácil de utilizar y muy potente, parecida a Empire Framework en muchos aspectos. En este post se verá cómo utilizar sus principales características para poder llevar a cabo procesos de post-explotación. Lo primero que hay que decir es que los comandos que se pueden ejecutar en un «Grunt» se ejecutan en forma de «tasks» asíncronas, lo que permite ejecutar múltiples comandos sin tener que esperar a que el anterior termine. Esto es algo que efectivamente, acelera el proceso de post-explotación, pero hay que tener cuidado de no abusar ya que si se lanzan múltiples tareas que consumen una cantidad considerable de recursos puede verse afectado el rendimiento del sistema comprometido.

Tasks en Covenant

Uno de los elementos que llaman la atención son las «tasks» que se encuentran ya preparadas en la herramienta. Se trata simplemente de «alias» de comandos habituales en procesos de explotación. Hay cerca de 100 tasks preconfiguradas a la fecha de redactar este post y todas se encuentran disponibles en la sección «interact» de cada Grunt. Si bien es cierto que son comandos que se podrían ejecutar directamente desde una terminal, lo bueno que tienen es que ejecutan varias instrucciones para llevar a cabo un ataque concreto lo que ayuda a ser más eficiente una vez se gana la costumbre de usar el entorno de Covenant.


En la sección de «Taskings» que se encuentra en el panel lateral se podrán ver todos los comandos o tasks que se han ejecutado contra cada uno de los Grunts disponibles en el entorno. Mantiene un histórico de cada operación realizada aunque el Grunt ya no se encuentre activo.

Ejecución de comandos en el Grunt

Para ejecutar cualquiera de los comandos (Tasks) disponibles en la herramienta, es necesario seleccionar el Grunt con el que se desea trabajar y posteriormente, seleccionar la pestaña «interact» la cual proporciona una shell simple para ejecutar los comandos disponibles. Dicha shell cuenta con una cómoda función de autocompletar, por lo que rápidamente aparecen los tasks que se pueden ejecutar.

Por otro lado, las pestañas que aparecen al lado de «Interact» permiten visualizar los comandos que se han ejecutado previamente y sus resultados, algo que permite saber cuáles han sido los resultados anteriores y conocer el estado de la tarea (en proceso o finalizada).

KeyLogger

Se trata de un comando útil que permite iniciar un KeyLogger durante un periodo de tiempo concreto. Es posible capturar todas las pulsaciones del teclado en el sistema comprometido durante el número de segundos indicado.

DCSync

Permite ejecutar Mimikatz con el comando «lsadump::dcsync», un ataque muy común en entornos de Active Directory y que permite recuperar los hashes de cualquier usuario del dominio, incluyendo la cuenta de Administrador o KRBTGT. No obstante, para ejecutar este ataque se deben cumplir una serie de condiciones previas para que el Domain Controller permita la operación de sincronización, dichas condiciones están relacionadas con los permisos que tenga la cuenta de la máquina o el usuario que ejecuta el comando por lo que no funciona en todos los casos.

SeatBealt

Es uno de los proyectos disponibles en GhostPack y tal como se ha mencionado en otros post que se han publicado en este blog, permite la recolección de información y eventos de seguridad para detectar vulnerabilidades o malas configuraciones que conduzcan a la elevación de privilegios en el sistema.

LogonPasswords

Ejecuta Mimikatz y a continuación lanza los comandos privilege::debug y  sekurlsa::logonPasswords para obtener información sobre las sesiones que se encuentran cargadas en el proceso LSASS.

SharpUp

Ejecuta un conjunto de comprobaciones con el objetivo de encontrar vulnerabilidades que permitan elevar privilegios. Dichas comprobaciones por defecto no son demasiado agresivas con el objetivo no afectar el rendimiento del sistema comprometido o despertar sospechas.

PortScan

Escáner de puertos simple que recibe como argumentos el nombre de la máquina que se desea analizar y un listado de puertos separados por coma. Los resultados incluyen unicamente aquellos puertos que se encuentran abiertos.

SafetyKatz

Ejecuta la utilidad SafetyKatz, la cual a su vez, se encarga de lanzar un «MiniDump» para volcar y guardar en un fichero la información del proceso en el que se ejecuta LSASS. Una vez hecho esto, se utiliza dicho volcado para ejecutar el comando  «logonPasswords full» de Mimikatz.

Rubeus

Es una de las tantas herramientas que soporta Covenant y que se puede ejecutar desde un Grunt. En el caso de Rubeus es una de las herramientas más potentes de GhostPack y permite, entre muchas otras cosas, la gestión de Tickets Kerberos, ataques Pass The Ticket y la extracción e inyección de tickets.

Estos son solo algunos de los muchos comandos que se encuentran disponibles en Covenant. Merece la pena conocer la herramienta a fondo y explorar otros comandos que no se han explicado aquí, se anima al lector a realizar esta investigación y probar la herramienta.

Un saludo y Happy Hack!
Adastra.