_ _______________________________________ _ -*2*- `^°*;:,.> - Les sniffeurs (suite) - <.,:;*°^` ___________________/¯¯¯¯¯¯¯¯¯¯¯¯¯¯By Sniffdoz¯¯¯¯¯¯¯¯¯¯¯¯¯¯\_____________________

18:54 01/11/99

Detecter un sniffeur

Introduction

Avant de commencer la lecture de cet article je vous recommande pour connaître le principe des sniffeurs, l'article sur les sniffeurs.

Théoriquement, les sniffeurs sont "invisibles". Ils peuvent être entièrement passifs, et peuvent seulement servir à écouter. La menace qu'un sniffeur peut representer vient habituellement d'une machine UNIX ou de machines à base de Linux. Il existe des possibilités pour identifier les sniffeurs sur ce type de systèmes. Toutefois, les sniffeurs sous win32 se développent très rapidement, l'apparition de logiciels comme WINDump, adaptation du célèbre TCPDump d'Unix permet à un simple windows9X de faire du sniff. Les systèmes Unix ainsi que windows NT demandent une intervention de l'utilisateur sur la carte réseau, ce qui réduit les risques si une politique de sécurité sur les droits des utilisateurs est correctement mise en place.

Comment détecter si votre machine fait fonctionner un sniffeur

Eviter une attaque de sniff est loin d'être simple, 2 approches :

  • Détecter et éliminer le sniffer
  • Protéger les données contre le sniffer
    Nous allons regarder chaque méthode de près :

