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