Vous êtes sur la page 1sur 126

Un petit guide pour la scurit e e Alexandre Viardin (Mirabellug)

copyright Alexandre Viardin Novembre 2003

Table des mati`res e


1 Scurisation de base e 1.1 Premier conseil : Verrouillez les stations . . . 1.2 Pour Linux . . . . . . . . . . . . . . . . . . 1.3 Pour Windows . . . . . . . . . . . . . . . . . 1.4 Le lecteur de disquettes . . . . . . . . . . . . 1.5 Le lecteur de CDROM . . . . . . . . . . . . 1.6 Noubliez pas le mot de passe pour le BIOS 8 10 10 10 10 11 11 12 14 14 16 18 19 21 22 24 26 26 26 26 27 27 27 29 31 31 31 34

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

2 La collecte dinformations 2.1 Le Scanner . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Quest ce quun scanner ? . . . . . . . . . . . . . 2.1.2 Comment marche Nmap ? . . . . . . . . . . . . 2.1.3 La dtermination du syst`me dexploitation avec e e 2.1.4 Quel est lintret dutiliser Nmap ? . . . . . . . e 2.2 Identier les versions des logiciels en coute . . . . . . e 2.2.1 Netcat . . . . . . . . . . . . . . . . . . . . . . . 3 Les 3.1 3.2 3.3 failles applicatives Les installations par dfaut . . . . . . . e Les mauvaises congurations . . . . . . Les bogues . . . . . . . . . . . . . . . . 3.3.1 Des dnis de services applicatifs e 3.3.2 Outrepassement de droits . . . 3.3.3 Les scripts . . . . . . . . . . . . 3.4 Les exploits . . . . . . . . . . . . . . .

. . . . . . . . . . . . Nmap . . . . . . . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

4 Les outils indispensables pour la protection 4.1 Le rewall . . . . . . . . . . . . . . . . . . . 4.1.1 La conguration . . . . . . . . . . . . 4.1.2 Les attaques contre les rewalls . . . 4.2 Les NIDS . . . . . . . . . . . . . . . . . . . 1

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

4.2.1 Prelude . . . . . . . . . . . . . . . 4.2.2 Snort . . . . . . . . . . . . . . . . . 4.3 Le tunneling . . . . . . . . . . . . . . . . 4.3.1 Le protocole AH . . . . . . . . . . 4.3.2 Le protocole ESP . . . . . . . . . . 4.3.3 Le protocole IPcomp . . . . . . . . 4.3.4 Le protocole IKE . . . . . . . . . . 4.3.5 Les deux modes de fonctionnements 4.3.6 Les limitations dIPsec . . . . . . . 4.4 Nessus . . . . . . . . . . . . . . . . . . . . 4.4.1 Pour obtenir tout sur Nessus . . . . 4.5 User Mode Linux - UML . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . de IPsec . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

34 35 36 36 36 36 36 37 37 38 38 39 40 42 43 43 43 45 47 49 51 52 53 54 54 54 55 55 55 56 56 57 59 59 59 60 61

5 Surveillance - Dissimulation - Maintien dacc`s e 5.1 Les chevaux de Troie . . . . . . . . . . . . . . . . . . . . 5.2 Les backdoors . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Les backdoors prsentes dans les logiciels. . . . . e 5.2.2 Les backdoors ddies aux connexions ` distance . e e a 5.3 Les Rootkits . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Linterception des mots de passe en rseau. . . . . . . . . e 6 Dispositifs destructeurs 6.1 Le virus . . . . . . . . . . . . . . . . . 6.2 Les vers . . . . . . . . . . . . . . . . . 6.3 Les bombes logiques . . . . . . . . . . 6.4 Les attaques par dni de services . . . e 6.4.1 Le SYN ood . . . . . . . . . . 6.4.2 LUDP Flood . . . . . . . . . . 6.4.3 Fragmentation de paquets . . . 6.4.4 Ping of death . . . . . . . . . . 6.4.5 Attaque par rexion : Smurng e 6.4.6 Dnis de services distribus . . e e 6.4.7 Bombes e-mail . . . . . . . . . 7 Scurisation des mots de passe e 7.1 Lattaque par dictionnaire . . . 7.2 Le brute forcing . . . . . . . . . 7.3 Tester la abilit de vos mots de e 7.4 Choisir le bon mot de passe . . 7.5 Prvenir lutilisateur . . . . . . e

. . . . . .

. . . . . .

. . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . passe ! . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

8 La base des attaques rseaux e 8.1 Dtournement de ux . . . . . . . . . . . . . e 8.1.1 ARP-Poisoning : . . . . . . . . . . . 8.1.2 Dsynchronisation TCP : . . . . . . . e 8.2 MIM - Man in the Middle . . . . . . . . . . 8.3 Encapsulation dIP dans dautres protocoles.

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

62 64 64 65 67 68 69 71 71 71 73 73 74 77 79 79 81 81 81 83 84 84 87 90 91 91 92 92 93 94 94 96 97 97 98 99 100 100 101

9 Description dattaques sur dirents protocoles e 9.1 DHCP : Dynamic Host Conguration Protocol . . 9.1.1 Attaque par puisement de ressources . . . e 9.1.2 Faux serveurs DHCP . . . . . . . . . . . . 9.2 DNS : Domain Name Server . . . . . . . . . . . . 9.2.1 Le DNS ID spoong . . . . . . . . . . . . 9.2.2 Le DNS cache poisoning . . . . . . . . . . 9.3 FINGER . . . . . . . . . . . . . . . . . . . . . . . 9.4 FTP . . . . . . . . . . . . . . . . . . . . . . . . . 9.4.1 Le serveur FTP anonyme . . . . . . . . . . 9.5 HTTP . . . . . . . . . . . . . . . . . . . . . . . . 9.5.1 Les serveurs trop bavards . . . . . . . . . 9.5.2 Vulnrabilits lies aux applications web . e e e 9.6 IDENT . . . . . . . . . . . . . . . . . . . . . . . . 9.7 IP et lIP-Spoong . . . . . . . . . . . . . . . . . 9.7.1 Un peu de thorie ... . . . . . . . . . . . . e 9.7.2 Prvenir lIP spoong grce ` Nmap . . . e a a 9.8 NETBIOS . . . . . . . . . . . . . . . . . . . . . . 9.9 NFS : Network File System . . . . . . . . . . . . 9.9.1 Les attaques . . . . . . . . . . . . . . . . . 9.10 NIS : Network Information Service . . . . . . . . 9.10.1 Les attaques . . . . . . . . . . . . . . . . . 9.11 PORTMAP . . . . . . . . . . . . . . . . . . . . . 9.12 Le protocole SMB . . . . . . . . . . . . . . . . . . 9.12.1 Les scans de SMB shares . . . . . . . . . . 9.13 SMTP - Les services de messagerie . . . . . . . . 9.14 SQL . . . . . . . . . . . . . . . . . . . . . . . . . 9.14.1 Le SQL-INJECTION . . . . . . . . . . . 9.15 SSH . . . . . . . . . . . . . . . . . . . . . . . . . 9.16 TELNET . . . . . . . . . . . . . . . . . . . . . . 9.17 XWINDOW . . . . . . . . . . . . . . . . . . . . . 9.17.1 Les attaques . . . . . . . . . . . . . . . . . 9.18 Peer To Peer (eDonkey, Kazaa ...) . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10 Scurit avance e e e 10.1 Larchitecture scurise . . . . . . . . . . . . . . . . . . . . . e e 10.1.1 Le rseau de dpart . . . . . . . . . . . . . . . . . . . e e 10.1.2 Le premier niveau de scurit . . . . . . . . . . . . . e e 10.1.3 NDIS : Deuxi`me niveau de scurisation . . . . . . . e e 10.1.4 Les niveaux plus levs . . . . . . . . . . . . . . . . e e 10.2 Dveloppez vos propres utilitaires scurit . . . . . . . . . . e e e 10.2.1 Le programme . . . . . . . . . . . . . . . . . . . . . . 10.2.2 Comment obtenir et compiler le source entier du programme ? . . . . . . . . . . . . . . . . . . . . . . . . 10.2.3 Documents . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . .

102 104 104 105 105 106 108 108

. 118 . 118

11 Annexes 119 11.1 Les sites et revues ` consulter rgulierement . . . . . . . . . . 120 a e 11.2 Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . 122

Avant-propos
Qui connat lautre et se connat, en cent combats ne sera point dfait ; qui ne conna lautre mais se connat, sera vainqueur une e t fois sur deux ; qui ne conna pas plus lautre quil ne se conna t t sera toujours dfait. e Lart de la guerre - Sun Tzu Ce guide a t ralis suite ` un audit de scurit que jai ralis pour ee e e a e e e e mon cole et aux deux confrences sur la scurit rseau prsentes au groupe e e e e e e e dutilisateurs Linux de NANCY (coucou le Mirabellug). Je ne suis pas spcialiste e en scurit rseau ; jai juste crit ce guide dans le but de donner ` des ade e e e a ministrateurs ou ` des particuliers, un descriptif technique et un manuel a dautoformation ` la scurit rseau. a e e e La plupart des administrateurs ne sont pas spcialistes en securit, et peuvent e e tre perdus devant un probl`me de ce type. Le masse dinformations dispoe e nible sur Internet est parfois confuse, dense ou tr`s technique. Ce guide sert e de point de dpart et dintroduction ` la scurit. e a e e Il a t pens dans un but volutif. Si vous voulez participer en crivant ou en ee e e e compltant des chapitres, nhsitez pas ` me contacter sur guidesecu@free.fr. e e a Le principe est simple : une description assez succinte sur une attaque et ensuite une description compl`te des mthodes de protection. Vos expriences e e e personnelles et vos remarques sont aussi les bienvenues. Evidemment, ce guide est sous license GPL donc gratuit. La seule rcompense e que pourront recevoir les ventuels participants est la mention de leurs noms e en tant que collaborateurs. Ce guide se compose dune dizaines de chapitres.

Chaque chapitre comporte une introduction. La plupart du temps, un chapitre contient au moins une section divise en direntes sous sections : une e e pour la description dun probl`me de scurit particulier, une deuxi`me pour e e e e dcrire les dirents moyens de sen protger et une troisi`me pour donner e e e e dirents liens vers des documents plus prcis sur le sujet. e e Le premier chapitre montre comment scuriser une station pour viter toutes e e tentatives de piratage par un acc`s physique. e Le deuxi`me chapitre dcrit le fonctionnement des outils de rcupration e e e e dinformations ` distance, notamment les scanners. Il montre lutilit quils a e ont pour vous protger. e Le troisi`me chapitre introduit la notion de failles. e Le quatri`me chapitre introduit direntes notions sur les rewalls et les e e principaux autres syst`mes de protection logiciels. e Le cinqui`me chapitre explique comment un pirate dissimule sa prsence e e sur un syst`me. e Le sixi`me chapitre sintresse aux dispositifs destructeurs (virus, bombes e e mails ...). Le septi`me chapitre dcrit les attaques sur les chiers de mots de passe. e e Les huiti`me et neuvi`me chapitres traitent de dirents probl`mes poss e e e e e par certains protocoles rseaux. e Le dixi`me chapitre est divis en deux parties : la premi`re explique comment e e e architecturer son rseau de faon scurise. La deuxi`me partie est un cours e c e e e sur le developpement doutils ddis uniquement ` la scurit. e e a e e

O` trouver ce guide ? u
Cest tr`s simple, il y a deux adresses : e Le site ociel : http://guidesecu.ifrance.com/guide/guidesecu.pdf 6

Sur le site du Mirabellug : http://www.mirabellug.org/docs/securite/guidesecu.pdf

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

Bonne Lecture !

Chapitre 1 Scurisation de base e

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

1.1

Premier conseil : Verrouillez les stations

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

1.2

Pour Linux

Evitez davoir loption failsafe au dmarrage propos par Lilo. Cette e e option peut permettre dobtenir les acc`s root (sans mot de passe) pour la e maintenance du syst`me. e

1.3

Pour Windows

Le syst`me de chier NTFS permet une scurisation accrue par rapport e e aux syst`mes de chier FAT et FAT 32. Si vos machines W indows c fonce tionnent avec de la FAT, passez en NTFS. Je dconseille fortement dutiliser Windows 95, 98 et Me, le niveau de scurit e e e oert par ces OS en natif ntant pas assez lev. e e e

1.4

Le lecteur de disquettes

