martes, febrero 28, 2017

Garbage Collector para recoger "la basura" en Metasploit

Coincidiendo con el reciente RootedLab de Metasploit, el cual se ha celebrado por quinto año, y se encuentra en un estado actualizado y mejorado, he querido compartir un script al que tengo cierto cariño. El script se denominó en su momento Garbage Collector y se puede descargar desde mi Github. La idea surgió en una conversación hace años con mi amigo Juan Garrido "Silverhack". La intención era la de hacer un módulo de post-explotación creado para, a través de una sesión de Meterpreter, poder descargar todos los archivos y carpetas de todos los usuarios de un sistema comprometido.

Figura 1: Garbage Collector para recoger "la basura" en Metasploit

En algunas ocasiones, los usuarios dejan todo tipo de documentos e información en la Papelera de Reciclaje, por lo que puede ser un punto interesante dónde buscar documentos o archivos jugosos. La papelera de reciclaje no deja de ser un punto jugoso en el disco duro y el sistema de archivos. Esta es una de las razones por las que me decidí a llevar a cabo esta pequeña utilidad dentro de Meterpreter, sobretodo, pensando en una fase de recopilación de información, una vez comprometida la máquina.

Mi "Garbage Collector" para Meterpreter

Los scripts de Meterpreter tienen 3 partes bien diferenciadas. En primer lugar, podemos encontrar la parte de “parseo” de opciones o parámetros con los que se ejecuta el script. La segunda parte es la de comprobación de que el script puede ejecutarse en un entorno o sesión sobre la que se está ejecutando, es decir, si la sesión es de un Meterpreter de Linux y el script está hecho para sacar provecho a una sesión de Meterpreter en Windows, el script puede finalizar su ejecución. En tercer lugar, la zona de ejecución. En esa zona de ejecución corre la lógica y funcionalidad del script.

Figura 2: Parte de comprobación de sistemas operativos en la sesión de Meterpreter

Como se puede ver en la imagen, la primera parte es comprobar la plataforma dónde se ejecutará el script. Si, en este caso, la plataforma no es Windows, el script finalizará. Justo después, se puede ver la asignación y explicación de los parámetros. Para ello se crea un objeto Arguments. Queda claro, que cuando ejecutemos run garbagecollector –h, se mostrará por pantalla el mensaje Help Menu y nos mostrarán la ayuda del script, ese código se encontrará en la zona de ejecución, la veremos más adelante.

Figura 3: Cuerpo principal de Garbage Collector

Los argumentos son “parseados”, como si fuera un bucle. Por cada parámetro introducido se itera con tres variables opt, idx y val. El script presenta dos parámetros funcionales: -g y –o. En el caso del parámetro –g se realizará una descarga recursiva de ficheros y carpetas que haya en la papelera de reciclaje. En el caso del parámetro –o, solo se descargarán ficheros y no carpetas. En el Github se puede encontrar el resto de funciones utilizadas para completar el script y su funcionalidad. En esta imagen, solo se muestra lo que sería el programa principal.

Probando Garbage Collector

Ahora, se muestra una prueba de concepto del script en funcionamiento. Hay que tener en cuenta que si la sesión sobre la que se lance el script está en un contexto elevado se podrá descargar las papeleras de reciclaje de todos los usuarios del sistema. En caso de que no, se puede tener algunos problemas para acceder a las papeleras de otros usuarios.

Figura 4: Ejecución de Garbage Collector en una sesión de Meterpreter

En la imagen superior, se puede ver como se recopila los ficheros y carpetas de un usuario del sistema. Se diferencia entre ficheros y carpetas. Se van descargando y serán accesibles desde la máquina del atacante, ya que estos se recogen mediante el script.

Figura 5: Ficheros descargados en la máquina Kali Linux local

Como se puede ver en las imágenes de las figuras 5 y 6, los ficheros son descargados. En este caso, existen dos usuarios en el sistema (ID 1000 e ID 1001) que tienen archivos en la papelera de reciclaje. Tal y como se puede ver se puede recuperar, tanto el contenido del fichero como el nombre de la ruta del fichero.

Figura 6: Contenido de una carpeta en la Papelera de Reciclaje

Una funcionalidad hecha que puede ayudar a la recopilación de información en la máquina en la fase de post-explotación en un Ethical Hacking, por lo que os invito a que metáis el script en vuestra mochila en el pentesting. Todavía no está en el framework oficial de Metasploit, por lo que si queréis utilizarla la tenéis en el Github.

Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell

1 comentario:

  1. Lo que me llamó la atención del articulo es ver a Cantinflas !!! :)

    ResponderEliminar