Archivi tag: md5

Fingerprint SSH su macchine *nix

Mi sono sempre chiesto come venisse generato il fingerprint SSH sulle macchine *nix, grazie al quale è possibile identificare in modo univoco il server al quale ci si sta connettendo (in barba ad eventuali attacchi MITM).

sshIn soldoni, la prima volta che ci si connette al server, sul nostro client (nel file known_hosts) viene salvata una entry contenente FQDN, IP, tipologia di chiave (ad esempio ssh-rsa) e chiave pubblica codificata in base64.

Successivamente, ad ogni nuova connessione, verrà comparato il fingerprint restituito dal server remoto con quello calcolato sulla chiave pubblica salvata nel file known_host. Se i due fingerprint corrispondono significa che il server a cui ci si sta collegando è quello lecito.

Ma come viene calcolato questo fingerprint? Semplice, ottenendo il digest MD5 dalla chiave pubblica del server remoto salvata nel file known_hosts (e quindi codificata in base64).

Ecco il comando:

[root@client ~]# echo 'AAAAB3NzaC1yc2EAAAABIwAAAQEA0wpEu8edkvPEXqMw7nzOG/fEGE5sZCbwYnECEzlMuYi6DPSWuPJfq4U/N2Gp8RZjXQCs9TrZM91t8GIxxLuae1cZ6kelx+h1tlbh1Rj/n+qzYtjVF4XH4qHfV7Ch7nOBplKKxsNRPb7VtxYzoqgiQEi9xqN0Fgj2GcgxYAHq79qk1lvXGNVJGkDtHpt2x2/BmRLkceyId+xMflq2D4QIvEp8m4leAbYZ04ZU6/Dt44xkA1HQcpZ9ivs8OGoGclPD4QJn80+hy7E0p+O7sAQ3DeAGkoZi8ufOmYG9r4DtvnQJplTffVQwmU9y8dBH9/zit1kawkZscG6yzW2BdrhrGH==' \
    | base64 -d | md5sum

il cui output sarà:

414bb2dbd1ba63e6b16117a2abc20bb2

ovvero il fingerprint del server remoto senza i : ogni 2 digit (41:4b:b2:db:d1:ba:63:e6:b1:61:17:a2:ab:c2:0b:b2)

Alla prossima.

Modificare l’encryption method delle password utente su CentOS

Premessa

In questo blog ho più volte parlato di digest, di algoritmi di cifratura one-way e compagnia bella. Una cosa è chiara: MD5 non è la scelta migliore da fare quando si parla di cifratura delle password. Infatti, la sua naturale evoluzione, ovvero SHA, presenta una maggiore robustezza (aka resistenza debole e forte alle collisioni), dovuta anche alle dimensioni del digest che genera. Proprio per questo motivo, sono solito abilitare sui miei server l’algoritmo SHA512 per la cifratura delle password utente.

sha, md5, one-way, sha512, passwd, shadow, digest, centos

SHA512 su CentOS

Sostituire MD5 con SHA512 su CentOS è sicuramente banale. Il primo step consiste nell’identificare il tipo di cifratura attualmente utilizzato dal nostro sistema:

[root@host ~]# authconfig --test | grep hashing

Se l’output è simile al seguente:

password hashing algorithm is md5

significa che stiamo utilizzando MD5. Per sostituirlo con SHA512 basta digitare (da utente root):

[root@host ~]# authconfig --passalgo=sha512 --update

L’ultimo step consiste nell’aggiornare le password degli utenti. In questo caso potete fare 2 scelte:

1) aggiornare voi le password degli utenti (se le conoscete);

2) richiedere all’utente l’aggiornamento delle password al prossimo login.

Nel primo caso è sufficiente lanciare il comando:

[root@host ~]# passwd <nomeutente>

mentre, per forzare il cambio password da parte dell’utente occorre digitare:

[root@host ~]# chage -d 0 <nomeutente>

Enjoy.

Rainbow tables gratuite

Al giorno d’oggi, il salvataggio di dati sensibili (ad esempio le password), avviene utilizzando dei metodi di cifratura one-way (ovvero non reversibili), che implicano la creazione di un opportuno digest. Ciò significa che tali informazioni non vengono salvate in chiaro, ma assumono la forma di una sequenza di lettere (maiuscole e minuscole), numeri e caratteri speciali, che rappresentano proprio il suddetto digest.

hashing.png

Esempi di algoritmi di cifratura di questo tipo sono MD5 ed SHA nelle sue varianti (ad esempio SHA-1, SHA-128, SHA-256, SHA-512, ecc.). Il tallone di Achille di questa tipologia di algoritimi consiste nel fatto che generano digest di lunghezza finita, mentre le password possono avere (almeno teoricamente), lunghezza infinita. Eego, per il principio dei cassetti, vi saranno almeno due password diverse aventi lo stesso digest (in questo caso si parla di collisione).

Dopo questa breve premessa, cerchiamo di capire cosa sono le rainbow tables. Esse possono essere definite come una sorta di elenco di “parole” con il relativo digest. Ad esempio, una entry della rainbow table per la parola “casa” potrebbe contenere un digest “preconfezionato” mediante MD5, uno generato attraverso SHA-1 e via dicendo. In questo modo, verrà effettuato un confronto tra il digest della password che si vuole crackare ed il digest preconfezionato, alla ricerca di una corrispondenza.

Un tool che utilizza la suddetta metodologia è Ophcrack, usato soprattutto per crackare le password di Windows (sia LANMAN che NTLM). Purtroppo, però, l’elenco completo delle password (specialmente NTLM) è a pagamento. Vi consiglio dunque di consultare il seguente sito:

http://www.freerainbowtables.com/it/

in cui sono presenti delle rainbow tables gratuite suddivise per algoritmo di cifratura.

Fatene buon uso.

A presto.