Archivi tag: fingerprint

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.

Cisco PIX 501 ed il fingerprint SSH (non visualizzabile da CLI)

Qualche tempo fa, mentre provavo ad abilitare l’SSH sul mio PIX 501, ho cercato di visualizzare il fingerprint che viene generato dopo aver creato la coppia di chiavi RSA pubblica/privata.

pix 501,sshv1,sshv2,rsa1,rsa2,exploit,ssh 1.5,fingerprint,chiave pubblica,chiave privata

Con mio enorme stupore, dopo una breve ricerca su Internet e diversi tentativi da console, ho constatato che tale fingerprint non è visualizzabile direttamente dalla CLI del PIX.

L’unico comando presente da linea di comando è il seguente:

NightFirewall# sh ca mypubkey rsa

che consente di visualizzare la chiave pubblica usata dal firewall in questione, ma non il suo fingerprint.

Inoltre, dando un’occhiata al file .ssh/known_host presente nella mia home, ho notato che il fingerprint salvato è diverso da quelli associati agli host SSHv2. Questo a mio avviso è imputabile a due fattori:

1) L’uso di RSA1 anzichè RSA2 per la generazione del fingerprint stesso;

2) La versione del protocollo SSH utilizzata dal firewall (ovvero la 1.5).

Un modo per visualizzare il fingerprint del PIX 501 però esiste, e si basa su nmap:

nightfly@nightbox:~$ sudo nmap -sS -A <IP PIX 501>

Starting Nmap 5.00 ( http://nmap.org ) at 2011-09-05 20:30 CEST
Interesting ports on *.*.*.*:
Not shown: 998 closed ports
PORT    STATE SERVICE  VERSION
22/tcp  open  ssh      Cisco SSH 1.25 (protocol 1.5)
|_ ssh-hostkey: 1024 **:**:**:**:6f:62:05:dd:a6:3b:43:1f:**:**:**:** (RSA1)

Mistero svelato.

PS: i lameri che volessero fare dei tentativi di exploit verso la mia macchina (poichè l’SSH 1.5 è palesemente vulnerabile), sappiano che tale servizio non è pubblicato all’esterno ed accetta connessioni solo da determinati host della rete interna. Ergo abbandonate qualunque idea bellicosa.

A presto.