Vous êtes sur la page 1sur 43

Un petit guide pour la scurit

Alexandre Viardin
Publi par :

guidesecu(at)free.fr

Philippe Latu

philippe.latu(at)inetdoc.net
http://www.inetdoc.net

Table des matires


Avant-propos ............................................................................................................................................... v
1. Pourquoi ce guide ? ........................................................................................................................... v
2. O trouver ce guide ? ......................................................................................................................... v
3. Quels sont les systmes d'exploitation viss ? ......................................................................................... v
1. Scurisation de base .................................................................................................................................. 1
1.1. Introduction .................................................................................................................................. 1
1.2. Premier conseil : Verrouillez les stations ............................................................................................. 1
1.3. Pour Linux .................................................................................................................................... 1
1.4. Pour Windows ............................................................................................................................... 1
1.5. Le lecteur de disquettes ................................................................................................................... 1
1.6. Le lecteur de CDROM ...................................................................................................................... 1
1.7. N'oubliez pas le mot de passe pour le BIOS ......................................................................................... 1
2. La collecte d'informations .......................................................................................................................... 2
2.1. Introduction .................................................................................................................................. 2
2.2. Le Scanner .................................................................................................................................... 2
2.2.1. Qu'est ce qu'un scanner ? ....................................................................................................... 2
2.2.1.1. Exemple avec Nmap ................................................................................................... 2
2.2.2. Comment marche Nmap ? ..................................................................................................... 2
2.2.2.1. Le scan vanilla TCP connect ........................................................................................ 3
2.2.2.2. Les scans furtifs ........................................................................................................ 3
2.2.3. La dtermination du systme d'exploitation avec Nmap ............................................................... 4
2.2.4. Quel est l'intret d'utiliser Nmap ? ........................................................................................... 4
2.2.5. Comment s'en protger ? ....................................................................................................... 4
2.2.6. Documents .......................................................................................................................... 4
2.3. Identier les versions des logiciels en coute ....................................................................................... 4
2.3.1. Netcat ................................................................................................................................ 5
2.3.1.1. Comment s'en protger ? ............................................................................................. 5
3. Les failles applicatives ............................................................................................................................... 6
3.1. Introduction .................................................................................................................................. 6
3.2. Les installations par dfaut .............................................................................................................. 6
3.3. Les mauvaises congurations ........................................................................................................... 6
3.4. Les bogues .................................................................................................................................... 6
3.4.1. Des dnis de services applicatifs ............................................................................................. 6
3.4.2. Outrepassement de droits ...................................................................................................... 6
3.4.3. Les scripts .......................................................................................................................... 6
3.5. Les exploits ................................................................................................................................... 6
3.6. Comment s'en proteger ? .................................................................................................................. 6
4. Les outils indispensables pour la protection .................................................................................................. 8
4.1. Introduction .................................................................................................................................. 8
4.2. Le pare-feu rewall ......................................................................................................................... 8
4.2.1. La conguration .................................................................................................................. 8
4.2.2. Les attaques contre les rewalls ............................................................................................. 8
4.2.2.1. Avec le scanner ......................................................................................................... 8
4.2.2.2. Comment s'en protger ? ............................................................................................. 8
4.2.2.3. Le rewalking ........................................................................................................... 8
4.3. Les systmes de dtection d'intrusion (HIDS/NIDS) ............................................................................... 9
4.3.1. Prelude-NIDS ....................................................................................................................... 9
4.3.2. Snort ................................................................................................................................. 9
4.4. Le tunneling .................................................................................................................................. 9
4.4.1. Le protocole AH ................................................................................................................. 10
4.4.2. Le protocole ESP ................................................................................................................ 10
4.4.3. Le protocole IPcomp ........................................................................................................... 10
4.4.4. Le protocole IKE ................................................................................................................ 10
4.4.5. Les deux modes de fonctionnements de IPsec .......................................................................... 10
4.4.6. Les limitations d'IPsec ......................................................................................................... 10
4.4.7. Documents ........................................................................................................................ 10
4.5. Nessus ........................................................................................................................................ 10
4.5.1. Pour obtenir tout sur Nessus ................................................................................................ 10
4.6. User Mode Linux - UML ................................................................................................................. 10
4.6.1. Documents ........................................................................................................................ 10
5. Surveillance - Dissimulation - Maintien d'accs ............................................................................................. 11
5.1. Introduction ................................................................................................................................. 11
5.2. Les chevaux de Troie ..................................................................................................................... 11
5.2.1. Comment s'en protger ? ...................................................................................................... 11
5.3. Les backdoors .............................................................................................................................. 11
5.3.1. Les backdoors prsentes dans les logiciels. .............................................................................. 11
5.3.1.1. Comment s'en protger ? ........................................................................................... 11
5.3.2. Les backdoors ddies aux connexions distance ..................................................................... 11
5.3.2.1. Comment s'en proteger ? ........................................................................................... 11

Un petit guide pour la scurit

ii

Un petit guide pour la scurit

6.

7.

8.

9.

5.4. Les Rootkits .................................................................................................................................


5.4.1. Comment s'en protger ? ......................................................................................................
5.5. L'interception des mots de passe en rseau. .......................................................................................
5.5.1. Comment s'en protger ? ......................................................................................................
Dispositifs destructeurs ............................................................................................................................
6.1. Introduction .................................................................................................................................
6.2. Le virus .......................................................................................................................................
6.2.1. Comment s'en protger ? ......................................................................................................
6.3. Les vers .......................................................................................................................................
6.3.1. Comment s'en protger ? ......................................................................................................
6.4. Les bombes logiques .....................................................................................................................
6.4.1. Comment s'en protger ? ......................................................................................................
6.5. Les attaques par dni de services .....................................................................................................
6.5.1. Le SYN ood ......................................................................................................................
6.5.1.1. Comment s'en protger ? ...........................................................................................
6.5.2. L'UDP Flood .......................................................................................................................
6.5.2.1. Comment s'en protger ? ...........................................................................................
6.5.3. La fragmentation de paquets ................................................................................................
6.5.4. Ping of death .....................................................................................................................
6.5.5. Attaque par rexion : Smurng ............................................................................................
6.5.5.1. Comment s'en protger ? ...........................................................................................
6.5.6. Dnis de services distribus ..................................................................................................
6.5.7. Bombes e-mail ...................................................................................................................
6.5.7.1. Comment s'en protger ? ...........................................................................................
Scurisation des mots de passe ..................................................................................................................
7.1. Introduction .................................................................................................................................
7.2. L'attaque par dictionnaire ...............................................................................................................
7.3. Le brute forcing ............................................................................................................................
7.4. Tester la abilit de vos mots de passe ! ............................................................................................
7.5. Choisir le bon mot de passe ............................................................................................................
7.6. Prvenir l'utilisateur ......................................................................................................................
La base des attaques rseaux .....................................................................................................................
8.1. Introduction .................................................................................................................................
8.2. Dtournement de ux ....................................................................................................................
8.2.1. ARP-Poisoning ...................................................................................................................
8.2.1.1. Comment s'en protger ? ...........................................................................................
8.2.1.2. Documents ..............................................................................................................
8.2.2. Dsynchronisation TCP ........................................................................................................
8.3. Man In the Middle - MITM .............................................................................................................
8.3.1. Document .........................................................................................................................
8.4. Encapsulation d'IP dans d'autres protocoles. ......................................................................................
Description d'attaques sur diffrents protocoles ............................................................................................
9.1. Introduction .................................................................................................................................
9.2. Dynamic Host Conguration Protocol - DHCP ....................................................................................
9.2.1. Attaque par puisement de ressources ....................................................................................
9.2.2. Faux serveurs DHCP ............................................................................................................
9.2.3. Comment s'en protger ? ......................................................................................................
9.2.4. Documents ........................................................................................................................
9.3. Domain Name Service - DNS ...........................................................................................................
9.3.1. Le DNS ID spoong .............................................................................................................
9.3.2. Le DNS cache poisoning ......................................................................................................
9.3.3. Comment s'en protger ? ......................................................................................................
9.3.4. Documents ........................................................................................................................
9.4. FINGER .......................................................................................................................................
9.4.1. Comment s'en proteger ? ......................................................................................................
9.5. FTP ............................................................................................................................................
9.5.1. Le serveur FTP anonyme .....................................................................................................
9.5.1.1. Boucing attack - Attaque par rebonds ...........................................................................
9.5.2. Comment s'en protger ? ......................................................................................................
9.6. HTTP ..........................................................................................................................................
9.6.1. Les serveurs trop bavards ....................................................................................................
9.6.2. Vulnrabilits lies aux applications web ................................................................................
9.6.3. Comment se protger ? ........................................................................................................
9.7. IDENT .........................................................................................................................................
9.7.1. Comment s'en protger ? ......................................................................................................
9.8. IP et l'IP-Spoong .........................................................................................................................
9.8.1. Un peu de thorie ... ...........................................................................................................
9.8.2. Prvenir l'IP spoong grce Nmap .......................................................................................
9.8.3. Comment s'en protger ? ......................................................................................................
9.8.4. Document .........................................................................................................................
9.9. NETBIOS .....................................................................................................................................

Un petit guide pour la scurit

12
12
12
12
14
14
14
14
14
14
14
14
14
15
15
15
15
15
15
15
15
15
15
16
17
17
17
17
17
17
18
19
19
19
19
19
19
20
20
20
20
21
21
21
21
21
21
21
22
22
22
23
23
23
24
24
24
24
24
25
25
25
25
25
25
26
26
27
28
28
28

iii

