Vous êtes sur la page 1sur 60

Un petit guide pour la scurit

Alexandre Viardin
Mirabellug guidesecu(at)free.fr

Publi par

Philippe Latu

Un petit guide pour la scurit Publi par et Alexandre Viardinet Philippe Latu

Copyright et Licence
Copyright (c) 2003 Alexandre Viardin Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". Copyright (c) 2003 Alexandre Viardin Permission est accorde de copier, distribuer et/ou modifier ce document selon les termes de la Licence de Documentation Libre GNU (GNU Free Documentation License), version 1.1 ou toute version ultrieure publie par la Free Software Foundation ; sans Sections Invariables ; sans Texte de Premire de Couverture, et sans Texte de Quatrime de Couverture. Une copie de la prsente Licence est incluse dans la section intitule Licence de Documentation Libre GNU .

Historique des versions

Version .Revision: 1.7 . .Date: 2004/01/04 20:21:18 . Revu par : pl Publication Linux France Version $Revision: 1.10 $ $Date: 2004/02/17 21:25:38 $ Revu par : pl Complments sur le Peer To Peer et les virus.

Table des matires


Avant-propos ..................................................................................................................................................i 1. Pourquoi ce guide ?...........................................................................................................................i 2. O trouver ce guide ?........................................................................................................................i 3. Quels sont les systmes dexploitation viss ? .............................................................................ii 1. Scurisation de base ................................................................................................................................ 1 1.1. Premier conseil : Verrouillez les stations.................................................................................... 1 1.2. Pour Linux ...................................................................................................................................... 1 1.3. Pour Windows................................................................................................................................ 1 1.4. Le lecteur de disquettes ................................................................................................................ 1 1.5. Le lecteur de CDROM................................................................................................................... 1 1.6. Noubliez pas le mot de passe pour le BIOS.............................................................................. 1 2. La collecte dinformations ...................................................................................................................... 3 2.1. Le Scanner....................................................................................................................................... 3 2.1.1. Quest ce quun scanner ? ................................................................................................. 3 2.1.2. Comment marche Nmap ? .................................................................................................. 4 2.1.3. La dtermination du systme dexploitation avec Nmap............................................ 5 2.1.4. Quel est lintret dutiliser Nmap ?.................................................................................... 6 2.1.5. Comment sen protger ?.................................................................................................. 6 2.1.6. Documents .......................................................................................................................... 6 2.2. Identier les versions des logiciels en coute............................................................................ 6 2.2.1. Netcat................................................................................................................................... 7 3. Les failles applicatives ............................................................................................................................ 8 3.1. Les installations par dfaut .......................................................................................................... 8 3.2. Les mauvaises congurations...................................................................................................... 8 3.3. Les bogues ...................................................................................................................................... 8 3.3.1. Des dnis de services applicatifs ..................................................................................... 8 3.3.2. Outrepassement de droits................................................................................................. 8 3.3.3. Les scripts............................................................................................................................ 8 3.4. Les exploits ..................................................................................................................................... 9 3.5. Comment sen proteger ?.............................................................................................................. 9 4. Les outils indispensables pour la protection .................................................................................... 11 4.1. Le pare-feu rewall ....................................................................................................................... 11 4.1.1. La conguration ............................................................................................................... 11 4.1.2. Les attaques contre les rewalls .................................................................................... 11 4.2. Les systmes de dtection dintrusion (HIDS/NIDS)............................................................ 12 4.2.1. Prelude-NIDS ................................................................................................................... 13 4.2.2. Snort................................................................................................................................... 13 4.3. Le tunneling.................................................................................................................................. 13 4.3.1. Le protocole AH............................................................................................................... 13 4.3.2. Le protocole ESP .............................................................................................................. 13 4.3.3. Le protocole IPcomp........................................................................................................ 14 4.3.4. Le protocole IKE............................................................................................................... 14 4.3.5. Les deux modes de fonctionnements de IPsec ............................................................ 14 4.3.6. Les limitations dIPsec..................................................................................................... 14 4.3.7. Documents ........................................................................................................................ 14 4.4. Nessus ........................................................................................................................................... 14 4.4.1. Pour obtenir tout sur Nessus ......................................................................................... 14 4.5. User Mode Linux - UML ............................................................................................................ 14 4.5.1. Documents ........................................................................................................................ 15

iii

5. Surveillance - Dissimulation - Maintien daccs ............................................................................. 16 5.1. Les chevaux de Troie ................................................................................................................... 16 5.1.1. Comment sen protger ?................................................................................................ 16 5.2. Les backdoors............................................................................................................................... 16 5.2.1. Les backdoors prsentes dans les logiciels................................................................... 16 5.2.2. Les backdoors ddies aux connexions distance ..................................................... 17 5.3. Les Rootkits .................................................................................................................................. 17 5.3.1. Comment sen protger ?................................................................................................ 17 5.4. Linterception des mots de passe en rseau............................................................................. 18 5.4.1. Comment sen protger ?................................................................................................ 18 6. Dispositifs destructeurs ........................................................................................................................ 20 6.1. Le virus.......................................................................................................................................... 20 6.1.1. Comment sen protger ?................................................................................................ 20 6.2. Les vers.......................................................................................................................................... 20 6.2.1. Comment sen protger ?................................................................................................ 20 6.3. Les bombes logiques ................................................................................................................... 21 6.3.1. Comment sen protger ?................................................................................................ 21 6.4. Les attaques par dni de services .............................................................................................. 21 6.4.1. Le SYN ood..................................................................................................................... 21 6.4.2. LUDP Flood ..................................................................................................................... 21 6.4.3. La fragmentation de paquets ......................................................................................... 22 6.4.4. Ping of death..................................................................................................................... 22 6.4.5. Attaque par rexion : Smurng................................................................................... 22 6.4.6. Dnis de services distribus ........................................................................................... 22 6.4.7. Bombes e-mail .................................................................................................................. 22 7. Scurisation des mots de passe............................................................................................................ 24 7.1. Lattaque par dictionnaire .......................................................................................................... 24 7.2. Le brute forcing............................................................................................................................ 24 7.3. Tester la abilit de vos mots de passe !................................................................................... 24 7.4. Choisir le bon mot de passe ....................................................................................................... 25 7.5. Prvenir lutilisateur ................................................................................................................... 25 8. La base des attaques rseaux................................................................................................................ 26 8.1. Dtournement de ux ................................................................................................................. 26 8.1.1. ARP-Poisoning ................................................................................................................. 26 8.1.2. Dsynchronisation TCP .................................................................................................. 27 8.2. Man In the Middle - MITM........................................................................................................... 27 8.2.1. Document.......................................................................................................................... 28 8.3. Encapsulation dIP dans dautres protocoles. ......................................................................... 28 9. Description dattaques sur diffrents protocoles............................................................................. 29 9.1. Dynamic Host Conguration Protocol - DHCP...................................................................... 29 9.1.1. Attaque par puisement de ressources......................................................................... 29 9.1.2. Faux serveurs DHCP....................................................................................................... 29 9.1.3. Comment sen protger ?................................................................................................ 29 9.1.4. Documents ........................................................................................................................ 30 9.2. Domain Name Service - DNS .................................................................................................... 30 9.2.1. Le DNS ID spoong......................................................................................................... 30 9.2.2. Le DNS cache poisoning ................................................................................................. 31 9.2.3. Comment sen protger ?................................................................................................ 32 9.2.4. Documents ........................................................................................................................ 32 9.3. FINGER ......................................................................................................................................... 32 9.3.1. Comment sen proteger ?................................................................................................ 33 9.4. FTP ................................................................................................................................................. 33 9.4.1. Le serveur FTP anonyme ................................................................................................ 33 9.4.2. Comment sen protger ?................................................................................................ 34 9.5. HTTP ............................................................................................................................................. 34 9.5.1. Les serveurs trop bavards............................................................................................... 34 9.5.2. Vulnrabilits lies aux applications web .................................................................... 34 9.5.3. Comment se protger ? ................................................................................................... 35 iv

9.6. IDENT ........................................................................................................................................... 35 9.6.1. Comment sen protger ?................................................................................................ 35 9.7. IP et lIP-Spoong........................................................................................................................ 35 9.7.1. Un peu de thorie ... ........................................................................................................ 36 9.7.2. Prvenir lIP spoong grce Nmap ............................................................................ 38 9.7.3. Comment sen protger ?................................................................................................ 38 9.7.4. Document.......................................................................................................................... 39 9.8. NETBIOS....................................................................................................................................... 39 9.8.1. Comment sen protger ?................................................................................................ 39 9.8.2. Document.......................................................................................................................... 39 9.9. Network File System - NFS ........................................................................................................ 39 9.9.1. Les attaques ...................................................................................................................... 39 9.9.2. Comment sen protger ?................................................................................................ 39 9.10. Network Information Service - NIS ........................................................................................ 39 9.10.1. Les attaques .................................................................................................................... 40 9.10.2. Comment sen protger ?.............................................................................................. 40 9.11. PORTMAP .................................................................................................................................. 40 9.11.1. Comment sen protger ?.............................................................................................. 40 9.12. Le protocole SMB....................................................................................................................... 40 9.12.1. Les scans de SMB shares ............................................................................................... 41 9.12.2. Comment sen protger ?.............................................................................................. 41 9.12.3. Document........................................................................................................................ 41 9.13. Le service de messagerie - SMTP ............................................................................................ 41 9.13.1. Comment sen protger ?.............................................................................................. 42 9.14. SQL .............................................................................................................................................. 42 9.14.1. Linjection SQL ou SQL-Injection ................................................................................ 42 9.14.2. Comment sen protger ?.............................................................................................. 42 9.14.3. Document........................................................................................................................ 42 9.15. SSH............................................................................................................................................... 42 9.16. TELNET ...................................................................................................................................... 43 9.16.1. Comment sen protger ?.............................................................................................. 43 9.17. XWINDOW ................................................................................................................................ 43 9.17.1. Les attaques .................................................................................................................... 43 9.17.2. Comment sen proteger ?.............................................................................................. 43 9.18. Peer To Peer (eDonkey, Kazaa, etc.) ........................................................................................ 43 9.18.1. Les outils Peer To Peer sont des vecteurs de virus.................................................... 44 9.18.2. Comment sen protger ?.............................................................................................. 44 10. Scurit avance ................................................................................................................................... 45 10.1. Larchitecture scurise............................................................................................................. 45 10.1.1. Le rseau de dpart ....................................................................................................... 45 10.1.2. Le premier niveau de scurit...................................................................................... 45 10.1.3. Le deuxime niveau de scurisation ........................................................................... 46 10.1.4. Les niveaux plus levs................................................................................................. 46 10.2. Dveloppez vos propres utilitaires scurit .......................................................................... 47 10.2.1. Le programme ................................................................................................................ 48 10.2.2. Comment obtenir et compiler le source entier du programme ?............................ 52 10.2.3. Documents ...................................................................................................................... 52 A. Annexes................................................................................................................................................... 53 A.1. Les sites et revues consulter rgulierement ......................................................................... 53 A.2. Remerciements............................................................................................................................ 53

Avant-propos
Qui connat lautre et se connat, en cent combats ne sera point dfait; qui ne connat lautre mais se connat, sera vainqueur une fois sur deux; qui ne connat pas plus lautre quil ne se connat sera toujours dfait. Lart de la guerre - Sun Tzu

1. Pourquoi ce guide ?
Ce guide a t ralis suite un audit de scurit que jai ralis pour mon cole et aux deux confrences sur la scurit rseau prsentes au groupe dutilisateurs Linux de NANCY (coucou le Mirabellug). Je ne suis pas spcialiste en scurit rseau ; jai juste crit ce guide dans le but de donner des administrateurs ou des particuliers, un descriptif technique et un manuel dautoformation la scurit rseau. La plupart des administrateurs ne sont pas spcialistes en securit, et peuvent tre perdus devant un problme de ce type. Le masse dinformations disponible sur Internet est parfois confuse, dense ou trs technique. Ce guide sert de point de dpart et dintroduction la scurit. Il a t pens dans un but volutif. Si vous voulez participer en crivant ou en compltant des chapitres, nhsitez pas me contacter ladresse guidesecu(at)free.fr. Le principe est simple : une description assez succinte sur une attaque et ensuite une description complte des mthodes de protection. Vos expriences personnelles et vos remarques sont aussi les bienvenues. Evidemment, ce guide est sous license GFDL donc gratuit. La seule rcompense que pourront recevoir les ventuels participants est la mention de leurs noms en tant que collaborateurs. Ce guide se compose dune dizaines de chapitres. Chaque chapitre comporte une introduction. La plupart du temps, un chapitre contient au moins une section divise en diffrentes sous sections : une pour la description dun problme de scurit particulier, une deuxime pour dcrire les diffrents moyens de sen protger et une troisime pour donner diffrents liens vers des documents plus prcis sur le sujet. Le premier chapitre montre comment scuriser une station pour viter toutes tentatives de piratage par un accs physique. Le deuxime chapitre dcrit le fonctionnement des outils de rcupration dinformations distance, notamment les scanners. Il montre lutilit quils ont pour vous protger. Le troisime chapitre introduit la notion de failles. Le quatrime chapitre introduit diffrentes notions sur les rewalls et les principaux autres systmes de protection logiciels. Le cinquime chapitre explique comment un pirate dissimule sa prsence sur un systme. Le sixime chapitre sintresse aux dispositifs destructeurs (virus, bombes mails, ...). Le septime chapitre dcrit les attaques sur les chiers de mots de passe. Les huitime et neuvime chapitres traitent de diffrents problmes poss par certains protocoles rseaux. Le dixime chapitre est divis en deux parties : la premire explique comment architecturer son rseau de faon scurise. La deuxime partie est un cours sur le developpement doutils ddis uniquement la scurit.

2. O trouver ce guide ?
Cest trs simple, il y a plusieurs adresses : i

Avant-propos

Le site ofciel : http://guidesecu.ifrance.com/guide/guidesecu.pdf Sur le site du Mirabellug : http://www.mirabellug.org/docs/securite/guidesecu.pdf Le site Linux France : http://www.linux-france.org/prj/inetdoc/securite/tutoriel/

3. Quels sont les systmes dexploitation viss ?


La majorit des programmes dfensifs utiliss et dcrits dans ce guide sont disponibles sous LINUX. Je noublierai pas de parler de la scurit pour les produits Microsoft. Cependant, Linux possde une certaine avance sur Microsoft dans le domaine de la scurit (notamment par un plus grand nombre de logiciels performants et gratuits). Les autres systmes comme SunOS, VMS, MacOS, Plan9, Novell,... seront passs sous silence mais si vous voulez voir des chapitres prcis sur certains OS apparaitre, contactez moi par mail. Bonne Lecture !

ii

Chapitre 1. Scurisation de base


Introduction
Le but de ce chapitre est de donner diffrentes mthodes pour scuriser physiquement une machine. Il faut savoir quune grande partie des piratages sont lancs par des pirates ayant un accs physique sur un rseau. Dans ce chapitre, nous ne nous focaliserons pas sur un serveur ddi un service particulier, mais plutt sur les machines constituant les clients. Ces machines sont en accs libre dans une salle non surveille. Lobjectif est dempcher une personne mal intentionne dobtenir les accs adiministrateur sur la machine quelle utilise. La plupart des utilitaires de piratage ont besoin des accs administrateur pour fonctionner ; sans ces accs, la capacit de nuire est fortement diminue.

1.1. Premier conseil : Verrouillez les stations


Nhsitez pas poser un cadenas sur les tours des machines, cela empchera tout dabord le vol de matriel, mais cela vitera aussi davoir des disques durs monts en secret avec toute une panoplie dutilitaires installs dessus. Le conseil suivre imprativement (et vous comprendrez pourquoi en lisant les deux chapitres suivants) : il faut dsactiver le boot sur le lecteur de disquette et sur le lecteur de CDROM.

1.2. Pour Linux


Evitez davoir loption failsafe au dmarrage propos par Lilo. Cette option peut permettre dobtenir les accs root (sans mot de passe) pour la maintenance du systme.

1.3. Pour Windows


Le systme de chier NTFS permet une scurisation accrue par rapport aux systmes de chier FAT et FAT 32. Si vos machines Windows fonctionnent avec un systme FAT, passez en NTFS. Je dconseille fortement dutiliser Windows 95, 98 et Me, le niveau de scurit offert par ces systmes en natif ntant pas assez lev.

1.4. Le lecteur de disquettes


