HSC
Cabinet de consultants en sécurité informatique depuis 1989 - Spécialisé sur Unix, Windows, TCP/IP et Internet
Mode texte : accès au contenu de la page
Hervé Schauer Consultants
Vous êtes ici : Accueil > Ressources > Brèves > Sélection de sniffers
Accéder au : Site HSC des formations
Télécharger le catalogue des formations
Recherche :  
English version
   Services   
o Domaines de compétences
o Conseil & Expertise
o Prestations ISO 27001
o Audit & Évaluation
o Tests d'intrusion
o Tests de vulnérabilités (TSAR)
o Analyse Forensique
o Certification ARJEL
o Formations
o E-learning
   Conférences   
o Agenda
o Interventions passées
o Tutoriels
   Ressources   
o Index thématique
o Brèves
o Présentations
o Cours
o Articles
o Outils (téléchargement)
o Veille en vulnérabilité
   Société   
o Hervé Schauer
o Equipe
o Offres d'emploi
o Références
o Historique
o Partenariats
o Associations
   Presse et
 communication
 
 
o Newsletter HSC
o Bulletin juridique HSC
o Revue de presse
o Communiqués de presse
o Publications
   Contacts   
o Coordonnées
o Requêtes particulières
o Accès à nos locaux
o Hôtels proches de nos locaux
|>|Sélection de sniffers  

par Stéphane Aubert et Denis Ducamp (10/10/2000)




