Hoy seguimos con el desarrollo de scripts y manejo de la API en Meterpreter. A través del IRB vamos aprendiendo que nos ofrece la API de este payload, sabiendo que existe un comando que se llama hashdump, ¿Podremos obtener el listado de usuarios y los hashes de éstos? El objeto client dispone de una clase priv, la cual al obtener los métodos se observa uno denominado sam_hashes. Este método nos devuelve un array con el listado de usuarios:identificador:hashLM:hashNT.
Vamos a listar esta información de manera un poco más atractiva. Almancemanos el array en una variable llamada hashes, para después iterar sobre ese array sacando cada fila a una variable auxiliar. Hay que darse cuenta que una vez tenemos cada fila, gracias al each y la variable auxiliar, utilizaremos el método split para crear un array separando los elementos que se separan por los ":". De este modo, podremos acceder directamente solo a los campos que nos interesen, por ejemplo, usuarios, LMHash o NTHash...
Hay que tener claro que para poder acceder a esta información debemos tener privilegios adecuados, por lo que si en la sesión de Meterpreter somos un usuario normal, no podremos acceder a dicha información por lo que podemos probar antes de lanzar el método sam_hashes, por el getuid, y en función de éste lanzar el método que queremos. Para ello utilizaremos una expresión regular para comprobar si aparece SYSTEM tras ejecutar getuid.
En otra ocasión podemos hacer un breve script juntando, y vistiendo más bonito, todos los conceptos aquí especificados. ¿Cómo vais con Ruby? :D