2 abr 2018

Garbage Collector para recoger la basura en Metasploit


Con el reciente Rooted Lab de Metasploit, el cual se ha celebrado por sexto año, y se encuentra en un estado actualizado y mejorado, he querido compartir un script el cual tengo cariño. El script se denominó Garbage Collector y se puede descargar desde mi Github. La idea surgió en una conversación hace años con mi amigo Silverhack o Juan Garrido. La idea era la de 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.

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 interesante y de ubicación 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.

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 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 se ejecuta la lógica y funcionalidad del script.

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.

Los argumentos son “parseados”, como si fuera un bucle. Por cada parámetro introducido se itera con 3 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.

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.

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


Como se puede ver en la siguiente imagen, los ficheros son descargados. En este caso, existen dos usuarios en el sistema (ID 1000 y 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.



Una funcionalidad hecha que puede ayudar a la recopilación de información en la máquina en la fase de post-explotación, por lo que os recomendamos 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 os dejo el Github.

No hay comentarios:

Publicar un comentario