Scoprire il sistema operativo con ping e traceroute
Faccio una piccola premessa: per scoprire il sistema operativo usato dai computer in rete sarebbe meglio usare altri sistemi con Nmap; però se non si ha la possibilità/voglia di installare/studiare qualcosa di nuovo questo potrebbe essere un buon metodo, tenendo però in considerazioni i suoi limiti.
Detto ciò cominciamo con una breve descrizione di che cosa è l'OS Fingerprint: in breve è, appunto, il processo che permette di determinare il sistema operativo dell’host remoto.
Esistono due modi per farlo, uno attivo e uno passivo.
Quello attivo consiste nell'inviare pacchetti e analizzare la risposta.
Quello passivo nell'intercettare (sniffing) i dati in transito e valutare particolari campi dei protocolli.
Possiamo dire che tutti i sistemi operativi creano i pacchetti con valori arbitrari e distintivi.
Analizzando questi valori è possibile sapere con buona precisione quale sistema ha creato quei pacchetti, e di rimbalzo capire quale sistema operativo sta girando sulla macchina target.
Dei vari protocolli disponibili a noi interessa il protoccolo IP (Internet Protocol).
In maniera abbastanza generica possiamo dire che ogni informazione (email, streaming, ecc) attraversa la rete in forma frammentata: ogni frammento viene chiamato pacchetto dati.
Ogni connessione TCP viene fatta a pezzi e inglobata in pacchetti IP.
Questi pezzi contengo sia informazioni sui dati trasmessi, sia informazioni specifiche sul protocollo IP.
Di questi a noi interessa il campo TTL (Time To Live).
Il TTL è un valore che indica per quanto tempo il pacchetto IP può vagare per la rete prima di raggiungere la destinazione, e serve per evitare che pacchetti per qualche motivo sfuggiti al controllo continuino all’infinito a girare per la rete.
Infatti una volta che questo tempo scade, il pacchetto stesso viene eliminato.
Il TTL funziona così: quando il pacchetto viene creato/trasmesso viene impostato un valore TTL non specificato da nessuna parte; ognuno lo può impostare come vuole; ad ogni passaggio di router questo valore è decrementato di uno; quando raggiunge lo zero viene scartato.
Per verificare il TTL basta il comando Ping (disponibile su tutte le piattaforme).