Voici une sélection de sniffers (logiciels d'écoute des réseaux) qui répond
à une question,  qui nous est régulièrement posée,  concernant les sniffers
que nous utilisons.

  Remarque :  Nous répondrons ultérieurement  à une autre  question souvent
  posée qui est "Peut-on détecter un sniffer sur un réseau ?".

La liste  que nous proposons n'est  pas exhaustive, elle présente  ceux que
nous  jugeons importants de  connaître  lorsque l'on  est  confronté à  des
réseaux IP.

Nous présentons les programmes suivants :

    - tcpdump       - ethereal      - ipgrab     
    - nstreams      - smbsnif       - tcpflow
    - sniffit       - dsniff        - netcat

Quelques sniffers que nous ne présentons pas mais qui peuvent aussi servir :

  - windump (tcpdump pour windows)
  - snoop (sous solaris)
  - snort (bien plus qu'un sniffer : www.snort.org)
  - buttsnif (sous NT sans installation de driver NDIS)
  - snmpsnif (snmp est maintenant couvert par dsnif)
  - ngrep
  - iptraf
  - ntop

--[ Préambule ]------------------------------------------------------------ 

Vous trouverez des informations plus générales sur les sniffers à l'adresse
http://www.robertgraham.com/pubs/sniffing-faq.html .

Si vous ne souhaitez lire que ce préambule vous devez au moins savoir qu'en
cas de  problème ou de suspicion  de problème (comme une  attaque), si vous
êtes amenés  à nous contacter il  est important de nous  fournir des traces
réseaux. Pour  obtenir ces traces  vous pouvez utiliser le  sniffer tcpdump
avec les options suivantes :

  # tcpdump -lnx -s 1500 -w trace

Le fichier trace contient alors une copie du trafic réseau que nous pouvons
analyser a posteriori.


--[ tcpdump ]-------------------------------------------------------------- 

URL:  http://www.tcpdump.org/ 
Version stable pour les puristes : ftp://ftp.ee.lbl.gov/tcpdump.tar.Z

tcpdump est LE sniffer à connaître pour comprendre les réseaux IP.

Il permet de  visualiser en temps réel  le trafic réseau avec  (ou sans) le
contenu des paquets.

Exemple de résultat :

  11:44:05.261016 safe.hsc.fr.1567 > knossos.hsc.fr.ssh: . ack 
                  21 win 32120 (DF) [tos 0x10] 
  11:44:05.517398 knossos.hsc.fr.ssh > safe.hsc.fr.1567: P 
                  21:41(20) ack 28 win 17520 (DF) [tos 0x10] 

On lit que la  machine safe envoie un paquet ACK SSH  (22/tcp) à la machine
knossos et la réponse de knossos.

Avec l'option -X pour afficher le contenu des paquets :

  11:51:56.991408 104.97.182.103.2466 > 127.0.0.1.80: tcp 32 [ttl 1]
  0x0000   4500 0048 30d8 0000 0106 eb0e 6861 b667        E..H0.......ha.g
  0x0010   7f00 0001 09a2 0050 2f9c 727a 1bd5 e50d        .......P/.rz....
  0x0020   5018 0200 e812 0000 4745 5420 2f64 6566        P.......GET./def
  0x0030   6175 6c74 2e61 7370 3a3a 2444 4154 4120        ault.asp::$DATA.
  0x0040   4854 5450 2f31 2e30                            HTTP/1.0

Ici on visualise un paquet à destination du port 80/tcp contenant la chaîne
/default.asp::$DATA.

Pour avoir  plus de détails sur  les paquets, il est  possible d'envoyer le
résultat de tcpdump à tcpdumpx (programme écrit par Wietse Venema) ainsi :

  # tcpdump -lnx -s 1500 | ./tcpdumpx

  :58:30.459994 178.147.72.193.2898 > 127.0.0.1.80: tcp 30 [ttl 1]

    IP_HDR=20 IP_OPT=0 TCP_HDR=20 TCP_OPT=0 DATA=30 FLAGS=PUSH ACK 

    IP_HDR   45  00  00  46  1d  16  00  00  01  06 
            vhl tos len len id  id  off off ttl pro 
    IP_HDR   22  47  b2  93  48  c1  7f  00  00  01 
            sum sum src src src src dst dst dst dst 
    TCP_HDR  0b  52  00  50  4f  ee  06  a7  3a  d1 
            src src dst dst seq seq seq seq ack ack 
    TCP_HDR  bb  00  50  18  02  00  4c  9d  00  00 
            ack ack off flg win win sum sum urp urp 
    DATA     47  45  54  20  2f  63  67  69  2d  62 
             G   E   T       /   c   g   i   -   b  
    DATA     69  6e  2f  70  65  72  6c  2e  65  78 
             i   n   /   p   e   r   l   .   e   x  
    DATA     65  20  48  54  54  50  2f  31  2e  30 
             e       H   T   T   P   /   1   .   0  

Et là, ça devient vraiment intéressant :)

URL de tcpdumpx : 
  ftp://ftp.porcupine.org/pub/debugging/ack-corruption.tar.gz


--[ ethereal ]-------------------------------------------------------------

URL: http://www.ethereal.com/

Très  complet avec  une  interface  graphique ou  en  mode texte  (commande
tethereal), il permet de "décortiquer" de nombreux protocoles.

Exemple de résultat :

  Frame 6 (84 on wire, 84 captured)
    Arrival Time: Oct  8, 2000 15:55:18.5632
    Time delta from previous packet: 0.000142 seconds
    Frame Number: 6
    Packet Length: 84 bytes
    Capture Length: 84 bytes
  Ethernet II
    Destination: 00:00:0c:xxxxx (Cisco_07:ac:0a)
    Source: 00:60:cf:xxx (00:60:cf:xxxx)
    Type: IP (0x0800)
  Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..00 = Currently Unused: 0
    Total Length: 70
    Identification: 0x21b6
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 254
    Protocol: UDP (0x11)
    Header checksum: 0xae03 (correct)
    Source: xxxxxxxxxxxxx (x.y.z.t)
    Destination: yyyyyyyyyyyyyyyy (xx.yy.zz.tt)
  User Datagram Protocol
    Source port: 3273 (3273)
    Destination port: domain (53)
    Length: 50
    Checksum: 0x778f
  Domain Name System (query)
    Transaction ID: 0xafe4
    Flags: 0x0000 (Standard query)
        0... .... .... .... = Query
        .000 0... .... .... = Standard query
        .... ..0. .... .... = Message is not truncated
        .... ...0 .... .... = Don't do query recursively
        .... .... ...0 .... = Non-authenticated data is unacceptable
    Questions: 1
    Answer RRs: 0
    Authority RRs: 0
    Additional RRs: 0
    Queries
        www.hsc.fr: type SOA, class inet
            Name: www.hsc.fr
            Type: Start of zone of authority
            Class: inet

--[ ipgrab ]---------------------------------------------------------------

URL: http://ipgrab.sourceforge.net/

Exemple de résultat avec l'option -l :

  -----------------------------------------------------------------
                          IP Header
  -----------------------------------------------------------------
  Version:                4
  Header length:          20
  Type of service:        16 (precedence=0, D=1, T=0, R=0, U=0)
  Total length:           40
  Identification #:       16502
  Fragmentation offset:   0 (U=0, DF=1, MF=0)
  Time to live:           64
  Protocol:               6
  Header checksum:        42281 
  Source address          192.70.106.82
  Destination address     192.70.106.65
  -----------------------------------------------------------------
                        TCP Header
  -----------------------------------------------------------------
  Source port:            2232
  Destination port:       80 (www)
  Sequence number:        3531645539
  Acknowledgement number: 398528001
  Header length:          20
  Reserved bits:          0
  Flags:                  ACK 
  Window size:            32120
  Checksum:               14733
  Urgent pointer:         0
  Options:                none


--[ nstreams ]-------------------------------------------------------------

URL: http://www.hsc.fr/ressources/outils/nstreams/index.html

nstreams permet de synthétiser (en nature)  les flux. C'est à dire afficher
les protocoles utilisés  sur un réseau indépendamment du nombre  de fois où
ils ont été utilisés.

Cet outil permet de faire la cartographie des flux écoutés sur le réseaux.


--[ smbsnif ]--------------------------------------------------------------

URL: http://www.hsc.fr/ressources/outils/index.html

Bientôt disponible !...

Smbsnif est un  utilitaire qui écoute le réseau et  reconstitue les données
échangées par le protocole LanManager.

Cet  utilitaire permet  de  recréer  les fichiers  partagés  ainsi que  les
documents imprimés dans les environnements Microsoft ou Samba.

Smbsnif peut écouter  le réseau ou travailler à partir  d'un fichier de log
de tcpdump.


--[ tcpflow ]--------------------------------------------------------------

URL: ftp://ftp.circlemud.org/pub/jelson/tcpflow/

Permet de visualiser  en ascii le contenu des paquets  et de rassembler les
sessions TCP sur disque.

Exemple de résultat avec l'option -c :

  192.070.106.082.02157-192.070.106.033.00080: GET / HTTP/1.0
  Connection: Keep-Alive
  User-Agent: Mozilla/4.75 [en] (X11; U; Linux 2.2.16 i686)
  Pragma: no-cache
  Host: www.hsc.fr
  Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
  Accept-Encoding: gzip
  Accept-Language: en
  Accept-Charset: iso-8859-1,*,utf-8


--[ sniffit ]--------------------------------------------------------------

URL: http://reptile.rug.ac.be/~coder/sniffit/sniffit.html

sniffit  est  assez  générique.  Il   est  cependant  bien  approprié  pour
surveiller une session telnet par exemple.

Exemples d'utilisation :

Lancer 2 xterm, dans le premier  taper la commande tty utiliser le résultat
avec l'option  -D de  sniffit :  ./sniffit -i  -D /dev/pts/3  (dans l'autre
xterm).  Sélectionner dans  cette fenêtre,  avec la  touche Enter,  un flux
telnet (retour du serveur au client).