Un petit guide pour la scurit


9.9.1. Comment s'en protger ? ...................................................................................................... 28
9.9.2. Document ......................................................................................................................... 28
9.10. Network File System - NFS ............................................................................................................ 28
9.10.1. Les attaques ..................................................................................................................... 28
9.10.2. Comment s'en protger ? .................................................................................................... 28
9.11. Network Information Service - NIS ................................................................................................. 28
9.11.1. Les attaques ..................................................................................................................... 29
9.11.2. Comment s'en protger ? .................................................................................................... 29
9.12. PORTMAP .................................................................................................................................. 29
9.12.1. Comment s'en protger ? .................................................................................................... 29
9.13. Le protocole SMB ........................................................................................................................ 29
9.13.1. Les scans de SMB shares .................................................................................................... 29
9.13.2. Comment s'en protger ? .................................................................................................... 29
9.13.3. Document ........................................................................................................................ 30
9.14. Le service de messagerie - SMTP .................................................................................................... 30
9.14.1. Comment s'en protger ? .................................................................................................... 30
9.15. SQL ........................................................................................................................................... 30
9.15.1. L'injection SQL ou SQL-Injection .......................................................................................... 30
9.15.2. Comment s'en protger ? .................................................................................................... 30
9.15.3. Document ........................................................................................................................ 30
9.16. SSH ........................................................................................................................................... 30
9.17. TELNET ..................................................................................................................................... 30
9.17.1. Comment s'en protger ? .................................................................................................... 31
9.18. XWINDOW ................................................................................................................................. 31
9.18.1. Les attaques ..................................................................................................................... 31
9.18.2. Comment s'en proteger ? .................................................................................................... 31
9.19. Peer To Peer (eDonkey, Kazaa, etc.) ................................................................................................. 31
9.19.1. Les outils Peer To Peer sont des vecteurs de virus ................................................................... 31
9.19.2. Comment s'en protger ? .................................................................................................... 31
10. Scurit avance .................................................................................................................................... 32
10.1. Introduction ............................................................................................................................... 32
10.2. L'architecture scurise ................................................................................................................. 32
10.2.1. Le rseau de dpart ........................................................................................................... 32
10.2.2. Le premier niveau de scurit ............................................................................................. 32
10.2.3. Le deuxime niveau de scurisation ..................................................................................... 32
10.2.4. Les niveaux plus levs ...................................................................................................... 33
10.3. Dveloppez vos propres utilitaires scurit ....................................................................................... 33
10.3.1. Le programme .................................................................................................................. 33
10.3.2. Documents ....................................................................................................................... 37
A. Annexes ................................................................................................................................................ 38
A.1. Les sites et revues consulter rgulierement ..................................................................................... 38
A.2. Remerciements ............................................................................................................................ 38

Un petit guide pour la scurit

iv

Avant-propos
Qui connat l'autre et se connat, en cent combats ne sera point dfait; qui ne connat l'autre mais se connat, sera vainqueur
une fois sur deux; qui ne connat pas plus l'autre qu'il ne se connat sera toujours dfait.
L'art de la guerre - Sun Tzu

1.Pourquoi ce guide ?
Ce guide a t ralis suite un audit de scurit que j'ai ralis pour mon cole et aux deux confrences sur la scurit rseau
prsentes au groupe d'utilisateurs Linux de NANCY (coucou le Mirabellug). Je ne suis pas spcialiste en scurit rseau ; j'ai
juste crit ce guide dans le but de donner des administrateurs ou des particuliers, un descriptif technique et un manuel
d'auto formation la scurit rseau.
La plupart des administrateurs ne sont pas spcialistes en scurit, et peuvent tre perdus devant un problme de ce type. Le
masse d'informations disponible sur Internet est parfois confuse, dense ou trs technique. Ce guide sert de point de dpart
et d'introduction la scurit. Il a t pens dans un but volutif. Si vous voulez participer en crivant ou en compltant des
chapitres, n'hsitez pas me contacter l'adresse guidesecu(at)free.fr.
Le principe est simple : une description assez succincte sur une attaque et ensuite une description complte des mthodes de
protection. Vos expriences personnelles et vos remarques sont aussi les bienvenues. videmment, 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 d'une 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 d'un problme de scurit
particulier, une deuxime pour dcrire les diffrents moyens de s'en 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 d'informations distance, notamment les scanners.
Il montre l'utilit qu'ils 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 s'intresse 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 dveloppement d'outils ddis uniquement la scurit.

2.O trouver ce guide ?


C'est trs simple, il y a plusieurs adresses :
Le site ofciel : publication i(france)1
Le site du Mirabellug : publication Mirabellug2
Le site Linux France : publication inetdoc.net3

3.Quels sont les systmes d'exploitation viss ?


La majorit des programmes dfensifs utiliss et dcrits dans ce guide sont disponibles sous LINUX. Je n'oublierai pas
de parler de la scurit pour les produits Microso. Cependant, Linux possde une certaine avance sur Microso 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 !

1
2
3

http://guidesecu.ifrance.com/guide/guidesecu.pdf
http://www.mirabellug.org/docs/securite/guidesecu.pdf
http://www.inetdoc.net/guides/tutoriel-secu/

Un petit guide pour la scurit

CHAPITRE 1

Scurisation de base
1.1.Introduction
Le but de ce chapitre est de donner diffrentes mthodes pour scuriser physiquement une machine. Il faut savoir qu'une
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.
L'objectif est d'empcher une personne mal intentionne d'obtenir les accs administrateur sur la machine qu'elle 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.2.Premier conseil : Verrouillez les stations


N'hsitez pas poser un cadenas sur les tours des machines, cela empchera tout d'abord le vol de matriel, mais cela vitera
aussi d'avoir des disques durs monts en secret avec toute une panoplie d'utilitaires 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.3.Pour Linux
vitez d'avoir l'option failsafe au dmarrage propos par Lilo. Cette option peut permettre d'obtenir les accs root (sans mot
de passe) pour la maintenance du systme.

1.4.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 d'utiliser Windows 95, 98 et Me, le
niveau de scurit offert par ces systmes en natif n'tant pas assez lev.

1.5.Le lecteur de disquettes