Evitez le boot sur disquette, un utilitaire comme Trinux (qui est un OS Linux sinstallant en RAM grce ` un nombre limit de disquettes) donne la a a e possibilit de monter tous les syst`mes de chiers prsents sur le(s) disque(s) e e e dur(s) de la machine et den modier le(s) contenu(s). De plus, Trinux est livr avec un panel assez impressionnant dutilitaires exclusivement ddis ` e e e a la scurit. e e Le programme NTFS2DOS (sous DOS) permet de changer les partitions NTFS en partitions FAT et de pouvoir accder ` leurs contenus sans restrice a tions. NTFS2DOS est lanc depuis une disquette de boot DOS. e

10

1.5

Le lecteur de CDROM

Des utilitaires comme Knoopix (un OS Linux bootant sur un seul CD et contenant lui aussi un nombre impressionnant dutilitaires divers) peuvent tre utiliss pour monter les dirents syst`mes de chiers prsents sur le(s) e e e e e disque(s) dur(s).

1.6

Noubliez pas le mot de passe pour le BIOS

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

11

Chapitre 2 La collecte dinformations

12

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

13

2.1

Le Scanner

Lobjectif du pirate est de reprer les serveurs orant des services partie culiers et de les identier. Pour obtenir ces informations, le pirate va utiliser un scanner. Le but de ce section est de prsenter des mthodes de protections contre le e e scan (en utilisant des r`gles de rewalling sous iptables/ipchains par exemple) e 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 e e et un des plus performants. Je dcrirai dans une premi`re partie ce quest un scanner. Ensuite, je me e e focaliserai sur Nmap et je le prsenterai dun point de vue un peu plus teche nique, permettant de comprendre les direntes mthodes de protection. e e Attention : pour une capacit optimale de fonctionnement, Nmap doit tre e e utilis avec les acc`s root ! e e

2.1.1

Quest ce quun scanner ?

Cest tr`s simple : lorsquun serveur ore un service particulier (Web, mese sagerie, mail), il excute un programme assurant ce service. Ce programme e est en attente de connexions. Les clients devant accder ` ce service doivent conna e a tre ladresse IP du serveur et le numro de port associ au service. e e Ce numro de port a t attribu par lOS du serveur au programme excutant e ee e e ce service. La plupart des services ont un numro de port bien dni. Par exemple, e e un serveur de messagerie utilise le port 25, un serveur Web le port 80... Lorsquun service est en coute sur un port, on dit que le numro de port e e associ ` ce service est ouvert. ea Lintrt du scanner est tr`s simple : il permet de trouver dans un dlai ee e e
Nmap est disponible sous W indows c et Linux ` ladresse http ://www.insecure.org/, a la version dcrite dans ce chapitre tant celle disponible sous Linux. e e
1

14

tr`s court, tous les ports ouverts sur une machine. e Il existe dirents types de scanner, certains se contentent juste de donner e le listing des ports ouverts, de donner le type et la version de lOS tournant sur le serveur (ces fonctionnalits seront dcrites dans ce chapitre avec e e Nmap). Dautres scanners comme Nessus permettent de tester direntes e failles connues sur ces services ( Nessus sera dcrit dans la section 4.4). e Exemple avec Nmap Utilisons Nmap pour conna les services en coute sur la machine dadresse tre e 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 dirents services sexcutant sur c e e la machine dans un temps assez bref. On peut observer ici que des serveurs FTP, DNS, WEB, POP-3 ... sont en attente de connexions.

15

2.1.2

Comment marche Nmap ?

Je prsenterai de mani`re tr`s succinte Nmap et me focaliserai principae e e lement sur les fonctions les plus utilises. e Pour conna les ports ouverts sur une machine, Nmap proc`de ` lenvoi tre e a de paquets sur tous les ports de cette machine et analyse les rponses. Bien e sr, il y a dirents types de scans, donc dirents types denvois et donc, u e e dirents types de rponses. e e Nous nous intresserons aux scans utilisant le protocole TCP (les scans UDP e et ICMP tant possibles eux aussi). e Le scan en vanilla TCP connect Nmap proc`de ` lappel de la fonction connect() sur tous les ports de la e a machine. Ce type de scan est facilement reprable. e Le scan en vanilla TCP connect est le scan par dfaut avec Nmap, la e commande est : [root@nowhere.net /root]# nmap [ip de la machine cible] ou [root@nowhere.net /root]# nmap -sT [ip de la machine cible] Les scans furtifs Nous rentrons maintenant dans une classe de scans plus diciles ` dtecter : a e - Le scan en connexion demi-ouverte ou Syn-scan : Nmap envoie sur chaque port un paquet TCP avec le ag SYN arm ; si e un port est ouvert, il renverra un paquet avec les ags SYN et ACK arms. e

Illustration

16

La commande se fait par lappel de nmap avec loption -sS : [root@nowhere.net /root]# nmap -sS [ip de la machine cible] - Les scans Xmas, FIN et NULL. Le scan FIN consiste en lenvoi de paquets TCP avec seulement le ag FIN arm : e La commande se fait par lappel de nmap avec loption -sF : [root@nowhere.net /root]# nmap -sF [ip de la machine cible] Le scan NULL consiste en lenvoi de paquets TCP avec seulement le ag NULL arm : e La commande se fait par lappel de nmap avec loption -sN : [root@nowhere.net /root]# nmap -sN [ip de la machine cible] Le Xmas scan (traduisez le scan de Nol) consiste en lenvoi de paquets e TCP avec les ags FIN/URG/PUSH arms. e La commande se fait par lappel de nmap avec loption -sX : [root@nowhere.net /root]# nmap -sX [ip de la machine cible] 17

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

2.1.3

La dtermination du syst`me dexploitation avec e e Nmap

Si on lance Nmap avec loption -O : [root@nowhere.net /root]# nmap -O 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 18

901/tcp open samba-swat 10000/tcp open snet-sensor-mgmt Remote operating system guess : Linux 2.2.12 - 2.2.19 Nmap run completed 1 IP address (1 host up) scanned in 3 seconds Notez bien lavant-derni`re ligne : e Remote operating system guess : Linux 2.2.12 - 2.2.19 Nmap parvient ` dterminer le syst`me dexploitation tournant sur la maa e e chine cible. La machine cible utilisait un noyau 2.2.19. Nmap ne sest pas tromp. e Il faut savoir que chaque syst`me dexploitation construit ses paquets dune e mani`re bien particuli`re. Certains champs au niveau de la couche IP ou e e TCP sont propres ` chaque OS. Nmap contient une base de donnes dun a e grand nombre dOS. Nmap envoie donc des paquets tests ` la machine cible a et compare les paquets reus en rponse ` ceux de sa base de donnes et en c e a e dduit le type dOS. e Cette base de donnes est mise ` jour en fonction des direntes version e a e de Nmap.

2.1.4

Quel est lintret dutiliser Nmap ? e

Nmap permet de pouvoir prvoir les futures attaques, et aussi de poue voir conna quels services tournent sur une machine. Une installation faite tre un peu trop vite peut laisser des services en coute (donc des ports ouverts e sans que cela soit ncessaire) et donc vulnrables ` une attaque. Nhsitez e e a e pas ` utiliser Nmap contre vos serveurs pour savoir quels ports sont en coute. a e Nmap est un logiciel tr`s complet et tr`s volutif, et il est une rfrence e e e ee dans le domaine du scanning.

Comment sen protger ? e


Congurer votre rewall pour empcher les scans e

19

[root@nowhere /root]# iptables -A FORWARD -p tcp tcp-ags SYN,ACK, FIN,RST RST -m limit limit 1/s -j ACCEPT Cette commande permet de dtecter lenvoi un grand nombre de paquets e TCP avec les ags FIN et/ou SYN et/ou ACK et/ou RST arm(s). Vriez e e que votre rewall (si ce nest pas iptables) supporte la dtection de scans. e (Pour plus de dtails sur cette commande, je vous conseille de lire le docue ment Packet Filtering HOWTO : Using iptables (Chapitre 7.3) de Rusty Wagner).

Documents
Divers articles cris par le dveloppeur de Nmap sur le scanning (en ane e glais) : http://www.phrack.org/show.php?p=51\&a=11 http://www.phrack.org/show.php?p=54\&a=9 http://www.phrack.org/show.php?p=57\&a=7

20

2.2

Identier les versions des logiciels en coute e

Maintenant que notre pirate conna les dirents services en coute, son t e e objectif va tre de dcouvrir les noms et les versions des logiciels utiliss pour e e e assurer ces services. Lobjectif de ce chapitre est de prsenter une parade pour viter de done e ner trop dinformations sur votre syst`me. e Le pirate peut dj` essayer de se connecter sur dirents ports grce aux ea e a programmes clients associs pour glaner des informations. e Rien que telnet donne beaucoup dinformations : [root@nowhere.net /root]# telnet 192.168.1.1 Trying 192.168.1.1... Connected to 192.168.1.1. 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 : e Linux Mandrake release 7.2 (Odyssey) for i586 Kernel 2.2.17-21mdk on an i586 Trop de renseignements apparaissent. Mme si le port telnet est ferm, le pirate peut glaner dautres informae e tions sur les autres services. Pour cela, il peut procder ` une connexion telnet sur le port associ ` un e a ea autre service en coute : e Exemple dun telnet sur le port FTP ( port 21) [root@nowhere.net /root]# telnet 192.168.1.1 21

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 : e 220 ProFTPD 1.2.5rc1 Server (ProFTPD Default Installation) [neuromancer] La version du logiciel nous est donne. Le pirate va alors rechercher e des informations sur les faiblesses de scurit de celui-ci. e e Cependant, sur certains services, le client telnet sera inecace. Le pirate peut alors utiliser un programme conu pour crire et lire de donnes sur c e e machine cible et sur le port voulu. Ces programmes permettent denvoyer des scripts directement sur le logiciel souhait sans se soucier des limites proe tocolaires. Le plus rput de ces programmes est sans doute Netcat. e e

2.2.1

Netcat

Netcat permet dtablir une connexion (TCP ou UDP) sur un port soue hait et dy envoyer ou dy recevoir des donnes. e e 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. Netcat2 comporte plein e dautres fonctionnalits (comme lenvoi de scripts ...). e Le pirate na plus qu` trouver une faille applicative (voir chapitre suivant) a sur le logiciel correspondant.
2

Netcat est tlchargeable sur : http ://packetstormsecurity.nl/UNIX/netcat/ ee

22

Comment sen protger ? e


Retirer les banni`res donnant les versions de logiciel et les messages daide e ou de bienvenue dun service rseau en coute qui peuvent donner des infore e mations sur votre syst`me. e Utilisez netcat contre vos serveurs pour reprer les services trop bavards. e

23

Chapitre 3 Les failles applicatives

24

Introduction
Nous allons aborder dans ce chapitre les failles lies aux applications utie lises. e Nous nous focaliserons principalement sur les failles logicielles : les failles applicatives. Ces failles peuvent tre de natures diverses : probl`mes de conguration, e e probl`mes au niveau du code du logiciel, probl`mes lis ` de mauvaises ine e e a terprtations de commandes ou de mauvaises excutions de scripts. e e

25

3.1

Les installations par dfaut e

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

3.2

Les mauvaises congurations

Lorsquune application est mal paramtre, elle peut laisser lacc`s libre e e e a ` certaines bases de donnes sensibles (chiers de mots de passe, dutilisae teurs) ou de permettre dexcuter des commandes ou des scripts malveillants. e Il est important de bien lire le manuel avant dactiver un service (RTFM !) et de bien dnir le qui fait quoi. e Ce principe est simple : il sut de bien dnir les utilisateurs et les groupes e et de limiter leurs droits sur certains types de chiers et certaines oprations e dexcution de commandes syst`me. e e Le plus important est de restreindre au maximun les acc`s ` certains chiers e a sensibles et aux commandes syst`mes. e

3.3

Les bogues

Les bogues sont dus ` des erreurs de programmation. Les bogues font a appara dirents types de probl`mes de securit : tre e e e

3.3.1

Des dnis de services applicatifs e

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

3.3.2

Outrepassement de droits

Les bogues de type dpassement de buer ou dexploitation de bogues de e format posent de gros probl`mes de scurit. Ils visent majoritairement des e e e applications setsuid (fonctionnant avec les acc`s root) pour permettre ` un e a attaquant dobtenir un interprteur de commande sous luid root. e

3.3.3

Les scripts

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

3.4

Les exploits

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

Comment sen proteger ?


1 - Recensez les applications vulnrables. e Il est toujours bon de conna les failles de vos logiciels avant les pirates. tre Des sites comme celui du CERT (Computer Emergency Response Team) publie un rapport sur toute nouvelle faille de scurit. Le CERT permet aussi e e dobtenir de laide en cas de piratage. Le site du CERT : www.cert.org (Anglais) Les archives bugtraq font partie des meilleures sources sur les nouvelles vulnrabilits. Ces archives donnent des descriptions tr`s prcises sur des e e e e nouvelles failles de scurit. e e Le site BUGTRAQ : 27

http://citadelle.intrinsec.com/mailing/current/HTML/ml_bugtraq/ (en anglais) http://www.bugtraq-france.com (en franais) c Certains sites comme www.packetstormsecurity.org ou www.securityfocus. com contiennent aussi de nombreuses informations. Le site securityfocus donne un classement1 des failles en fonction du type darchitecture ; il est facile de trouver rapidement le logiciel concern. e 2 - Limitez les programmes sexcutant avec les droits administrateur. e Il est toujours bon de rprer les programmes sexcutant avec les droits e e e administrateur. Ainsi, vous pouvez changer leurs droits pour quils ne deviennent pas un point critique pour la vulnrabilit du syst`me. e e e Sous linux, la simple commande : [root@nowhere.net /root]# nd / -perm +6000 vous permettra de lister tous les programmes sexcutant avec les droits ade ministrateur. 3 - Les autres solutions. Les NDIS (dcrit dans le chapitre suivant) peuvent vous permettre de reprer e e les attaques exploitant des failles connues sur certains types de logiciel. On peut aussi patcher son noyau pour viter lexcution dexploits utilisant e e des bogues de dpassement de buer. Le patch OpenWall2 vous permet de e protger votre noyau Linux. e

