David NOUCHI                         Annexe C

DESS SSI

 

 

 

 

 

 

 

Fonctionnalités des logiciels :

         · Ethereal

· Nmap

· Dsniff

· Nessus

· X


 

Table des matières

 

 

1.       Le sniffer Ethereal                                                                                p 3

 

1.1.          Introduction                                                                     p 3

1.2.          Installation                                                                      p 3

1.3.          Le programme                                                                    p 4

1.4.          Les filtres                                                                       p 7

 

2.     Options usuelles de Nmap                                                                       p 9

 

3.     Options usuelles de Dsniff                                                                     p 13

 

3.1.          Dsniff                                                                           p 13

3.2.          Filesnarf                                                                         p 13

3.3.          Mailsnarf                                                                        p 13

3.4.          Urlsnarf                                                                         p 14

3.5.          Webspy                                                                          p 14

3.6.          Arspoof                                                                          p 14

3.7.          Dnsspoof                                                                         p 14

3.8.          Macof                                                                            p 15

3.9.          Sshmitm                                                                         p 15

3.10.      Webmitm                                                                        p 15

 

4.     Le logiciel Nessus                                                                                  p 16

 

4.1.          Installation                                                                     p 16

4.2.          Utilisation                                                                       p 17

 

5.     Le logiciel X                                                                                          p 21

 

5.1.          Installation                                                                      p 21

5.2.          Utilisation                                                                       p 21

 

 


6.    1. Le sniffer Ethereal

 

1.1. Introduction

 

     Pour analyser finement le trafic réseau lorsqu'il y a, par exemple, un problème que l'on n'arrive pas à déterminer, il peut être utile de voir ce qu'il se passe réellement sur le réseau. Pour cela il existe des sniffers qui sont des outils qui permettent de récupérer les paquets qui passent physiquement sur un réseau (quelque soit la destination de ces paquets). Il existe un outil sous licence GNU qui permet de faire cela et qui permet d'interpréter la structure des paquets, cela de façon graphique. Il s'appelle Ethereal et est disponible sur le site d'Ethereal.

 

1.2. Installation

 

l’archive ethereal-0.9.11.tar.bz2 se trouve à l'URL www.ethereal.com, il faut la télécharger et la décompresser en tapant :

 

bunzip2 ethereal-0.9.11.tar.bz2
tar xvf ethereal-0.9.11.tar

 

Cela va nous donner le répertoire ethereal-0.9.11. Il faut installer préalablement les packages suivants libglib1.2-devel et libgtk+1.2-devel.

 

Dans le répertoire d'ethereal, tapez :

./configure

 

A la fin de la commande, on obtient un résumé des principales options choisies :

The Ethereal package has been configured with the following options.
Build ethereal : yes
Build tethereal : yes
Build editcap : yes
Build mergecap : yes
Build text2pcap : yes
Build idl2eth : yes
Build randpkt : no
Build dftest : no

Install setuid : no
Use plugins : yes
Use GTK+ v2 library : no
Use pcap library : yes
Use zlib library : yes
Use IPv6 name resolution : yes
Use UCD SNMP/NET-SNMP library : no

 

Puis :

make

En tant que root, tapez maintenant:

make install

Un répertoire contenant divers fichiers (plugins et autres) a été installé sous /usr/local/lib/ethereal, et les exécutables se trouvent sous /usr/local/bin.

 

 

1.3. Le programme

 

Il est aussi nécessaire de connecter cette machine avec une carte réseau sur le réseau à sniffer, a priori en la connectant sur un hub. On ne peut voir que les paquets qui passent physiquement sur le réseau auquel est connecté la carte réseau. De ce fait, si l'on veut analyser des paquets qui ne sont pas à destination de notre machine, il faut que l'on soit sur un réseau à collisions (tout le monde utilise le même câble réseau à tour de rôle) : c’est le cas des réseaux 10 base 2 (coax) ou 10/100 base T avec l'utilisation d'un concentrateur Ethernet ou HUB.

 

L'installation de ce logiciel dépendra du format dans lequel vous vous l'êtes procuré. Dans tous les cas, il n'y a pas vraiment de problèmes si vous disposez d'une installation standard de Linux. Il faut être sous une session graphique (X Window) pour utiliser ce logiciel et le lancer sous le compte root.  

    

