P0f-fr

From aldeid
Jump to navigation Jump to search

P0f

Description

L'outil p0f permet d'effectuer de la prise d'empreinte d'OS de manière passive, en anglais passive OS fingerprinting.

Pour plus d'informations sur les types de prise d'empreinte, voir ici.

P0f est capable d'identifier la machine dans les cas suivants :

  • Identification de l'OS d'une machine qui se connecte sur la machine sur laquelle est installé p0f (Mode SYN)
  • Identification d'un hôte lors d'une connexion à partir d'une machine sur laquelle est installé p0f (Mode SYN+ACK)
  • Identification d'un hôte sur lequel la connexion échoue (Mode RST)
  • Des machines communiquant entre elles sur un réseau si l'interface de la machine sur laquelle est installé p0f est en mode promiscuité (Sniffing)

P0f est également capable de déterminer entre autres :

  • si un firewall est installé sur une machine distante
  • la présence de réseau NATé
  • la mise en place de load-balancing
  • la distance avec l'hôte distant ainsi que son uptime

Installation

Sous Windows (version précompilée : v2.0.4)

Télécharger le fichier http://lcamtuf.coredump.cx/p0f-win32.zip et décompressez l'archive dans le répertoire de votre choix.

Sous Debian Etch (installation via le package)

# apt-get install p0f

Installation à partir des sources

Dépendances requises

  • >=libpcap 0.4
  • >=GNU cc 2.7.x
  • >=GNU make 3.7x
  • >=GNU bash / awk / grep / sed / textutils (uniquement pour p0frep)

Compilation et installation

# wget http://lcamtuf.coredump.cx/p0f.tgz
# tar xzvf p0f.tgz

Pour l'installation, nous devons au préalable modifier le fichier Makefile.

# cd p0f
# cp mk/Linux Makefile
# make
# make install

Utilisation

Syntaxe de base

p0f [ -f file ] [ -i device ] [ -s file ] [ -o file ]
      [ -w file ] [ -XVNDUKASCMLRqtpdlrx ]
      [ -c size]  [ -T nn ] [ 'filter rule' ]

Sous Windows, la liste des interfaces peut être obtenue par la commande p0f –L :

Interface       Device          Description
-------------------------------------------
1 \Device\NPF_GenericDialupAdapter      Adapter for generic dialup and VPN capture
2 \Device\NPF_{14572E8C-6634-4166-8523-0189FCC8F7A5}    VMware Virtual Ethernet Adapter
3 \Device\NPF_{51322413-3642-4A78-89C6-5D1711430600}    Intel(R) PRO/Wireless 3945ABG Network Connection (Microsoft's Packet Scheduler)
4 \Device\NPF_{80146013-7948-4CF2-A278-AE1596BC59CC}    VMware Virtual Ethernet Adapter

[A VERIFIER] Par exemple, pour utiliser l'interface wifi (n°2), utiliser le paramètre –i 2.

Liste des paramètres

 -f file   - read fingerprints from file
 -i device - listen on this device
 -s file   - read packets from tcpdump snapshot
 -o file   - write to this logfile (implies -t)
 -w file   - save packets to tcpdump snapshot
 -c size   - cache size for -Q and -M options
 -M        - run masquerade detection
 -T nn     - set masquerade detection threshold (1-200)
 -V        - verbose masquerade flags reporting
 -F        - use fuzzy matching (do not combine with -R)
 -N        - do not report distances and link media
 -D        - do not report OS details (just genre)
 -U        - do not display unknown signatures
 -K        - do not display known signatures (for tests)
 -S        - report signatures even for known systems
 -A        - go into SYN+ACK mode (semi-supported)
 -R        - go into RST/RST+ACK mode (semi-supported)
 -r        - resolve host names (not recommended)
 -q        - be quiet - no banner
 -p        - switch card to promiscuous mode
 -d        - daemon mode (fork into background)
 -l        - use single-line output (easier to grep)
 -x        - include full packet dump (for debugging)
 -X        - display payload string (useful in RST mode)
 -C        - run signature collision check
 -L        - list all available interfaces
 -t        - add timestamps to every entry

Exemples d'utilisation

Lecture d'un fichier

L'option –s permet de lire à partir d'un fichier de capture (réalisé par exemple avec tcpdump), comme le montre l'exemple suivant :

# p0f -s day1.log
p0f - passive os fingerprinting utility, version 2.0.5
(C) M. Zalewski <[email protected]>, W. Stearns <[email protected]>
p0f: listening (SYN) on 'day1.log', 231 sigs (13 generic), rule: 'all'.
24.167.*.*:3018 - Windows XP Pro SP1, 2000 SP3
  -> 192.168.100.28:1433 (distance 20, link: ethernet/modem)
203.69.*.*:2341 - Linux 2.2 (1) (up: 51 hrs)
  -> 192.168.100.28:443 (distance 19, link: ethernet/modem)
61.144.*.*:3677 - UNKNOWN [58944:47:1:52:M1452,N,W2,N,N,S:.:?:?]
  -> 192.168.100.28:3128 (link: pppoe (DSL))
203.239.*.*:1191 - Windows 2000 SP2+, XP SP1 (seldom 98 4.10.2222)
  -> 192.168.100.28:1433 (distance 21, link: ethernet/modem)
Note
Lorsque p0f ne parvient pas à déterminer la signature, celle-ci est affichée, accompagnée de la mention "UNKNOWN".

Le fichier des signatures est p0f.fp et se situe dans le répertoire /etc/p0f. En voici un extrait :

# tail /etc/p0f/p0f.fp
*:128:1:52:M*,N,W0,N,N,S:.:@Windows:XP/2000 (RFC1323 no tstamp)
*:128:1:52:M*,N,W*,N,N,S:.:@Windows:XP/2000 (RFC1323, w+, no tstamp)
*:128:1:64:M*,N,W0,N,N,T0,N,N,S:.:@Windows:XP/2000 (RFC1323)
*:128:1:64:M*,N,W*,N,N,T0,N,N,S:.:@Windows:XP (RFC1323, w+)
*:128:1:48:M536,N,N,S:.:@Windows:98
*:128:1:48:M*,N,N,S:.:@Windows:XP/2000