1 2

http ://www.securityfocus.com/search dans la rubrique Vulnerabilites librement tlchargeable sur www.openwall.com ee

28

Chapitre 4 Les outils indispensables pour la protection

29

Introduction
Les rewalls, les tunnels et les IDS/NDIS sont des outils indispensables pour dtecter, parer ou viter de nombreuses attaques. Nous les dcrirons e e e dans ce chapitre, ainsi que la mani`re de les utiliser de faon optimale. e c

30

4.1

Le rewall

La conguration dun rewall peut savrer tre un sujet tr`s dicile ` e e e a traiter. Cette conguration est surtout tablie en fonction de vos besoins pere sonnels. Lobjectif de ce chapitre est de donner des conseils ` suivre pour bien utiliser a un rewall. Ensuite, nous nous intresserons aux direntes mthodes date e e taques contre les rewalls.

4.1.1

La conguration

Pour bien congurer son rewall, il sut de bien respecter les conseils suivants : - Essayez de limiter lacc`s ` votre rseau ` des utilisateurs connus utilisant e a e a une adresse IP statique. Vous pourrez ainsi rejeter toutes les autres requtes e venant dutilisateurs utilisant une adresse IP non autorise. Vous eectuez e de la sorte un ltrage au niveau IP. - Fermez tous les ports en coute sur les dirents serveurs et ouvrez seulee e ment ceux dont vous avez besoin. - Filtrez ces ports, cest ` dire rejetez toutes les autres requtes sur les autres a e ports que ceux en coute. e - Empchez toutes les connexions sortantes sur des services non autoriss. e e Pour cela, il sut de dnir un nombre limit de services auxquels les sere e veurs et les clients peuvent accder (mail, ftp, web...). Ensuite, il faut cone gurer le rewall pour rejeter les connexions depuis lintrieur vers lextrieur e e sur des services dirant de ceux dnis. e e

4.1.2

Les attaques contre les rewalls

La premi`re tape lors dune attaque est de dterminer les r`gles de ree e e e walling. Le but est simple : savoir quels ports ne sont pas ltrs. e

31

Avec le scan Nmap peut dterminer quels ports sont ou ne sont pas ltrs. e e 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 ltered ftp 22/tcp ltered 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 (ftp) et 22 (ssh) sont ltrs. e Comment sen protger ? e Protgez-vous contre le scanning (voir section 2.1). e Si le scan ne marche pas, dautres mthodes peuvent tre utiliss comme e e e le rewalking. Le rewalking Cette technique de dvoilement des r`gles de rewalling repose sur un e e unique champ de len-tte IP, le TTL (pour Time To Live), ce champ reprsentant e e la dure de vie dun paquet. Il est x d`s son envoi par le syst`me dexploie e e e tation et est diminu dune unit ` chaque fois quil traverse un quipement e ea e assurant le routage ; quand ce champ est gal ` 0, le paquet dispara e a t. Chaque passage dun routeur ` un autre est appel un saut. a e Cest ce champ qui est utilis par le logiciel traceroute. Pour faire un trae ceroute, le logiciel envoie un premier paquet UDP avec un TTL de 1 ; au premier routeur, le TTL est dcrment ` 0. Le routeur renvoie donc un e e e a 32

code derreur ICMP ttl-exceeded, ce qui permet de rcuprer ladresse du e e premier routeur. Ensuite traceroute va envoyer un deuxi`me paquet avec un e TTL de 2, il sera dcrment au passage du premier routeur (TTL=1). Le e e e deuxi`me routeur va le recevoir et le dcrmenter : le champ TTL sera de e e e nouveau gal ` 0. Le deuxi`me routeur renverra donc un message derreur : e a e on rcup`re ainsi ladresse du deuxi`me routeur. e e e Si il y a N sauts jusquau rseau nal, on rit`re lopration N fois. e e e e On peut utiliser cette technique avec dirents protocoles : UDP, TCP, ICMP. e Le rewalking repose sur cette technique pour dterminer les r`gles de e e 1 rewalling. Firewalk (le programme implmentant le rewalking) dtermine e e le nombre de routeurs entre la machine source et la machine cible (situe e derri`re le rewall). Ensuite, il envoie des paquets tests avec un TTL gal ` e e a ce nombre de routeurs + 1. Si le paquet est accept, il traverse le rewall et e on obtient une rponse ; sinon il ny a aucune rponse. e e Firewalk envoie dirents types de paquets (TCP, UDP) pour dterminer les e e r`gles de rewalling. Nanmoins, de nombreux param`tres comme la congese e e tion du rseau, le nombre de routeurs sparant la cible et lmetteur peuvent e e e fausser lanalyse de rewalk.

Disponible librement sur http ://www.packetfactory.net/

33

4.2

Les NIDS

Les outils les plus pratiques ! Ces utilitaires permettent de dtecter une attaque et de vous en informer. Un e IDS (pour Intrusion Detection System) analyse tout ce qui se passe sur une station. Il dtecte les outrepassements de droits (obtention du compte root e dune mani`re suspecte) et dautres types dattaques, il contient une base de e donnes sur direntes vulnrabilts. e e e e Les NIDS (Network Intrusion Detection System) travaillent de la mme e mani`re, mais sur les donnes transitant sur le rseau. Il peut dtecter en e e e e temps rel une attaque seectuant sur l une des vos machines. Il contient e une base de donnes avec tous les codes malicieux et peut dtecter leurs ene e vois sur une des machines. Le NIDS travaille comme un snier (voir section 5.4), sauf quil analyse automatiquement les ux de donnes pour dtecter e e une attaque. Cette section prsentera deux NIDS : Snort et Prelude-NIDS. A noter que e ces outils sont distribus comme logiciel libre. Je ne rappellerai pas que le e logiciel libre a une avance considrable dans le domaine de la scurit par e e e rapport ` ses concurrents propritaires. a e

4.2.1

Prelude

Prelude-NIDS2 est un des dtecteurs dintrusions les plus connus. Prelude e est disponible et libre sur les plateformes Linux, FreeBSD et Windows. Prelude poss`de une achitecture modulaire et distribue. Modulaire, car ses e e composants sont indpendants, et peuvent tre facilement mis ` jour. Dise e a tribue, car ces composants indpendants interagissent les uns avec les autres. e e Cela permet davoir divers composants installs sur direntes machines et e e de rduire ainsi la surchage dapplications. e Ces dirents composants sont les sondes et les managers. Les sondes peuvent e tre de deux types : rseau ou local. Une sonde rseau analyse tout le trac, e e e pour y dtecter dventuelles signatures dattaques. La sonde locale assure e e la surveillance dune seule machine, il analyse le comportement du syst`me e pour y dtecter des tentatives dexploitation de vulnrabilits internes. Les e e e
2

tlchargeable librement sur www.prelude-ids.org/ ee

34

sondes signalent les tentatives dattaques par des alertes. Ces alertes sont reu par le manager qui les interpr`te et les stocke. c e Pour une description compl`te de Prelude (installation, conguration et utie lisation) consultez ce document : http://lehmann.free.fr/PreludeInstall/InstallPrelude.html

4.2.2

Snort

Snort3 est un NIDS lui aussi. Il nest pas structur comme Prelude. Snort e est un programme monolithique, il ne comporte pas de module comme Prelude, ce qui peut rendre son implmentation dans un rseau un peu moins e e souple que Prelude. Snort fonctionne en trois modes (Snier, PacketLogger et NIDS). Les deux premiers modes ne sont pas intressants pour la dtection e e dintrusion. Le troisi`me mode permet lui danalyser le trac rseau pour y e e dtecter d ventuelles attaques. e e Pour une description compl`te de Snort (installation, conguration et utie lisation ) consultez ce site : http://www.snort.org/docs/ (en anglais).

tlchargeable librement sur www.snort.org ee

35

4.3

Le tunneling

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

4.3.1

Le protocole AH

Le protocole AH (Authentication Header) permet de garantir lauthenticit des paquets changs en leur inscrivant une somme de contrle (de e e e o len-tte IP jusqu` la n du paquet) chire. e a e

4.3.2

Le protocole ESP

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

4.3.3

Le protocole IPcomp

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

4.3.4

Le protocole IKE

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

36

4.3.5

Les deux modes de fonctionnements de IPsec

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

4.3.6

Les limitations dIPsec

IPsec pose quelques probl`mes dus ` son implmentation. Certains probl`mes e a e e appara ssent au niveau des messages de broadcast et multicast. IPsec est difcile ` ltrer sur les rewalls existants. Il est aussi impossible ` grer pour a a e les translations dadresse (NAT).

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

37

4.4

Nessus

Nessus est un outil de scurit permettant de scanner une ou plusieurs e e machines. Il permet aussi de tester direntes attaques pour savoir si une ou e plusieurs machines sont vulnrables. e Il est tr`s utile lors de tests de pntration (pen test) et fait gagner un e e e temps incroyable. Nessus se compose dune partie serveur (qui contient une base de donnes ree groupant dirents types de vulnrabilits) et une partie client. Lutilisateur e e e se connecte sur le serveur grce au client et apr`s authentication, il ordonne a e au serveur de procder aux tests dune ou plusieurs machines. Le client reoit e c ensuite les rsultats du test. e Nessus est disponible sous Linux et Windows, et il est enti`rement gratuit. e

4.4.1

Pour obtenir tout sur Nessus

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

38

4.5

User Mode Linux - UML

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

- Si une machine virtuelle plante, le syst`me hte nest pas aect. e o e - Un utilisateur sera root sur une machine virtuelle, mais pas sur le syst`me e hte. o - Il permet aussi de tester dirents param`tres noyaux sans se soucier des e e consquences. e

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

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

39

Chapitre 5 Surveillance - Dissimulation Maintien dacc`s e

40

Introduction
Nous prsenterons de ce chapitre les programmes utiliss par les pirates e e pour dissimuler, surveiller et maintenir leur acc`s sur un syst`me dinformae e tion. Nous prsenterons les moyens de sen protger. e e

41

5.1

Les chevaux de Troie

