Ataques de contrasinal contra servizo SSH
Escenario
Este escenario ten como principal obxectivo demostrar cun exemplo práctico como o sistema de autenticación por contrasinais, a pesar de ser o máis empregado polos usuarios, non é o máis seguro.
Escenario
Ó longo deste escenario traballaremos coa ferramenta medusa para lanzar un ataque de diccionario sobre o servizo ssh correndo nun equipo Linux Ubuntu.
Pódense probar outras alternativas a medusa: no equipo pirata están dispoñibles hydra e patator.
Comprobaremos que o uso deste tipo de ferramentas permite automatizar este tipo de ataques e servirá para demostrar que o sistema de autenticación por contrasinal non é o suficientemente seguro para usarse en contornos críticos.
Creación automatizada do escenario 4D
A máquina serverssh é un contedor LXD correndo Linux Ubuntu Server co servizo ssh instalado e correndo. Ademais este máquina está configurada de xeito que:
- Ven cunha serie de usuarios do sistema xa creados para que se poidan facer ataques contra máis dun usuario.
- SSH está configurado para aceptar autenticación por contrasinais.
- SSH está configurado para aceptar un número máis elevado de intentos simultáneas de autenticación para acelerar o proceso de ataque.
En primeiro lugar hai que descargar e descomprimir o arquivo script_esc_4D.zip:
$ unzip script_esc4D.zip
Archive: script_esc4D.zip creating: script_esc4D/ inflating: script_esc4D/config_pirata.yml inflating: script_esc4D/config_serverssh.yml inflating: script_esc4D/contras.txt inflating: script_esc4D/escenario_4D.sh inflating: script_esc4D/network_PLANTILLA.yml inflating: script_esc4D/profile_LAN
$ chmod 755 escenario_4D.sh $ ls -lhF
total 24K -rwxr-xr-x 1 asir asir 1,5K ene 31 12:36 config_pirata.yml* -rwxr-xr-x 1 asir asir 2,0K ene 31 12:36 config_serverssh.yml* -rwxr-xr-x 1 asir asir 372 abr 30 2024 contras.txt* -rwxr-xr-x 1 asir asir 2,4K ene 31 12:37 escenario_4D.sh* -rwxr-xr-x 1 asir asir 260 mar 27 2024 network_PLANTILLA.yml* -rwxr-xr-x 1 asir asir 190 mar 27 2024 profile_LAN*
$ ./escenario_4D.sh
----- Escenario SSH - fail2ban -----
Seleccionar operación:
1. Crear escenario
2. Parar contenedores escenario
3. Arrancar contenedores escenario
4. Borrar escenario
------
1
Crear escenario
Error: Network "lan" already exists
Error: Error inserting "LAN" into database: The profile already exists
------------------------------
creando servidor SSH
------------------------------
Launching serverssh
------------------------------
creando pirata
------------------------------
Launching pirata
+------------+---------+------------------------+-------------+-----------+----------------------+
| NAME | STATE | IPV4 | PROFILES | SNAPSHOTS | LAST USED AT |
+------------+---------+------------------------+-------------+-----------+----------------------+
| pirata | RUNNING | 192.168.100.100 (eth0) | LAN | 0 | 2026/01/31 13:15 CET |
+------------+---------+------------------------+-------------+-----------+----------------------+
| serverssh | RUNNING | 192.168.100.101 (eth0) | LAN | 0 | 2026/01/31 13:15 CET |
+------------+---------+------------------------+-------------+-----------+----------------------+
No meu caso o profile e a rede lan xa estaban creadas e por iso saen as mensaxes de erro. No caso de non estar, o script procedería á crealas.
No ficheiro contras.txt hai unha listaxe de hashes e contrasinais asociados ós usuarios asir01, asir02, asir03 e asir04 presentes na máquina serverssh.