vitez le boot sur disquette (certaines versions Linux s'installent 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 d'en modier le(s)
contenu(s). De plus, Trinux1 est livr avec un panel assez impressionnant d'utilitaires 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.6.Le lecteur de CDROM


Des utilitaires comme Knoppix2 (systme Linux bootant sur un seul CD et contenant lui aussi un nombre impressionnant
d'utilitaires divers) peuvent tre utiliss pour monter les diffrents systmes de chiers prsents sur le(s) disque(s) dur(s).

1.7.N'oubliez pas le mot de passe pour le BIOS


N'oubliez de protger l'accs du BIOS par un mot de passe ! Attention certains BIOS peuvent comporter des failles logicielles
permettant d'outrepasser ces protections. Encore une fois, il ne faut pas oublier de cadenasser les tours, an d'viter des
utilisateurs (encore) mal intentionns de retirer la pile du BIOS et d'outrepasser la protection par mot de passe.

1
2

http://www.trinux.org
http://www.knoppixfr.org

Un petit guide pour la scurit

CHAPITRE 2

La collecte d'informations
2.1.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. C'est pour cette raison qu'il est
indispensable de les dcrire ds le dbut. Vous apprendrez galement les utiliser pour votre propre protection.

2.2.Le Scanner
L'objectif 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 cette 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 Nmap1, un des scanners les plus utiliss et un des plus performants.
Nmap est disponible sous Windows et Linux en paquet dans toutes les distributions majeures. La version dcrite dans ce
chapitre tant celle disponible sous Linux. Je dcrirai dans une premire partie ce qu'est un scanner. Ensuite, je me focaliserai
sur Nmap et je le prsenterai d'un 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 superutilisateur root !.

2.2.1.Qu'est ce qu'un scanner ?


C'est trs simple : lorsqu'un 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 l'adresse IP
du serveur et le numro de port associ au service. Ce numro de port a t attribu suivant le document standard RFC10102
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... Lorsqu'un service est en coute sur un port, on dit que le numro de port associ ce
service est ouvert. L'intrt 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 l'OS tournant sur le serveur (ces fonctionnalits seront dcrites dans ce chapitre avecNmap). D'autres
scanners comme Nessus3 permettent de tester diffrentes failles connues sur ces services. Voir Section4.5, Nessus.

2.2.1.1.Exemple avec Nmap


Utilisons Nmap pour connatre les services en coute sur la machine d'adresse 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
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 s'excutant 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.2.2.Comment marche Nmap ?


Je prsenterai de manire trs succincte Nmap et me focaliserai principalement sur les fonctions les plus utilises.
Pour connatre les ports ouverts sur une machine, Nmap procde l'envoi 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 d'envois et donc, diffrents types de
rponses.
1
2
3

http://www.insecure.org
http://www.faqs.org/rfcs/rfc1010.html
http://www.nessus.org

Un petit guide pour la scurit

La collecte d'informations
Nous nous intresserons aux scans utilisant le protocole TCP (les scans UDP et ICMP tant possibles eux aussi).

2.2.2.1.Le scan vanilla TCP connect


Nmap procde l'appel 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.2.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 l'appel de nmap avec l'option -sS :


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

Les scans Xmas, FIN et NULL


Le scan FIN consiste en l'envoi de paquets TCP avec seulement le ag FIN arm. La commande se fait par l'appel de
nmap avec l'option -sF :
[root@nowhere.net /root]# nmap -sF [adresse IP de la machine cible]

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

Le Xmas scan (traduisez le scan de Nol) consiste en l'envoi de paquets TCP avec les ags FIN/URG/PUSH arms. La
commande se fait par l'appel de nmap avec l'option -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 Microso. Illustration :

Un petit guide pour la scurit

La collecte d'informations

2.2.3.La dtermination du systme d'exploitation avec Nmap


Si on lance Nmap avec l'option -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
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

Notez bien cette ligne : Linux 2.4.X.


Nmap parvient dterminer le systme d'exploitation tournant sur la machine cible. La machine cible utilise un noyau Linux
2.4.21-grsec. Nmap ne s'est pas tromp.
Il faut savoir que chaque systme d'exploitation construit ses paquets d'une manire bien particulire. Certains champs au
niveau de la couche IP ou TCP sont propres chaque systme d'exploitation. Nmap contient une base de donnes d'un 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.2.4.Quel est l'intret d'utiliser 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. N'hsitez 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.2.5.Comment s'en protger ?


Congurer votre pare-feu pour empcher les scans :
[root@nowhere /root]# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Cette commande permet de dtecter l'envoi 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 n'est pas iptables) supporte la dtection de scans.

2.2.6.Documents
Je vous conseille de lire Utiliser iptables :Spcications de ltrage4.
Divers articles cris par le dveloppeur de Nmap sur le scanning (en anglais) : The Art of Port Scanning5, Remote OS
detection via TCP/IP Stack FingerPrinting6 et ICMP based remote OS TCP/IP stack ngerprinting techniques7.

2.3.Identifier 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.
L'objectif de ce chapitre est de prsenter une parade pour viter de donner trop d'informations 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 d'informations :
4

http://netlter.org/documentation/HOWTO/fr/packet-ltering-HOWTO-7.html#ss7.3
http://www.phrack.org/issues.html?issue=51&xml:id=11#article
http://www.phrack.org/issues.html?issue=54&xml:id=9#article
7
http://www.phrack.org/issues.html?issue=57&xml:id=7#article
5
6

Un petit guide pour la scurit

La collecte d'informations

[root@nowhere.net /root]# telnet 192.168.1.1


Trying 192.168.1.1...
Connected to 192.168.1.1.
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 d'autres 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 d'envoyer des scripts directement sur
le logiciel souhait sans se soucier des limites protocolaires.
Le plus rput de ces programmes est sans doute Netcat.

2.3.1.Netcat
Netcat permet d'tablir une connexion (TCP ou UDP) sur un port souhait et d'y envoyer ou d'y 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.


Netcat8 comporte plein d'autres fonctionnalits (comme l'envoi de scripts ...). Le pirate n'a plus qu' trouver une faille
applicative (voir chapitre suivant) sur le logiciel correspondant.

2.3.1.1.Comment s'en protger ?


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

http://packetstormsecurity.nl/UNIX/netcat/

Un petit guide pour la scurit

CHAPITRE 3

Les failles applicatives


3.1.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.2.Les installations par dfaut


Lors d'une installation, beaucoup de services peuvent tre installs par dfaut (un serveur Web, FTP ...). Ces services peuvent
contenir les diffrents types de failles introduites auparavant. L'important est de bien contrler lors de l'installation, 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 Section2.2, Le Scanner.
Mme si certains logiciels ne comportent pas de failles connues, ils peuvent quand mme donner des informations aux
pirates (voir section [FIXIT] ).

3.3.Les mauvaises configurations


Lorsqu'une application est mal paramtre, elle peut laisser l'accs libre certaines bases de donnes sensibles (chiers de
mots de passe, d'utilisateurs) ou de permettre d'excuter des commandes ou des scripts malveillants.
Il est important de bien lire le manuel avant d'activer 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 d'excution de commandes systme.
Le plus important est de restreindre au maximun les accs certains chiers sensibles et aux commandes systmes.

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

3.4.1.Des dnis de services applicatifs


Ce type de faille empche le logiciel de fonctionner et ainsi de rpondre aux requtes demandes (d'o l'appellation dni de
service). La technique est simple, il suft d'utiliser un bogue connu qui va faire planter le logiciel assurant un service.

3.4.2.Outrepassement de droits
Les bogues de type dpassement de buffer ou d'exploitation 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 d'obtenir un interprteur de commande au niveau administrateur (uid root) sans aucune authentication.

3.4.3.Les scripts
Malheureusement, une mauvaise programmation de scripts ou l'utilisation de fonctions bogues peut tre source de failles
de scurit. Il convient d'tre trs attentif au niveau du dveloppement d'un script.

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

3.6.Comment s'en proteger ?


Face aux multiples failles de scurit des systmes d'information, 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
d'informations :
Les sites d'informations 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.

Un petit guide pour la scurit

Les failles applicatives


A la tte de l'Internet, on trouve le CERT1 de l'universit de Carnegie Mellon. Au niveau national, on dispose de deux
CERTs : le CERT RENATER2 dont les archives des avis de scurit3 sont publiques et le Centre d'Expertise gouvernemental
de Rponse et de Traitement des Attaques informatiques4.
Sur un plan moins ofciel, les Archives Bugtraq5 (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 French6
se veut l'quivalent franais.
Certains sites comme .:[packet storm security]:.7 ou SecurityFocus8 contiennent aussi de nombreuses informations. Le
site SecurityFocus9 fournit un moteur de recherches thmatique pratique pour lister les vulnrabilits lies un logiciel.
La dtection d'intrusion rseau
Les systmes de dtection d'intrusion 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 d'excution d'exploits
utilisant les bogues de dpassement de mmoire (pile et/ou tas). OpenWall10 et grsecurity11 sont deux exemples
caractristiques.
La limitation du nombre de programmes s'excutant avec les droits administrateur
Il est toujours bon de reprer les programmes s'excutant avec les droits administrateur. Ainsi, vous pouvez changer leurs
droits pour qu'ils ne deviennent pas un point critique pour la vulnrabilit du systme. Sous linux, la simple commande :
# find / -perm +6000 vous permettra de lister tous les programmes s'excutant avec les droits administrateur.

http://www.cert.org
http://www.renater.fr/Securite/CERT_Renater.htm
3
http://www.cert.uhp-nancy.fr/
4
http://http://www.certa.ssi.gouv.fr/
5
http://seclists.org/bugtraq/
6
http://www.securityfocus.com/archive/131/description
7
http://packetstormsecurity.nl/
8
http://www.securityfocus.com/
9
http://www.securityfocus.com/
10
http://www.openwall.com/
11
http://www.grsecurity.org/
2

Un petit guide pour la scurit

CHAPITRE 4

Les outils indispensables pour la protection


4.1.Introduction
Les pare-feux (rewalls), les tunnels et les systmes de dtection d'intrusion 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.2.Le pare-feu firewall


La conguration d'un pare-feu peut s'avrer tre un sujet trs difcile traiter. Cette conguration est surtout tablie en
fonction de vos besoins personnels.
L'objectif de ce chapitre est de donner des conseils suivre pour bien utiliser un pare-feu. Ensuite, nous nous intresserons
aux diffrentes mthodes d'attaques contre les pare-feux.

4.2.1.La configuration
Pour bien congurer son pare-feu, il suft de bien respecter les conseils suivants :
Essayez de limiter l'accs votre rseau des utilisateurs connus utilisant une adresse IP statique. Vous pourrez ainsi
rejeter toutes les autres requtes venant d'utilisateurs 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, c'est 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, p, web...). Ensuite, il faut congurer le rewall pour
rejeter les connexions depuis l'intrieur vers l'extrieur sur des services diffrant de ceux dnis.

4.2.2.Les attaques contre les firewalls


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

4.2.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

Les ports 21 (p) et 22 (ssh) sont ltrs.

4.2.2.2.Comment s'en protger ?


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

4.2.2.3.Le firewalking
Cette technique de dvoilement des rgles de rewalling repose sur un unique champ de l'en-tte IP, le TTL (Time To Live),
ce champ reprsentant la dure de vie d'un paquet. Il est x ds son envoi par la pile de protocole du systme et est diminu
d'une unit chaque fois qu'il traverse un quipement assurant le routage ; quand ce champ est gal 0, le paquet est jet
la poubelle.
Chaque passage d'un routeur un autre est appel un saut.
C'est 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,

Un petit guide pour la scurit

Les outils indispensables pour la protection


ce qui permet de rcuprer l'adresse 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 d'erreur : on rcupre ainsi l'adresse
du deuxime routeur.
Si il y a N sauts jusqu'au rseau nal, on ritre l'opration 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. rewalk1, 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 n'y a aucune rponse.
rewalk2 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 l'metteur peuvent fausser l'analyse.

4.3.Les systmes de dtection d'intrusion (HIDS/NIDS)


Systme de dtection d'intrusion, 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 dbordements de droits (obtention du compte root d'une manire
suspecte) et d'autres types d'attaques, il contient une base de donnes sur diffrentes vulnrabilits.
Systme de dtection d'intrusion 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 s'effectuant sur l'une 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 qu'il
analyse automatiquement les ux de donnes pour dtecter une attaque.
Cette section prsentera deux systmes de dtection d'intrusion : 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.3.1.Prelude-NIDS
Prelude Hybrid IDS3 est un des dtecteurs d'intrusions les plus connus. Prelude est disponible et libre sur les plateformes
Linux, FreeBSD et Windows.
Prelude possde une architecture 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 d'avoir
divers composants installs sur diffrentes machines et de rduire ainsi la surcharge d'applications.
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 trac, pour y dtecter d'ventuelles signatures d'attaques. La sonde locale assure la surveillance d'une
seule machine, il analyse le comportement du systme pour y dtecter des tentatives d'exploitation de vulnrabilits internes.
Les sondes signalent les tentatives d'attaques par des alertes. Ces alertes sont reues 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.3.2.Snort
Snort tlchargeable librement sur www.snort.org est un NIDS lui aussi. Il n'est 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 d'intrusion. Le troisime mode permet lui d'analyser le trac rseau pour
y dtecter d'ventuelles attaques.
Pour une description complte de Snort (installation, conguration et utilisation) consultez ce site : http://www.snort.org/
docs/ (en anglais).

4.4.Le tunneling
Nous allons dcrire dans cette section diffrentes mthodes pour scuriser vos transactions, c'est--dire crer un VPN (Virtual
Private Network). Un rseau priv virtuel (VPN) est utilis pour tablir des communications scurises en s'appuyant 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 d'autres avantages que la scurisation du trac, il permet
par exemple d'conomiser 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.
1
2
3

