Forest
Descripción
- Nivel: Fácil (Intermedia por el pivesc).
- Temas a tratar: Enumeración, Windows, Active Directory, AS-REP Roasting, DCSync.
- OS: Windows.
- Plataforma: HackTheBox
- Fecha de retiro: 21/03/2020
- IP victima: 10.10.10.161
- IP atacante: 10.10.14.10
Enumeración
Empezamos enumerando todos los puertos bajo el protocolo TCP.
1 | Not shown: 65511 closed tcp ports (reset) |
Puertos
1 | Nmap scan report for local.htb (10.10.10.161) |
Con esto tenemos información importante, primero que la maquina es un sistema Windows y se encuentra bajo dominio ‘htb.local’ así que esto nos indica que estamos posiblemente enfrentándonos a una maquina de Active Directory.
Verificando Información de Dominio
Utilizando la herramienta NetExec podemos validar esta información sobre los puertos 53 (DNS) y 139 (NetBios).
Analizando la enumeración y viendo que nos enfrentamos a una maquina de AD, así que con esto nos lanzamos directamente a revisar la documentación de NetExec para ver que podemos enumerar, ya que contamos con 2 principales protocolos SMB yLDAP . Para esto recomiendo leer la wiki de NetExec Enumerate Null Sessions SMB y Enumerate Users LDAP.
Foothold
Enumeración de usuarios
Con el comando nxc smb $Target -u ‘’ -p ‘’ –users nos proporciona la siguiente lista de usuarios:
Tambien podremos obtener una lista bajo el protocolo LDAP pero para esta maquina esto nos es suficiente. (Tambien existen otras herramientas, en este caso voy a evitar utilizar herramientas que generen demasiado ruido como Enum4linux-ng).
Todos estas líneas las pasamos a un archivo y ejecutamos el siguiente comando para tener unas lista limpia con los nombres de usuario (solo funciona para el Output de NetExec):
1 | awk '/-Username-/ {flag=1; next} /Enumerated/ {flag=0} flag {print $5}' nxcOutput.txt > users |
Ataque AS-REP Roasting
Para entender como funciona este ataque recomiendo leer el siguiente articulo Understanding AS-REP Roasting Attacks.
Ya con el ataque entendido, procedemos a realizarlo sobre esta maquina, una cosa a entender es que para realizar este ataque no es necesario tener una lista de nombres como anteriormente la obtuvimos.
1 | # Para el ataque sin usuarios utilizamos el siguiente comando |
Ahora tenemos el hash del usuario svc-alfresco y podemos crackearlo con hashcat para tener la contraseña en texto plano que es s3rvice.
Escalada de privilegios
Con el usuario y la contraseña obtenidos podemos tener acceso a la maquina con evil-winrm.
Como estamos en un equipo con directorio activo podemos proceder a utilizar BloodHound para obtener información relevante del dominio.
[!NOTE]
Para esto podemos utilizar SharpHound.exe, SharpHound.ps1, Bloodhound-python, entre otros; no me voy a centrar en cual ejecutar, en mi caso utilice SharpHound.exe y enviándome el .zip generado con Evil-WinRM.
Analizando BloodHound
Primero que nada colocamos al usuario svc-alfresco como owned.
Analizando los grupos anidados visualizamos que estamos dentro del grupo “Account Operator” lo que significa que podemos crear, modificar cuentas y agregar usuarios a grupos (Con excepción de grupos privilegiados, como Domain Admins, Enterprise Admins, entre otros).
Ejemplos de como abusar este privilegio
Ahora bien analizando con la opción Find Shortest Paths to Domain Admins, nos encontramos un grupo con el privilegio WriteDacl.
BloodHound nos proporciona una pista sobre como podemos abusar de este privilegio:
Entonces para escalar privilegios tenemos lo siguiente:
- Podemos crear usuarios y agregarlos a grupos.
- Con un usuario dentro del grupo Exange Windows Permissions se puede realizar un ataque DCSync otorgando los privilegios necesarios a dicho usuario.
Crear usuario y agregarlo al grupo
Podemos intentar esto mismo bajo el mismo usuario pero para evitar cualquier problema lo realizamos desde un usuario nuevo.
[!NOTE]
No olvidemos agregar este usuario al grupo “Remote Management Users” para acceder via WinRM, recordar que no podemos conectarnos via RDP ya que el puerto 3389 esta cerrado.
Ya con el acceso y los permisos establecidos podemos ver los comandos que nos otorga BloodHound (muchos comandos otorgados por esta herramienta pueden fallar así que hay que estar preparados para pasar un rato en google buscando como hacer que funcionen); para poder asignar los permisos vamos a requerir la herramienta PowerView.
Ya con la herramienta en el equipo la procedemos a importar y procedemos a otorgarnos los permisos para realizar el ataque DCSync.
1 | $SecPassword = ConvertTo-SecureString 'secret.' -AsPlainText -Force |
[!NOTE]
Aquí cambie algunas partes del comando que nos proporcionaba BloodHound debido a que una vez que ejecutaba el ultimo comando se congelaba la sesión de Evil-WinRM y no se efectuaba algún cambio en los permisos bajo el usuario “fenixia”.
Ataque DCSync
Ya con los permisos establecidos podemos ejecutar el ataque DCSync, para esto se utiliza la herramienta secretsdump de impacket desde nuestra maquina atacante.
Ya con el hash del usuario Administator podemos ejecutar un Pass The Hash con Evil-WinRM:







