samedi 1 novembre 2008

Arnaque possible à l´encontre des utilisateurs de MSN Messenger




Plusieurs URL ont fait leurs apparitions sur la toile. Tentatives d´usurpations de données appartenant aux membres de Messenger live possible.



Le 8 octobre dernier, un internaute enregistrait les adresses messengerlive.4yu .fr et messenger.4yu .fr. Des urls qui semblent clairement vouloir usurper la marque Messenger de Microsoft.

L'une de ces adresses tente de rediriger les internautes vers le Messenger officiel. Il n'est pas impossible que derriére cette redirection se cache un piége qui aurait pour mission d'intercepter les identifiants de connexion.

Deux autres adresses avaient déjà étaient installées via le même service d'enregistrement gratuit d'url Internet, offres-messenger.4yu .fr et e-messenger.4yu .fr. Deux arnaques évidentes. L'une des proposition indique permettre la diffusion de SMS via MSN.

Le site demande, afin de d'envoyer les SMS, de fournir son login, son mot de passe et son numéro de téléphone. (Axley)

Source: http://www.zataz.com/news/18011/messenger--arnaque--piege--sms.html

mercredi 5 mars 2008

HISTORIQUE DES VIRUS

Petite chronologie récapitulative du phénomène :
du jeu réservé à quelques initiés puis vulgarisé, on en arrive au programme parasite capable de se reproduire et de pervertir les programmes et les machines.
1949 : John Von Neumann présente les fondements théoriques des logiciels autocopiés.
1960 : Un groupe de jeunes ingénieurs des laboratoires Bell met au point un jeu informatique du nom de Core war
1986 : Brain : le premier virus diffusé - contamine les disquettes 5 pouces 1/4 uniquement
1988 : Morris Worm contamine Internet
1991 : Diffusé par une disquette vendue dans la revue Soft et Micro, le virus Frodo/4096 arrive en France. Le Clusif (Club de la sécurité des systèmes d'information français) propose sur son serveur une procédure de détection et de décontamination pour lutter contre Frodo. Le serveur enregistre 8 000 connexions.
1996 : Boza lance le premier virus Win32
1998 : D'après les chiffres publiés par Dr Salomon's, éditeur d'antivirus, on recensait 17 745 virus différents en 1998, contre 18 en 1989.
1999 : Melissa occupe la messagerie électronique
2000 : le virus "I Love You" contamine 350 000 ordinateurs à travers le monde en 10 minutes
2001 : Nimda exploite les faiblesses de Windows. Le cabinet américain Computer Economics évalue après coup l'impact du virus à 590 millions de dollars de pertes à travers le monde.
2003 : Blaster : l'exploitation des failles à J-30
2004 : Netsky et ses 26 variantes
2004 : Cabir traque les terminaux mobiles

Les différentes attaques

Les différents types d'attaques

L’informatique étant un domaine très vaste, le nombre de vulnérabilités présentes sur un système peut donc être important. Ainsi, les attaques visant ces failles peuvent être à la fois très variées et très dangereuses. C’est pourquoi nous allons dans un premier temps analyser ce que nous appellerons « l’anatomie d’une attaque », puis dans un second temps, nous caractériserons ces attaques et observerons leur déroulement.
Un nombre important de termes techniques vont être employés dans cette partie. Ceux-ci ne seront pas toujours détaillés, afin de ne pas surcharger la lecture ; mais une annexe comportant un rappel sur les notions fondamentales liées aux protocoles des réseaux (TCP, UDP et IP) est disponible à la fin de ce document.

1) Anatomie d’une attaque
Fréquemment appelés « les 5 P » dans la littérature, ces cinq verbes anglophones constituent le squelette de toute attaque informatique : Probe, Penetrate, Persist, Propagate, Paralyze.
Observons le détail de chacune de ces étapes :
· Probe : consiste en la collecte d’informations par le biais d’outils comme whois, Arin,DNS lookup. La collecte d’informations sur le système cible peut s’effectuer de plusieursmanières, comme par exemple un scan de ports grâce au programme Nmap pourdéterminer la version des logiciels utilisés, ou encore un scan de vulnérabilités à l’aidedu programme Nessus.
Pour les serveurs web, il existe un outil nommé Nikto qui permet de rechercher les failles connues ou les problèmes de sécurité.
Des outils comme firewalk, hping ou SNMP Walk permettent quant à eux de découvrir la nature d’un réseau.
· Penetrate : utilisation des informations récoltées pour pénétrer un réseau. Destechniques comme le brute force ou les attaques par dictionnaires peuvent être utiliséespour outrepasser les protections par mot de passe. Une autre alternative pour s’infiltrerdans un système est d’utiliser des failles applicatives que nous verrons ci-après.
· Persist : création d’un compte avec des droits de super utilisateur pour pouvoir seréinfiltrer ultérieurement. Une autre technique consiste à installer une application decontrôle à distance capable de résister à un reboot (ex : un cheval de Troie).
· Propagate : cette étape consiste à observer ce qui est accessible et disponible sur leréseau local.
· Paralyze : cette étape peut consister en plusieurs actions. Le pirate peut utiliser leserveur pour mener une attaque sur une autre machine, détruire des données ouencore endommager le système d’exploitation dans le but de planter le serveur.
Après ces cinq étapes, le pirate peut éventuellement tenter d’effacer ses traces, bien que cela ne soit rarement utile. En effet, les administrateurs réseaux sont souvent surchargés de logs à analyser. De plus, il est très difficile de supprimer entièrement des traces.

2) Les attaques réseaux
Ce type d’attaque se base principalement sur des failles liées aux protocoles ou à leur implémentation. Les RFC1 ne sont parfois pas assez spécifiques, et un choix particulier d’implémentation dans les différents services ou clients peut entraîner un problème de sécurité.
Observons quelques attaques bien connues.
Les techniques de scan :
Les scans de ports ne sont pas des attaques à proprement parler. Le but des scans est de déterminer quels sont les ports ouverts, et donc en déduire les services qui sont exécutés sur la machine cible (ex : port 80/TCP pour un service HTTP). Par conséquent, la plupart des attaques sont précédées par un scan de ports lors de la phase Probe qui est comme nous l’avons vu, la première phase des 5P’s dans le déroulement d’une attaque.
Il existe un nombre important de techniques de scan. Idéalement, la meilleure technique de scan est celle qui est la plus furtive afin de ne pas alerter les soupçons de la future victime. Voici une description des techniques de scan les plus répandues :

· Le scan simple : aussi appelé le scan connect(), il consiste à établir une connexionTCP complète sur une suite de ports. S’il arrive à se connecter, le port est ouvert ;sinon, il est fermé. Cette méthode de scan est très facilement détectable.

· Le scan furtif : aussi appelé scan SYN, il s’agit d’une amélioration du scan simple. Cescan essaie également de se connecter sur des ports donnés, mais il n’établit pascomplètement la connexion : pas de commande ACK (acquittement) après avoirreçu l’accord de se connecter. Grâce à ceci, la méthode est bien plus furtive que lescan normal.

· Les scans XMAS, NULL et FIN : se basent sur des détails de la RFC du protocole TCPpour déterminer si un port est fermé ou non en fonction de la réaction à certainesrequêtes. Ces scans sont moins fiables que le scan SYN mais ils sont un peu plusfurtifs. La différence entre ces trois types de scan se situe au niveau des flags TCPutilisés lors de la requête.

· Le scan à l’aveugle : s’effectue via une machine intermédiaire et avec du spoofing(voir plus bas). Le système attaqué pense que le scan est réalisé par la machineintermédiaire et non par le pirate.
· Le scans passif : est la méthode la plus furtive. Consiste à analyser les champsd’en-tête des paquets (TTL, ToS, MSS, …) et les comparer avec une base designatures qui pourra déterminer les applications qui ont envoyé ces paquets.
Remarque : l’utilitaire incontournable pour réaliser des scans de ports se nomme Nmap.
.
IP Spoofing But : usurper l’adresse IP d’une autre machine.
Les request for comment (RFC, littéralement demande de commentaires) sont une série de documents et normes concernant l'Internet, commencée en 1969. Peu de RFC sont des standards, mais tous les standards de l'Internet sont enregistrés en tant que RFC.

Finalité : se faire passer pour une autre machine en truquant les paquets IP. Cette technique peut être utile dans le cas d’authentifications basées sur une adresse IP (services tels que rlogin ou ssh par exemple).