Autres exemples :
  ./sniffit -I
  ./sniffit -R trace -t chesnut
  ./sniffit -x -a -t chesnut
  ./sniffit -d -t chesnut
 

--[ dsniff ]--------------------------------------------------------------- 

URL: http://www.monkey.org/~dugsong/dsniff/

dsniff est un ensemble d'outils dont les sniffers suivants :

* dsniff : sniffer de mots de  passe en clair pour FTP, Telnet, SMTP, HTTP,
POP,  poppass, NNTP,  IMAP, SNMP,  LDAP,  Rlogin, RIP,  OSPF, NFS,  YP/NIS,
SOCKS, X11, CVS, IRC, AIM,  ICQ, Napster, PostgreSQL, Meeting Maker, Citrix
ICA,  Symantec  pcAnywhere, NAI  Sniffer,  Microsoft  SMB, Oracle  SQL*Net,
Sybase et Microsoft SQL auth info

* mailsnarf : compose une boite à lettre avec le mail sniffé sur le réseau

* urlsnarf : affiche  les URL  qui transitent sur le réseau au  format CLF
(Common Log Format)

* webspy : envoi les URL sniffées sur le réseau à un netscape local


Exemple de résultat :

  #./dsniff
  listening on hme0
  -----------------
  10/02/00 00:15:32 tcp safe.1327 -> knossos.21
  (ftp)
  USER alice
  PASS bobisgood


--[ NetRawIP ]-------------------------------------------------------------

URL: http://quake.skif.net/RawIP/

NetRawIP n'est pas un sniffer mais un module  Perl qui permet de forger des
paquets et d'écouter le réseau.

Il est alors possible d'écrire facilement un sniffer en perl.

Exemple :

  #!/usr/bin/perl
  # sa/hsc
  use Net::RawIP;
  use Socket;

  $a = new Net::RawIP;
  $pcap=$a->pcapinit("eth0",
            "proto \\tcp and ( dst port 80 or dst port 8080)",1500,30);
  loop $pcap,-1,\&dumpit,\@a;

  sub dumpit {
    $a->bset(substr($_[2],14));
    ($ipsrc,$ipdst,$source,$dest,$data) = $a->get(
      { ip=>[qw(saddr daddr)],
        tcp=>[qw(data source dest)]}
    );
    print inet_ntoa(pack("N",$ipsrc))," [$source] -> ", 
          inet_ntoa(pack("N",$ipdst))." [$dest]\n";
    print $data,"\n" if($data =~ /^Proxy-authorization:/ );
  };

--[ netcat ]---------------------------------------------------------------

URL: http://www.avian.org/

netcat n'est  pas vraiment  un sniffer  mais permet  toutefois de  faire de
l'écoute sur  une machine  d'un service  réseau. Ainsi  il est  possible de
visualiser (ou sauvegarder  en hexa dans un fichier) le  trafic sur un port
donné.

Remarque : pour windows vous trouverez aisément nc.exe.
URL: http://www.l0pht.com/~weld/netcat/

--[ EOF ]------------------------------------------------------------------



Dernière modification le 12 novembre 2003 à 13:55:01 CET - webmaster@hsc.fr
Mentions légales - Informations sur ce serveur - © 1989-2013 Hervé Schauer Consultants