Si votre machine est de type UNIX, un hackeur peut avoir pris l'accès en mode root, et peut donc exécuter un sniffeur. et ainsi sniffer un réseau auquel il n'a pas accès régulièrement (par exemple, pour rechercher des mots de passe sur d'autres machines du réseau). Détecter un processus qui fait fonctionner le sniffeur est difficile, parce que le nom de ce processus peut être déguisé en quelque chose d'anodin. ou cela peut être un cheval de Troie d'un binaire très connu. Dans ce cas-ci, l'utilisateur n'a pas besoin de l'accès root, juste assez pour déposer le Trojan et attendre que l'administrateur l'exécute. La seule manière pour détecter un sniffeur dans ce cas, est de contrôler si l'interface réseau n'est pas en promiscous mode. Si la carte est en mode promicous cela signifie qu'elle écoute les paquets de tous le réseau et pas seulement ceux destinés à sa machine.
Une machine Unix ne devra jamais être mise en mode promiscous, sauf si sont fonctionnement le nécessite (cas pour un routeur ou un firewall), et donc être en mode promiscous est une indication forte qu'un sniffer est en cours exécution.

Il existe différentes applications qui contrôlebt si l'interface de réseau est en mode promiscous comme CPM (check Promiscuous Mode) écrite par l'université de Carnegie Mellon. Une autre méthode est d'exécuter: ifconfig -a ceci énumérera les interfaces réseaux, et affichera toutes les informations à leur sujet. Le mot PROMISC signifie que la carte est en mode promiscous. Exécuter la commande :
ifconfig -a | grep PROMISC
ceci vous affichera les cartes qui sont en mode promiscous (ce type de commande peut être facilement incorporé à une entrée dans cron, cela peut fonctionner d'heure en heure ou par jour pour vérifier la présence d'un sniffeur). Notez que l'utilitaire ifconfig est parfois remplacé par des hackeurs pour éviter d'être découvert par le biais de la méthode décrite ci-dessus. Une somme de contrôle (checksum) ou une signature MD5 devra être faite pour s'assurer que l'utilitaire ifconfig est l'initial.

Comment detecter un sniffeur sur votre réseau

Détecter d'autres sniffeurs sur d'autres machines est très difficile (et parfois impossible). Mais détecter si une machine Linux fait fonctionner un sniffeur est possible. Ceci peut être fait en exploitant une faille dans la pile TCP/IP de Linux. Quand Linux est en mode promiscous, il répondra aux paquets TCP/IP envoyés à son adresse IP même si l'adresse MAC de ce paquet est fausse (le comportement standard d'un paquet contenant une adresse MAC fausse et qu'il n'y aura pas de réponse car l'interface réseau va le supprimer). Par conséquent, en envoyant des paquets TCP/IP à toutes les adresses IP du sous-réseau, avec une adresse MAC fausse, les ordinateurs en mode promiscous vous répondront (la réponse de ces machines sera un paquet RST). Cette méthode est loin d'être parfaite, elle peut aider à découvrir une activité suspicieuse sur votre réseau. Le programme Neped automatise cette manipulation pour toutes les machines d'un réseau. Notez que cela ne donne rien avec les versions récentes de Linux. En effet cela est du à un bug dans /linux/net/ipv4/arp.c, plus exactement sur la fonction arp_rcv0. Il suffit de patcher son linux ou pour contrer ce type de logiciel il suffit de reconfigurer votre carte avant de déclencher votre sniffeur :

  • /sbin/ipconfig eth0 -arp

Cela empêchera votre carte réseau de répondre aux requêtes ARP, et donc d'être détectée.

Eviter le sniff de manière efficace

Les hubs actifs ou switch permettent de lier une adresse MAC a un port de sortie, ceci implique que la machine ne reçoit plus que les paquets qui lui sont destinés, le filtre se faisant au niveau du hub. Le sniff du réseau se limite à la frontière du hub. Le hacker essaiera alors de détourner le hub actif ou le switch par le biais d'un logiciel comme Hunt (voir hackoff16), mais ceci est une autre Histoire.

Voici une liste de logiciels pour tester la présence d'un sniffeur :



  • Antisniff

    Antisniff par l'équipe de lOpht destiné au machines Windows9X, NT et Unix. Voir article sur Antisniff pour plus d'informations.


  • Neped

    Neped est un des outils écrits par le groupe d'Apostols (http://www.apostols.org) qui détecte sur le réseau les cartes qui sont en mode promiscous (une carte de réseau doit être en mode promiscous pour écouter le trafic réseau ou un ordinateur sur le réseau). Pour cela Il exploite une imperfection dans le protocole arp de Linux (comme decrit plus haut).


  • Snifftest

    Snifftest (écrit par "Beavis and Butthead") essaiera de détecter un sniffeur sur sunOS et solaris. I teste le réseau afin de voir les cartes qui ne sont pas en promiscuous mode (mode mélé).


  • Promisc

    Promisc peut détecter un sniffeur sur Linux et SunOS


  • CPM

    CPM est un outil connu sous SunOS4.0, il peut détecter les cartes en promiscuous mode.


    Ces utilitaires fonctionnent essentiellement sur SunOS ou Solaris. Ces outils vous aiderons à améliorer votre politique de sécurité, mais le sniffeur dans un réseau hétérogène reste quand meme extrêmement difficile à détecter.


    02:15 01/11/99
    LES OUTILS POUR LE SNIFF

      Je vous évite les sniffeurs commercialisés qui vont de 1000 frs à 15000 frs. Il existe beaucoup de sniffeurs en freeware et shareware. Certains sont excellents pour apprendre à manier cet outils et comprendre les particularités des réseaux. La plupart sont développés pour UNIX (ou Linux). Voici pour exemple une liste de sniffeurs commercialises, a sa suite les freeware :

    • NetXray L'analyseur par excellente, existe en version demo pour Windows NT4
    • ATM Sniffer analyser de network associates www.networkassociates.com
    • shomiti system century lan analysez www.shomiti.com.
    • packetview par klos technologies www.klos.com
    • lanwatch wwww.guesswork.com

      Voici le résultat des différents tests effectués sur les sniffeurs en freeware, la liste ci-dessous sera mise a jour petit a petit (si vous en avez testé, n'hésitez pas a m'envoyer les résultats ou vos remarques) :


  • Windump

    La copie conforme de TCPdump adapté à windows. Voir TCPdump. TCPDump est probablement l'outil de sniff réseau le plus largement répandu et le plus connu pour la plateforme UNIX. NRG (Network Research Group) à porté le logiciel sur les plateforme Windows. La nouvelle version WinDump, est disponible pour Windows 95/98 et NT 4,0.


    • windump (netgroup-serv.polito.it)
    • les sources sont disponibles : sources.zip (netgroup-serv.polito.it)

  • Sniffit

    Lui aussi un classique du monde Linux, il analyse avant tous le protocole TCP/IP, écrit par Brecht Claerhout. Sniffit vous permet d'avoir une vue très détaillée de la séquence d'échange du protocole (SEQ, ACK, TTL, Window, ...) avoir un format d'affichage en mode HEX ou texte. Porté sur SunOS/SOLARIS, IRIX et FreeBSD


  • Gobbler

    Gobbler est un excellent outils si vous voulez apprendre à vous servir des sniffeurs, il a été conçu pour MS-DOS, mais il tourne sur windows95. A l'exécution du programme cela peut vous sembler un peu confus. Le menu n'est pas très parlant, il apparaît en appuyant sur la barre d'espace. Appuyer sur F1 pour obtenir de l'aide. Gobbler peut-être utilisé sur un machine locale pour regarder ce qui passe sur le réseau ou sur une machine distante. Ce programme offre un ensemble de fonctions sur le filtrage des paquets et vous pouvez spécifier le type de paquet qui vous intéresse. Il fait partie des meilleurs sniffeurs en freeware


  • ETHLOAD

    ETHLOAD est un freeware sniffeur de paquets écrit en C, pour les réseaux ethernet et token ring, il fonctionne avec la plupart des interfaces réseaux, il peut analyser les protocoles suivants :

    • -TCP/IP
    • -DECnet
    • -OSI
    • -XNS
    • -NetWare
    • -NetBeui

    Par contre le code source n'est pas disponible. ETHLOAD est capable de sniffer les sessions rlogin et telnet, en revanche cela nécessite une clé, qui n'est fournie qu'après certification auprès de l'auteur. ETHLOAD est excellent pour le DOS et Novell

  • LinSniff

    C'est un password sniffeur, il fonctionne sur linux et nécessite les librairies réseaux (tcp.h, ip.h, inet.h, if_ther.h, et la suite).




    18:59 01/11/99

    Neped

    Introduction

    Il existe sous Linux un nombre impressionnant de sniffeurs (certains sont orientés pour sniffer les mots de passe ou pour extraire des informations importantes depuis le trafic réseau ) ceci engendre un danger sur votre réseau local. Neped (NEtwork Promiscous Ethernet detector) est un outil conçu spécifiquement pour détecter les sniffeurs Linux sur un réseau local, en utilisant une imperfection dans la pile TCP/IP de Linux.

    Dans un article précédent 'détecter un sniffeur sur votre réseau', j'avais expliqué la problématique des sniffeurs sur le réseau local et leur 'invisibilité' théorique, et présenter quelques outils disponibles pour détecter ou empêcher le sniff des paquets. Neped est un de ces outils écrit par le groupe d'Apostols (http://www.apostols.org) qui détecte les cartes réseau qui sont en mode promiscous (une carte de réseau doit être en mode promiscous pour écouter le trafic réseau ou un ordinateur sur le réseau). Pour cela Il exploite une imperfection dans le protocole d'arp qui est implanté sur les machines de Linux. Nedped ne peut garantir la découverte de sniffeur (le sniffeur peut être indétectable si il fonctionne sur une machine avec un système d'exploitation différents de Linux, un noyau qui possède le patch contre l'imperfection dans arp ou un Linux sur lequel arp a été désactivé). Neped reste un outil important a déployer dans votre politique de sécurité.

    Une documentation sur le fonctionnement de Neped (en Espagnol seulement) peuvent être trouvés sur le site d'Apostols: http://www.apostols.org/projectz/neped

    Ou se le procurer :

    Le code source de Neped sur le site : ftp://apostols.org/AposTools/snapshots/neped/neped.c

    Neped fait aussi partie du package de Trinux (pour plus d'informations à propos de Trinux: Trinux, The Linux Security Toolkit).

    Une simple script qui emploie Neped pour contrôler et enregistrer si un sniffer est détecté:http://axon.jccc.net/hir/articles/hir8/hir8-9.txt

    Antisniff by lOpht

    Introduction

    Antisniff est une nouveau logiciel de détection de sniffeur, il se demarque des autres logiciels par une interface graphique de qualité et fonctionne sous win32 et Unix. Il a la capacité de balayer un réseau et de détecter si un ordinateur est en mode promiscuous. Avec AntiSniff, les administrateurs et les équipes de sécurité peuvent analyser le trafic de réseau. Antisniff a été conçu pour détecter des machines compromises avec une piles IP qu'un hackeur distant pourrait utiliser pour sniffer le trafic de réseau. Il n'a pas été conçu pour détecter les sondes de réseau ou les analyseurs de réseau spéciaux qui nécessiteraient au hacker un accès physique pour l'installer.

    Fonctionnement

    AntiSniff a été conçu pour être exécuté de deux façons. Premièrement, pour une "analyse du réseau" pour identifier rapidement quelles machines sur le réseau local sont les plus susceptibles d'être etudiées dans la seconde étape. En second lieu, AntiSniff peut être exécuté de base pour la détection de sniffeur, balayant le réseau à intervalles programmées et régulières, comparant les tests de réponses des machines sur une bases de temps et en positionnant des alarmes basées sur des événements définis pour l'utilisateur et en vérifiant ces réponses (test sur arp, dns, echo icmp...)

    Test du noyau de Linux

    Une faille dans la pile TCP/IP de certains Linux permet de découvrir un sniffeur, Quand Linux est en mode promiscous, il répondra aux paquets TCP/IP envoyés à son adresse IP même si l'adresse MAC de ce paquet est fausse (le comportement standard d'un paquet contenant une adresse MAC fausse et qu'il n'y aura pas de réponse car l'interface réseau va le supprimer). Par conséquent, en envoyant des paquets TCP/IP à toutes les adresses IP du sous-réseau, avec une adresse MAC fausse, les ordinateurs en mode promiscous vous répondront (la réponse de ces machines sera un paquet RST), le principe de Antisniff est d'envoyer un PING contenant une adresse IP correcte et une adresse MAC fausse.

    Test du noyau NetBSD

    Le problème est le même que sous Linux, mais utilisé avec une IP de broadcast.

    Test du noyau Windows

    Le test est encore similaire, mais c'est fois-ci l'adresse MAC au lieu d'être fausse est ff:00:00:00:00:00. Ce n'est pas une adresse de broadcast.
    Il est noter que ces tests ne donnent pas le même résultat selon les différents drivers de carte réseau et cartes réseau utilisés. Il y a des possibilités que des tests soient faux, (certaines machines peuvent répondre comme étant en promiscous mode alors qu'elles ne le sont pas) mais cela semble relativement rare.

    Requête DNS

    les sniffeurs exécutent des requêtes DNS pour traduire les adresses IP des paquets capturés. Ansniff contrôle cela, en envoyant un faux paquet qui contient une adresse IP fausse comme adresse de destination, et en surveillant les requêtes DNS pour cette adresse IP. Les machines faisant une requête pour cette adresse seront probablement en promiscous mode.

    Test de latence

    De la série de test c'est le plus intéressant. Les machines qui écoutent tout le trafic entrant engendrent sur la machine un ralentissement des processus. Anstiff exploite cette faiblesse en mesurant le temps de réponse moyen des machines, et en inondant (flooding) le réseau avec du trafic fictif et en mesurant une nouvelle fois le temps de réponse. Une machine écoutant l'ensemble du trafic réseau, sera occupée, et mettra plus de temps à répondre. Ce test est effectue plusieurs fois, en utilisant différentes méthodes de mesure pour être de plus en plus précis. Ce test fonctionne sur toutes les machines et tous les OS. Encore que l'exactitude des tests reste à faire...

    Duper Antisniff

    Antisniff fonctionne comme la plupart des outils de détection, et il est loin d'être parfait. Il existe déjà plusieurs méthodes pour duper Antisniff en rendant indétectable les sniffeurs. Il est important de savoir paramétrer correctement un sniffeur pour écouter le trafic entrant et être totalement passif.

    • Utiliser un noyau mis à jour ou modifié qui corrige le problème mentionné pour Linux Ne pas faire de requêtes DNS (la plupart des outils de sniff possède cette option).
    • Cesser le sniff quand le trafic réseau excède un certain taux.

    Un sniffeur appelé : sniffeur d'Antisniff a été réalisé juste après la sortie de Antisniff. Ce nouveau sniffeur utilise les techniques citées au dessus pour éviter d'être découvert par Antisniff ou un outil similaire. Il ne nous reste plus qu'a attendre la sortie de l'anti anti antisniff.

    Les plates-formes supportées

    Ce programme fonctionne avec windows 95 winsock2, windows98 et windows NT4. Nous vous recommandons NT4 pour une meilleur performance. Windows2000 et windows Terminal Server ne sont pas actuellement supportés. Sur Windows 95, la mise à jour Winsock 2 est nécessaire. Si vous obtenez le message "A required .DLL file, WS2_32.dll was not found." vous devez télécharger la mise à jour de la winsock 2 sur le site de Microsoft. Ce produit est commercial, il existe une demo pour une période de 15 jours.

    La version d'Unix qui est disponible sert seulement dans les environnements non-commerciaux. Elle et destinée a la curiosité personnelle. Elle est livrée avec le code source. Il y a un fichier de LICENCE associé au module qui offre plus de détails dans l'utilisation du logiciel. Actuellement seules les versions OpenBSD et Solaris sont supportées.

    Les softs

    Version Win32
    as-101.zip - version win9X - NT 495 Ko


    Version Unix
    as-unix-research Version 1 - En ligne de commande avec le code source. 41 Ko


    02:20 06/11/99

    TCPdump

    TCPDump est probablement l'outil de sniff réseau le plus largement répandu et le plus connu pour la plateforme UNIX. NRG (Network Research Group) a maintenant porte le logiciel sur les plateforme Windows. La nouvelle version WinDump, est disponible pour Windows 95/98 et NT 4,0.

    Ecrit par Van Jacobson, Craig Leres et Steve McCanne, tous de l'université de Berkley. il analyse avant tous le protocole TCP/IP, Il sniffe l'en-tête des segments TCP et des datagrammes IP. Il ne sniffe en aucun cas les données. Il opère en placant la carte réseau en mode promiscous de telle sorte que chaque paquet circulant sur le réseau est capturé. L'OS doit autoriser l'interface réseau à se placer en mode promisc, tcpdump supporte les système Unix suivants : 4.4BSD, BSD/386, Linux, AIX, SunOs, Ultrix, HP-UX, il existe une snoop sur solaris2.X et iptrace, qui procure des fonctionnalités similaires

    Fonctionnement

    TCPdump peut capturer et filtrer les paquets en provenance d'un interface réseau qui à été placée en mode promiscous, cette fonctionnalité est fournie par la bibliothèque Berkley packet Filter (BFP) qui fonctionne également avec les liaisons point à point, telles que SLIP. TCPDump peut être utilisé pour observer et diagnostiquer le trafic de réseau selon diverses règles complexes. Il peut y avoir plusieurs niveaux d'analyse du trafic réseau et il peut enregistrer toutes ces informations dans un fichier pour une analyse postérieure.

    Pré requis

    Il est nécessaire de posséder les librairies suivantes pour faire fonctionner TCPDump

    Télécharger TCPDump

    Sniffdoz - Sniffoz@yahoo.com