Hacking de Infraestructura: Protocolo RPC

En este post vamos a hablar sobre cómo sacarle el máximo provecho al Remote Procedure Call, un protocolo que está integrado en muchísimas aplicaciones. La «Llamada a Procedimiento Remoto» se produce cuando un ordenador solicita un servicio que se encuentra en otro ordenador y que va por una red, sin necesidad de conocer los detalles de esa red, pues todas las comunicaciones están encapsuladas dentro de este protocolo. 

De esa forma los programadores pueden ejecutar estas llamadas de la misma forma que lo harían si el código estuviera en el mismo ordenador, llamando a procesos remotos como se haría en procesos locales.

 

Normalmente, sobre todo en windows, este servicio corre sobre SMB, puerto 139 y 445, como podemos ver a continuación:

Hacking de Infraestructura: Protocolo RPC

No obstante suele tener otros puertos abiertos que muestran su presencia, como el puerto 135, tal y como podemos ver en la siguiente captura de nmap:

Enumeración de Usuarios

Mediante el cliente rpc podemos obtener mucha información interesante sobre el sistema y los usuarios del mismo. A continuación podemos ver cómo es posible obtener los usuarios de un Windows mediante el comando rpcclient. Nótese que hemos podido acceder mediante usuario anónimo (por eso las comillas ‘ ‘ ) debido a un fallo en la configuración de privacidad de este sistema.

Una vez en la consola rpc, ejecutamos el comando enumdomusers para obtener los usuarios del dominio así como sus identificadores relativos (rid).

Podemos ampliar esta información mediante el comando querydispinfo, obteniendo los nombres y las descripciones de los usuarios.

Enumeración de Grupos

Mediante el comando enumdomgroups podemos ver los diferentes grupos de usuarios del dominio:

Causa especial interes el grupo Contractors, pues no es uno de los grupos por defecto. Podemos obtener más información sobre un grupo con el comando querygroup, indicando el rid del grupo:

Y mediante su rid también podemos obtener los miembros que conforman este grupo, utilizando el comando querygroupmem.

Como podemos ver en la imagen superior, el usuario 0x451 es el miembro del grupo Contractors, que resulta ser el grupo de los DNS Admins. Hemos encontrado el usuario más interesante, ahora obtengamos toda la información disponible utilizando el comando queryuser.

Otros Comandos

Puedes ver todos los posibles comandos a ejecutar pulsando tabulador:

SSID de un Usuario

Mediante el comando lookupnames podemos obtener el Service Set Identifier (SSID) de un usuario.

El SSID está compuesto por la primera parte (todo lo que va hasta el último guión) que indica el dominio, y la segunda parte (el último número) que indica el usuario.

Lo más importante es que el administrador siempre va a tener el número 500 al final de su SSID.

Además Mirando un SSID también puedes ver a que usuario pertenece, mediante el comando lookupsids:

Todos los SSID que acaban entre 500 y 599 pertenecen a usuarios por defecto. 

Dado que lo que indica el usuario es el último número detrás del guión, podemos modificar el último número del SSID para hacer fuerza bruta y obtener así los usuarios. Esto se hace mediante el comando lookupnames hazard.

Esto es todo por el momento sobre el protocolo RPC. Este protocolo aunque a priori puede parecer inofensivo, puede ser la clave para acceder a un sistema gracias a la gran cantidad de información que puede llegar a revelar. En varias de ocasiones me he encontrado ordenadores windows que estaban corriendo samba que a priori no había forma de atacar, y gracias a rpcclient pude obtener la información necesaria para vulnerarlos.

Si te ha gustado el artículo, te recomiendo que visites el resto de artículos de hacking de infraestructura.

Lethani.

5/5 - (33 votos)

Deja un comentario