Blog

Conociendo Meterpreter – Parte X – Añadiendo funciones en Railgun

Para ver la serie completa pulsa aqui. Habrá conceptos que se den por obvios ya que están explicados en artículos anteriores.

Buenas a todos! Ya queda muy poquito para que terminemos esta serie sobre meterpreter ;)! En este nuevo post vamos a ver como seria posible añadir nuevas funciones que no vengan definidas en las DLLs predeterminadas que vienen con meterpreter. Para ello haremos uso como en el post anterior del comando IRB, es decir del cliente de Railgun para poder ejecutar las llamadas a las nuevas funciones mediante este cliente.

Para empezar lo primero que vamos a hacer es lanzar el exploit contra la maquina vulnerable para poder obtener una shell de meterpreter y poder empezar…

railgun_add_functions_2

 

Una vez tenemos la sesión abierta en el host vulnerable deberemos de buscar en nuestro sistema donde se encuentra el cliente de Railgun dentro de meterpreter para comprobar que funciones tenemos declaradas y por lo tanto que funciones podemos utilizar desde dicho cliente. Para ello lo mas sencillo seria hacer un “locate railgun” y veremos que nos devuelve lo siguiente (Siempre que estéis en Kali)…
railgun_add_functions_3

 

Una vez tenemos localizado el directorio nos metemos dentro y vemos que hay, tendremos que entrar dentro de la carpeta “def” como podemos ver a continuación, que es donde se almacenan todos los ficheros de las DLLs (Con las funciones por defecto) que vienen por defecto en meterpreter para utilizar Railgun…

railgun_add_functions_4

 

Si abrimos cualquiera de esos ficheros vamos a ver que están declaradas las funciones que podemos usar por defecto en el cliente de Railgun con sus parámetros, el tipo de los argumentos, etc…

railgun_add_functions_5

 

Ahora es cuando vamos a ver como podríamos ejecutar funciones que no estén definidas en estos ficheros para hacer lo que realmente queramos en el sistema comprometido. Lo primero que vamos a hacer es probar que realmente no nos deja ejecutar funciones que no estén declaradas, donde como podemos ver nos lanza un error, indicándonos que efectivamente no existe la función declarada y nos muestra cuales si lo están…

railgun_add_functions_6

railgun_add_functions_7

 

La función que hemos intentado utilizar no esta declarada, y sirve para poder cambiar la contraseña de un usuario en el sistema. Para poder añadirla lo primero que deberíamos hacer es comprobar que argumentos necesita dicha función y de que tipo son, para ello visitamos la siguiente pagina: http://msdn.microsoft.com/en-us/library/windows/desktop/aa370650(v=vs.85).aspx

Si queremos añadir cualquier otra función seria realizar el mismo proceso, es decir, buscar cual es la estructura de la función. Bien, ahora que ya sabemos como es la declaración de la función vamos a ver como podríamos añadir dicha función para poder utilizarla con el cliente Railgun. Para hacer esto tenemos dos formas que son:

Añadirlo mediante la linea de comandos de la siguiente forma:

railgun_add_functions_9

 

Cuando nos sale esto significa que se a añadido de forma correcta, por lo tanto ya podríamos utilizarla, pero vamos a ver la otra forma de poder utilizar una función que seria añadiéndola al fichero de la DLL correspondiente.

Esto nos permite una gran ventaja y es que de esta forma a diferencia de la forma anteriormente vista, la función sera permanente y pasara a estar “por defecto”, así podremos utilizarla siempre que iniciemos meterpreter sin tener que volverla a declarar.

Para hacerlo de esta manera deberemos ver la DLL, abrir el fichero he introducir la función de forma similar a las anteriores…

railgun_add_functions_11

 

Una vez echo esto, escojamos la forma que escojamos podemos ver que somos capaces de ejecutar con éxito la función en el sistema vulnerado (Podemos observar que nos devuelve “return => 0”, lo cual implica que la funciona  sido ejecutado en el sistema victima sin problemas y de forma satisfactoria)…

railgun_add_functions_10

 

Y hasta aquí el post de hoy, donde hemos visto como seria posible añadir cualquier función a las DLLs existentes en Windows para poder ejecutar la acción que queramos dentro del sistema. Con estos conocimientos veremos en el siguiente y ultimo post como podríamos crearnos un script propio de meterpreter haciendo llamadas personalizadas al cliente de Railgun de forma completamente automatizada.

Espero que os haya gustado!

Un saludo,

Eduardo  – eduardo@highsec.es – @_Hykeos

Leave a Reply

*

    No Twitter Messages