http://www.packetfactory.net/rewalk/
http://www.packetfactory.net/rewalk/
http://www.prelude-ids.org/

Un petit guide pour la scurit

Les outils indispensables pour la protection


IPsec est compos de plusieurs protocoles diffrents : AH, ESP, IPcomp et IKE.

4.4.1.Le protocole AH
Le protocole AH (Authentication Header) permet de garantir l'authenticit des paquets changs en leur inscrivant une
somme de contrle (de l'en-tte IP jusqu' la n du paquet) chiffre.

4.4.2.Le protocole ESP


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

4.4.3.Le protocole IPcomp


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

4.4.4.Le protocole IKE


Le protocole IKE (Internet Key Exchange) est utilis pour l'change des cls utilises pour l'encryptage.

4.4.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.4.6.Les limitations d'IPsec


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

4.4.7.Documents
Description gnrale des tunnels et implmentation sous Linux : MISC Magazine n15 - IPsec et Linux 2.6 http://
www.securiteinfo.com/cryptographie/IPSec.shtml Description gnrale des tunnels et implmentation sous Windows :
http://www.laboratoire-microso.org/articles/network/ipsec/

4.5.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 d'une partie serveur (qui contient une base de donnes regroupant diffrents types de vulnrabilits) et
une partie client. L'utilisateur se connecte sur le serveur grce au client et aprs authentication, il ordonne au serveur de
procder aux tests d'une ou plusieurs machines. Le client reoit ensuite les rsultats du test.
Nessus est disponible sous Linux et Windows, et il est entirement gratuit.

4.5.1.Pour obtenir tout sur Nessus


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

4.6.User Mode Linux - UML


User Mode Linux est un dispositif permettant de lancer un ou plusieurs noyau(x) linux dans l'espace utilisateur (comme un
simple programme). En clair, il permet d'avoir plusieurs machines virtuelles sur une seule machine physique hte excutant
Linux. Les avantages sont nombreux :
Si une machine virtuelle plante, le systme hte n'est 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 s'affranchir de chroot (pour, par exemple, la ralisation de serveurs FTP) et de toutes
ses failles de scurit.

4.6.1.Documents
La page web de User Mode Linux : http://user-mode-linux.sourceforge.net

Un petit guide pour la scurit

10

CHAPITRE 5

Surveillance - Dissimulation - Maintien d'accs


5.1.Introduction
Nous prsenterons dans ce chapitre les programmes utiliss par les pirates pour dissimuler, surveiller et maintenir leur accs
sur un systme d'information. Nous prsenterons les moyens de s'en protger.

5.2.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 l'excution 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.) l'insu
de l'utilisateur.

5.2.1.Comment s'en 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 l'ensemble du chier) avec la
sienne permet de savoir directement si l'on est infect.
Il est aussi conseill de consulter les sites suivants pour vrier que vos programmes ne contiennent pas de chevaux de Troie :
Le CERT1 (Computer Emergency Response Team) est un organisme s'occupant des problmes de scurit sur Internet. Il
recense les diffrents problmes de scurit et publie des articles (advisories) pour les dcrire.
Bugtraq : http://seclists.org/bugtraq/

5.3.Les backdoors
Les backdoors sont des accs cachs sur un systme ou sur une application. Le principe d'une backdoor est similaire celui
du cheval de Troie. L'objectif est de modier ou d'utiliser un programme pour accder discretement un ordinateur distant,
modier le comportement d'un programme, devenir administrateur.

5.3.1.Les backdoors prsentes dans les logiciels.


Parfois, certains logiciels (messagerie, utilitaires systmes) peuvent contenir des backdoors, c'est--dire que, pour certaines
commandes suivies d'arguments particuliers ou avec un mot de passe bien dni, le logiciel peut avoir un comportement
diffrent (permettre l'utilisateur de devenir root, renvoyer un shell systme l'utilisateur, 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, l'un des pres d'UNIX, avoue avoir modi
l'application /bin/login en permettant l'accs direct au systme par la saisie d'un 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.

5.3.1.1.Comment s'en protger ?


Il convient de tlcharger ses applications sur le site du distributeur ou du programmeur. Utiliser des serveurs de
tlchargement non lis l'auteur de l'application peut se rvler dangereux.
Il est aussi recommand de vrier les checksums s'il 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.3.2.Les backdoors ddies aux connexions distance


Ces backdoors peuvent trs bien faire partie de la premire catgorie. Comme il l'a 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 n'a plus qu' se connecter sur ce programme pour rcuprer son accs sur
la machine.

5.3.2.1.Comment s'en proteger ?


Nmap peut se rvler tre une aide prcieuse pour les dbusquer. Si, en procdant au scan d'une machine, vous constatez
qu'un port non autoris est en coute, il serait bon de vrier celui-ci.
Les sites consulter :
1

http://www.cert.org

Un petit guide pour la scurit

11

Surveillance - Dissimulation - Maintien d'accs


Le CERT2 en anglais.
Bugtraq : http://seclists.org/bugtraq/ (en anglais) et http://www.securityfocus.com/archive/131/description.

5.4.Les Rootkits
Le rootkit est un programme permettant d'automatiser la dissimulation et l'effacement des traces d'un pirate sur une
machine. L'objectif d'un rootkit est de modier les commandes permettant d'administrer le systme, de cacher les ports
ouverts par le pirate.
Les premiers rootkits taient assez basiques, ils modiaient juste les commandes ls, ps, netstat.
L'administrateur 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 bibliothques partages pour fonctionner.
Les nouveaux rootkits modiaient donc le code de ces bibliothques pour modier le comportement de ces commandes
l'avantage du pirate.
Encore une fois, ceci tait dtectable. Donc une troisime gnration de rootkits est ne an de modier directement le
comportement du noyau, par le biais de modules chargs en mmoire (LKM). C'est l'heure actuelle la dernire gnration.
Diffrents rootkits sont disponibles sur Linux.
Je ne donnerai (volontairement) pas dans cette partie une description complte de l'utilisation des rootkits. Cela n'a aucun
intrt pour ce guide.
La plupart des rootkits utilisent le principe des backdoors (Section5.3, Les backdoors) pour permettre au pirate de se
connecter selon son envie sur un systme.

5.4.1.Comment s'en protger ?


1.

Les checksums. Une base de donnes de checksums sur les diffrents chiers systme peut dj constituer une bonne
parade. Je vous conseille d'effectuer des checksums la n d'une 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 l'ai 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. D'o son comportement pourrait tre modi indirectement par un rootkit attaquant les librairies
partages. Pour viter ce genre de dsagrment, compilez une partie des programmes vitaux en statique, ainsi vous
disposerez d'une trousse de secours en cas d'infection par rootkits.
Bien sr, pour compiler les programmes vitaux en statique, faut-il encore disposer d'un OS qui permette d'accder aux
sources de ces programmes vitaux...

3.

Chkrootkit. Chkrootkit (pour CHecK ROOTKIT) vous permet de dtecter la prsence d'un 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.5.L'interception des mots de passe en rseau.


Une autre technique utilise pour collecter des informations (mots de passe par exemple) est l'utilisation d'un 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. D'autres sniffers permettent de rcuprer les
mots de passe en les afchant directement l'cran associ avec le login, l'adresse du client et celle du serveur (comme
dsniffdisponible sur www.packetstormsecurity.org).
Wiresharkdisponible l'adresse http://www.wireshark.org/ permet par exemple d'afcher toutes les transactions en cours
sur le rseau.
Cependant, le sniffer reste un outil puissant pour la dtection d'intrusion car, premirement, il garde une trace de tous les
changes ayant cours sur le rseau. Deuximement, il se rvle trs utile pour dmasquer un scan (un grand nombre de
paquets envoys d'un seul coup), de tracer l'adresse d'un 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.5.1.Comment s'en protger ?


L, c'est trs difcile. Un sniffer est passif, il n'envoie aucun paquet, il ne fait qu'intercepter. Mais la carte rseau tant en
mode transparent, son comportement s'en trouve chang, son temps et sa faon de rpondre certains paquets sont modis.
2

http://www.cert.org

Un petit guide pour la scurit

12

Surveillance - Dissimulation - Maintien d'accs


On peut dtecter la prsence d'un sniffer grce ce changement de comportement. Le programme AntiSniffdisponible sur
windows NT et Linux l'adresse http://packetstormsecurity.org/sniffers/antisniff/ de Lopht Heavy Industries 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 s'avre tre une dfense efcace contre le snifng.
L'utilisation de tunnels est traite dans la Section4.4, Le tunneling.

Un petit guide pour la scurit

13

CHAPITRE 6

Dispositifs destructeurs
6.1.Introduction
Les dispositifs destructeurs sont utiliss pour paralyser, saturer ou dtruire un systme d'information. Ils constituent l'espce
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
d'expliquer leurs fonctionnements et la faon de les combattre.

6.2.Le virus
Le virus est un programme dont le seul but est de consommer ou de paralyser des ressources systme. Le virus s'autoduplique
pour mieux infecter le systme, il se propage en infectant tour tour les chiers. Les effets d'une contamination varient :
chiers effacs, disque dur format, saturation des disques, modication du MBR, etc.
La grande majorit d'entre eux existent sur les plates-formes Microso, 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 s'automodier pour chapper une ventuelle dtection (virus
polymorphes). D'autres types peuvent tenter de leurrer le systme en s'installant dans des secteurs dfectueux ou non utiliss
(virus furtifs) ...

6.2.1.Comment s'en 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 l'volution et l'apparition de nouveaux virus ; pour cela, consulter les sites (ainsi que pour tous
les autres dispositifs destructeurs dcrits dans ce chapitre) :
Le CERT1 en anglais.
Les sites du CNRS : Liste de diffusion du CNRS sur les virus2

6.3.Les vers
Les vers sont du mme acabit que les virus, sauf qu'ils n'utilisent pas ncessairement un chier pour se propager. Ils sont
aussi capables de se dupliquer et de se dplacer au travers d'un 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 l'Internet).
Les macro-vers utiliseront les pices jointes contenant des documents bureautiques infects (exemple du ver Nimda).
Les vers d'email sont contenus dans une pice jointe comprenant un code malicieux excut automatiquement par le logiciel
de courrier lectronique ou manuellement par l'utilisateur.

