5 jun 2020

Covenant: Un Command and Control un tanto vacilón (Parte II)

¡Muy buenas a todos!

En el artículo anterior, tratamos una serie de problemas que nos podemos encontrar durante el uso de Covenant. No obstante, estas eran situaciones bastante "fáciles" de arreglar. En el artículo de hoy, trataremos cuatro nuevos casos un poco más específicos. ¡Comencemos!

Problema 4: La pantalla Tasks no ejecuta los comandos automáticamente.

Fig 1: Pantalla de Tasks.

Solución: Al lanzar la ejecución de un comando desde la pestaña Tasks, es probable que no obtengáis ningún resultado por pantalla de manera automática. Aunque técnicamente debería autorefrescarse solo y mostrar los resultados del comando lanzado, es posible que tengáis que forzarlo de manera manual para que se muestren.

Fig 2: Tras refrescar, se muestra el resultado del comando (si todo ha ido bien).

Problema 5: El comando Powershell no devuelve respuesta en determinadas situaciones.

Solución: Este problema se puede deber a varios motivos:
  • Se está intentando ejecutar un módulo de Powershell no cargado. Por ejemplo, cualquier módulo de PowerView sin haberlo cargado en memoria previamente.
Fig 3: Ejecución en Covenant sin output.
Fig 4: Ejecución en Powershell con output.
  • Se ha ejecutado un comando de Powershell con errores de sintaxis. Por ejemplo, oneliners maravillosos con una comilla extraviada.
Fig 5: Ejecución en Covenant sin output.
Fig 6: Ejecución en Powershell con output.
Como se ve en la comparativa de las anteriores capturas, Covenant no muestra los errores de Powershell por defecto, por lo que la única recomendación que os puedo hacer es que verifiquéis los comandos antes de lanzarlos.
Fig 7: Comando lanzado correctamente desde Covenant.
Fig 8: Comando lanzado correctamente desde Powershell.

Problema 6: Un SMB Grunt se queda estancado en fase 0 o en fase 2 indefinidamente. Esto suele pasar cuando hemos perdido la conexión con un SMB Grunt (tras cerrarse el proceso) y nos intentamos conectar (tras crear de nuevo el proceso) sin previamente haber eliminado el Grunt perdido.
Fig 9: Situación comentada.
Solución:  Si queremos evitar que se nos quede colgada la nueva conexión, os recomiendo que elimineis el Grunt antiguo del panel de Grunts. Por algún motivo, la base de datos de Covenant se corrompe al tener dos Grunts con el mismo pipename impidiendo que se complete el enlace de la nueva sesión.
Fig 10: Al eliminar el grunt perdido, la sesión se inicia correctamente.
Nota: Es muy importante que el proceso se haya vuelto a ejecutar, si no, estaremos en el caso siguiente.

Problema 7: Tras usar el comando Connect para conectarnos a un SMB Grunt, Covenant devuelve que se ha conectado satisfactoriamente (o da el error "The Semaphore Timeout session has expired"), pero no se crea la sesión.

Fig 11: Se conecta satisfactoriamente, pero no se crea nueva sesión.
Fig 12: Al intentar conectarnos, salta este error.
Solución: Esto ocurre por un sencillo motivo; ya existe una sesión atada a dicho pipe y no es posible que nos conectemos. La única solución viable es crear un nuevo pipe con un nombre diferente o; matar el proceso, volverlo a ejecutar y reintentar la conexión.

Nos vemos en el siguiente (y útimo) artículo.

Happy Juancking!

No hay comentarios:

Publicar un comentario