Blog

ACTUALIDAD
1 Ago 2019

Postexplotación – Gathering con PowerShell

Postexplotación – Gathering con PowerShell

Buenos días a tod@s.

Nuestro objetivo esta vez se trata de la recolección de información de un sistema haciendo uso de un script llamado Gathering, el cual está desarrollado en PowerShell.

PowerShell es la línea de comandos basada en .NET Framework, muy flexible y de gran potencia. Gracias a esta línea de comandos el usuario puede administrar los distintos sistemas.

Gathering tiene el objetivo de recolectar información del sistema donde se ejecuta, es decir, localmente. Recolecta información sobre las aplicaciones instaladas en la máquina, configuraciones IP, tablas de rutas, caché DNS, usuarios y grupos del sistema, el usuario actual ejecutándose en la máquina, servicios vulnerables y, por último, en caso de tener permisos de administrador, este script descargará el script Invoke-PowerDump de su repositorio en GitHub y lo ejecutará para hacer un volcado de hashes.

Este script esta pensado para su utilización en la fase de postexplotación, que es la fase donde se considera que podría tener más utilidad, ya que cuando se accede a un sistema se necesita recolectar la información de este lo más rápido posible para su posterior análisis, y así tener claro si se va a poder realizar una escala de privilegios, pivoting, port forwarding, etcétera.

Os facilito los enlaces desde donde podéis descargar tanto el script Gathering como el script Invoke-PowerDump:

Gathering – Código fuente

A continuación se exponen capturas de pantalla con su respectiva explicación del código del script:

Función “Gathering: la cabecera con la descripción del script y ejemplos de uso.

Postexplotacion - Gathering con PowerShell

 

Parámetros: este script solo hace uso de un parámetro obligatorio “Privileged”. Este parámetro indica si se tienen o no permisos de administrador.

Postexplotacion - Gathering con PowerShell

 

Aviso de uso: si el parámetro Privileged es diferente de [yes] se avisa al usuario que no se va a poder realizar el volcado de hashes.

Postexplotacion - Gathering con PowerShell

 

Crear carpeta: comprueba si la carpeta [Results] existe en el escritorio; si existe, se borra y se crea una nueva, si no existe, se crea directamente.

Postexplotacion - Gathering con PowerShell

 

Lista de aplicaciones: recopila información de las aplicaciones instaladas en el sistema local y almacena los resultados en un archivo llamado ApplicationList.txt.

Gathering con PowerShell - Postexplotacion

 

Configuraciones IP – Tablas de enrutamiento – Caché DNS: recopila información de las configuraciones IP, tablas de enrutamiento y caché DNS en el sistema local y almacena los resultados en un archivo llamado IpRoutingDns.txt.

Gathering con PowerShell - Postexplotacion

 

Usuarios y grupos: recopila información de todos los usuarios y grupos del sistema local y almacena los resultados en un archivo llamado UsersAndGroups.txt

Gathering con PowerShell - Postexplotacion

 

Usuario actual: recopila información del usuario actual en el sistema local y almacena los resultados en un archivo llamado CurrentUser.txt.

Gathering con PowerShell - Postexplotacion

 

Firewall: recopila información del cortafuegos en el sistema local y almacena los resultados en un archivo llamado CurrentUser.txt.

Postexplotacion - Recopilacion de informacion

 

Servicios vulnerables: comprueba si hay posibles rutas de los binarios de servicios de Windows que no estén especificadas entre comillas.

Esto presenta un problema y es que, si una ruta no está entre comillas, Windows ejecutará el binario de la primera ruta válida hasta el primer espacio.

En otras palabras, al detectar esto un atacante puede aprovechar este hándicap para provocar una escalada de privilegios después de la ejecución de un binario creado para la ocasión.

Finalmente, los resultados se almacenan en un archivo llamado VulnerableServices.txt.

Postexplotacion - Recopilacion de informacion

Invoke-PowerDump: si el parámetro Privileged es igual a [sí], se verifica que tiene permisos de administrador; si tiene permisos, se descargará el script Invoke-PowerDump con el cmdlet Invoke-Expression que ejecuta un string cmdlet New-Object, creando una clase .NET Framework llamada [System.Net.WebClient], y con su método DownloadString se descarga el contenido (formato string) de una URL. Finalmente se ejecuta el script llamando a la función Invoke-PowerDump.

En caso de no tener permisos de administrador, se le advertirá que el volcado de hashes no ha sido posible.

Los resultados son almacenados en un archivo llamado Hashdump.txt.

Postexplotacion - Recopilacion de informacion

 

Terminado: avisa de que el script ha terminado y que puede revisar la carpeta creada con los archivos, los cuales contienen la información recopilada del sistema local.

Postexplotacion - Recopilacion de informacion

GATHERING CON POWERSHELL EN POSTEXPLOTACIÓN – PRUEBA DE CONCEPTO

Una vez explicado el script, se va a proceder a realizar una prueba de concepto para comprobar los resultados y la ejecución de este.

Lo primero que tenemos que hacer es copiar el contenido del script, abrir una PowerShell y pegarlo, tal y como quedaría en la siguiente captura de pantalla:

Gathering con PowerShell - Recopilacion de informacion

Cuando esté el script entero habrá que pulsar «enter» para que se almacene la función que acabamos de crear. Para poder comprobar si existe, nos dirigimos al provider de funciones con el comando «Set-Location function:» y posteriormente ejecutamos un «ls» para listar las funciones guardadas. Como se podrá observar en la siguiente captura de pantalla la función Gathering se ha creado correctamente:

Gathering con PowerShell - Recopilacion de informacion

Por último, solo queda ejecutar la función con el comando «Gathering yes» y esperar a que recopile la información del sistema y la almacene en una carpeta que creará en el escritorio (llamada Resultados.txt):

NOTA: No hay que olvidarse de ejecutar la PowerShell con permisos de adminsitrador si se quieren recolectar los hashes de la máquina.

Gathering con PowerShell - Recopilacion de informacion

Gathering con PowerShell - Recopilacion de informacion

Espero que os haya gustado ¡nos vemos en la próxima entrega!

Autor:

Juan Miranda Blitz

Auditor de The Security Sentinel

Posicionamiento Web SEO: David Moreno Rozas

Postexplotación – Gathering con PowerShell