Déroulement : il existe des utilitaires qui permettent de modifier les paquets IP ou de créer ses propres paquets (ex : hping2). Grâce à ces utilitaires, il est possible de spécifier une adresse IP différente de celle que l’on possède, et ainsi se faire passer pour une autre « machine ».
Cependant, ceci pose un problème : en spécifiant une adresse IP différente de notre machine, nous ne recevrons pas les réponses de la machine distante, puisque celle-ci répondra à l’adresse spoofée.
Il existe toutefois deux méthodes permettant de récupérer les réponses :
· Source routing :
technique consistant à placer le chemin de routage directement dansle paquet IP. Cette technique ne fonctionne plus de nos jours, les routeurs rejetantcette option.
· Reroutage : cette technique consiste à envoyer des paquets RIP aux routeurs afin demodifier les tables de routage. Les paquets avec l’adresse spoofée seront ainsi envoyésaux routeurs contrôlés par le pirate et les réponses pourront être également reçues parcelui-ci.
. ARP Spoofing (ou ARP Redirect) But : rediriger le trafic d’une machine vers une autre.
Finalité : grâce à cette redirection, une personne mal intentionnée peut se faire passer pour une autre. De plus, le pirate peut rerouter les paquets qu’il reçoit vers le véritable destinataire, ainsi l’utilisateur usurpé ne se rendra compte de rien. La finalité est la même que l’IP spoofing mais on travaille ici au niveau de la couche liaison de données.
Déroulement : pour effectuer cette usurpation, il faut corrompre le cache ARP de la victime. Ce qui signifie qu’il faut lui envoyer des trames ARP en lui indiquant que l’adresse IP d’une autre machine est la sienne. Les caches ARP étant régulièrement vidés, il faudra veiller à maintenir l’usurpation.

. DNS Spoofing
But : fournir de fausses réponses aux requêtes DNS, c'est-à-dire indiquer une fausse adresse IP pour un nom de domaine.
Finalité : rediriger, à leur insu, des Internautes vers des sites pirates. Grâce à cette fausse redirection, l’utilisateur peut envoyer ses identifiants en toute confiance par exemple.

Déroulement : il existe deux techniques pour effectuer cette attaque.
· DNS Cache Poisoning : les serveurs DNS possèdent un cache permettant de garderpendant un certain temps la correspondance entre un nom de machine et son adresseIP. Le DNS Cache Poisoning consiste à corrompre ce cache avec de faussesinformations. Ces fausses informations sont envoyées lors d’une réponse d’un serveurDNS contrôlé par le pirate à un autre serveur DNS, lors de la demande de l’adresse IPd’un domaine . Le cache du serveur ayant demandé lesinformations est alors corrompu.
· DNS ID Spoofing : pour communiquer avec une machine, il faut son adresse IP. Onpeut toutefois avoir son nom, et grâce au protocole DNS, nous pouvons obtenir sonadresse IP. Lors d’une requête pour obtenir l’adresse IP à partir d’un nom, un numérod’identification est placé dans la trame afin que le client et le serveur puissent identifierla requête. L’attaque consiste ici à récupérer ce numéro d’identification (en sniffant lऐ réseau) lors de la communication entre un client et un serveur DNS, puis, envoyer des réponses falsifiées au client avant que ले serveur DNS lui réponde.
Remarque : Une attaque que nous allons voir ci-après, le Déni de Service, peut aider à ralentir le trafic du serveur DNS et ainsi permettre de répondre avant lui.

. Fragments attacks
But : le but de cette attaque est de passer outre les protections des équipements de filtrage IP.
Finalité : en passant outre les protections, un pirate peut par exemple s’infiltrer dans un réseau pour effectuer des attaques ou récupérer des informations confidentielles.
Déroulement : deux types d’attaque sur les fragments IP peuvent être distingués.
Fragments overlapping : quand un message est émis sur un réseau, il est fragmenté en plusieurs paquets IP. Afin de pouvoir reconstruire le message, chaque paquet possède un offset. Le but de l’attaque est de réaliser une demande de connexion et de faire chevaucher des paquets en spécifiant des offsets incorrects. La plupart des filtres analysant les paquets indépendamment, ils ne détectent pas l’attaque. Cependant, lors de la défragmentation, la demande de connexion est bien valide et l’attaque a lieu.
Tiny fragments : le but de l’attaque est de fragmenter une demande de connexion sur deux paquets IP : le premier paquet de taille minimum (68 octets selon la RFC du protocole IP) ne contient que l’adresse et le port de destination. Le deuxième paquet contient la demande effective de connexion TCP. Le premier paquet est accepté par les filtres puisqu’il ne contient rien de suspect. Quand le deuxième paquet arrive, certains filtres ne le vérifient pas pensant que si le premier paquet est inoffensif, le deuxième l’est aussi. Mais lors de la défragmentation sur le système d’exploitation, la connexion s’établit !
De nos jours, une grande majorité des firewalls2 sont capables de détecter et stopper ce type d’attaques.

. TCP Session Hijacking
But : le but de cette attaque est de rediriger un flux TCP afin de pouvoir outrepasser une protection par mot de passe.

Finalité : le contrôle d'authentification s'effectuant uniquement à l'ouverture de la session, un pirate réussissant cette attaque parvient à prendre possession de la connexion pendant toute la durée de la session.
Déroulement : dans un premier temps, le pirate doit écouter le réseau, puis lorsqu’il estime que l’authentification a pu se produire (délai de n secondes par exemple), il désynchronise la session entre l’utilisateur et le serveur. Pour ce faire, il construit un paquet avec, comme adresse IP source, celle de la machine de l’utilisateur et le numéro d'acquittement TCP attendu par le serveur. En plus de désynchroniser la connexion TCP, ce paquet permet au pirate d'injecter une commande via la session préalablement établie.
Un firewall, ou pare-feu est un dispositif logiciel ou matériel qui
filtre le flux de données sur un réseau informatique. Il est parfois appelé
coupe-feu.

3) Les attaques applicatives
Les attaques applicatives se basent sur des failles dans les programmes utilisés, ou encore des erreurs de configuration. Toutefois, comme précédemment, il est possible de classifier ces attaques selon leur provenance.

i. Les problèmes de configuration
Il est très rare que les administrateurs réseaux configurent correctement un programme. En général, ils se contentent d’utiliser les configurations par défaut. Celles-ci sont souvent non sécurisées afin de faciliter l’exploitation du logiciel (ex : login/mdp par défaut d’un serveur de base de données).
De plus, des erreurs peuvent apparaître lors de la configuration d’un logiciel. Une mauvaise configuration d’un serveur peut entraîner l’accès à des fichiers importants, ou mettant en jeu l’intégrité du système d’exploitation. C’est pourquoi il est important de bien lire les documentations fournies par les développeurs afin de ne pas créer de failles.

ii. Les bugs
Liés à un problème dans le code source, ils peuvent amener à l’exploitation de failles. Il n’est pas rare de voir l’exploitation d’une machine suite à une simple erreur de programmation. On ne peut toutefois rien faire contre ce type de problèmes, si ce n’est attendre un correctif de la part du développeur.

iii. Les buffer overflows
Les buffer overflows, ou dépassement de la pile, sont une catégorie de bug particulière. Issus d’une erreur de programmation, ils permettent l’exploitation d’un shellcode3 à distance. Ce shellcode permettra à une personne mal intentionnée d’exécuter des commandes sur le système distant, pouvant aller jusqu’à sa destruction.
L’erreur de programmation est souvent la même : la taille d’une entrée n’est pas vérifiée et l’entée est directement copiée dans un buffer dont la taille est inférieure à la taille de l’entrée. On se retrouve donc en situation de débordement, et l’exploitant peut ainsi accéder à la mémoire.

iv. Les scripts
Principalement web (ex : Perl, PHP, ASP), ils s’exécutent sur un serveur et renvoie un résultat au client. Cependant, lorsqu’ils sont dynamiques (i.e. qu’ils utilisent des entrées saisies par un utilisateur), des failles peuvent apparaître si les entrées ne sont pas correctement contrôlées.
L’exemple classique est l’exploitation de fichier à distance, tel que l’affichage du fichier mot de passe du système en remontant l’arborescence depuis le répertoire web.
3 Un shellcode est une chaîne de caractères qui représente un code binaire exécutable capable de lancer un shell ('/bin/sh' sous Unix ou command.com sous DOS et Microsoft Windows par exemple). Un shellcode peut être utilisé par un cracker voulant avoir accès à la ligne de commande.

v. Les injections SQL
Tout comme les attaques de scripts, les injections SQL profitent de paramètres d’entrée non vérifiés. Comme leur nom l’indique, le but des injections SQL est d’injecter du code SQL dans une requête de base de données. Ainsi, il est possible de récupérer des informations se trouvant dans la base (exemple : des mots de passe) ou encore de détruire des données.

vi. Man in the middle
Moins connue, mais tout aussi efficace, cette attaque permet de détourner le trafic entre deux stations. Imaginons un client C communiquant avec un serveur S. Un pirate peut détourner le trafic du client en faisant passer les requêtes de C vers S par sa machine P, puis transmettre les requêtes de P vers S. Et inversement pour les réponses de S vers C.
Totalement transparente pour le client, la machine P joue le rôle de proxy. Il accédera ainsi à toutes les communications et pourra en obtenir les informations sans que l’utilisateur s’en rende compte.

4) Le Déni de service
Evoqué précédemment, le déni de service est une attaque visant à rendre indisponible un service. Ceci peut s’effectuer de plusieurs manières : par le biais d’une surcharge réseau, rendant ainsi la machine totalement injoignable ; ou bien de manière applicative en crashant l’application à distance.
L’utilisation d’un buffer overflow peut permettre de planter l’application à distance. Grâce à quelques instructions malicieuses et suite à une erreur de programmation, une personne mal intentionnée peut rendre indisponible un service (serveur web, serveur de messagerie, … etc) voir un système complet.
Voici quelques attaques réseaux connues permettant de rendre indisponible un service :

· SYN Flooding : exploite la connexion en 3 phases de TCP (Three Way Handshake : SYN / SYN-ACK / ACK). Le principe est de laisser un grand nombre de connexions TCP en attente. Le pirate envoie de nombreuses demandes de connexion (SYN), reçoit les SYN-ACK mais ne répond jamais avec ACK. Les connexions en cours occupent des ressources mémoire, ce qui va entraîner une saturation et l’effondrement du système.

· UDP Flooding : le trafic UDP est prioritaire sur TCP. Le but est donc d’envoyer un grand nombre de paquets UDP, ce qui va occuper toute la bande passante et ainsi rendre indisponible toutes les connexions TCP.
Exemple : faire une requête chargen (port 19 / service de génération de caractères) à une machine en spoofant l'adresse et le port source, pour rediriger vers echo (port 7 / service qui répète la chaîne de caractères reçue) d'une autre machine.

· Packet Fragment : utilise une mauvaise gestion de la défragmentation au niveau ICMP.
Exemple : ping of death. La quantité de données est supérieure à la taille maximum d'un paquet IP.
Remarque : pour rappel, nous avons vu que les techniques d’attaque se basant sur la fragmentation des paquets peuvent aussi être utilisées pour outrepasser un filtre IP.

· Smurfling : le pirate fait des requêtes ICMP ECHO à des adresses de broadcast enspoofant l'adresse source (en indiquant l’adresse de la machine cible). Cette machinecible va recevoir un nombre énorme de réponses, car toutes les machines vont luirépondre, et ainsi utiliser toute sa bande passante.

· Déni de service distribué : le but est ici de reproduire une attaque normale à grandeéchelle. Pour ce faire, le pirate va tenter de se rendre maître d’un nombre important demachines. Grâce à des failles (buffer overflows, failles RPC4, … etc) il va pouvoirprendre le contrôle de machines à distance et ainsi pouvoir les commander à sa guise.

Une fois ceci effectué, il ne reste plus qu’à donner l’ordre d’attaquer à toutes les machines en même temps, de manière à ce que l’attaque soit reproduite à des milliers d’exemplaires. Ainsi, une simple attaque comme un SYN Flooding pourra rendre une machine ou un réseau totalement inaccessible.

DETECTION DES ATTAQUES


Détection d'attaques : les IDS

Afin de détecter les attaques que peut subir un système, il est nécessaire d’avoir un logiciel spécialisé dont le rôle serait de surveiller les données qui transitent sur ce système, et qui serait capable de réagir si des données semblent suspectes. Plus communément appelé IDS (Intrusion Detection Systems), les systèmes de détection d’intrusions conviennent parfaitement pour réaliser cette tâche.
A l’origine, les premiers systèmes de détection d’intrusions ont été initiés par l’armée américaine, puis par des entreprises. Plus tard, des projets open-source ont été lancés et certains furent couronnés de succès, comme par exemple Snort et Prelude que nous détaillerons par après. Parmi les solutions commerciales, on retrouve les produits des entreprises spécialisées en sécurité informatique telles que Internet Security Systems, Symantec, Cisco Systems, …

1) Les différents types d'IDS
Comme nous l’avons vu, les attaques utilisées par les pirates sont très variées. Certaines utilisent des failles réseaux et d’autres des failles de programmation. Nous pouvons donc facilement comprendre que la détection d’intrusions doit se faire à plusieurs niveaux.
4 RPC (Remote Procedure Call) est un protocole permettant de faire des appels de procédures sur un ordinateur distant à l'aide d'un serveur d'application. Ce protocole est utilisé dans le modèle client-serveur et permet de gérer les différents messages entre ces entités.

Ainsi, il existe différents types d’IDS dont nous détaillons ci-dessous les caractéristiques principales.

i. Les systèmes de détection d’intrusions (IDS)
Définition : ensemble de composants logiciels et matériels dont la fonction principale est de détecter et analyser toute tentative d’effraction (volontaire ou non).
Fonctions : détection des techniques de sondage (balayages de ports, fingerprinting), des tentatives de compromission de systèmes, d’activités suspectes internes, des activités virales ou encore audit des fichiers de journaux (logs).
Remarque : utopiquement, il s’agit d’un système capable de détecter tout type d’attaque.
Certains termes sont souvent employés quand on parle d’IDS :
· Faux positif : une alerte provenant d’un IDS mais qui ne correspond pas à une attaqueréelle.
· Faux négatif : une intrusion réelle qui n’a pas été détectée par l’IDS

ii. Les systèmes de détection d’intrusions « réseaux » (NIDS)
Objectif : analyser de manière passive les flux en transit sur le réseau et détecter les intrusions en temps réel.
Un NIDS écoute donc tout le trafic réseau, puis l’analyse et génère des alertes si des paquets semblent dangereux.
Les NIDS étant les IDS plus intéressants et les plus utiles du fait de l’omniprésence des réseaux dans notre vie quotidienne, ce document se concentrera essentiellement sur ce type d’IDS.
iii. Les systèmes de détection d’intrusions de type hôte (HIDS)
Un HIDS se base sur une unique machine, n’analysant cette fois plus le trafic réseau mais l’activité se passant sur cette machine. Il analyse en temps réel les flux relatifs à une machine ainsi que les journaux.
Un HIDS a besoin d’un système sain pour vérifier l’intégrité des donnés. Si le système a été compromis par un pirate, le HIDS ne sera plus efficace. Pour parer à ces attaques, il existe des KIDS (Kernel Intrusion Detection System) et KIPS (Kernel Intrusion Prevention System) qui sont fortement liés au noyau. Ces types d’IDS sont décrits un peu plus loin.
iv. Les systèmes de détection d’intrusions « hybrides »
Généralement utilisés dans un environnement décentralisé, ils permettent de réunir les informations de diverses sondes placées sur le réseau. Leur appellation « hybride » provient du fait qu’ils sont capables de réunir aussi bien des informations provenant d’un système HIDS qu’un NIDS.

L’exemple le plus connu dans le monde Open-Source est Prelude. Ce framework permet de stocker dans une base de données des alertes provenant de différents systèmes relativement variés. Utilisant Snort comme NIDS, et d’autres logiciels tels que Samhain en tant que HIDS, il permet de combiner des outils puissants tous ensemble pour permettre une visualisation centralisée des attaques.
Remarque : nous parlerons de tous ces produits plus tard dans ce document, en évoquant les spécificités et l’installation de chacun.
v. Les systèmes de prévention d’intrusions (IPS)
Définition : ensemble de composants logiciels et matériels dont la fonction principale est d’empêcher toute activité suspecte détectée au sein d’un système.
Contrairement aux IDS simples, les IPS sont des outils aux fonctions « actives », qui en plus de détecter une intrusion, tentent de la bloquer. Cependant, les IPS ne sont pas la solution parfaite comme on pourrait le penser.
Plusieurs stratégies de prévention d’intrusions existent :
• host-based memory and process protection ■* surveille l'exécution des processus et les tue s'ils ont l'air dangereux (buffer overflow). Cette technologie est utilisée dans les KIPS (Kernel Intrusion Prevention System) que nous décrivons un peu plus loin.
• session interception / session sniping ■* termine une session TCP avec la commande TCP Reset : « RST ». Ceci est utilisé dans les NIPS (Network Intrusion Prevention System).
• gateway intrusion detection ■* si un système NIPS est placé en tant que routeur, il bloque le trafic ; sinon il envoie des messages à d'autres routeurs pour modifier leur liste d'accès.
Un IPS possède de nombreux inconvénients. Le premier est qu’il bloque toute activité qui lui semble suspecte. Or, il est impossible d’assurer une fiabilité à 100% dans l’identification des attaques. Un IPS peut donc malencontreusement bloquer du trafic inoffensif ! Par exemple, un IPS peut détecter une tentative de déni de service alors qu’il s’agit simplement d’une période chargée en trafic. Les faux positifs sont donc très dangereux pour les IPS.

Le deuxième inconvénient est qu’un pirate peut utiliser sa fonctionnalité de blocage pour mettre hors service un système. Prenons l’exemple d’un individu mal intentionné qui attaque un système protégé par un IPS, tout en spoofant son adresse IP. Si l’adresse IP spoofée est celle d’un noeud important du réseau (routeur, service Web, ...), les conséquences seront catastrophiques. Pour palier ce problème, de nombreux IPS disposent des « white lists », c’est-à-dire des listes d’adresses réseaux qu’il ne faut en aucun cas bloquer.
Et enfin, le troisième inconvénient et non le moindre : un IPS est peu discret. En effet, à chaque blocage d’attaque, il montre sa présence. Cela peut paraître anodin, mais si un pirate remarque la présence d’un IPS, il tentera de trouver une faille dans celui-ci afin de réintégrer son attaque... mais cette fois en passant inaperçu.
Voilà pourquoi les IDS passifs sont souvent préférés aux IPS. Cependant, il est intéressant de noter que plusieurs IDS (Ex : Snort, RealSecure, Dragon, ...) ont été dotés d’une fonctionnalité de réaction automatique à certains types d’attaques.

vi. Les systèmes de prévention d’intrusions « kernel » (KIDS/KIPS)
Nous l’évoquions précédemment dans le cadre du HIDS, l’utilisation d’un détecteur d’intrusions au niveau noyau peut s’avérer parfois nécessaire pour sécuriser une station.
Prenons l’exemple d’un serveur web, sur lequel il serait dangereux qu’un accès en lecture/écriture dans d’autres répertoires que celui consultable via http, soit autorisé. En effet, cela pourrait nuire à l’intégrité du système. Grâce à un KIPS, tout accès suspect peut être bloqué directement par le noyau, empêchant ainsi toute modification dangereuse pour le système.
Le KIPS peut reconnaître des motifs caractéristiques du débordement de mémoire, et peut ainsi interdire l’exécution du code. Le KIPS peut également interdire l’OS d’exécuter un appel système qui ouvrirait un shell de commandes.
Puisqu’un KIPS analyse les appels systèmes, il ralentit l’exécution. C’est pourquoi ce sont des solutions rarement utilisées sur des serveurs souvent sollicités.
Exemple de KIPS : SecureIIS, qui est une surcouche du serveur IIS de Microsoft.

vii. Les firewalls
Les firewalls ne sont pas des IDS à proprement parler mais ils permettent également de stopper des attaques. Nous ne pouvions donc pas les ignorer.
Les firewalls sont basés sur des règles statiques afin de contrôler l’accès des flux. Ils travaillent en général au niveau des couches basses du modèle OSI (jusqu’au niveau 4), ce qui est insuffisant pour stopper une intrusion. Par exemple, lors de l’exploitation d’une faille d’un serveur Web, le flux HTTP sera autorisé par le firewall puisqu’il n’est pas capable de vérifier ce que contiennent les paquets.

Il existe trois types de firewalls :
· Les systèmes à filtrage de paquets sans état : analyse les paquets les uns après lesautres, de manière totalement indépendante.
· Les systèmes à maintien d’état (stateful) : vérifient que les paquets appartiennent àune session régulière. Ce type de firewall possède une table d’états où est stocké unsuivi de chaque connexion établie, ce qui permet au firewall de prendre des décisionsadaptées à la situation.
Ces firewalls peuvent cependant être outrepassés en faisant croire que les paquets appartiennent à une session déjà établie.
· Les firewalls de type proxy : Le firewall s’intercale dans la session et analyse l’information afin de vérifier que les échanges protocolaires sont conformes aux normes.
viii. Les technologies complémentaires
Les scanners de vulnérabilités : systèmes dont la fonction est d’énumérer les vulnérabilités présentes sur un système. Ces programmes utilisent une base de vulnérabilités connues (exemple : Nessus).

Les systèmes de leurre : le but est de ralentir la progression d’un attaquant, en générant des fausses réponses telle que renvoyer une fausse bannière du serveur Web utilisé.
Les systèmes de leurre et d’étude (Honeypots) : le pirate est également leurré, mais en plus, toutes ses actions sont enregistrées. Elles seront ensuite étudiées afin de connaître les mécanismes d’intrusion utilisés par le hacker. Il sera ainsi plus facile d’offrir des protections par la suite.
Les systèmes de corrélation et de gestion des intrusions (SIM – Security Information Manager) : centralisent et corrèlent les informations de sécurité provenant de plusieurs sources (IDS, firewalls, routeurs, applications, …). Les alertes sont ainsi plus faciles à analyser.
Les systèmes distribués à tolérance d’intrusion : l’information sensible est répartie à plusieurs endroits géographiques mais des copies de fragments sont archivées sur différents sites pour assurer la disponibilité de l’information. Cependant, si un pirate arrive à s’introduire sur le système, il n’aura qu’une petite partie de l’information et celle-ci lui sera inutile.

2) Les méthodes de détection
Pour bien gérer un système de détection d’intrusions, il est important de comprendre comment celui-ci fonctionne. Une question simple se pose alors : comment une intrusion est­elle détectée par un tel système ? Quel critère différencie un flux contenant une attaque d’un flux normal ?
Ces questions nous ont amenés à étudier le fonctionnement interne d’un IDS. De là, nous en avons déduit deux techniques mises en place dans la détection d’attaques. La première consiste à détecter des signatures d’attaques connues dans les paquets circulant sur le réseau. La seconde, consiste quant à elle, à détecter une activité suspecte dans le comportement de l’utilisateur.
Ces deux techniques, aussi différentes soient-elles, peuvent être combinées au sein d’un même système afin d’accroître la sécurité.

i. L’approche par scénario (misuse detection)
Cette technique s’appuie sur la connaissance des techniques utilisées par les attaquants pour déduire des scénarios typiques. Elle ne tient pas compte des actions passées de l’utilisateur et utilise des signatures d’attaques (= ensemble de caractéristiques permettant d’identifier une activité intrusive :
une chaîne alphanumérique, une taille de paquet inhabituelle, une trame formatée de manière suspecte, …).
Recherche de motifs (pattern matching)
La méthode la plus connue et la plus à facile à comprendre. Elle se base sur la recherche de motifs (chaînes de caractères ou suite d’octets) au sein du flux de données. L’IDS comporte une base de signatures où chaque signature contient les protocole et port utilisés par l’attaque ainsi que le motif qui permettra de reconnaître les paquets suspects.
Le principal inconvénient de cette méthode est que seules les attaques reconnues par les signatures seront détectées. Il est donc nécessaire de mettre à jour régulièrement le base de signatures.
Un autre inconvénient est que les motifs sont en général fixes. Or une attaque n’est pas toujours identique à 100%. Le moindre octet différent par rapport à la signature provoquera la non détection de l’attaque.
Pour les IDS utilisant cette méthode, il est nécessaire d’adapter la base de signatures en fonction du système à protéger. Cela permet non seulement de diminuer les ressources nécessaires et donc augmenter les performances ; mais également réduire considérablement le nombre de fausses alertes et donc faciliter le travail des administrateurs réseaux qui analyseront les fichiers d’alertes.
Cette technique est également utilisée dans les anti-virus.
Recherche de motifs dynamiques
Le principe de cette méthode est le même que précédemment mais les signatures des attaques évoluent dynamiquement. L’IDS est de ce fait doté de fonctionnalités d’adaptation et d’apprentissage.

Analyse de protocoles :
Cette méthode se base sur une vérification de la conformité (par rapport aux RFC) des flux, ainsi que sur l’observation des champs et paramètres suspects dans les paquets. Cependant, les éditeurs de logiciels et les constructeurs respectent rarement à la lettre les RFC et cette méthode n’est pas toujours très performante.
L’analyse protocolaire est souvent implémentée par un ensemble de préprocesseurs, où chaque préprocesseur est chargé d’analyser un protocole particulier (FTP, HTTP, ICMP, ...). Du fait de la présence de tous ces préprocesseurs, les performances dans un tel système s’en voient fortement dégradées.
L’intérêt fort de l’analyse protocolaire est qu’elle permet de détecter des attaques inconnues, contrairement au pattern matching qui doit connaître l’attaque pour pouvoir la détecter.

Analyse heuristique et détection d’anomalies
:
Le but de cette méthode est, par une analyse intelligente, de détecter une activité suspecte ou toute autre anomalie.
Par exemple : une analyse heuristique permet de générer une alarme quand le nombre de sessions à destination d’un port donné dépasse un seuil dans un intervalle de temps prédéfini.
ii. L’approche comportementale (Anomaly Detection)
Cette technique consiste à détecter une intrusion en fonction du comportement passé de l’utilisateur. Pour cela, il faut préalablement dresser un profil utilisateur à partir de ses habitudes et déclencher une alerte lorsque des événements hors profil se produisent
.
Cette technique peut être appliquée non seulement à des utilisateurs mais aussi à des applications et services. Plusieurs métriques sont possibles : la charge CPU, le volume de données échangées, le temps de connexion sur des ressources, la répartition statistique des protocoles et applications utilisés, les heures de connexion, …
Cependant elle possède quelques inconvénients :
· peu fiable :
tout changement dans les habitudes de l’utilisateur provoque une alerte.
· nécessite une période de non fonctionnement pour mettre en œuvre les mécanismesd’auto-apprentissage : si un pirate attaque pendant ce moment, ses actions serontassimilées à un profil utilisateur, et donc passeront inaperçues lorsque le système dedétection sera complètement mis en place.
· l’établissement du profil doit être souple afin qu’il n’y ait pas trop de fausses alertes : lepirate peut discrètement intervenir pour modifier le profil de l’utilisateur afin d’obtenir après plusieurs jours ou semaines, un profil qui lui permettra de mettre en place son attaque sans qu’elle ne soit détectée.
Plusieurs approches peuvent être utilisées pour la méthode de détection comportementale :
Approche probabiliste
Des probabilités sont établies permettant de représenter une utilisation courante d’une application ou d’un protocole. Toute activité ne respectant pas le modèle probabiliste provoquera la génération d’une alerte.
Exemple : Avec le protocole HTTP, il y a une probabilité de 0.9 qu’une commande GET soit faite après une connexion sur le port 80. Il y a ensuite une probabilité de 0.8 que la réponse à cette commande GET soit « HTTP/1.1 200 OK ».
Approche statistique
Le but est de quantifier les paramètres liés à l’utilisateur : taux d’occupation de la mémoire, utilisation des processeurs, valeur de la charge réseau, nombre d’accès à l’Intranet par jour, vitesse de frappe au clavier, sites les plus visités, …
Cette méthode est très difficile à mettre en place. Elle n’est actuellement présente que dans le domaine de la recherche, où les chercheurs utilisent des réseaux neuronaux et le data mining pour tenter d’avoir des résultats convaincants.

Autres méthodes
D’autres méthodes existent mais ne sont pas encore répandues. Parmi celles-ci, nous pouvons noter :
· L’utilisation de l’immunologie, c’est-à-dire construire un modèle de comportementnormal des services.
· La présentation d’une activité habituelle sous forme de graphe.
iii. Les méthodes répandues
En général, les IDS mélangent les différentes techniques de détection par scénario en proposant du pattern matching, de l’analyse protocolaire et de la détection d’anomalies.
De nombreuses techniques et algorithmes sont utilisés dans la détection d’intrusions :
Pattern Matching ->algorithmes de recherche de motifs (ex : Boyer-Moore) ,
-> algorithmes de comptage ->algorithmes génétiques
Analyse Protocolaire ->conformité aux RFC
Détection d’anomalies-> méthodes heuristiques
Analyse statistique -> modèles statistiques
Analyse probabiliste -> réseaux bayésiens
Autre analyse comportementale -> réseaux de neurones, systèmes experts + data mining, immunologie, graphes, ...

Il est bien sûr impossible de détailler chacun des algorithmes mis en oeuvre dans les IDS. Nous avons cependant dédié le chapitre 6 aux algorithmes de pattern matching.

3) Principes généraux et installation technique
Jusqu'à présent, nous avons vu les types d’IDS existants et les méthodes de détection qu’ils utilisent. Nous allons maintenant détailler une étape importante dans la mise en place d’un IDS : l’installation technique.
Lors de la mise en place d’un système de détection d’intrusions au sein d’un réseau, il est important de le déployer correctement d’une part, mais aussi de comprendre son fonctionnement interne pour pouvoir le configurer efficacement. Toute erreur lors de l’installation d’un IDS pourra le rendre inefficace ou inutilisable.
i. Déploiement d’un NIDS
Il faut tout d’abord prendre conscience qu’un NIDS n'est pas suffisant pour assurer la sécurité. En plus d’installer un NIDS, il ne faudra pas oublier les actions habituelles :
· les systèmes et les applications doivent être mises à jour régulièrement (patches desécurité)
· les systèmes utilisant Internet doivent être dans un réseau isolé (DMZ)
· chaque utilisateur doit être averti de l’importance de la sécurité de ses mots de passe
· les fonctionnalités des services qui ne sont pas utilisées doivent être désactivées.

Lors du déploiement d’un IDS, il faut le configurer correctement : par exemple, si le réseau est sous Windows, les règles destinées à Unix ne sont pas nécessaires. Il faut donc faire une configuration en fonction de l'OS, des applications et du matériel utilisés.
L'emplacement du senseur6 est très important :
. Une zone démilitarisée (DMZ) est un sous-réseau isolé par un pare-feu. Ce sous-réseau contient des machines sesituant entre un réseau interne (LAN) et un réseau externe (typiquement, Internet).
6. Un senseur est une sonde, placée sur le réseau, dont le rôle est d’attraper le trafic circulant sur celui-ci.

A l'emplacement B, seul le trafic entre les systèmes de la DMZ et Internet est analysé. Le trafic entre le réseau interne et Internet n'est pas analysé. Pour cela, il faudra également placer un senseur au point A.
• A l'emplacement C, le trafic entre Internet et le réseau interne ou la DMZ est analysé. Par contre, le trafic entre le réseau interne et la DMZ est invisible.
Il est impensable de vouloir analyser tout le trafic d’un réseau. Il faut donc donner la priorité aux systèmes à risque : ceux qui offrent des services accessibles par Internet (HTTP, FTP, ...).
De plus, il est souvent préférable de placer le senseur après le firewall du côté interne. Ainsi, seul les flux acceptés par le firewall sont analysés, ce qui réduit fortement la charge de la sonde IDS.
Lors de l’installation d’un NIDS, le choix matériel a également une grande importance. Puisqu’une sonde NIDS doit être capable d’analyser le trafic réseau quelque soit le destinataire, elle devra recevoir elle-même tous les paquets. Pour cela, le NIDS devra jouer le rôle d’un sniffer, mais le matériel réseau pose parfois problème :
• un switch simple (commutateur) : en utilisant un tel équipement, la conversation avec l’IDS est impossible du fait de la nature d’un switch : il commute les paquets directement au destinataire. Il est dès lors impossible d’installer une sonde qui analysera le trafic global.
• un hub (concentrateur) -» la conversation avec l’IDS est possible car les hubs répètent les paquets en les émettant à toutes les machines connectées. Cependant, les hubs sont peu fiables et sont donc à éviter.
• il existe des switches professionnels qui copie le trafic et l'envoie sur un port spécifié (où sera placé le NIDS) : SPAN port (Switch Port Analyzer). Attention : pour ce port, il faudra utiliser une connexion rapide (ex : Gigabits) capable d'analyser entièrement le trafic provenant ou à destination des différents sous réseaux.
Un autre problème doit être pris en considération : lorsque les flux sont cryptés (ex : par SSL, c’est le cas pour les VPN8), il est impossible pour l’IDS de décrypter ces flux. Il faut dans ce cas utiliser un proxy SSL comme illustré ci-dessous.
Nous savons donc maintenant que l’emplacement des sondes et le matériel réseau utilisés sont très importants. Cependant, un autre point ne doit pas être oublié : la sécurisation du senseur et des logs d'alerte. En effet, si la sonde elle-même ou si les alertes qu’elles génèrent ne sont pas sécurisées, un pirate pourrait très bien rendre l’IDS complètement inefficace.
. Un sniffer est une machine écoutant toutes les données circulant sur le réseau.
. Le Réseau privé virtuel (VPN ou Virtual Private Network, en anglais), est une extension des réseaux locaux quiprocure une norme de sécurité en télécommunications.

Pour sécuriser les sondes et les fichiers d’alertes, il est par exemple possible de mettre en place un réseau de management très contrôlé, avec son propre firewall. Ce système sera primordial pour la sécurité du réseau et plusieurs mesures devront être prises pour assurer son fonctionnement :
· Le système d’exploitation du senseur devra tenu à jour
· Un système d’authentification robuste (ex : PKI) pourra être mis en place pourrenforcer la sécurité.
· Tous les mots de passe devront être changés régulièrement
· Il est également possible d’utiliser deux interfaces réseaux pour le senseur : lapremière pour générer les alertes et contrôler le trafic ; et la deuxième, complètementinvisible, en tant que point de monitoring. Ce genre d’interface est communémentappelée stealth interface.
ii. Problèmes techniques
Le premier problème est de configurer correctement l’IDS afin qu’il n’inonde pas les rapports d’alertes avec des faux positifs. La présence de faux positifs semble inoffensive. Or, s’ils sont trop nombreux, les rapports d’alertes seront longs à analyser. Par conséquent, les administrateurs passeront beaucoup de temps à distinguer un faux positif d’une véritable intrusion. Et de plus, en voyant toutes ces fausses alertes, ils auront tendance à minimiser le risque d’attaque.
Bien sûr, il faut également veiller à ce que l’affinement de la configuration ne génère pas des faux négatifs car toute intrusion non détectée peut avoir des conséquences dramatiques.
Le deuxième problème provient des débits actuels sur les réseaux : ces débits augmentent de plus en plus, et les IDS ont de plus en plus de paquets à traiter et à analyser. En plus d’avoir un équipement réseau performant, l’IDS doit utiliser des algorithmes adaptés et optimisés.
Afin de bien comprendre comment améliorer les performances d’un NIDS, il faut comprendre les différentes étapes. Chaque paquet de données traité par l’IDS va subir une suite de traitements :
· capture de la trame par l’interface en mode promiscuité (promiscous mode)
· analyse de la trame et filtrage éventuel en bas niveau
· détection de la présence de fragments ou non et passage éventuel à un moteur dereconstruction
· transfert de la trame vers le système d’exploitation
· filtrage éventuel
· applications de divers préprocesseurs en fonction du type de requête afin de contrerdes techniques d’évasion d’attaques (voir plus loin)
· passage vers le moteur d’analyse (protocole, pattern matching, statistique, …)
Pour améliorer les performances de l’IDS, il peut donc être judicieux de répartir les charges. Par exemple, il est envisageable de séparer les flux à analyser en fonction du protocole de niveau 4 : une sonde pour l’analyse des flux Web, une autre pour l’analyse des flux FTP et une analyse des requêtes SQL.

Un autre problème est la corrélation des informations provenant de plusieurs types de sondes. Voici les actions à réaliser pour regrouper ces informations :
· agrégation : rassembler les informations des différentes sondes
· fusion : fusionner en supprimant les doublons (même attaque détectée par plusieurssondes)
· corrélation : définir un motif commun, c'est-à-dire interpréter une suite d’événementset les résumer
Une corrélation intéressante serait de ne garder que les alertes qui concernent une faille probable du système. Pour cela il faut utiliser un scanner de vulnérabilités par exemple, ou ne pas afficher les alertes concernant IIS si on possède Apache, ce qui entraînera moins de faux positifs.
Néanmoins, l’utilisation d’un scanner de vulnérabilités n’est pas parfaite car il est difficile d’échanger des informations entre un scanner de vulnérabilités et un IDS. Cependant, depuis peu, des consoles de corrélation entre IDS et scanners de vulnérabilités sont proposées (ex : Nevo de Tenable Network Security).
Enfin, un dernier problème est qu’il n’y a aucune interopérabilité entre les différents IDS du marché, mis à part la possibilité d’exporter les informations dans des formats standard. Pourtant, des normes ont été établies, comme nous allons le voir.
iii. Complémentarité des IDS
Nous avons vu qu’il existe plusieurs types d’IDS, dont leur rôle est complètement différent. Plus exactement, leurs rôles sont complémentaires. En effet, un NIDS ne fera qu’analyser le trafic réseau. Mais complété par un HIDS, des intrusions non détectées sur le réseau pourront l’être lorsqu’elles atteindront la machine cible.
En général, un seul NIDS par réseau est suffisant. Mais il est possible de placer des sondes à différents endroits du réseau afin de répartir la charge.
L’idéal pour les HIDS serait d'en déployer sur toutes les machines du parc informatique mais cela n'est rarement fait pour des raisons de coût et d'exploitation. Un compromis souvent choisi est d'installer des agents HIDS sur toutes les machines de la DMZ, ainsi que sur les serveurs importants.
Les KIDS/KIPS ralentissant énormément l’exécution des programmes, ils sont souvent délaissés ou configurés de façon à n’utiliser que les fonctionnalités de base. Pourtant, ils sont les seuls à pouvoir détecter de manière efficace les tentatives de buffer overflows. Ils sont donc très conseillés sur les machines sensibles.
4) Normalisation
Il y a quelques années, un comité du DARPA a défini 4 briques fonctionnelles pour décrire l’architecture globale d’un IDS :
· Générateur d’événements (boîte E) : envoie des événements à la boîte A
· Analyseur d’événements (boîte A) : produit des alertes
· Base de données événementielle (boîte D)
· Système de réponse (boîte R) : réponse en temps réel face aux attaques
Ce comité a aussi défini un langage de description des intrusions (CISL – Common Intrusion Specification Language) qui utilise des expressions verbales (ex : « ouvrir session », « effacer objet », …). Cependant, ce langage n’a jamais été utilisé mais il a inspiré d’autres comités.
L’IDWG (Intrusion Detection Working Group) a effectué la plupart des travaux dans le domaine de la standardisation des IDS :
■* norme IDMEF (Intrusion Detection Message Exchange Format) : définit le format des messages échangés dans un IDS.
■* protocole IDXP (Intrusion Detection eXchange Protocol) : procédures de transport entre les entités de l’IDS.
Selon l’IDWG, un IDS est ensemble de plusieurs senseurs, analyseurs et managers :
C’est un schéma théorique, rarement implémenté de cette façon dans les IDS. La norme IDMEF préconise une représentation en XML des messages où dans chaque message, on retrouve l’ID de l’analyseur, le type d’alerte, l’emplacement (le nœud réseau), le jour et l’heure, l’adresse, la classification de l’attaque, …
5) Techniques anti-IDS
Comme tout système informatique, ou presque, il existe des failles dans les IDS, ou plutôt des techniques qui permettent d’outrepasser ces systèmes sans se faire repérer. Si un pirate détecte la présence d’un IDS, il peut le désactiver, ou mieux encore, générer de fausses attaques pendant qu’il commettra son forfait tranquillement.
Il existe trois catégories d’attaques contre les IDS :
· Attaque par déni de service : rendre l’IDS inopérant en le saturant.
· Attaque par insertion : le pirate, pour éviter d’être repéré, injecte des paquets de leurrequi seront ignorés par le système d’exploitation de la cible mais pris en compte parl’IDS : l’IDS ne détecte rien d’anormal, alors que sur le système cible, l’attaque a bienlieu puisque les paquets superflus sont ignorés.
· Attaque par évasion : il s’agit de la technique inverse à l’attaque par insertion. Ici, desdonnées superflues sont ignorées par l’IDS mais prises en compte par le systèmed’exploitation. Nous détaillons un peu plus loin quelques techniques d’évasion Web.

i. Détecter un IDS
Comme nous l’avons déjà signalé, il est très dangereux que la présence d’un IDS soit remarquée par un pirate. Car dans ce cas, il tentera d’obtenir un maximum d’informations sur l’IDS installé (ex : la version utilisée) pour pouvoir l’outrepasser et attaquer sans se faire remarquer. Voici quelques techniques qui permettent de détecter un IDS :
Usurpation d’adresse MAC : les NIDS mettent l’interface de capture en mode promiscuité (promiscuous mode), il est donc possible de détecter l’IDS en envoyant par exemple un ICMP « echo request » à la machine soupçonnée d’être un NIDS avec une adresses MAC inexistante. Si la machine répond alors elle est en mode promiscuous et peut donc être un NIDS.
Mesure des temps de latence : puisque l’interface est en mode promiscuous, les temps de réponse sont plus longs. Voici une méthode pour exploiter ces temps de latence :
· le pirate génère une série de pings vers l’adresse à tester, puis il mesure et note lestemps de réponses.
· le pirate sature ensuite le réseau en broadcast9 dans le but de ralentir l’IDS, qui recevratous les paquets. Enfin, le pirate réémet la même série de pings en mesurant lesnouveaux temps de réponse. S’ils sont bien plus élevés que les premiers tempsobtenus, il est fort possible que la machine soit en mode promiscous.
Exploiter les mécanismes de réponses actives : Les IPS réagissent à certaines attaques (fermer session, bloquer port, …) mais en faisant cela, ils laissent souvent des empreintes (header des paquets) permettant d’identifier le type d’IPS.
Observation des requêtes DNS : Les IDS génèrent souvent des requêtes DNS lors des alertes. En observant le DNS primaire lors de fausses attaques, on peut détecter qu’il y a un IDS.
ii. Déni de services contre un IDS
Le but est de désactiver l’IDS en saturant ses ressources (ex : SYN Flood ou paquets fragmentés incomplets). L’IDS sera dès lors incapable d’exécuter sa fonctionnalité de détection, et le pirate pourra réaliser son attaque.
iii. Techniques d’insertion
Comme nous l’avons vu, ces techniques consiste à injecter des données supplémentaires de telle sorte que :
· l’IDS les estiment inoffensives
· la cible ne les décode pas
Voici quelques méthodes permettant d’utiliser des techniques d’insertion :
S en utilisant la fragmentation IP qui est gérée de manière différente selon l’OS lors de cas anormaux (ex : recouvrement de paquets) : soit les fragments anciens sont favorisés, soit les nouveaux le sont. Par exemple, il est donc possible que les IDS favorisent les anciens paquets alors que le système d’exploitation utilisé favorise les nouveaux.
9 Le broadcast est un terme anglais (en français on utilise le terme diffusion) définissant une diffusion de données à un ensemble d'ordinateurs connectés à un réseau informatique.
Pour utiliser le recouvrement de fragments (fragmentation overlap), il faut modifier artificiellement les champs « longueur » et « décalage » (offset) des fragments IP.
S en utilisant l’écrasement de fragments (fragmentation overwrite) : même principe que précédemment mais des fragments entiers sont remplacés, et non seulement des parties de paquets.
S en utilisant le timeout de fragmentation : les systèmes conservent en général les fragments pendant 60 secondes pour le réassemblage ; mais les IDS les gardent souvent moins longtemps. On peut donc espacer les fragments dans le temps pour ne pas se faire repérer par l’IDS tout en réalisant une attaque complète sur le système d’exploitation.
S découpage de sessions TCP (session splicing) : la requête TCP est divisée en paquets, tout en modifiant le numéro de séquence pour créer des recouvrements : même principe qu’avec la fragmentation IP + possibilité de timeout (Apache Linux : 5min dans tampon, IIS : 10 min). L’un des outils pour réaliser ce genre d’attaques se nomme fragroute.
S insérer un faux paquet avec checksum erroné : certains IDS ne verront pas l’attaque car peu d’IDS vérifient le checksum. Le système, par contre, rejettera le paquet erroné.
Attention : de nos jours, les routeurs rejettent souvent les paquets erronés ; il faut donc utiliser un autre champ que le checksum, comme par exemple le TTL
iv. Techniques d’évasion
Nous présentons maintenant quelques techniques d’évasion. Pour rappel, ces techniques ont pour but d’insérer des données qui seront ignorées par l’IDS mais qui ne gêneront nullement l’attaque.
· Evasions HTTP : le principe est de modifier la syntaxe des URL mais sans changer la sémantique. La première personne à avoir présenté ce genre d’attaques avait pour pseudonyme Rain Forrest Puppy qui est l’auteur du très célèbre outil Whisker, un scanner de vulnérabilités Web.
Voici quelques exemples d’évasion HTTP qui permettaient à une époque d’outrepasser les signatures de nombreux NIDS, tout en émettant des requêtes HTTP valides. Bien sûr, les NIDS prennent maintenant en compte ces techniques.
■* faire une requête HEAD au lieu de GET.
■* encoder les URL en hexadécimal, cette forme d’encodage étant tout à fait valide selon la RFC du protocole HTTP.
■* simuler la fin d’une requête prématurée avec le caractère de fin de chaîne ou bien avec les caractères de fin de requête HTTP : %0D%0A
■* utiliser des URL longues : certains IDS n’analysaient qu’une partie de l’URL
■* utiliser la syntaxe MS DOS / Windows : remplacer les caractères / par \
■* découper la requête HTTP sur plusieurs paquets
■* remplacer les espaces par des tabulations
• Shellcodes polymorphiques : parmi les attaques décrites précédemment, nous avons vu les tentatives de buffer overflow. Celles-ci peuvent être décomposées en trois grandes parties :
- des instructions pour remplir le buffer. Assez souvent, ce sont des instructionsassembleurs NOP, dont le code est 0x90 sur architecture IA32.
- le shellcode, c’est-à-dire le code qui sera exécuté sur la machine et qui permettra de donner accès à un shell de commandes.
- une adresse de retour de procédure (qui pointe souvent vers les NOP) qui permettra lors du dépassement de buffer d’exécuter le shellcode.
De nombreux IDS sont capables de détecter les tentatives de buffer overflow. La première méthode est de surveiller la présence importante d’instructions NOP. La deuxième est de détecter la chaîne « bin/sh » qui est souvent présente dans les shellcodes pour Unix. La troisième méthode est d’avoir des signatures complètes de shellcodes répandus sur Internet.
Cependant, il est facilement possible de camoufler une tentative de buffer overflow. Voici quelques techniques simples mais efficaces :
- mettre une autre instruction que des NOP pour remplir le buffer (ex : DAA, AAA, XOR, INC, …)
- écrire les instructions par des équivalences, comme par exemple réécrire une instruction « MOV EAX, 0 » par « XOR EAX,EAX » ou bien encore « SUB EAX, EAX » qui auront toutes les trois pour effet de mettre le registre EAX à 0.
- réaliser un cryptage (XOR) du shellcode et ainsi le rendre polymorphique. Dans ce cas, le décodeur et la clé doivent être présents dans le shellcode pour pouvoir le décrypter lors de son exécution chez la victime.
Nous pouvons remarquer qu’il devient très difficile pour un IDS de détecter un shellcode en utilisant des signatures. Le seul moyen efficace est de détecter le buffer overflow lors de son exécution et l’empêcher au dernier moment de lancer un shellcode. Pour cela, seuls les KIPS (Kernel Intrusion Prevention System) se montrent adaptés puisqu’ils surveillent les appels systèmes.
6) Critères de tests d'un IDS
Lors de la mise en place d’un IDS, il est nécessaire de prendre en considération plusieurs critères qui permettront de choisir au mieux l’IDS.

Tester un IDS avec des scanners de vulnérabilité est une mesure nécessaire pour évaluer un IDS, mais est loin d'être suffisante. D'autres critères doivent être pris en compte :
· Méthodes et capacités de détection : estimer le taux de faux positifs et la qualitéd'information fournie par l'IDS.
· Rapidité : tester l'IDS en condition de charge élevée. Il est important de tester cela demanière réaliste, et non pas en utilisant des générateurs de paquets.
· Ouverture : il faut que l'IDS permette de modifier les signatures afin d'éviter certainsfaux positifs, mais aussi d'ajouter de nouvelles signatures spécifiques àl'environnement.
· Résistance aux techniques d'évasion : utiliser des outils tels que Whisker, Nikto,Babelweb, Fragroute ou Mendax pour observer le comportement de l'IDS.
· Architecture logicielle : pour les grandes entreprises, il est intéressant de pouvoirséparer les fonctions d'administration.
· Exploitabilité des données : il faut disposer d'outils permettant de retrouver et analyserfacilement les événements suspects car le volume généré par les IDS est important.
Afin de centraliser les données, il peut être intéressant de disposer de consoles de reporting ou de tableaux de bords.
· Ergonomie : on retrouve différents types d’interfaces dans les IDS. Tout d’abord, lesinterfaces graphiques qui sont adaptées aux particuliers ou aux PME. Ensuite, lesinterfaces de type Web ou encore les interfaces en ligne de commandes réservées auxspécialistes. Dans tous les cas, l’interface doit offrir de nombreuses fonctionnalités.
D'autres critères, comme la réactivité de l'éditeur (mises à jour des signatures, correctifs, …), ou le prix (solution libre ou non) rentrent en jeu. Pour évaluer un IDS, il est intéressant de pondérer chacun de ces critères selon l'importance qu'on leur attribue, et donner une note à l'IDS pour chaque critère.

FONCTIONNEMENT DES ANTIVIRUS...

TECHNOLOGIE DE BASE DES ANTIVIRUS
Les virus se reproduisent en infectant des « applications hôtes », c'est-à-dire en copiant une portion de code exécutable au sein d'un programme existant. Or, afin de ne pas avoir un fonctionnement chaotique, les virus sont programmés pour ne pas infecter plusieurs fois un même fichier. Ils intègrent ainsi dans l'application infectée une suite d'octets leur permettant de vérifier si le programme a préalablement été infecté : il s'agit de la signature virale.

Les antivirus s'appuient ainsi sur cette signature propre à chaque virus
pour les détecter. Il s'agit de la méthode de recherche de signature (scanning), la plus ancienne méthode utilisée par les antivirus. Cette méthode n'est fiable que si l'antivirus possède une base virale à jour, c'est-à-dire comportant les signatures de tous les virus connus. Toutefois cette méthode ne permet pas la détection des virus n'ayant pas encore été répertoriés par les éditeurs d'antivirus. De plus, les programmeurs de virus les ont désormais dotés de capacités de camouflage, de manière à rendre leur signature difficile à détecter, voire indétectable : il s'agit de "virus polymorphes".

Certains antivirus utilisent un contrôleur d'intégrité pour vérifier si les fichiers ont été modifiés. Ainsi le contrôleur d'intégrité construit une base de données contenant des informations sur les fichiers exécutables du système (date de modification, taille et éventuellement une somme de contrôle). Ainsi, lorsqu'un fichier exécutable change de caractéristiques, l'antivirus prévient l'utilisateur de la machine.

La méthode heuristique consiste à analyser le comportement des applications afin de détecter une activité proche de celle d'un virus connu. Ce type d'antivirus peut ainsi détecter des virus même lorsque la base antivirale n'a pas été mise à jour. En contrepartie, ils sont susceptibles de déclencher de fausses alertes. La plupart des antivirus sont également dotés d'un moniteur de comportement.

TYPES DE VIRUS

Types de virus

Définitions:
Un virus est un petit programme <informatique situé dans le corps d'un autre, qui, lorsqu'on l'exécute, se charge en mémoire et exécute les instructions que son auteur a programmé. La définition d'un virus pourrait être la suivante : « Tout programme d'ordinateur capable d'infecter un autre programme d'ordinateur en le modifiant de façon à ce qu'il puisse à son tour se reproduire. »
Le véritable nom donné aux virus est CPA soit Code Auto-Propageable, mais par analogie avec le domaine médical, le nom de "virus" leur a été donné.

Les virus résidents (appelés TSR en anglais pour Terminate and stay resident) se chargent dans la mémoire vive de l'ordinateur afin d'infecter les fichiers exécutables lancés par l'utilisateur. Les virus non résidants infectent les programmes présents sur le disque dur dès leur exécution.

Le champ d'application des virus va de la simple balle de ping-pong qui traverse l'écran au virus destructeur de données, ce dernier étant la forme de virus la plus dangereuse. Ainsi, étant donné qu'il existe une vaste gamme de virus ayant des actions aussi diverses que variées, les virus ne sont pas classés selon leurs dégâts mais selon leur mode de propagation et d'infection.
On distingue ainsi différents types de virus :

Les vers sont des virus capables de se propager à travers un réseau
Les chevaux de Troie (troyens) sont des virus permettant de créer une faille dans un système (généralement pour permettre à son concepteur de s'introduire dans le système infecté afin d'en prendre le contrôle)
Les bombes logiques sont des virus capables de se déclencher suite à un événement particulier (date système, activation distante, ...)

Depuis quelques années un autre phénomène est apparu, il s'agit des canulars (en anglais hoax), c'est-à-dire des annonces reçues par mail (par exemple l'annonce de l'apparition d'un nouveau virus destructeur ou bien la possibilité de gagner un téléphone portable gratuitement) accompagnées d'une note précisant de faire suivre la nouvelle à tous ses proches. Ce procédé a pour but l'engorgement des réseaux ainsi que la désinformation.

Les virus mutants
En réalité, la plupart des virus sont des clones, ou plus exactement des «virus mutants», c'est-à-dire des virus ayant été réécrits par d'autres utilisateurs afin d'en modifier leur comportement ou leur signature.
Le fait qu'il existe plusieurs versions (on parle de variantes) d'un même virus le rend d'autant plus difficile à repérer dans la mesure où les éditeurs d'antivirus doivent ajouter ces nouvelles signatures à leurs bases de données.

Les virus polymorphes
Dans la mesure où les antivirus détectent notamment les virus grâce à leur signature (la succession de bits qui les identifie), certains créateurs de virus ont pensé à leur donner la possibilité de modifier automatiquement leur apparence, tel un caméléon, en dotant les virus de fonction de chiffrement et de déchiffrement de leur signature, de façon à ce que seuls ces virus soient capables de reconnaître leur propre signature. Ce type de virus est appelé «virus polymorphe» (mot provenant du grec signifiant «qui peut prendre plusieurs formes»).

Les rétrovirus
On appelle « rétrovirus » ou « virus flibustier » (en anglais bounty hunter)
un virus ayant la capacité de modifier les signatures des antivirus afin de les rendre inopérants.

Les virus de secteur d'amorçage
On appelle « virus de secteur d'amorçage » (ou virus de boot), un virus capable d'infecter le secteur de démarrage d'un disque dur (MBR, soit master boot record), c'est-à-dire un secteur du disque copié dans la mémoire au démarrage de l'ordinateur, puis exécuté afin d'amorcer le démarrage du système d'exploitation.

Les virus trans-applicatifs (virus macros)
Avec la multiplication des programmes utilisant des macros, Microsoft a mis au point un langage de script commun pouvant être inséré dans la plupart des documents pouvant contenir des macros, il s'agit de VBScript, un sous-ensemble de Visual Basic. Ces virus arrivent actuellement à infecter les macros des documents Microsoft Office, c'est-à-dire qu'un tel virus peut être situé à l'intérieur d'un banal document Word ou Excel, et exécuter une portion de code à l'ouverture de celui-ci lui permettant d'une part de se propager dans les fichiers, mais aussi d'accéder au système d'exploitation (généralement Windows).

Or, de plus en plus d'applications supportent Visual Basic, ces virus peuvent donc être imaginables sur de nombreuses autres applications supportant le VBScript. Le début du troisième millénaire a été marqué par l'apparition à grande fréquence de scripts Visual Basic diffusés par mail en fichier attaché (repérables grâce à leur extension .VBS) avec un titre de mail poussant à ouvrir le cadeau empoisonné.

Celui-ci a la possibilité, lorsqu'il est ouvert sur un client de messagerie Microsoft, d'accéder à l'ensemble du carnet d'adresse et de s'autodiffuser par le réseau. Ce type de virus est appelé ver (ou worm en anglais).

LA PROTECTION EFFICACE


Plusieurs applications sont nécessaires pour protéger un PC:


Pourquoi un firewall sur votre ordinateur personnel ?

Pour vous protéger des intrusions un firewall personnel doit filtrer les communications entrantes depuis Internet vers votre machine, dans l'autre sens, ne pas répondre à des demandes de présence intempestives et surveiller les programmes chargés en mémoire. Par "personnel" il faut entendre un parefeu logiciel chargé sur un ordinateur individuel.

Les arguments contre un parefeu personnel sont-ils valables ?


La valeur des arguments contre un firewall (pare-feu) personnel, parfois contradictoires, est très variable.

Pour configurer un pare-feu 3 notions simples et un peu de pratique suffisent. Pour configurer un pare-feu personnel (firewall), et prendre la bonne décision lors de nouvelles communications, trois notions sont à connaître : adresse IP, port de communication et nom de domaine.

Comment décider si une communication entrante ou sortante est à autoriser ou non ?

La panoplie du contre-espionnage : anti-spyware, nettoyeur de disque dur, filtre Web et proxy. Logiciels anti-espion pour Internet : un anti-spyware et un effaceur de fichier sont indispensables, un filtre Web et un proxy peuvent être utiles.

Test de MailinBlack : service de messagerie antispam et anti-virus. Les spam sont envoyés par email en grand nombre par des programmes informatiques. La plupart des virus de type ver (worm) en font de même. Mailinblack bloque ces pourriels en mettant en place un test que les robots informatiques sont incapables de réussir.

Schéma de fonctionnement anti-spam et anti-virus. Cheminement d'un email utilisé par Mailinblack pour éliminer les spam et les virus.
Remarque:
PROTEGEZ-VOUS MAINTENANT AVEC DE BONS PROTECTEURS CAR VOS DONNEES ET VOTRE ORDINATEUR COUTENT PLUS CHERS QUE LE PLUS CHER DES ANTIVIRUS, FIREWALL, anti-spyware ( ...) PAYANTS.
EXEMPLE: LORSQUE VOUS RENTREZ DANS PARFUMERIE SANS FAIRE D'ACHAT, VOUS NE SORTEZ QU'AVEC LA BONNE ODEUR DES PARFUMS QUE AVEZ ESSAYE.
VOUS NE SENTEZ BON QUE QUELQUES TEMPS SEULEMENT ET NON POUR TOUJOURS PUISQUE VOUS N'AVEZ PLUS LE PARFUM AVEC VOUS.
Laisez-vous donc habiter par la sagesse POUR COMPRENDRE QUE toute entreprise existe pour faire du profit et même quand elle paraît faire des "dons" c'est pour attirer de la clientèle !!!
La survie de votre parc informatique dépend de votre décision actuelle...