Crackare SSH con Medusa

di | 25 Giugno 2021

Qualche tempo fa scrissi un articolo su come giocare all’hacker senza farsi male, violando un servizio SSH, ossia una shell remota che, se bucata, permette di fare essenzialmente ciò che si vuole con un computer.

Ho deciso di rivederlo usando un programma più diffuso, ossia Medusa, disponibile anche su Kali Linux, invece di uno script preso chissà dove e anche un server finto aggiornato, dato che lo script usato in tale guida non è più supportato. Vediamo come fare!

Un po’ di teoria…

Serve un po’ di teoria prima: Medusa usa un sistema di attacco a dizionario, ossia bisogna fornirgli una lista di parole da provare.

Tale approccio è uno dei due principali usati per violare dei login, insieme all’approccio a forza bruta, dove invece si generano stringhe casuali che vengono provate di volta in volta.

Uno dei principali vantaggi dell’approccio a dizionario è l’uso di dizionari specifici: se si attacca un’azienda e si conoscono le sue politiche di password o si ha un leak si può usare questa conoscenza per generare una lista di password molto più probabili della generazione casuale del bruteforce.

Ma, a differenza del bruteforce, che prima o poi trova la password (anche se potrebbe terminare dopo la vita del Sole), se la password non è nel dizionario fornito, semplicemente, non verrà trovata.

Creare il server

Per creare il server useremo fake-ssh, uno script in Python che usa sempre paramiko.

Per usarlo vi servirà una qualche macchina Linux, che sia una macchina virtuale, nativa o anche un Raspberry.

Tuttavia, di default, fake-ssh permette di loggarsi con qualsiasi password, dato che è sviluppato per prendere per il naso eventuali attaccanti (una sorta di honeypot…), ma a noi ne serve uno con una password determinata.

Se conoscete il Python vi invito decisamente a provare voi a modificare il programma per usare una password determinata, se non avete voglia o capacità potete usare direttamente questa mia versione: una volta scaricata (come zip o con git clone) basta entrare nella directory e digitare a terminale:

python3 fake_ssh.py -p 2222 -pw [password]

La porta che ho scelto è la 2222, per non interferire con un eventuale server SSH standard sulla porta 22. Si può usare anche la porta 22, se non occupata, ma in tal caso dovrete avviare lo script coi privilegi di root.

Cracking time!

Ok, ora avviate la vostra distro Linux e installate Medusa. Se avete Kali o altre distro per il pentesting, probabilmente è già installato.

Ora digitate a terminale:

medusa -h [IP] -u [un nome utente, qui è indifferente] -P [lista-password] -M ssh -n [porta]

Con questo server fake-ssh lo username è indifferente, nella realtà se ne usano di notori (spesso root, admin, pi o ubuntu). La lista password, invece, dovete procurarvela, ci sono principalmente due strade:

  1. Se usate una distro apposita per il pentesting, di solito, vi vengono fornite un tot di liste, ad esempio Kali offre rockyou, che contiene circa 15 milioni di password
  2. Generarne una, con uno dei vari tool che esistono (spesso anche nelle distro stesse), questa strada può essere ottima se si conoscono più informazioni sul target

Dopo un po’ di lavoro Medusa dovrebbe proporvi un confortante:
ACCOUNT FOUND: [ssh] Host: 192.168.1.2 User: test Password: test [SUCCESS]

Che vi annuncia che ha scoperto la password, che ho settato a un banale “test”.

Cosa possiamo imparare?

Prima di tutto a non farlo nella realtà. Senza opportune contromisure, nella simpatica

/var/log/auth.log

Ci sarà una bella lista degli errori di login con annesso IP. È un attimo, poi, bloccare (anche in automatico) i disturbatori o, se si vede che sono in una giurisdizione dove ne vale la pena, portarli alle autorità.

Se volete e avete un server Linux (o Mac, credo) a disposizione potete avviare Medusa contro di esso mentre tenete il file citato con tail -f, che vi mostra le ultime righe del file in modo dinamico.

In seconda cosa: violare SSH, posto un utente non accorto, è facile. Basta un singolo comando, come abbiamo visto, ed è anche possibile automatizzare tali comandi dopo una scansione della rete.

Se avete un server con una password banale ed è esposto a tutti, francamente, siete un po’ incoscienti ma, soprattutto, rischiate che sia violato da un attaccante casuale, che potrebbe usarlo per vari scopi nefasti.

Proteggetelo in qualche modo e cambiate quantomeno la password.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.