Evitez le boot sur disquette (certaines versions Linux sinstallent en RAM grce un nombre limit de disquettes) qui donne la possibilit de monter tous les systmes de chiers prsents sur le(s) disque(s) dur(s) de la machine et den modier le(s) contenu(s). De plus, Trinux (http://www.trinux.org) est livr avec un panel assez impressionnant dutilitaires exclusivement ddis la scurit. Le programme NTFS2DOS (sous DOS) permet de changer les partitions NTFS en partitions FAT et de pouvoir accder leurs contenus sans restrictions. NTFS2DOS est lanc depuis une disquette de boot DOS.

1.5. Le lecteur de CDROM


Des utilitaires comme Knoppix (http://www.knoppixfr.org) (systme Linux bootant sur un seul CD et contenant lui aussi un nombre impressionnant dutilitaires divers) peuvent tre utiliss pour monter les diffrents systmes de chiers prsents sur le(s) disque(s) dur(s). 1

Chapitre 1. Scurisation de base

1.6. Noubliez pas le mot de passe pour le BIOS


Noubliez de protger laccs du BIOS par un mot de passe ! Attention certains BIOS peuvent comporter des failles logicielles permettant doutrepasser ces protections. Encore une fois, il ne faut pas oublier de cadenasser les tours, an dviter des utilisateurs (encore) mal intentionns de retirer la pile du BIOS et doutrepasser la protection par mot de passe.

Chapitre 2. La collecte dinformations


Introduction
Dans ce chapitre, nous allons dcrire le fonctionnement des outils permettant de rcuprer des informations distance. Ces utilitaires sont frquemment utiliss par les pirates pour prparer de futures attaques. Cest pour cette raison quil est indispensable de les dcrire ds le dbut. Vous apprendrez galement les utiliser pour votre propre protection.

2.1. Le Scanner
Lobjectif du pirate est de reprer les serveurs offrant des services particuliers et de les identier. Pour obtenir ces informations, le pirate va utiliser un scanner. Le but de ce section est de prsenter des mthodes de protections contre le scan (en utilisant des rgles de rewalling sous iptables/ipchains par exemple) et de savoir utiliser un scanner pour anticiper les futures attaques. Le scanner dcrit dans ce chapitre est Nmap (http://www.insecure.org), un des scanners les plus utiliss et un des plus performants. Nmap est disponible sous Windows et Linux en paquetage dans toutes les distributions majeures. La version dcrite dans ce chapitre tant celle disponible sous Linux. Je dcrirai dans une premire partie ce quest un scanner. Ensuite, je me focaliserai sur Nmap et je le prsenterai dun point de vue un peu plus technique, permettant de comprendre les diffrentes mthodes de protection.
Note : Attention : pour une capacit optimale de fonctionnement, Nmap doit tre utilis avec les droits du super-utilisateur root !.

2.1.1. Quest ce quun scanner ?


Cest trs simple : lorsquun serveur offre un service particulier (Web, messagerie, mail), il excute un programme assurant ce service. Ce programme est en attente de connexions. Les clients devant accder ce service doivent connatre ladresse IP du serveur et le numro de port associ au service. Ce numro de port a t attribu suivant le document standard RFC1010 (http://www.faqs.org/rfcs/rfc1010.html) au programme excutant ce service. Sur les systmes Linux et *BSD la liste de ces numros est disponible dans le chier /etc/services. La plupart des services ont un numro de port bien dni. Par exemple, un serveur de messagerie utilise le port 25, un serveur Web le port 80... Lorsquun service est en coute sur un port, on dit que le numro de port associ ce service est ouvert. Lintrt du scanner est trs simple : il permet de trouver dans un dlai trs court, tous les ports ouverts sur une machine distante. Il existe diffrents types de scanner, certains se contentent juste de donner : la liste des ports ouverts, le type et la version de lOS tournant sur le serveur (ces fonctionnalits seront dcrites dans ce chapitre avecNmap). Dautres scanners comme Nessus (http://www.nessus.org) permettent de tester diffrentes failles connues sur ces services. Voir Section 4.4.

2.1.1.1. Exemple avec Nmap


Utilisons Nmap pour connatre les services en coute sur la machine dadresse IP 192.168.1.1 :
[root@nowhere.net /root]# nmap 192.168.1.1 Starting nmap V. 2.54BETA31 ( www.insecure.org/nmap/ ) Interesting ports on (192.168.1.1) : (The 1544 ports scanned but not shown below are in state : closed) Port State Service 21/tcp open ftp 53/tcp open domain 80/tcp open http 110/tcp open pop-3 111/tcp open sunrpc

Chapitre 2. La collecte dinformations


113/tcp open auth 631/tcp open cups 845/tcp open unknown 901/tcp open samba-swat 10000/tcp open snet-sensor-mgmt
Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds.

Nmap donne un aperu assez complet des diffrents services sexcutant sur la machine dans un

temps assez bref. On peut observer ici que des serveurs FTP, DNS, WEB, POP-3 ... sont en attente de connexions.

2.1.2. Comment marche Nmap ?


Je prsenterai de manire trs succinte Nmap et me focaliserai principalement sur les fonctions les plus utilises. Pour connatre les ports ouverts sur une machine, Nmap procde lenvoi de paquets sur tous les ports de cette machine et analyse les rponses. Bien sr, il y a diffrents types de scans, donc diffrents types denvois et donc, diffrents types de rponses. Nous nous intresserons aux scans utilisant le protocole TCP (les scans UDP et ICMP tant possibles eux aussi).

2.1.2.1. Le scan vanilla TCP connect


Nmap procde lappel de la fonction connect() sur tous les ports de la machine. Ce type de scan

est facilement reprable. Le scan en vanilla TCP connect est le scan par dfaut avec Nmap, la commande est :
[root@nowhere.net /root]# nmap [ip de la machine cible] ou [root@nowhere.net /root]# nmap -sT [ip de la machine cible]

2.1.2.2. Les scans furtifs


Nous rentrons maintenant dans une classe de scans plus difciles dtecter : Le scan en connexion demi-ouverte ou "Syn-scan"
Nmap envoie sur chaque port un paquet TCP avec le ag SYN arm ; si un port est ouvert, il renverra un paquet avec les ags SYN et ACK arms. Illustration :

La commande se fait par lappel de nmap avec loption -sS : 4

Chapitre 2. La collecte dinformations


[root@nowhere.net /root]# nmap -sS [adresse IP de la machine cible]

Les scans Xmas, FIN et NULL Le scan FIN consiste en lenvoi de paquets TCP avec seulement le ag FIN arm. La commande se fait par lappel de nmap avec loption -sF :
[root@nowhere.net /root]# nmap -sF [adresse IP de la machine cible]

Le scan NULL consiste en lenvoi de paquets TCP avec seulement le ag NULL arm. La commande se fait par lappel de nmap avec loption -sN :
[root@nowhere.net /root]# nmap -sN [adresse IP de la machine cible]

Le Xmas scan (traduisez le scan de Nol) consiste en lenvoi de paquets TCP avec les ags FIN/URG/PUSH arms. La commande se fait par lappel de nmap avec loption -sX :
[root@nowhere.net /root]# nmap -sX [adresse IP de la machine cible]

Pour ces trois types de scans, les systmes rpondent avec un paquet RST si le port est ferm et ne rpondent pas si le port est ouvert. Le NULL scan ne fonctionne pas contre des plateformes Microsoft. Illustration :

2.1.3. La dtermination du systme dexploitation avec Nmap


Si on lance Nmap avec loption -O :
[root@nowhere.net /root]# nmap -O 192.168.0.1 Starting nmap 3.48 ( http://www.insecure.org/nmap/ ) Interesting ports on (192.168.0.1): (The 1647 ports scanned but not shown below are in state: closed) PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 53/tcp open domain 80/tcp open http 113/tcp open auth 139/tcp open netbios-ssn 445/tcp open microsoft-ds 515/tcp open printer 587/tcp open submission 901/tcp open samba-swat Device type: general purpose Running: Linux 2.4.X (1) OS details: Linux 2.4.20 - 2.4.21 w/grsecurity.org patch Uptime 76.872 days (since Tue Sep 2 15:20:23 2003) Nmap run completed -- 1 IP address (1 host up) scanned in 7.030 seconds

Chapitre 2. La collecte dinformations (1) Notez bien cette ligne : Linux 2.4.X.
Nmap parvient dterminer le systme dexploitation tournant sur la machine cible. La machine cible utilise un noyau Linux 2.4.21-grsec. Nmap ne sest pas tromp.

Il faut savoir que chaque systme dexploitation construit ses paquets dune manire bien particulire. Certains champs au niveau de la couche IP ou TCP sont propres chaque systme dexploitation. Nmap contient une base de donnes dun grand nombre de systmes. Nmap envoie donc des paquets tests la machine cible et compare les paquets reus en rponse ceux de sa base de donnes et en dduit le type de systme. Cette base de donnes est mise jour en fonction des diffrentes version de Nmap.

2.1.4. Quel est lintret dutiliser Nmap ?


Nmap permet de pouvoir prvoir les futures attaques, et aussi de pouvoir connatre quels services

tournent sur une machine. Une installation faite un peu trop vite peut laisser des services en coute (donc des ports ouverts sans que cela ne soit ncessaire) et donc vulnrables une attaque. Nhsitez pas utiliser Nmap contre vos serveurs pour savoir quels ports sont en coute.
Nmap est un logiciel trs complet et trs volutif, et il est une rfrence dans le domaine du

scanning.

2.1.5. Comment sen protger ?


Congurer votre pare-feu pour empcher les scans : Cette commande permet de dtecter lenvoi un grand nombre de paquets TCP avec les ags FIN et/ou SYN et/ou ACK et/ou RST arm(s). Vriez que votre pare-feu (si ce nest pas iptables) supporte la dtection de scans.

[root@nowhere /root]# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s

2.1.6. Documents

Je vous conseille de lire Utiliser iptables :Spcications de ltrage (http://www.linux-france.org/prj/inetdoc/guides/packet-ltering-HOWTO/packet-lteringHOWTO-7.html#ss7.3). Divers articles cris par le dveloppeur de Nmap sur le scanning (en anglais) : The Art of Port Scanning (http://www.phrack.org/show.php?p=51&a=11), Remote OS detection via TCP/IP Stack FingerPrinting (http://www.phrack.org/show.php?p=54&a=9) et ICMP based remote OS TCP/IP stack ngerprinting techniques (http://www.phrack.org/show.php?p=57&a=7).

2.2. Identier les versions des logiciels en coute


Maintenant que notre pirate connat les diffrents services en coute, son objectif va tre de dcouvrir les noms et les versions des logiciels utiliss pour assurer ces services. Lobjectif de ce chapitre est de prsenter une parade pour viter de donner trop dinformations sur votre systme. Le pirate peut dj essayer de se connecter sur diffrents ports grce aux programmes clients associs pour glaner des informations. Rien que telnet donne beaucoup dinformations :
[root@nowhere.net /root]# telnet 192.168.1.1 Trying 192.168.1.1... Connected to 192.168.1.1.

Chapitre 2. La collecte dinformations


Escape character is "CTRL-C". Welcome to muetdhiver Linux Mandrake release 7.2 (Odyssey) for i586 Kernel 2.2.17-21mdk on an i586 login :

Avec la rponse :
1,0,0Linux Mandrake release 7.2 (Odyssey) for i586 Kernel 2.2.17-21mdk on an i586

Trop de renseignements apparaissent. Mme si le port telnet est ferm, le pirate peut glaner dautres informations sur les autres services. Pour cela, il peut procder une connexion telnet sur le port associ un autre service en coute. Exemple de connexion telnet sur le port FTP (port 21) :
[root@nowhere.net /root]# telnet 192.168.1.1 21 Trying 192.168.1.1... Connected to 192.168.1.1. Escape character is CTRL-C. 220 ProFTPD 1.2.5rc1 Server (ProFTPD Default Installation) [neuromancer]

La ligne qui nous intresse le plus est celle-ci :


220 ProFTPD 1.2.5rc1 Server (ProFTPD Default Installation) [neuromancer]

La version du logiciel nous est donne. Le pirate va alors rechercher des informations sur les faiblesses de scurit de celui-ci. Cependant, sur certains services, le client telnet sera inefcace. Le pirate peut alors utiliser un programme conu pour crire et lire de donnes sur machine cible et sur le port voulu. Ces programmes permettent denvoyer des scripts directement sur le logiciel souhait sans se soucier des limites protocolaires. Le plus rput de ces programmes est sans doute Netcat.

2.2.1. Netcat
Netcat permet dtablir une connexion (TCP ou UDP) sur un port souhait et dy envoyer ou dy

recevoir des donnes. Voici un exemple :


[root@nowhere.net /root]# nc 192.168.1.1 21 220 ProFTPD 1.2.5rc1 Server (ProFTPD Default Installation) [neuromancer]

On obtient directement la version du logiciel utilis. Netcat (http://packetstormsecurity.nl/UNIX/netcat/) comporte plein dautres fonctionnalits (comme lenvoi de scripts ...). Le pirate na plus qu trouver une faille applicative (voir chapitre suivant) sur le logiciel correspondant.

2.2.1.1. Comment sen protger ?


Retirer les bannires donnant les versions de logiciel et les messages daide ou de bienvenue dun service rseau en coute qui peuvent donner des informations sur votre systme. Utilisez netcat contre vos serveurs pour reprer les services trop bavards.

Chapitre 3. Les failles applicatives


Introduction
Nous allons aborder dans ce chapitre les failles lies aux applications utilises. Nous nous focaliserons principalement sur les failles logicielles : les failles applicatives. Ces failles peuvent tre de natures diverses : problmes de conguration, problmes au niveau du code du logiciel, problmes lis de mauvaises interprtations de commandes ou de mauvaises excutions de scripts.

3.1. Les installations par dfaut


Lors dune installation, beaucoup de services peuvent tre installs par dfaut (un serveur Web, FTP ...). Ces services peuvent contenir les diffrents types de failles introduites auparavant. Limportant est de bien contrler lors de linstallation, les services qui seront installs sur le systme. Pour tre bien sr de soi, il est aussi recommand de scanner la machine pour voir ce qui y tourne. Voir Section 2.1. Mme si certains logiciels ne comportent pas de failles connues, ils peuvent quand mme donner des informations aux pirates (voir section [FIXIT] ).

3.2. Les mauvaises congurations


Lorsquune application est mal paramtre, elle peut laisser laccs libre certaines bases de donnes sensibles (chiers de mots de passe, dutilisateurs) ou de permettre dexcuter des commandes ou des scripts malveillants. Il est important de bien lire le manuel avant dactiver un service (RTFM !) et de bien dnir qui fait quoi. Ce principe est simple : il suft de bien dnir les utilisateurs et les groupes et de limiter leurs droits sur certains types de chiers et certaines oprations dexcution de commandes systme. Le plus important est de restreindre au maximun les accs certains chiers sensibles et aux commandes systmes.

3.3. Les bogues


Les bogues sont dus des erreurs de programmation. Les bogues font apparatre diffrents types de problmes de securit :

3.3.1. Des dnis de services applicatifs


Ce type de faille empche le logiciel de fonctionner et ainsi de rpondre aux requtes demandes (do lappellation dni de service). La technique est simple, il suft dutiliser un bogue connu qui va faire planter le logiciel assurant un service.

3.3.2. Outrepassement de droits


Les bogues de type dpassement de buffer ou dexploitation de bogues de format posent de gros problmes de scurit. Ils visent majoritairement des applications fonctionnant avec les accs administrateur (setuid root) pour permettre un attaquant dobtenir un interprteur de commande au niveau administrateur (uid root) sans aucune authentication. 8

Chapitre 3. Les failles applicatives

3.3.3. Les scripts


Malheureusement, une mauvaise programmation de scripts ou lutilisation de fonctions bogues peut tre source de failles de scurit. Il convient dtre trs attentif au niveau du dveloppement dun script.

3.4. Les exploits


Pour exploiter ces bogues, le pirate fait appel des exploits. Ces exploits sont en fait de petits programmes permettant dexploiter une faille dans un but prcis (obtenir un interprteur de commandes, accder certains chiers, augmenter ses droits...). Les exploits peuvent aussi fonctionner distance, pour lobtention dun shell (parfois avec les droits administrateur) sans mot de passe, ni nom dutilisateur.

3.5. Comment sen proteger ?


Face aux multiples failles de scurit des systmes dinformation, seule la veille permet de rpondre aux objectifs de continuit de service. Pour assurer cette veille, les responsables systme et rseau disposent de diffrentes sources dinformations : Les sites dinformations ddies sur Internet Le rseau des Computer Emergency Response Teams publie des rapports sur toute nouvelle faille de scurit. Ces quipes peuvent aussi fournir une assistance ne cas de piratage. A la tte de lInternet, on trouve le CERT (http://www.cert.org) de luniversit de Carnegie Mellon. Au niveau national, on dispose de deux CERTs : le CERT RENATER (http://www.renater.fr/Securite/CERT_Renater.htm) dont les archives des avis de scurit (http://www.cert.uhp-nancy.fr/) sont publiques et le Centre dExpertise gouvernemental de Rponse et de Traitement des Attaques informatiques (http://http://www.certa.ssi.gouv.fr/). Sur un plan moins ofciel, les Archives Bugtraq (http://citadelle.intrinsec.com/mailing/current/HTML/ml_bugtraq/) (en anglais) font partie des meilleures sources sur les nouvelles vulnrabilits. Ces archives donnent des descriptions trs prcises sur des nouvelles failles de scurit. Bugtraq France (http://www.bugtraq-france.com) se veut lquivalent franais. Certains sites comme .:[packet storm security]:. (http://packetstormsecurity.nl/) ou SecurityFocus (http://www.securityfocus.com/) contiennent aussi de nombreuses informations. Le site SecurityFocus (http://www.securityfocus.com/) fournit un moteur de recherches thmatique pratique pour lister les vulnrabilits lies un logiciel. La dtection dintrusion rseau Les systmes de dtection dintrusion rseau (Network Intrusion Detection Systems ou NIDS) peuvent permettre de reprer les attaques exploitant des failles connues sur certains types de logiciels. Les correctifs anti-dbordement mmoire pour le noyau Il existe plusieurs outils complmentaires au noyau Linux qui permettent de limiter les possibilits dexcution dexploits utilisant les bogues de dpassement de mmoire (pile et/ou tas). OpenWall (http://www.openwall.com/) et grsecurity (http://www.grsecurity.org/) sont deux exemples caractristiques. La limitation du nombre de programmes sexcutant avec les droits administrateur Il est toujours bon de rprer les programmes sexcutant avec les droits administrateur. Ainsi, vous pouvez changer leurs droits pour quils ne deviennent pas un point critique pour 9

Chapitre 3. Les failles applicatives la vulnrabilit du systme. Sous linux, la simple commande : # find / -perm +6000 vous permettra de lister tous les programmes sexcutant avec les droits administrateur.

10

Chapitre 4. Les outils indispensables pour la protection


Introduction
Les pare-feux (rewalls), les tunnels et les systmes de dtection dintrusion aux niveaux hte et/ou rseau (IDS : Intrusion Detection System/NDIS : Network Intrusion Detection System) sont des outils indispensables pour dtecter, parer ou viter de nombreuses attaques. Nous les dcrirons dans ce chapitre, ainsi que la manire de les utiliser de faon optimale.

4.1. Le pare-feu rewall


La conguration dun pare-feu peut savrer tre un sujet trs difcile traiter. Cette conguration est surtout tablie en fonction de vos besoins personnels. Lobjectif de ce chapitre est de donner des conseils suivre pour bien utiliser un pare-feu. Ensuite, nous nous intresserons aux diffrentes mthodes dattaques contre les pare-feux.

4.1.1. La conguration
Pour bien congurer son pare-feu, il suft de bien respecter les conseils suivants :

Essayez de limiter laccs votre rseau des utilisateurs connus utilisant une adresse IP statique. Vous pourrez ainsi rejeter toutes les autres requtes venant dutilisateurs utilisant une adresse IP non autorise. Vous effectuez de la sorte un ltrage au niveau IP. Fermez tous les ports en coute sur les diffrents serveurs et ouvrez seulement ceux dont vous avez besoin. Filtrez ces ports, cest dire rejetez toutes les autres requtes sur les autres ports que ceux en coute. Empchez toutes les connexions sortantes sur des services non autoriss. Pour cela, il suft de dnir un nombre limit de services auxquels les serveurs et les clients peuvent accder (mail, ftp, web...). Ensuite, il faut congurer le rewall pour rejeter les connexions depuis lintrieur vers lextrieur sur des services diffrant de ceux dnis.

4.1.2. Les attaques contre les rewalls


La premire tape lors dune attaque est de dterminer les rgles actives sur le pare-feu. Le but est simple : savoir quels ports ne sont pas ltrs.

4.1.2.1. Avec le scanner


Nmap peut dterminer quels ports sont ou ne sont pas ltrs. Voici un exemple :
[root@nowhere.net /root]# nmap 192.168.1.2 Starting nmap V. 2.54BETA31 ( www.insecure.org/nmap/ ) Interesting ports on (192.168.1.2) : (The 1549 ports scanned but not shown below are in state : closed) Port State Service 21/tcp filtered ftp 22/tcp filtered ssh 111/tcp open sunrpc 515/tcp open printer 1024/tcp open kdm Nmap run completed -- 1 IP address (1 host up) scanned in 1 second

11

Chapitre 4. Les outils indispensables pour la protection Les ports 21 (ftp) et 22 (ssh) sont ltrs.

4.1.2.2. Comment sen protger ?


Protgez-vous contre le scanning (voir section FIXIT scan). Si le scan ne marche pas, dautres mthodes peuvent tre utilises comme le rewalking.

4.1.2.3. Le rewalking
Cette technique de dvoilement des rgles de rewalling repose sur un unique champ de len-tte IP, le TTL (Time To Live), ce champ reprsentant la dure de vie dun paquet. Il est x ds son envoi par la pile de protocole du systme et est diminu dune unit chaque fois quil traverse un quipement assurant le routage ; quand ce champ est gal 0, le paquet est jet la poubelle. Chaque passage dun routeur un autre est appel un saut. Cest ce champ qui est utilis par le logiciel traceroute. Pour tracer une route, le logiciel envoie un premier paquet UDP avec un TTL de 1 ; au premier routeur, le TTL est dcrment 0. Le routeur renvoie un message ICMP de type 11 ICMP TTL Exceeded, ce qui permet de rcuprer ladresse du premier routeur. Ensuite traceroute va envoyer un deuxime paquet avec un TTL de 2, il sera dcrment au passage du premier routeur (TTL=1). Le deuxime routeur va le recevoir et le dcrmenter : le champ TTL sera de nouveau gal 0. Le deuxime routeur renverra donc un message derreur : on rcupre ainsi ladresse du deuxime routeur. Si il y a N sauts jusquau rseau nal, on ritre lopration N fois. On peut utiliser cette technique avec diffrents protocoles : UDP, TCP, ICMP. Le rewalking repose sur cette technique pour dterminer les rgles actives sur un pare-feu. rewalk (http://www.packetfactory.net/rewalk/), le programme implmentant le rewalking, dtermine le nombre de routeurs entre la machine source et la machine cible (situe derrire le rewall). Ensuite, il envoie des paquets tests avec un TTL gal ce nombre de routeurs + 1. Si le paquet est accept, il traverse le rewall et on obtient une rponse ; sinon il ny a aucune rponse. rewalk (http://www.packetfactory.net/rewalk/) envoie diffrents types de paquets (TCP, UDP) pour dterminer les rgles de rewalling. Nanmoins, de nombreux paramtres comme la congestion du rseau, le nombre de routeurs sparant la cible et lmetteur peuvent fausser lanalyse.

4.2. Les systmes de dtection dintrusion (HIDS/NIDS)


Systme de dtection dintrusion Intrusion Detection System IDS Les outils les plus pratiques ! Ces utilitaires permettent de dtecter une attaque et de vous en informer. Un IDS analyse tout ce qui se passe sur une station. Il dtecte les outrepassements de droits (obtention du compte root dune manire suspecte) et dautres types dattaques, il contient une base de donnes sur diffrentes vulnrabilts. Systme de dtection dintrusion rseau Network Intrusion Detection System NIDS Un NIDS travaille de la mme manire, mais sur les donnes transitant sur le rseau. Il peut dtecter en temps rel une attaque seffectuant sur lune des vos machines. Il contient une base de donnes avec tous les codes malicieux et peut dtecter leurs envois sur une des machines. Le NIDS travaille comme un sniffer (voir section FIXIT sniffer), sauf quil analyse automatiquement les ux de donnes pour dtecter une attaque. 12

Chapitre 4. Les outils indispensables pour la protection Cette section prsentera deux systmes de dtection dintrusion : un NIDS appel Snort et IDS hybride Prelude. Il est noter que ces outils sont distribus comme logiciel libre. Je ne rappellerai pas que le logiciel libre a une avance considrable dans le domaine de la scurit par rapport ses concurrents propritaires.

4.2.1. Prelude-NIDS
Prelude Hybrid IDS (http://www.prelude-ids.org/) est un des dtecteurs dintrusions les plus connus. Prelude est disponible et libre sur les plateformes Linux, FreeBSD et Windows. Prelude possde une achitecture modulaire et distribue. Modulaire, car ses composants sont indpendants, et peuvent tre facilement mis jour. Distribue, car ces composants indpendants interagissent les uns avec les autres. Cela permet davoir divers composants installs sur diffrentes machines et de rduire ainsi la surchage dapplications. Ces diffrents composants sont les sondes et les managers. Les sondes peuvent tre de deux types : rseau ou local. Une sonde rseau analyse tout le trafc, pour y dtecter dventuelles signatures dattaques. La sonde locale assure la surveillance dune seule machine, il analyse le comportement du systme pour y dtecter des tentatives dexploitation de vulnrabilits internes. Les sondes signalent les tentatives dattaques par des alertes. Ces alertes sont reu par le manager qui les interprte et les stocke. Pour une description complte de Prelude (installation, conguration et utilisation) consultez ce document : http://lehmann.free.fr/PreludeInstall/InstallPrelude.html

4.2.2. Snort
Snorttlchargeable librement sur www.snort.org est un NIDS lui aussi. Il nest pas structur

comme Prelude. Snort est un programme "monolithique", il ne comporte pas de module comme Prelude, ce qui peut rendre son implmentation dans un rseau un peu moins souple que Prelude. Snort fonctionne en trois modes (Sniffer, PacketLogger et NIDS). Les deux premiers modes ne sont pas intressants pour la dtection dintrusion. Le troisime mode permet lui danalyser le trac rseau pour y dtecter dventuelles attaques. Pour une description complte de Snort (installation, conguration et utilisation) consultez ce site : http://www.snort.org/docs/ (en anglais).

4.3. Le tunneling
Nous allons dcrire dans cette section diffrentes mthodes pour scuriser vos transactions, cest--dire crer un VPN (Virtual Private Network). Un rseau priv virtuel (VPN) est utilis pour tablir des communications scurises en sappuyant sur un rseau existant non scuris. Le principal outil utilis pour la cration de VPN est IPsec. IPsec est facultatif sur IPv4 mais est obligatoire sur IPv6. IPsec a dautres avantages que la scurisation du trac, il permet par exemple dconomiser la bande passante grce la compression des en-ttes des paquets. IPsec fonctionne sous deux modes diffrents : le mode transport et le mode tunnel. Ces deux modes seront dcris dans ce qui suit. IPsec est compos de plusieurs protocoles diffrents : AH, ESP, IPcomp et IKE.

4.3.1. Le protocole AH
Le protocole AH (Authentication Header) permet de garantir lauthenticit des paquets changs en leur inscrivant une somme de contrle (de len-tte IP jusqu la n du paquet) chiffre. 13

Chapitre 4. Les outils indispensables pour la protection

4.3.2. Le protocole ESP


Le protocole ESP (Encapsulating Security Payload) encrypte toutes les donnes du paquet garantissant leur condentialit.

4.3.3. Le protocole IPcomp


Le protocole IPcomp (IP payload compression) permet de compresser un paquet avant de le chiffrer avec ESP.

4.3.4. Le protocole IKE


Le protocole IKE (Internet Key Exchange) est utilis pour lchange des cls utiliss pour lencryptage.

4.3.5. Les deux modes de fonctionnements de IPsec


AH, ESP et IPcomp fonctionnent dans le mode transport ou le mode tunnel. Le mode "transport" encrypte directement les changes entre deux machines. Le mode "tunnel" encapsule les paquets encrypts dans de nouveaux en-tte IPv4/IPv6. Il est conu pour les passerelles VPN.

4.3.6. Les limitations dIPsec


IPsec pose quelques problmes dus son implmentation. Certains problmes apparassent au niveau des messages de broadcast et multicast. IPsec est difcile ltrer sur les rewalls existants. Il est aussi impossible grer pour les translations dadresse (NAT).

4.3.7. Documents
Description gnrale des tunnels et implmentation sous Linux : http://www.miscmag.com/articles/index.php3?page=315 http://www.securiteinfo.com/crypto/IPSec.shtml Description gnrale des tunnels et implmentation sous Windows : http://www.laboratoire-microsoft.org/articles/network/ipsec/

4.4. Nessus
Nessus est un outil de scurit permettant de scanner une ou plusieurs machines. Il permet aussi de tester diffrentes attaques pour savoir si une ou plusieurs machines sont vulnrables. Il est trs utile lors de tests de pntration (pen test) et fait gagner un temps incroyable. Nessus se compose dune partie serveur (qui contient une base de donnes regroupant diffrents types de vulnrabilits) et une partie client. Lutilisateur se connecte sur le serveur grce au client et aprs authentication, il ordonne au serveur de procder aux tests dune ou plusieurs machines. Le client reoit ensuite les rsultats du test. Nessus est disponible sous Linux et Windows, et il est entirement gratuit.

4.4.1. Pour obtenir tout sur Nessus


Pour tlcharger les sources, binaires, ou diffrents documents concernant Nessus, consultez le site : http ://www.nessus.org

14

Chapitre 4. Les outils indispensables pour la protection

4.5. User Mode Linux - UML


User Mode Linux est un dispositif permettant de laner un ou plusieurs noyau(x) linux dans lespace utilisateur (comme un simple programme). En clair, il permet davoir plusieurs machines virtuelles sur une seule machine physique hte excutant Linux. Les avantages sont nombreux :

Si une machine virtuelle plante, le systme hte nest pas affect. Un utilisateur sera root sur une machine virtuelle, mais pas sur le systme hte. Il permet aussi de tester diffrents paramtres noyaux sans se soucier des consquences.

User Mode Linux permet notamment de saffranchir de chroot (pour, par exemple, la ralisation de serveurs FTP) et de toutes ses failles de scurit.

4.5.1. Documents
La page web de User Mode Linux : http://user-mode-linux.sourceforge.net Un autre lien intressant pour User Mode Linux et la scurit : http://www.rstack.org/oudot/20022003/7/7_rapport.pdf

15

Chapitre 5. Surveillance - Dissimulation - Maintien daccs


Introduction
Nous prsenterons dans ce chapitre les programmes utiliss par les pirates pour dissimuler, surveiller et maintenir leur accs sur un systme dinformation. Nous prsenterons les moyens de sen protger.

5.1. Les chevaux de Troie


Le principe du Cheval de Troie est facile comprendre. Un programme ou un code malveillant est intgr une application par ajout ou par modication de son code. Ainsi lors de lexcution de ce programme inoffensif, le bout de code malveillant pourra excuter des commandes spciques (rcupration de chiers de mot de passe, altration du systme, etc.) linsu de lutilisateur.

5.1.1. Comment sen protger ?


La plupart des antivirus peuvent dtecter les chevaux de Troie. Nanmoins, comparer la signature numrique accompagnant les chiers (cela se fait par un calcul reposant sur un algorithme de chiffrement appliqu lensemble du chier) avec la sienne permet de savoir directement si lon est infect. Il est aussi conseill de consulter les sites suivants pour vrier que vos programmes ne contiennent pas de chevaux de Troie :

Le CERT (http://www.cert.org) (Computer Emergency Response Team) est un organisme soccupant des problmes de scurit sur Internet. Il recense les diffrents problmes de scurit et publie des articles (advisories) pour les dcrire. Bugtraq : http://citadelle.intrinsec.com/mailing/current/HTML/ml_bugtraq/

5.2. Les backdoors


Les backdoors sont des accs cachs sur un systme ou sur une application. Le principe dune backdoor est similaire celui du cheval de Troie. Lobjectif est de modier ou dutiliser un programme pour accder discretement un ordinateur distant, modier le comportement dun programme, devenir administrateur.

5.2.1. Les backdoors prsentes dans les logiciels.


Parfois, certains logiciels (messagerie, utilitaires systmes) peuvent contenir des backdoors, cest--dire que, pour certaines commandes suivies darguments particuliers ou avec un mot de passe bien dni, le logiciel peut avoir un comportement diffrent (permettre lutilisateur de devenir root, renvoyer un shell systme lutilisateur, etc.). Ces "trappes" sont inclues directement dans le code du logiciel. Certains dveloppeurs sont soucieux de possder un accs sur tous les systmes utilisant leurs logiciels. Par exemple, Ken Thompson, lun des pres dUNIX, avoue avoir modi lapplication /bin/login en permettant laccs direct au systme par la saisie dun mot de passe prcompil en dur. Thompson pouvait ainsi visiter tous les systmes utilisant son application modie. Parfois, certains pirates diffusent des applications infestes de backdoors. 16

Chapitre 5. Surveillance - Dissimulation - Maintien daccs

5.2.1.1. Comment sen protger ?


Il convient de tlcharger ses applications sur le site du distributeur ou du programmeur. Utiliser des serveurs de tlchargement non lis lauteur de lapplication peut se rlver dangereux. Il est aussi recommand de vrier les checksums sil sont donns par le dveloppeur. Il est aussi bon de consulter des listes de diffusion comme bugtraq pour savoir si la version de logiciel que vous utilisez ne comporte pas de backdoors.

5.2.2. Les backdoors ddies aux connexions distance


Ces backdoors peuvent trs bien faire partie de la premire catgorie. Comme il la t montr, certains logiciels peuvent autoriser un accs pour un mot de passe particulier. Toutefois, ce paragraphe va se focaliser sur des applications en coute sur un port bien dni utilises par les pirates pour obtenir un shell. Un logiciel pralablement install par le pirate est en attente de connexion sur un port discret. La plupart de ces programmes sont en coute sur des numros de ports ayant une valeur assez leve (suprieur 5000). Le pirate na plus qu se connecter sur ce programme pour rcuprer son accs sur la machine.

5.2.2.1. Comment sen proteger ?


Nmap peut se rlver tre une aide prcieuse pour les dbusquer. Si, en procdant au scan dune

machine, vous constatez quun port non autoris est en coute, il serait bon de vrier celui-ci. Les sites consulter :

Le CERT (http://www.cert.org) en anglais. Bugtraq : http://citadelle.intrinsec.com/mailing/current/HTML/ml_bugtraq/ (en anglais) et http://www.bugtraq-france.com.

5.3. Les Rootkits


Le rootkit est un programme permettant dautomatiser la dissimulation et leffacement des traces dun pirate sur une machine. Lobjectif dun rootkit est de modier les commandes permettant dadministrer le systme, de cacher les ports ouverts par le pirate. Les premiers rootkits taient assez basiques, ils modiaient juste les commandes ls, ps, netstat. Ladministrateur pouvait dtecter ces modications sur les logiciels concerns. Alors une seconde gnration de rootkits apparut. Il faut savoir que des commandes comme ps, ls ... font appels des bibliotheques partages pour fonctionner. Les nouveaux rootkits modiaient donc le code de ces bibliothques pour modier le comportement de ces commandes lavantage du pirate. Encore une fois, ceci tait dtectable. Donc une troisime gneration de rootkits est ne an de modier directement le comportement du noyau, par le biais de modules chargs en mmoire (LKM). Cest lheure actuelle la derniere gnration. Diffrents rootkits sont disponibles sur Linux. Je ne donnerai (volontairement) pas dans cette partie une description complte de lutilisation des rootkits. Cela na aucun intert pour ce guide. La plupart des rootkits utilisent le principe des backdoors (Section 5.2) pour permettre au pirate de se connecter selon son envie sur un systme.

17

Chapitre 5. Surveillance - Dissimulation - Maintien daccs

5.3.1. Comment sen protger ?


1. Les checksums. Une base de donnes de checksums sur les diffrents chiers systme peut dj constituer une bonne parade. Je vous conseille deffectuer des checksums la n dune installation sur les diffrents chiers comme ls, ps, stat ifcong, etc. et sur les diffrentes bibliothques partages. Cette base de donne devrait tre stocke sur un CDROM ou tout autre support non rinscriptible. 2. Compiler les programmes vitaux en statique. Comme je lai dit prcdemment, certaines commandes font appels des librairies partages et des utilitaires comme "md5sum" (qui sert faire des checksums) sous Linux font appels des librairies partages. Do son comportement pourrait tre modi indirectement par un rootkit attaquant les librairies partages. Pour viter ce genre de dsagrement, compilez une partie des programmes vitaux en statique, ainsi vous disposerez dune trousse de secours en cas dinfection par rootkits. Bien sr, pour compiler les programmes vitaux en statique, faut-il encore disposer dun OS qui permette daccder aux sources de ces programmes vitaux... 3. Chkrootkit. Chkrootkit (pour CHecK ROOTKIT) vous permet de dtecter la prsence dun rootkit, il fonctionne sous Linux (FreeBsd...) et est tlchargeable librement sur www.chkrootkit.org. 4. Compilez votre noyau en statique. Vous viterez ainsi le chargement de modules externes.

5.4. Linterception des mots de passe en rseau.


Une autre technique utilise pour collecter des informations (mots de passe par exemple) est lutilisation dun sniffer. Le sniffer place la carte rseau dans le mode transparent (promiscious), ce qui veut dire que la carte intercepte tous les paquets sur le segment rseau, mme ceux qui ne lui sont pas destins. Plusieurs types de sniffers existent ; certains afchent les donnes interceptes brutes comme Tcpdumpdisponible sur www.tcpdump.org, ce qui donne lieu des chiers de log trs volumineux. Dautres sniffers permettent de rcuprer les mots de passe en les afchant directement lcran associ avec le login, ladresse du client et celle du serveur (comme dsniffdisponible sur www.packetstormsecurity.org). Etherealdisponible sur www.packetstormsecurity.org permet par exemple dafcher toutes les transactions ayant cours sur le rseau. Cependant, le sniffer reste un outil puissant pour la dtection dintrusion car, premirement, il garde une trace de tous les changes ayant cours sur le rseau. Deuximent, il se rvle trs utile pour dmasquer un scan (un grand nombre de paquets envoys dun seul coup), de tracer ladresse dun pirate, de voir si des commandes particulires sont demandes sur le reseau. La plupart des rootkits contiennent un programme pour sniffer. Les NDIS utilisent un sniffer pour analyser les transactions rseau.

5.4.1. Comment sen protger ?


L, cest trs difcile. Un sniffer est passif, il nenvoie aucun paquet, il ne fait quintercepter. Mais la carte rseau tant en mode transparent, son comportement sen trouve chang, son temps et sa faon de rpondre certains paquets sont modis. On peut dtecter la prsence dun sniffer grce ce changement de comportement. Le programme AntiSniffdisponible sur windows NT et Linux ladresse http ://packetstormsecurity.nl/sniffers/antisniff/ de Lopht Heavy Industries 18

Chapitre 5. Surveillance - Dissimulation - Maintien daccs peut envoyer des paquets "tests" et en dduire si la carte est en mode transparent donc susceptible de sniffer. Une deuxime parade pour djouer le snifng est de "tunneler" toutes les transactions. Cela veut dire encrypter toutes les transactions rseaux. Utiliser IpvSec ou des VPN, ssh sur votre rseau savre tre une dfense efcace contre le snifng. Lutilisation de tunnels est traite dans la section #x1-460004.3.

19

Chapitre 6. Dispositifs destructeurs


Introduction
Les dispositifs destructeurs sont utiliss pour paralyser, saturer ou dtruire un systme dinformation. Ils constituent lespce la plus nuisible dans le domaine de la scurit car ils peuvent tre la source de perte de donnes. Le but de ce chapitre est dexpliquer leurs fonctionnements et la faon de les combattre.

6.1. Le virus
Le virus est un programme dont le seul but est de consommer ou de paralyser des ressources systme. Le virus sautoduplique pour mieux infecter le systme, il se propage en infectant tour tour les chiers. Les effets dune contamination varient : chiers effacs, disque dur format, saturation des disques, modication du MBR, etc. La grande majorit dentre eux existent sur les plates-formes Microsoft, ils infectent en particulier les chiers COM ou EXE. De plus, de nouvelles formes sont apparues comme les macro-virus qui attaquent les chiers de donnes (word ou excel). Les systmes UNIX ne sont pas pargns ! Les administrateurs UNIX doivent faire face des virus comme Winux. Nanmoins, la gestion des droits sous UNIX se rvle tre un facteur limitant pour la propagation de virus. Les virus sont de plus en plus volus, ils peuvent sautomodier pour chapper une ventuelle dtection (virus polymorphes). Dautres types peuvent tenter de leurrer le systme en sinstallant dans des secteurs dfecteux ou non utiliss (virus furtifs) ...

6.1.1. Comment sen protger ?


Les anti-virus commerciaux comme Norton Antivirus ou McAfee VirusScan sont de bons outils pour traquer les virus. Toutefois, il convient de les mettre rgulirement jour pour proter pleinement de leurs capacits. Il est aussi important de suivre lvolution et lapparition de nouveaux virus ; pour cela, consulter les sites (ainsi que pour tous les autres dispositifs destructeurs dcrits dans ce chapitre) :

Le CERT (http://www.cert.org) en anglais. Les sites du CNRS : http://www.services.cnrs.fr/wws/info/sos-virus et http://www.cnrs.fr/Infosecu/Virus.html.

6.2. Les vers


Les vers sont du mme acabit que les virus, sauf quils nutilisent pas ncessairement un chier pour se propager. Ils sont aussi capables de se dupliquer et de se dplacer au travers dun rseau informatique. Les vers utilisent diffrents supports pour se propager. Les vers simples utiliseront des failles propres certains logiciels (exemple du ver de Morris en 1988 qui paralysa une grande partie de lInternet). Les macro-vers utiliseront les pices jointes contenant des documents bureautiques infects (exemple du ver Nimda). Les vers demail sont contenus dans une pice jointe comprenant un code malicieux excut automatiquement par le logiciel de courrier lectronique ou manuellement par lutilisateur.

20

Chapitre 6. Dispositifs destructeurs

6.2.1. Comment sen protger ?


Comme pour les virus, lantivirus se rvle tre une parade efcace. Consultez les listes cites dans la section #x1-730006.1.

6.3. Les bombes logiques


Les bombes logiques sont aussi nfastes que les virus ou les vers et sont la cause de dgats similaires. La diffrence est que la bombe logique a besoin dun dtonateur pour sactiver, cest--dire quelle attend une date ou une action bien prcise de lutilisateur pour exploser.

6.3.1. Comment sen protger ?


Utilisez un anti-virus performant (Mc Afee, Norton ...) rgulirement mis jour. Consultez les sites dcrits dans la section #x1-730006.1.

6.4. Les attaques par dni de services


Ce type dattaque est la plus nervante qui soit. Elles ont pour but de saturer le rseau ou le systme.

6.4.1. Le SYN ood


Cette technique consiste saturer un serveur en envoyant une multitude de paquets TCP avec le ag SYN arm, cela aura pour but de crer une multitude de connexions demandant un grand nombre de ressources systme. La plupart des attaques par SYN-ood sont bien dtectes par diffrents rewalls.

6.4.1.1. Comment sen protger ?


Exemple avec iptables limitant les demandes dtablissment de connexion TCP acceptes une par seconde:
[root@nowhere /root]# iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -J ACCEPT

Pour plus de details sur cette commande, je vous conseille de lire Utiliser iptables :Spcications de ltrage (http://www.linux-france.org/prj/inetdoc/guides/packet-ltering-HOWTO/packetltering-HOWTO-7.html#ss7.3).

6.4.2. LUDP Flood


De la mme manire que pour le SYN ooding, lattaquant envoie un grand nombre de requtes UDP sur une machine. Le trac UDP tant prioritaire sur le trac TCP, ce type dattaque peut vite troubler et saturer le trac transitant sur le rseau. La plus clbre attaque utilisant lUDP-ooding est le Chargen Denial of Service Attack. Un pirate envoie une requte sur le port echo dune machine A indiquant comme port source celui du port chargen dune machine B. Le service chargen de la machine B renvoie un caractre sur le port echo de la machine A. Ensuite le service echo de A renvoie ce caractre sur chargen. chargen le reoit, en ajoute un autre et les renvoie sur le port echo de A qui les renvoient son tour sur chargen ... et cela continue jusqu la saturation de la bande passante. 21

Chapitre 6. Dispositifs destructeurs

6.4.2.1. Comment sen protger ?


Il est conseill de dsactiver les services chargen et echo. Si vous ne voulez pas dsactiver chargen et echo, congurez votre rewall pour viter le Chargen Denial of Service Attack en limitant le trafc UDP. Exemple avec iptables :
[root@nowhere /root]# iptables -A FORWARD -p udp -m limit --limit 1/second -J ACCEPT

6.4.3. La fragmentation de paquets


Plus connu sous le nom de Teardrop Attack, Bonk ou encore Boink, cette attaque utilise une faille propre certaines piles TCP/IP. Cette vulnrabilit concerne la gestion de la fragmentation IP. Ce problme apparat lorsque la pile reoit le deuxime fragment dun paquet TCP contenant comme donne le premier fragment. La pile TCP/IP peut savrer incapable de grer cette exception et le reste du trac. Cette faille est trs connue sur les piles de Windows 95 et 98.

6.4.4. Ping of death


Le principe est denvoyer un paquet ICMP avec une quantit de donnes suprieure la taille maximale dun paquet IP . Encore une fois, la pile peut savrer incapable de grer cette exception et le reste du trac.

6.4.5. Attaque par rexion : Smurng


Cette attaque est base sur le protocole ICMP. Lorsquon envoie un ping un rseau en broadcast (par exemple 255.255.255.0), le paquet est envoy chacune des machines du rseau. Un pirate envoie un ping en broadcast sur un rseau (A) avec une adresse IP source correspondant celle de la machine cible (B). Le ux entre le port ping de la cible (B) et du rseau (A) sera mulitpli par le nombre de machines sur le rseau (A). Cela conduit une saturation de la bande passante du rseau (A) et du systme de traitement de paquets de (B).

6.4.5.1. Comment sen protger ?


Congurez votre rewall pour limiter le trafc ICMP. Exemple avec iptables :
[root@nowhere /root]# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/second

Pour plus de dtails sur cette commande, je vous conseille de lire Utiliser iptables :Spcications de ltrage (http://www.linux-france.org/prj/inetdoc/guides/packet-ltering-HOWTO/packetltering-HOWTO-7.html#ss7.3).

6.4.6. Dnis de services distribus


Plusieurs types dattaques sont lances en parallle partir de plusieurs sources.

6.4.7. Bombes e-mail


Le mail bombing consiste envoyer de gros ou de nombreux chiers un utilisateur pour saturer sa bote de rception de courrier lectronique. 22

Chapitre 6. Dispositifs destructeurs

6.4.7.1. Comment sen protger ?


La plupart des logiciels de contrle de contenu assure un ltrage du courrier pour dtecter ce type dattaque

23

Chapitre 7. Scurisation des mots de passe


Introduction
Le but de ce chapitre est de donner au lecteur toutes les informations ncessaires sur les techniques utilises pour tester la rsistance des protections par mot de passe. Il faut savoir que les mots de passe utiliss sur un systme dinformation sont encrypts pour garantir leur condentialit. Ces mots de passe encrypts sont stocks dans des listes de mots de passe sur des chiers systmes prdnis. Un pirate peut fort bien rcuprer ces listes et tester la abilit des mots de passe. Il utilise pour cela loutil adquat : un perceur de mot de passe. La plupart des algorithmes dencryptage repose sur lutilisation de fonctions sens unique. Ceci veut simplement dire quil est impossible de dcrypter le mot de passe partir sa forme encrypte. Lattaque consiste alors encrypter diffrentes combinaisons de caractres et de comparer cette forme encrypte celle du mot de passe voulu. Si les deux chanes correspondent, alors la suite de caractres est celle du mot de passe. Il y a deux types dattaques pour le craquage de mots de passe qui seront dnies dans ce chapitre.

7.1. Lattaque par dictionnaire


Le programme utilise une liste de mots prdnis dans un chier externe. Cette liste est appele un dictionnaire ; ces mots sont la plupart du temps ceux provenant dun dictionnaire contenant les mots du langage courant. Le programme les encrypte avec lalgorithme dencryptage adquat un par un et les compare au mot de passe encrypt. Ce type dattaque est trs rapide. Un mot de passe mal choisi est vite dcouvert.

7.2. Le brute forcing


Si lattaque par dictionnaire ne marche pas, le programme peut gnrer des mots de passe avec une suite alatoire de caractres, les encrypter et les comparer au mot de passe dcouvrir. Avec un mot de passe sufsament long (suprieur 8 caractres), cette mthode a peu de chance daboutir. Si, de plus, des caractres spciaux sont ajouts comme des signes de ponctuation, la mthode peut se rveler inefcace. Il existe diffrents logiciels de perage de mots de passe en fonction du type dencryptage ( DES, MD5, special Microsoft ...).

7.3. Tester la abilit de vos mots de passe !


Sous UNIX Sous UNIX, la liste des mots de passe des utilisateurs systme est divise en deux chiers /etc/shadow et /etc/passwd ou runis seulement dans le chier /etc/passwd. Le type dencryptage peut tre du MD5, DESLalgorithme DES a t adopt par la NSA comme standard la n des annes 70. Le DES est distribu publiquement mais il a t dvelopp dans le secret. Certains suspectent le gouvernement amricain de stre reserv une "gche secrte" pour une dcryptage plus rapide, je vous conseille dutiliser dautres algorithmes la place., RSA ... Pour tester la rsistance de vos mots de passe, le logiciel John The RipperJohn The Ripper est disponible sur http ://www.openwall.com/john/ peut savrer tre une bonne aide. Il 24

Chapitre 7. Scurisation des mots de passe supporte un grand nombre dalgorithmes dencryptage, prsente un important paramtrage des attaques. John the Ripper est un programme distribu librement. Sous Windows Pour tester la abilit des mots sous Windows, ladministrateur pourra utiliser le logiciel John the RipperIdem. sur Windows ou sur Unix ou le logiciel LophtCrack de Lopht Heavy Industries Lophtcrack qui, lui, nest pas distribu gratuitement (enn pas pour les versions rcentes). Sous Windows 9x, les mots de passe sont disperss dans le rpertoire racine de windows dans diffrents chiers dexention ".PWL" portant comme nom celui de lutilisateur. Le chiffrement utilis pour gnrer les mots de passe PWL est trs faible. Le programme Cain permet de tester leur abilit.

7.4. Choisir le bon mot de passe


Nutilisez pas des mots de votre language courant ou des suites de chiffres ! Choisissez des mots de passe longs, avec une suite de caractres totalement alatoires et avec des caractres spciaux, alternez les majuscules et les miniscules. Choisissez une phrase et alternez les majuscules et minuscules avec les premires lettres de chaque mot en tenant compte de la ponctuation. Par exemple : A demain, Je tAime mon Amour. donne : Ad,JtAmA, qui est un mot de passe assez costaud.

7.5. Prvenir lutilisateur


Nhsitez pas organiser des runions, faire circuler diffrents documents pour informer vos utilisateurs des problmes de abilit des mots de passe.

25

Chapitre 8. La base des attaques rseaux


Introduction
Dans ce chapitre, nous dcrirons les principes sur lesquels reposent de nombreuses attaques rseaux (notamment celles dcrites dans le chapitre 9), ainsi que les rgles respecter pour les viter ou les parer.

8.1. Dtournement de ux
Les techniques de dtournement de ux servent rediriger le ux rseau vers un client, vers un serveur, ou vers une autre machine.

8.1.1. ARP-Poisoning
Toute carte rseau possde une adresse physique. Cest cette adresse qui lui permet de recevoir les paquets qui lui sont destins sur le rseau local. Cette adresse physique est associe ladresse IP grce au protocole ARP. La table de correspondance entre les adresses IP et les adresses physiques est contenue dans le cache ARP. Lorsquun change doit stablir entre 2 machines du rseau local, ces deux machines envoient des requtes ARP avec ladresse IP du rcepteur, associe un champ vide pour son adresse physique. Ce rcepteur va renvoyer son adresse physique dans une rponse ARP. Si un attaquant envoie un message de rponse ARP avec son adresse physique correspondant ladresse IP du rcepteur, tout le ux IP dirig vers le rcepteur sera ridirig vers lattaquant. On dit quil a empoisonn le cache ARP du recepteur. Illustration :

26

Chapitre 8. La base des attaques rseaux

8.1.1.1. Comment sen protger ?


La solution la plus immdiate consiste saisir manuellement sur chaque poste la table de toutes les adresses physiques prsentes sur le rseau local. Si elle est immdiate, cette solution est quasiment inapplicable compte tenu du nombre dhtes connects au rseau local. Une solution correcte consiste mettre en place un serveur DHCP avec une liste ferme de correspondance entre adresses physiques (MAC) et IP. Relativement la solution prcdente, la liste exhaustive des adresses physiques est centralise sur le serveur DHCP. On peut ensuite congurer la journalisation du service pour que toute requte DHCP relative une adresse MAC inconnue gnre un courrier vers laministrateur systme. Enn, On peut utiliser sous UNIX, un logiciel spcialis : arpwatch (ftp ://ftp.ee.lbl.gov/) qui permet de surveiller tout le trac ARP. Les NIDS peuvent aussi dtecter ce type dattaques (notamment Prelude-IDS).

8.1.1.2. Documents
Larticle Le arp-poisoning (http://www.securite.teamlog.com/publication/6/10/102/) est une bonne introduction la problmatique. La section Addresss Resolution Protocol (ARP) (http://linux-ip.net/html/ether-arp.html) du Guide to IP Layer Network Administration with Linux (http://linux-ip.net/html/index.html) montre toutes les possibilits dinteraction sur le protocole ARP avec le noyau Linux.

8.1.2. Dsynchronisation TCP


LARP-Poisining permet de rediriger tout le trac IP mais, si lattaquant na besoin que du trac TCP, il peut interfrer entre une connexion client-serveur pour rediriger le ux du client vers lui. La synchronisation TCP est assure par les numros de squences TCP. Si, pendant un change, lattaquant envoie des paquets malforms au client avec une adresse IP correspondant celle du serveur en y placant des mauvais numros de squences, le client va croire quil a perdu la connexion et stoppera ses changes avec le serveur. Mais si lattaquant envoie les bons numros de squences au serveur, il rcuprera la connexion pour lui. Illustration :

27

Chapitre 8. La base des attaques rseaux

8.2. Man In the Middle - MITM


Les attaques de type Man-In-the-Middle sont trs faciles comprendre. Man-in-the-Middle signie lhomme du milieu. Cette attaque fait intervenir trois protagonistes : le client, le serveur et lattaquant. Le but de lattaquant est de se faire passer pour le client auprs du serveur et se faire passer pour le serveur auprs du client. Il devient ainsi lhomme du milieu. Cela permet de surveiller tout le trac rseau entre le client et le serveur, et de le modier sa guise pour lobtention dinformations (mots de passe, accs systme, etc.). La plupart du temps, lattaquant utilise les techniques de dtournement de ux dcrites dans les prcdentes sections pour rediriger les ux du clients et du serveur vers lui.

8.2.1. Document
Le document Man-In-the-Middle Attack (http://www.giac.org/practical/gsec/Bhavin_Bhansali_GSEC.pdf) est trs complet sur cette question.

8.3. Encapsulation dIP dans dautres protocoles.


Certains logiciels permettent dencapsuler le protocole IP dans dautres protocoles comme SSH, HTTP, etc.. Ce type dencapsulation peut tre la base de nombreuses attaques rseaux. Par exemple, imaginons cette situation : un pirate veut se connecter sur le port FTP (21) dune machine A dun rseau protg par un rewall B. B nautorise et nassure que le trac HTTP. Si le pirate veut se connecter sur A, il encapsule les paquets destination de A dans des requtes HTTP destines B. B accepte ces paquets car ils reposent sur le protocole HTTP. Si B est mal congur, il enverra A les paquets lui tant destins.

28

Chapitre 9. Description dattaques sur diffrents protocoles


Introduction
Ce chapitre dcrit les failles intrinsques de diffrents protocoles. Intrinsques par le fait quelles ne sont pas lies une faille applicative du client ou du serveur grant ce protocole, mais plutt sa conception. Nous prsenterons aussi la manire de sen protger.

9.1. Dynamic Host Conguration Protocol - DHCP


Le protocole DHCP est utilis pour dlivrer dynamiquement une adresse IP unique pour chaque machine le demandant sur le rseau interne. En clair, si un client interne veut obtenir une adresse IP pour bncier des services rseau, il envoie un message DHCP tout le rseau (broadcast) pour trouver le serveur DHCP. Le serveur DHCP rpondra en lui envoyant tous les paramtres de conguration rseau. Ce service permet dallger la gestion du rseau en vitant davoir des congurations statiques maintenir sur chaque machine. Malheureusement, le protocole DHCP comporte diverses failles que nous allons vous prsenter.

9.1.1. Attaque par puisement de ressources


Comme il la t dcrit, un serveur DHCP possde un stock dadresses IP quil distribue aux diffrents clients. Ce stock est bien sr limit. Il y aura seulement un nombre dni de clients pouvant disposer des diffrentes adresses IP en mme temps. Si le serveur est bien administr avec une liste ferme de correspondances entre adresses MAC et IP aucune attaque par puisement nest possible. Si le service est mal administr ; cest dire que les correspondances entre adresses MAC et IP se font dynamiquement partir dune plage dadresses IP vacantes, le scnario suivant est possible. Si un pirate gnre un grand nombre de requtes DHCP semblant venir dun grand nombre de clients diffrents, le serveur puisera vite son stock dadresses. Les vrais clients ne pourront donc plus obtenir dadresse IP : le trac rseau sera paralys.

9.1.2. Faux serveurs DHCP


Cette attaque vient en complment de la premire. Si un pirate a russi saturer un serveur DHCP par puisement de ressources, il peut trs bien en activer un autre la place. Ainsi il pourra ainsi contrler tout le trac rseau.

9.1.3. Comment sen protger ?


Chaque fois que cest possible, il faut limiter le service DHCP une liste ferme de correspondances dadresses MAC et IP. De cette faon toute requte trangre cette liste est systmatiquement rejete.

Sous Windows, remplissez les champs de loption Rservations dans le programme de conguration du serveur DHCP Sous Linux, ditez le chier /etc/dhcpd.conf sur le serveur DHCP. Par exemple, pour un client toto avec ladresse MAC 00:C0:34:45:56:67 laquelle on fait correspondre : ladresse 192.168.1.2, le routeur 192.168.1.1 et le serveur de noms 192.168.1.3.
host toto {

29

Chapitre 9. Description dattaques sur diffrents protocoles


hardware ethernet 00:C0:34:45:56:67; fixed-address 192.168.1.2; option routers 192.168.1.1; option domain-name-server 192.168.1.3; }

Sil est impossible dtablir une liste ferme, segmentez votre rseau en sous-rseaux et attribuez-leur chacun un serveur DHCP. Ces serveurs seront indpendants les uns des autres. Enn, les nouvelles versions du protocole DHCP permettent lutilisation de mcanismes dauthentication plus stricts. Assurez vous que vos serveurs utilisent ces versions de protocoles (Voir RFC3118 (http://www.faqs.org/rfcs/rfc3118.html)).

9.1.4. Documents

Scurisation sous windows : [FIXIT] Sous Linux : Comment installer un serveur DHCP en 15 minutes grce Linux! (http://www.digital-connexion.info/article.php?sid=89) et How to make Network Conguration as easy as DHCP (http://www.linux-mag.com/cgi-bin/printer.pl?issue=2000-04&article=networknirvana)

9.2. Domain Name Service - DNS


Le protocole DNS assure la correspondance entre le nom dune machine et son adresse IP. Un serveur DNS est en coute par dfaut sur le UDP port 53. Les attaques dcrites ici concernent les faiblesses du protocole DNS.

9.2.1. Le DNS ID spoong


Cest la premire attaque que nous allons dcrire. Elle aboutit un dtournement de ux entre deux machines lavantage du pirate. Imaginons quun client A veuille tablir une connexion avec une machine B. La machine A connat le nom de la machine B mais pas son adresse IP, ce qui lui empche pouvoir communiquer avec. La machine A va donc envoyer une requte au serveur DNS du rseau de B pour connatre ladresse IP de B, cette requte sera identie par un numero d identication (ID). Le serveur rpond cette requte en fournissant ladresse IP de B et en utilisant le mme numro dID. Ce numro a une valeur comprise entre 0 et 65535. Le DNS ID spoong a pour but de denvoyer une fausse rponse une requte DNS avant le serveur DNS. De cette faon, le pirate peut rediriger vers lui le trac destination dune machine quil lintresse. Dans notre exemple, un pirate C doit rpondre A avant le serveur DNS (D) du rseau de B. Ainsi, il envoie A son adresse IP associe au nom de la machine B. A communiquera alors avec le pirate C au lieu de la machine B. Illustration :

30

Chapitre 9. Description dattaques sur diffrents protocoles

Nanmoins, pour implmenter cette attaque, le pirate doit connatre l ID de requte DNS. Pour cela, il peut utiliser un sniffer sil est sur le mme rseau, soit prdire les numeros dID par lenvoi de plusieurs requtes et lanalyse des rponses.

9.2.2. Le DNS cache poisoning


Le principe de cette attaque est trs similaire celui de lARP-Poisoining. Pour gagner du temps dans la gestion des requtes, le serveur DNS possde un cache temporaire contenant les correspondances adresses IP - noms de machine. En effet, un serveur DNS na que la table de correspondance des machines du rseau sur lequel il a autorit. Pour des machines distantes, il doit interroger dautres serveurs DNS. Pour viter de les interroger chaque requte, il garde en mmoire (dans un cache), le rsultat des prcdentes requtes. Lobjectif du pirate est dempoisonner ce cache avec de fausses informations. Pour cela, il doit avoir un nom de domaine sous contrle et son serveur DNS. Imaginons quun pirate (A) possde le nom de domaine attaquant.com, et son serveur DNS (C) et quil veuille empoisonner le cache du serveur DNS (B) du rseau cible.net. Le pirate envoie une requte au serveur DNS (B) du rseau cible.net demandant la rsolution du nom de domaine attaquant.com. Le serveur DNS (B) de cible.net va donc envoyer une requte sur le serveur DNS (C) de lattaquant (cest lui qui a autorit sur le domaine attaquant.com). Celui-ci rpondra et joindra des informations additionnelles falsies par le pirate (un nom de machine (D) associ ladresse IP (A) du pirate). Ces informations seront mises en cache sur le serveur DNS (B) de cible.net. Si un client quelconque (E) demande ladresse IP pour le nom de la machine (D), il recevra ladresse du pirate (A) en retour. Illustration :

31

Chapitre 9. Description dattaques sur diffrents protocoles

9.2.3. Comment sen protger ?


Congurez votre serveur DNS pour quil ne rsolve directement que les noms de machine du rseau sur lequel il a autorit. Autorisez seulement des machines internes demander la rsolution de noms de domaines distants. Mettez jour ou changez les logiciels assurant le service DNS pour quils vous protgent des attaques dcrites prcedemment.

9.2.4. Documents
Sous linux : DNS et scurit (http://www.toolinux.com/linutile/reseau/dns/index20.htm) et DNS et scurit (http://www.linux-france.org/article/memo/dns/node16.html)

9.3. FINGER
Le service finger permet dobtenir des informations sur les utilisateurs du systme.
finger sinvoque simplement avec la commande :
[root@nowhere /root]#finger @machinecible

Le symbole @ produit le mme effet que lastrisque pour un listing de rpertoire. En effet, les informations concernant tous les utilisateurs connects la machine de nom machinecible seront listes et envoyes en rponse la requte. Exemple : 32

Chapitre 9. Description dattaques sur diffrents protocoles


[root@nowhere /root]#finger @machinecible Login Name Tty Idle Login Time Office toto Le toto pts/7 3d Mar 26 20 :43 (case)// root root pts/4 5d May 25 16 :20

On voit ainsi qui est connect sur le systme (toto et root) et depuis quand (colonne Time).
finger nest pas dangereux mais le laisser en coute, sans en avoir rellement besoin, est une

grossire erreur. nger donne trop dinformations sur les utilisateurs systmes.

9.3.1. Comment sen proteger ?

Sous UNIX, il est conseill de dsactiver le service finger dans le chier /etc/inetd.conf. Pour cela, ajoutez un dise (#) devant la ligne relative au service finger.
# finger stream tcp nowait root /usr/sbin/tcpd in.fingerd

Sous Windows, dsactivez le programme associ au service nger.

Si vous ne souhaitez pas dsactiver le service nger, congurez votre rewall pour limiter les accs vers ce service.

9.4. FTP
FTP (File Transfert Protocol, en coute par dfaut sur les ports 20 et 21) est le service utilis pour assurer le transfert de chiers. Il y a deux types de serveurs FTP : les serveurs FTP avec authentication par mots de passe et les serveurs anonymes. Pour les premiers, le client dsirant se connecter devra fournir un login accompagn dun mot de passe pour authentication. Dans le cas du serveur FTP anonyme, tout le monde peut sy connecter librement. Le premier dfaut du protocole FTP est de ne pas encrypter les mots de passe lors de leur transit sur le rseau. Les mots de passe associs aux logins circulent en clair la merci des sniffers. Voici lexemple dune interception par un sniffer dune authentication FTP : Le logiciel utilis est tcpdump.
22 :10 :39.528557 192.168.1.3.1027 192.168.1.4.ftp : P 1 :12(11) ack 47 win 5840 nop,nop,timestamp 441749 100314 (DF) [tos 0x10] 0x0000 4510 003f 88d6 4000 4006 2e7b c0a8 0103 E.. ?..@.@....... 0x0010 c0a8 0104 0403 0015 e351 3262 8d6a dd80 .........Q2b.j.. 0x0020 8018 16d0 68da 0000 0101 080a 0006 bd95 ....h........... 0x0030 0001 87da 5553 4552 2061 6c65 780d 0a00 ....0,1,0USER.alex...

22 :10 :57.746008 192.168.1.3.1027 192.168.1.4.ftp : P 12 :23(11) ack 80 win 5840 nop,nop,timestamp 443571 101048 (DF) [tos 0x10] 0x0000 4510 003f 88d8 4000 4006 2e79 c0a8 0103 E.. ?..@.@..y.... 0x0010 c0a8 0104 0403 0015 e351 326d 8d6a dda1 .........Q2m.j.. 0x0020 8018 16d0 5ba1 0000 0101 080a 0006 c4b3 ....[........... 0x0030 0001 8ab8 5041 5353 2074 6f74 6f0d 0a00 ....0,1,0PASS.toto...

On peut voir facilement que lutilisateur alex a le mot de passe toto.

9.4.1. Le serveur FTP anonyme


Le serveur FTP anonyme pose de plus gros problmes. Le premier est quune mauvaise gestion des droits daccs peut savrer tre une erreur fatale. Laisser trop de rpertoires en droit dcriture et/ou dexcution est plus que dangereux pour la sret du systme. Le pirate pourrait y installer ou y excuter des codes malveillants lui permettant daccrotre son pouvoir sur la machine. 33

Chapitre 9. Description dattaques sur diffrents protocoles

9.4.1.1. Boucing attack - Attaque par rebonds


Les serveurs FTP anonymes peuvent tre sujets des attaques par rebonds. Ces attaques consistent utiliser un serveur FTP anonyme comme relais pour se connecter dautres serveurs FTP. Imaginons quun pirate se voit refuser laccs par un serveur FTP dont laccs est allou seulement un certain groupe dadresses IP. Imaginons que le pirate ne fait pas partie de ce groupe, mais quun serveur FTP anonyme y appartienne. Le pirate peut trs bien se connecter sur le serveur FTP anonyme, utiliser les commandes assurant la connexion sur le serveur FTP protg et y rcuprer des chiers.

9.4.2. Comment sen protger ?


Installez un serveur FTP anonyme seulement en cas dabsolue ncessit. Si vous devez le faire, limitez au maximun les droits sur les diffrents rpertoires et chiers laisss au public. Pour vous protger des attaques par sniffer, je vous recommande dutiliser SFTP (Secure FTP) pour vos transactions FTP. SFTP encryptera les changes et les protgera ainsi des coutes indiscrtes. Vous pouvez aussi utiliser des tunnels comme IPSec pour protger vos connexions (voir section #x1-460004.3). Filtrez les accs (via un rewall) en allouant seulement laccs un certain groupe dadresses IP (en vitant dinclure des serveurs anonymes permettant de servir de relais).

9.5. HTTP
Un serveur HTTP est en coute sur le port 80. Le protocole HTTP est srement le plus utilis sur le web pour les pages html. Ce protocole ne comporte pas de failles intrinsques majeures. Par contre, les applications assurant son traitement sont souvent bourres de failles. Cela vient du fait que le web devient de plus en plus demandeur en terme de convivialit et cela gnre une complexit plus grande des applications, do un risque de failles plus important. Nous allons dcrire ces failles une une.

9.5.1. Les serveurs trop bavards


Parfois, les bannires des serveurs web sont trop explicites. Exemple sur un serveur Apache :
[root@nowhere /root]# telnet 127.0.0.1 80 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is ^]. HEAD / HTTP/1.0 HTTP/1.1 200 OK Date: Sun, 04 Jan 2004 15:07:06 GMT Server: Apache/1.3.29 (Debian GNU/Linux) Last-Modified: Sat, 24 Nov 2001 16:48:12 GMT ETag: "17082-100e-3bffcf4c" Accept-Ranges: bytes Content-Length: 4110 Connection: close Content-Type: text/html; charset=iso-8859-1 Connection closed by foreign host.

Lors de lenvoi de la commande HEAD / HTTP/1.0, trop dinformations sont donnes. Les pages derreurs (404 : page non trouve) peuvent aussi contenir des informations sur le systme.

34

Chapitre 9. Description dattaques sur diffrents protocoles

9.5.2. Vulnrabilits lies aux applications web


La complexit des serveurs ou des navigateurs (clients) web pose de gros problmes de scurit. Ces applications sont vulnrables de nombreux bugs. Chaque application a son type de faille. Netscape par exemple devient vulnrable lors du traitement de certaines chanes de caractres. Cela peut permettre de remonter toute larborescence des chiers du serveur. Les serveurs IIS peuvent renvoyer un shell systme pour un envoi de commandes particulires. Les langages comme Javascript, Perl, PHP, ASP pour la ralisation de scripts peuvent se rlver dangereux. Lorigine dune faille dans une application web peut apparatre cause de deux problmes. Le premier est la abilit de la conception du script, le second est la abilit des fonctions utilises. Si un script est mal conu, il peut tre la source de nombreuses failles. De mme, si sa conception est bonne mais quil utilise des fonctions bogues, il peut se rvler encore plus dangeureux.

9.5.3. Comment se protger ?


Vriez que votre serveur web nest pas trop bavard. Si cest le cas, modiez sa conguration pour quil se taise. Pour cela, consultez la documentation pour modier le contenu des messages derreur ou de bienvenue. Un serveur web ne devrait jamais tre excut avec les droits administrateurs. Mettez jour les navigateurs et les serveurs pour prvoir dventuelles failles. Lors du dveloppement de scripts, prenez garde lors de la conception la gestion des droits des utilisateurs pour son excution. Informez-vous aussi sur les fonctions connues pour tre sensibles. Les NIDS peuvent tre une bonne parade contre les attaques reposant sur des failles logicielles. Ils permettent de dtecter lexcution de telles attaques (Voir Section 4.2). Lutilisation de SHTTP (Secure HTTP) est aussi une bonne parade contre les attaques HTTP. Une bonne dnition de SHTTP est donn par E.Rescorla et A. Schiffman :
"Le protocole SHTTP est une extension de HTTP qui fournit des services de scurit, applicables indpendamment, qui permettent de garantir la condentilit, lauthenticit/intgrit, et le non refus dorigine."

SSL ("Secure Socket Layer" pour Netscape) permet de protger les transactions web, il peut tre judicieux de lutiliser.

9.6. IDENT
Le service ident (anciennement appel auth, en coute sur le port 113) est du mme genre que le service finger. Il fournit des informations sur les dtenteurs de connexions sur le systme. Il convient de le supprimer, sil na aucune utilit.

9.6.1. Comment sen protger ?


Sous UNIX, pour dsactiver le service ident, ajoutez un dise (#) pour commenter la ligne concernant ce service dans le chier /etc/inetd.conf.
# :INFO : Info services #ident stream tcp wait identd /usr/sbin/identd identd

35

Chapitre 9. Description dattaques sur diffrents protocoles

9.7. IP et lIP-Spoong
Cette mthode de piratage date un peu. Mais elle demeure lgendaire par lutilisation quen a fait Kevin Mitnick en 1995 contre le Supercomputer Center de SanDiego protg par Tsatumo Shimomura. Nanmoins, cette faille tait connue depuis fvrier 1985 comme le montre le rapport Weakness in the 4.2BSD Unix TCP/IP software crit par Robert Morris. LIP spoong se base sur une usurpation dadresse IP. LIP spoong est utilis lorsque deux htes sont en relation de conance grce leurs adresses IP, cest--dire que la seule authentication faite au niveau du serveur consiste en une vrication de ladresse IP du client. LIP spoong a souvent lieu contre les services rlogin et rsh car leur mcanisme dauthentication est base sur ladresse IP. Le principe est simple : ds quun client possde une connexion tablie sur le serveur avec un mode dauthencation base sur ladresse IP, le pirate va essayer de se faire passer pour le client auprs du serveur. Pour cela, il va empcher le client de dialoguer avec le serveur et rpondra sa place. LIP-Spoong est une attaque concernant un nombre limit de machines. Vous dcouvrirez pourquoi en lisant la suite.

9.7.1. Un peu de thorie ...


Le protocole IP est non-orient connexion, il nassure aucune vrication de la rception des paquets et ne se soucie gure de la faon de les traiter. IP nassure quun routage dune adresse vers autre. Il est donc facile de duper le routage IP en injectant des paquets falsis ayant des adresses IP valides sur le rseau. Le protocole TCP, quant lui, assure une abilit de la remise des paquets grce des numros de squences qui les distingue un un. Chaque paquet TCP possde deux numros, le numro de squence et le numro dacquittement. Ces deux nombres sont cods sur 32 bits. Ils sont uniques, an de ne pas confondre les paquets lors de leurs traitements. Cest sur ces bases que nous allons dcrire lattaque. Imaginons que le client A est connect en rsh sur le serveur B. Le pirate C va tenter de voler la connexion au client. Il va en premier lieu rduire au silence le client en le saturant avec des attaques tels que le syn-ooding, le dni de service (voir Section 6.4). La seconde partie de lattaque est assez simple. Le pirate envoie une srie de demandes de connexion au serveur ( paquets TCP avec le ag SYN arm) en utilisant ladresse de A. Le serveur rpond avec une srie de paquets dacquittement (ags SYN et ACK arms). Cest l que rside toute la nesse de lIP spoong. Mais dabord, quelques rappels sur le protocole TCP. Pour ltablisement dune connexion TCP, le client envoie un paquet avec un numro de squence initial (NS1). Le serveur va rpondre avec un paquet dacquittement ayant son propre numro de squence (NS2), mais ayant un numro dacquittement (NA1) gal au numro de squence initial incrment dune unit (NA1=NS1+1). Ensuite le client renvoie un paquet avec un numro dacquittement (NA2=NS2+1). Une connexion TCP stablit donc en trois parties. Ce principe de numros de squences et dacquittement est utilis tout le long de la transaction pour en assurer la abilit. La subtilit de lattaque rside dans le fait que le serveur gnre la valeur NS2 suivant un cycle particulier. Il peut utiliser, par exemple, soit une fonction gnrant un nombre alatoire, soit incrmenter une valeur initiale de 128 toutes les secondes et de 64 aprs chaque connexion. Tout dpend de limplmentation de la pile TCP/IP du systme. Et cest l que rside tout le problme. Le pirate envoie un grand nombre de demandes de connexion dans un laps de temps dtermin et analyse les acquittements du serveur pour dterminer lalgorithme dincrmentation. Si cet algorithme est bas sur la gnration de nombres alatoires, lattaque a peu de chances daboutir. Mais si lalgorithme est facilement comprhensible, le pirate va alors envoyer une requte de connexion au serveur en utilisant ladresse IP du client. Le serveur va rpondre avec un paquet dacquittement de numero de sequence (NS). Le client mis hors service ne pourra rpondre, le pirate le fera sa place. 36

Chapitre 9. Description dattaques sur diffrents protocoles Pour cela, il doit injecter un paquet ayant un numro dacquittement de valeur NA = NS +1. Mais, ayant usurp ladresse du client, il ne peut intercepter les paquets lui tant destins. Il ne peut donc pas connatre cette valeur NS. Il va donc la gnrer lui-mme partir de son analyse de lalgorithme dincrmentation. Cest pourquoi cette attaque est aussi qualie dattaque aveugle. Si le numro est valide, le pirate a tabli la connexion au serveur en se faisant passer pour le client. Le fait que lattaque ne se restreigne qu une petite partie de systmes vient du fait que la plupart des piles TCP/IP utilisent des numros de squences bass sur des nombres alatoires. Certains systmes comme BSD ou HP-UX connaissent de gros problmes cause de lIP-Spoong. Illustration

37

Chapitre 9. Description dattaques sur diffrents protocoles

9.7.2. Prvenir lIP spoong grce Nmap


Nmap invoqu avec loption -O et -v vous fournit une indication sur la difcult quaura le pirate

procder une attaque par IP spoong contre votre serveur. Exemple :


[root@nowhere /root]# nmap -O -v 192.168.1.4 Starting nmap V. 2.54BETA31 ( www.insecure.org/nmap/ ) Host (192.168.1.4) appears to be up ... good. Initiating Connect() Scan against (192.168.1.4) Adding open port 111/tcp Adding open port 21/tcp Adding open port 515/tcp Adding open port 1024/tcp Adding open port 22/tcp Adding open port 139/tcp The Connect() Scan took 1 second to scan 1554 ports. For OSScan assuming that port 21 is open and port 1 is closed and neither are firewalled Interesting ports on (192.168.1.4) : (The 1548 ports scanned but not shown below are in state : closed) Port State Service 21/tcp open ftp 22/tcp open ssh 111/tcp open sunrpc 139/tcp open netbios-ssn 515/tcp open printer 1024/tcp open kdm Remote operating system guess : Linux 2.1.19 - 2.2.19 Uptime 0.122 days (since Thu Mar 27 16 :02 :38 2003) TCP Sequence Prediction : Class=random positive increments Difficulty=4687481 (Good luck !) IPID Sequence Generation : Incremental Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds

Les lignes intressantes :


TCP Sequence Prediction : Class=random positive increments Difficulty=4687481 (Good luck !)

Celles-ci nous renseignent sur la difcult dune attaque par IP-Spoong. Plus le nombre associ la valeur Difficulty est lev, plus il est difcile dentreprendre une attaque. Le message Good Luck ! entre parenthses est plutt ironique vis--vis de la russite de lattaque. Si, par malchance, lors dun scan, vous obtenez un nombre trs bas avec un message du type "Trivial Joke", cela signie que votre systme est trs vulnrable une attaque par IP-Spoong.

9.7.3. Comment sen protger ?


Sur la plupart des systmes, les numros de squence sont incrments de faon alatoire, ce qui limite dj une grande partie des attaques par IP spoong. Pour se protger, il faut commener par supprimer tous les services se basant sur lauthentication IP (rlogin, rsh). Certains modules comme rp_lter sous Linux permettent une dfense contre ces attaques. Lutilisation de tunnels permet galement de parer cette attaque. 38

Chapitre 9. Description dattaques sur diffrents protocoles

9.7.4. Document
Dscription de lIP-Spoong : IP-spoong Demystied (http://www.phrack.org/show.php?p=48&a=14).

9.8. NETBIOS
NETBIOS nest pas un protocole en lui-mme, cest une interface logicielle et un systme de nommage. Linterface NETBIOS est trs utilise sur les rseaux Microsoft NETBIOS permet par exemple de partager des ressources en rseau. Ces ressources peuvent tre des imprimantes, processus ou des espaces disques. Un pirate peut essayer daccder ces ressources en sy connectant et tester diffrents couples utilisateur/mot de passe. NETBIOS nest pas une interface trs scurise. Elle est surtout utilise dans les rseaux Microsoft pour le protocole SMB (bien quelle tend tre remplace).

9.8.1. Comment sen protger ?


Protgez toutes vos ressources NETBIOS par mot de passe. Ne laissez jamais un service NETBIOS de votre rseau en coute sur Internet. Autorisez seulement laccs aux ressources NETBIOS au client de votre rseau.

9.8.2. Document
Un bon guide pour la scurisation NETBIOS (en anglais) : A STUDY IN REMOTE NT PENETRATION (http://packetstormsecurity.org/groups/rhino9/wardoc.txt)

9.9. Network File System - NFS


NFS a pour but de partager un ensemble de chiers sur un rseau. Il est souvent coupl un serveur NIS pour lauthentication. NFS a t dvelopp par Sun Microsystems.

9.9.1. Les attaques


Le gros problme avec NFS, cest que le client fait toujours conance au serveur et vice versa. Un compte "root" sur une machine cliente peut trs bien compromettre le serveur et vice-versa.

9.9.2. Comment sen protger ?


Utilisez la commande mount avec loption -nosuid sur les clients, ce qui empche la modication ou lutilisation des programmes setuid sur un systme de chier NFS. Utilisez loption root-squash dans le chier /etc/exports. Cela aura pour but dempcher un client root de devenir root sur le systme de chiers NFS stocks sur le serveur. Protger laccs votre serveur NFS en ltrant partir de l adresse IP, les diffrents clients.

39

Chapitre 9. Description dattaques sur diffrents protocoles

9.10. Network Information Service - NIS


NIS permet de partager, travers un rseau, une base de donnes contenant des bases dinformations pour chacune des machines constituant le rseau (chier de mots de passe, listes dhtes...). La base de donne est gre par un serveur-matre qui la partage avec des serveurs-esclaves pour tre accessible aux machines clientes. Cette base de donnes est identie par un nom de domaine propre NIS. Ce service a t dvelopp par SUN Microsystems. Il saccompagne souvent du service NFS pour permettre le partage de chiers.

9.10.1. Les attaques


Il est possible dobtenir des nombreuses informations (notamment les chiers de mots de passe) partir du nom de domaine NIS. Il est aussi possible pour un utilisateur non autoris dobtenir les chiers de mots de passe partir dun poste local client NIS. Les mots de passe sont transmis avec un niveau de chiffrement faible sur le rseau, donc facilement interceptable par un sniffer.

9.10.2. Comment sen protger ?


Evitez de donner le mme nom de domaine DNS au domaine NIS. Vriez si votre version de NIS vous assure une vrication de ladresse du domaine depuis lequel sont lances les requtes. Supprimez la commande ypcat sur les ordinateurs clients. Protgez laccs votre serveur NIS en ltrant partir de ladresse IP, les diffrents clients.

9.11. PORTMAP
portmap (en coute sur le port 111) est le support de nombreux autres services comme les serveurs NFS, NIS ... La comande rpcinfo permet de savoir quels services RPC sont actifs sur le systme vis (ici "machinecible").
[root@nowhere /root]# rpcinfo -p machinecible program 10000 2 10000 2 10007 2 10007 2 vers proto port tcp 111 portmapper udp 111 portmapper udp 661 ypbind tcp 664 ypbind

Lors de la requte, portmap ne possde aucun mcanisme de contrle, il accepte donc la requte et la traite.

9.11.1. Comment sen protger ?


Il est conseill de ltrer laccs sur ce port grce un rewall bien congur ou de dsactiver totalement ce service.

40

Chapitre 9. Description dattaques sur diffrents protocoles

9.12. Le protocole SMB


Les serveurs SMB sont en coute sur le port 139 ou 445. SMB (pour Server Message Block) est le protocole utilis pour interfacer les partages et les authentications MICROSOFT. Les clients et serveurs SMB sous Linux et dautres OS libres utilisent SAMBA pour traiter les changes avec ce protocole. SMB possde deux modes dauthentication : le mode "share", dans lequel il associe un mot de passe une ressource (espace disque, imprimantes ...), et le mode "user", o il associe un mot de passe un utilisateur. Cet utilisateur peut tre aussi propritaire dune ressource. SMB utilise aussi deux modes pour lenvoi de ces mots de passe : encrypts ou non. Cest l que rside toute la faille. Cest le serveur qui donne linformation au client sil supporte lencryptage ou non. Si un pirate parvient dtecter un tablisement de session SMB avant cet change, il peut trs bien dtourner le ux entre les deux et demander au client denvoyer son mot de passe en clair et le recevoir.

9.12.1. Les scans de SMB shares


Si vous avez des ressources partages en accs libre tout le monde (everyone shares), un pirate utilisera un scanner de share pour les dtecter et sy connecter. Mme si vous protgez ces shares par mot de passe, certains logiciels peuvent tester diffrents mots de passe en se loguant la ressource et ainsi tenter diffrentes combinaisons de mots de passe (voir Chapitre 7).

9.12.2. Comment sen protger ?


Pour tre sr que les mots de passe SMB soient envoys encrypts sur le rseau (mme en cas de requtes frauduleuses), vriez que la valeur des cls suivantes de la base de registre sont bien gales 0 :

Sous Windows NT4 :


HKEY\LOCAL\MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters "EnablePlainTextPasswordi"=dword :00000000";

Sous Windows XP :
HKEY\_LOCAL\_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters "enableplaintextpassword"=dword :00000000"

Protgez toutes vos ressources par mots de passe, vitez les shares en accs libre tous le monde et noubliez jamais de choisir des mots de passe associs de la bonne faon (voir Chapitre 7). Ne laissez jamais un serveur SMB en coute sur Internet, cela est plus que suicidaire. Si vous tes obligs dutiliser SMB travers Internet, utilisez les tunnels (voir section #x1-460004.3). Sur votre rseau interne, ltrez laccs sur votre serveur SMB grce un rewall.

9.12.3. Document
La description des problmes de scurit sur SMB (en anglais) : SMB/CIFS BY THE ROOT (http://www.phrack.org/show.php?p=60&a=11)

9.13. Le service de messagerie - SMTP


SMTP : Simple Mail Transfert Protocol. 41

Chapitre 9. Description dattaques sur diffrents protocoles Un serveur SMTP sert envoyer les mails sur le rseau local ou sur Internet. Ce service est en coute sur le port 25. Le premier problme avec un serveur SMTP est quil peut servir de relais de mailing anonyme. Un pirate peut trs bien sen servir pour envoyer des mails scabreux travers Internet. Un autre problme concerne les commandes EXPN et VRFY. Ces commandes sont sources de nombreuses informations pour le pirate. Il convient de les dsactiver si le logiciel de messagerie le permet.

9.13.1. Comment sen protger ?


Appliquez des rgles de rewalling assez strictes concernant le serveur SMTP (usage rserv exclusivement aux machines du rseau interne). Certains serveurs SMTP empchent le relayage, vriez si votre serveur de messagerie supporte cette option.

9.14. SQL
SQL est utilis pour la gestion de base de donnes. Il permet linterconnexion dune page web avec une base de donnes laide de scripts. Ce chapitre va prsenter une attaque trs connue contre les serveurs SQL appele SQL-Injection.

9.14.1. Linjection SQL ou SQL-Injection


Une requte SQL passe par plusieurs tapes avant daboutir. Les donnes sont envoyes par le client par lintermdiaire dun script sur le serveur web. Il sensuit une connexion au serveur SQL, puis lenvoi des donnes de la requte du client. La rquete est excute par le serveur SQL. La rponse est reue par le client et est afche sous la forme dune page web. Lattaque par SQL-Injection consiste injecter des caractres spciaux ou des chanes de caractres particulires dans les rquetes SQL du client. Ces caractres peuvent tre interprts par le serveur SQL comme des commandes permettant dobtenir un accs sans mot de passe, de rcuprer des chiers, etc..

9.14.2. Comment sen protger ?


Pour bien scuriser votre serveur SQL, vriez que tous les comptes possdent un mot de passe. Sur certaines versions de serveur, les comptes administrateur ou de certains utilisateurs peuvent tre accessibles sans mot de passe aprs une installation. Se protger du SQL-Injection nest pas toujours ais, il faut surtout tre attentif la programmation des scripts et aux fonctions utilises.

9.14.3. Document
La technique du "SQL Injection" dcrite par son inventeur : How I hacked PacketStorm (http://www.wiretrip.net/rfp/txt/rfp2k01.txt)

42

Chapitre 9. Description dattaques sur diffrents protocoles

9.15. SSH
SSH vous permet de crer un tunnel chiffr pour vos connexions, il encrypte toutes les changes. SSH est donc un outil conseill (pour ne pas dire indispensable) pour les transactions rseau. Malgr tout, SSH est sujet diffrentes attaques, la premire tant une attaque de type Man-In-the-Middle (voir Section 8.2). Le pirate se place entre le client et le serveur (avant ltablissement de session SSH) grce des mthodes de redirection de ux. Lorsque le client et le serveur schangent les cls indispensables pour lencryptage, il les intercepte et les utilise pour se faire passer pour le client auprs du serveur et pour le serveur auprs du client. Une autre attaque utilisant une faiblesse du protocole existe. Cette attaque se base sur la gnration alatoire des caractres de bourrage. Ces caractres sont utiliss pour rendre la longueur du paquet multiple de 64 bits. Ces caractres ntant pas vriables, ils peuvent tre utiliss pour modier le bon droulement de la communication. Cette faille est plus connue sous le nom de lexploitation du canal cach. Ces attaques ne sont pas trs faciles implmenter.

9.16. TELNET
Le service telnet (en coute sur le port 23) permet deux machines distantes de communiquer. Telnet tablit deux terminaux virtuels pour les deux machines. Ce type de terminal est semblable une connexion srie. Lutilisateur a limpression dtre assis devant un terminal de la machine. telnet repose sur une authentication par login et mot de passe. Malheureusement, telnet possde le mme problme que FTP : il nassure pas la protection des mots de passe contre lcoute dun sniffer. Les mots de passe associs du login circulent en clair sur le rseau.

9.16.1. Comment sen protger ?


Utilisez plutt SSH, qui prsente les mmes fonctionnalits que telnet mais permettant en plus de "tunneler" la connexion en encryptant toutes les transactions. Utilisez IPsec ou des utilitaires de "tunneling" (voir section #x1-460004.3) pour protger toutes vos connexions. Je vous conseille aussi de restreindre laccs votre serveur telnet via un rewall.

9.17. XWINDOW
XWINDOW est un service permettant la gestion des interfaces graphiques sous UNIX. XWINDOW est en coute sur le port 6000.

9.17.1. Les attaques


Il faut savoir que XWINDOW fonctionne sur une architecture client-serveur. Il est donc possible un client connect sur un serveur X dinteragir avec celui-ci. Il peut agir sur les fentres, capturer des venements X ou en crer. Si un serveur X WINDOW est mal congur, nimporte quel client pourra sy connecter et modier son fonctionnement.

9.17.2. Comment sen proteger ?


Utilisez la commande xhost pour fermer les accs au serveur XWINDOW.
[root@nowhere /root]# xhost -

43

Chapitre 9. Description dattaques sur diffrents protocoles

9.18. Peer To Peer (eDonkey, Kazaa, etc.)


Les applications Peer to Peer permettent de faciliter lchange de chiers entre particuliers. Ces applications sont nombreuses et diverses (eDonkey, Kazaa, etc.). Malheureusement, leur utilisation dans un rseau peut tre source de problmes de scurit et consommer inutilement de la bande passante.

9.18.1. Les outils Peer To Peer sont des vecteurs de virus


Les utilisateurs des applications Peer to Peer constituent des cibles idales pour la propagation des virus. Les dveloppements de ces applications sont rcents ; ils nont pas subi daudit srieux. Le pouvoir dattraction de lchange de chier est si grand que cet usage sest rpandu trs rapidement. On obtient donc un coktail dangereux : des applications faibles dployes trs grande chelle sur lInternet. Les virus rcents (postrieur la srie Gibe-? de Septembre 2003) ont commenc utiliser systmatiquement les outils Peer to Peer. Une fois de plus les utilisateurs ne sont absolument pas conscients de leur participation la propagation de ces virus. Pourtant, si on sintresse un peu la journalisation les traces de propagation sont immdiatement observables. Voici un relev sur une heure dexploitation dun routeur :
Security Violations =-=-=-=-=-=-=-=-=-= Feb 17 19:28:14 routeur Feb 17 19:33:18 routeur Feb 17 19:37:19 routeur Feb 17 19:54:20 routeur Feb 17 19:57:25 routeur Feb 17 20:00:19 routeur

14623: 14625: 14627: 14628: 14629: 14630:

Feb Feb Feb Feb Feb Feb

17 17 17 17 17 17

20:28:13.155 20:33:17.880 20:37:18.056 20:54:19.200 20:57:24.892 21:00:18.544

GMT: GMT: GMT: GMT: GMT: GMT:

%SEC-6-IPACCESSLOGP: %SEC-6-IPACCESSLOGP: %SEC-6-IPACCESSLOGP: %SEC-6-IPACCESSLOGP: %SEC-6-IPACCESSLOGP: %SEC-6-IPACCESSLOGP:

list list list list list list

inbound inbound inbound inbound inbound inbound

denied denied denied denied denied denied

tcp tcp tcp tcp tcp tcp

La distinction entre la journalisation dune utilisation usuelle dun outil Peer to Peer et la journalisation de la propagation de virus est immdiate. Pour un change de chiers on auriat observ plusieurs dizaines (voir centaines) dentres dans le journal sur une heure. Dans le cas prsent, on observe que les adresses IP sources changent pour chaque entre et que deux applications Peer to Peer ont t utilises : eDonkey2000 avec les numros de ports 4662-4663 et kazaa avec le numro de port 1214. Enn, le clou du spectacle, le numro de port destination 3127 correspond la porte cache du virus W32/MyDoom/W32.Novarg.A. On retrouve une des caractristiques des ux rseaux Peer to Peer : il est techniquement difcile de limiter ces ux mais ils sont trs faciles observer et reprer. Si vous aviez encore quelques illusions sur lutilisation anonyme des outils Peer to Peer, il est grand temps de les perdre. Il est mme probablement trop tard, vous tes dj reprs !

9.18.2. Comment sen protger ?


Sous linux, le projet P2PWall - IPTables blocking of P2P trafc (http://www.lowth.com/p2pwall/) donne des utilitaires et des documents permettant dutiliser le rewall iptables pour ltrer le trac dapplication Peer to Peer.

44

Chapitre 10. Scurit avance


Introduction
Si vous avez lu les prcdents chapitres (et surtout le chapitre 4), vous possdez maintenant toutes les connaissances requises pour pouvoir aborder cette partie. Elle concerne limplmentation et le dveloppement doutils ddis la scurit. La premire section vous montrera comment architecturer son rseau de faon scurise et comment bien implmenter les diffrents outils de protection. La deuxime section vous dcrira diffrentes bibliothques utilises pour le dveloppement dutilitaires rseaux. Nous donnerons en exemple la programmation dun simple scanner.

10.1. Larchitecture scurise


Il existe une innit de faon dorganiser votre rseau mais, quand la scurit entre en jeu, il est conseill davoir une architecture rseau bien pense. Ce chapitre va donner des exemples de ralisation darchitecture scurise. Il convient davoir lu pralablement les prcdents chapitres pour bien saisir la subtilit des architectures dcrites. Nous dcrirons diffrents niveaux darchitecture scurise. Nous partirons dune architecture peu ou pas scurise pour arriver une architecture ultra-scurise.

10.1.1. Le rseau de dpart


Trs simple, une PME ou une universit possde un administrateur qui doit grer lensemble du parc informatique et sa conception rseau. Il a pour cahier des charges dassurer une connexion Internet avec le rseau local, un serveur de messagerie et un site web. Avec peu de moyens, ladministrateur cre son rseau de la sorte :

Les serveurs web, de messagerie et de partage de connexion Internet seront assurs par une seule machine. Cette machine est connecte directement Internet. Dans ce type de rseau, il ny aucune forme de scurit : la connexion avec Internet nest absolument pas scurise.

10.1.2. Le premier niveau de scurit


Aprs un premier piratage, notre administrateur reoit de nouveaux crdits. Il repense larchitecture :

45

Chapitre 10. Scurit avance

Il ddiera une machine pour le serveur web, une machine pour le serveur de messagerie, deux machines pour le rewalling et un routeur pour assurer la connexion Internet. Les serveurs de messagerie et web sont dans une zone extrieure celle du rseau local. Ils constituent une zone dmilitarise (DMZ). Dmilitarise car on peut sy connecter depuis lextrieur contrairement au rseau local. Le rewall situ entre le rseau local et le routeur empchera toute connexion de lextrieur vers le rseau local, et autorisera seulement les connexions depuis le rseau local sur un nombre limit de services. Le rewall situ entre le routeur et la DMZ autorisera tous les accs sur les serveurs web et de messagerie (depuis le rseau local comme depuis lexterieur), mais en empchera les tentatives de connexion sur les autres services. Malheureusement, notre administrateur subit un autre piratage. Il suppose que le pirate a pu passer le routeur et les rewalls en soumettant des requtes sur des ports autoriss. Il a trs bien pu envoyer un exploit sur un serveur web ou de messagerie vulnrable.

10.1.3. Le deuxime niveau de scurisation


Alors, pour se protger, il intercale une sonde NDIS (voir Section 4.2) entre le rewall et le rseau local et dans la DMZ. Si un pirate venait envoyer des requtes suspectes ou des exploits connus, les NIDS prviendraient du risque dintrusion (de lintrieur ou de lextrieur). Le manager NDIS se situera dans le rseau local.

Il ddie toujours une seule machine pour un seul service. Il met rgulierement jour les logiciels, et sinforme sur les nouvelles failles de scurit. Ceci constitue un niveau acceptable permettant de rsister des nombreuses attaques.

46

Chapitre 10. Scurit avance

10.1.4. Les niveaux plus levs


Nous allons nous appuyer dans cette section sur larchitecture prcdente. Nous allons modier certaines parties du rseau. Nous allons dabord insrer une zone de dcontamination entre Internet et le rseau interne. Cette zone est constitue danalyseurs de contrle de contenu, des antivirus et dautres utilitaires surveillant le trac rseau (comme des NIDS). Tous les ux entrants et sortants passeront par cette zone de dcontamination. Ces proxys applicatifs peuvent prendre la dcision de couper la connexion en cas dattaques ou de simplement rejeter la demande. Cette zone est appele zone de dcontamination car elle permet de dtecter des signatures dattaques dans les ux de donnes provenant dInternet et dviter la propagation dans le reste du rseau. Pour le rseau local, nous le subdiviserons en sous-rseaux, chaque sous-rseau possdera un NDIS (sonde + manager). Ces sous-rseaux seront relis entre eux par des switchs.

Ce type darchitecture est trs efcace pour la scurit, mais reste nanmoins assez cuteuse et difcile grer. Lutilisation de tunnels (voir section #x1-460004.3) permet en plus daccrotre la sret des transactions.

10.2. Dveloppez vos propres utilitaires scurit


Ce chapitre va prsenter diffrents outils pour dvelopper vos propres utilitaires de scurit. Une connaissance du language C est requise. Une solide connaissance rseau est aussi demande. Le systme dexploitation utilis est Linux avec un compilateur GCC. Nous allons tudier 2 bibliothques permettant la cration dutilitaires rseaux : libnet et libpcap. La premire, Libnet, est dveloppe par Mike D. Schiffman. Cest une bibliothque opensource (donc gratuite). Libnet permet de fabriquer et dinjecter facilement des paquets sur un rseau. Un grand nombre de protocoles est support.
Note : Note importante : La version de Libnet dcrite est la version 1.1. De grosses modications faites sur le code de la version 1.1 la rend incompatible avec les versions de bibliothques antrieures.

47

Chapitre 10. Scurit avance La deuxime est Libpcap. Elle permet de capturer les paquets transitant sur le rseau. Cette bibliothque est maintenue par l quipe de dveloppement de tcpdump (prsent dans le chapitre #x1-690005.4). Libnet est tlchargeable cette adresse : www.packetfactory.net Libpcap est tlchargeable cette adresse : www.tcpdump.org Pour donner une description de ces bibliothques, nous allons tudier le dveloppement dun scanner de base. Ce scanner listera les ports TCP ouverts sur une machine avec une mthode de scan en port demi-ouvert (SYN scan, voir section #x1-150002.1). Linjection des paquets sera ralise grce Libnet, la rception des rponses grce Libpcap.

10.2.1. Le programme
Le programme "scanner" sera appel en mode console et recevra deux arguments : linterface rseau dutilisation et ladresse IP de la machine scanner. Il afchera la liste des ports ouverts et se terminera. Exemple dutilisation :
[root@nowhere.net /root]#./scanner -i eth0 -c 192.168.1.2 Le Le Le Le port port port port 21 est ouvert 22 est ouvert 1111 est ouvert 1024 est ouvert

Mais intressons-nous son dveloppement. Le scan en port demi-ouvert consiste envoyer un paquet TCP avec le ag SYN arm sur un port prcis. Si ce port est ouvert, on recevra en rponse un paquet TCP avec le couple SYN/ACK arm. Le programme recevra en argument, ladresse IP de la machine scanner et le nom de linterface rseau (par exemple "eth0"). ATTENTION ! Le but de ce chapitre est de prsenter les librairies libnet et libpcap et certaines de leurs fonctions les plus utiles dune manire succinte. Ce chapitre nest en aucun cas un cours de programmation rseau. Le principe de fonctionnemt du programme est simple ; il sera constitu de deux fonctions : la premire permettra denvoyer les paquets (sur les 16000 premiers ports) et la deuxime de les recevoir. Ces deux fonctions seront actives en parallle dans deux processus distincts (grce lappel de la fonction fork()). Je prsenterai les deux fonctions utilises pour intercepter et envoyer : Pour recevoir (void ReceptionPaquet(unsigned int, u_char device) : La fonction ReceptionPaquet permet de recevoir les paquets circulant sur le rseau. Pour cela, elle utilise la librairie libpcap. Nous utiliserons deux fonctions de cette librairie pour notre programme : La premire est la fonction pcap_t *pcap_t pcap_open_live(char *device, int snaplen, int promisc,int to_ms,char *errbuf). Cette fonction initialise la carte rseau et renvoie un descripteur de type pcap_t sur cette interface rseau en coute. Le paramtre *device est un pointeur sur une chane de caractres contenant le nom de linterface rseau utilise (par exemple "eth0"). Le paramtre snaplen reprsente la taille maximale (en octet) dun paquet intercept (max=65535). Le paramtre promisc contrle le fonctionnement de la carte rseau. Sil est gal 1, la carte est en mode transparent, cest dire quelle intercepte tous les paquets (mme ceux qui ne lui sont pas destins). Si cette valeur est diffrente de 1, la carte nacceptera que les paquets lui tant destins. Pour notre programme, la carte sera en mode transparent donc promisc sera gal 1. 48

Chapitre 10. Scurit avance Le paramtre to_ms spcie le dlai (en millisecondes) dinterception de paquets. Lorsque ce dlai est coul, la fonction se termine. Le paramtre *errbuf est un pointeur sur une chane de caractres pouvant contenir une message derreur en cas de mauvaise ou non excution du programme. La deuxime fonction est la fonction u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h). Cette fonction utilise comme argument le descripteur "p" pour accder la carte rseau. Elle renvoie chaque paquet intercept. Cest une fonction bloquante. Ces deux fonctions sont toujours utilises en srie, la pcap_open_live initialise la carte rseau et renvoie un descripteur de chier, ensuite ce descripteur de chier est utilis par la fonction *pcap_next qui intercepte les paquets. Voici la fonction ReceptionPaquet :
void ReceptionPaquet(unsigned int IP_Cible, u_char *Device) /*Variable utilise par les fonctions de libpcap (elle contiendra notre paquet*/ struct pcap_pkthdr Header ; /*Descripteur reprsentant linterface rseau (retourn par la fonction pcap_open_live()*/ pcap_t *Descr ; /*Structure pour len tte ETHERNET*/ struct ethhdr *EtherHdr ; /*Structure pour len tte IP*/ struct ip *IpHdr ; /*Structure pour len tte TCP*/ struct tcphdr *TcpHdr ; /*Tampon pour retour derreur*/ char ErrBuf[LIBNET_ERRBUF_SIZE] ; /*Pointeur vers le paquet*/ u_char *Packet ; /*Descripteur pour libnet*/ libnet_t *l ; /* Initialisation pour les fonctions de libnet (obtention dun descripteur)*/ l=libnet_init(LIBNET_RAW4,NULL,ErrBuf) ; /*Descripteur "Descr" sur linterface rseau en coute*/ Descr = pcap_open_live(Device,65535,1,0,ErrBuf) ; while(1) /*On recupre le paquet (il est point par la variable "Packet")*/ Packet = (u_char *) pcap_next(Descr,&Header) ; /*On convertit le paquet pour analyser len tte ETHERNET*/ EtherHdr = (struct ethhdr * ) (Packet) ; /*On verifie si le protocole est bien IP*/ if(ntohs(EtherHdr-h_proto)==ETH_P_IP) /*On convertit le paquet pour analyser len tte IP*/ IpHdr = (struct ip * ) (Packet +ETH_HLEN) ; /*On verifie si le protocole est bien TCP*/ if(IpHdr-ip_p==IPPROTO_TCP) TcpHdr = (struct tcphdr * ) ( Packet + ETH_HLEN +

49

Chapitre 10. Scurit avance


4 * (IpHdr-ip_hl)) ; /* Cela sert verifier que nous avons bien envoy le paquet et quil provient bien de la machine "scanne". Ceci se base sur lanalyse des adresses IP */ if( (IpHdr-ip_src.s_addr==IP_Cible) && (IpHdr-ip_dst.s_addr== libnet_get_ipaddr4(l))) /*Pour verifier que le port denvoi correspond au mme que le notre*/ if(ntohs(TcpHdr-dest)==PORT_SOURCE) /*Si les flags SYN et ACK sont arms, le port est ouvert*/ if((TcpHdr-ack==1) && (TcpHdr-syn==1)) printf("Le port %d est ouvert n",ntohs(TcpHdr-source)) ; /*Destruction du descripteur*/ libnet_destroy(l) ;

Pour envoyer (void EnvoiPaquet(unsigned int,int)) : La fonction EnvoiPaquet permet dinjecter les paquets sur le rseau. Pour cela, elle utilise la librairie Libnet. Nous allons utiliser diffrentes fonctions de la librairie Libnet. La premire est la fonction libnet_t *libnet_init(int injection_type, char *device, char *err_buf). Cette fonction permet dinitialiser une interface dinjection des paquets. Elle traite trois arguments :

Le premier injection_type dnit le type dinterface (niveau ethernet, IP ou TCP). Pour notre programme, une injection au niveau IP sufra (valeur LIBNET_RAW4). Le deuxime argument *device est un pointeur sur la chane de caractre contenant le nom de linterface rseau qui sera sollicite (ex : eth0), la valeur NULL conviendra car libnet choisira automatiquement une carte rseau. Le dernier argument *err_buf est utilis pour les messages derreur (comme libpcap). Elle renvoie un pointeur sur linterface dinjection de type libnet_t.

Les fonctions libnet_ptag_t libnet_build_tcp(...) et libnet_autobuild_ipv4(...) sont utilises pour construire les en-ttes TCP et IP. Elles prennent comme arguments les diffrentes valeurs constituants les en-ttes TCP et IP (numro de port, de squences ... pour TCP, adresses IP, types de protocoles pour IP). Elle renvoient toutes les deux un descripteur de type libnet_ptag_t, ces fonctions doivent toujours respecter lordre TCP puis IP (sens couche application vers couche rseau ou physique). Ces fonctions prenent en argument le pointeur sur linterface dinjection (pointeur renvoy par la fonction libnet_init). La fonction int libnet_write(libnet_t) injecte le paquet. La fonction void libnet_destroy(libnet_t) dtruit linterface cre par libnet. Voici la fonction 1,0,0EnvoiPaquet :
void EnvoiPaquet( /*IP Machine Cible*/ unsigned int IP_cible, /*Port Destination*/ int port_dest) /*Variables pour les fonction de libnet*/ char ErrBuf[LIBNET_ERRBUF_SIZE] ; libnet_t *l ; libnet_ptag_t Tag ; /*Pour initialiser et obtenir un descripteur*/ l=libnet_init(LIBNET_RAW4,NULL,ErrBuf) ; /*Pour construire len tte TCP*/

50

Chapitre 10. Scurit avance


Tag=libnet_build_tcp( PORT_SOURCE, /*Port Source*/ port_dest, /*Port destination*/ 0, /*N Squence*/ 0, /*N Acquitement*/ TH_SYN, /*Demande de connexions*/ 4096, /*Taille de fentre*/ 0, /*Somme de contrle*/ 0, /*Pointeur durgence*/ LIBNET_TCP_H, /*Taille en tte*/ (u_char *) (NULL),/*Pointeur vers les donnes*/ 0, /*Taille des donnes*/ l, 0) ; /*Pour construire len tte IP*/ Tag=libnet_autobuild_ipv4( LIBNET_IPV4_H+LIBNET_TCP_H, /*Taille du paquet*/ IPPROTO_TCP, /*Protocole*/ IP_cible, /*Adresse IP de la machine Cible*/ l) ; /*Pour envoyer le paquet*/ libnet_write(l) ; /*Pour dtruire le descripteur*/ libnet_destroy(l) ;

La fonction main() : La fonction main() traite les arguments de la ligne de commande, lance un processus enfant dans lequel, elle utilisera la fonction ReceptionPaquet et attendra une seconde pour le lancement du processus et de la fonction ReceptionPaquet puis excutera 16000 fois la boucle denvoi de paquets (16000 ports).Elle attendra encore 5 secondes pour le traitement des rponses et terminera le programme. Voici la fonction main :
extern char *optarg ; extern int optind ; extern int opterr ; int main(int argc,char *argv[]) /*Pour avoir les paramtres de la ligne de commande*/ static char optstring[]="i :c :" ; int optch ; char *Device ; /*Variable ditration*/ int i ; /*Pour stocker ladresse IP*/ u_int32_t IP_Cible ; /*Variable qui va reevoir le PID du processus enfant*/ int Pid ; /*Pour traiter les paramtres de la ligne de commande*/ if(argc 5) printf(" nscanner -i interface -c IP Cible n") ; return 0 ; while((optch= getopt(argc,argv,optstring)) !=EOF) switch(optch) /*Pour le nom de linterface*/ case i :

51

Chapitre 10. Scurit avance


Device = (char *) (malloc(strlen(optarg)*sizeof(char))) ; strncpy(Device,optarg,strlen(optarg)) ; break ; /*Pour ladresse IP de la machine cible*/ case c : IP_Cible = inet_addr(optarg) ; break ; default : printf(" nscanner -i interface -c IP Cible n") ; return 0 ; /*On lane le processus enfant (rcuperation et analyse des paquets*/ Pid=fork() ; if(Pid==0) ReceptionPaquet(IP_Cible,Device) ; /*On attend une seconde*/ sleep(1) ; /* On envoie les paquets sur les 16000 premiers ports*/ for(i=0 ;i16000 ;i++) EnvoiPaquet(IP_Cible,i) ; /*On dtruit le processus enfant*/ sleep(5) ; kill(Pid,SIGINT) ; return 0 ; }

10.2.2. Comment obtenir et compiler le source entier du programme ?


Pour le code source du programme et les commandes de compilation, consultez le lien : http://guidesecu.ifrance.com/prog/scanner.c

10.2.3. Documents
Pour libnet : http://www.packetfactory.net Pour libpcap : http://www.tcpdump.org

52

Annexe A. Annexes
A.1. Les sites et revues consulter rgulierement

CERT (http://www.cert.org) SecurityFocus (http://www.securityfocus.com/) .:[packet storm security]:. (http://packetstormsecurity.nl/) Archives Bugtraq (http://citadelle.intrinsec.com/mailing/current/HTML/ml_bugtraq/) & Bugtraq France (http://www.bugtraq-france.com) Liste de diffusion du CNRS sur les virus (http://www.services.cnrs.fr/wws/info/sos-virus) & Informations scurit informatique du CNRS (http://www.cnrs.fr/Infosecu/Virus.html) CERT RENATER (http://www.renater.fr/Securite/CERT_Renater.htm) Phrack : ...a Hacker magazine by the community, for the community.... (http://www.phrack.org/)

Pour les revues en franais disponibles en kiosque, je vous conseille dacheter le magazine MISC. Je ne suis pas dpendant de MISC, mais cest le seul magazine entirement ddi la scurit apportant des rponses concrtes de nombreux problmes. Il est disponible tous les 2 ou 3 mois environ chez votre libraire. Les anciens numros peuvent tre aussi commands sur le site de MISC, 10 numros ayant t publi jusquen Dcembre 2003. Chaque numro constitue une trs bonne source dinformations. Pour plus de renseignements, consulter MISC le mag de la scurit informatique ! (http://www.miscmag.com/).

A.2. Remerciements
Je tiens remercier Nicolas Buratto et Christian Duclou pour leur aide sur ce manuel. Un grand merci au Mirabellug. Un petit coucou celui sans qui rien naurait pu tre possible. Pour le soutien musical et moral : Jimi, Thimothy, Hunter, Tom, Neil... et les tous les autres...
When the going gets weird, the weird turns pro

53