6.3.1.Comment s'en protger ?


Comme pour les virus, l'antivirus se rvle tre une parade efcace. Consultez les listes cites dans la Section6.2, Le virus.

6.4.Les bombes logiques


Les bombes logiques sont aussi nfastes que les virus ou les vers et sont la cause de dgts similaires. La diffrence est que
la bombe logique a besoin d'un dtonateur pour s'activer, c'est--dire qu'elle attend une date ou une action bien prcise de
l'utilisateur pour exploser.

6.4.1.Comment s'en protger ?


Utilisez un anti-virus performant (Mc Afee, Norton ...) rgulirement mis jour.
Consultez les sites dcrits dans la Section6.2, Le virus.

6.5.Les attaques par dni de services


Ce type d'attaque est la plus nervante qui soit. Elles ont pour but de saturer le rseau ou le systme.
1
2

http://www.cert.org
http://www.services.cnrs.fr/wws/info/sos-virus

Un petit guide pour la scurit

14

Dispositifs destructeurs

6.5.1.Le SYN flood


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.5.1.1.Comment s'en protger ?


Exemple avec iptables limitant les demandes d'tablissement 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 ltrage3.

6.5.2.L'UDP Flood
De la mme manire que pour le SYN ooding, l'attaquant envoie un grand nombre de requtes UDP sur une machine. Le
trac UDP tant prioritaire sur le trac TCP, ce type d'attaque peut vite troubler et saturer le trac transitant sur le rseau.
La plus clbre attaque utilisant l'UDP-ooding est le Chargen Denial of Service Attack. Un pirate envoie une requte sur le
port echo d'une machine A indiquant comme port source celui du port chargen d'une 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.

6.5.2.1.Comment s'en 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.5.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 d'un paquet TCP contenant comme donne le premier
fragment. La pile TCP/IP peut s'avrer incapable de grer cette exception et le reste du trac.
Cette faille est trs connue sur les piles de Windows 95 et 98.

6.5.4.Ping of death
Le principe est d'envoyer un paquet ICMP avec une quantit de donnes suprieure la taille maximale d'un paquet IP .
Encore une fois, la pile peut s'avrer incapable de grer cette exception et le reste du trac.

6.5.5.Attaque par rflexion : Smurfing


Cette attaque est base sur le protocole ICMP. Lorsqu'on 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 multipli 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.5.5.1.Comment s'en protger ?


Congurez votre rewall pour limiter le trafc ICMP. Exemple avec iptables :
# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT

Pour plus de dtails sur cette commande, je vous conseille de lire Utiliser iptables :Spcications de ltrage4.

6.5.6.Dnis de services distribus


Plusieurs types d'attaques sont lances en parallle partir de plusieurs sources.

6.5.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.
3
4

http://netlter.org/documentation/HOWTO/fr/packet-ltering-HOWTO-7.html#ss7.3
http://netlter.org/documentation/HOWTO/fr/packet-ltering-HOWTO-7.html#ss7.3

Un petit guide pour la scurit

15

Dispositifs destructeurs

6.5.7.1.Comment s'en protger ?


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

Un petit guide pour la scurit

16

CHAPITRE 7

Scurisation des mots de passe


7.1.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 d'information 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 l'outil adquat : un
perceur de mot de passe.
La plupart des algorithmes d'encryptage repose sur l'utilisation de fonctions sens unique. Ceci veut simplement dire qu'il
est impossible de dcrypter le mot de passe partir sa forme encrypte. L'attaque 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 d'attaques pour le craquage de mots de passe qui seront dnies dans ce chapitre.

7.2.L'attaque 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 d'un dictionnaire contenant les mots du langage courant. Le programme les encrypte
avec l'algorithme d'encryptage adquat un par un et les compare au mot de passe encrypt.
Ce type d'attaque est trs rapide. Un mot de passe mal choisi est vite dcouvert.

7.3.Le brute forcing


Si l'attaque 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 sufsamment long (suprieur
8 caractres), cette mthode a peu de chance d'aboutir. Si, de plus, des caractres spciaux sont ajouts comme des signes
de ponctuation, la mthode peut se rvler inefcace.
Il existe diffrents logiciels de perage de mots de passe en fonction du type d'encryptage (DES, MD5, special Microso ...).

7.4.Tester la fiabilit 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. L'encryptage peut tre du type MD5 ou DES. L'algorithme 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 s'tre rserv une "gche secrte" pour une dcryptage plus
rapide, je vous conseille d'utiliser d'autres algorithmes la place., RSA ...
Pour tester la rsistance de vos mots de passe, le logiciel John The Ripper John The Ripper est disponible sur http ://
www.openwall.com/john/ peut s'avrer tre une bonne aide. Il supporte un grand nombre d'algorithmes d'encryptage,
prsente un important paramtrage des attaques. John the Ripper est un programme distribu librement.
Sous Windows
Pour tester la abilit des mots sous Windows, l'administrateur pourra utiliser le logiciel John the Ripper. Idem sur
Windows ou sur Unix ou le logiciel LophtCrack de Lopht Heavy Industries Lophtcrack qui, lui, n'est 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
d'extension ".PWL" portant comme nom celui de l'utilisateur.
Le chiffrement utilis pour gnrer les mots de passe PWL est trs faible. Le programme Cain permet de tester leur
abilit.

7.5.Choisir le bon mot de passe


N'utilisez pas des mots de votre langage 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 minuscules.
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 t'Aime mon Amour.
donne : Ad,Jt'AmA, qui est un mot de passe assez costaud.

Un petit guide pour la scurit

17

Scurisation des mots de passe

7.6.Prvenir l'utilisateur
N'hsitez pas organiser des runions, faire circuler diffrents documents pour informer vos utilisateurs des problmes de
abilit des mots de passe.

Un petit guide pour la scurit

18

CHAPITRE 8

La base des attaques rseaux


8.1.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.2.Dtournement de flux
Les techniques de dtournement de ux servent rediriger le ux rseau vers un client, vers un serveur, ou vers une autre
machine.

8.2.1.ARP-Poisoning
Toute carte rseau possde une adresse physique. C'est cette adresse qui lui permet de recevoir les paquets qui lui
sont destins sur le rseau local. Cette adresse physique est associe l'adresse IP grce au protocole ARP. La table de
correspondance entre les adresses IP et les adresses physiques est contenue dans le cache ARP. Lorsqu'un change doit
s'tablir entre 2 machines du rseau local, ces deux machines envoient des requtes ARP avec l'adresse 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 l'adresse IP du rcepteur, tout
le ux IP dirig vers le rcepteur sera redirig vers l'attaquant. On dit qu'il a empoisonn le cache ARP du rcepteur.
Illustration :

8.2.1.1.Comment s'en 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 d'htes
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 l'administrateur systme.
Enn, On peut utiliser sous UNIX, un logiciel spcialis : arpwatch1 qui permet de surveiller tout le trac ARP.
Les NIDS peuvent aussi dtecter ce type d'attaques (notamment Prelude-IDS).

8.2.1.2.Documents
L'article Le arp-poisoning2 est une bonne introduction la problmatique.
1
2

p://p.ee.lbl.gov/
http://www.securite.teamlog.com/publication/6/10/102/

Un petit guide pour la scurit

19

La base des attaques rseaux


La section Addresss Resolution Protocol (ARP)3 du Guide to IP Layer Network Administration with Linux4 montre toutes les
possibilits d'interaction sur le protocole ARP avec le noyau Linux.

8.2.2.Dsynchronisation TCP
L'ARP-Poisining permet de rediriger tout le trac IP mais, si l'attaquant n'a 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, l'attaquant envoie des paquets mal forms au client avec une adresse IP
correspondant celle du serveur en y plaant des mauvais numros de squences, le client va croire qu'il a perdu la connexion
et stoppera ses changes avec le serveur. Mais si l'attaquant envoie les bons numros de squences au serveur, il rcuprera
la connexion pour lui.
Illustration :

