En muchas ocasiones no le dedicamos el tiempo adecuado a la enumeración de objetos, usuarios, características, propiedades, etcétera. Esto es algo importante en un ejercicio de
Red Team o en un proyecto de
Ethical Hacking. La posibilidad de interactuar a través de
RPC con el dominio es siempre interesante, para ello haremos uso de una herramienta llamada
rpcclient y que disponemos en
Kali Linux.
 |
Figura 1; Cómo enumerar información del Active Directory sin dejar "huella" en el logging de un CMD |
En el artículo de hoy vamos a suponer un par de casos: el primero es un caso en el que la
configuración de seguridad de Windows Server 2016 no autentica las llamadas
RPC, por lo que nos podemos conectar al servidor y empezar a trabajar. Esto puede ocurrir y es una cosa a validar en un
Ethical Hacking, sin lugar a la duda.
¿Cómo verifico esto? Es fácil, utilizando la siguiente instrucción: rpcclient -U "" -N [dirección IP]. El parámetro -U indica el usuario con el que vamos autenticar, en este caso ninguno. El parámetro -N indica que la autenticación es nula. El segundo caso, es compatible con el primero, y es disponer de la autenticación de un usuario y podernos conectarnos por RPC. Esto nos puede permitir hacer consultas y hacer un bypass del registro de acciones de un CMD o una Powershell. Esto es interesante. - Computer Configuration \ Administrative Templaes \ System \ Remote Procedure Call.
- Aquí encontramos dos políticas interesantes: Restrictions for unauthenticated RPC clients y RPC endpoint mapper client authentication.
En el registro de Windows también se puede consultar en qué estado se encuentran estas políticas:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Rpc.
Aquí se puede encontrar, si existe la clave, los valores:
- RestrictRemoteClients
- EnableAuthEpResolution
Comprobando que se permiten los clientes no autenticados. Escenario 1
En algunas ocasiones, por compatibilidades, aplicaciones propias que hacen uso de esta tecnología o por cualquier otra razón, se configura de forma insegura un servidor. No es algo crítico el hecho de tener esto activo sin autenticación, pero no es recomendado. Cuando un
pentester puede conectarse al
Domain Controller o
DC para hacer uso de las
RPC y puede lanzar consultas, la enumeración está servida.
Una vez conectados con
rpcclient podemos hacer uso de un comando denominado "
enumdomusers" con el que podemos listar los usuarios de dominio. El comando nos devuelve el nombre de usuario y el
RID. Hay que fijarse en el usuario con el
RID 0x1f4 o, lo que es lo mismo, el
ID 500. Ese usuario es el administrador. El
RID de usuarios de dominio como "
pablo", "
alvaro" o "
fran" se puede ver también con este comando.
 |
| Figura 4: enumdomusers |
Con el comando
queryuser podemos pedir información del usuario, tal y como haríamos en un
CMD con net user, por ejemplo. Lo interesante es el registro de acciones que evitamos con el uso de este tipo de cliente.
 |
| Figura 5: queryuser "pablo" |
Otro ejemplo del comando
queryuser es hacer la consulta a través del
RID. Esto puede ser útil cuando accedemos a un
AD donde hay una gran cantidad de usuarios y queremos buscar alguno en concreto, por ejemplo, el administrador siempre tiene el mismo
RID. La información que devuelve este comando es muy amplia, así como interesante.
 |
| Figura 6: queryuser al "administrador" con el ID 500 |
Ahora vamos a pedir información de todos los usuarios o todas las cuentas, fijándonos en el campo "
description". Si nos fijamos en la cuenta de "
Álvaro", vemos un texto que pone "
123abc.
Pass default changeme!". El típico comentario que puede poner un administrador al crear la cuenta. Parece una contraseña por defecto. El comando ejecutado para obtener toda esta información es "
querydispinfo".
 |
| Figura 7: querydispinfo |
Si recordamos recientemente hemos hecho un artículo sobre
Crackmapexec, una herramienta que permite, entre otras cosas, poder ir probando credenciales a través de
SMB y ver cuál hace
login. Además, permitía hacer uso del
hash y no de la credencial.
En este caso, tenemos la credencial en plano o potencialmente, una de ellas. Vamos a probar a ver qué ocurre sobre el usuario que se ha encontrado. Vemos que no hay acceso correcto, por lo que el usuario "Álvaro" hizo bien su trabajo y cambio la credencial al utilizar la cuenta por primera vez.
 |
| Figura 9: CME SMB |
También recientemente, hemos hablado de la técnica
Password Spraying, la cual viene perfecta en un entorno como el
AD. ¿Por qué es perfecta? Si tenemos la idea de que alguien en el dominio tiene una credencial podemos buscarle gracias a la enumeración de usuarios y al uso de una credencial contra todas las cuentas. La herramienta
crackmapexec nos permitirá hacerlo de forma sencilla. Para el ejemplo, podemos hacerlo manual, pero si hubiera un número notable de usuarios los meteríamos en un fichero, un usuario por línea, y utilizaríamos el nombre del fichero en el parámetro
-u.
 |
| Figura 10: CMB SMB probando password |
Aquí vemos que hemos encontrado la cuenta de un usuario llamado "
pablo" que tiene la credencial activa. Este usuario no cambió la credencial por defecto y ha sido "
cazado". De ahí a tener una shell ya hay un paso muy pequeño, pero eso será en otro artículo.
Cuando RPC va autenticado. Escenario 2
En este pequeño escenario, la diferencia está en cómo accedemos al
AD. En el caso anterior, se podía con autenticación nula, pero en este caso, la idea es que se ha conseguido la credencial de una forma previa al poder hacer uso de la herramienta
rpcclient.
 |
| Figura 11: enumprivs |
Tras conectar e introducir la credencial correcta, conectamos de igual manera contra el
AD. Para poner un ejemplo de los privilegios que tiene el usuario con el que hemos conectado, se puede hacer uso del comando
enumprivs, tal y como se muestra en la imagen.
Más herramientas para el pentesterUna herramienta que no genera mucho ruido y que permite realizar consultas contra el
AD de forma "
discreta". Si crees que pueden estar registrando las acciones que se hacen sobre una
CMD o sobre una
Powershell como, por ejemplo, con
Powershell Transcription, puedes utilizar este tipo de enumeración a través de las
RPC.
Saludos,
More info- Pentest Vs Ceh
- Hacking Tutorials
- Pentest Meaning
- Pentest Book
- Hacking Groups
- Hacking Software
- Hacking Names