principal2.jpg
Blog HbS

Postexplotación – Gathering con PowerShell

powershell 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.

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. 

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. 

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.

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

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

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 

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

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

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.

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.

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.

 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:

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 siguiente 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:

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): 

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

Autor: Juan Miranda Blitz

Postexplotación – Gathering con PowerShell 

Instalación de powershell sobre Ubuntu
Entrevista a Chema Alonso

Artículos relacionados

By accepting you will be accessing a service provided by a third-party external to https://www.hackbysecurity.com/

Logo_blanco_web.png

fbintwtwtw

Pida más información en: info@hackbysecurity.com
o
Contáctenos

Agrega tu email para recibir novedades de seguridad
Estoy de acuerdo con el Términos y Condiciones