Imaginemos que hemos obtenido unas credenciales de algun usuario de dominio de Windows por ejemplo el de empleado1 y sabemos que su contraseña es Passw0rd2, pero no podemos acceder a la maquina en modo escritorio viendo el Windows, pues podremos enumerar o hacer cualquier otra cosa de forma remota desde kali de la siguiente forma:
Pero antes vamos a configurar nuestra red en kali para que los servidores DNS apuntes al DC de la siguiente forma:
Buscamos Settings -> Advanced Network Configuration -> IPv4 Settings -> seleccionamos Automatic (DHCP) addresses only -> en DNS Servers ponemos la IP del DC que en mi caso sera 192.168.5.5 -> Save.
Y ya lo tendremos listo, ahora si lo probamos de la siguiente forma:
ping WS01
Esto os deberia de dar ping.
Para poder identificar que IP tiene nuestro Controlador de dominio si estuvieramos sin ningun tipo de informacion, seria de la siguiente forma:
sudo nmap -sS -n 192.168.5.0-7
Info:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-09 04:00 EST
Nmap scan report for 192.168.5.1
Host is up (0.00092s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.5.2
Host is up (0.00027s latency).
Not shown: 999 closed tcp ports (reset)
PORT STATE SERVICE
53/tcp open domain
MAC Address: 00:50:56:F5:72:77 (VMware)
Nmap scan report for 192.168.5.5
Host is up (0.00048s latency).
Not shown: 988 filtered tcp ports (no-response)
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
5357/tcp open wsdapi
MAC Address: 00:0C:29:B0:CB:01 (VMware)
Nmap done: 8 IP addresses (3 hosts up) scanned in 7.62 seconds
Y por lo que vemos podemos identificar que la 192.168.5.5 es claramente el DC por los puertos que tiene abiertos ya que son super comunes en servidores DC.
Herramienta Rpcclient
Para poder enumerar la SAM de forma remota desde kali podremos hacerlo de la siguiente forma:
rpcclient -U "corp\empleado1%Passw0rd2" WS01
Info:
rpcclient $>
Esta herramienta necesita unas credenciales y como las obtuvimos anteriormente, pues las utilizaremos con esta herramienta, como veremos funciona y estaremos dentro de un interpreter conectados a dicho equipo por terminal.
Por ejemplo si queremos enumerar los privilegios que hay en el sistema:
Pero si nosotros queremos enumerar los usuarios de forma remota, tendremos que tener privilegios de administrador y si no los tenemos veremos lo siguiente:
enumdomusers
Info:
result was NT_STATUS_CONNECTION_DISCONNECTED
Esto significa que nos tenemos los permisos suficientes como para realizar esa accion.
Si por ejemplo nos conectaramos como el administrador con un usuario que si tiene privilegios, si podremos hacerlo, por lo que vamos a realizarlo de la siguiente forma para que se vea bien.
group:[Administradores] rid:[0x220]
group:[Administradores de Hyper-V] rid:[0x242]
group:[Duplicadores] rid:[0x228]
group:[IIS_IUSRS] rid:[0x238]
group:[Invitados] rid:[0x222]
group:[Lectores del registro de eventos] rid:[0x23d]
group:[Operadores criptográficos] rid:[0x239]
group:[Operadores de asistencia de control de acceso] rid:[0x243]
group:[Operadores de configuración de red] rid:[0x22c]
group:[Operadores de copia de seguridad] rid:[0x227]
group:[Propietarios del dispositivo] rid:[0x247]
group:[System Managed Accounts Group] rid:[0x245]
group:[Usuarios] rid:[0x221]
group:[Usuarios avanzados] rid:[0x223]
group:[Usuarios COM distribuidos] rid:[0x232]
group:[Usuarios de administración remota] rid:[0x244]
group:[Usuarios de escritorio remoto] rid:[0x22b]
group:[Usuarios del monitor de sistema] rid:[0x22e]
group:[Usuarios del registro de rendimiento] rid:[0x22f]
Si queremos ver que usuario pertenece a que grupo, podremos hacerlo asi:
queryaliasmem builtin <RID>
En mi caso utilizare el identificado RID = 0x220 que es el de Administrador
En lo ejemplos del repositorio encontraremos varios scripts los cuales hacer diversas cosas, esta herramienta ya viene implementada en kali por lo que no tendremos que descargar nada.
Si por ejemplo queremos dumpear la informacion del SAM mediante el protocolo SAMR, podremos hacerlo con el siguiente comando de impacket:
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Retrieving endpoint list from WS01
Found domain(s):
. WS01
. Builtin
[*] Looking up users in domain WS01
Found user: Administrador, uid = 500
Found user: DefaultAccount, uid = 503
Found user: Invitado, uid = 501
Found user: santiago, uid = 1001
Found user: WDAGUtilityAccount, uid = 504
Administrador (500)/FullName:
Administrador (500)/AdminComment: Cuenta integrada para la administración del equipo o dominio
Administrador (500)/UserComment:
Administrador (500)/PrimaryGroupId: 513
Administrador (500)/BadPasswordCount: 0
Administrador (500)/LogonCount: 0
Administrador (500)/PasswordLastSet: <never>
Administrador (500)/PasswordDoesNotExpire: True
Administrador (500)/AccountIsDisabled: True
Administrador (500)/ScriptPath:
DefaultAccount (503)/FullName:
DefaultAccount (503)/AdminComment: Cuenta de usuario administrada por el sistema.
DefaultAccount (503)/UserComment:
DefaultAccount (503)/PrimaryGroupId: 513
DefaultAccount (503)/BadPasswordCount: 0
DefaultAccount (503)/LogonCount: 0
DefaultAccount (503)/PasswordLastSet: <never>
DefaultAccount (503)/PasswordDoesNotExpire: True
DefaultAccount (503)/AccountIsDisabled: True
DefaultAccount (503)/ScriptPath:
Invitado (501)/FullName:
Invitado (501)/AdminComment: Cuenta integrada para el acceso como invitado al equipo o dominio
Invitado (501)/UserComment:
Invitado (501)/PrimaryGroupId: 513
Invitado (501)/BadPasswordCount: 0
Invitado (501)/LogonCount: 0
Invitado (501)/PasswordLastSet: <never>
Invitado (501)/PasswordDoesNotExpire: True
Invitado (501)/AccountIsDisabled: True
Invitado (501)/ScriptPath:
santiago (1001)/FullName:
santiago (1001)/AdminComment:
santiago (1001)/UserComment:
santiago (1001)/PrimaryGroupId: 513
santiago (1001)/BadPasswordCount: 0
santiago (1001)/LogonCount: 5
santiago (1001)/PasswordLastSet: 2025-01-05 12:28:22.004346
santiago (1001)/PasswordDoesNotExpire: True
santiago (1001)/AccountIsDisabled: False
santiago (1001)/ScriptPath:
WDAGUtilityAccount (504)/FullName:
WDAGUtilityAccount (504)/AdminComment: Una cuenta de usuario que el sistema administra y usa para escenarios de Protección de aplicaciones de Windows Defender.
WDAGUtilityAccount (504)/UserComment:
WDAGUtilityAccount (504)/PrimaryGroupId: 513
WDAGUtilityAccount (504)/BadPasswordCount: 0
WDAGUtilityAccount (504)/LogonCount: 0
WDAGUtilityAccount (504)/PasswordLastSet: 2025-01-05 12:21:33.705144
WDAGUtilityAccount (504)/PasswordDoesNotExpire: False
WDAGUtilityAccount (504)/AccountIsDisabled: True
WDAGUtilityAccount (504)/ScriptPath:
[*] Received 5 entries.
Utilizamos el del administrador ya que se requieren privilegios para volcar la informacion del SAM.
Lo que podemos hacer tambien es con este comando capturar sesiones en las que se conecte un usuario a un recurso compartido, pero si lo hacemos con un usuario normal...
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Importing targets
[*] Got 1 machines
Esto lo que va hacer es estar escuchando sesiones de red en las cuales cuando detecte que se conecto un usuario o se intento conectar un usuario a dicho equipo, nos aparecera por aqui la informacion de dicho usuario.
Por ejemplo si ahora nosotros vamos a neustro DC y abrimos una carpeta, en la barra de busqueda ponemos \\WS01\C$
O si mejor lo hacemos desde PowerShell:
dir \\WS01\c$
Y ahora nos vamos a donde tenemos la escucha, veremos lo siguiente:
No veremos absolutamente nada, ya que tambien requiere privilegios de administrador, si nosotros cerramos la escucha y la ejecutamos con unas credenciales de administrador y hacemos todo el proceso anterior de la misma forma:
Y si nos volvemos a donde tenemos la escucha veremos lo siguiente:
WS01: user Administrator logged from host 192.168.5.5 - active: 160, idle: 5
WS01: user CORP\empleado1 logged in LOCALLY
WS01: user CORP\WS01$ logged in LOCALLY