8.3.Man In the Middle - MITM


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

8.3.1.Document
Le document Man-In-the-Middle Attack5 est trs complet sur cette question.

8.4.Encapsulation d'IP dans d'autres protocoles.


Certains logiciels permettent d'encapsuler le protocole IP dans d'autres protocoles comme SSH, HTTP, etc.. Ce type
d'encapsulation peut tre la base de nombreuses attaques rseaux.
Par exemple, imaginons cette situation : un pirate veut se connecter sur le port FTP (21) d'une machine A d'un rseau protg
par un rewall B. B n'autorise et n'assure 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.
3
4
5

http://linux-ip.net/html/ether-arp.html
http://linux-ip.net/html/index.html
http://www.giac.org/paper/gsec/455/man-in-the-middle-attack/101086

Un petit guide pour la scurit

20

CHAPITRE 9

Description d'attaques sur dirents protocoles


9.1.Introduction
Ce chapitre dcrit les failles intrinsques de diffrents protocoles. Intrinsques par le fait qu'elles 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 s'en protger.

9.2.Dynamic Host Configuration 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 d'allger la gestion du rseau en vitant d'avoir des congurations statiques maintenir sur chaque
machine. Malheureusement, le protocole DHCP comporte diverses failles que nous allons vous prsenter.

9.2.1.Attaque par puisement de ressources


Comme il l'a t dcrit, un serveur DHCP possde un stock d'adresses IP qu'il 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 n'est possible.
Si le service est mal administr ; c'est dire que les correspondances entre adresses MAC et IP se font dynamiquement
partir d'une plage d'adresses IP vacantes, le scnario suivant est possible.
Si un pirate gnre un grand nombre de requtes DHCP semblant venir d'un grand nombre de clients diffrents, le serveur
puisera vite son stock d'adresses. Les vrais clients ne pourront donc plus obtenir d'adresse IP : le trac rseau sera paralys.

9.2.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.2.3.Comment s'en protger ?


Chaque fois que c'est possible, il faut limiter le service DHCP une liste ferme de correspondances d'adresses MAC et IP.
De cette faon toute requte trangre cette liste est systmatiquement rejete.
Sous Windows, remplissez les champs de l'option 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 l'adresse MAC
00:C0:34:45:56:67 laquelle on fait correspondre : l'adresse 192.168.1.2, le routeur 192.168.1.1 et le serveur de noms
192.168.1.3.
host toto {
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;
}

S'il est impossible d'tablir 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 l'utilisation de mcanismes d'authentication plus stricts.
Assurez vous que vos serveurs utilisent ces versions de protocoles (Voir RFC31181).

9.2.4.Documents
Scurisation sous windows : [FIXIT]
Sous Linux : Installation d'un serveur DHCP2 et How to make Network Conguration as easy as DHCP3
1
2
3

http://www.faqs.org/rfcs/rfc3118.html
http://www.linux-france.org/prj/edu/archinet/systeme/ch28.html
http://www.linux-mag.com/id/473/

Un petit guide pour la scurit

21

Description d'attaques sur diffrents protocoles

9.3.Domain Name Service - DNS


Le protocole DNS assure la correspondance entre le nom d'une 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.3.1.Le DNS ID spoofing


C'est la premire attaque que nous allons dcrire. Elle aboutit un dtournement de ux entre deux machines l'avantage
du pirate.
Imaginons qu'un 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 l'adresse IP de B, cette requte sera identie par un numero d' identication
(ID). Le serveur rpond cette requte en fournissant l'adresse IP de B et en utilisant le mme numro d'ID.
Ce numro a une valeur comprise entre 0 et 65535.
Le DNS ID spoong a pour but de d'envoyer une fausse rponse une requte DNS avant le serveur DNS. De cette faon, le
pirate peut rediriger vers lui le trac destination d'une machine qu'il l'intresse.
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 :

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

9.3.2.Le DNS cache poisoning


Le principe de cette attaque est trs similaire celui de l'ARP-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 n'a que la table de correspondance des machines du rseau sur lequel il a autorit. Pour des machines distantes,
il doit interroger d'autres serveurs DNS. Pour viter de les interroger chaque requte, il garde en mmoire (dans un cache),
le rsultat des prcdentes requtes.
L'objectif du pirate est d'empoisonner ce cache avec de fausses informations. Pour cela, il doit avoir un nom de domaine sous
contrle et son serveur DNS.
Imaginons qu'un pirate (A) possde le nom de domaine attaquant.com, et son serveur DNS (C) et qu'il 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 l'attaquant (c'est 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 l'adresse IP (A) du pirate). Ces informations seront mises en cache sur le serveur DNS (B) de cible.net.
Si un client quelconque (E) demande l'adresse IP pour le nom de la machine (D), il recevra l'adresse du pirate (A) en retour.
Illustration :

Un petit guide pour la scurit

22

Description d'attaques sur diffrents protocoles

9.3.3.Comment s'en protger ?


Congurez votre serveur DNS pour qu'il 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 qu'ils vous protgent des attaques dcrites prcdemment.

9.3.4.Documents
Il existe de nombreux documents dcrivant la conguration du service DNS. Dans le monde GNU/Linux, la rfrence de base
est le DNS HOWTO4. On peut aussi citer DNS et scurit5.
En ce qui concerne le volet scurit, deux rfrences sortent du lot :
Le guide publi par le CERT6 : Securing an Internet Name Server7 est une excellente rfrence sur la syntaxe des chiers
de dclaration de zones.
La page Web Secure BIND Template8 est ddie la publication de patrons de chiers de conguration. Elle est trs
rgulirement mise jour depuis plusieurs annes.

9.4.FINGER
Le service nger permet d'obtenir des informations sur les utilisateurs du systme.
nger s'invoque simplement avec la commande :
[root@nowhere /root]#finger @machinecible

Le symbole @ produit le mme effet que l'astrisque 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 :
4

http://www.tldp.org/HOWTO/DNS-HOWTO.html
http://www.linux-france.org/article/memo/dns/node16.html
http://www.cert.org
7
http://www.cert.org/archive/pdf/dns.pdf
8
http://www.cymru.com/Documents/secure-bind-template.html
5
6

Un petit guide pour la scurit

23

Description d'attaques 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).
nger n'est pas dangereux mais le laisser en coute, sans en avoir rellement besoin, est une grossire erreur. nger donne
trop d'informations sur les utilisateurs systmes.

9.4.1.Comment s'en proteger ?


Sous UNIX, il est conseill de dsactiver le service nger dans le chier /etc/inetd.conf. Pour cela, ajoutez un dise (#)
devant la ligne relative au service nger.
# 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.5.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 d'un mot de passe pour authentication.
Dans le cas du serveur FTP anonyme, tout le monde peut s'y 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 l'exemple d'une interception par un sniffer d'une 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 l'utilisateur alex a le mot de passe toto.

9.5.1.Le serveur FTP anonyme


Le serveur FTP anonyme pose de plus gros problmes. Le premier est qu'une mauvaise gestion des droits d'accs peut s'avrer
tre une erreur fatale. Laisser trop de rpertoires en droit d'criture et/ou d'excution est plus que dangereux pour la sret
du systme. Le pirate pourrait y installer ou y excuter des codes malveillants lui permettant d'accrotre son pouvoir sur la
machine.

9.5.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 d'autres serveurs FTP. Imaginons qu'un pirate se voit refuser l'accs par un
serveur FTP dont l'accs est allou seulement un certain groupe d'adresses IP. Imaginons que le pirate ne fait pas partie de
ce groupe, mais qu'un 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.5.2.Comment s'en protger ?


Installez un serveur FTP anonyme seulement en cas d'absolue ncessit. Si vous devez le faire, limitez au maximum les droits
sur les diffrents rpertoires et chiers laisss au public.
Pour vous protger des attaques par sniffer, je vous recommande d'utiliser 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 Section4.4, Le tunneling).
Filtrez les accs (via un rewall) en allouant seulement l'accs un certain groupe d'adresses IP (en vitant d'inclure des
serveurs anonymes permettant de servir de relais).

Un petit guide pour la scurit

24

Description d'attaques sur diffrents protocoles

9.6.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. En revanche, 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, d'o un risque de failles plus important.
Nous allons dcrire ces failles une une.

9.6.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 l'envoi de la commande HEAD / HTTP/1.0, trop d'informations sont donnes.


Les pages d'erreurs (404 : page non trouve) peuvent aussi contenir des informations sur le systme.

9.6.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 l'arborescence 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. L'origine d'une
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 qu'il utilise des fonctions bogues, il peut se rvler encore plus dangeureux.

9.6.3.Comment se protger ?
Vriez que votre serveur web n'est pas trop bavard. Si c'est le cas, modiez sa conguration pour qu'il se taise. Pour cela,
consultez la documentation pour modier le contenu des messages d'erreur ou de bienvenue.
Un serveur web ne devrait jamais tre excut avec les droits administrateurs.
Mettez jour les navigateurs et les serveurs pour prvoir d'ventuelles 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
l'excution de telles attaques (Voir Section4.3, Les systmes de dtection d'intrusion (HIDS/NIDS)).
L'utilisation 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, l'authenticit/intgrit, et le non refus
d'origine."
SSL ("Secure Socket Layer" pour Netscape) permet de protger les transactions web, il peut tre judicieux de l'utiliser.

