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 :
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) :
- Esniff
Esniff est un standard, basé sur UNIX, il a été
réalisé par la revue Phrack Magazine (online). Il nécessite un
compilateur C.
- 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
|