Pour lancer ce logiciel, il suffit d'utiliser un terminal et d'y taper la commande /usr/local/bin/ethereal ou /usr/bin/ethereal (ethereal devrait d'ailleurs suffire). Si vous n'êtes pas sous le compte root, utilisez la commande su - puis le mot de passe du root avant de lancer ethereal. Pour de plus amples informations sur l'utilisation même du produit, tapez man ethereal à l'invite de commande d'un shell.

 

Le principe est simple, vous lancez une session de capture à l'aide du menu Capture (figure ci-dessous). Cette session peut être interactive ou pas. En d'autres termes, les paquets capturés peuvent être affichés au fur et à mesure ou à la fin de la capture.

 

 

 

 

La boîte de dialogue suivante apparaît alors. Elle permet de spécifier ce qui doit être analysé.

 

 

· Le champ Interface permet de choisir l'interface sur laquelle on va écouter. Sur un portable, l'interface doit être eth0 car c'est la seule. Si cette interface n'est pas disponible vérifiez que vous êtes bien sur le compte root. Il n'y a que le root qui peut sniffer les paquets.

 

· Le champ Count permet de spécifier le nombre des paquets sniffés. La valeur 0 (Infinite) indique qu'ethereal captera des paquets jusqu'à ce qu'on lui demande d'arrêter. Vient ensuite un champ intéressant.

 

 

 

 

 

· Le champ Filter limite les paquets qui seront conservés. Seuls les paquets pour lesquels cette expression est vraie seront conservés. Dans l'exemple donné, on ne conservera que les paquets dont le protocole est udp avec le port source ou destination 53 qui correspond au protocole DNS. Pour des détails sur les filtres, se référer à la partie sur Les filtres.

 

· Le champ File spécifie un fichier dans lequel se trouve les paquets. Ceci peut-être utile si l’on veut analyser une trace faite avec tcpdump par exemple.

 

· Update liste of packets in realtime permet (s'il est coché) de voir les paquets s'afficher en temps réel (pendant la capture) dans la fenêtre des paquets disponibles. Cette option ne doit être utilisée que si il n'y a pas trop de paquets conservés.

 

· Automatic scrolling in live capture permet (s'il est coché) de voir les derniers paquets s'afficher en temps réel (pendant la capture) dans la fenêtre des paquets disponibles en faisant défiler la liste de ceux-ci. Cette option ne doit être utilisée que s'il y a peu de paquets.

 

· Enable name resolution permet (s'il est coché) de demander une traduction des adresses IP en noms. Cette option doit aussi être manipulée avec "précaution" car elle génère des requêtes DNS qui peuvent "encombrer" le réseau et prendre du temps (surtout si l’on a de nombreuses machines différentes dans les paquets et qu'elles ne sont pas connues dans les DNS).

 

 

 

Durant la capture, une boîte de dialogue récapitule les paquets qui sont conservés. En même temps, les paquets apparaissent dans la fenêtre principale (voir figure ci-dessous) si l'option Update liste of packets in realtime a été cochée. Le bouton Stop permet d'arrêter la capture. Les paquets deviennent alors disponibles dans la fenêtre principale s'ils ne l’étaient pas déjà.

 

 
                                                                                                                                                                                                                                  

 

L'affichage des résultats se décompose en trois parties :

 

·         La liste des paquets capturés disponibles en dessous de la barre de menu avec un affichage synthétique du contenu de chaque paquet.

 

·         La décomposition exacte du paquet actuellement sélectionné dans la liste. Cette décomposition permet de visualiser les champs des entêtes des protocoles ainsi que l'imbrication des différentes couches de protocoles connus.

 

·         La troisième zone contient le paquet (le début s'il est trop gros) affiché en hexadécimal et en ASCII.

 

      Tout en bas du programme se trouve un champ filter. Il permet de n'afficher que les paquets qui correspondent aux critères spécifiés dans ce champ. C'est un filtre qui permet de temporairement cacher une partie des paquets.

 

 

 

 

      Voici un exemple des détails que l'on peut obtenir pour un paquet. La vision synthétique du paquet est disponible en haut, la zone du milieu nous donne l'éclaté des protocoles en jeu dans celui-ci (les différentes couches avec les champs associés). Dans la partie du bas, on retrouve le paquet en format "brut" affiché en hexadécimal et en ASCII. Un clic sur un des champs de celui-ci (dans la zone centrale) met en gras les octets correspondant dans la vision brut du paquet.

 

1.4. Les filtres

 

Il y a deux sortes de filtres : Les filtres à la capture et les filtres à l'affichage. Ces filtres n'ont pas la même syntaxe.

 

La syntaxe des filtres à la capture est la même que celle utilisée pour les filtres de la commande tcpdump. Pour en connaître le format, il faut donc utiliser man tcpdump.

 

Quand aux filtres à l'affichage, la syntaxe est propriétaire à ethereal. Pour la connaître, il faut utiliser la commande man ethereal. La section suivante donne des exemples pour ces deux types de filtres.

 

 

 

 

Filtres de capture :

 

Ne seront gardés que les paquets pour lesquels le filtre est vrai. Les filtres se décomposent en 3 parties :

·         le protocole qui peut être ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp ou udp,

·         la direction qui peut être src ou dst,

·         un champ qui peut être host, net ou port suivi d'une valeur.

Les opérateurs and, or et not peuvent être utilisés pour combiner des filtres.

 

Filtre

Fonction

host 172.16.0.1 and tcp

ne conserve que les paquets TCP à destination ou en provenance de la machine 172.16.0.1

udp port 53

ne conserve que les paquets UDP en provenance ou en destination du port 53

udp port 53 and dst host 172.16.0.1

ne conserve que les paquets UDP en provenance ou en destination du port 53 à destination de la machine 172.16.0.1

tcp dst port 80 and dst host 172.16.0.1 and src net 172.16.0.0 mask 255.255.255.0

ne conserve que les paquets TCP en destination de la machine 172.16.0.1 sur le port 80 et en provenance des machines du réseau 172.16.0/24

 

Filtres d'affichage :

 

Les filtres d'affichage sont un peu plus fin que ceux de la capture. Seuls les paquets pour lesquels l'expression du filtre est vraie seront gardés. Les expressions sont basées sur les champs disponibles dans un paquet. Le simple ajout d'un champ veut dire que l'on garde le paquet si celui-ci est disponible. On peut aussi utiliser les opérateurs ==, !=, >, <, >= et <= pour comparer les champs avec des valeurs. Les expressions ainsi fabriquées peuvent être combinées avec les opérateurs && (pour un et logique), || (pour un ou logique), ^^ (pour le ou exclusif) et ! (pour la négation). L'usage des parenthèses est possible.

 

Voici quelques exemples de champs disponibles (tapez man ethereal pour une liste exhaustive) :

Champ

Type

Signification

ip.addr

Adresse IPv4

adresse IP source ou destination

ip.dst

Adresse IPv4

adresse IP destination

ip.flags.df

Booléen

Drapeau IP, ne pas fragmenter

ip.flags.mf

Booléen

Drapeau IP, fragments à venir

ip.ttl

entier non signé sur 8 bits

Time to live

 

Voici quelques exemples de filtres :

Filtre

Signification

ip.addr == 172.16.0.100

tous les paquets IP en provenance ou à destination de la machine 172.16.0.100.

(ip.addr == 172.16.0.100) && (dns.response)

tous les paquets IP en provenance ou à destination de la machine 172.16.0.100 qui sont des réponses à des requêtes DNS.

(ip.addr >= 172.16.0.100) && (ip.addr <= 172.16.0.123)

tous les paquets IP en provenance ou à destination des machines comprises entre l'adresse IP 172.16.0.100 et l'adresse IP 172.16.0.123 (comprises).


2. Options usuelles de Nmap

 

Les options peuvent parfois être combinées, et sont très spécifiques à certaines opérations. Toutefois il peut arriver que certaines options ne cohabitent pas ensemble ; dans ce cas-là, Nmap essaye d'avertir l'utilisateur des erreurs, et des incompatibilités de la commande demandée. Les options possibles sont :

 

-sT

Analyse le port TCP connect( ) ; c'est le mode le plus courant, et l'issue du scan est facilement interprétable. En effet, si le port est en écoute, alors la connexion sur le port a de grandes chances de réussir ! De plus cette option n'a pas besoin de privilège root .

-sU

Analyse le port UDP. L'astuce consiste en l'envoi d'un paquet UDP de 0 octets sur chaque port de la machine distante ; si on reçoit un message ICMP injoignable, cela signifie que le port est fermé. Autrement, on le considère comme ouvert.

-sF

Cela correspond aux scans de FIN furtif, d'arbre Xmas, et de NULL . Je ne détaillerai pas les significations de chacun, mais ce qu'il faut retenir, c’est que Microsoft (comme d' habitude) n'a pas tenu compte des RFC concernant ces protocoles, et par conséquent ces commandes ne répondront pas sur un système Windows. Mais d'un autre coté, cela aide à identifier l'OS, car si la commande nous répond que tous les ports sont fermés, c’est qu'il s'agit probablement d'un système Windows.

-sP

Effectue un ping, sans scanner, pour vérifier si l'hôte est toujours en ligne. Nmap détermine si l'hôte est toujours "en vie " par 3 méthodes : un ping comme d'habitude, grâce aux paquets ICMP, un envoi de paquets TCP ACK sur le port  80 pour la réception d'un retour RST, ou alors par l'envoi de paquets SYN en attendant une réponde de type RST ou SYN/ACK .

-s0

Analyse du protocole IP ; cette méthode permet de déterminer quel protocole IP est supporté par la plate-forme distante. La technique est d'envoyer des rangées de paquets ICMP pour chaque protocole identifié. Si l'on reçoit un message injoignable d'un protocole, c’est que ce dernier n'est pas utilisé. Autrement nous considérerons qu'il est ouvert. Il faut toutefois noter que certaines plates-formes, telles que AIX, HP-UX, ou certains firewalls, peuvent ne pas nous envoyer des messages d'injoignabilité pour les protocoles inutilisés. Cela fera apparaître les protocoles ouverts .

-sA

Analyse de l'ACK. Cette méthode est habituellement utilisée pour analyser les règles sortantes des firewalls. En particulier, cela nous aide à déterminer dans quel état est le firewall : protection complète, ou simple filtrage de paquets provenant de requêtes SYN. La technique consiste à envoyer un paquet ACK, avec un numéro de séquence aléatoire, sur le port spécifié. Si une réponse RST nous parvient, c’est que le port est "non-filtré" ; le contraire signifiera "filtré" ; cette analyse ne montrera jamais les ports ouverts.

-sW

Analyse avancée identique à celle d'ACK, excepté qu'elle peut détecter les ports ouverts, aussi bien "filtré" que "non-filtré".

-sR

Analyse du port RCP. Il prend tous les ports TCP/UDP trouvés ouverts et les inonde ensuite avec des commandes de NULL du programme SunRPC pour déterminer s'ils sont des ports RPC. Ainsi, il indique quel programme et numéro de version sont utilisés. Vous pouvez alors obtenir les mêmes renseignements que le coupe-feu (ou protection par des couches TCP).

-b <ftp relay host>

Analyse par attaque-retour ftp. Une fonction intéressante du protocole ftp (RFC 959) est l'appui pour des connexions ftp "par procuration". Autrement dit, on devrait être capable de se connecter à lien.com par le serveur FTP attaqué et demander que le serveur envoie un fichier n'importe où sur Internet ! Maintenant cela peut avoir bien fonctionné en 1985 où le RFC a été écrit. Mais dans l'Internet d'aujourd'hui, nous ne pouvons pas avoir de détournement de serveurs ftp.

-P0

Permet de ne pas pinguer les hôtes avant leurs balayages. Cela permet le balayage des réseaux qui ne permettent pas de demandes d'écho ICMP (ou des réponses) par leur coupe-feu. Microsoft.com est un exemple d'un tel réseau : vous devriez toujours utiliser -p0 ou -pt80 quand vous scannez les ports de microsoft.com.

-PT

Utilise le ping TCP pour déterminer quels hôtes sont en services. Au lieu d'envoyer des échos ICMP en paquets de demande et attendre de réponse, il envoie des paquets TCP ACK partout dans le réseau cible (ou à une machine). Il attend ensuite des réponses au goutte à goutte. Les hôtes qui sont « ok » devraient répondre par un RST. Cette option préserve l'efficacité pour parcourir seulement les hôtes « ok », en permettant d’explorer des réseaux/hôtes. Pour les utilsateurs non-root, il utilise coonect(). Pour mettre le port de destination en vue de paquets d'investigation, utilisez -PT<numero port>. Le port par défaut est 80, puisque ce port n'est pas souvent filtré.

-PS

Cette option utilise des paquets SYN (demande de connexion) au lieu des paquets ACK pour des utilisateurs root. Les hôtes « ok » devraient répondre par un RST (ou, rarement, un SYN|ACK).

-PI

Cette option utilise un véritable paquet ping (demande ICMP). Il trouve les hôtes «  ok » et cherche aussi des adresses d'émission sous-adressées sur votre réseau. Ceux-ci sont les adresses IP qui sont extérieurement accessibles et sont traduites en paquets IP à un sous-réseau d'ordinateurs. Ceux-ci devraient être éliminés s’ils sont trouvés car ils tiennent compte des nombreuses attaques de service (Smurf est le plus commun).

-O

Cette option active l'identification d'hôtes éloignés via l'empreinte TCP/IP. Autrement dit, il utilise une liasse de techniques pour détecter des subtilités dans la pile réseau de système d'exploitation des ordinateurs que vous parcourez. Il utilise cette information pour créer une empreinte qu'il compare avec sa base de données d'OS connus (le fichier nmap-os-fingerprints) pour connaître le type de système.

Ca permet également l'utilisation d'une des mesures "Uptime", qui utilise l'option d'horodatage de TCP (RFC 1323) pour deviner quand une machine était réamorcée.

Avec l'association de l'option -V, un numéro d'IDIP est généré : la plupart des machines sont dans la classe "progressive". Cela signifie qu'il incrémente le champ "ID" dans l'en-tête IP pour chaque paquet qu'il envoie. Cela les rend vulnérables lorsqu’on les réunit à d'autres informations et à des attaques de spoofing.

-I

Cela permet de changer complètement le balayage d'ident par TCP . Comme noté par Dave Goldsmith à un poste de Bugtraq 1996, le protocole ident (rfc 1413) tient compte de la révélation de l'username qui possède n'importe quel processus connecté via TCP, même si celui-ci n'a pas amorcé la connexion. Donc vous pouvez, par exemple, vous connecter au port http et utiliser ensuite identd pour découvrir si le serveur est démarré en root. Cela peut seulement être fait avec une pleine connexion TCP au port cible (comme le -sT). Quand -I est utilisé, identd de l'hôte distant est vérifié pour chaque port ouvert trouvé. Évidemment cela ne marchera pas si l'hôte n'a pas lancé identd.

-f

Cette option entraîne l'analyse des requêtes SYN, FIN, XMAS, or NULL pour utiliser des paquets IP fragmentés minuscules. L'idée est de partager l'en-tête TCP en plusieurs paquets pour les rendre indécelables pour les filtres de paquets, des systèmes de détection d'intrusion et d'autres techniques qui détectent ce que vous faites. Soyez prudent avec cela ! Quelques programmes ont des difficultés à traiter ces paquets minuscules.

-oN <logfilename>

Cela enregistre les résultats de votre commande sous forme lisible dans le fichier que vous spécifiez comme un argument.

-oX <logfilename>

même chose que -oN, sauf que là c’est dans un format XML .

-p <port_number>

Cette option indique quels ports vous voulez spécifier. Par exemple '-p 23 ' essayera seulement le port 23 de l'hôte(s) cible. '-p 20-30,139,60000-' ports entre 20 et 30, port 139 et tous les ports plus grands que 60000. Le "défaut " parcourt tous les ports entre 1 et 1024 aussi bien que n'importe quels ports inscrits dans le fichier de services qui vient avec nmap. Pour le balayage de protocole IP (-sO), cela spécifie que le numéro de protocole que vous désirez parcourir (0-255).

-F

Permet de scanner uniquement les ports listés dans le fichier de services joint avec nmap ; ce qui est beaucoup plus rapide que les 65535 ports .

-D <decoy1 [,decoy2][,ME],...>

Entraîne l'analyse d'un appât pour être exécuté en le faisant apparaître à l'hôte éloigné comme étant l'hôte(s) que vous spécifiez (d'où appâts) et parcourt le réseau cible aussi. Ainsi ils ne sauront pas quels IP est en train de les parcourir . Tandis que cela peut être défait par le traçage du chemin de routeur, l'omission de réponse et d'autres mécanismes "actifs", c'est généralement une technique extrêmement efficace pour cacher votre adresse IP.
Séparez chaque hôte appât avec des virgules et vous pouvez facultativement utiliser "ME" comme un des appâts pour représenter la position où vous voulez que votre adresse IP soit utilisée. Notez que les hôtes que vous utilisez comme des appâts devraient être « ok » , ou vous pourriez accidentellement inonder vos cibles à l'aide de requêtes SYN. Aussi, il sera assez facile de déterminer quel hôte est parcourut.

-S <IP_Address>

Dans quelques circonstances, nmap peut ne pas être capable de déterminer votre adresse source. Dans cette situation, utilisez -S avec votre adresse IP. Une autre utilisation possible de cet option est de détourner l'analyse pour faire croire aux cibles que quelqu'un d'autre les parcourt. Imaginez une société étant à plusieurs reprises parcouru par un concurrent!

-e <interface>

Indique à nmap quel interface utiliser pour envoyer et recevoir les données .. -g <portnumber> indique à nmap quel port utiliser .

-n

Dit à Nmap de NE JAMAIS faire la résolution DNS inverse sur les adresses IP actives qu'il trouve. Puisque le DNS est souvent lent, cela peut aider.

-R

Dit à Nmap de TOUJOURS faire la résolution DNS inverse sur les adresses IP cibles. Normalement il le fait seulement quand une machine est trouvée.

-r

Dit à Nmap de ne pas modifier l'ordre dans lequel les ports sont parcourus.

-M

Indique à Nmap la taille des sockets à utiliser avec TCP connect().

--randomize_hosts

Dit à Nmap de brouiller chaque groupe de plus de 2048 hôtes avant qu'il ne les parcoure. Cela permet des analyses moins évidentes à percevoir aux systèmes de contrôle de réseau divers, particulièrement quand vous le combinez avec des options, de choix du temps, lentes (voir ci-dessous).

-M <max sockets>

Met le nombre maximal de sockets qui seront utilisées en parallèle pour une analyse TCP connect() . Cela est utile pour ralentir l'analyse de peu de ports et éviter de saturer des machines distantes. Une autre approche est d'utiliser      -sS, qui est généralement plus facile pour des machines à manipuler.

-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>

Ceux-ci sont les principes de choix du temps pour exprimer vos priorités à Nmap. Le mode paranoïd parcourt le réseau très lentement dans l’espoirs d'éviter la détection par des systèmes IDS. Il adapte les analyses (aucun balayage parallèle) et attend généralement au moins 5 minutes entre l'envoi de paquets. Sneaky est semblable, sauf qu’il attend seulement 15 secondes entre l'envoi de paquets. Ceci permet de soulager la charge sur le réseau et réduire les chances de mettre à bas les machines. Il adapte les investigations et attend au moins 0.4 secondes entre eux.

Normal est le comportement par défaut de Nmap , qui essaie de tourner aussi rapidement que possible sans surcharger le réseau ou les hôtes/ports manquants (disparus). Le mode agressif ajoute un temps de 5 mn par hôte et il n'attend jamais plus de 1.25 secondes dans les réponses d'investigation. Insane est seulement approprié pour des réseaux très rapides ou où vous ne risquez pas de perdre une certaine information. Il a des temps d'hôtes de 75 secondes et attend seulement 0.3 secondes dans les investigations individuelles.

--host_timeout <milliseconds>

Spécifie que l'on permet à Nmap avec un temps t de passer le balayage d'un hôte simple dans le but d'obtenir son IP. Le mode par défaut ne prévoit pas temps de fin pour l'hôte.

--initial_rtt_timeout <milliseconds>

Spécifie le temps d'investigation initial. C'est généralement utile lors du parcourt du firwall des hôtes avec -p0. Normalement Nmap peut obtenir une bonne estimation du RTT par le ping. Le mode par défaut utilise 6000.

--scan_delay <milliseconds>

Spécifie le temps minimal que Nmap doit attendre entre chaque investigation. C'est utile pour réduire la charge du réseau ou ralentir l'analyse dans le but de se glisser sous des seuils IDS.

 

 

 

 

 

 

 

 

 

 


3. Options usuelles de dsniff

 

3.1. Dsniff

 

Syntaxe :  dsniff [-c] [-d] [-m] [-n] [-i interface] [-s snaplen] [-f services] [-t trigger[,...]]] [-r|-w savefile] [expression]

 

-c

Procède à un ré assemblage en half-duplex du flux TCP, pour supporter le trafic routé de façon asymétrique (comme lors de l'utilisation de arp­ spoof(8) pour intercepter le trafic client à destination de la passerelle locale).

-d

Active le mode débugage.

-m

Active la détection automatique du protocole.

-n

Ne pas résoudre les adresses IP en noms de machines.

-i interface

Spécifie l'interface sur laquelle écouter.

-s snaplen

Analyse au maximum les premiers snaplen octets de chaque connexion TCP, plutôt que les 1024 par défaut.

-f services

Charge les numéros de ports de chaque service depuis un fichier « services ».

-t trigger[,...]

 

Charge les numéros de ports de chaque service depuis une liste séparée par des virgules, spécifiée ainsi port/proto=service (e.g. 80/tcp=http).

-r savefile

Lit les sessions reniflées depuis le fichier « savefile » créé avec l'option -w.

-w file

 

Écrit les sessions reniflées vers le fichier « savefile » plutôt que de les analyser et de les imprimer.

Expression

 

Spécifie l'expression d'un filtre tcpdump(8) pour sélectionner le trafic à renifler.

 

3.2. Filesnarf

 

Syntaxe :  filesnarf [-i interface] [[-v] pattern [expression]]

 

-i interface

Spécifie l'interface sur laquelle écouter.

-v

mode "Versus". Inverse le sens de correspondance, pour sélectionner les fichiers qui ne correspondent pas.

Pattern

Spécifie l'expression régulière pour la sélection de noms de fichiers.

Expression

 

Spécifie l'expression du filtre tcpdump(8) pour sélectionner le trafic à renifler.

 

3.3. Mailsnarf

 

Syntaxe :  mailsnarf [-i interface] [[-v] pattern [expression]]

 

-i interface

Spécifie l'interface sur laquelle écouter.

-v

mode "Versus". Inverse le sens de correspondance, pour sélectionner les messages qui ne correspondent pas.

Pattern

Spécifie l'expression régulière pour les entêtes/corps de messages correspondants.

 

Expression

 

Spécifie l'expression du filtre tcpdump(8) pour sélectionner le trafic à renifler.

 

3.4. Urlsnarf

 

Syntaxe :  urlsnarf [-n] [-i interface] [[-v] pattern [expression]]

 

-i interface

Spécifie l'interface sur laquelle écouter.

-v

mode "Versus". Inverse le sens de correspondance, pour sélectionner les URL qui ne correspondent pas.

Pattern

Spécifie l'expression régulière pour la sélection de noms d’URL.

Expression

 

Spécifie l'expression du filtre tcpdump(8) pour sélectionner le trafic à renifler.

-n

Ne pas résoudre les adresses IP en noms de machines.

 

3.5. Webspy

 

Syntaxe :  webspy [-i interface] host

 

-i interface

Spécifie l'interface sur laquelle écouter.

-host

Spécifie le client web à espionner.

 

3.6. Arpspoof

 

Syntaxe : arpspoof [-i interface] [-t target] host

 

-i interface

Spécifie l'interface à utiliser.

-t target

Spécifie une machine particulière à empoisonner en ARP (si non spécifié, toutes les machines sur le LAN).

Host

 

Spécifie la machine pour laquelle vous désirez intercepter des paquets (usuellement la passerelle locale).

 

3.7. Dnsspoof

 

Syntaxe : dnsspoof [-i interface] [-f hostfile] [expression]

 

-i interface

Spécifie l'interface à utiliser.

-f hostfile

Spécifie le chemin d'un fichier au format hosts(5). Seul un nom de machine est autorisé par ligne (pas d'alias), mais les noms de machine peuvent contenir des caractères spéciaux (comme *.dou­bleclick.net).

Expression

Spécifie une expression de filtre tcpdump(8) pour choisir le trafic à renifler.

 

Si aucun fichier hostfile n'est spécifié, des réponses seront forgées pour toutes les requêtes d'adresses sur le LAN avec en réponse l'adresse IP de la machine locale.

 

 

 

3.8. Macof

 

Syntaxe : macof [-i interface] [-s src] [-d dst] [-e tha] [-x sport] [-y dport] [-n times]

 

-i interface

Spécifie l'interface sur laquelle envoyer.

-s src

Spécifie l'adresse IP source.

-d dst

Spécifie l'adresse IP destination.

-e tha

Spécifie l'adresse hardware cible.

-x sport

Spécifie le port TCP source.

-y dport

Spécifie le port TCP destination.

-n times

Spécifie le nombre de paquets à envoyer.

 

Les valeurs pour les options laissées non spécifiées seront générées aléatoirement.

 

3.9. Sshmitm

 

Syntaxe : sshmitm [-d] [-I] [-p port] host [port]

 

-d

Active la sortie de débugage.

-I

Se met à l'écoute ou détourne une session interactive.

-p port

Spécifie le port local à écouter.

Host

Spécifie la machine distante vers laquelle les connexions sont relayées.

port

Spécifie le port distant vers lequel les connexions sont relayées.

 

 3.10. Webmitm

 

Syntaxe : webmitm [-d]

 

-d

Active la sortie de débugage.

 

 


4. Installation et configuration de Nessus

 

Dans cette partie, je vais présenter l'installation et l'utilisation pour le client et le serveur sur Linux.

 

4.1. Installation de Nessus

 

Téléchargez la distribution source de Nessus du site Web http://www.nessus.org/ topic "Download" et suivez les instructions ci-dessous :

 

Installez Nessus en utilisant le script appelé nessus-installer.sh situé dans le répertoire nessus-installer. Tapez la commande suivante :

 

#sh nessus-installer.sh.

 

Celle-ci téléchargera la compilation suivante de logiciels :

· nessus-libraries-x.x.tar.gz.
· libnasl-x.x.tar.gz .
· nessus-core.x.x.tar.gz .
· nessus-plugins.x.x.tar.gz .

 

(x représente la version du logiciel au moment où vous le téléchargez.)

 

Il faut alors décompresser tous les fichiers en utilisant les commandes suivantes :

#tar xvfz nessus-libraries-x.x.tar.gz
#tar xvfz libnasl-x.x.tar.gz
#tar xvfz nessus-core.x.x.tar.gz
#tar xvfz nessus-plugins.x.x.tar.gz

 

Compilez chaque fichier dans l'ordre chronologique en commençant par nessus-libraries :

#cd nessus-libraries
#./configure
#make
#make install

 

NB : pour la dernière commande make install, vous devez être identifié en tant que root

 

Compilation de libnasl :

#cd libnasl
#./configure
#make
#make install

 

Compilation de nessus-core :

#cd nessus-core
#./configure
#make
#make install

 

Compilation des plugins de Nessus :

#cd nessus-plugins
#./configure
#make
#make install

 

Une fois toutes les compilations effectuées, deux fichiers importants vont se créer : nessusd le serveur et nessus son client.

 

Dans le cadre de son utilisation sous Linux, ajoutez la ligne :

/usr/local/libau fichier

/etc/ld.so.conf

pour incorporer la bibliothèque de Nessus (comme compilé ci-dessus), de sorte que Nessus, une fois démarré, puisse la trouver.

 

Utilisez la commande suivante pour mettre à jour le nouveau chemin d'accès :

#"echo/usr/local/lib" > >/etc/ld.so.conf
# ldconfig

 

 

4.2. Utilisation de Nessus

 

Pour utiliser Nessus, deux choses à faire :

La première est de créer un nouveau compte utilisateur, ainsi que la configuration de ses droits d'accès. La seconde est de configurer le client Nessus.

 

1.     Nouveau compte utilisateur et droits d'accès :

 

Etape 1 : Utilisez le script "nessus-adduser" localisé dans le répertoire /usr/local/sbin pour la génération d'un nouveau compte utilisateur. L'utilisateur pourra alors se connecter à Nessus via ce compte.

           

Login : ->indiquez un nouveau nom d'utilisateur : X

 

Etape 2 : Choisissez la méthode pour enregistrer le mot de passe sur le serveur. Choisissez le "plaintext" (texte pur) si le mot de passe doit être sauvegardé tel quel (en clair). Choisissez "cipher" (chiffré) si le mot de passe doit être sauvegardé chiffré.

               

Authentication Method (cipher / palintext ) : -> indiquez la méthode : cipher

 

Etape 3 : L'administrateur du système peut assigner des privilèges pour permettre à un utilisateur de se connecter sur une partie du réseau et celles où il ne pourra pas.

               

Source host or network [anywhere] : -> indiquez la source : anywhere

 

Etape 4 : Demande de saisie du mot de passe pour le compte X. Ce mot de passe est demandé par le serveur seulement une fois. C'est-à-dire que lors de la première connexion pour l’utilisation de Nessus, X demandera le mot de passe et pour les prochaines fois ce ne sera plus nécessaire.

           

One time password : -> indiquez le mot de passe : secret

 

Etape 5 : Spécifier les privilèges de scan du réseau permis à l’utilisateur X. Par exemple, nous pouvons permettre à X de scanner seulement une adresse IP ou un sous-réseau. Quand ceci est fait, pressez Ctrl-D pour arrêter le processus. Si le privilège n'est pas spécifié, on permet alors à X de parcourir l'intégralité du réseau. Plus de détails sur la spécification des privilèges sont disponibles dans les pages de man "nessus-adduser".

 

                Login                   : X

      Auth. Method                 : Cipher, can connect from anywhere

      One time password       : secret

      Rules                   :

 

Is that ok ? (y/n) [y]

 

Nessus demande confirmation pour valider les informations saisies précédemment.

 

Le fichier de configuration nessusd /usr/local/etc/nessusd.conf peut être modifié par l'administrateur du système pour peaufiner (règler avec précision) le serveur.

La commande nessus –D permet de démarrer le serveur.

 

2.     Configuration du client Nessus :

 

Le programme nessus est placé dans /usr/local/bin/nessus. Employez la commande suivante pour démarrer le client : /usr/local/bin/nessus & ; la fenêtre ci-après apparaît :

 

 

 

Quand l'utilisateur démarre le client nessus pour la première fois, Nessus crée une clé privée pour l'utilisateur, en accord avec le nom utilisateur Linux, snort dans ce cas. C'est-à-dire qu'à chaque « nom d'utilisateur » sur Linux correspond une clef privée unique, on appelle cela le rapport un à un.

Ayant déjà créé la clef privée, Nessus demandera à l'utilisateur d'entrer un mot de passe pour cette clef. L'utilisateur doit la garder secrète. La deuxième ligne du schéma est là pour la confirmation du mot de passe.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

· Fenêtre de connexion Nessus :

 

Avant la connexion pour l’utilisation de Nessus avec un compte, l'utilisateur doit fournir l'adresse IP où nessusd fonctionne, le port de nessusd et la méthode de chiffrage employés dans la communication entre un client et le serveur. Dans le schéma, nessusd (le serveur) est à l'adresse xxx.xxx.xxx.xxx et utilise le port 1241 (qui est le port de défaut de Nessus) et utilise twofish/ripemd160:3 comme méthode de chiffrage.

 

 

 

 

· La configuration :

 

     

 

 

 

 

 

 

 


· Fenêtre utilisateur :

 

Après avoir contrôlé tous les onglets de la fenêtre de configuration (Nessus Setup), l'utilisateur peut maintenant scanner le réseau cible comme indiqué dans la fenêtre de sélection en cliquant sur le bouton « Start the scan » situé en bas.

 

À tout moment, l'utilisateur peut cesser de scanner une machine individuelle en cliquant sur « Stop » au côté droit ou même arrêter tous les scans complètement en cliquant sur « Stop the whole test ».

 

 

 

· Exemple de résultat de scan :

 

 

 

 


5. Le logiciel X

 

5.1. Installation

 

licence: GNU/GPL
plate-forme(s): Linux, *BSD, Mac OS X, Windows, Solaris

 

Il faut télécharger l’archive et la décompresser.

 

Voici la liste des librairies nécessaires avant de l’installer :

· LibX = 0.6.7-1mdk                  · libform.so.5                                      · libssl.so.0

· ld.so.1                                               · libgpm.so.1                                        · libresolv.so.2

· libcrypto.so.0                                    · libncurses.so.5                                  · libdl.so.2

· libc.so.6                                            · libpthread.so.0

                                                            

5.2. Utilisation

 

Utilisation de X sur un reseau SWITCHER :

 

X est un logiciel qui permet de faire de multiples applications dans un réseau local. En effet, vous pouvez sniffer les connections de la machine de votre choix vers celle que vous voulez. On peut aussi ne pas spécifier d’adresse IP et donc récupérer tout ce qui passe sur une machine.
 

Au démarrage, nous le voyons envoyer des requêtes ARP à l’ensemble du réseau local, afin de savoir quels sont les machines présentes sur celui-ci.

 
Une fois ceci fait, nous arrivons sur Main du programme avec tous les hôtes détectés :

 

 

 

 

A partir de là, plusieurs applications sont possibles :

 

Détection des OS de façon passive :

 

Pour cela, lorsque vous êtes sur le Main du programme, appuyez sur la touche « o ». Vous aurez alors une liste de toutes les adresses IP sources et destinations passant par le switch.

A partir de là, sélectionnez l’adresse que vous voulez pour obtenir l’OS associé à celle-ci.

 

Appuyez sur la touche « h » pour obtenir le panneau d'aide. Aucune option n'est vraiment intéressante sauf peut-être le fait d'appuyer sur la touche « d » qui permet d'obtenir les host de toutes les machines.

 

Les connections :

 

En cliquant sur une adresse IP on peut connaître la liste de ses connexions actives ou non. Il est aussi possible de sélectionner une connexion entre deux hôtes.

 

 

L’interface du sniffing :

 

L’interface du « sniffing » montre le port source et destination. On peut voir les données en ascii ou en hexadécimales, injecter des caractères en établissant une connexion telnet, …

 

 

 

ARP Poisoning :

 

X a donc cette fabuleuse fonction.

 

Qu'est ce que c'est ?

 

L' « arp poison » est une attaque par déni de service dont le but est de duper des postes sur le même réseau ethernet en falsifiant des adresses ARP (MAC) pour des adresses IP données.

 

L'attaque peut porter sur deux axes :

· Le premier est une attaque massive sur un réseau afin de remplir les tables ARP des postes sur le réseau. Ceci peut provoquer rapidement une saturation du réseau au niveau des requêtes ARP « arp who-has » (à quelle adresse correspond cette adresse ARP) et engendrer des disfonctionnements des communication sur le LAN.

· La seconde attaque vise une connexion entre deux postes en particulier sur lequel on va porter une attaque pour couper la connexion.

 

Méthode d'action :

 

La méthodologie de l'attaque de déni de service sur un poste est la suivante :

 

On fournit à l'outil d'attaque une adresse IP source (un des postes cible de l'attaque) et son adresse MAC. On fournit ensuite l'adresse IP de l'autre poste et une adresse MAC falsifiée (n'importe laquelle) ; le processus répondra ensuite (le plus rapidement possible) à une requête  d' « arp who-has ».

 

Le poste ciblé par l'attaque mettra à jour sa table ARP avec une fausse adresse MAC et ne pourra plus communiquer avec l'autre poste.

En partant donc du principe que l’on est sur le Main du programme, sélectionnez le poste que vous voulez sniffer (sélectionnez le sur la colonne de droite, en DEST), et appuyez sur la touche « a ».

 

Une liste des connections s’affiche. Il est alors possible d’effectuer plusieurs actions :

· La touche « d » permet d’obtenir des informations sur une connexion.

· La touche « k » permet de tuer une connexion.

· Pour Sniffer les paquets, il suffit de sélectionner une connexion et d'appuyer sur la touche « entrée ».

· Les Plugins : ils permettent par exemple d’isoler une machine du réseau, flooder le réseau....