9.7.IDENT
Le service ident (anciennement appel auth, en coute sur le port 113) est du mme genre que le service nger. Il fournit des
informations sur les dtenteurs de connexions sur le systme.
Il convient de le supprimer, s'il n'a aucune utilit.

9.7.1.Comment s'en 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

Un petit guide pour la scurit

25

Description d'attaques sur diffrents protocoles

9.8.IP et l'IP-Spoofing
Cette mthode de piratage date un peu. Mais elle demeure lgendaire par l'utilisation qu'en 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 soware crit par Robert Morris.
L'IP spoong se base sur une usurpation d'adresse IP. L'IP spoong est utilis lorsque deux htes sont en relation de conance
grce leurs adresses IP, c'est--dire que la seule authentication faite au niveau du serveur consiste en une vrication de
l'adresse IP du client.
L'IP spoong a souvent lieu contre les services rlogin et rsh car leur mcanisme d'authentication est base sur l'adresse IP.
Le principe est simple : ds qu'un client possde une connexion tablie sur le serveur avec un mode d'authencation base
sur l'adresse 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.
L'IP-Spoong est une attaque concernant un nombre limit de machines. Vous dcouvrirez pourquoi en lisant la suite.

9.8.1.Un peu de thorie ...


Le protocole IP est non-orient connexion, il n'assure aucune vrication de la rception des paquets et ne se soucie gure de
la faon de les traiter. IP n'assure qu'un routage d'une 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 d'acquittement. Ces deux nombres
sont cods sur 32 bits. Ils sont uniques, an de ne pas confondre les paquets lors de leurs traitements.
C'est sur ces bases que nous allons dcrire l'attaque.
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 Section6.5, Les attaques par dni de services).
La seconde partie de l'attaque est assez simple. Le pirate envoie une srie de demandes de connexion au serveur ( paquets
TCP avec le ag SYN arm) en utilisant l'adresse de A. Le serveur rpond avec une srie de paquets d'acquittement (ags SYN
et ACK arms). C'est l que rside toute la nesse de l'IP spoong.
Mais d'abord, quelques rappels sur le protocole TCP. Pour l'tablisement d'une connexion TCP, le client envoie un paquet
avec un numro de squence initial (NS1). Le serveur va rpondre avec un paquet d'acquittement ayant son propre numro
de squence (NS2), mais ayant un numro d'acquittement (NA1) gal au numro de squence initial incrment d'une unit
(NA1=NS1+1). Ensuite le client renvoie un paquet avec un numro d'acquittement (NA2=NS2+1). Une connexion TCP s'tablit
donc en trois parties.
Ce principe de numros de squences et d'acquittement est utilis tout le long de la transaction pour en assurer la abilit.
La subtilit de l'attaque 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 l'implmentation de la pile TCP/IP du systme.
Et c'est 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 l'algorithme d'incrmentation. Si cet algorithme
est bas sur la gnration de nombres alatoires, l'attaque a peu de chances d'aboutir. Mais si l'algorithme est facilement
comprhensible, le pirate va alors envoyer une requte de connexion au serveur en utilisant l'adresse IP du client. Le serveur
va rpondre avec un paquet d'acquittement de numero de sequence (NS). Le client mis hors service ne pourra rpondre, le
pirate le fera sa place.
Pour cela, il doit injecter un paquet ayant un numro d'acquittement de valeur NA = NS +1. Mais, ayant usurp l'adresse 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 l'algorithme d'incrmentation. C'est pourquoi cette attaque est aussi qualie d'attaque
aveugle. Si le numro est valide, le pirate a tabli la connexion au serveur en se faisant passer pour le client.
Le fait que l'attaque 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 l'IP-Spoong.
Illustration

Un petit guide pour la scurit

26

Description d'attaques sur diffrents protocoles

9.8.2.Prvenir l'IP spoofing grce Nmap


Nmap invoqu avec l'option -O et -v vous fournit une indication sur la difcult qu'aura 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 !)

Un petit guide pour la scurit

27

Description d'attaques sur diffrents protocoles


Celles-ci nous renseignent sur la difcult d'une attaque par IP-Spoong. Plus le nombre associ la valeur Difficulty est
lev, plus il est difcile d'entreprendre une attaque. Le message Good Luck ! entre parenthses est plutt ironique vis--vis
de la russite de l'attaque.
Si, par malchance, lors d'un 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.8.3.Comment s'en 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 l'authentication IP (rlogin, rsh).
Certains modules comme rp_lter sous Linux permettent une dfense contre ces attaques.
L'utilisation de tunnels permet galement de parer cette attaque.

9.8.4.Document
Dscription de l'IP-Spoong : IP-spoong Demystied9.