Le principe du cheval de Troie est facile ` comprendre. Un programme ou a un code malveillant est intgr ` une application par ajout ou par modicae ea tion de son code. Ainsi lors de lexcution de ce programme inoensif, le bout e de code malveillant pourra excuter des commandes spciques (rcupration e e e e de chiers de mot de passe, altration du syst`me...) ` linsu de lutilisateur. e e a

Comment sen protger ? e


La plupart des antivirus peuvent dtecter les chevaux de Troie. Nanmoins, e e comparer la signature numrique accompagnant les chiers (cela se fait par e un calcul reposant sur un algorithme de chirement appliqu ` lensemble du ea chier) avec la sienne permet de savoir directement si lon est infect. e Il est aussi conseill de consulter les sites suivants pour vrier que vos proe e grammes ne contiennent pas de chevaux de Troie : CERT : http://www.cert.org (Le CERT (Computer Emergency Response Team) est un organisme soccupant des probl`mes de scurit sur Internet. Il e e e recense les dirents probl`mes de scurit et publie des articles (advisories) e e e e pour les dcrire. e Bugtraq : http://citadelle.intrinsec.com/mailing/current/HTML/ml_ bugtraq/

42

5.2

Les backdoors

Les backdoors sont des acc`s cachs sur un syst`me ou sur une applie e e cation. Le principe dune backdoor est similaire ` celui du cheval de Troie. a Lobjectif est de modier ou dutiliser un programme pour acc`der discree tement ` un ordinateur distant, modier le comportement dun programme, a devenir administrateur.

5.2.1

Les backdoors prsentes dans les logiciels. e

Parfois, certains logiciels (messagerie, utilitaires syst`mes) peuvent contee nir des backdoors, cest-`-dire que, pour certaines commandes suivies dara guments particuliers ou avec un mot de passe bien dni, le logiciel peut e avoir un comportement dirent (permettre ` lutilisateur de devenir root, e a renvoyer un shell syst`me ` lutilisateur...). e a Ces trappes sont inclues directement dans le code du logiciel. Certains dveloppeurs sont soucieux de possder un acc`s sur tous les syst`mes utie e e e lisant leurs logiciels. Par exemple, Ken Thompson, lun des p`res dUNIX, e avoue avoir modi lapplication /bin/login en permettant lacc`s direct au e e syst`me par la saisie dun mot de passe prcompil en dur. Thompson poue e e vait ainsi visiter tous les syst`mes utilisant son application modie. e e Parfois, certains pirates diusent des applications infestes de backdoors. e

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

5.2.2

Les backdoors ddies aux connexions ` distance e e a

Ces backdoors peuvent tr`s bien faire partie de la premi`re catgorie. e e e Comme il la t montr, certains logiciels peuvent autoriser un acc`s pour ee e e 43

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 e e e obtenir un shell. Un logiciel pralablement install par le pirate est en attente e e 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 ` e e e e e a 5000). Le pirate na plus qu` se connecter sur ce programme pour rcuprer a e e son acc`s sur la machine. e Comment sen proteger ? Nmap peut se rl`ver tre une aide prcieuse pour les dbusquer. Si, en ee e e e procdant au scan dune machine, vous constatez quun port non autoris est e e en coute, il serait bon de vrier celui-ci. e e Les sites ` consulter : a CERT : http://www.cert.org (en anglais) Bugtraq : http://citadelle.intrinsec.com/mailing/current/HTML/ml_bugtraq/ (en anglais) http://www.bugtraq-france.com

44

5.3

Les Rootkits

Le rootkit est un programme permettant dautomatiser la dissimulation et leacement des traces dun pirate sur une machine. Lobjectif dun rootkit est de modier les commandes permettant dadministrer le syst`me, de e cacher les ports ouverts par le pirate... Les premiers rootkits taient assez basiques, ils modiaient juste les come mandes ls, ps, netstat... Ladministrateur pouvait dtecter ces modications sur les logiciels concerns. e e Alors une seconde gnration de rootkits apparut. Il faut savoir que des come e mandes comme ps, ls ... font appels ` des bibliotheques partages pour fonca e tionner. Les nouveaux rootkits modiaient donc le code de ces biblioth`ques e pour modier le comportement de ces commandes ` lavantage du pirate. a Encore une fois, ceci tait dtectable. Donc une troisi`me gneration de roote e e e kits est ne an de modier directement le comportement du noyau, par le e biais de modules chargs en mmoire (LKM). Cest ` lheure actuelle la dere e a niere gnration. e e Dirents rootkits sont disponibles sur Linux. e Je ne donnerai (volontairement) pas dans cette partie une description compl`te e de lutilisation des rootkits. Cela na aucun intert pour ce guide. e La plupart des rootkits utilisent le principe des backdoors (voir section 5.2) pour permettre au pirate de se connecter selon son envie sur un syst`me. e

Comment sen protger ? e


1) Les checksums. Une base de donnes de checksums sur les dirents chiers syst`me peut e e e dj` constituer une bonne parade. Je vous conseille deectuer des checkea sums a la n dune installation sur les dirents chiers comme ls, ps, stat ` e ifcong ... et sur les direntes biblioth`ques partages. e e e Cette base de donne devrait tre stocke sur un CDROM ou tout autre e e e support non rinscriptible. e

45

2) Compiler les programmes vitaux en statique Comme je lai dit prcdemment, certaines commandes font appels ` des e e a librairies partages et des utilitaires comme md5sum (qui sert ` faire des e a checksums) sous Linux font appels ` des librairies partages. Do` son coma e u portement pourrait tre modi indirectement par un rootkit attaquant les e e librairies partages. Pour viter ce genre de dsagrement, compilez une pare e e e tie des programmes vitaux en statique, ainsi vous disposerez dune trousse de secours en cas dinfection par rootkits. Bien sr, pour compiler les programmes vitaux en statique, faut-il encore u disposer dun OS qui permette daccder aux sources de ces programmes vie taux... 3) Chkrootkit Chkrootkit (pour CHecK ROOTKIT) vous permet de dtecter la prsence e e dun rootkit, il fonctionne sous Linux (FreeBsd...) et est tlchargeable libreee ment sur www.chkrootkit.org/. 4) Compilez votre noyau en statique. Vous viterez ainsi le chargement de e modules externes.

46

5.4

Linterception des mots de passe en rseau. e

Une autre technique utilise pour collecter des informations (mots de e passe par exemple) est lutilisation dun snier. Le snier place la carte rseau e 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 e e destins. e Plusieurs types de sniers existent ; certains achent les donnes interceptes e e 1 brutes comme Tcpdump , ce qui donne lieu ` des chiers de log tr`s volua e mineux. Dautres sniers permettent de rcuprer les mots de passe en les e e achant directement ` lcran associ avec le login, ladresse du client et celle a e e du serveur (comme dsni2 ). Ethereal3 permet par exemple dacher toutes les transactions ayant cours sur le rseau. e Cependant, le snier reste un outil puissant pour la dtection dintrusion e car, premi`rement, il garde une trace de tous les changes ayant cours sur le e e rseau. Deuxi`ment, il se rv`le tr`s utile pour dmasquer un scan (un grand e e e e e e nombre de paquets envoys dun seul coup), de tracer ladresse dun pirate, e de voir si des commandes particuli`res sont demandes sur le reseau. e e La plupart des rootkits contiennent un programme pour snier. Les NDIS utilisent un snier pour analyser les transactions rseau. e

Comment sen protger ? e


L`, cest tr`s dicile. Un snier est passif, il nenvoie aucun paquet, il a e ne fait quintercepter. Mais la carte rseau tant en mode transparent, son e e comportement sen trouve chang, son temps et sa faon de rpondre ` cere c e a tains paquets sont modis. On peut dtecter la prsence dun snier grce ` e e e a a 4 ce changement de comportement. Le programme AntiSni de Lopht Heavy Industries peut envoyer des paquets tests et en dduire si la carte est en e mode transparent donc susceptible de snier.
disponible sur www.tcpdump.org disponible sur www.packetstormsecurity.org 3 disponible sur www.packetstormsecurity.org 4 disponible sur windowsN T c et Linux ` ladresse http ://packetstormsecua rity.nl/sniers/antisni/
2 1

47

Une deuxi`me parade pour djouer le sning est de tunneler toutes les e e transactions. Cela veut dire encrypter toutes les transactions rseaux. Utilie ser IpvSec ou des VPN, ssh sur votre rseau sav`re tre une dfense ecace e e e e contre le sning. Lutilisation de tunnels est traite dans la section 4.3. e

48

Chapitre 6 Dispositifs destructeurs

49

Introduction
Les dispositifs destructeurs sont utiliss pour paralyser, saturer ou dtruire e e un syst`me dinformation. Ils constituent lesp`ce la plus nuisible dans le doe e maine de la scurit car ils peuvent tre la source de perte de donnes. Le e e e e but de ce chapitre est dexpliquer leurs fonctionnements et la faon de les c combattre.

50

6.1

Le virus

Le virus est un programme dont le seul but est de consommer ou de paralyser des ressources syst`me. Le virus sautoduplique pour mieux infecter e le syst`me, il se propage en infectant tour ` tour les chiers. Les eets dune e a contamination varient : chiers eacs, disque dur format, saturation des e e disques, modication du MBR... La grande majorit dentre eux existent sur les plates-formes M icrosof t c , e 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). e Les syst`mes UNIX ne sont pas pargns ! Les administrateurs UNIX doivent e e e faire face ` des virus comme Winux. Nanmoins, la gestion des droits sous a e UNIX se rv`le tre un facteur limitant pour la propagation de virus. e e e Les virus sont de plus en plus volus, ils peuvent sautomodier pour chapper e e e a ` une ventuelle dtection (virus polymorphes). Dautres types peuvent tene e ter de leurrer le syst`me en sinstallant dans des secteurs dfecteux ou non e e utiliss (virus furtifs) ... e

Comment sen protger ? e


Les anti-virus commerciaux comme Norton Antivirus ou McAfee VirusScan sont de bons outils pour traquer les virus. Toutefois, il convient de les mettre rguli`rement ` jour pour proter pleinement de leurs capacits. e e a e Il est aussi important de suivre lvolution et lapparition de nouveaux vie rus ; pour cela, consulter les sites (ainsi que pour tous les autres dispositifs destructeurs dcrits dans ce chapitre) : e CERT : www.cert.org (en anglais) Le site du CNRS : http://www.services.cnrs.fr/wws/info/sos-virus http://www.cnrs.fr/Infosecu/Virus.html

51

6.2

Les vers

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

Comment sen protger ? e


Comme pour les virus, lantivirus se rv`le tre une parade ecace. e e e Consultez les listes cites dans la section 6.1. e

52

6.3

Les bombes logiques

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

Comment sen protger ? e


Utilisez un anti-virus performant (Mc Afee, Norton ...) rguli`rement mis e e a ` jour. Consultez les sites dcrits dans la section 6.1. e

53

6.4

Les attaques par dni de services e

Ce type dattaques est la plus nervante qui soit. Elles ont pour but de e saturer le rseau ou le syst`me. e e

6.4.1

Le SYN ood

Cette technique consiste ` saturer un serveur en envoyant une multia tude de paquets TCP avec le ag SYN arm, cela aura pour but de crer une e e multitude de connexions demandant un grand nombre de ressources syst`me. e La plupart des attaques par SYN-ood sont bien dtectes par dirents e e e rewalls. Comment sen protger ? e Exemple avec iptables [root@nowhere /root]# iptables -A FORWARD -p tcp syn m limit limit 1/s -j ACCEPT (Pour plus de details sur cette commande, je vous conseille de lire, le document Packet Filtering HOWTO : Using iptables (Chapitre 7.3) de Rusty Wagner)

6.4.2

LUDP Flood

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

54

Comment sen protger ? e Il est conseill de dsactiver les services chargen et echo. e e Si vous ne voulez pas dsactiver chargen et echo, congurez votre rewall e pour viter le Chargen Denial of Service Attack en limitant le trac UDP : e [root@nowhere /root]# iptables -A FORWARD -p udp -m limit limit 1/s -j ACCEPT

6.4.3

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 a e e concerne la gestion de la fragmentation IP. Ce probl`me appara lorsque la pile reoit le deuxi`me fragment dun paquet e t c e TCP contenant comme donne le premier fragment. La pile TCP/IP peut e savrer incapable de grer cette exception et le reste du trac. e e Cette faille est tr`s connue sur les piles de W indows95et98 c . e

6.4.4

Ping of death

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

6.4.5

Attaque par rexion : Smurng e

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

55

Comment sen protger ? e Congurez votre rewall pour limiter le trac ICMP. [root@nowhere /root]# iptables -A FORWARD -p icmp icmp-type echo- request -m limit limit 1/s -j ACCEPT (Pour plus de dtails sur cette commande, je vous conseille de lire, le e document Packet Filtering HOWTO : Using iptables (Chapitre 7.3) de Rusty Wagner)

6.4.6

Dnis de services distribus e e

Plusieurs types dattaques sont lances en parall`le ` partir de plusieurs e e a sources.

6.4.7

Bombes e-mail

Le mail-bombing consiste ` envoyer de gros ou de nombreux chiers ` a a un utilisateur pour saturer sa bo de rception de courrier lectronique. te e e Comment sen protger ? e La plupart des logiciels de contrle de contenu assure un ltrage du couro rier pour dtecter ce type dattaque e

56

Chapitre 7 Scurisation des mots de passe e

57

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

58

7.1

Lattaque par dictionnaire

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

7.2

Le brute forcing

Si lattaque par dictionnaire ne marche pas, le programme peut gnrer e e des mots de passe avec une suite alatoire de caract`res, les encrypter et les e e comparer au mot de passe ` dcouvrir. Avec un mot de passe susament long a e (suprieur ` 8 caract`res), cette mthode a peu de chance daboutir. Si, de e a e e plus, des caract`res spciaux sont ajouts comme des signes de ponctuation, e e e la mthode peut se rveler inecace. e e Il existe dirents logiciels de perage de mots de passe en fonction du type e c dencryptage ( DES, MD5, special M icrosof t c ...).

7.3

Tester la abilit de vos mots de passe ! e

Sous UNIX Sous UNIX, la liste des mots de passe des utilisateurs syst`me est divise e e en deux chiers /etc/shadow et /etc/passwd ou runis seulement dans e le chier /etc/passwd. Le type dencryptage peut tre du MD5, DES1 , e RSA ... Pour tester la rsistance de vos mots de passe, le logiciel John The Ripe per2 peut savrer tre une bonne aide. Il supporte un grand nombre dale e gorithmes dencryptage, prsente un important paramtrage des attaques. e e
1 Lalgorithme DES a t adopt par la NSA comme standard ` la n des annes 70. Le ee e a e DES est distribu publiquement mais il a t dvelopp dans le secret. Certains suspectent e ee e e le gouvernement amricain de stre reserv une gche secr`te pour une dcryptage plus e e e a e e rapide, je vous conseille dutiliser dautres algorithmes ` la place. a 2 John The Ripper est disponible sur http ://www.openwall.com/john/

59

John the Ripper est un programme distribu librement. e SousW indows c Pour tester la abilit des mots sous Windows, ladministrateur pourra utie liser le logiciel John the Ripper3 sur Windows ou sur Unix ou le logiciel LophtCrack c de LophtHeavyIndustries c 4 qui, lui, nest pas distribu grae tuitement (enn pas pour les versions rcentes). e Sous W indows9x c , les mots de passe sont disperss dans le rpertoire rae e cine de windows dans dirents chiers dexention .PWL portant comme e nom celui de lutilisateur. Le chirement utilis pour gnrer les mots de passe PWL est tr`s faible. e e e e Le programme Cain permet de tester leur abilit. e

7.4

Choisir le bon mot de passe

