Explotando el potencial de Ruby despues de contar con una session de meterpreter, es lo que nos muestra en esta entrada MagoAstral la cual compartió en UC, espero les agrade y vean el uso que se le puede dar.
Estimado lector vuelvo a ser yo MagoAstral, en esta ocasión les mostraré como sacar jugo extra a nuestro framework de explotación favorito es obvio que en todos o casi todos nuestros test de explotación acabamos con una sesión y es en esa fase de “post-explotación” donde hoy nos centraremos.
Una vez que tenemos activa nuestra sesión, procederemos a migrar nuestro proceso, yo lo migraré al explorer:
ps
migrate pid
Una vez que hemos migrado nuestro proceso podemos proceder a ejecutar nuestra shell interactiva, como sabéis metasploit está desarrollado (no en sus inicios) en ruby, por consiguiente podemos a golpe de teclado jugar con un nuevo abanico de posibilidades, para abrir dicha shell simplemente tipearemos:
irb
Una vez que tenemos nuestra shell interactiva vemos que nos arroja un mensaje diciendo que la palabra “client” mantiene al cliente de nuestra sesión. Vamos a familiarizarnos con nuestra shell interactiva recuperando algo de información sobre la máquina víctima, por ejemplo información sobre el sistema. Para esto simplemente ejecutaremos la siguiente sintaxis:
client.sys.config.sysinfo
Vemos que nos arroja una clase de tipo hash, mi salida por pantalla sería:
Como podemos ver dentro de esta clase de objeto podríamos llamar distintos elementos por su clave, pero eso se lo dejo al lector para que se entretenga en sus ratos libres. Es importante destacar que dentro del objeto client tiene diversos métodos, los cuales se pueden observar mediante la siguiente sintaxis:
client.methods
Hay una gran lista y cual mas interesante, pero en esta ocasión entraremos en contacto con el método “railgun”, mi salida por pantalla sería tal que así:
Railgun es una característica única de meterpreter que nos ayudará a tener el control de la API de Windows o tomar el control de una DLL y es eso lo que lo hace tan interesante pues como mencioné anterior mente nos abre un nuevo camino en nuestras auditorias y/o pruebas de penetración.
Podemos ver las DLL cargadas mediante la siguiente instrucción:
client.railgun.known\_dll\_names
La salida sería algo así:
Bueno ahora os mostraré como poder jugar con dichas DLL. En caso de que no sepamos que funciones podemos realizar con las DLL nos ayudaremos de Microsoft, supongamos que queremos obtener el ID del proceso al que migramos anteriormente, sabemos que con la DLL kernel32 lo podemos hacer pero desconocemos la función a utilizar. Gracias a Google y Microsoft podríamos acceder a la lista de funciones en mi caso sería esta:
http://www.geoffchappell.com/studies/windows/win32/kernel32/api/
Buscaremos la función a utilizar y luego para saber la sintaxis de dicha función nos ayudaremos de MSDN en mi caso sería la función: “GetCurrentProcessId” la url:
https://msdn.microsoft.com/es-es/library/windows/desktop/ms683180(v=vs.85).aspx
Como vemos no necesita ningún parámetro por consiguiente ejecutamos lo siguiente:
client.railgun.kernel32.GetCurrentProcessId
Nos devolverá algo así:
Y de esta manera podrás buscar información sobre las DLL y jugar con sus funciones obviamente nadie sabe de memoria todo y los programadores sabrán que con frecuencia se recurre a esta metodología de búsqueda, recordar que la practica hace al maestro.
Para finalizar se llevó a cabo la ejecución de una alerta con railgun el resultado:
Con esto doy por concluido el post, dejo a imaginación del lector lo que se puede llegar a realizar…
Un saludo!