9.9.NETBIOS
NETBIOS n'est pas un protocole en lui-mme, c'est une interface logicielle et un systme de nommage. L'interface NETBIOS
est trs utilise sur les rseaux Microso 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 d'accder ces ressources en s'y
connectant et tester diffrents couples utilisateur/mot de passe. NETBIOS n'est pas une interface trs scurise. Elle est
surtout utilise dans les rseaux Microso pour le protocole SMB (bien qu'elle tend tre remplace).

9.9.1.Comment s'en 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 l'accs aux ressources NETBIOS au client de votre rseau.

9.9.2.Document
Un bon guide pour la scurisation NETBIOS (en anglais) : A STUDY IN REMOTE NT PENETRATION10

9.10.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
l'authentication.
NFS a t dvelopp par Sun Microsystems.

9.10.1.Les attaques
Le gros problme avec NFS, c'est 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.10.2.Comment s'en protger ?


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

9.11.Network Information Service - NIS


NIS permet de partager, travers un rseau, une base de donnes contenant des bases d'informations pour chacune des
machines constituant le rseau (chier de mots de passe, listes d'htes...).
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 s'accompagne souvent du service NFS pour permettre le partage de
chiers.
9

http://www.phrack.org/issues.html?issue=48&xml:id=14#article
http://packetstormsecurity.org/groups/rhino9/wardoc.txt

10

Un petit guide pour la scurit

28

Description d'attaques sur diffrents protocoles

9.11.1.Les attaques
Il est possible d'obtenir 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 d'obtenir les chiers de mots de passe partir d'un 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.11.2.Comment s'en protger ?


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

9.12.PORTMAP
portmap (en coute sur le port 111) est le support de nombreux autres services comme les serveurs NFS, NIS ... La commande
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.12.1.Comment s'en protger ?


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

9.13.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 d'autres OS libres utilisent SAMBA pour traiter les changes avec ce protocole.
SMB possde deux modes d'authentication : 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 d'une ressource.
SMB utilise aussi deux modes pour l'envoi de ces mots de passe : encrypts ou non. C'est l que rside toute la faille. C'est le
serveur qui donne l'information au client s'il supporte l'encryptage 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 d'envoyer son mot de passe en clair et le recevoir.

9.13.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 s'y 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 Chapitre7, Scurisation des mots de passe).

9.13.2.Comment s'en 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

"EnablePlainTextPasswordi"=dword :00000000";

HKEY\LOCAL\MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters

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 n'oubliez jamais de choisir
des mots de passe associs de la bonne faon (voir Chapitre7, Scurisation des mots de passe).
Ne laissez jamais un serveur SMB en coute sur Internet, cela est plus que suicidaire. Si vous tes obligs d'utiliser SMB
travers Internet, utilisez les tunnels (voir Section4.4, Le tunneling).
Sur votre rseau interne, ltrez l'accs sur votre serveur SMB grce un rewall.

Un petit guide pour la scurit

29

Description d'attaques sur diffrents protocoles

9.13.3.Document
La description des problmes de scurit sur SMB (en anglais) : SMB/CIFS BY THE ROOT11

9.14.Le service de messagerie - SMTP


SMTP : Simple Mail Transfert Protocol.
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 qu'il peut servir de relais de mailing anonyme. Un pirate peut trs bien s'en
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.14.1.Comment s'en 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.15.SQL
SQL est utilis pour la gestion de base de donnes. Il permet l'interconnexion d'une page web avec une base de donnes
l'aide de scripts.
Ce chapitre va prsenter une attaque trs connue contre les serveurs SQL appele SQL-Injection.

9.15.1.L'injection SQL ou SQL-Injection


Une requte SQL passe par plusieurs tapes avant d'aboutir.
Les donnes sont envoyes par le client par l'intermdiaire d'un script sur le serveur web. Il s'ensuit une connexion au serveur
SQL, puis l'envoi 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 d'une page web.
L'attaque 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
d'obtenir un accs sans mot de passe, de rcuprer des chiers, etc..

9.15.2.Comment s'en 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 n'est pas toujours ais, il faut surtout tre attentif la programmation des scripts et aux fonctions
utilises.

9.15.3.Document
La technique du "SQL Injection" dcrite par son inventeur : How I hacked PacketStorm12

9.16.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 Section8.3,
Man In the Middle - MITM). Le pirate se place entre le client et le serveur (avant l'tablissement de session SSH) grce
des mthodes de redirection de ux. Lorsque le client et le serveur s'changent les cls indispensables pour l'encryptage, 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 n'tant pas
vriables, ils peuvent tre utiliss pour modier le bon droulement de la communication. Cette faille est plus connue sous
le nom de l'exploitation du canal cach.
Ces attaques ne sont pas trs faciles implmenter.

9.17.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. L'utilisateur a l'impression d'tre
assis devant un terminal de la machine.
11
12

http://www.phrack.org/issues.html?issue=60&xml:id=11#article
p://p.pastoutafait.org/txt/rfp.txt

Un petit guide pour la scurit

30

Description d'attaques sur diffrents protocoles


telnet repose sur une authentication par login et mot de passe. Malheureusement, telnet possde le mme problme que
FTP : il n'assure pas la protection des mots de passe contre l'coute d'un sniffer. Les mots de passe associs du login circulent
en clair sur le rseau.

9.17.1.Comment s'en 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 Section4.4, Le tunneling) pour protger toutes vos connexions.
Je vous conseille aussi de restreindre l'accs votre serveur telnet via un rewall.

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

9.18.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 d'interagir avec celui-ci. Il peut agir sur les fentres, capturer des venements X ou en crer. Si un serveur X
WINDOW est mal congur, n'importe quel client pourra s'y connecter et modier son fonctionnement.

9.18.2.Comment s'en proteger ?


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

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


Les applications Peer to Peer permettent de faciliter l'change 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.19.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 n'ont pas subi d'audit srieux. Le pouvoir d'attraction de l'change de chier est si grand
que cet usage s'est rpandu trs rapidement. On obtient donc un coktail dangereux : des applications faibles dployes trs
grande chelle sur l'Internet.
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 s'intresse un peu la journalisation, les traces de propagation sont immdiatement observables. Voici
un relev sur une heure d'exploitation d'un 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

68.170.38.226(1214) -> aa
68.170.38.226(1214) -> aa
210.1.13.35(1214) -> aaa.
200.89.144.81(4663) -> aa
68.144.158.56(4662) -> aa
200.89.144.81(4663) -> aa

La distinction entre la journalisation d'une utilisation usuelle d'un outil Peer to Peer et la journalisation de la propagation
de virus est immdiate. Pour un change de chiers on aurait observ plusieurs dizaines (voir centaines) d'entres 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 l'utilisation anonyme des outils Peer to
Peer, il est grand temps de les perdre. Il est mme probablement trop tard, vous tes dj reprs !

9.19.2.Comment s'en protger ?


Sous linux, le projet P2PWall - IPTables blocking of P2P trafc13 donne des utilitaires et des documents permettant d'utiliser
le rewall iptables pour ltrer le trac d'application Peer to Peer.

13

http://www.lowth.com/p2pwall/

Un petit guide pour la scurit

31

CHAPITRE 10

Scurit avance
10.1.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 l'implmentation et le dveloppement d'outils 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
d'utilitaires rseaux. Nous donnerons en exemple la programmation d'un simple scanner.

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

10.2.1.Le rseau de dpart


Trs simple, une PME ou une universit possde un administrateur qui doit grer l'ensemble du parc informatique et
sa conception rseau. Il a pour cahier des charges d'assurer une connexion Internet avec le rseau local, un serveur de
messagerie et un site web.
Avec peu de moyens, l'administrateur 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 n'y aucune forme de scurit : la connexion avec Internet n'est absolument pas scurise.

10.2.2.Le premier niveau de scurit


Aprs un premier piratage, notre administrateur reoit de nouveaux crdits. Il repense l'architecture :

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 s'y connecter depuis l'extrieur contrairement au rseau local.
Le rewall situ entre le rseau local et le routeur empchera toute connexion de l'extrieur 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 l'exterieur), 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.2.3.Le deuxime niveau de scurisation


Alors, pour se protger, il intercale une sonde NDIS (voir Section4.3, Les systmes de dtection d'intrusion (HIDS/NIDS))
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 d'intrusion (de l'intrieur ou de l'extrieur). Le manager NDIS se situera dans le rseau local.

Un petit guide pour la scurit

32

Scurit avance

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

10.2.4.Les niveaux plus levs


Nous allons nous appuyer dans cette section sur l'architecture prcdente. Nous allons modier certaines parties du rseau.
Nous allons d'abord insrer une zone de dcontamination entre Internet et le rseau interne. Cette zone est constitue
d'analyseurs de contrle de contenu, des antivirus et d'autres 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 d'attaques ou de simplement rejeter la demande.
Cette zone est appele zone de dcontamination car elle permet de dtecter des signatures d'attaques dans les ux de donnes
provenant d'Internet et d'viter 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 d'architecture est trs efcace pour la scurit, mais reste nanmoins assez cuteuse et difcile grer. L'utilisation
de tunnels (voir Section4.4, Le tunneling) permet en plus d'accrotre la sret des transactions.

10.3.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 d'exploitation utilis est Linux avec un compilateur GCC. Nous allons tudier 2 bibliothques permettant la
cration d'utilitaires rseaux : libnet et libpcap.
La premire, Libnet, est dveloppe par Mike D. Schiffman. C'est une bibliothque opensource (donc gratuite). Libnet permet
de fabriquer et d'injecter 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.
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 au Section5.5, L'interception des mots de passe en rseau.).
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 d'un 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 Section2.2, Le
Scanner). L'injection des paquets sera ralise grce Libnet, la rception des rponses grce Libpcap.

10.3.1.Le programme
Le programme "scanner" sera appel en mode console et recevra deux arguments : l'interface rseau d'utilisation et l'adresse
IP de la machine scanner. Il afchera la liste des ports ouverts et se terminera.

Un petit guide pour la scurit

33

Scurit avance
Exemple d'utilisation :
[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, l'adresse IP de la machine scanner et le nom de l'interface 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 d'une manire succincte. Ce chapitre n'est en aucun cas un cours de programmation rseau.
Le principe de fonctionnement du programme est simple ; il sera constitu de deux fonctions : la premire permettra
d'envoyer 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 l'appel 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 l'interface rseau utilise (par
exemple "eth0").
Le paramtre snaplen reprsente la taille maximale (en octet) d'un paquet intercept (max=65535).
Le paramtre promisc contrle le fonctionnement de la carte rseau. S'il est gal 1, la carte est en mode transparent, c'est
dire qu'elle intercepte tous les paquets (mme ceux qui ne lui sont pas destins). Si cette valeur est diffrente de 1, la carte
n'acceptera que les paquets lui tant destins. Pour notre programme, la carte sera en mode transparent donc promisc sera
gal 1.
Le paramtre to_ms spcie le dlai (en millisecondes) d'interception 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 d'erreur 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. C'est 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 :

Un petit guide pour la scurit

34

Scurit avance

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 l'interface rseau (retourn par
la fonction pcap_open_live()*/
pcap_t *Descr ;
/*Structure pour l'en tte ETHERNET*/
struct ethhdr *EtherHdr ;
/*Structure pour l'en tte IP*/
struct ip *IpHdr ;
/*Structure pour l'en tte TCP*/
struct tcphdr *TcpHdr ;
/*Tampon pour retour d'erreur*/
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 d'un descripteur)*/
l=libnet_init(LIBNET_RAW4,NULL,ErrBuf) ;
/*Descripteur "Descr" sur l'interface 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 l'en 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 l'en 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 +
4 * (IpHdr-ip_hl)) ;
/* Cela sert verifier que nous avons bien envoy le paquet et qu'il
provient bien de la machine "scanne". Ceci se base sur l'analyse 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 d'envoi 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 d'injecter 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).

Un petit guide pour la scurit

35

Scurit avance
Cette fonction permet d'initialiser une interface d'injection des paquets. Elle traite trois arguments :
Le premier injection_type dnit le type d'interface (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 l'interface 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 d'erreur (comme libpcap). Elle renvoie un pointeur sur
l'interface d'injection 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 l'ordre TCP puis IP (sens couche application vers couche rseau
ou physique). Ces fonctions prenent en argument le pointeur sur l'interface d'injection (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 l'interface 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 l'en tte TCP*/
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 d'urgence*/
LIBNET_TCP_H, /*Taille en tte*/
(u_char *) (NULL),/*Pointeur vers les donnes*/
0, /*Taille des donnes*/
l,
0) ;
/*Pour construire l'en 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 d'envoi de paquets (16000 ports).Elle attendra encore 5 secondes pour le traitement des rponses
et terminera le programme.
Voici la fonction main :

Un petit guide pour la scurit

36

Scurit avance

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 d'itration*/
int i ;
/*Pour stocker l'adresse 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 l'interface*/
case 'i' :
Device = (char *) (malloc(strlen(optarg)*sizeof(char))) ;
strncpy(Device,optarg,strlen(optarg)) ;
break ;
/*Pour l'adresse 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*/
Pxml:id=fork() ;
if(Pxml:id==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.3.2.Documents
Pour libnet : http://libnet.sourceforge.net/
Pour libpcap : http://www.tcpdump.org

Un petit guide pour la scurit

37

AnnexeA.Annexes
A.1.Les sites et revues consulter rgulierement
CERT1
SecurityFocus2
.:[packet storm security]:.3
Archives Bugtraq4 & Bugtraq French5
Liste de diffusion du CNRS sur les virus6
CERT RENATER7
Phrack : ...a Hacker magazine by the community, for the community....8
Pour les revues en franais disponibles en kiosque, je vous conseille d'acheter le magazine MISC. Je ne suis pas dpendant
de MISC, mais c'est 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 jusqu'en Dcembre
2003. Chaque numro constitue une trs bonne source d'informations.
Pour plus de renseignements, consulter MISC le mag de la scurit informatique !9.

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 n'aurait 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

http://www.cert.org
http://www.securityfocus.com/
http://packetstormsecurity.nl/
4
http://seclists.org/bugtraq/
5
http://www.securityfocus.com/archive/131/description
6
http://www.services.cnrs.fr/wws/info/sos-virus
7
http://www.renater.fr/Securite/CERT_Renater.htm
8
http://www.phrack.org/
9
http://www.miscmag.com/
2
3

Un petit guide pour la scurit

38

Vous aimerez peut-être aussi