Nutilisez pas des mots de votre language courant ou des suites de chires ! Choisissez des mots de passe longs, avec une suite de caract`res totalement e alatoires et avec des caract`res spciaux, alternez les majuscules et les mie e e niscules. Moyen mnemotechnique avec une phrase : Choisissez une phrase et alternez les majuscules et minuscules avec les premi`res e lettres de chaque mot en tenant compte de la ponctuation. Par exemple : A demain, Je t Aime mon Amour. donne : Ad,JtAmA, qui est un mot de passe assez costaud.
3 4

Idem. Lophtcrack c est disponible sur http ://www.atstake.com/research/lc/

60

7.5

Prvenir lutilisateur e

Nhsitez pas ` organiser des runions, faire circuler dirents documents e a e e pour informer vos utilisateurs des probl`mes de abilit des mots de passe. e e

61

Chapitre 8 La base des attaques rseaux e

62

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

63

8.1

Dtournement de ux e

Les techniques de dtournement de ux servent ` rediriger le ux rseau e a e vers un client, vers un serveur, ou vers une autre machine.

8.1.1

ARP-Poisoning :

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

B envoie ` A une requte ARP pour conna son adresse physique. a e tre

A renvoie ` B son adresse physique par une rponse ARP. B la stocke dans a e son cache en faisant correspondre lIP de A ` son adresse physique. a

Le trac circule entre A et B.

64

C envoie ` B, une rponse ARP avec son adresse physique correspondant ` a e a lIP de A. B stocke cette nouvelle correspondance dans son cache en crasant e lancienne.

C dialogue avec B ` la place de A. A ne reoit plus rien. a c Comment sen protger ? e On peut utiliser sous UNIX, le logiciel Arpwatch1 qui permet de surveiller tout le trac ARP. Les NIDS peuvent aussi dtecter ce type dattaques (notamment Prelude). e Documents http://www.securite.teamlog.com/publication/6/10/102/

8.1.2

Dsynchronisation TCP : e

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

Disponible librement sur ftp ://ftp.ee.lbl.gov/arpwatch.tar.gz

65

A dialogue avec B. Il envoie un paquet avec de 60 octets, avec les numros e de squences indiqus. e e

C rpond ` A en se faisant passer pour B et envoie de mauvais numros de e a e sequences.

A ne rpond plus ` B car il croit quil a perdu la connexion. e a

C rpond ` la place de A et communique avec B, il a vol la connexion. e a e

66

8.2

MIM - Man in the Middle

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

67

8.3

Encapsulation dIP dans dautres protocoles.

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

68

Chapitre 9 Description dattaques sur dirents protocoles e

69

Introduction
Ce chapitre dcrit les failles intrins`ques de dirents protocoles. Ine e e trins`ques par le fait quelles ne sont pas lies ` une faille applicative du e e a client ou du serveur grant ce protocole, mais plutt ` sa conception. Nous e o a prsenterons aussi la mani`re de sen protger. e e e

70

9.1

DHCP : Dynamic Host Conguration Protocol

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

9.1.1

Attaque par puisement de ressources e

Comme il la t dcrit, un serveur DHCP poss`de un stock dadresses ee e e IP quil distribue aux dirents clients. Ce stock est bien sr limit. Il y e u e aura seulement un nombre dni de clients pouvant disposer des direntes e e adresses IP en mme temps (par exemple 255). e Si un pirate gn`re un grand nombre de requtes DHCP semblant venir e e e dun grand nombre de clients dirents, le serveur puisera vite son stock e e dadresses. Les vrais clients ne pourront donc plus obtenir dadresse IP : le trac rseau sera paralys. e e

9.1.2

Faux serveurs DHCP

Cette attaque vient en complment de la premi`re. Si un pirate a russi e e e a ` saturer un serveur DHCP par puisement de ressources, il peut tr`s bien e e en activer un autre ` la place. Ainsi il pourra ainsi contrler tout le trac a o rseau. e

Comment sen protger ? e


Segmentez votre rseau en sous-rseau et attribuez-leur chacun un sere e veur DHCP. Ces serveurs seront indpendants les uns des autres. e Associez une adresse IP dnie ` une adresse matrielle (MAC) spcique. e a e e

71

SousW indows c Remplissez les champs de loption Rservations dans le programme de e conguration du serveur DHCP Sous Linux Modiez le chier /etc/dhcpd.conf sur le serveur DHCP. Exemple pour un client toto dadresse MAC 00 :C0 :34 :45 :56 :67 qui recevra ladresse 192.168.1.2. Le routeur poss`de ladresse 192.168.1.1 et le e serveur de noms poss`de ladresse 192.168.1.3. e host toto { hardware ethernet 00 :C0 :34 :45 :56 :67 ; xed-address 192.168.1.2 ; option routers 192.168.1.1 ; option domain-name-server 192.168.1.3 ; } Les nouvelles versions du protocole DHCP permettent lutilisation de mcanismes e dauthentication plus stricts. Assurez vous que vos serveurs utilisent ces versions de protocoles. (Voir RFC 3118)

Documents :
Scurisation sous windows : e http://www.securent-2000.com/article.php?sid=62 Sous Linux : http://www.digital-connexion.info/article.php?sid=89 http://www.traduc.org/docs/HOWTO/lecture/Authentication-Gateway-HOWTO. html\# (conguration dune passerelle dauthentication).

72

9.2

DNS : Domain Name Server

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

9.2.1

Le DNS ID spoong

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

73

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

9.2.2

Le DNS cache poisoning

Le principe de cette attaque est tr`s similaire ` celui de lARP-Poisoining. e a Pour gagner du temps dans la gestion des requtes, le serveur DNS poss`de e e un cache temporaire contenant les correspondances adresses IP - noms de machine. En eet, un serveur DNS na que la table de correspondance des machines du rseau sur lequel il a autorit. Pour des machines distantes, il e e doit interroger dautres serveurs DNS. Pour viter de les interroger ` chaque e a requte, il garde en mmoire (dans un cache), le rsultat des prcdentes e e e e e requtes. e Lobjectif du pirate est dempoisonner ce cache avec de fausses informations. Pour cela, il doit avoir un nom de domaine sous contrle et son serveur DNS. o Imaginons quun pirate (A) poss`de le nom de domaine attaquant.com, e et son serveur DNS (C) et quil veuille empoisonner le cache du serveur DNS (B) du rseau cible.net. e Le pirate envoie une requte au serveur DNS (B) du rseau cible.net dee e mandant la rsolution du nom de domaine attaquant.com. e

74

