Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Fingerprint passivo di un sistema con p0f

p0f è uno strumento molto potente per analizzare vulnerabilità di un sistema remoto utilizzando solo tecniche passive.
p0f è uno strumento molto potente per analizzare vulnerabilità di un sistema remoto utilizzando solo tecniche passive.
Link copiato negli appunti

Quando ci si trova ad analizzare una rete della quale non si conosce nulla (modalità blackbox), c'è la necessità, per cominciare, di capire che tipo di macchine abbiamo davanti e quindi quale sistema operativo è in esecuzione. Questa operazione viene chiamata fingeprint.

Esistono due metodologie per stabilire il sistema operativo di una macchina avviata:

  • Fingerprint attivo: attualmente è quello più utilizzato e viene largamente sfruttato da programmi come nmap. Funziona inviando dei pacchetti malformati alla macchina bersaglio e a seconda della risposta che viene ricevuta, è possibile capire che sistema operativo è in esecuzione. Purtroppo questo metodo è inefficace se la macchina da analizzare si trova dietro un firewall o un IPS e genera degli alert su un IDS.
  • Fingerprint passivo: a differenza di quello attivo non contatta direttamente la macchina remota, ma analizza il traffico esistente sulla rete. Infatti quando la macchina si connette al nostro computer rilascia delle tracce, che se analizzate correttamente, ci possono svelare il sistema operativo usato. Questo metodo non mette in allerta nessun firewall, IDS o IPS.

Entrambi i metodi hanno quindi dei lati positivi e negativi. Il fingerprint attivo è opportuno sceglierlo per fare delle scansioni veloci e su un numero elevato di macchine.
Il fingerprint passivo è opportuno sceglierlo se si vuole rimanere anonimi e per non allarmare eventuali sistemi firewall, IDS o IPS.

p0f è un tool che si occupa di fare fingerprint passivo sul sistema operativo ed è appunto l'acronimo di Passive OS Fingerprinting. Può identificare il sistema operativo delle:

  • Macchine che si connettono a noi (modalità SYN)
  • Macchine a cui ci connettiamo (modalità SYN+ACK)
  • Macchine a cui non è possibile connettersi (modalità RST+)
  • Macchine che "parlano" in broadcast

Ma non solo, p0f ha anche l'abilità di:

  • Individuare il mascheramento dei pacchetti e quindi la presenza di apparecchiature firewall.
  • La distanza del sistema remoto ed il suo uptime
  • Individuare il tipo di collegamento (Ethernet, DSL, OC3, ...) ed ovviamente l'ISP utilizzato

In generale, i programmi di fingerprint, controllano all'interno di un pacchetto delle signatures per identificare e capire che sistema operativo sta rispondendo. Fra le più importanti signatures troviamo:

  • TTL (IP Header)
  • TOS (IP Header)
  • DF (IP Header)
  • Win (TCP Header)

TTL (Time to Live) identifica il numero di hops (passaggi) limite prima che il pacchetto venga scartato. Ogni sistema operativo ha un TTL diverso, ad esempio Windows lo tiene a 32, mentre Linux ha il TTL settato a 64

TOS (Type of Service) serve a determinare la priorità di un pacchetto e può assumere diversi valori come: basso ritardo, elevato throughput o alta affidabilità. Ad esempio i pacchetti del servizio Telnet assumono la priorità "basso ritardo", mentre il protocollo SNMP ha invece "alta affidabilità".

DF (Don't Fragment) è una flag che specifica se è necessario frammentare il buffer in arrivo (in genere perchè il pacchetto è troppo grande per essere gestito singolarmente).

Win (Window Size) è un parametro di controllo utilizzato dal TCP per segnalare la dimensione del pacchetto in arrivo.

Dopo aver dato una buona infarinatura di fingerprint e signatures, passiamo a vedere la parte pratica. La versione più recente al momento della stesura di questo articolo è la 3.06, ma qualche distribuzione Linux potrebbe aver pacchettizzato versioni differenti (genericamente più vecchie) a causa di conflitti con altri applicativi. I sorgenti sono comunque scaricabili dal sito ufficiale del progetto. Assicuriamoci di aver installato libpcap (dipendenza di p0f) e lanciamo:

make
make install

Se tutto è andato a buon fine, passiamo a vedere l'usage:

Usage: p0f [ ...options... ] [ 'filter rule' ]
Network interface options:
  -i iface  - listen on the specified network interface
  -r file   - read offline pcap data from a given file
  -p        - put the listening interface in promiscuous mode
  -L        - list all available interfaces
Operating mode and output settings:
  -f file   - read fingerprint database from 'file' (/etc/p0f.fp)
  -o file   - write information to the specified log file
  -s name   - answer to API queries at a named unix socket
  -u user   - switch to the specified unprivileged account and chroot
  -d        - fork into background (requires -o or -s)
Performance-related options:
  -S limit  - limit number of parallel API connections (20)
  -t c,h    - set connection / host cache age limits (30s,120m)
  -m c,h    - cap the number of active connections / hosts (1000,10000)
Optional filter expressions (man tcpdump) can be specified in the command
line to prevent p0f from looking at incidental network traffic.

Come possiamo vedere p0f sfrutta un database per determinare il sistema operativo della macchina remota che genericamente si trova in /etc/p0f.fp

p0f

Il primo comando da lanciare è:

# p0f -L

che ci restituisce la lista delle interfacce presenti sul computer (basta anche un "ifconfig -a" sui sistemi unix)

# p0f -i eth0

Avvia il fingerprint passivo sull'interfaccia eth0. Da questo momento la vostra macchina è un"aspirapolvere" di informazioni e vi restituirà un output del genere:

p0f

Ordinatamente suddiviso per categorie (SYN, MTU, uptime, http request, ...)

Per evitare di perderci i dati che scorrono nella shell, possiamo aggiungere un parametro:

# p0f -i eth0 -o /root/p0f_out.txt

che salverà tutto all'interno del file p0f_out.txt nella cartella di root.

Oltre all'uso offensivo, p0f può essere utilizzato anche in modo difensivo. Infatti fra le varie signatures presenti nel database ci sono quelle di Nmap:

p0f

p0f ci avverte che c'è un portscan ed un fingerprint attivo in corso sulla nostra macchina da parte di nmap.

CONCLUSIONE

Il fingerprint passivo ci da l'opportunità di conoscere cosa sta succedendo sulla rete, rendendoci completamente invisibili ai controlli di firewall, IDS o IPS.
Abbiamo visto come sia possibile stabilire il sistema operativo di una macchina a seconda della combinazione delle signatures presenti in un pacchetto TCP e di come, con lo stesso principio, sia possibile identificare attacchi informatici. Quindi, prima di lanciare un attacco, pensiamo sempre che c'è qualcuno dall'altra parte che sta già raccogliendo informazioni su di noi in maniera passiva.

Ti consigliamo anche