GhostPack es una colección de herramientas enfocadas a labores de post-explotación en sistemas Windows, las cuales se encuentran en su mayoría, desarrolladas en C#. A la fecha de redactar este post hay 10 utilidades disponibles en el repositorio de GitHub de esta colección:  Seatbelt, SharpUp, SharpDump, SharpRoast, SafetyKatzSharpWMI, SharpDPAPI, Rubeus, KeeThief y Lockless. Cada una de ellas se encuentra en repositorios separados, pero todas bajo el contexto de lo que se conoce como “GhostPack”. Dado que se trata de herramientas que vienen muy bien para un proceso de post-explotación en Windows, se procede a explicar las más relevantes y cómo utilizarlas.

SeatBelt

Se trata de un proyecto muy similar a otros de los que ya se han mencionado anteriormente en la serie de posts sobre Enumeración básica en sistemas Windows para Post-explotación. Intenta realizar un conjunto de comprobaciones poco agresivas o intrusivas sobre el sistema comprometido, con el objetivo de recolectar información que sea relevante tanto para equipos de RedTeam como para BlueTeam.
En primer lugar, en el repositorio no se encuentra el binario correspondiente y en el README se indica que tampoco está planeado distribuirlo, no obstante con una instalación de Visual Studio y una versión del Framework de .NET 3.5 o 4.x es suficiente para compilar la solución C# y generar un binario.

Una vez compilado el proyecto, su ejecución es muy simple. Basta con lanzar el comando sin ningún argumento para ver las opciones admitidas. A la hora de lanzar SeatBelt se pueden especificar comandos directos que consultarán algún tipo de detalle en el sistema o grupos predefinidos que categorizan los comandos disponibles. La forma más cómoda y rápida de usar SeltBelt es precisamente especificar un grupo concreto y ver qué se obtiene.

Lo que se puede apreciar en la imagen anterior es que se ha establecido una conexión utilizando Evil-winrm ya que en la víctima el servicio de WinRM se encuentra habilitado por lo tanto resulta cómodo y conveniente ejecutar la herramienta desde una sesión con WinRM. Se puede comprobar que la cantidad de comandos disponibles es considerablemente larga y que probablemente es mucho mejor ejecutar grupos de comandos tal como se comentaba anteriormente. Precisamente, en los mensajes que aparecen cuando se ejecuta el binario sin argumentos, aparecen los grupos disponibles y los comandos que ejecutará SeltBelt.

Ejecutar un grupo es una tarea sencilla, ya que solamente hace falta indicar un grupo concreto y la herramienta habilitará los comandos asociados de forma automática y además, los resultados de la ejecución de SeatBelt se pueden almacenar en un fichero en formato JSON.

A la hora de consultar dichos ficheros se puede apreciar la gran cantidad de información que aportan. De hecho, algunos grupos de SeatBelt extraen información muy completa algo que utilizando los módulos de Post-Explotación disponibles en Metasploit Framework se podría conseguir lanzando varios módulos de forma individual.

SharpDump

Nuevamente, se trata de un “port” de otro de los scripts disponibles en PowerSploit, en este caso concreto es el Out-Minidump el cual se encarga de volcar la memoria de un proceso concreto para su posterior análisis. Para hacer esto, se invoca a la función MiniDumpWriteDump que por defecto se encarga de dejar el fichero con el volcado de la memoria en el directorio C:\\Windows\\Temp. Así como el script Out-Minidump es fácil de ejecutar, el programa SharpDump también lo es. Basta con indicar el PID del proceso que se pretende volcar y la utilidad hará el resto. En el caso de no indicar dicho PID, volcará la memoria del proceso LSASS.

Como se puede apreciar, al no indicar un PID el programa se encarga de encontrar el PID del proceso LSASS y volcar, suponiendo que se cuente con privilegios suficientes para ello. Además se puede ver que se recomienda utilizar el módulo “sekurlsa::minudump” de Mimikatz para analizar el volcado anterior.

Cuando se selecciona un PID concreto la herramienta intenta acceder a dicho proceso y volcar los contenidos que tiene en memoria. Es un funcionamiento bastante simple, pero como se ha comentado anteriormente dependerá del nivel de privilegios que tenga el usuario en cuestión para acceder al proceso y operar sobre él.

En el siguiente post se explicará el uso de otras utilidades disponibles en GhostPack. Si te ha gustado este post o tienes alguna pregunta te animo a que dejes un comentario. 🙂

Un saludo y Happy Hack!
Adastra.