Le serveur DNS (B) de cible.net va donc envoyer une requte sur le sere veur DNS (C) de lattaquant (cest lui qui a autorit sur le domaine ate taquant.com). Celui-ci rpondra et joindra des informations additionnelles e falsies par le pirate (un nom de machine (D) associ ` ladresse IP (A) du e ea pirate). Ces informations seront mises en cache sur le serveur DNS (B) de cible. Si un client quelconque (E) demande ladresse IP pour le nom de la machine (D), il recevra ladresse du pirate (A) en retour. Illustration

75

Comment sen protger ? e


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

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

76

9.3

FINGER

Le service nger permet dobtenir des informations sur les utilisateurs du syst`me. e nger sinvoque simplement avec la commande : [root@nowhere /root]#nger @machinecible Le symbole @ produit le mme eet que lastrisque pour un listing de e e rpertoire. En eet, les informations concernant tous les utilisateurs connects e e a ` la machine de nom machinecible seront listes et envoyes en rponse ` e e e a la requte. e Exemple [root@nowhere /root]#nger @machinecible Login Name Tty Idle Login Time Oce 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 syst`me (toto et root) et depuis quand e e (colonne Time). nger nest pas dangereux mais le laisser en coute, sans en avoir rellement e e besoin, est une grossi`re erreur. nger donne trop dinformations sur les utie lisateurs syst`mes. e

Comment sen proteger ?


UNIX Il est conseill de dsactiver le service nger dans le chier /etc/inetd.conf. e e Pour cela, ajoutez un di`se (#) devant la ligne relative au service nger. e # nger stream tcp nowait root /usr/sbin/tcpd in.ngerd W IN DOW S c : Dsactivez le programme associ au service nger. e e

77

Si vous ne souhaitez pas dsactiver le service nger, congurez votre ree wall pour y limiter lacc`s. e

78

9.4

FTP

FTP (pour File Transfert Protocol, en coute sur le port 21) est le service e utilis pour assurer le transfert de chiers. Il y a deux types de serveurs FTP : e les serveurs FTP avec authentication par mots de passe et les serveurs anonymes. Pour les premiers, le client dsirant se connecter devra fournir un e login accompagn dun mot de passe pour authentication. Dans le cas du e serveur FTP anonyme, tout le monde peut sy connecter librement. Le premier dfaut du protocole FTP est de ne pas encrypter les mots de e passe lors de leur transit sur le rseau. Les mots de passe associs aux logins e e circulent en clair ` la merci des sniers. a Voici lexemple dune interception par un snier dune authentication FTP : Le logiciel utilis est tcpdump. e 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 ....USER.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 ....PASS.toto...

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

9.4.1

Le serveur FTP anonyme

Le serveur FTP anonyme pose de plus gros probl`mes. Le premier est qu e une mauvaise gestion des droits dacc`s peut savrer tre une erreur fatale. e e e Laisser trop de rpertoires en droit dcriture et/ou dexcution est plus que e e e dangereux pour la sret du syst`me. Le pirate pourrait y installer ou y u e e 79

excuter des codes malveillants lui permettant daccro son pouvoir sur la e tre machine. Boucing attack - Attaque par rebonds Les serveurs FTP anonymes peuvent tre sujets ` des attaques par ree a bonds. Ces attaques consistent ` utiliser un serveur FTP anonyme comme a relais pour se connecter ` dautres serveurs FTP. Imaginons quun pirate se a voit refuser lacc`s par un serveur FTP dont lacc`s est allou ` seulement e e ea un certain groupe dadresses IP. Imaginons que le pirate ne fait pas partie de ce groupe, mais quun serveur FTP anonyme y appartienne. Le pirate peut tr`s bien se connecter sur le serveur FTP anonyme, utiliser les commandes e assurant la connexion sur le serveur FTP protg et y rcuprer des chiers. e e e e

Comment sen protger ? e


Installez un serveur FTP anonyme seulement en cas dabsolue ncessit. Si e e vous devez le faire, limitez au maximun les droits sur les dirents rpertoires e e et chiers laisss au public. e Pour vous protger des attaques par snier, je vous recommande dutilie ser SFTP (Secure FTP) pour vos transactions FTP. SFTP encryptera les changes et les protgera ainsi des coutes indiscr`tes. Vous pouvez aussi utie e e e liser des tunnels comme IPSec pour protger vos connexions (voir section 4.3). e Filtrez les acc`s (via un rewall) en allouant seulement lacc`s ` un certain e e a groupe dadresses IP (en vitant dinclure des serveurs anonymes permettant e de servir de relais).

80

9.5

HTTP

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

9.5.1

Les serveurs trop bavards

Parfois, les banni`res des serveurs web sont trop explicites : e Exemple sur un serveur Apache (192.168.1.2) : [root@nowhere /root]# telnet 192.168.1.2 80 avec lenvoi de la commande HEAD / HTTP/1.0 Trop dinformations sont donnes. e Les pages derreurs (404 : page non trouve) peuvent aussi contenir des ine formations sur le syst`me. e

9.5.2

Vulnrabilits lies aux applications web e e e

La complexit des serveurs ou des navigateurs (clients) web pose de gros e probl`mes de scurit. Ces applications sont vulnrables ` de nombreux e e e e a bugs. Chaque application a son type de faille. Netscape par exemple devient vulnrable lors du traitement de certaines cha e nes de caract`res. Cela e peut permettre de remonter toute larborescence des chiers du serveur. Les serveurs IIS peuvent renvoyer un shell syst`me pour un envoi de commandes e particuli`res. e Les langages comme Javascript, Perl, PHP, ASP pour la ralisation de scripts e peuvent se rl`ver dangereux. Lorigine dune faille dans une application web ee 81

peut appara ` cause de deux probl`mes. Le premier est la abilit de la tre a e e conception du script, le second est la abilit des fonctions utilises. Si un e e script est mal conu, il peut tre la source de nombreuses failles. De mme, c e e si sa conception est bonne mais quil utilise des fonctions bogues, il peut se e rvler encore plus dangeureux. e e

Comment se protger ? e
Vriez que votre serveur web nest pas trop bavard. Si cest le cas, modie ez sa conguration pour quil se taise. Pour cela, consultez la documentation pour modier le contenu des messages derreur ou de bienvenue. Un serveur web ne devrait jamais tre excut avec les droits administrae e e teurs. Mettez ` jour les navigateurs et les serveurs pour prvoir dventuelles failles. a e e Lors du dveloppement de scripts, prenez garde lors de la conception ` la e a gestion des droits des utilisateurs pour son excution. Informez-vous aussi e sur les fonctions connues pour tre sensibles. e Les NIDS peuvent tre une bonne parade contre les attaques reposant sur e des failles logicielles. Ils permettent de dtecter lexcution de telles attaques. e e Les NIDS et IDS sont traits dans la section ??. e Lutilisation de SHTTP (Secure HTTP) est aussi une bonne parade contre les attaques HTTP. Une bonne dnition de SHTTP est donn par E.Rescorla et A. Schiman : e e Le protocole SHTTP est une extension de HTTP qui fournit des services de scurit, applicables indpendamment, qui permettent de garantir la cone e e dentilit, lauthenticit/intgrit, et le non refus dorigine. e e e e SSL (Secure Socket Layer pour Netscape) permet de protger les trane sactions web, il peut tre judicieux de lutiliser. e

82

9.6

IDENT

Le service ident (anciennement appel auth, en coute sur le port 113) e e est du mme genre que le service nger. Il fournit des informations sur les e dtenteurs de connexions sur le syst`me. e e Il convient de le supprimer, sil na aucune utilit. e

Comment sen protger ? e


UNIX Pour dsactiver le service ident, ajoutez un di`se (#) devant la ligne le concere e nant dans le chier /etc/inetd.conf. # :INFO : Info services #ident stream tcp wait identd /usr/sbin/identd identd

83

9.7

IP et lIP-Spoong

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

9.7.1

Un peu de thorie ... e

Le protocole IP est non-orient connexion, il nassure aucune vrication e e de la rception des paquets et ne se soucie gu`re de la faon de les traiter. IP e e c nassure quun routage dune adresse vers autre. Il est donc facile de duper le routage IP en injectant des paquets falsis ayant des adresses IP valides e sur le rseau. e Le protocole TCP, quant ` lui, assure une abilit de la remise des paquets a e grce ` des numros de squences qui les distingue un ` un. Chaque paquet a a e e a TCP poss`de deux numros, le numro de squence et le numro dacquittee e e e e ment. Ces deux nombres sont cods sur 32 bits. Ils sont uniques, an de ne e pas confondre les paquets lors de leurs traitements. Cest sur ces bases que nous allons dcrire lattaque. e Imaginons que le client A est connect en rsh sur le serveur B. Le pirate e C va tenter de voler la connexion au client. 84

Il va en premier lieu rduire au silence le client en le saturant avec des ate taques tels que le syn-ooding, le dni de service ... (voir chapitre 6.4). e La seconde partie de lattaque est assez simple. Le pirate envoie une srie e de demandes de connexion au serveur ( paquets TCP avec le ag SYN arm) e en utilisant ladresse de A. Le serveur rpond avec une srie de paquets dace e quittement (ags SYN et ACK arms). Cest l` que rside toute la nesse de e a e lIP spoong. Mais dabord, quelques rappels sur le protocole TCP. Pour ltablisement e dune connexion TCP, le client envoie un paquet avec un numro de squence e e initial (NS1). Le serveur va rpondre avec un paquet dacquittement ayant e son propre numro de squence (NS2), mais ayant un numro dacquite e e tement (NA1) gal au numro de squence initial incrment dune unit e e e e e e (NA1=NS1+1). Ensuite le client renvoie un paquet avec un numro dacquite tement (NA2=NS2+1). Une connexion TCP stablit donc en trois parties. e Ce principe de numros de squences et dacquittement est utilis tout le e e e long de la transaction pour en assurer la abilit. La subtilit de lattaque e e rside dans le fait que le serveur gnre la valeur NS2 suivant un cycle pare e e ticulier. Il peut utiliser, par exemple, soit une fonction gnrant un nombre e e alatoire, soit incrmenter une valeur initiale de 128 toutes les secondes et e e de 64 apr`s chaque connexion. Tout dpend de limplmentation de la pile e e e TCP/IP du syst`me. e Et cest l` que rside tout le probl`me. Le pirate envoie un grand nombre a e e de demandes de connexion dans un laps de temps dtermin et analyse les e e acquittements du serveur pour dterminer lalgorithme dincrmentation. Si e e cet algorithme est bas sur la gnration de nombres alatoires, lattaque a e e e e peu de chances daboutir. Mais si lalgorithme est facilement comprhensible, e le pirate va alors envoyer une requte de connexion au serveur en utilisant e ladresse IP du client. Le serveur va rpondre avec un paquet dacquittement e de numero de sequence (NS). Le client mis hors service ne pourra rpondre, e le pirate le fera ` sa place. Pour cela, il doit injecter un paquet ayant un a numro dacquittement de valeur NA = NS +1. Mais, ayant usurp ladresse e e du client, il ne peut intercepter les paquets lui tant destins. Il ne peut donc e e pas conna cette valeur NS. Il va donc la gnrer lui-mme ` partir de son tre e e e a analyse de lalgorithme dincrmentation. Cest pourquoi cette attaque est e aussi qualie dattaque aveugle. Si le numro est valide, le pirate a tabli e e e la connexion au serveur en se faisant passer pour le client. 85

Le fait que lattaque ne se restreigne qu` une petite partie de syst`mes vient a e du fait que la plupart des piles TCP/IP utilisent des numros de squences e e bass sur des nombres alatoires. Certains syst`mes comme BSD ou HP-UX e e e connaissent de gros probl`mes ` cause de lIP-Spoong. e a Illustration

86

9.7.2

Prvenir lIP spoong grce ` Nmap e a a

Nmap invoqu avec loption -O et -v vous fournit une indication sur la e dicult quaura le pirate ` procder ` une attaque par IP spoong contre e a e a 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 87

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 rewalled 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 Diculty=4687481 (Good luck !) IPID Sequence Generation : Incremental Nmap run completed 1 IP address (1 host up) scanned in 3 seconds Les lignes intressantes : e TCP Sequence Prediction : Class=random positive increments Difculty=4687481 (Good luck !) Celles-ci nous renseignent sur la dicult dune attaque par IP-Spoong. e Plus le nombre associ ` la valeur Diculty est lev, plus il est dicile ea e e dentreprendre une attaque. Le message Good Luck ! entre parenth`ses est e plutt ironique vis-`-vis de la russite de lattaque. o a e Si, par malchance, lors dun scan, vous obtenez un nombre tr`s bas avec e un message du type Trivial Joke, cela signie que votre syst`me est tr`s e e vulnrable ` une attaque par IP-Spoong. e a

Comment sen protger ? e


Sur la plupart des syst`mes, les numros de squence sont incrments e e e e e de faon alatoire, ce qui limite dj` une grande partie des attaques par IP c e ea spoong.

88

Pour se protger , il faut commener par supprimer tous les services se basant e c sur lauthentication IP (rloging, rsh). Certains modules comme rp lter sous Linux permettent une dfense contre e ces attaques. Lutilisation de tunnels permet galement de parer cette attaque. e

Documents
Dscription de lIP-Spoong : e http://www.phrack.org/show.php?p=48\&a=14 (en anglais)

89

9.8

NETBIOS

NETBIOS nest pas un protocole en lui-mme, cest une interface logie cielle et un syst`me de nommage. Linterface NETBIOS est tr`s utilise sur e e e les rseaux M icrosof t c . NETBIOS permet par exemple de partager des rese sources en rseau. Ces ressources peuvent tre des imprimantes, processus ou e e des espaces disques. Un pirate peut essayer daccder ` ces ressources en sy e a connectant et tester dirents couples utilisateur/mot de passe. NETBIOS e nest pas une interface tr`s scurise. Elle est surtout utilise dans les rseaux e e e e e c pour le protocole SMB (bien quelle tend ` tre remplace). M icrosof t ae e

Comment sen protger ? e


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

Documents
Un bon guide pour la scurisation NETBIOS (en anglais) : e http://packetstormsecurity.org/groups/rhino9/wardoc.txt

90

9.9

NFS : Network File System

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

9.9.1

Les attaques

Le gros probl`me avec NFS, cest que le client fait toujours conance au e serveur et vice versa. Un compte root sur une machine cliente peut tr`s e bien compromettre le serveur et vice-versa.

Comment sen protger ? e


Utilisez la commande mount avec loption -nosuid sur les clients, ce qui empche la modication ou lutilisation des programmes setuid sur un syst`me e e de chier NFS. Utilisez loption root-squash dans le chier /etc/exports : [root@nowhere /root]# Cela aura pour but dempcher un client root de devenir root sur le syst`me e e de chiers NFS stocks sur le serveur. e Protger lacc`s ` votre serveur NFS en ltrant ` partir de l adresse IP, e e a a les dirents clients. e

91

9.10

NIS : Network Information Service

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

9.10.1

Les attaques

Il est possible dobtenir des nombreuses informations (notamment les chiers de mots de passe) ` partir du nom de domaine NIS. a Il est aussi possible pour un utilisateur non autoris dobtenir les chiers e de mots de passe ` partir dun poste local client NIS. a Les mots de passe sont transmis en clair sur le rseau, donc facilement intere ceptable par un snier.

Comment sen protger ? e


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

92

9.11

PORTMAP

portmap (en coute sur le port 111) est le support de nombreux autres e services comme les serveurs NFS, NIS ... La comande rpcinfo permet de savoir quels services RPC sont actifs sur le syst`me vis (ici machinecible). e e [root@nowhere /root]# rpcinfo -p machinecible program vers proto port 10000 2 tcp 111 portmapper 10000 2 udp 111 portmapper 10007 2 udp 661 ypbind 10007 2 tcp 664 ypbind Lors de la requte, portmap ne poss`de aucun mcanisme de contrle, il e e e o accepte donc la requte et la traite. e

Comment sen protger ? e


Il est conseill de ltrer lacc`s sur ce port grce ` un rewall bien cone e a a gur ou de dsactiver totalement ce service. e e

93

9.12

Le protocole SMB

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

9.12.1

Les scans de SMB shares

Si vous avez des ressources partages en acc`s libre ` tout le monde (evee e a ryone shares), un pirate utilisera un scanner de share pour les dtecter et sy e connecter. Mme si vous protgez ces shares par mot de passe, certains logiciels peuvent e e tester dirents mots de passe en se loguant ` la ressource et ainsi tenter e a direntes combinaisons de mots de passe (voir section 7.1). e

Comment sen protger ? e


Pour tre sr que les mots de passe SMB soient envoy encrypts sur le e u e e rseau (mme en cas de requtes frauduleuses), vriez que la valeur des e e e e cls suivantes de la base de registre sont bien gales ` 0 : e e a SousW indowsN T 4 c HKEY\LOCAL\MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters 94

EnablePlainTextPassword=dword :00000000 SousW indowsXP c

HKEY\ LOCAL\ MACHINE\SYSTEM\CurrentControlSet\Services\lanmanworkstation\param enableplaintextpassword=dword :00000000 Protgez toutes vos ressources par mots de passe, vitez les shares en acc`s e e e libre ` tout le monde et noubliez jamais de choisir des mots de passe associs a e de la bonne faon (voir section 7.1 ). c Ne laissez jamais un serveur SMB en coute sur Internet, cela est plus que e suicidaire. Si vous tes obligs dutiliser SMB ` travers Internet, utilisez les e e a tunnels (voir section 4.3). Sur votre rseau interne, ltrez lacc`s sur votre serveur SMB grce ` un e e a a rewall.

Document
La description des probl`mes de scurit sur SMB (en anglais) : e e e http://www.phrack.org/show.php?p=60\&a=11

95

9.13

SMTP - Les services de messagerie

SMTP : Simple Mail Transfert Protocol. Un serveur SMTP sert a envoyer les mails sur le rseau local ou sur In` e ternet. Ce service est en coute sur le port 25. e Le premier probl`me avec un serveur SMTP est quil peut servir de relais e de mailing anonyme. Un pirate peut tr`s bien sen servir pour envoyer des e mails scabreux ` travers Internet. a Un autre probl`me concerne les commandes EXPN et VRFY : ces come mandes sont sources de nombreuses informations pour le pirate. Il convient de les dsactiver si le logiciel de messagerie le permet. e

Comment sen protger ? e


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

96

9.14

SQL

SQL est utilis pour la gestion de base de donnes. Il permet l intercone e nexion dune page web avec une base de donnes ` laide de scripts. e a Ce chapitre va prsenter une attaque tr`s connue contre les serveurs SQL, le e e SQL-Injection.

9.14.1

Le SQL-INJECTION

Une requte SQL passe par plusieurs tapes avant daboutir. e e Les donnes sont envoyes par le client par lintermdiaire dun script sur e e e le serveur web. Il sensuit une connexion au serveur SQL, puis lenvoi des donnes de la requte du client. La rquete est excute par le serveur SQL. e e e e e La rponse est reue par le client et est ache sous la forme dune page web e c e ... Lattaque par SQL-Injection consiste ` injecter des caract`res spciaux ou a e e des cha nes de caract`res particuli`res dans les rquetes SQL du client. Ces e e e caract`res peuvent tre interprts par le serveur SQL comme des commandes e e ee permettant dobtenir un acc`s sans mot de passe, de rcuprer des chiers ... e e e

Comment sen protger ? e


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

Documents
La technique du SQL Injection dcrite par son inventeur : e http://www.wiretrip.net/rfp/p/doc.asp/i6/d42.htm (en anglais)

97

9.15

SSH

SSH vous permet de crer un tunnel chir pour vos connexions, il ene e crypte toutes les changes. SSH est donc un outil conseill (pour ne pas dire e e indispensable) pour les transactions rseaux. e Malgr tout, SSH est sujet ` direntes attaques, la premi`re tant une e a e e e attaque de type Man-In-The-Middle (section 8.2. Le pirate se place entre le client et le serveur (avant ltablissement de session SSH) grce ` des e a a mthodes de redirection de ux. Lorsque le client et le serveur schangent e e les cls indispensables pour lencryptage, il les intercepte et les utilise pour e se faire passer pour le client aupr`s du serveur et pour le serveur aupr`s du e e client. Une autre attaque utilisant une faiblesse du protocole existe. Cette attaque se base sur la gnration alatoire des caract`res de bourrage. Ces caract`res e e e e e sont utiliss pour rendre la longueur du paquet multiple de 64 bits. Ces cae ract`res ntant pas vriables, ils peuvent tre utiliss pour modier le bon e e e e e droulement de la communication. Cette faille est plus connue sous le nom e de lexploitation du canal cach. e Ces attaques ne sont pas tr`s faciles ` implmenter. e a e

98

9.16

TELNET

Le service telnet (en coute sur le port 23) permet ` deux machines dise a tantes de communiquer. Telnet tablit deux terminaux virtuels pour les deux e machines. Ce type de terminal est semblable ` une connexion srie. Lutilia e sateur a limpression dtre assis devant un terminal de la machine. e telnet repose sur une authentication par login et mot de passe. Malheureusement, telnet poss`de le mme probl`me que FTP : il nassure pas la e e e protection des mots de passe contre lcoute dun snier. Les mots de passe e associs du login circulent en clair sur le rseau. e e

Comment sen protger ? e


Utilisez plutt SSH, qui prsente les mmes fonctionnalits que telnet o e e e mais permettant en plus de tunneler la connexion en encryptant toutes les transactions. Utilisez IPsec ou des utilitaires de tunneling (voir section 4.3) pour protger e toutes vos connexions. Je vous conseille aussi de restreindre lacc`s ` votre serveur telnet via un e a rewall.

99

9.17

XWINDOW

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

9.17.1

Les attaques

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

Comment sen proteger ?


Utilisez la commande : [root@nowhere /root]# xhost pour fermer les acc`s au serveur XWINDOW. e

100

9.18

Peer To Peer (eDonkey, Kazaa ...)

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

Comment sen prot`ger ? e


Sous linux, le projet P2Pwall donne des utilitaires et des documents permettant dutiliser le rewall iptables pour ltrer le trac dapplication Peer to Peer. Il est disponible gratuitement ` ladresse : a http://www.lowth.com/p2pwall/

101

Chapitre 10 Scurit avance e e e

102

Introduction
Si vous avez lu les prcdents chapitres (et surtout le chapitre 4), vous e e possdez maintenant toutes les connaissances requises pour pouvoir abore der cette partie. Elle concerne limplmentation et le dveloppement doue e tils ddis ` la scurit. La premi`re section vous montrera comment are e a e e e chitecturer son rseau de faon scurise et comment bien implmenter les e c e e e dirents outils de protection. La deuxi`me section vous dcrira direntes e e e e biblioth`ques utilises pour le dveloppement dutilitaires rseaux. Nous done e e e nerons en exemple la programmation dun simple scanner.

103

10.1

Larchitecture scurise e e

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

10.1.1

Le rseau de dpart e e

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

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

104

10.1.2

Le premier niveau de scurit e e

Apr`s un premier piratage, notre administrateur reoit de nouveaux crdits. e c e Il repense larchitecture :

Il ddiera une machine pour le serveur web, une machine pour le serveur e 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 e a rseau local. Ils constituent une zone dmilitarise (DMZ). Dmilitarise car e e e e e on peut sy connecter depuis lextrieur contrairement au rseau local. e e Le rewall situ entre le rseau local et le routeur empchera toute connexion e e e de lextrieur vers le rseau local, et autorisera seulement les connexions dee e puis le rseau local sur un nombre limit de services. e e Le rewall situ entre le routeur et la DMZ autorisera tous les acc`s sur e e les serveurs web et de messagerie (depuis le rseau local comme depuis lexe terieur), mais en empchera les tentatives de connexion sur les autres services. e Malheureusement, notre administrateur subit un autre piratage. Il suppose que le pirate a pu passer le routeur et les rewalls en soumettant des requtes e sur des ports autoriss. Il a tr`s bien pu envoyer un exploit sur un serveur e e web ou de messagerie vulnrable. e

10.1.3

NDIS : Deuxi`me niveau de scurisation e e

Alors, pour se protger, il intercale une sonde NDIS (voir section 4.2) e entre le rewall et le rseau local et dans la DMZ. Si un pirate venait ` ene a 105

voyer des requtes suspectes ou des exploits connus, les NIDS prviendraient e e du risque dintrusion (de lintrieur ou de lextrieur). Le manager NDIS se e e situera dans le rseau local. e

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

10.1.4

Les niveaux plus levs e e

Nous allons nous appuyer dans cette section sur larchitecture prcdente. e e Nous allons modier certaines parties du rseau. e Nous allons dabord insrer une zone de dcontamination entre Intere e net et le rseau interne. Cette zone est constitue danalyseurs de contrle e e o de contenu, des antivirus et dautres utilitaires surveillant le trac rseau e (comme des NIDS). Tous les ux entrants et sortants passeront par cette zone de dcontamination. Ces proxys applicatifs peuvent prendre la dcision e e de couper la connexion en cas dattaques ou de simplement rejeter la demande. Cette zone est appele zone de dcontamination car elle permet de dtecter e e e des signatures dattaques dans les ux de donnes provenant dInternet et e dviter la propagation dans le reste du rseau. e e

106

Pour le rseau local, nous le subdiviserons en sous-rseaux, chaque souse e rseau possdera un NDIS (sonde + manager). Ces sous-rseaux seront relis e e e e entre eux par des switchs.

Ce type darchitecture est tr`s ecace pour la scurit, mais reste nanmoins e e e e assez cuteuse et dicile ` grer. Lutilisation de tunnels (voir section 4.3) o a e permet en plus daccro la sret des transactions. tre u e

107

10.2

Dveloppez vos propres utilitaires scurit e e e

Ce chapitre va prsenter dirents outils pour dvelopper vos propres utie e e litaires de scurit. Une connaissance du language C est requise. Une solide e e connaissance rseau est aussi demande. e e Le syst`me dexploitation utilis est Linux avec un compilateur GCC. Nous e e allons tudier 2 biblioth`ques permettant la cration dutilitaires rseaux : e e e e libnet et libpcap. La premi`re, Libnet, est dveloppe par Mike D. Schiman. Cest une bie e e blioth`que opensource (donc gratuite). Libnet permet de fabriquer et dine jecter facilement des paquets sur un rseau. Un grand nombre de protocoles e est support. e Note importante : La version de Libnet dcrite est la version 1.1. De grosses e modications faites sur le code de la version 1.1 la rend incompatible avec les versions de biblioth`ques antrieures. e e La deuxi`me est Libpcap. Elle permet de capturer les paquets transitant sur e le rseau. Cette biblioth`que est maintenue par l quipe de dveloppement e e e e de tcpdump (prsent dans le chapitre 5.4). e e Libnet est tlchargeable ` cette adresse : ee a www.packetfactory.net Libpcap est tlchargeable ` cette adresse : ee a www.tcpdump.org Pour donner une description de ces biblioth`ques, nous allons tudier le e e dveloppement dun scanner de base. Ce scanner listera les ports TCP oue verts sur une machine avec une mthode de scan en port demi-ouvert (SYN e scan, voir section 2.1). Linjection des paquets sera ralise grce ` Libnet, e e a a la rception des rponses grce ` Libpcap. e e a a

10.2.1

Le programme

Le programme scanner sera appel en mode console et recevra deux e arguments : linterface rseau dutilisation et ladresse IP de la machine ` e a 108

scanner. Il achera la liste des ports ouverts et se terminera. Exemple dutilisation : [root@nowhere.net /root]#./scanner -i eth0 -c 192.168.1.2 Le Le Le Le port port port port 21 est ouvert 22 est ouvert 1111 est ouvert 1024 est ouvert

Mais intressons-nous ` son dveloppement. e a e Un petit rappel thorique : e Le scan en port demi-ouvert consiste ` envoyer un paquet TCP avec le ag a SYN arm sur un port prcis. Si ce port est ouvert, on recevra en rponse un e e e paquet TCP avec le couple SYN/ACK arm. e Le programme recevra en argument, lIP de la machine ` scanner et le nom a de linterface rseau (par exemple eth0). e ATTENTION ! Le but de ce chapitre est de prsenter les librairies libnet e et libpcap et certaines de leurs fonctions les plus utiles dune mani`re suce cinte. Ce chapitre nest en aucun cas un cours de programmation rseau. e Principe gnral de fonctionnement : e e Le principe de fonctionnemt du programme est simple ; il sera constitu de e deux fonctions : la premi`re permettra denvoyer les paquets (sur les 16000 e premiers ports) et la deuxi`me de les recevoir. Ces deux fonctions seront ace tives en parall`le dans deux processus distincts (grce ` lappel de la fonction e e a a fork()). Je prsenterai les deux fonctions utilises pour intercepter et envoyer : e e 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 e fonctions de cette librairie pour notre programme : 109

