Hacker Geek OS Fingerprinting con dimensioni finestra TTL e TCP
Sapevi che puoi scoprire quale sistema operativo sta funzionando un dispositivo in rete semplicemente osservando il modo in cui comunica sulla rete? Diamo un'occhiata a come possiamo scoprire quale sistema operativo i nostri dispositivi sono in esecuzione.
Perché dovresti farlo??
Determinare quale sistema operativo o dispositivo è in esecuzione può essere utile per molte ragioni. Per prima cosa diamo un'occhiata a una prospettiva di tutti i giorni, immagina di voler passare a un nuovo ISP che offre Internet senza connessione per $ 50 al mese, quindi fai una prova del loro servizio. Utilizzando le impronte digitali del sistema operativo, scoprirai presto che dispongono di router della spazzatura e offrono un servizio PPPoE offerto su un gruppo di computer Windows Server 2003. Non sembra più un buon affare, huh?
Un altro uso per questo, anche se non così etico, è il fatto che i buchi di sicurezza sono specifici del sistema operativo. Ad esempio, si esegue una scansione delle porte e si trova la porta 53 aperta e la macchina sta eseguendo una versione obsoleta e vulnerabile di Bind, si ha una possibilità SINGOLA di sfruttare il buco di sicurezza poiché un tentativo fallito causerebbe il crash del demone.
Come funziona il fingerprinting del sistema operativo?
Quando si eseguono analisi passive del traffico corrente o si guardano le vecchie acquisizioni di pacchetti, uno dei modi più semplici ed efficaci per eseguire il fingerprinting del sistema operativo è semplicemente guardando le dimensioni della finestra TCP e Time To Live (TTL) nell'intestazione IP del primo pacchetto in una sessione TCP.
Ecco i valori per i sistemi operativi più popolari:
Sistema operativo | Tempo di vivere | Dimensione della finestra TCP |
Linux (kernel 2.4 e 2.6) | 64 | 5840 |
Google Linux | 64 | 5720 |
FreeBSD | 64 | 65535 |
Windows XP | 128 | 65535 |
Windows Vista e 7 (Server 2008) | 128 | 8192 |
iOS 12.4 (router Cisco) | 255 | 4128 |
Il motivo principale per cui i sistemi operativi hanno valori diversi è dovuto al fatto che le RFC per TCP / IP non stabiliscono valori predefiniti. Un'altra cosa importante da ricordare è che il valore TTL non sempre corrisponde a uno nella tabella, anche se sul dispositivo è in esecuzione uno dei sistemi operativi elencati, si vede quando si invia un pacchetto IP attraverso la rete il sistema operativo del dispositivo di invio imposta TTL sul TTL predefinito per quel SO, ma quando il pacchetto attraversa i router il TTL viene abbassato di 1. Pertanto, se si vede un TTL di 117, ci si può aspettare che questo sia un pacchetto inviato con un TTL di 128 e ha attraversato 11 router prima di essere catturato.
Usare tshark.exe è il modo più semplice per vedere i valori quindi, una volta acquisita l'acquisizione di pacchetti, assicurati di aver installato Wireshark, quindi vai a:
C: \ Programmi \
Ora tieni premuto il tasto Maiusc e fai clic con il tasto destro sulla cartella wireshark e seleziona la finestra di comando Apri qui dal menu di scelta rapida
Adesso scrivi:
tshark -r "C: \ Users \ Taylor Gibb \ Desktop \ blah.pcap" "tcp.flags.syn eq 1" -T campi -e ip.src -e ip.ttl -e tcp.window_size
Assicurati di sostituire "C: \ Users \ Taylor Gibb \ Desktop \ blah.pcap" con il percorso assoluto per l'acquisizione dei pacchetti. Una volta premuto Invio, verranno mostrati tutti i pacchetti SYN dall'acquisizione di un formato tabella più facile da leggere
Ora questa è una cattura di pacchetti casuali che ho fatto collegandomi al sito How-To Geek, tra tutte le altre chatter che Windows sta facendo posso dirvi due cose di sicuro:
- La mia rete locale è 192.168.0.0/24
- Sono su una scatola di Windows 7
Se guardi la prima riga della tabella vedrai che non sto mentendo, il mio indirizzo IP è 192.168.0.84 il mio TTL è 128 e il mio TCP Window Size è 8192, che corrisponde ai valori di Windows 7.
La prossima cosa che vedo è un indirizzo 74.125.233.24 con un TTL di 44 e una dimensione della finestra TCP di 5720, se guardo il mio tavolo non c'è un sistema operativo con un TTL di 44, tuttavia si dice che il Linux che i server di Google run ha una dimensione della finestra TCP 5720. Dopo aver fatto una veloce ricerca sul web dell'indirizzo IP, vedrai che si tratta di un Google Server.
Per quale altro motivo usi tshark.exe, dicci nei commenti.