Cascade

Sistema operativo | Dificultad | Fecha de Lanzamiento | Creador |
---|---|---|---|
Windows | Medium | 28 Marzo 2020 | VbScrub |
Habilitades aprendidas
- RPC Enumeration
- User Enumeration via Kerberos - Kerbrute
- ASREPRoast Attack - GetNPUsers.py (Failed)
- LDAP Enumeration - ldapsearch && ldapdomaindump
- SMB Enumeration - smbclient && smbmap
- Cracking TightVNC Password - vncpwd
- Kerberoasting Attack - GetUserSPNs.py (Failed)
- Abusing WinRM - EvilWinRM
- Enumerating SQLite3 Database File
- Analysis of Windows EXE binary
- Installing DotPeek on a Windows virtual machine
- Reverse engineering the CBC cipher - Obtaining clear text passwords
- Abusing AD Recycle Bin Group - Active Directory Object Recovery (Get-ADObject) [Privilege Escalation]
Reconocimiento
Lanzamos una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.
Enumeración inicial
Realizamos un escaneo con nmap
para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.
nmap -sS -p- --open --min-rate 5000 -Pn -n 10.10.10.182 -oG open_ports -vvv
Lanzamos una serie de script básicos de enumeración propios de nmap
, para conocer la versión y servicio que esta corriendo bajo los puertos.
nmap nmap -sCV -p53,88,135,139,389,445,636,3268,3269,5985,49154,49158,49170 10.10.10.182 -oN services_scan -vvv
Enumeración de servicios
echo "10.10.10.182 cascade.local" >> /etc/hosts
SMB
Intentamos enumerar el servicio SMB utilizando una null session, pero no tenemos suerte.
Tampoco con el usuario guest
.
LDAP
Logramos realizar una enumeración con LDAP utilizando una sesión anonima.
ldapsearch -H ldap://10.10.10.182 -x -b "DC=cascade,DC=local" > results
Logramos generar una lista potencial de posibles usuarios del dominio.
Utilizamos kerbrute
para validar si son usuarios del dominio.
Genial, generamos una nueva lista de usuarios.
s.hickson
arksvc
s.smith
r.thompson
j.allen
Explotación inicial
r.thompsom
Intentamos realizar un ataque AS-REPRoast pero no tenemos suerte.
Podemos realizar un ataque de contraseñas, probando si los usuarios utilizan sus nombres de usuario como contraseña.
Si volvemos a mirar los archivos de la enumeración por LDAP, nos encontramos con un campo particular en el usuario r.thompson el cual nos llama la atención.
El campo, esta presente unicamente en este usuario y por lo que podemos observar es una cadena en base64, la cual puede ser en base al nombre una posible contraseña. Realizamos la correspondiente decodificación y al validar las credenciales con netexec, podemos observar que efectivamente son validas las credenciales del usuario.
Genial. Ahora que tenemos credenciales validas del dominio podemos seguir enumerando a pesar de que no podemos conectarnos.
r.thompson:rY4n5eva
r.thompsom
-> s.smith
Enumeración con ldapdomaindump
Enumeramos recursos compartidos.
Al realizar la enumeración de recursos compartidos, hay uno particular que nos llama la atención, el recurso Data
en el cual tenemos permisos de lectura.
Nos conectamos utilzando smbclient
Para aquellos que se perdieron la reunión de ayer (te estoy mirando a ti, Ben). Los puntos principales son los siguientes:
-- La nueva red de producción estará activa el miércoles, así que estén atentos a cualquier problema.
-- Utilizaremos una cuenta temporal para realizar todas las tareas relacionadas con la migración de la red y esta cuenta será eliminada a finales de 2018, una vez que la migración esté completa. Esto nos permitirá identificar acciones relacionadas con la migración en los registros de seguridad, etc. El nombre de usuario es TempAdmin (la contraseña es la misma que la de la cuenta de administrador normal).
-- El ganador del concurso de "Mejor GPO" será anunciado el viernes, así que envíen sus propuestas pronto.
Steve
Una alternativa y más comoda de enumerar con smbmap
es montar el recurso compartido.
mkdir /mnt/smbshared
mount -t cifs //10.10.10.182/Data /mnt/smbshared -o username=r.thompson,password=rY4n5eva,domain=cascade.local,rw
TightVNC es un software de control remoto que permite ver y controlar el escritorio de una máquina remota a través de la red. Es útil para tareas de administración remota, soporte técnico y acceso remoto a aplicaciones y archivos.
Podemos utilizar la siguiente herramienta para decencriptar la contraseña: https://github.com/jeroennijhof/vncpwd
s.smith:sT333ve2
Nos conectamos como el usuario s.smith
al dominio.
s.smith
-> ArkSvc
Enumeración de recursos compartidos.
Encontramos un nuevo recurso compartido Audit$
Nos conectamos al recurso y descargamos todo el contenido a nuestra máquina.
Leemos la base de datos.
ArkSvc:BQO5l5Kj9MdErXx6Q6AGOw==
Analisis del binario CascAudit.exe
Máquina Windows
En una máquina Windows alternativa (atacante) descargamos la aplicación dotPeek
de JetBrains para decompilar el binario .exe.
Desde dotPeek, abrimos el archivo CascAudit.exe
y analizamos de forma mucho más comoda el código. Observamos que se esta utilizando el método DecryptString de la clase Crypto para decifrar la contraseña. La misma se encuentra cifrada en AES.
AES (Advanced Encryption Standard) y DES (Data Encryption Standard) son dos algoritmos de cifrado diferentes:
- AES:
- Es un algoritmo de cifrado simétrico.
- Utiliza bloques de 128 bits y claves de 128, 192 o 256 bits.
- Es más seguro y eficiente que DES.
- Amplia y comúnmente utilizado en muchas aplicaciones y estándares.
Default IV (Initial Vector) y Key
-
IV (Initial Vector):
- Un valor de entrada que es generalmente requerido para operaciones de cifrado en modos de bloque como CBC (Cipher Block Chaining).
- El IV debe ser único y, en muchos casos, aleatorio para cada operación de cifrado para garantizar la seguridad.
- El “Default IV” se refiere a un IV preestablecido o por defecto que puede ser utilizado en caso de no especificarse uno. Usar un IV predecible o constante puede comprometer la seguridad del cifrado.
-
Key (Clave):
-
Un valor secreto utilizado en el proceso de cifrado y descifrado.
- Debe ser conocida solo por las partes autorizadas.
- La seguridad del cifrado depende en gran medida de la clave; debe ser lo suficientemente larga y compleja para resistir ataques de fuerza bruta y otras formas de criptoanálisis.
KEY: c4scadek3y654321
IV (Intial Vector): 1tdyjCbY1Ix49842
Password: BQO5l5Kj9MdErXx6Q6AGOw==
Utilizamos CyberChef, para con estos datos aplicar el decifrado de la contraseña.
Validamos la contraseña del usuario ArkSvc
.
arksvc:w3lc0meFr31nd
Elevación de privilegios
Si realizamos una búsqueda de como abusar de este grupo, podemos observar que tenemos la capacidad de la lectura de objetos eliminados de Active Directory, lo cual que puede revelar información confidencial.
Referencia: https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges#a-d-recycle-bin
Get-ADObject -filter 'isDeleted -eq $true' -includeDeletedObjects -Properties *
Ejectuamos el comando anterior en y obtenemos el siguiente resultado:
Encontramos la cuenta TempAdmin
y en la propiedad cascadeLegacyPwd
la contraseña del usuario en base64. Si recordamos, la cuenta TempAdmin
tenia asignada la misma contraseña que el usuario Adminstrator, por lo que si validamos la cuenta con esta contraseña debería ser valida.
TempAdmim / Administrator:baCT3r1aN00dles
De esta forma, nos conectamos al sistema como el usuario Administrator y leemos la flag.
Leemos la flag de root.