La premi`re est la fonction pcap t *pcap t pcap open live(char *device, int e snaplen, int promisc,int to ms,char *errbuf ). Cette fonction initialise la carte rseau et renvoie un descripteur de type e pcap t sur cette interface rseau en coute. e e La param`tre *device est un pointeur sur une cha de caract`res contee ne e nant le nom de linterface rseau utilise (par exemple eth0). e e Le param`tre snaplen reprsente la taille maximale (en octet) dun paquet e e intercept (max=65535). e Le param`tre promisc contrle le fonctionnement de la carte rseau. Sil est e o e gal ` 1, la carte est en mode transparent, cest ` dire quelle intercepte e a a tous les paquets (mme ceux qui ne lui sont pas destins). Si cette valeur est e e dirente de 1, la carte nacceptera que les paquets lui tant destins. Pour e e e notre programme, la carte sera en mode transparent donc promisc sera gal e a ` 1. Le param`tre to ms spcie le dlai (en millisecondes) dinterception de pae e e quets. Lorsque ce dlai est coul, la fonction se termine. e e e Le param`tre *errbuf est un pointeur sur une cha de caract`res pouvant e ne e contenir une message derreur en cas de mauvaise ou non excution du proe gramme. La deuxi`me fonction est la fonction u char *pcap next(pcap t *p, struct e pcap pkthdr *h). Cette fonction utilise comme argument le descripteur p pour accder ` la carte rseau. Elle renvoie chaque paquet intercept. e a e e Cest une fonction bloquante. Ces deux fonctions sont toujours utilises en srie, la pcap open live initialise e e la carte rseau et renvoie un descripteur de chier, ensuite ce descripteur de e chier est utilis par la fonction *pcap next qui intercepte les paquets. e Voici la fonction ReceptionPaquet : void ReceptionPaquet(unsigned int IP Cible, u char *Device) /*Variable utilise par les fonctions de libpcap (elle contiendra notre pae 110

quet*/ struct pcap pkthdr Header ;

/*Descripteur reprsentant linterface rseau (retourn par e e e la fonction pcap open live()*/ pcap t *Descr ;

/*Structure pour len tte ETHERNET*/ e struct ethhdr *EtherHdr ;

/*Structure pour len tte IP*/ e struct ip *IpHdr ;

/*Structure pour len tte TCP*/ e struct tcphdr *TcpHdr ;

/*Tampon pour retour derreur*/ char ErrBuf[LIBNET ERRBUF SIZE] ;

/*Pointeur vers le paquet*/ u char *Packet ;

/*Descripteur pour libnet*/ libnet t *l ;

/* Initialisation pour les fonctions de libnet (obtention dun descripteur)*/

l=libnet init(LIBNET RAW4,NULL,ErrBuf) ;

/*Descripteur Descr sur linterface rseau en coute*/ e e 111

Descr = pcap open live(Device,65535,1,0,ErrBuf) ;

while(1) /*On recupre le paquet (il est point par la variable Pae e cket)*/

Packet = (u char *) pcap next(Descr,&Header) ;

/*On convertit le paquet pour analyser len tte ETHERNET*/ e

EtherHdr = (struct ethhdr * ) (Packet) ;

/*On verie si le protocole est bien IP*/

if(ntohs(EtherHdr-h proto)==ETH P IP) /*On convertit le paquet pour analyser len tte IP*/ e

IpHdr = (struct ip * ) (Packet +ETH HLEN) ;

/*On verie si le protocole est bien TCP*/

if(IpHdr-ip p==IPPROTO TCP) TcpHdr = (struct tcphdr * ) ( Packet + ETH HLEN + 4 * (IpHdr-ip hl)) ;

/* Cela sert ` verier que nous avons bien envoy le paquet et quil a e provient bien de la machine scanne. Ceci se base sur lanalyse des e adresses IP */ 112

if(

(IpHdr-ip src.s addr==IP Cible) && (IpHdr-ip dst.s addr== libnet get ipaddr4(l))) /*Pour verier que le port denvoi correspond au mme que le notre*/ e if(ntohs(TcpHdr-dest)==PORT SOURCE)

/*Si les ags SYN et ACK sont arms, le port est ouvert*/ e if((TcpHdr-ack==1) && (TcpHdr-syn==1)) printf(Le port %d est ouvert n,ntohs(TcpHdr-source)) ; /*Destruction du descripteur*/ libnet destroy(l) ;

Pour envoyer (void EnvoiPaquet(unsigned int,int)) : La fonction EnvoiPaquet permet dinjecter les paquets sur le rseau. Pour e cela, elle utilise la librairie Libnet. Nous allons utiliser direntes fonctions de la librairie Libnet. e La premi`re est la fonction libnet t *libnet init(int injection type, char *dee vice, char *err buf ). Cette fonction permet dinitialiser une interface dinjection des paquets. Elle traite trois arguments :

Le premier injection type dnit le type dinterface (niveau ethernet, IP e ou TCP). Pour notre programme, une injection au niveau IP sura (valeur LIBNET RAW4).

113

Le deuxi`me argument *device est un pointeur sur la cha de caract`re e ne e contenant le nom de linterface rseau qui sera sollicite (ex : eth0), la valeur e e NULL conviendra car libnet choisira automatiquement une carte rseau. e Le dernier argument *err buf est utilis pour les messages derreur (comme e libpcap). Elle renvoie un pointeur sur linterface dinjection de type libnet t. Les fonctions libnet ptag t libnet build tcp(...) et libnet autobuild ipv4(...) sont utilises pour construire les en-ttes TCP et IP. Elles prennent comme argue e ments les direntes valeurs constituants les en-ttes TCP et IP (numro de e e e port, de squences ... pour TCP, adresses IP, types de protocoles pour IP). e Elle renvoient toutes les deux un descripteur de type libnet ptag t, ces fonctions doivent toujours respecter lordre TCP puis IP (sens couche application vers couche rseau ou physique). e Ces fonctions prenent en argument le pointeur sur linterface dinjection (pointeur renvoy par la fonction libnet init). e La fonction int libnet write(libnet t) injecte le paquet. La fonction void libnet destroy(libnet t) dtruit linterface cre par libnet. e e Voici la fonction EnvoiPaquet : 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) ;

114

/*Pour construire len tte TCP*/ e

Tag=libnet build tcp( PORT SOURCE, /*Port Source*/ port dest, /*Port destination*/ 0, /*N Squence*/ e 0, /*N Acquitement*/ TH SYN, /*Demande de connexions*/ 4096, /*Taille de fentre*/ e 0, /*Somme de contrle*/ o 0, /*Pointeur durgence*/ LIBNET TCP H, /*Taille en tte*/ e (u char *) (NULL),/*Pointeur vers les donnes*/ e 0, /*Taille des donnes*/ e l, 0) ;

/*Pour construire len tte IP*/ e

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*/ e 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 115

attendra une seconde pour le lancement du processus et de la fonction ReceptionPaquet puis excutera 16000 fois la boucle denvoi de paquets (16000 e ports).Elle attendra encore 5 secondes pour le traitement des rponses et e terminera le programme. Voici la fonction main : extern char *optarg ; extern int optind ; extern int opterr ;

int main(int argc,char *argv[])

/*Pour avoir les param`tres de la ligne de commande*/ e static char optstring[]=i :c : ; int optch ; char *Device ;

/*Variable ditration*/ e int i ;

/*Pour stocker ladresse IP*/ u int32 t IP Cible ;

/*Variable qui va reevoir le PID du processus enfant*/ c int Pid ;

/*Pour traiter les param`tres de la ligne de commande*/ e

if(argc 5) printf( nscanner -i interface -c IP Cible 116

n) ; return 0 ;

while((optch= getopt(argc,argv,optstring)) !=EOF) switch(optch) /*Pour le nom de linterface*/ case i : Device = (char *) (malloc(strlen(optarg)*sizeof(char))) ; strncpy(Device,optarg,strlen(optarg)) ; break ;

/*Pour ladresse IP de la machine cible*/ case c : IP Cible = inet addr(optarg) ; break ; default : printf( nscanner -i interface -c IP Cible n) ; return 0 ;

/*On lane le processus enfant (rcuperation et analyse des paquets*/ c e Pid=fork() ; if(Pid==0) ReceptionPaquet(IP Cible,Device) ;

/*On attend une seconde*/

117

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*/ e

sleep(5) ;

kill(Pid,SIGINT) ;

return 0 ; }

10.2.2

Comment obtenir et compiler le source entier du programme ?

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

10.2.3

Documents

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

118

Chapitre 11 Annexes

119

11.1

Les sites et revues ` consulter rgulierement a e

Pour les sites : Cert : www.cert.org (en anglais) Securityfocus : www.securityfocus.com (en anglais) Packetstorm security : www.packetstormsecurity.org (en anglais) Bugtraq : http://citadelle.intrinsec.com/mailing/current/HTML/ml_bugtraq/ (en anglais) http://www.bugtraq-france.com Le site du CNRS : http://www.services.cnrs.fr/wws/info/sos-virus http://www.cnrs.fr/Infosecu/Virus.html Le site du Renater : http://www.renater.fr/ Phrack (surtout en Janvier et aout/septembre !) : www.phrack.org (en anglais) Pour les revues : Pour les revues en franais disponibles en kiosque, je vous conseille dacheter c le magazine MISC. Je ne suis pas dpendant de MISC, mais cest le seul e 120

magazine enti`rement ddi ` la scurit apportant des rponses concr`tes ` e e ea e e e e a de nombreux probl`mes. Il est disponible tous les 2 ou 3 mois environ chez e votre libraire. Les anciens numros peuvent tre aussi commands sur le site de MISC, e e e 9 numros ayant t sortis jusqu` septembre 2003. Chaque numro constie ee a e tue une tr`s bonne source dinformations. e Pour plus de renseignements : www.miscmag.com

121

11.2

Remerciements

Je tiens ` remercier Nicolas Buratto et Christian Duclou pour leur aide a sur ce manuel. Un grand merci au Mirabellug. Un petit coucou ` celui sans qui rien naurait pu tre possible. a e 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

122

Index
A antisni . . . . . . . . . . . . . . . . . . . . . . 47 antivirus . . . . . . . . . . . . . . . . . . . . . 42 architecture . . . . . . . . . . . . . . . . . 104 ARP-Poisoning . . . . . . . . . . . . . . . 64 arpwatch . . . . . . . . . . . . . . . . . . . . . 65 B backdoors . . . . . . . . . . . . . . . . . . . . a ` distance . . . . . . . . . . . . . . . . logicielles . . . . . . . . . . . . . . . . . banni`res . . . . . . . . . . . . . . . . . . . . . e bibliotheques partages . . . . . . . e BIOS . . . . . . . . . . . . . . . . . . . . . . . . . bogues . . . . . . . . . . . . . . . . . . . . . . . bombes e-mail . . . . . . . . . . . . . . . . bombes logiques . . . . . . . . . . . . . . boot . . . . . . . . . . . . . . . . . . . . . . . . . disquette . . . . . . . . . . . . . . . . . brute forcing . . . . . . . . . . . . . . . . . C Cain . . . . . . . . . . . . . . . . . . . . . . . . . carte rseau e transparent . . . . . . . . . . . . . . . Chevaux de Troie . . . . . . . . . . . . . chroot . . . . . . . . . . . . . . . . . . . . . . . . conguration . . . . . . . . . . . . . . . . . mauvaise . . . . . . . . . . . . . . . . . 43 43 43 23 45 11 26 56 53 10 10 59 60 47 42 39 31 26 rseaux . . . . . . . . . . . . . . . . . . . e dsynchronisation TCP . . . . . . . e dtourment de ux . . . . . . . . . . . e DHCP . . . . . . . . . . . . . . . . . . . . . . . puisement de ressources . e faux serveurs . . . . . . . . . . . . . dictionnaire attaque . . . . . . . . . . . . . . . . . . . DNS . . . . . . . . . . . . . . . . . . . . . . . . . cache poisoning . . . . . . . . . . . spoong . . . . . . . . . . . . . . . . . . dsni . . . . . . . . . . . . . . . . . . . . . . . . . E encapsulation . . . . . . . . . . . . . . . . . ethereal . . . . . . . . . . . . . . . . . . . . . . exploits . . . . . . . . . . . . . . . . . . . . . . EXPN . . . . . . . . . . . . . . . . . . . . . . . . F faille . . . . . . . . . . . . . . . . . . . . . . . . . failsafe . . . . . . . . . . . . . . . . . . . . . . . FAT . . . . . . . . . . . . . . . . . . . . . . . . . . FINGER . . . . . . . . . . . . . . . . . . . . . rewalking . . . . . . . . . . . . . . . . . . . rewall . . . . . . . . . . . . . . . . . . . . . . . attaques . . . . . . . . . . . . . . . . . . fragmentation de paquets . . . . . FTP . . . . . . . . . . . . . . . . . . . . . . . . . attaque par rebonds . . . . . . serveur anonyme . . . . . . . . . 54 65 64 71 71 71 59 73 74 73 47 68 47 27 96 22 10 10 77 32 31 31 55 79 80 79

D dnis de services e applicatifs . . . . . . . . . . . . . . . . 26 distribus . . . . . . . . . . . . . . . . . 56 e 123

H HTTP . . . . . . . . . . . . . . . . . . . . . . . . 81

I IDENT . . . . . . . . . . . . . . . . . . . . . . . IDS . . . . . . . . . . . . . . . . . . . . . . . . . . installations . . . . . . . . . . . . . . . . . . IP spoong . . . . . . . . . . . . . . . . . . . IpvSec . . . . . . . . . . . . . . . . . . . . 36,

83 34 26 84 48

R rseau e priv virtuel . . . . . . . . . . . . . . 36 e rootkit . . . . . . . . . . . . . . . . . . . . . . . 45 S scan . . . . . . . . . . . . . . . . . . . . . . . . . . furtifs . . . . . . . . . . . . . . . . . . . . vanilla TCP . . . . . . . . . . . . . . scanner . . . . . . . . . . . . . . . . . . . . . . . scripts . . . . . . . . . . . . . . . . . . . . . . . . SHTTP . . . . . . . . . . . . . . . . . . . . . . signatures . . . . . . . . . . . . . . . . . . . . SMB . . . . . . . . . . . . . . . . . . . . . . . . . scans de shares . . . . . . . . . . . SMTP . . . . . . . . . . . . . . . . . . . . . . . . smurng . . . . . . . . . . . . . . . . . . . . . . snier . . . . . . . . . . . . . . . . . . . . . . . . snort . . . . . . . . . . . . . . . . . . . . . . . . . SQL . . . . . . . . . . . . . . . . . . . . . . . . . . injection . . . . . . . . . . . . . . . . . . SSH . . . . . . . . . . . . . . . . . . . . . . . . . . SSL . . . . . . . . . . . . . . . . . . . . . . . . . . SYN ood . . . . . . . . . . . . . . . . . . . . T tcpdump . . . . . . . . . . . . . . . . . . . . . TELNET . . . . . . . . . . . . . . . . . . . . . traceroute . . . . . . . . . . . . . . . . . . . . trappe . . . . . . . . . . . . . . . . . . . . . . . . Trinux . . . . . . . . . . . . . . . . . . . . . . . tunnel . . . . . . . . . . . . . . . . . . . . . . . . 14 16 16 14 27 82 42 94 94 96 55 47 35 97 97 98 82 54 47 99 32 43 10 36

J John The Ripper . . . . . . . . . . . . . 59 K Knoopix . . . . . . . . . . . . . . . . . . . . . . 11 L libnet . . . . . . . . . . . . . . . . . . . . . . . 108 libpcap . . . . . . . . . . . . . . . . . . . . . . 108 LKM . . . . . . . . . . . . . . . . . . . . . . . . . 45 LophtCrack . . . . . . . . . . . . . . . . . . 60 M man in the middle . . . . . . . . . . . . MBR . . . . . . . . . . . . . . . . . . . . . . . . . mot de passe attaques . . . . . . . . . . . . . . . . . . interception . . . . . . . . . . . . . . N NETBIOS . . . . . . . . . . . . . . . . . . . . Netcat . . . . . . . . . . . . . . . . . . . . . . . NFS . . . . . . . . . . . . . . . . . . . . . . . . . . Nimda . . . . . . . . . . . . . . . . . . . . . . . NIS . . . . . . . . . . . . . . . . . . . . . . . . . . Nmap . . . . . . . . . . . . . . . . . . . . . . . . NTFS . . . . . . . . . . . . . . . . . . . . . . . . NTFS2DOS . . . . . . . . . . . . . . . . . . 67 51 59 47 90 22 91 52 92 14 10 10

O outrepassements de droits . . . . 27 P ping of death . . . . . . . . . . . . . . . . . 55 PORTMAP . . . . . . . . . . . . . . . . . . 93 prelude . . . . . . . . . . . . . . . . . . . . . . . 34 124

U UDP Flood . . . . . . . . . . . . . . . . . . . 54 UML . . . . . . . . . . . . . . . . . . . . . . . . . 39 User Mode Linux . . . . . . . . . . . . . 39 V vers . . . . . . . . . . . . . . . . . . . . . . . . . . 52 virus . . . . . . . . . . . . . . . . . . . . . . . . . 51 furtifs . . . . . . . . . . . . . . . . . . . . 51

polymorphes . . . . . . . . . . . . . . 51 VPN . . . . . . . . . . . . . . . . . . . . . . . . . 36 VRFY . . . . . . . . . . . . . . . . . . . . . . . 96 W Winux . . . . . . . . . . . . . . . . . . . . . . . 51 X XWINDOW . . . . . . . . . . . . . . . . . 100

125