Un petit guide pour la s´curit´
                           e     e

  Alexandre Viardin (Mirabellug)




copyright Alexandre Viardin Novembre 2003
Table des mati`res
              e

1 S´curisation de base
   e                                                                                                      8
  1.1 Premier conseil : Verrouillez les stations . . .           .   .   .   .   .   .   .   .   .   .   10
  1.2 Pour Linux . . . . . . . . . . . . . . . . . .             .   .   .   .   .   .   .   .   .   .   10
  1.3 Pour Windows . . . . . . . . . . . . . . . . .             .   .   .   .   .   .   .   .   .   .   10
  1.4 Le lecteur de disquettes . . . . . . . . . . . .           .   .   .   .   .   .   .   .   .   .   10
  1.5 Le lecteur de CDROM . . . . . . . . . . . .                .   .   .   .   .   .   .   .   .   .   11
  1.6 N’oubliez pas le mot de passe pour le BIOS                 .   .   .   .   .   .   .   .   .   .   11

2 La collecte d’informations                                                                             12
  2.1 Le Scanner . . . . . . . . . . . . . . . . . . . . . . . . .                       . . . .         14
      2.1.1 Qu’est ce qu’un scanner ? . . . . . . . . . . . . .                          . . . .         14
      2.1.2 Comment marche Nmap ? . . . . . . . . . . . .                                . . . .         16
      2.1.3 La d´termination du syst`me d’exploitation avec
                   e                     e                                               Nmap            18
      2.1.4 Quel est l’intˆret d’utiliser Nmap ? . . . . . . .
                           e                                                             . . . .         19
  2.2 Identifier les versions des logiciels en ´coute . . . . . .
                                              e                                          . . . .         21
      2.2.1 Netcat . . . . . . . . . . . . . . . . . . . . . . .                         . . . .         22

3 Les  failles applicatives                                                                              24
  3.1   Les installations par d´faut . . . . . . .
                               e                     .   .   .   .   .   .   .   .   .   .   .   .   .   26
  3.2   Les mauvaises configurations . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   26
  3.3   Les bogues . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
        3.3.1 Des d´nis de services applicatifs
                      e                              .   .   .   .   .   .   .   .   .   .   .   .   .   26
        3.3.2 Outrepassement de droits . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   27
        3.3.3 Les scripts . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   27
   3.4 Les exploits . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   27

4 Les outils indispensables pour la protection                                                           29
  4.1 Le firewall . . . . . . . . . . . . . . . . . . .           .   .   .   .   .   .   .   .   .   .   31
      4.1.1 La configuration . . . . . . . . . . . .              .   .   .   .   .   .   .   .   .   .   31
      4.1.2 Les attaques contre les firewalls . . .               .   .   .   .   .   .   .   .   .   .   31
  4.2 Les NIDS . . . . . . . . . . . . . . . . . . .             .   .   .   .   .   .   .   .   .   .   34


                                      1
4.2.1 Prelude . . . . . . . . . . . . . . .           . . . . .           .   .   .   .   .   .   34
       4.2.2 Snort . . . . . . . . . . . . . . . . .         . . . . .           .   .   .   .   .   .   35
   4.3 Le tunneling . . . . . . . . . . . . . . . .          . . . . .           .   .   .   .   .   .   36
       4.3.1 Le protocole AH . . . . . . . . . .             . . . . .           .   .   .   .   .   .   36
       4.3.2 Le protocole ESP . . . . . . . . . .            . . . . .           .   .   .   .   .   .   36
       4.3.3 Le protocole IPcomp . . . . . . . .             . . . . .           .   .   .   .   .   .   36
       4.3.4 Le protocole IKE . . . . . . . . . .            . . . . .           .   .   .   .   .   .   36
       4.3.5 Les deux modes de fonctionnements               de IPsec            .   .   .   .   .   .   37
       4.3.6 Les limitations d’IPsec . . . . . . .           . . . . .           .   .   .   .   .   .   37
   4.4 Nessus . . . . . . . . . . . . . . . . . . . .        . . . . .           .   .   .   .   .   .   38
       4.4.1 Pour obtenir tout sur Nessus . . . .            . . . . .           .   .   .   .   .   .   38
   4.5 User Mode Linux - UML . . . . . . . . .               . . . . .           .   .   .   .   .   .   39

5 Surveillance - Dissimulation - Maintien d’acc`s       e                                                40
  5.1 Les chevaux de Troie . . . . . . . . . . . . . . . . . . . .                           .   .   .   42
  5.2 Les backdoors . . . . . . . . . . . . . . . . . . . . . . . .                          .   .   .   43
      5.2.1 Les backdoors pr´sentes dans les logiciels. . . . .
                               e                                                             .   .   .   43
      5.2.2 Les backdoors d´di´es aux connexions ` distance .
                              e e                      a                                     .   .   .   43
  5.3 Les Rootkits . . . . . . . . . . . . . . . . . . . . . . . . .                         .   .   .   45
  5.4 L’interception des mots de passe en r´seau. . . . . . . . .
                                             e                                               .   .   .   47

6 Dispositifs destructeurs                                                                               49
  6.1 Le virus . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   51
  6.2 Les vers . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   52
  6.3 Les bombes logiques . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   53
  6.4 Les attaques par d´ni de services . . .
                         e                           .   .   .   .   .   .   .   .   .   .   .   .   .   54
      6.4.1 Le SYN flood . . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   54
      6.4.2 L’UDP Flood . . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   54
      6.4.3 Fragmentation de paquets . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   55
      6.4.4 Ping of death . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   55
      6.4.5 Attaque par r´flexion : Smurfing
                            e                        .   .   .   .   .   .   .   .   .   .   .   .   .   55
      6.4.6 D´nis de services distribu´s . .
               e                         e           .   .   .   .   .   .   .   .   .   .   .   .   .   56
      6.4.7 Bombes e-mail . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   56

7 S´curisation des mots de passe
   e                                                                                                     57
  7.1 L’attaque par dictionnaire . . .     . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   59
  7.2 Le brute forcing . . . . . . . . .   . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   59
  7.3 Tester la fiabilit´ de vos mots de
                       e                   passe !   .   .   .   .   .   .   .   .   .   .   .   .   .   59
  7.4 Choisir le bon mot de passe . .      . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   60
  7.5 Pr´venir l’utilisateur . . . . . .
         e                                 . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   61



                                      2
8 La base des attaques r´seaux
                         e                                                                     62
  8.1 D´tournement de flux . . . . . . . . . . . . .
        e                                              .   .   .   .   .   .   .   .   .   .   64
      8.1.1 ARP-Poisoning : . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   64
      8.1.2 D´synchronisation TCP : . . . . . . .
              e                                        .   .   .   .   .   .   .   .   .   .   65
  8.2 MIM - Man in the Middle . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   67
  8.3 Encapsulation d’IP dans d’autres protocoles.     .   .   .   .   .   .   .   .   .   .   68

9 Description d’attaques sur diff´rents protocoles
                                     e                                                          69
  9.1 DHCP : Dynamic Host Configuration Protocol . .                .   .   .   .   .   .   .    71
       9.1.1 Attaque par ´puisement de ressources . . .
                           e                                       .   .   .   .   .   .   .    71
       9.1.2 Faux serveurs DHCP . . . . . . . . . . . .            .   .   .   .   .   .   .    71
  9.2 DNS : Domain Name Server . . . . . . . . . . . .             .   .   .   .   .   .   .    73
       9.2.1 Le DNS ID spoofing . . . . . . . . . . . .             .   .   .   .   .   .   .    73
       9.2.2 Le DNS cache poisoning . . . . . . . . . .            .   .   .   .   .   .   .    74
  9.3 FINGER . . . . . . . . . . . . . . . . . . . . . . .         .   .   .   .   .   .   .    77
  9.4 FTP . . . . . . . . . . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .    79
       9.4.1 Le serveur FTP anonyme . . . . . . . . . .            .   .   .   .   .   .   .    79
  9.5 HTTP . . . . . . . . . . . . . . . . . . . . . . . .         .   .   .   .   .   .   .    81
       9.5.1 Les serveurs trop bavards . . . . . . . . .           .   .   .   .   .   .   .    81
       9.5.2 Vuln´rabilit´s li´es aux applications web .
                   e     e e                                       .   .   .   .   .   .   .    81
  9.6 IDENT . . . . . . . . . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .    83
  9.7 IP et l’IP-Spoofing . . . . . . . . . . . . . . . . .         .   .   .   .   .   .   .    84
       9.7.1 Un peu de th´orie ... . . . . . . . . . . . .
                           e                                       .   .   .   .   .   .   .    84
       9.7.2 Pr´venir l’IP spoofing grˆce ` Nmap . . .
                e                       a a                        .   .   .   .   .   .   .    87
  9.8 NETBIOS . . . . . . . . . . . . . . . . . . . . . .          .   .   .   .   .   .   .    90
  9.9 NFS : Network File System . . . . . . . . . . . .            .   .   .   .   .   .   .    91
       9.9.1 Les attaques . . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .    91
  9.10 NIS : Network Information Service . . . . . . . .           .   .   .   .   .   .   .    92
       9.10.1 Les attaques . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .    92
  9.11 PORTMAP . . . . . . . . . . . . . . . . . . . . .           .   .   .   .   .   .   .    93
  9.12 Le protocole SMB . . . . . . . . . . . . . . . . . .        .   .   .   .   .   .   .    94
       9.12.1 Les scans de SMB shares . . . . . . . . . .          .   .   .   .   .   .   .    94
  9.13 SMTP - Les services de messagerie . . . . . . . .           .   .   .   .   .   .   .    96
  9.14 SQL . . . . . . . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .    97
       9.14.1 Le ”SQL-INJECTION” . . . . . . . . . . .             .   .   .   .   .   .   .    97
  9.15 SSH . . . . . . . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .    98
  9.16 TELNET . . . . . . . . . . . . . . . . . . . . . .          .   .   .   .   .   .   .    99
  9.17 XWINDOW . . . . . . . . . . . . . . . . . . . . .           .   .   .   .   .   .   .   100
       9.17.1 Les attaques . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   100
  9.18 Peer To Peer (eDonkey, Kazaa ...) . . . . . . . . .         .   .   .   .   .   .   .   101


                                      3
10 S´curit´ avanc´e
    e       e      e                                                             102
   10.1 L’architecture s´curis´e . . . . . . . . . . . . . . . . . . . . .
                        e     e                                              .   104
        10.1.1 Le r´seau de d´part . . . . . . . . . . . . . . . . . . .
                    e          e                                             .   104
        10.1.2 Le premier niveau de s´curit´ . . . . . . . . . . . . .
                                        e     e                              .   105
        10.1.3 NDIS : Deuxi`me niveau de s´curisation . . . . . . .
                              e                e                             .   105
        10.1.4 Les niveaux plus ´lev´s . . . . . . . . . . . . . . . .
                                  e e                                        .   106
   10.2 D´veloppez vos propres utilitaires s´curit´ . . . . . . . . . .
          e                                  e      e                        .   108
        10.2.1 Le programme . . . . . . . . . . . . . . . . . . . . . .      .   108
        10.2.2 Comment obtenir et compiler le source entier du pro-
               gramme ? . . . . . . . . . . . . . . . . . . . . . . . .      . 118
        10.2.3 Documents . . . . . . . . . . . . . . . . . . . . . . .       . 118

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




                                       4
Avant-propos

      ”Qui connaˆt l’autre et se connaˆt, en cent combats ne sera point
                   ı                   ı
      d´fait ; qui ne connaˆ l’autre mais se connaˆt, sera vainqueur une
       e                   ıt                     ı
      fois sur deux ; qui ne connaˆ pas plus l’autre qu’il ne se connaˆ
                                   ıt                                  ıt
      sera toujours d´fait.”
                       e

                      L’art de la guerre - Sun Tzu

   Ce guide a ´t´ r´alis´ suite ` un audit de s´curit´ que j’ai r´alis´ pour
                 ee e e            a               e     e         e e
mon ´cole et aux deux conf´rences sur la s´curit´ r´seau pr´sent´es au groupe
     e                       e               e    e e       e    e
d’utilisateurs Linux de NANCY (coucou le Mirabellug). Je ne suis pas sp´cialiste
                                                                         e
en s´curit´ r´seau ; j’ai juste ´crit ce guide dans le but de donner ` des ad-
    e      e e                  e                                    a
ministrateurs ou ` des particuliers, un descriptif technique et un manuel
                   a
d’autoformation ` la s´curit´ r´seau.
                  a     e      e e

La plupart des administrateurs ne sont pas sp´cialistes en securit´, et peuvent
                                              e                   e
ˆtre perdus devant un probl`me de ce type. Le masse d’informations dispo-
e                             e
nible sur Internet est parfois confuse, dense ou tr`s technique. Ce guide sert
                                                    e
de point de d´part et d’introduction ` la s´curit´.
              e                        a    e     e

Il a ´t´ pens´ dans un but ´volutif. Si vous voulez participer en ´crivant ou en
     ee      e             e                                      e
compl´tant des chapitres, n’h´sitez pas ` me contacter sur guidesecu@free.fr.
       e                       e          a
Le principe est simple : une description assez succinte sur une attaque et en-
suite une description compl`te des m´thodes de protection. Vos exp´riences
                             e          e                               e
personnelles et vos remarques sont aussi les bienvenues.

Evidemment, ce guide est sous license GPL donc gratuit. La seule r´compense
                                                                   e
que pourront recevoir les ´ventuels participants est la mention de leurs noms
                          e
en tant que collaborateurs.

Ce guide se compose d’une dizaines de chapitres.



                                       5
Chaque chapitre comporte une introduction. La plupart du temps, un cha-
pitre contient au moins une section divis´e en diff´rentes sous sections : une
                                         e        e
pour la description d’un probl`me de s´curit´ particulier, une deuxi`me pour
                              e       e      e                      e
d´crire les diff´rents moyens de s’en prot´ger et une troisi`me pour donner
 e             e                          e                  e
diff´rents liens vers des documents plus pr´cis sur le sujet.
   e                                       e

Le premier chapitre montre comment s´curiser une station pour ´viter toutes
                                      e                       e
tentatives de piratage par un acc`s physique.
                                 e

Le deuxi`me chapitre d´crit le fonctionnement des outils de r´cup´ration
        e               e                                      e     e
d’informations ` distance, notamment les scanners. Il montre l’utilit´ qu’ils
               a                                                     e
ont pour vous prot´ger.
                  e

Le troisi`me chapitre introduit la notion de failles.
         e

Le quatri`me chapitre introduit diff´rentes notions sur les firewalls et les
         e                          e
principaux autres syst`mes de protection logiciels.
                      e

Le cinqui`me chapitre explique comment un pirate dissimule sa pr´sence
         e                                                      e
sur un syst`me.
           e

Le sixi`me chapitre s’int´resse aux dispositifs destructeurs (virus, bombes
       e                 e
mails ...).

Le septi`me chapitre d´crit les attaques sur les fichiers de mots de passe.
        e             e

Les huiti`me et neuvi`me chapitres traitent de diff´rents probl`mes pos´s
         e             e                          e           e       e
par certains protocoles r´seaux.
                         e

Le dixi`me chapitre est divis´ en deux parties : la premi`re explique comment
       e                     e                           e
architecturer son r´seau de fa¸on s´curis´e. La deuxi`me partie est un cours
                   e           c    e    e             e
sur le developpement d’outils d´di´s uniquement ` la s´curit´.
                                 e e                a    e     e


O` trouver ce guide ?
 u
   C’est tr`s simple, il y a deux adresses :
           e

Le site officiel :

http://guidesecu.ifrance.com/guide/guidesecu.pdf


                                       6
Sur le site du Mirabellug :

http://www.mirabellug.org/docs/securite/guidesecu.pdf


Les OS vis´s :
          e
    La majorit´ des programmes d´fensifs utilis´s et d´crits dans ce guide sont
               e                  e            e      e
disponibles sous LINUX. Je n’oublierai pas de parler de la s´curit´ pour les
                                                               e     e
produits Microsoft. Cependant, Linux poss`de une certaine avance sur Mi-
                                            e
crosoft dans le domaine de la s´curit´ (notamment par un plus grand nombre
                               e     e
de logiciels performants et gratuits).

Les autres OS comme SunOS, VMS, MacOS, Plan9, Novell,... seront pass´s      e
sous silence mais si vous voulez voir des chapitres pr´cis sur certains OS ap-
                                                      e
paraitre, contactez moi par mail.



                       Bonne Lecture !




                                      7
Chapitre 1

S´curisation de base
 e




               8
Introduction
   Le but de ce chapitre est de donner diff´rentes m´thodes pour s´curiser
                                            e        e             e
physiquement une machine. Il faut savoir qu’une grande partie des piratages
sont lanc´s par des pirates ayant un acc`s physique sur un r´seau.
         e                              e                   e

Dans ce chapitre, nous ne nous focaliserons pas sur un serveur d´di´ ` un
                                                                    e e a
service particulier, mais plutˆt sur les machines constituant les clients. Ces
                              o
machines sont en acc`s libre dans une salle non surveill´e.
                      e                                 e

L’objectif est d’empˆcher une personne mal intentionn´e d’obtenir les acc`s
                     e                                   e                     e
adiministrateur sur la machine qu’elle utilise. La plupart des utilitaires de pi-
ratage ont besoin des acc`s administrateur pour fonctionner ; sans ces acc`s,
                          e                                                   e
la capacit´ de nuire est fortement diminu´e.
          e                                e




                                       9
1.1      Premier conseil : Verrouillez les stations
   N’h´sitez pas ` poser un cadenas sur les tours des machines, cela empˆchera
       e         a                                                       e
tout d’abord le vol de mat´riel, mais cela ´vitera aussi d’avoir des disques
                            e                e
durs mont´s en ”secret” avec toute une panoplie d’utilitaires install´s dessus.
          e                                                          e

Le conseil ` suivre imp´rativement (et vous comprendrez pourquoi en li-
            a             e
sant les deux chapitres suivants) : il faut d´sactiver le boot sur le lecteur de
                                             e
disquette et sur le lecteur de CDROM.


1.2      Pour Linux
   Evitez d’avoir l’option ”failsafe” au d´marrage propos´ par Lilo. Cette
                                          e              e
option peut permettre d’obtenir les acc`s root (sans mot de passe) pour la
                                        e
maintenance du syst`me.
                     e


1.3      Pour Windows
    Le syst`me de fichier NTFS permet une s´curisation accrue par rapport
           e                              e
aux syst`mes de fichier FAT et FAT 32. Si vos machines W indows c fonc-
         e
tionnent avec de la FAT, passez en NTFS.

Je d´conseille fortement d’utiliser Windows 95, 98 et Me, le niveau de s´curit´
    e                                                                   e     e
offert par ces OS en natif n’´tant 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 s’installant en RAM grˆce ` un nombre limit´ de disquettes) donne la
                               a a                   e
possibilit´ de monter tous les syst`mes de fichiers pr´sents sur le(s) disque(s)
          e                        e                 e
dur(s) de la machine et d’en modifier le(s) contenu(s). De plus, Trinux est
livr´ avec un panel assez impressionnant d’utilitaires exclusivement d´di´s `
    e                                                                   e e a
la s´curit´.
    e     e

Le programme NTFS2DOS (sous DOS) permet de changer les partitions
NTFS en partitions FAT et de pouvoir acc´der ` leurs contenus sans restric-
                                        e    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 d’utilitaires divers) peuvent
ˆtre utilis´s pour monter les diff´rents syst`mes de fichiers pr´sents sur le(s)
e          e                     e          e                 e
disque(s) dur(s).


1.6     N’oubliez pas le mot de passe pour le
        BIOS
    N’oubliez de prot´ger l’acc`s du BIOS par un mot de passe ! Attention
                      e         e
certains BIOS peuvent comporter des failles logicielles permettant d’outre-
passer ces protections. Encore une fois, il ne faut pas oublier de cadenasser
les tours, afin d’´viter ` des utilisateurs (encore) mal intentionn´s de retirer
                 e      a                                         e
la pile du BIOS et d’outrepasser la protection par mot de passe.




                                      11
Chapitre 2

La collecte d’informations




               12
Introduction
    Dans ce chapitre, nous allons d´crire le fonctionnement des outils permet-
                                   e
tant de r´cup´rer des informations ` distance. Ces utilitaires sont fr´quemment
         e    e                    a                                  e
utilis´s par les pirates pour pr´parer de futures attaques. C’est pour cette
      e                         e
raison qu’il est indispensable de les d´crire d`s le d´but. Vous apprendrez
                                        e        e      e
´galement ` les utiliser pour votre propre protection.
e           a




                                     13
2.1      Le Scanner
    L’objectif du pirate est de rep´rer les serveurs offrant des services parti-
                                    e
culiers et de les identifier. Pour obtenir ces informations, le pirate va utiliser
un scanner.

Le but de ce section est de pr´senter des m´thodes de protections contre le
                                 e             e
scan (en utilisant des r`gles de firewalling sous iptables/ipchains par exemple)
                        e
et de savoir utiliser un scanner pour anticiper les futures attaques.

Le scanner d´crit dans ce chapitre est Nmap1 , un des scanners les plus utilis´s
            e                                                                 e
et un des plus performants.

Je d´crirai dans une premi`re partie ce qu’est un scanner. Ensuite, je me
     e                       e
focaliserai sur Nmap et je le pr´senterai d’un point de vue un peu plus tech-
                                e
nique, permettant de comprendre les diff´rentes m´thodes 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      Qu’est ce qu’un scanner ?
    C’est tr`s simple : lorsqu’un serveur offre un service particulier (Web, mes-
            e
sagerie, mail), il ex´cute un programme assurant ce service. Ce programme
                     e
est en attente de connexions.

Les clients devant acc´der ` ce service doivent connaˆ
                      e     a                        ıtre l’adresse IP du
serveur et le num´ro de port associ´ au service.
                 e                 e

Ce num´ro de port a ´t´ attribu´ par l’OS du serveur au programme ex´cutant
        e           ee         e                                    e
ce service.

La plupart des services ont un num´ro de port bien d´fini. Par exemple,
                                      e                  e
un serveur de messagerie utilise le port 25, un serveur Web le port 80...

Lorsqu’un service est en ´coute sur un port, on dit que le num´ro de port
                           e                                  e
associ´ ` ce service est ouvert.
      ea

L’int´rˆt du scanner est tr`s simple : il permet de trouver dans un d´lai
     ee                    e                                         e
   1
    Nmap est disponible sous W indows c et Linux ` l’adresse http ://www.insecure.org/,
                                                     a
la version d´crite dans ce chapitre ´tant celle disponible sous Linux.
            e                       e

                                          14
tr`s court, tous les ports ouverts sur une machine.
  e

Il existe diff´rents types de scanner, certains se contentent juste de donner
             e
le listing des ports ouverts, de donner le type et la version de l’OS tour-
nant sur le serveur (ces fonctionnalit´s seront d´crites dans ce chapitre avec
                                       e          e
Nmap). D’autres scanners comme Nessus permettent de tester diff´rentes   e
failles connues sur ces services ( Nessus sera d´crit dans la section 4.4).
                                                e

Exemple avec Nmap

Utilisons Nmap pour connaˆ les services en ´coute sur la machine d’adresse
                         ı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 aper¸u assez complet des diff´rents services s’ex´cutant 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 pr´senterai de mani`re tr`s succinte Nmap et me focaliserai principa-
        e                  e     e
lement sur les fonctions les plus utilis´es.
                                        e

Pour connaˆ les ports ouverts sur une machine, Nmap proc`de ` l’envoi
             ıtre                                               e a
de paquets sur tous les ports de cette machine et analyse les r´ponses. Bien
                                                               e
sˆr, il y a diff´rents types de scans, donc diff´rents types d’envois et donc,
 u              e                             e
diff´rents types de r´ponses.
   e                 e

Nous nous int´resserons 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 ` l’appel de la fonction connect() sur tous les ports de la
          e a
machine. Ce type de scan est facilement rep´rable.
                                           e

Le scan en ”vanilla TCP connect” est le scan par d´faut 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 difficiles ` d´tecter :
                                                                a e

- Le scan en connexion demi-ouverte ou ”Syn-scan” :

Nmap envoie sur chaque port un paquet TCP avec le flag SYN arm´ ; si  e
un port est ouvert, il renverra un paquet avec les flags SYN et ACK arm´s.
                                                                       e




Illustration




                                    16
La commande se fait par l’appel de nmap avec l’option -sS :

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

- Les scans Xmas, FIN et NULL.

Le scan FIN consiste en l’envoi de paquets TCP avec seulement le flag FIN
arm´ :
    e

La commande se fait par l’appel de nmap avec l’option -sF :

[root@nowhere.net /root]# nmap -sF [ip de la machine cible]

Le scan NULL consiste en l’envoi de paquets TCP avec seulement le flag
NULL arm´ :
         e

La commande se fait par l’appel de nmap avec l’option -sN :

[root@nowhere.net /root]# nmap -sN [ip de la machine cible]

Le Xmas scan (traduisez le scan de No¨l) consiste en l’envoi de paquets
                                     e
TCP avec les flags FIN/URG/PUSH arm´s.e

La commande se fait par l’appel de nmap avec l’option -sX :

[root@nowhere.net /root]# nmap -sX [ip de la machine cible]

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

Illustration




2.1.3     La d´termination du syst`me d’exploitation avec
              e                   e
          Nmap
   Si on lance Nmap avec l’option -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 l’avant-derni`re ligne :
                        e

Remote operating system guess : Linux 2.2.12 - 2.2.19

Nmap parvient ` d´terminer le syst`me d’exploitation tournant sur la ma-
                a e                  e
chine cible. La machine cible utilisait un noyau 2.2.19. Nmap ne s’est pas
tromp´.
      e

Il faut savoir que chaque syst`me d’exploitation construit ses paquets d’une
                              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 donn´es d’un
                    a                                               e
grand nombre d’OS. Nmap envoie donc des paquets tests ` la machine cible
                                                          a
et compare les paquets re¸us en r´ponse ` ceux de sa base de donn´es et en
                          c      e       a                         e
d´duit le type d’OS.
  e

Cette base de donn´es est mise ` jour en fonction des diff´rentes version
                  e            a                         e
de Nmap.

2.1.4     Quel est l’intˆret d’utiliser Nmap ?
                        e
    Nmap permet de pouvoir pr´voir les futures attaques, et aussi de pou-
                                 e
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 n´cessaire) et donc vuln´rables ` une attaque. N’h´sitez
                     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 r´f´rence
                       e               e e                         ee
dans le domaine du scanning.




Comment s’en prot´ger ?
                 e
   Configurer votre firewall pour empˆcher les scans
                                   e


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

Cette commande permet de d´tecter l’envoi un grand nombre de paquets
                                e
TCP avec les flags FIN et/ou SYN et/ou ACK et/ou RST arm´(s). V´rifiez
                                                                 e      e
que votre firewall (si ce n’est pas iptables) supporte la d´tection de scans.
                                                          e

(Pour plus de d´tails sur cette commande, je vous conseille de lire le docu-
               e
ment ”Packet Filtering HOWTO : Using iptables” (Chapitre 7.3) de Rusty
Wagner).

Documents
    Divers articles ´cris par le d´veloppeur de Nmap sur le scanning (en an-
                    e             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      Identifier les versions des logiciels en ´coute
                                                 e
   Maintenant que notre pirate connaˆ les diff´rents services en ´coute, son
                                        ıt        e                   e
objectif va ˆtre de d´couvrir les noms et les versions des logiciels utilis´s pour
            e        e                                                     e
assurer ces services.

L’objectif de ce chapitre est de pr´senter une parade pour ´viter de don-
                                    e                      e
ner trop d’informations sur votre syst`me.
                                      e

Le pirate peut d´j` essayer de se connecter sur diff´rents ports grˆce aux
                ea                                  e             a
programmes clients associ´s pour glaner des informations.
                         e

Rien que telnet donne beaucoup d’informations :

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

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

Avec la r´ponse :
         e

Linux Mandrake release 7.2 (Odyssey) for i586
Kernel 2.2.17-21mdk on an i586

Trop de renseignements apparaissent.

Mˆme si le port telnet est ferm´, le pirate peut glaner d’autres informa-
  e                            e
tions sur les autres services.

Pour cela, il peut proc´der ` une connexion telnet sur le port associ´ ` un
                       e    a                                        ea
autre service en ´coute :
                 e

Exemple d’un 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 int´resse le plus est celle-ci :
                     e

220 ProFTPD 1.2.5rc1 Server (ProFTPD Default Installation) [neu-
romancer]

La version du logiciel nous est donn´e. Le pirate va alors rechercher
                                     e
des informations sur les faiblesses de s´curit´ de celui-ci.
                                        e     e

Cependant, sur certains services, le client telnet sera inefficace. Le pirate
peut alors utiliser un programme con¸u pour ´crire et lire de donn´es sur
                                         c        e                       e
machine cible et sur le port voulu. Ces programmes permettent d’envoyer
des scripts directement sur le logiciel souhait´ sans se soucier des limites pro-
                                               e
tocolaires.

Le plus r´put´ de ces programmes est sans doute Netcat.
         e e

2.2.1        Netcat
   Netcat permet d’´tablir une connexion (TCP ou UDP) sur un port sou-
                     e
hait´ et d’y envoyer ou d’y recevoir des donn´es.
    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
d’autres fonctionnalit´s (comme l’envoi de scripts ...).
                      e

Le pirate n’a plus qu’` trouver une faille applicative (voir chapitre suivant)
                        a
sur le logiciel correspondant.
  2
      Netcat est t´l´chargeable sur : http ://packetstormsecurity.nl/UNIX/netcat/
                  ee




                                            22
Comment s’en prot´ger ?
                 e
   Retirer les banni`res donnant les versions de logiciel et les messages d’aide
                    e
ou de bienvenue d’un service r´seau en ´coute qui peuvent donner des infor-
                              e         e
mations sur votre syst`me.
                       e

Utilisez netcat contre vos serveurs pour rep´rer les services trop ”bavards”.
                                            e




                                      23
Chapitre 3

Les failles applicatives




                24
Introduction
     Nous allons aborder dans ce chapitre les failles li´es aux applications uti-
                                                        e
lis´es.
   e

Nous nous focaliserons principalement sur les failles logicielles : les failles
applicatives.

Ces failles peuvent ˆtre de natures diverses : probl`mes de configuration,
                    e                               e
probl`mes au niveau du code du logiciel, probl`mes li´s ` de mauvaises in-
     e                                         e      e a
terpr´tations de commandes ou de mauvaises ex´cutions de scripts.
     e                                          e




                                       25
3.1      Les installations par d´faut
                                e
   Lors d’une installation, beaucoup de services peuvent ˆtre install´s par
                                                           e           e
d´faut (un serveur Web, FTP ...). Ces services peuvent contenir les diff´rents
 e                                                                     e
types de failles introduites auparavant.

L’important est de bien contrˆler lors de l’installation, les services qui seront
                               o
install´s sur le syst`me. Pour ˆtre bien sˆr 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).

Mˆme si certains logiciels ne comportent pas de failles connues, ils peuvent
  e
quand mˆme donner des informations aux pirates (voir section 2.2).
       e


3.2      Les mauvaises configurations
   Lorsqu’une application est mal param´tr´e, elle peut laisser l’acc`s libre
                                         e e                         e
a
` certaines bases de donn´es sensibles (fichiers de mots de passe, d’utilisa-
                          e
teurs) ou de permettre d’ex´cuter des commandes ou des scripts malveillants.
                           e

Il est important de bien lire le manuel avant d’activer un service (RTFM !)
et de bien d´finir le ”qui fait quoi”.
            e

Ce principe est simple : il suffit de bien d´finir les utilisateurs et les groupes
                                            e
et de limiter leurs droits sur certains types de fichiers et certaines op´rations
                                                                        e
d’ex´cution de commandes syst`me.
    e                             e

Le plus important est de restreindre au maximun les acc`s ` certains fichiers
                                                       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ˆ diff´rents types de probl`mes de securit´ :
      ıtre   e                   e             e

3.3.1     Des d´nis de services applicatifs
               e
    Ce type de faille empˆche le logiciel de fonctionner et ainsi de r´pondre
                          e                                           e
aux requˆtes demand´es (d’o` l’appellation d´ni de service). La technique
         e             e       u                e
est simple, il suffit d’utiliser un bogue connu qui va faire planter le logiciel
assurant un service.

                                       26
3.3.2     Outrepassement de droits
   Les bogues de type d´passement de buffer ou d’exploitation de bogues de
                         e
format posent de gros probl`mes de s´curit´. Ils visent majoritairement des
                             e        e     e
applications setsuid (fonctionnant avec les acc`s root) pour permettre ` un
                                               e                       a
attaquant d’obtenir un interpr´teur de commande sous l’uid root.
                               e

3.3.3     Les scripts
    Malheureusement, une mauvaise programmation de scripts ou l’utilisation
de fonctions bogu´es peut ˆtre source de failles de s´curit´. Il convient d’ˆtre
                   e       e                         e     e                e
tr`s attentif au niveau du d´veloppement d’un script.
  e                          e


3.4      Les exploits
    Pour exploiter ces bogues, le pirate fait appel ` des ”exploits”. Ces ”ex-
                                                    a
ploits” sont en fait de petits programmes permettant d’exploiter une faille
dans un but pr´cis (obtenir un interpr´teur de commandes, acc´der ` certains
               e                      e                        e     a
fichiers, augmenter ses droits...).

Les exploits peuvent aussi fonctionner ` distance, pour l’obtention d’un shell
                                       a
(parfois avec les droits administrateur) sans mot de passe, ni nom d’utilisa-
teur.


Comment s’en proteger ?
   1 - Recensez les applications vuln´rables.
                                     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) pu-
blie un rapport sur toute nouvelle faille de s´curit´. Le CERT permet aussi
                                              e     e
d’obtenir de l’aide en cas de piratage.

Le site du CERT : www.cert.org (Anglais)

Les archives bugtraq font partie des meilleures sources sur les nouvelles
vuln´rabilit´s. Ces archives donnent des descriptions tr`s pr´cises sur des
    e       e                                           e    e
nouvelles failles de s´curit´.
                      e     e

Le site BUGTRAQ :

                                      27
http://citadelle.intrinsec.com/mailing/current/HTML/ml_bugtraq/ (en
anglais)

http://www.bugtraq-france.com (en fran¸ais)
                                      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 d’architecture ; il est facile de
trouver rapidement le logiciel concern´.
                                       e

2 - Limitez les programmes s’ex´cutant avec les droits administrateur.
                               e

Il est toujours bon de r´p´rer les programmes s’ex´cutant avec les droits
                        e e                          e
administrateur. Ainsi, vous pouvez changer leurs droits pour qu’ils ne de-
viennent pas un point critique pour la vuln´rabilit´ du syst`me.
                                           e       e        e

Sous linux, la simple commande :

[root@nowhere.net /root]# find / -perm +6000

vous permettra de lister tous les programmes s’ex´cutant avec les droits ad-
                                                 e
ministrateur.

3 - Les autres solutions.

Les NDIS (d´crit dans le chapitre suivant) peuvent vous permettre de rep´rer
             e                                                              e
les attaques exploitant des failles connues sur certains types de logiciel.

On peut aussi ”patcher” son noyau pour ´viter l’ex´cution d’exploits utilisant
                                       e          e
des bogues de d´passement de buffer. Le patch OpenWall2 vous permet de
                e
prot´ger votre noyau Linux.
    e




  1
      http ://www.securityfocus.com/search dans la rubrique ”Vulnerabilites”
  2
      librement t´l´chargeable sur www.openwall.com
                 ee


                                           28
Chapitre 4

Les outils indispensables pour
la protection




               29
Introduction
   Les firewalls, les tunnels et les IDS/NDIS sont des outils indispensables
pour d´tecter, parer ou ´viter de nombreuses attaques. Nous les d´crirons
       e                  e                                           e
dans ce chapitre, ainsi que la mani`re de les utiliser de fa¸on optimale.
                                    e                       c




                                    30
4.1      Le firewall
    La configuration d’un firewall peut s’av´rer ˆtre un sujet tr`s difficile `
                                             e    e                e          a
traiter. Cette configuration est surtout ´tablie en fonction de vos besoins per-
                                        e
sonnels.

L’objectif de ce chapitre est de donner des conseils ` suivre pour bien utiliser
                                                     a
un firewall. Ensuite, nous nous int´resserons aux diff´rentes m´thodes d’at-
                                    e                   e        e
taques contre les firewalls.




4.1.1     La configuration
    Pour bien configurer son firewall, il suffit de bien respecter les conseils
suivants :

- Essayez de limiter l’acc`s ` votre r´seau ` des utilisateurs connus utilisant
                          e a         e     a
une adresse IP statique. Vous pourrez ainsi rejeter toutes les autres requˆtes
                                                                           e
venant d’utilisateurs utilisant une adresse IP non autoris´e. Vous effectuez
                                                            e
de la sorte un filtrage au niveau IP.

- Fermez tous les ports en ´coute sur les diff´rents serveurs et ouvrez seule-
                           e                 e
ment ceux dont vous avez besoin.

- Filtrez ces ports, c’est ` dire rejetez toutes les autres requˆtes sur les autres
                           a                                    e
ports que ceux en ´coute.
                     e

- Empˆchez toutes les connexions sortantes sur des services non autoris´s.
       e                                                                      e
Pour cela, il suffit de d´finir un nombre limit´ de services auxquels les ser-
                         e                      e
veurs et les clients peuvent acc´der (mail, ftp, web...). Ensuite, il faut confi-
                                 e
gurer le firewall pour rejeter les connexions depuis l’int´rieur vers l’ext´rieur
                                                          e                e
sur des services diff´rant de ceux d´finis.
                     e               e




4.1.2     Les attaques contre les firewalls
   La premi`re ´tape lors d’une attaque est de d´terminer les r`gles de fire-
             e e                                   e              e
walling. Le but est simple : savoir quels ports ne sont pas filtr´s.
                                                                e



                                        31
Avec le scan
   Nmap peut d´terminer quels ports sont ou ne sont pas filtr´s.
              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 filtered ftp
22/tcp filtered ssh
111/tcp open sunrpc
515/tcp open printer
1024/tcp open kdm

Nmap run completed – 1 IP address (1 host up) scanned in 1 second

Les ports 21 (ftp) et 22 (ssh) sont filtr´s.
                                        e

Comment s’en prot´ger ?
                 e
   Prot´gez-vous contre le scanning (voir section 2.1).
       e

Si le scan ne marche pas, d’autres m´thodes peuvent ˆtre utilis´s comme
                                    e               e          e
le firewalking.

Le firewalking
    Cette technique de d´voilement des r`gles de firewalling repose sur un
                         e                 e
unique champ de l’en-tˆte IP, le TTL (pour Time To Live), ce champ repr´sentant
                       e                                                 e
la dur´e de vie d’un paquet. Il est fix´ d`s son envoi par le syst`me d’exploi-
      e                               e e                        e
tation et est diminu´ d’une unit´ ` chaque fois qu’il traverse un ´quipement
                     e           ea                                e
assurant le routage ; quand ce champ est ´gal ` 0, le paquet disparaˆ
                                           e   a                     ıt.

Chaque passage d’un routeur ` un autre est appel´ un saut.
                            a                   e

C’est ce champ qui est utilis´ par le logiciel traceroute. Pour faire un ”tra-
                              e
ceroute”, le logiciel envoie un premier paquet UDP avec un TTL de 1 ; au
premier routeur, le TTL est d´cr´ment´ ` 0. Le routeur renvoie donc un
                                 e e     e a

                                      32
code d’erreur ”ICMP ttl-exceeded”, ce qui permet de r´cup´rer l’adresse du
                                                      e   e
premier routeur. Ensuite traceroute va envoyer un deuxi`me paquet avec un
                                                        e
TTL de 2, il sera d´cr´ment´ au passage du premier routeur (TTL=1). Le
                     e e      e
deuxi`me routeur va le recevoir et le d´cr´menter : le champ TTL sera de
      e                                e e
nouveau ´gal ` 0. Le deuxi`me routeur renverra donc un message d’erreur :
         e    a             e
on r´cup`re ainsi l’adresse du deuxi`me routeur.
    e   e                           e

Si il y a N sauts jusqu’au r´seau final, on r´it`re l’op´ration N fois.
                            e               e e        e

On peut utiliser cette technique avec diff´rents protocoles : UDP, TCP, ICMP.
                                         e

Le firewalking repose sur cette technique pour d´terminer les r`gles de fi-
                                                    e              e
                    1
rewalling. Firewalk (le programme impl´mentant le firewalking) d´termine
                                           e                         e
le nombre de routeurs entre la machine source et la machine cible (situ´e   e
derri`re le firewall). 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 firewall et
                                                     e
on obtient une r´ponse ; sinon il n’y a aucune r´ponse.
                 e                               e

Firewalk envoie diff´rents types de paquets (TCP, UDP) pour d´terminer les
                    e                                            e
r`gles de firewalling. N´anmoins, de nombreux param`tres comme la conges-
 e                     e                              e
tion du r´seau, le nombre de routeurs s´parant la cible et l’´metteur peuvent
          e                            e                     e
fausser l’analyse de firewalk.




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


                                           33
4.2        Les NIDS
      Les outils les plus pratiques !

Ces utilitaires permettent de d´tecter une attaque et de vous en informer. Un
                                e
IDS (pour Intrusion Detection System) analyse tout ce qui se passe sur une
station. Il d´tecte les outrepassements de droits (obtention du compte root
             e
d’une mani`re suspecte) et d’autres types d’attaques, il contient une base de
            e
donn´es sur diff´rentes vuln´rabilt´s.
     e           e           e     e

Les NIDS (Network Intrusion Detection System) travaillent de la mˆme    e
mani`re, mais sur les donn´es transitant sur le r´seau. Il peut d´tecter en
      e                     e                    e               e
temps r´el une attaque s’effectuant sur l’ une des vos machines. Il contient
        e
une base de donn´es avec tous les codes malicieux et peut d´tecter leurs en-
                   e                                        e
vois sur une des machines. Le NIDS travaille comme un sniffer (voir section
5.4), sauf qu’il analyse automatiquement les flux de donn´es pour d´tecter
                                                          e          e
une attaque.

Cette section pr´sentera deux NIDS : Snort et Prelude-NIDS. A noter que
                  e
ces outils sont distribu´s comme logiciel libre. Je ne rappellerai pas que le
                        e
logiciel libre a une avance consid´rable dans le domaine de la s´curit´ par
                                  e                               e     e
rapport ` ses concurrents ”propri´taires”.
          a                       e

4.2.1        Prelude
    Prelude-NIDS2 est un des d´tecteurs d’intrusions les plus connus. Prelude
                                 e
est disponible et libre sur les plateformes Linux, FreeBSD et Windows.

Prelude poss`de une achitecture modulaire et distribu´e. Modulaire, car ses
              e                                        e
composants sont ind´pendants, et peuvent ˆtre facilement mis ` jour. Dis-
                      e                      e                    a
tribu´e, car ces composants ind´pendants interagissent les uns avec les autres.
      e                         e
Cela permet d’avoir divers composants install´s sur diff´rentes machines et
                                               e         e
de r´duire ainsi la surchage d’applications.
    e

Ces diff´rents composants sont les sondes et les managers. Les sondes peuvent
        e
ˆtre de deux types : r´seau ou local. Une sonde r´seau analyse tout le traffic,
e                     e                           e
pour y d´tecter d’´ventuelles signatures d’attaques. La sonde locale assure
          e        e
la surveillance d’une seule machine, il analyse le comportement du syst`mee
pour y d´tecter des tentatives d’exploitation de vuln´rabilit´s internes. Les
          e                                           e      e
  2
      t´l´chargeable librement sur www.prelude-ids.org/
       ee



                                            34
sondes signalent les tentatives d’attaques par des alertes. Ces alertes sont
re¸u par le manager qui les interpr`te et les stocke.
  c                                e

Pour une description compl`te de Prelude (installation, configuration et uti-
                            e
lisation) consultez ce document :

http://lehmann.free.fr/PreludeInstall/InstallPrelude.html

4.2.2       Snort
    Snort3 est un NIDS lui aussi. Il n’est pas structur´ comme Prelude. Snort
                                                       e
est un programme ”monolithique”, il ne comporte pas de module comme Pre-
lude, ce qui peut rendre son impl´mentation dans un r´seau un peu moins
                                    e                      e
souple que Prelude. Snort fonctionne en trois modes (Sniffer, PacketLogger
et NIDS). Les deux premiers modes ne sont pas int´ressants pour la d´tection
                                                     e               e
d’intrusion. Le troisi`me mode permet lui d’analyser le trafic r´seau pour y
                      e                                         e
d´tecter d’ ´ventuelles attaques.
  e         e

Pour une description compl`te de Snort (installation, configuration et uti-
                               e
lisation ) consultez ce site :

http://www.snort.org/docs/ (en anglais).




  3
      t´l´chargeable librement sur www.snort.org
       ee


                                           35
4.3     Le tunneling
    Nous allons d´crire dans cette section diff´rentes m´thodes pour s´curiser
                  e                            e          e           e
vos transactions, c’est-`-dire cr´er un VPN (Virtual Private Network). Un
                        a        e
r´seau priv´ virtuel (VPN) est utilis´ pour ´tablir des communications s´curis´es
 e         e                         e      e                           e     e
en s’appuyant sur un r´seau existant non s´curis´. Le principal outil utilis´
                        e                     e     e                        e
pour la cr´ation de VPN est IPsec.
          e

IPsec est facultatif sur IPv4 mais est obligatoire sur IPv6. IPsec a d’autres
avantages que la s´curisation du trafic, il permet par exemple d’´conomiser
                   e                                              e
la bande passante grˆce ` la compression des en-tˆtes des paquets.
                      a a                          e

IPsec fonctionne sous deux modes diff´rents : le mode transport et le mode
                                     e
tunnel. Ces deux modes seront d´cris dans ce qui suit.
                               e

IPsec est compos´ de plusieurs protocoles diff´rents : AH, ESP, IPcomp et
                e                            e
IKE.

4.3.1    Le protocole AH
    Le protocole AH (Authentification Header) permet de garantir l’authen-
ticit´ des paquets ´chang´s en leur inscrivant une somme de contrˆle (de
     e              e      e                                       o
l’en-tˆte IP jusqu’` la fin du paquet) chiffr´e.
       e           a                       e

4.3.2    Le protocole ESP
   Le protocole ESP (Encapsulating Security Payload) encrypte toutes les
donn´es du paquet garantissant leur confidentialit´.
    e                                            e

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

4.3.4    Le protocole IKE
    Le protocole IKE (Internet Key Exchange) est utilis´ pour l’´change des
                                                       e        e
cl´s utilis´s pour l’encryptage.
  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 encrypt´s dans de nou-
                                                            e
veaux en-tˆte IPv4/IPv6. Il est con¸u pour les passerelles VPN.
          e                        c

4.3.6    Les limitations d’IPsec
    IPsec pose quelques probl`mes dus ` son impl´mentation. Certains probl`mes
                              e         a          e                         e
apparaˆ ıssent au niveau des messages de broadcast et multicast. IPsec est dif-
ficile ` filtrer sur les firewalls existants. Il est aussi impossible ` g´rer pour
      a                                                            a e
les translations d’adresse (NAT).

Documents
   Description g´n´rale des tunnels et impl´mentation sous Linux :
                e e                        e

http://www.miscmag.com/articles/index.php3?page=315
http://www.securiteinfo.com/crypto/IPSec.shtml

Description g´n´rale des tunnels et impl´mentation sous W indows c :
             e e                        e

http://www.laboratoire-microsoft.org/articles/network/ipsec/




                                    37
4.4     Nessus
   Nessus est un outil de s´curit´ permettant de scanner une ou plusieurs
                            e     e
machines. Il permet aussi de tester diff´rentes attaques pour savoir si une ou
                                       e
plusieurs machines sont vuln´rables.
                             e

Il est tr`s utile lors de tests de p´n´tration (pen test) et fait gagner un
         e                          e e
temps incroyable.

Nessus se compose d’une partie serveur (qui contient une base de donn´es re-
                                                                          e
groupant diff´rents types de vuln´rabilit´s) et une partie client. L’utilisateur
              e                   e       e
se connecte sur le serveur grˆce au client et apr`s authentification, il ordonne
                             a                   e
au serveur de proc´der aux tests d’une ou plusieurs machines. Le client re¸oit
                   e                                                        c
ensuite les r´sultats 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 t´l´charger les sources, binaires, ou diff´rents 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 lan¸er un ou plusieurs
                                                          c
noyau(x) linux dans l’espace utilisateur (comme un simple programme). En
clair, il permet d’avoir plusieurs machines virtuelles sur une seule machine
physique hˆte ex´cutant Linux. Les avantages sont nombreux :
            o     e


    - Si une machine virtuelle plante, le syst`me hˆte n’est pas affect´.
                                              e    o                  e
- Un utilisateur sera root sur une machine virtuelle, mais pas sur le syst`me
                                                                          e
hˆte.
  o
- Il permet aussi de tester diff´rents param`tres noyaux sans se soucier des
                                e             e
cons´quences.
     e


User Mode Linux permet notamment de s’affranchir de chroot (pour, par
exemple, la r´alisation de serveurs FTP) et de toutes ses failles de s´curit´.
             e                                                        e     e




Documents
   La page web de User Mode Linux :

http://user-mode-linux.sourceforge.net

Un autre lien int´ressant pour User Mode Linux et la s´curit´ :
                 e                                    e     e

http://www.rstack.org/oudot/20022003/7/7_rapport.pdf




                                     39
Chapitre 5

Surveillance - Dissimulation -
Maintien d’acc`s
               e




               40
Introduction
    Nous pr´senterons de ce chapitre les programmes utilis´s par les pirates
           e                                                 e
pour dissimuler, surveiller et maintenir leur acc`s sur un syst`me d’informa-
                                                 e             e
tion. Nous pr´senterons les moyens de s’en prot´ger.
             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 int´gr´ ` une application par ajout ou par modifica-
                            e ea
tion de son code. Ainsi lors de l’ex´cution de ce programme inoffensif, le bout
                                    e
de code malveillant pourra ex´cuter des commandes sp´cifiques (r´cup´ration
                               e                         e         e     e
de fichiers de mot de passe, alt´ration du syst`me...) ` l’insu de l’utilisateur.
                                 e              e       a

Comment s’en prot´ger ?
                 e
   La plupart des antivirus peuvent d´tecter les chevaux de Troie. N´anmoins,
                                     e                               e
comparer la signature num´rique accompagnant les fichiers (cela se fait par
                           e
un calcul reposant sur un algorithme de chiffrement appliqu´ ` l’ensemble du
                                                            ea
fichier) avec la sienne permet de savoir directement si l’on est infect´.
                                                                       e

Il est aussi conseill´ de consulter les sites suivants pour v´rifier que vos pro-
                     e                                       e
grammes ne contiennent pas de chevaux de Troie :

CERT : http://www.cert.org (Le CERT (Computer Emergency Response
Team) est un organisme s’occupant des probl`mes de s´curit´ sur Internet. Il
                                              e        e     e
recense les diff´rents probl`mes de s´curit´ et publie des articles (advisories)
               e           e        e     e
pour les d´crire.
           e

Bugtraq : http://citadelle.intrinsec.com/mailing/current/HTML/ml_
bugtraq/




                                      42
5.2      Les backdoors
    Les backdoors sont des acc`s cach´s sur un syst`me ou sur une appli-
                               e       e             e
cation. Le principe d’une backdoor est similaire ` celui du cheval de Troie.
                                                 a
L’objectif est de modifier ou d’utiliser un programme pour acc`der discre-
                                                                e
tement ` un ordinateur distant, modifier le comportement d’un programme,
        a
devenir administrateur.

5.2.1     Les backdoors pr´sentes dans les logiciels.
                          e
    Parfois, certains logiciels (messagerie, utilitaires syst`mes) peuvent conte-
                                                             e
nir des backdoors, c’est-`-dire que, pour certaines commandes suivies d’ar-
                           a
guments particuliers ou avec un mot de passe bien d´fini, le logiciel peut
                                                             e
avoir un comportement diff´rent (permettre ` l’utilisateur de devenir root,
                               e                  a
renvoyer un shell syst`me ` l’utilisateur...).
                        e    a

Ces ”trappes” sont inclues directement dans le code du logiciel. Certains
d´veloppeurs sont soucieux de poss´der un acc`s sur tous les syst`mes uti-
  e                                   e            e                  e
lisant leurs logiciels. Par exemple, Ken Thompson, l’un des p`res d’UNIX,
                                                                 e
avoue avoir modifi´ l’application /bin/login en permettant l’acc`s direct au
                     e                                             e
syst`me par la saisie d’un mot de passe pr´compil´ en dur. Thompson pou-
    e                                         e      e
vait ainsi visiter tous les syst`mes utilisant son application modifi´e.
                                e                                    e
Parfois, certains pirates diffusent des applications infest´es de backdoors.
                                                           e


Comment s’en prot´ger ?
                 e
    Il convient de t´l´charger ses applications sur le site du distributeur ou
                    ee
du programmeur. Utiliser des serveurs de t´l´chargement non li´s ` l’auteur
                                             ee                   e a
de l’application peut se r´l´ver dangereux.
                          ee

Il est aussi recommand´ de v´rifier les checksums s’il sont donn´s par le
                      e     e                                  e
d´veloppeur.
  e

Il est aussi bon de consulter des listes de diffusion comme bugtraq pour savoir
si la version de logiciel que vous utilisez ne comporte pas de backdoors.

5.2.2     Les backdoors d´di´es aux connexions ` distance
                         e e                   a
  Ces backdoors peuvent tr`s bien faire partie de la premi`re cat´gorie.
                             e                                e      e
Comme il l’a ´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 d´fini utilis´es par les pirates pour
                 e                          e          e
obtenir un shell. Un logiciel pr´alablement 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 num´ros de ports ayant une valeur assez ´lev´e (sup´rieur `
e                   e                                        e e         e      a
5000). Le pirate n’a plus qu’` se connecter sur ce programme pour r´cup´rer
                              a                                         e    e
son acc`s sur la machine.
       e

Comment s’en proteger ?
   Nmap peut se r´l`ver ˆtre une aide pr´cieuse pour les d´busquer. Si, en
                     ee    e                  e           e
proc´dant au scan d’une machine, vous constatez qu’un port non autoris´ est
     e                                                                e
en ´coute, il serait bon de v´rifier 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 d’automatiser la dissimulation
et l’effacement des traces d’un pirate sur une machine. L’objectif d’un root-
kit est de modifier les commandes permettant d’administrer le syst`me, de
                                                                    e
cacher les ports ouverts par le pirate...

Les premiers rootkits ´taient assez basiques, ils modifiaient juste les com-
                       e
mandes ls, ps, netstat...

L’administrateur pouvait d´tecter ces modifications sur les logiciels concern´s.
                          e                                                 e
Alors une seconde g´n´ration de rootkits apparut. Il faut savoir que des com-
                   e e
mandes comme ps, ls ... font appels ` des bibliotheques partag´es pour fonc-
                                    a                           e
tionner. Les nouveaux rootkits modifiaient donc le code de ces biblioth`ques
                                                                         e
pour modifier le comportement de ces commandes ` l’avantage du pirate.
                                                   a

Encore une fois, ceci ´tait d´tectable. Donc une troisi`me g´neration de root-
                      e      e                         e    e
kits est n´e afin de modifier directement le comportement du noyau, par le
          e
biais de modules charg´s en m´moire (LKM). C’est ` l’heure actuelle la der-
                        e       e                     a
niere g´n´ration.
       e e

Diff´rents rootkits sont disponibles sur Linux.
   e

Je ne donnerai (volontairement) pas dans cette partie une description compl`te
                                                                           e
de l’utilisation des rootkits. Cela n’a aucun interˆt 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 s’en prot´ger ?
                 e
   1) Les checksums.

Une base de donn´es de checksums sur les diff´rents fichiers syst`me peut
                     e                            e               e
d´j` constituer une bonne parade. Je vous conseille d’effectuer des check-
  ea
sums a la fin d’une installation sur les diff´rents fichiers comme ls, ps, stat
      `                                      e
ifconfig ... et sur les diff´rentes biblioth`ques partag´es.
                          e               e           e

Cette base de donn´e devrait ˆtre stock´e sur un CDROM ou tout autre
                    e        e         e
support non r´inscriptible.
             e



                                      45
2) Compiler les programmes vitaux en statique

Comme je l’ai dit pr´c´demment, certaines commandes font appels ` des
                        e e                                            a
librairies partag´es et des utilitaires comme ”md5sum” (qui sert ` faire des
                 e                                                 a
checksums) sous Linux font appels ` des librairies partag´es. D’o` son com-
                                      a                   e       u
portement pourrait ˆtre modifi´ indirectement par un rootkit attaquant les
                      e           e
librairies partag´es. Pour ´viter ce genre de d´sagr´ement, compilez une par-
                 e          e                  e    e
tie des programmes vitaux en statique, ainsi vous disposerez d’une trousse
de secours en cas d’infection par rootkits.

Bien sˆr, pour compiler les programmes vitaux en statique, faut-il encore
        u
disposer d’un OS qui permette d’acc´der aux sources de ces programmes vi-
                                   e
taux...

3) Chkrootkit

Chkrootkit (pour CHecK ROOTKIT) vous permet de d´tecter la pr´sence
                                                            e            e
d’un rootkit, il fonctionne sous Linux (FreeBsd...) et est t´l´chargeable libre-
                                                            ee
ment sur www.chkrootkit.org/.

4) Compilez votre noyau en statique. Vous ´viterez ainsi le chargement de
                                          e
modules externes.




                                      46
5.4      L’interception des mots de passe en r´seau.
                                              e
   Une autre technique utilis´e pour collecter des informations (mots de
                                 e
passe par exemple) est l’utilisation d’un sniffer. Le sniffer place la carte r´seau
                                                                            e
dans le mode transparent (promiscious), ce qui veut dire que la carte inter-
cepte tous les paquets sur le segment r´seau, mˆme ceux qui ne lui sont pas
                                         e         e
destin´s.
      e

Plusieurs types de sniffers existent ; certains affichent les donn´es intercept´es
                                                                e            e
                         1
brutes comme Tcpdump , ce qui donne lieu ` des fichiers de log tr`s volu-
                                                a                       e
mineux. D’autres sniffers permettent de r´cup´rer les mots de passe en les
                                             e    e
affichant directement ` l’´cran associ´ avec le login, l’adresse du client et celle
                      a e              e
du serveur (comme dsniff2 ).

Ethereal3 permet par exemple d’afficher toutes les transactions ayant cours
sur le r´seau.
        e

Cependant, le sniffer reste un outil puissant pour la d´tection d’intrusion
                                                         e
car, premi`rement, il garde une trace de tous les ´changes ayant cours sur le
           e                                        e
r´seau. Deuxi`ment, il se r´v`le tr`s utile pour d´masquer un scan (un grand
 e            e            e e     e              e
nombre de paquets envoy´s d’un seul coup), de tracer l’adresse d’un pirate,
                          e
de voir si des commandes particuli`res sont demand´es sur le reseau.
                                     e                e

La plupart des rootkits contiennent un programme pour sniffer.

Les NDIS utilisent un sniffer pour analyser les transactions r´seau.
                                                             e

Comment s’en prot´ger ?
                 e
    L`, c’est tr`s difficile. Un sniffer est passif, il n’envoie aucun paquet, il
     a          e
ne fait qu’intercepter. Mais la carte r´seau ´tant en mode transparent, son
                                       e     e
comportement s’en trouve chang´, son temps et sa fa¸on de r´pondre ` cer-
                                 e                       c      e      a
tains paquets sont modifi´s. On peut d´tecter la pr´sence d’un sniffer grˆce `
                          e            e             e                  a a
                                                             4
ce changement de comportement. Le programme AntiSniff de Lopht Heavy
Industries peut envoyer des paquets ”tests” et en d´duire si la carte est en
                                                       e
mode transparent donc susceptible de sniffer.
  1
      disponible sur www.tcpdump.org
  2
      disponible sur www.packetstormsecurity.org
    3
      disponible sur www.packetstormsecurity.org
    4
      disponible sur windowsN T c et Linux ` l’adresse http ://packetstormsecu-
                                                 a
rity.nl/sniffers/antisniff/


                                       47
Une deuxi`me parade pour d´jouer le sniffing est de ”tunneler” toutes les
           e                  e
transactions. Cela veut dire encrypter toutes les transactions r´seaux. Utili-
                                                                e
ser IpvSec ou des VPN, ssh sur votre r´seau s’av`re ˆtre une d´fense efficace
                                       e         e e           e
contre le sniffing.

L’utilisation de tunnels est trait´e dans la section 4.3.
                                  e




                                      48
Chapitre 6

Dispositifs destructeurs




               49
Introduction
   Les dispositifs destructeurs sont utilis´s pour paralyser, saturer ou d´truire
                                           e                               e
un syst`me d’information. Ils constituent l’esp`ce la plus nuisible dans le do-
       e                                         e
maine de la s´curit´ car ils peuvent ˆtre la source de perte de donn´es. Le
             e      e                  e                                  e
but de ce chapitre est d’expliquer leurs fonctionnements et la fa¸on de les
                                                                      c
combattre.




                                       50
6.1      Le virus
    Le virus est un programme dont le seul but est de consommer ou de pa-
ralyser des ressources syst`me. Le virus s’autoduplique pour mieux infecter
                           e
le syst`me, il se propage en infectant tour ` tour les fichiers. Les effets d’une
       e                                    a
contamination varient : fichiers effac´s, disque dur format´, saturation des
                                       e                      e
disques, modification du MBR...

La grande majorit´ d’entre eux existent sur les plates-formes M icrosof t c ,
                   e
ils infectent en particulier les fichiers COM ou EXE. De plus, de nouvelles
formes sont apparues comme les macro-virus qui attaquent les fichiers de
donn´es (word ou excel).
      e

Les syst`mes UNIX ne sont pas ´pargn´s ! Les administrateurs UNIX doivent
         e                     e      e
faire face ` des virus comme Winux. N´anmoins, la gestion des droits sous
           a                            e
UNIX se r´v`le ˆtre un facteur limitant pour la propagation de virus.
           e e e

Les virus sont de plus en plus ´volu´s, ils peuvent s’automodifier pour ´chapper
                               e    e                                  e
a
` une ´ventuelle d´tection (virus polymorphes). D’autres types peuvent ten-
        e           e
ter de leurrer le syst`me en s’installant dans des secteurs d´fecteux ou non
                        e                                      e
utilis´s (virus furtifs) ...
      e

Comment s’en prot´ger ?
                 e
   Les anti-virus commerciaux comme Norton Antivirus ou McAfee VirusS-
can sont de bons outils pour traquer les virus. Toutefois, il convient de les
mettre r´guli`rement ` jour pour profiter pleinement de leurs capacit´s.
        e    e       a                                                e

Il est aussi important de suivre l’´volution et l’apparition de nouveaux vi-
                                     e
rus ; pour cela, consulter les sites (ainsi que pour tous les autres dispositifs
destructeurs d´crits 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 mˆme acabit que les virus, sauf qu’ils n’utilisent pas
                        e
n´cessairement un fichier pour se propager. Ils sont aussi capables de se
 e
dupliquer et de se d´placer au travers d’un r´seau informatique. Les vers
                      e                        e
utilisent diff´rents 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 l’Internet).

Les macro-vers utiliseront les pi`ces jointes contenant des documents bu-
                                 e
reautiques infect´s (exemple du ver Nimda).
                 e

Les vers d’email sont contenus dans une pi`ce jointe comprenant un code
                                          e
malicieux ex´cut´ automatiquement par le logiciel de courrier ´lectronique
            e e                                               e
ou manuellement par l’utilisateur.

Comment s’en prot´ger ?
                 e
   Comme pour les virus, l’antivirus se r´v`le ˆtre une parade efficace.
                                         e e e

Consultez les listes cit´es dans la section 6.1.
                        e




                                       52
6.3      Les bombes logiques
    Les bombes logiques sont aussi n´fastes que les virus ou les vers et sont
                                        e
la cause de d´gats similaires. La diff´rence est que la bombe logique a besoin
             e                        e
d’un d´tonateur pour s’activer, c’est-`-dire qu’elle attend une date ou une
       e                                  a
action bien pr´cise de l’utilisateur pour exploser.
               e

Comment s’en prot´ger ?
                 e
    Utilisez un anti-virus performant (Mc Afee, Norton ...) r´guli`rement mis
                                                             e    e
a
` jour.

Consultez les sites d´crits dans la section 6.1.
                     e




                                      53
6.4     Les attaques par d´ni de services
                          e
   Ce type d’attaques est la plus ´nervante qui soit. Elles ont pour but de
                                  e
saturer le r´seau ou le syst`me.
            e               e

6.4.1     Le SYN flood
   Cette technique consiste ` saturer un serveur en envoyant une multi-
                            a
tude de paquets TCP avec le flag SYN arm´, cela aura pour but de cr´er une
                                        e                         e
multitude de connexions demandant un grand nombre de ressources syst`me.
                                                                     e

La plupart des attaques par SYN-flood sont bien d´tect´es par diff´rents
                                                e    e          e
firewalls.

Comment s’en prot´ger ?
                 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 docu-
ment ”Packet Filtering HOWTO : Using iptables” (Chapitre 7.3) de Rusty
Wagner)

6.4.2     L’UDP Flood
    De la mˆme mani`re que pour le SYN flooding, l’attaquant envoie un
             e         e
grand nombre de requˆtes UDP sur une machine. Le trafic UDP ´tant prio-
                       e                                         e
ritaire sur le trafic TCP, ce type d’attaque peut vite troubler et saturer le
trafic transitant sur le r´seau.
                         e

La plus c´l`bre attaque utilisant l’UDP-flooding est le ”Chargen Denial of
          ee
Service Attack”. Un pirate envoie une requˆte sur le port echo d’une machine
                                             e
A indiquant comme port source celui du port chargen d’une 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 re¸oit, 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 s’en prot´ger ?
                 e
   Il est conseill´ de d´sactiver les services chargen et echo.
                  e     e

Si vous ne voulez pas d´sactiver chargen et echo, configurez votre firewall
                        e
pour ´viter le ”Chargen Denial of Service Attack” en limitant le traffic 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 vuln´rabilit´
                                        a                                   e       e
concerne la gestion de la fragmentation IP.

Ce probl`me apparaˆ lorsque la pile re¸oit le deuxi`me fragment d’un paquet
         e          ıt                 c            e
TCP contenant comme donn´e le premier fragment. La pile TCP/IP peut
                              e
s’av´rer incapable de g´rer cette exception et le reste du traffic.
    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 d’envoyer un paquet ICMP avec une quantit´ de donn´es
                                                                 e         e
sup´rieure ` la taille maximale d’un paquet IP . Encore une fois, la pile peut
    e       a
s’av´rer incapable de g´rer cette exception et le reste du traffic.
    e                   e

6.4.5     Attaque par r´flexion : Smurfing
                       e
    Cette attaque est bas´e sur le protocole ICMP. Lorsqu’on envoie un ping
                           e
a
` un r´seau en broadcast (par exemple 255.255.255.0), le paquet est envoy´
       e                                                                     e
a
` chacune des machines du r´seau.
                               e
    Un pirate envoie un ping en broadcast sur un r´seau (A) avec une adresse
                                                     e
IP source correspondant ` celle de la machine cible (B). Le flux entre le port
                           a
ping de la cible (B) et du r´seau (A) sera mulitpli´ par le nombre de machines
                             e                     e
sur le r´seau (A).
        e
    Cela conduit ` une saturation de la bande passante du r´seau (A) et du
                  a                                            e
syst`me de traitement de paquets de (B).
    e




                                       55
Comment s’en prot´ger ?
                 e
   Configurez votre firewall pour limiter le traffic ICMP.
   [root@nowhere /root]# iptables -A FORWARD -p icmp –
icmp-type echo- request -m limit –limit 1/s -j ACCEPT
   (Pour plus de d´tails 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    D´nis de services distribu´s
          e                        e
   Plusieurs types d’attaques sont lanc´es 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 fichiers `
                                 a                                        a
un utilisateur pour saturer sa boˆ de r´ception de courrier ´lectronique.
                                  ıte  e                    e

Comment s’en prot´ger ?
                 e
    La plupart des logiciels de contrˆle de contenu assure un filtrage du cour-
                                     o
rier pour d´tecter ce type d’attaque
           e




                                     56
Chapitre 7

S´curisation des mots de passe
 e




               57
Introduction
    Le but de ce chapitre est de donner au lecteur toutes les informations
n´cessaires sur les techniques utilis´es pour tester la r´sistance des protec-
  e                                  e                   e
tions par mot de passe.

Il faut savoir que les mots de passe utilis´s sur un syst`me d’information sont
                                           e             e
encrypt´s pour garantir leur confidentialit´. Ces mots de passe encrypt´s sont
         e                                   e                          e
stock´s dans des listes de mots de passe sur des fichiers syst`mes pr´d´finis.
      e                                                         e      e e

Un pirate peut fort bien r´cup´rer ces listes et tester la fiabilit´ des mots
                             e    e                                e
de passe. Il utilise pour cela l’outil ad´quat : un perceur de mot de passe.
                                         e

La plupart des algorithmes d’encryptage repose sur l’utilisation de fonctions
a
` sens unique. Ceci veut simplement dire qu’il est impossible de d´crypter le
                                                                    e
mot de passe ` partir sa forme encrypt´e. L’attaque consiste alors ` encrypter
             a                        e                            a
diff´rentes combinaisons de caract`res et de comparer cette forme encrypt´e
   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 d’attaques pour le craquage de mots de passe qui seront
d´finies dans ce chapitre.
  e




                                      58
7.1       L’attaque par dictionnaire
    Le programme utilise une liste de mots pr´d´finis dans un fichier externe.
                                              e e
Cette liste est appel´e un dictionnaire ; ces mots sont la plupart du temps
                     e
ceux provenant d’un dictionnaire contenant les mots du langage courant. Le
programme les encrypte avec l’algorithme d’encryptage ad´quat un par un
                                                            e
et les compare au mot de passe encrypt´. e

Ce type d’attaque est tr`s rapide. Un mot de passe mal choisi est vite
                        e
d´couvert.
 e


7.2       Le brute forcing
   Si l’attaque par dictionnaire ne marche pas, le programme peut g´n´rer
                                                                       e e
des mots de passe avec une suite al´atoire de caract`res, les encrypter et les
                                    e               e
comparer au mot de passe ` d´couvrir. Avec un mot de passe suffisament long
                           a e
(sup´rieur ` 8 caract`res), cette m´thode a peu de chance d’aboutir. Si, de
    e      a          e             e
plus, des caract`res sp´ciaux sont ajout´s comme des signes de ponctuation,
                e       e               e
la m´thode peut se r´veler inefficace.
     e                e

Il existe diff´rents logiciels de per¸age de mots de passe en fonction du type
             e                      c
d’encryptage ( DES, MD5, special M icrosof t c ...).


7.3       Tester la fiabilit´ de vos mots de passe !
                           e
    Sous UNIX

Sous UNIX, la liste des mots de passe des utilisateurs syst`me est divis´e
                                                           e            e
en deux fichiers ”/etc/shadow” et ”/etc/passwd” ou r´unis seulement dans
                                                     e
le fichier ”/etc/passwd”. Le type d’encryptage peut ˆtre du MD5, DES1 ,
                                                     e
RSA ...

Pour tester la r´sistance de vos mots de passe, le logiciel John The Rip-
                e
per2 peut s’av´rer ˆtre une bonne aide. Il supporte un grand nombre d’al-
              e    e
gorithmes d’encryptage, pr´sente un important param´trage des attaques.
                           e                          e
    1
      L’algorithme DES a ´t´ adopt´ par la NSA comme standard ` la fin des ann´es 70. Le
                          ee         e                              a            e
DES est distribu´ publiquement mais il a ´t´ d´velopp´ dans le secret. Certains suspectent
                  e                         ee e        e
le gouvernement am´ricain de s’ˆtre reserv´ une ”gˆche secr`te” pour une d´cryptage plus
                    e              e         e        a        e            e
rapide, je vous conseille d’utiliser d’autres 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 fiabilit´ des mots sous Windows, l’administrateur pourra uti-
                      e
liser le logiciel John the Ripper3 sur Windows ou sur Unix ou le logiciel
LophtCrack c de LophtHeavyIndustries c 4 qui, lui, n’est pas distribu´ gra-
                                                                     e
tuitement (enfin pas pour les versions r´centes).
                                       e

Sous W indows9x c , les mots de passe sont dispers´s dans le r´pertoire ra-
                                                  e           e
cine de windows dans diff´rents fichiers d’exention ”.PWL” portant comme
                            e
nom celui de l’utilisateur.

Le chiffrement utilis´ pour g´n´rer les mots de passe PWL est tr`s faible.
                    e       e e                                e
Le programme Cain permet de tester leur fiabilit´.
                                               e


7.4        Choisir le bon mot de passe
   N’utilisez pas des mots de votre language courant ou des suites
de chiffres !

Choisissez des mots de passe longs, avec une suite de caract`res totalement
                                                              e
al´atoires et avec des caract`res sp´ciaux, alternez les majuscules et les mi-
  e                          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,Jt’AmA, qui est un mot de passe assez costaud.
  3
      Idem.
  4
      Lophtcrack c est disponible sur http ://www.atstake.com/research/lc/




                                           60
7.5     Pr´venir l’utilisateur
          e
   N’h´sitez pas ` organiser des r´unions, faire circuler diff´rents documents
       e         a                e                          e
pour informer vos utilisateurs des probl`mes de fiabilit´ des mots de passe.
                                        e                e




                                     61
Chapitre 8

La base des attaques r´seaux
                      e




              62
Introduction
   Dans ce chapitre, nous d´crirons les principes sur lesquels reposent de
                               e
nombreuses attaques r´seaux (notamment celles d´crites dans le chapitre 9),
                        e                            e
ainsi que les r`gles ` respecter pour les ´viter ou les parer.
               e     a                    e




                                    63
8.1      D´tournement de flux
          e
   Les techniques de d´tournement de flux servent ` rediriger le flux r´seau
                        e                           a                e
vers un client, vers un serveur, ou vers une autre machine.

8.1.1     ARP-Poisoning :
    Toute carte r´seau poss`de une adresse physique. C’est cette adresse qui
                  e          e
lui permet de recevoir les paquets qui lui sont destin´s. Cette adresse physique
                                                      e
est associ´e ` l’adresse IP grˆce au protocole ARP. La table de correspon-
          e a                   a
dance entre les adresses IP et les adresses physiques est contenue dans le
cache ARP. Lorsqu’un ´change doit s’´tablir entre 2 machines, ces deux ma-
                         e               e
chines envoient des requˆtes ARP avec l’adresse IP du r´cepteur, associ´e
                           e                                   e                e
a
` un champ vide pour son adresse physique. Ce r´cepteur va renvoyer son
                                                      e
adresse physique dans une r´ponse ARP. Si un attaquant envoie un message
                              e
de r´ponse ARP avec son adresse physique correspondant ` l’adresse IP du
     e                                                          a
r´cepteur, tout le flux IP dirig´ vers le r´cepteur sera ridirig´ vers l’attaquant.
 e                              e         e                    e
On dit qu’il a empoisonn´ le cache ARP du recepteur.
                           e

Illustration




B envoie ` A une requˆte ARP pour connaˆ son adresse physique.
         a           e                 ıtre




A renvoie ` B son adresse physique par une r´ponse ARP. B la stocke dans
          a                                   e
son cache en faisant correspondre l’IP de A ` son adresse physique.
                                            a




Le trafic circule entre A et B.


                                       64
C envoie ` B, une r´ponse ARP avec son adresse physique correspondant `
          a          e                                                     a
l’IP de A. B stocke cette nouvelle correspondance dans son cache en ´crasant
                                                                    e
l’ancienne.




C dialogue avec B ` la place de A. A ne re¸oit plus rien.
                  a                       c

Comment s’en prot´ger ?
                 e
   On peut utiliser sous UNIX, le logiciel Arpwatch1 qui permet de surveiller
tout le trafic ARP.

Les NIDS peuvent aussi d´tecter ce type d’attaques (notamment Prelude).
                        e

Documents
      http://www.securite.teamlog.com/publication/6/10/102/

8.1.2        D´synchronisation TCP :
              e
     L’ARP-Poisining permet de rediriger tout le trafic IP mais, si l’attaquant
n’a besoin que du trafic TCP, il peut interf´rer entre une connexion client-
                                              e
serveur pour rediriger le flux du client vers lui. La synchronisation TCP est
assur´e par les num´ros de s´quences TCP. Si, pendant un ´change, l’atta-
      e               e       e                               e
quant envoie des paquets malform´s au client avec une adresse IP correspon-
                                   e
dant ` celle du serveur en y placant des mauvais num´ros de s´quences, le
       a                                                 e        e
client va croire qu’il a perdu la connexion et stoppera ses ´changes avec le
                                                             e
serveur. Mais si l’attaquant envoie les bons num´ros de s´quences au serveur,
                                                 e        e
il r´cup`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 num´ros
                                                                      e
de s´quences indiqu´s.
    e              e




C r´pond ` A en se faisant passer pour B et envoie de mauvais num´ros de
   e      a                                                      e
sequences.




A ne r´pond plus ` B car il croit qu’il a perdu la connexion.
      e          a


C r´pond ` 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 signifie l’homme du milieu. Cette attaque fait intervenir
trois protagonistes : le client, le serveur et l’attaquant. Le but de l’attaquant
est de se faire passer pour le client aupr`s du serveur et se faire passer pour
                                            e
le serveur aupr`s du client. Il devient ainsi l’homme du milieu. Cela permet
                e
de surveiller tout le trafic r´seau entre le client et le serveur, et de le modifier
                             e
a
` sa guise pour l’obtention d’informations (mots de passe, acc`s syst`me ...)
                                                                    e      e

La plupart du temps, l’attaquant utilise les techniques de d´tournement de
                                                               e
flux d´crites dans les pr´c´dentes sections pour rediriger les flux du clients et
      e                 e e
du serveur vers lui.




                                       67
8.3     Encapsulation d’IP dans d’autres proto-
        coles.
   Certains logiciels permettent d’encapsuler le protocole IP dans d’autres
protocoles comme SSH, HTTP ... . Ce type d’encapsulation peut ˆtre la base
                                                                e
de nombreuses attaques r´seaux.
                         e

Par exemple, imaginons cette situation : un pirate veut se connecter sur
le port FTP (21) d’une machine A d’un r´seau prot´g´ par un firewall B.
                                            e          e e
B n’autorise et n’assure que le trafic HTTP. Si le pirate veut se connecter
sur A, il encapsule les paquets ` destination de A dans des requˆtes HTTP
                                a                                 e
destin´es ` B. B accepte ces paquets car ils reposent sur le protocole HTTP.
      e a
Si B est mal configur´, il enverra ` A les paquets lui ´tant destin´s.
                      e           a                   e            e




                                    68
Chapitre 9

Description d’attaques sur
diff´rents protocoles
   e




               69
Introduction
     Ce chapitre d´crit les failles intrins`ques de diff´rents protocoles. In-
                  e                        e           e
trins`ques par le fait qu’elles ne sont pas li´es ` une faille applicative du
      e                                        e a
client ou du serveur g´rant ce protocole, mais plutˆt ` sa conception. Nous
                       e                            o a
pr´senterons aussi la mani`re de s’en prot´ger.
   e                       e                 e




                                     70
9.1     DHCP : Dynamic Host Configuration Pro-
        tocol
    Le protocole DHCP est utilis´ pour d´livrer dynamiquement une adresse
                                 e       e
IP unique pour chaque machine le demandant sur le r´seau interne. En clair,
                                                     e
si un client interne veut obtenir une adresse IP pour b´n´ficier des services
                                                       e e
r´seau, il envoie un message DHCP ` tout le r´seau (broadcast) pour trou-
 e                                   a          e
ver le serveur DHCP. Le serveur DHCP r´pondra en lui envoyant tous les
                                           e
param`tres de configuration r´seau.
       e                      e

Ce service permet d’”all´ger” la gestion du r´seau en ´vitant d’avoir des
                         e                    e         e
configurations statiques ` maintenir sur chaque machine. Malheureusement,
                        a
le protocole DHCP comporte diverses failles que nous allons vous pr´senter.
                                                                   e

9.1.1    Attaque par ´puisement de ressources
                     e
   Comme il l’a ´t´ d´crit, un serveur DHCP poss`de un stock d’adresses
                  ee e                              e
IP qu’il distribue aux diff´rents clients. Ce stock est bien sˆr limit´. Il y
                          e                                  u       e
aura seulement un nombre d´fini de clients pouvant disposer des diff´rentes
                            e                                       e
adresses IP en mˆme temps (par exemple 255).
                 e

Si un pirate g´n`re un grand nombre de requˆtes DHCP semblant venir
               e e                              e
d’un grand nombre de clients diff´rents, le serveur ´puisera vite son stock
                                   e                e
d’adresses. Les ”vrais” clients ne pourront donc plus obtenir d’adresse IP :
le trafic r´seau sera paralys´.
          e                 e

9.1.2    Faux serveurs DHCP
    Cette attaque vient en compl´ment de la premi`re. Si un pirate a r´ussi
                                 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 contrˆler tout le traffic
                    a                                      o
r´seau.
 e

Comment s’en prot´ger ?
                 e
   Segmentez votre r´seau en sous-r´seau et attribuez-leur chacun un ser-
                    e               e
veur DHCP. Ces serveurs seront ind´pendants les uns des autres.
                                  e

Associez une adresse IP d´finie ` une adresse mat´rielle (MAC) sp´cifique.
                         e     a                e               e



                                     71
SousW indows c

Remplissez les champs de l’option ”R´servations” dans le programme de
                                    e
configuration du serveur DHCP

Sous Linux

Modifiez le fichier /etc/dhcpd.conf sur le serveur DHCP.

Exemple pour un client ”toto” d’adresse MAC 00 :C0 :34 :45 :56 :67 qui
recevra l’adresse 192.168.1.2. Le routeur poss`de l’adresse 192.168.1.1 et le
                                              e
serveur de noms poss`de l’adresse 192.168.1.3.
                      e

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

Les nouvelles versions du protocole DHCP permettent l’utilisation de m´canismes
                                                                         e
d’authentification plus stricts. Assurez vous que vos serveurs utilisent ces ver-
sions de protocoles. (Voir RFC 3118)

Documents :
   S´curisation 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# (configuration d’une passerelle d’authentification).




                                     72
9.2      DNS : Domain Name Server
    Le protocole DNS assure la correspondance entre le nom d’une machine
et son adresse IP. Un serveur DNS est en ´coute sur le port 53. Les attaques
                                            e
d´crites ici concernent les faiblesses du protocole DNS.
 e

9.2.1     Le DNS ID spoofing
   C’est la premi`re attaque que nous allons d´crire. Elle aboutit ` un
                 e                             e                   a
d´tournement de flux entre deux machines ` l’avantage du pirate.
 e                                      a

Imaginons qu’un 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 empˆche pouvoir communiquer avec. La machine A va donc envoyer
            e
une requˆte au serveur DNS du r´seau de B pour connaˆ l’adresse IP de
         e                        e                      ıtre
B, cette requˆte sera identifi´e par un numero d’ identification (ID). Le ser-
              e              e
veur r´pond ` cette requˆte en fournissant l’adresse IP de B et en utilisant
       e      a            e
le mˆme num´ro d’ID.
     e        e

Ce num´ro a une valeur comprise entre 0 et 65535.
      e

Le DNS ID spoofing a pour but de d’envoyer une fausse r´ponse ` une requˆte
                                                        e    a          e
DNS avant le serveur DNS. De cette fa¸on, le pirate peut rediriger vers lui
                                       c
le trafic ` destination d’une machine qu’il l’int´resse.
         a                                      e

Dans notre exemple, un pirate C doit r´pondre ` A avant le serveur DNS
                                        e        a
(D) du r´seau de B. Ainsi, il envoie ` A son adresse IP associ´e au nom de
        e                            a                         e
la machine B. A communiquera alors avec le pirate C au lieu de la machine B.

Illustration




                                    73
N´anmoins, pour impl´menter cette attaque, le pirate doit connaˆ
  e                     e                                         ıtre l’ ID
de requˆte DNS. Pour cela, il peut utiliser un sniffer s’il est sur le mˆme
        e                                                               e
r´seau, soit pr´dire les numeros d’ID par l’envoi de plusieurs requˆtes et
 e              e                                                    e
l’analyse des r´ponses.
               e

9.2.2     Le DNS cache poisoning
   Le principe de cette attaque est tr`s similaire ` celui de l’ARP-Poisoining.
                                      e             a
Pour gagner du temps dans la gestion des requˆtes, le serveur DNS poss`de
                                                  e                         e
un cache temporaire contenant les correspondances adresses IP - noms de
machine. En effet, un serveur DNS n’a que la table de correspondance des
machines du r´seau sur lequel il a autorit´. Pour des machines distantes, il
               e                            e
doit interroger d’autres serveurs DNS. Pour ´viter de les interroger ` chaque
                                              e                       a
requˆte, il garde en m´moire (dans un cache), le r´sultat des pr´c´dentes
     e                  e                               e            e e
requˆtes.
     e

L’objectif du pirate est d’empoisonner ce cache avec de fausses informations.
Pour cela, il doit avoir un nom de domaine sous contrˆle et son serveur DNS.
                                                     o

Imaginons qu’un pirate (A) poss`de le nom de domaine ”attaquant.com”,
                                  e
et son serveur DNS (C) et qu’il veuille empoisonner le cache du serveur DNS
(B) du r´seau ”cible.net”.
         e

Le pirate envoie une requˆte au serveur DNS (B) du r´seau ”cible.net” de-
                         e                          e
mandant la r´solution du nom de domaine ”attaquant.com”.
             e



                                      74
Le serveur DNS (B) de ”cible.net” va donc envoyer une requˆte sur le ser-
                                                               e
veur DNS (C) de l’attaquant (c’est lui qui a autorit´ sur le domaine ”at-
                                                       e
taquant.com”). Celui-ci r´pondra et joindra des informations additionnelles
                           e
falsifi´es par le pirate (un nom de machine (D) associ´ ` l’adresse 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 l’adresse IP pour le nom de la
machine (D), il recevra l’adresse du pirate (A) en retour.

Illustration




                                    75
Comment s’en prot´ger ?
                 e
   Configurez votre serveur DNS pour qu’il ne r´solve directement que les
                                                 e
noms de machine du r´seau sur lequel il a autorit´.
                    e                            e

Autorisez seulement des machines internes ` demander la r´solution de noms
                                          a              e
de domaines distants.

Mettez ` jour ou changez les logiciels assurant le service DNS pour qu’ils
       a
vous prot´gent des attaques d´crites pr´cedemment.
         e                   e         e

Documents
   Sous linux :

http://www.toolinux.com/linutile/reseau/dns/index20.htm (Configu-
ration DNS et s´curit´)
               e     e

http://linux-france.unixtech.be/article/memo/dns/node16.html




                                   76
9.3       FINGER
    Le service finger permet d’obtenir des informations sur les utilisateurs du
syst`me.
    e

finger s’invoque simplement avec la commande :

[root@nowhere /root]#finger @machinecible

Le symbole @ produit le mˆme effet que l’ast´risque pour un listing de
                               e                   e
r´pertoire. En effet, les informations concernant tous les utilisateurs connect´s
 e                                                                            e
a
` la machine de nom ”machinecible” seront list´es et envoy´es en r´ponse `
                                                 e              e       e      a
la requˆte.
       e

Exemple

[root@nowhere /root]#finger @machinecible

Login Name Tty Idle Login Time Office toto Le toto pts/7 3d Mar 26 20 :43
(case)// root root pts/4 5d May 25 16 :20

On voit ainsi qui est connect´ sur le syst`me (toto et root) et depuis quand
                             e            e
(colonne ”Time”).

finger n’est pas dangereux mais le laisser en ´coute, sans en avoir r´ellement
                                             e                      e
besoin, est une grossi`re erreur. finger donne trop d’informations sur les uti-
                      e
lisateurs syst`mes.
              e

Comment s’en proteger ?
   UNIX

Il est conseill´ de d´sactiver le service finger dans le fichier ”/etc/inetd.conf”.
               e     e
Pour cela, ajoutez un di`se (#) devant la ligne relative au service finger.
                           e

# finger stream tcp nowait root /usr/sbin/tcpd in.fingerd

W IN DOW S c :

D´sactivez le programme associ´ au service finger.
 e                            e



                                       77
Si vous ne souhaitez pas d´sactiver le service finger, configurez votre fire-
                             e
wall pour y limiter l’acc`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 fichiers. Il y a deux types de serveurs FTP :
      e
les serveurs FTP avec authentification par mots de passe et les serveurs ano-
nymes. Pour les premiers, le client d´sirant se connecter devra fournir un
                                         e
login accompagn´ d’un mot de passe pour authentification. Dans le cas du
                  e
serveur FTP anonyme, tout le monde peut s’y connecter librement.

Le premier d´faut du protocole FTP est de ne pas encrypter les mots de
              e
passe lors de leur transit sur le r´seau. Les mots de passe associ´s aux logins
                                   e                              e
circulent en clair ` la merci des sniffers.
                   a

Voici l’exemple d’une interception par un sniffer d’une authentification 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 l’utilisateur ”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 d’acc`s peut s’av´rer ˆtre une erreur fatale.
                                       e            e   e
Laisser trop de r´pertoires en droit d’´criture et/ou d’ex´cution est plus que
                 e                     e                  e
dangereux pour la sˆret´ du syst`me. Le pirate pourrait y installer ou y
                     u e            e

                                       79
ex´cuter des codes malveillants lui permettant d’accroˆ son pouvoir sur la
  e                                                   ıtre
machine.

Boucing attack - Attaque par rebonds
    Les serveurs FTP anonymes peuvent ˆtre sujets ` des attaques par re-
                                           e          a
bonds. Ces attaques consistent ` utiliser un serveur FTP anonyme comme
                                 a
relais pour se connecter ` d’autres serveurs FTP. Imaginons qu’un pirate se
                          a
voit refuser l’acc`s par un serveur FTP dont l’acc`s est allou´ ` seulement
                  e                                e            ea
un certain groupe d’adresses IP. Imaginons que le pirate ne fait pas partie de
ce groupe, mais qu’un serveur FTP anonyme y appartienne. Le pirate peut
tr`s bien se connecter sur le serveur FTP anonyme, utiliser les commandes
  e
assurant la connexion sur le serveur FTP prot´g´ et y r´cup´rer des fichiers.
                                              e e       e    e

Comment s’en prot´ger ?
                 e
    Installez un serveur FTP anonyme seulement en cas d’absolue n´cessit´. Si
                                                                     e     e
vous devez le faire, limitez au maximun les droits sur les diff´rents r´pertoires
                                                              e       e
et fichiers laiss´s au public.
                e

Pour vous prot´ger des attaques par sniffer, je vous recommande d’utili-
                 e
ser SFTP (Secure FTP) pour vos transactions FTP. SFTP encryptera les
´changes et les prot´gera ainsi des ´coutes indiscr`tes. Vous pouvez aussi uti-
e                    e              e              e
liser des tunnels comme IPSec pour prot´ger vos connexions (voir section 4.3).
                                         e

Filtrez les acc`s (via un firewall) en allouant seulement l’acc`s ` un certain
               e                                              e a
groupe d’adresses IP (en ´vitant d’inclure 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
sˆrement 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 bourr´es de failles. Cela vient du fait
                                          e
que le web devient de plus en plus demandeur en terme de convivialit´ et
                                                                       e
cela g´n`re une complexit´ plus grande des applications, d’o` un risque de
       e e                e                                  u
failles plus important.

Nous allons d´crire 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 l’envoi de la commande HEAD / HTTP/1.0

Trop d’informations sont donn´es.
                             e

Les pages d’erreurs (404 : page non trouv´e) peuvent aussi contenir des in-
                                         e
formations sur le syst`me.
                      e




9.5.2     Vuln´rabilit´s li´es aux applications web
              e       e e
    La complexit´ des serveurs ou des navigateurs (clients) web pose de gros
                 e
probl`mes de s´curit´. Ces applications sont vuln´rables ` de nombreux
     e          e     e                             e        a
bugs. Chaque application a son type de faille. Netscape par exemple de-
vient vuln´rable lors du traitement de certaines chaˆ
           e                                        ınes de caract`res. Cela
                                                                  e
peut permettre de remonter toute l’arborescence des fichiers 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 r´alisation de scripts
                                                          e
peuvent se r´l`ver dangereux. L’origine d’une faille dans une application web
            ee

                                      81
peut apparaˆ ` cause de deux probl`mes. Le premier est la fiabilit´ de la
            ıtre a                      e                               e
conception du script, le second est la fiabilit´ des fonctions utilis´es. Si un
                                               e                    e
script est mal con¸u, il peut ˆtre la source de nombreuses failles. De mˆme,
                   c          e                                           e
si sa conception est bonne mais qu’il utilise des fonctions bogu´es, il peut se
                                                                e
r´v´ler encore plus dangeureux.
 e e




Comment se prot´ger ?
               e
   V´rifiez que votre serveur web n’est pas trop bavard. Si c’est le cas, modi-
     e
fiez sa configuration pour qu’il se taise. Pour cela, consultez la documentation
pour modifier le contenu des messages d’erreur ou de bienvenue.

Un serveur web ne devrait jamais ˆtre ex´cut´ avec les droits administra-
                                 e      e e
teurs.

Mettez ` jour les navigateurs et les serveurs pour pr´voir d’´ventuelles failles.
       a                                             e       e

Lors du d´veloppement de scripts, prenez garde lors de la conception ` la
           e                                                           a
gestion des droits des utilisateurs pour son ex´cution. 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 d´tecter l’ex´cution de telles attaques.
                                            e           e
Les NIDS et IDS sont trait´s dans la section ??.
                                e

L’utilisation de SHTTP (Secure HTTP) est aussi une bonne parade contre
les attaques HTTP.

Une bonne d´finition de SHTTP est donn´ par E.Rescorla et A. Schiffman :
           e                         e

”Le protocole SHTTP est une extension de HTTP qui fournit des services
de s´curit´, applicables ind´pendamment, qui permettent de garantir la confi-
    e      e                 e
dentilit´, l’authenticit´/int´grit´, et le non refus d’origine.”
        e               e    e e

SSL (”Secure Socket Layer” pour Netscape) permet de prot´ger les tran-
                                                        e
sactions web, il peut ˆtre judicieux de l’utiliser.
                      e




                                        82
9.6      IDENT
    Le service ident (anciennement appel´ auth, en ´coute sur le port 113)
                                         e          e
est du mˆme genre que le service finger. Il fournit des informations sur les
         e
d´tenteurs de connexions sur le syst`me.
 e                                  e

Il convient de le supprimer, s’il n’a aucune utilit´.
                                                   e

Comment s’en prot´ger ?
                 e
   UNIX

Pour d´sactiver le service ident, ajoutez un di`se (#) devant la ligne le concer-
      e                                        e
nant dans le fichier ”/etc/inetd.conf”.

# :INFO : Info services
#ident stream tcp wait identd /usr/sbin/identd identd




                                       83
9.7      IP et l’IP-Spoofing
    Cette m´thode de piratage date un peu. Mais elle demeure l´gendaire
              e                                                     e
par l’utilisation qu’en a fait Kevin Mitnick en 1995 contre le Supercompu-
ter Center de SanDiego prot´g´ par Tsatumo Shimomura. N´anmoins, cette
                              e e                             e
faille ´tait connue depuis f´vrier 1985 comme le montre le rapport ”Weakness
       e                    e
in the 4.2BSD Unix TCP/IP software” ´crit par Robert Morris.
                                          e

L’IP spoofing se base sur une usurpation d’adresse IP. L’IP spoofing est uti-
lis´ lorsque deux hˆtes sont en relation de confiance grˆce ` leurs adresses IP,
   e               o                                   a a
c’est-`-dire que la seule authentification faite au niveau du serveur consiste
       a
en une v´rification de l’adresse IP du client.
          e

L’IP spoofing a souvent lieu contre les services rlogin et rsh car leur m´canisme
                                                                        e
d’authentification est bas´e sur l’adresse IP. Le principe est simple : d`s qu’un
                          e                                             e
client poss`de une connexion ´tablie sur le serveur avec un mode d’authen-
           e                  e
fication bas´e sur l’adresse IP, le pirate va essayer de se faire passer pour le
            e
client aupr`s du serveur. Pour cela, il va empˆcher le client de dialoguer avec
           e                                   e
le serveur et r´pondra ` sa place.
               e       a

L’IP-Spoofing est une attaque concernant un nombre limit´ de machines.
                                                       e
Vous d´couvrirez pourquoi en lisant la suite.
      e

9.7.1     Un peu de th´orie ...
                      e
    Le protocole IP est non-orient´ connexion, il n’assure aucune v´rification
                                  e                                  e
de la r´ception des paquets et ne se soucie gu`re de la fa¸on de les traiter. IP
       e                                      e           c
n’assure qu’un routage d’une adresse vers autre. Il est donc facile de duper
le routage IP en injectant des paquets falsifi´s ayant des adresses IP valides
                                              e
sur le r´seau.
        e

Le protocole TCP, quant ` lui, assure une fiabilit´ de la remise des paquets
                          a                       e
grˆce ` des num´ros de s´quences qui les distingue un ` un. Chaque paquet
  a a           e        e                             a
TCP poss`de deux num´ros, le num´ro de s´quence et le num´ro d’acquitte-
          e            e            e        e               e
ment. Ces deux nombres sont cod´s sur 32 bits. Ils sont uniques, afin de ne
                                  e
pas confondre les paquets lors de leurs traitements.

C’est sur ces bases que nous allons d´crire l’attaque.
                                     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 r´duire au silence le client en le saturant avec des at-
                       e
taques tels que le syn-flooding, le d´ni de service ... (voir chapitre 6.4).
                                    e

La seconde partie de l’attaque est assez simple. Le pirate envoie une s´rie
                                                                          e
de demandes de connexion au serveur ( paquets TCP avec le flag SYN arm´)     e
en utilisant l’adresse de A. Le serveur r´pond avec une s´rie de paquets d’ac-
                                         e               e
quittement (flags SYN et ACK arm´s). C’est l` que r´side toute la finesse de
                                     e         a      e
l’IP spoofing.

Mais d’abord, quelques rappels sur le protocole TCP. Pour l’´tablisement
                                                               e
d’une connexion TCP, le client envoie un paquet avec un num´ro de s´quence
                                                           e       e
initial (NS1). Le serveur va r´pondre avec un paquet d’acquittement ayant
                               e
son propre num´ro de s´quence (NS2), mais ayant un num´ro d’acquit-
                  e       e                                   e
tement (NA1) ´gal au num´ro de s´quence initial incr´ment´ d’une unit´
                e            e       e                  e    e           e
(NA1=NS1+1). Ensuite le client renvoie un paquet avec un num´ro d’acquit-
                                                               e
tement (NA2=NS2+1). Une connexion TCP s’´tablit donc en trois parties.
                                              e

Ce principe de num´ros de s´quences et d’acquittement est utilis´ tout le
                       e         e                                    e
long de la transaction pour en assurer la fiabilit´. La subtilit´ de l’attaque
                                                    e            e
r´side dans le fait que le serveur g´n´re la valeur NS2 suivant un cycle par-
 e                                   e e
ticulier. Il peut utiliser, par exemple, soit une fonction g´n´rant un nombre
                                                            e e
al´atoire, soit incr´menter une valeur initiale de 128 toutes les secondes et
  e                 e
de 64 apr`s chaque connexion. Tout d´pend de l’impl´mentation de la pile
            e                             e               e
TCP/IP du syst`me.e

Et c’est l` que r´side tout le probl`me. Le pirate envoie un grand nombre
          a        e                   e
de demandes de connexion dans un laps de temps d´termin´ et analyse les
                                                         e       e
acquittements du serveur pour d´terminer l’algorithme d’incr´mentation. Si
                                    e                              e
cet algorithme est bas´ sur la g´n´ration de nombres al´atoires, l’attaque a
                         e         e e                      e
peu de chances d’aboutir. Mais si l’algorithme est facilement compr´hensible,
                                                                        e
le pirate va alors envoyer une requˆte de connexion au serveur en utilisant
                                       e
l’adresse IP du client. Le serveur va r´pondre avec un paquet d’acquittement
                                         e
de numero de sequence (NS). Le client mis hors service ne pourra r´pondre,e
le pirate le fera ` sa place. Pour cela, il doit injecter un paquet ayant un
                   a
num´ro d’acquittement de valeur NA = NS +1. Mais, ayant usurp´ l’adresse
     e                                                                  e
du client, il ne peut intercepter les paquets lui ´tant destin´s. Il ne peut donc
                                                  e            e
pas connaˆ cette valeur NS. Il va donc la g´n´rer lui-mˆme ` partir de son
           ıtre                                 e e          e    a
analyse de l’algorithme d’incr´mentation. C’est pourquoi cette attaque est
                                e
aussi qualifi´e ”d’attaque aveugle”. Si le num´ro est valide, le pirate a ´tabli
              e                                 e                           e
la connexion au serveur en se faisant passer pour le client.

                                       85
Le fait que l’attaque ne se restreigne qu’` une petite partie de syst`mes vient
                                          a                          e
du fait que la plupart des piles TCP/IP utilisent des num´ros de s´quences
                                                              e        e
bas´s sur des nombres al´atoires. Certains syst`mes comme BSD ou HP-UX
   e                      e                      e
connaissent de gros probl`mes ` cause de l’IP-Spoofing.
                           e     a

Illustration




                                      86
9.7.2     Pr´venir l’IP spoofing grˆce ` Nmap
            e                     a a
   Nmap invoqu´ avec l’option -O et -v vous fournit une indication sur la
                e
difficult´ qu’aura le pirate ` proc´der ` une attaque par IP spoofing 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 firewalled
Interesting ports on (192.168.1.4) :
(The 1548 ports scanned but not shown below are in state : closed)
Port State Service
21/tcp open ftp
22/tcp open ssh
111/tcp open sunrpc
139/tcp open netbios-ssn
515/tcp open printer
1024/tcp open kdm

Remote operating system guess : Linux 2.1.19 - 2.2.19
Uptime 0.122 days (since Thu Mar 27 16 :02 :38 2003)
TCP Sequence Prediction : Class=random positive increments
Difficulty=4687481 (Good luck !)
IPID Sequence Generation : Incremental

Nmap run completed – 1 IP address (1 host up) scanned in 3 seconds

Les lignes int´ressantes :
              e

TCP Sequence Prediction : Class=random positive increments Dif-
ficulty=4687481 (Good luck !)

Celles-ci nous renseignent sur la difficult´ d’une attaque par IP-Spoofing.
                                             e
Plus le nombre associ´ ` la valeur ”Difficulty” est ´lev´, plus il est difficile
                       ea                              e e
d’entreprendre une attaque. Le message ”Good Luck !” entre parenth`ses est
                                                                     e
plutˆt ironique vis-`-vis de la r´ussite de l’attaque.
    o               a            e

Si, par malchance, lors d’un scan, vous obtenez un nombre tr`s bas avec
                                                               e
un message du type ”Trivial Joke”, cela signifie que votre syst`me est tr`s
                                                              e         e
vuln´rable ` une attaque par IP-Spoofing.
     e     a

Comment s’en prot´ger ?
                 e
   Sur la plupart des syst`mes, les num´ros de s´quence sont incr´ment´s
                            e             e        e                e      e
de fa¸on al´atoire, ce qui limite d´j` une grande partie des attaques par IP
     c     e                       ea
spoofing.


                                    88
Pour se prot´ger , il faut commen¸er par supprimer tous les services se basant
            e                    c
sur l’authentification IP (rloging, rsh).

Certains modules comme rp filter sous Linux permettent une d´fense contre
                                                           e
ces attaques.

L’utilisation de tunnels permet ´galement de parer cette attaque.
                                e




Documents
   D´scription de l’IP-Spoofing :
    e

http://www.phrack.org/show.php?p=48&a=14 (en anglais)




                                     89
9.8      NETBIOS
    NETBIOS n’est pas un protocole en lui-mˆme, c’est une interface logi-
                                                   e
cielle et un syst`me de nommage. L’interface NETBIOS est tr`s utilis´e sur
                 e                                                  e        e
les r´seaux M icrosof t c . NETBIOS permet par exemple de partager des res-
     e
sources en r´seau. Ces ressources peuvent ˆtre des imprimantes, processus ou
             e                               e
des espaces disques. Un pirate peut essayer d’acc´der ` ces ressources en s’y
                                                     e    a
connectant et tester diff´rents couples utilisateur/mot de passe. NETBIOS
                          e
n’est pas une interface tr`s s´curis´e. Elle est surtout utilis´e dans les r´seaux
                          e e       e                          e            e
M icrosof t  c pour le protocole SMB (bien qu’elle tend ` ˆtre remplac´e).
                                                             ae              e

Comment s’en prot´ger ?
                 e
   Prot´gez toutes vos ressources NETBIOS par mot de passe.
       e

Ne laissez jamais un service NETBIOS de votre r´seau en ´coute sur Internet.
                                               e        e

Autorisez seulement l’acc`s aux ressources NETBIOS au client de votre
                         e
r´seau.
 e

Documents
   Un bon guide pour la s´curisation 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 fichiers sur un r´seau. Il est
                                                             e
souvent coupl´ ` un serveur NIS pour l’authentification.
             ea

NFS a ´t´ d´velopp´ par Sun Microsystems.
      ee e        e

9.9.1    Les attaques
    Le gros probl`me avec NFS, c’est que le client fait toujours confiance 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 s’en prot´ger ?
                 e
   Utilisez la commande mount avec l’option -nosuid sur les clients, ce qui
empˆche la modification ou l’utilisation des programmes setuid sur un syst`me
    e                                                                    e
de fichier NFS.

Utilisez l’option root-squash dans le fichier ”/etc/exports” :
   [root@nowhere /root]#

Cela aura pour but d’empˆcher un client root de devenir root sur le syst`me
                         e                                              e
de fichiers NFS stock´s sur le serveur.
                    e

Prot´ger l’acc`s ` votre serveur NFS en filtrant ` partir de l’ adresse IP,
     e         e a                              a
les diff´rents clients.
       e




                                     91
9.10      NIS : Network Information Service
    NIS permet de partager, ` travers un r´seau, une base de donn´es conte-
                            a              e                     e
nant des bases d’informations pour chacune des machines constituant le
r´seau (fichier de mots de passe, listes d’hˆtes...).
 e                                         o

La base de donn´e est g´r´e par un serveur-maˆ qui la partage avec des
                 e       ee                     ıtre
serveurs-esclaves pour ˆtre accessible aux machines clientes.
                       e

Cette base de donn´es est identifi´e par un nom de domaine propre ` NIS.
                  e              e                               a

Ce service a ´t´ d´velopp´ par SUN Microsystems. Il s’accompagne souvent
             ee e        e
du service NFS pour permettre le partage de fichiers.

9.10.1     Les attaques
    Il est possible d’obtenir des nombreuses informations (notamment les fi-
chiers de mots de passe) ` partir du nom de domaine NIS.
                           a

Il est aussi possible pour un utilisateur non autoris´ d’obtenir les fichiers
                                                      e
de mots de passe ` partir d’un poste local client NIS.
                  a

Les mots de passe sont transmis en clair sur le r´seau, donc facilement inter-
                                                 e
ceptable par un sniffer.

Comment s’en prot´ger ?
                 e
   Evitez de donner le mˆme nom de domaine DNS au domaine NIS.
                        e

V´rifiez si votre version de NIS vous assure une v´rification de l’adresse du
 e                                               e
domaine depuis lequel sont lanc´es les requˆtes.
                               e           e

Supprimez la commande ”ypcat” sur les ordinateurs clients.

Prot´gez l’acc`s ` votre serveur NIS en filtrant ` partir de l’adresse IP, les
     e         e a                              a
diff´rents 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 sa-
voir 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 requˆte, portmap ne poss`de aucun m´canisme de contrˆle, il
                 e                    e        e                o
accepte donc la requˆte et la traite.
                    e

Comment s’en prot´ger ?
                 e
   Il est conseill´ de filtrer l’acc`s sur ce port grˆce ` un firewall bien confi-
                  e                e                a a
gur´ ou de d´sactiver 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 authentifications MICROSOFT. Les clients et serveurs SMB
sous Linux et d’autres OS libres utilisent SAMBA pour traiter les ´changes
                                                                  e
avec ce protocole.

SMB poss`de deux modes d’authentification : 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 propri´taire d’une ressource.
     e                e

SMB utilise aussi deux modes pour l’envoi de ces mots de passe : encrypt´s    e
ou non. C’est l` que r´side toute la faille. C’est le serveur qui donne l’infor-
               a       e
mation au client s’il supporte l’encryptage ou non.

Si un pirate parvient ` d´tecter un ´tablisement de session SMB avant cet
                      a e           e
´change, il peut tr`s bien d´tourner le flux entre les deux et demander au
e                  e        e
client d’envoyer son mot de passe en clair et le recevoir.

9.12.1     Les scans de SMB shares
   Si vous avez des ressources partag´es en acc`s libre ` tout le monde (eve-
                                       e        e       a
ryone shares), un pirate utilisera un scanner de share pour les d´tecter et s’y
                                                                 e
connecter.

Mˆme si vous prot´gez ces shares par mot de passe, certains logiciels peuvent
  e               e
tester diff´rents mots de passe en se loguant ` la ressource et ainsi tenter
          e                                   a
diff´rentes combinaisons de mots de passe (voir section 7.1).
    e

Comment s’en prot´ger ?
                 e
    Pour ˆtre sˆr que les mots de passe SMB soient envoy´ encrypt´s sur le
          e    u                                             e    e
r´seau (mˆme en cas de requˆtes ”frauduleuses”), v´rifiez que la valeur des
 e         e                   e                       e
cl´s suivantes de la base de registre sont bien ´gales ` 0 :
  e                                             e      a

SousW indowsN T 4 c

HKEYLOCALMACHINESYSTEMCurrentControlSetServicesRdrParameters

                                      94
”EnablePlainTextPassword”=dword :00000000”

SousW indowsXP c

HKEY LOCAL MACHINESYSTEMCurrentControlSetServiceslanmanworkstationparam

”enableplaintextpassword”=dword :00000000”

Prot´gez toutes vos ressources par mots de passe, ´vitez les shares en acc`s
     e                                               e                       e
libre ` tout le monde et n’oubliez jamais de choisir des mots de passe associ´s
      a                                                                      e
de la bonne fa¸on (voir section 7.1 ).
                c

Ne laissez jamais un serveur SMB en ´coute sur Internet, cela est plus que
                                         e
suicidaire. Si vous ˆtes oblig´s d’utiliser SMB ` travers Internet, utilisez les
                    e         e                 a
tunnels (voir section 4.3).

Sur votre r´seau interne, filtrez l’acc`s sur votre serveur SMB grˆce ` un
           e                          e                          a a
firewall.

Document
   La description des probl`mes de s´curit´ 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 r´seau 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 qu’il peut servir de relais
                 e
de mailing anonyme. Un pirate peut tr`s bien s’en servir pour envoyer des
                                     e
mails scabreux ` travers Internet.
               a

Un autre probl`me concerne les commandes EXPN et VRFY : ces com-
                e
mandes sont sources de nombreuses informations pour le pirate. Il convient
de les d´sactiver si le logiciel de messagerie le permet.
        e

Comment s’en prot´ger ?
                 e
  Appliquez des r`gles de firewalling assez strictes concernant le serveur
                 e
SMTP (usage r´serv´ exclusivement aux machines du r´seau interne).
             e    e                                  e

Certains serveurs SMTP empˆchent le relayage, v´rifiez si votre serveur de
                             e                 e
messagerie supporte cette option.




                                   96
9.14      SQL
   SQL est utilis´ pour la gestion de base de donn´es. Il permet l’ intercon-
                 e                                e
nexion d’une page web avec une base de donn´es ` l’aide de scripts.
                                              e a

Ce chapitre va pr´senter une attaque tr`s connue contre les serveurs SQL, le
                 e                     e
”SQL-Injection”.

9.14.1     Le ”SQL-INJECTION”
   Une requˆte SQL passe par plusieurs ´tapes avant d’aboutir.
           e                           e

Les donn´es sont envoy´es par le client par l’interm´diaire d’un script sur
         e              e                               e
le serveur web. Il s’ensuit une connexion au serveur SQL, puis l’envoi des
donn´es de la requˆte du client. La rˆquete est ex´cut´e par le serveur SQL.
      e            e                   e           e e
La r´ponse est re¸ue par le client et est affich´e sous la forme d’une page web
     e           c                            e
...

L’attaque par SQL-Injection consiste ` injecter des caract`res sp´ciaux ou
                                         a                    e    e
des chaˆınes de caract`res particuli`res dans les rˆquetes SQL du client. Ces
                      e             e              e
caract`res peuvent ˆtre interpr´t´s par le serveur SQL comme des commandes
      e             e          ee
permettant d’obtenir un acc`s sans mot de passe, de r´cup´rer des fichiers ...
                             e                         e    e

Comment s’en prot´ger ?
                 e
   Pour bien s´curiser votre serveur SQL, v´rifiez 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 prot´ger du SQL-Injection n’est pas toujours ais´, il faut surtout ˆtre
        e                                             e               e
attentif ` la programmation des scripts et aux fonctions utilis´es.
         a                                                     e

Documents
   La technique du ”SQL Injection” d´crite 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 cr´er un tunnel chiffr´ pour vos connexions, il en-
                            e                 e
crypte toutes les ´changes. SSH est donc un outil conseill´ (pour ne pas dire
                  e                                       e
indispensable) pour les transactions r´seaux.
                                      e

Malgr´ tout, SSH est sujet ` diff´rentes 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 l’´tablissement de session SSH) grˆce ` des
                                  e                                   a a
m´thodes de redirection de flux. Lorsque le client et le serveur s’´changent
  e                                                                  e
les cl´s indispensables pour l’encryptage, 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 g´n´ration al´atoire des caract`res de bourrage. Ces caract`res
                e e         e                 e                            e
sont utilis´s pour rendre la longueur du paquet multiple de 64 bits. Ces ca-
           e
ract`res n’´tant pas v´rifiables, ils peuvent ˆtre utilis´s pour modifier le bon
    e       e          e                     e          e
d´roulement de la communication. Cette faille est plus connue sous le nom
 e
de ”l’exploitation du canal cach´”.
                                 e

Ces attaques ne sont pas tr`s faciles ` impl´menter.
                           e          a     e




                                      98
9.16       TELNET
   Le service telnet (en ´coute sur le port 23) permet ` deux machines dis-
                          e                             a
tantes de communiquer. Telnet ´tablit deux terminaux virtuels pour les deux
                                 e
machines. Ce type de terminal est semblable ` une connexion s´rie. L’utili-
                                               a                e
sateur a l’impression d’ˆtre assis devant un terminal de la machine.
                        e

telnet repose sur une authentification par login et mot de passe. Malheu-
reusement, telnet poss`de le mˆme probl`me que FTP : il n’assure pas la
                        e        e           e
protection des mots de passe contre l’´coute d’un sniffer. Les mots de passe
                                        e
associ´s du login circulent en clair sur le r´seau.
      e                                      e




Comment s’en prot´ger ?
                 e
   Utilisez plutˆt SSH, qui pr´sente les mˆmes fonctionnalit´s 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 prot´ger
                                                                             e
toutes vos connexions.

Je vous conseille aussi de restreindre l’acc`s ` votre serveur telnet via un
                                            e a
firewall.




                                       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 client-
serveur. Il est donc possible ` un client connect´ sur un serveur X d’interagir
                              a                   e
avec celui-ci. Il peut agir sur les fenˆtres, capturer des ´venements X ou en
                                       e                   e
cr´er. Si un serveur X WINDOW est mal configur´, n’importe quel client
  e                                                    e
pourra s’y connecter et modifier son fonctionnement.

Comment s’en 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 l’´change de fichiers
                                                           e
entre particuliers. Ces applications sont nombreuses et diverses (eDonkey,
Kazaa ...). Malheureusement, leur utilisation dans un r´seau peut ˆtre source
                                                       e          e
de probl`mes de s´curit´ et consommer inutilement de la bande passante.
        e          e    e




Comment s’en prot`ger ?
                 e
   Sous linux, le projet P2Pwall donne des utilitaires et des documents per-
mettant d’utiliser le firewall iptables pour filtrer le trafic d’application Peer
to Peer.

Il est disponible gratuitement ` l’adresse :
                               a

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




                                     101
Chapitre 10

S´curit´ avanc´e
 e     e      e




              102
Introduction
    Si vous avez lu les pr´c´dents chapitres (et surtout le chapitre 4), vous
                           e e
poss´dez maintenant toutes les connaissances requises pour pouvoir abor-
      e
der cette partie. Elle concerne l’impl´mentation et le d´veloppement d’ou-
                                       e                   e
tils d´di´s ` la s´curit´. La premi`re section vous montrera comment ar-
        e e a     e      e           e
chitecturer son r´seau de fa¸on s´curis´e et comment bien impl´menter les
                 e            c    e     e                         e
diff´rents outils de protection. La deuxi`me section vous d´crira diff´rentes
    e                                     e                    e       e
biblioth`ques utilis´es pour le d´veloppement d’utilitaires r´seaux. Nous don-
          e         e            e                           e
nerons en exemple la programmation d’un simple scanner.




                                     103
10.1      L’architecture s´curis´e
                          e     e
   Il existe une infinit´ de fa¸on d’organiser votre r´seau mais, quand la
                          e      c                      e
s´curit´ entre en jeu, il est conseill´ d’avoir une architecture r´seau bien
 e     e                               e                          e
pens´e. Ce chapitre va donner des exemples de r´alisation d’architecture
    e                                                e
s´curis´e. Il convient d’avoir lu pr´alablement les pr´c´dents chapitres pour
 e     e                             e                e e
bien saisir la subtilit´ des architectures d´crites.
                       e                    e

Nous d´crirons diff´rents niveaux d’architecture s´curis´e. Nous partirons
        e           e                               e     e
d’une architecture peu ou pas s´curis´e pour arriver ` une architecture ultra-
                               e     e               a
s´curis´e.
 e     e

10.1.1     Le r´seau de d´part
               e         e
    Tr`s simple, une PME ou une universit´ poss`de un administrateur qui
      e                                    e      e
doit g´rer l’ensemble du parc informatique et sa conception r´seau. Il a pour
      e                                                      e
cahier des charges d’assurer une connexion Internet avec le r´seau local, un
                                                              e
serveur de messagerie et un site web.

Avec peu de moyen, l’administrateur cr´e son r´seau de la sorte :
                                      e       e




Les serveurs web, de messagerie et de partage de connexion Internet seront
assur´s par une seule machine. Cette machine est connect´e directement `
     e                                                   e               a
Internet.

Dans ce type de r´seau, il n’y aucune forme de s´curit´ : la connexion avec
                  e                             e     e
Internet n’est absolument pas s´curis´e.
                               e     e



                                     104
10.1.2     Le premier niveau de s´curit´
                                 e     e
    Apr`s un premier piratage, notre administrateur re¸oit de nouveaux cr´dits.
        e                                             c                  e
Il repense l’architecture :




Il d´diera une machine pour le serveur web, une machine pour le serveur
    e
de messagerie, deux machines pour le firewalling et un routeur pour assurer
la connexion Internet.

Les serveurs de messagerie et web sont dans une zone ext´rieure ` celle du
                                                           e       a
r´seau local. Ils constituent une zone d´militaris´e (DMZ). D´militaris´e car
 e                                      e         e           e        e
on peut s’y connecter depuis l’ext´rieur contrairement au r´seau local.
                                   e                        e

Le firewall situ´ entre le r´seau local et le routeur empˆchera toute connexion
                e          e                             e
de l’ext´rieur vers le r´seau local, et autorisera seulement les connexions de-
        e               e
puis le r´seau local sur un nombre limit´ de services.
         e                                 e

Le firewall situ´ entre le routeur et la DMZ autorisera tous les acc`s sur
                e                                                        e
les serveurs web et de messagerie (depuis le r´seau local comme depuis l’ex-
                                               e
terieur), mais en empˆchera 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 firewalls en soumettant des requˆtes
                                                                           e
sur des ports autoris´s. Il a tr`s bien pu envoyer un exploit sur un serveur
                      e          e
web ou de messagerie vuln´rable.
                             e

10.1.3     NDIS : Deuxi`me niveau de s´curisation
                       e              e
   Alors, pour se prot´ger, il intercale une sonde NDIS (voir section 4.2)
                         e
entre le firewall et le r´seau local et dans la DMZ. Si un pirate venait ` en-
                        e                                               a

                                      105
voyer des requˆtes suspectes ou des exploits connus, les NIDS pr´viendraient
               e                                                 e
du risque d’intrusion (de l’int´rieur ou de l’ext´rieur). Le manager NDIS se
                               e                 e
situera dans le r´seau local.
                 e




Il d´die toujours une seule machine pour un seul service. Il met r´gulierement
    e                                                                e
a
` jour les logiciels, et s’informe sur les nouvelles failles de s´curit´.
                                                                 e     e

Ceci constitue un niveau acceptable permettant de r´sister ` des nombreuses
                                                   e       a
attaques.

10.1.4     Les niveaux plus ´lev´s
                            e e
   Nous allons nous appuyer dans cette section sur l’architecture pr´c´dente.
                                                                    e e
Nous allons modifier certaines parties du r´seau.
                                           e
   Nous allons d’abord ins´rer une zone de d´contamination entre Inter-
                            e                   e
net et le r´seau interne. Cette zone est constitu´e d’analyseurs de contrˆle
           e                                     e                         o
de contenu, des antivirus et d’autres utilitaires surveillant le trafic r´seau
                                                                         e
(comme des NIDS). Tous les flux entrants et sortants passeront par cette
zone de d´contamination. Ces proxys applicatifs peuvent prendre la d´cision
          e                                                            e
de couper la connexion en cas d’attaques ou de simplement rejeter la de-
mande.

Cette zone est appel´e zone de d´contamination car elle permet de d´tecter
                     e            e                                e
des signatures d’attaques dans les flux de donn´es provenant d’Internet et
                                                 e
d’´viter la propagation dans le reste du r´seau.
  e                                       e



                                     106
Pour le r´seau local, nous le subdiviserons en sous-r´seaux, chaque sous-
         e                                           e
r´seau poss´dera un NDIS (sonde + manager). Ces sous-r´seaux seront reli´s
 e         e                                           e                e
entre eux par des switchs.




Ce type d’architecture est tr`s efficace pour la s´curit´, mais reste n´anmoins
                             e                  e     e              e
assez cˆuteuse et difficile ` g´rer. L’utilisation de tunnels (voir section 4.3)
       o                   a e
permet en plus d’accroˆ la sˆret´ des transactions.
                       ıtre     u e




                                     107
10.2      D´veloppez vos propres utilitaires s´curit´
           e                                  e     e
    Ce chapitre va pr´senter diff´rents outils pour d´velopper vos propres uti-
                      e         e                   e
litaires de s´curit´. Une connaissance du language C est requise. Une solide
             e     e
connaissance r´seau est aussi demand´e.
                e                      e

Le syst`me d’exploitation utilis´ est Linux avec un compilateur GCC. Nous
        e                       e
allons ´tudier 2 biblioth`ques permettant la cr´ation d’utilitaires r´seaux :
       e                 e                      e                    e
libnet et libpcap.

La premi`re, Libnet, est d´velopp´e par Mike D. Schiffman. C’est une bi-
          e                e       e
blioth`que opensource (donc gratuite). Libnet permet de fabriquer et d’in-
      e
jecter facilement des paquets sur un r´seau. Un grand nombre de protocoles
                                      e
est support´.e

Note importante : La version de Libnet d´crite est la version 1.1. De grosses
                                           e
modifications faites sur le code de la version 1.1 la rend incompatible avec
les versions de biblioth`ques ant´rieures.
                        e        e

La deuxi`me est Libpcap. Elle permet de capturer les paquets transitant sur
         e
le r´seau. Cette biblioth`que est maintenue par l’ ´quipe de d´veloppement
    e                    e                         e          e
de tcpdump (pr´sent´ dans le chapitre 5.4).
                e     e

Libnet est t´l´chargeable ` cette adresse :
            ee            a

www.packetfactory.net

Libpcap est t´l´chargeable ` cette adresse :
             ee            a

www.tcpdump.org

Pour donner une description de ces biblioth`ques, nous allons ´tudier le
                                               e                    e
d´veloppement d’un scanner de base. Ce scanner listera les ports TCP ou-
  e
verts sur une machine avec une m´thode de scan en port demi-ouvert (SYN
                                    e
scan, voir section 2.1). L’injection des paquets sera r´alis´e grˆce ` Libnet,
                                                       e e       a a
la r´ception des r´ponses grˆce ` Libpcap.
    e             e          a a

10.2.1     Le programme
   Le programme ”scanner” sera appel´ en mode console et recevra deux
                                          e
arguments : l’interface r´seau d’utilisation et l’adresse IP de la machine `
                         e                                                 a

                                     108
scanner. Il affichera la liste des ports ouverts et se terminera.

Exemple d’utilisation :

[root@nowhere.net /root]#./scanner -i eth0 -c 192.168.1.2

Le   port   21 est ouvert
Le   port   22 est ouvert
Le   port   1111 est ouvert
Le   port   1024 est ouvert

Mais int´ressons-nous ` son d´veloppement.
        e             a      e

Un petit rappel th´orique :
                  e

Le scan en port demi-ouvert consiste ` envoyer un paquet TCP avec le flag
                                     a
SYN arm´ sur un port pr´cis. Si ce port est ouvert, on recevra en r´ponse un
         e             e                                           e
paquet TCP avec le couple SYN/ACK arm´.     e

Le programme recevra en argument, l’IP de la machine ` scanner et le nom
                                                     a
de l’interface r´seau (par exemple ”eth0”).
                e

ATTENTION ! Le but de ce chapitre est de pr´senter les librairies libnet
                                                  e
et libpcap et certaines de leurs fonctions les plus utiles d’une mani`re suc-
                                                                      e
cinte. Ce chapitre n’est en aucun cas un cours de programmation r´seau.
                                                                    e

Principe g´n´ral de fonctionnement :
          e e

Le principe de fonctionnemt du programme est simple ; il sera constitu´ de   e
deux fonctions : la premi`re permettra d’envoyer les paquets (sur les 16000
                           e
premiers ports) et la deuxi`me de les recevoir. Ces deux fonctions seront ac-
                             e
tiv´es en parall`le dans deux processus distincts (grˆce ` l’appel de la fonction
   e            e                                    a a
fork()).

Je pr´senterai les deux fonctions utilis´es 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 r´seau. 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 r´seau et renvoie un descripteur de type
                                    e
pcap t sur cette interface r´seau en ´coute.
                            e         e

La param`tre *device est un pointeur sur une chaˆ de caract`res conte-
          e                                         ıne          e
nant le nom de l’interface r´seau utilis´e (par exemple ”eth0”).
                            e           e

Le param`tre snaplen repr´sente la taille maximale (en octet) d’un paquet
          e              e
intercept´ (max=65535).
         e

Le param`tre promisc contrˆle le fonctionnement de la carte r´seau. S’il est
          e                  o                                 e
´gal ` 1, la carte est en mode transparent, c’est ` dire qu’elle intercepte
e    a                                              a
tous les paquets (mˆme ceux qui ne lui sont pas destin´s). Si cette valeur est
                    e                                  e
diff´rente de 1, la carte n’acceptera que les paquets lui ´tant destin´s. Pour
   e                                                     e           e
notre programme, la carte sera en mode transparent donc promisc sera ´gal e
a
` 1.

Le param`tre to ms sp´cifie le d´lai (en millisecondes) d’interception de pa-
         e             e         e
quets. Lorsque ce d´lai 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 d’erreur en cas de mauvaise ou non ex´cution du pro-
                                                          e
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 acc´der ` la carte r´seau. Elle renvoie chaque paquet intercept´.
            e    a            e                                          e
C’est une fonction bloquante.

Ces deux fonctions sont toujours utilis´es en s´rie, la pcap open live initialise
                                       e       e
la carte r´seau et renvoie un descripteur de fichier, ensuite ce descripteur de
          e
fichier 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 utilis´e par les fonctions de libpcap (elle contiendra notre pa-
                 e

                                      110
quet*/
struct pcap pkthdr Header ;


    /*Descripteur repr´sentant l’interface r´seau (retourn´ par
                      e                     e             e
la fonction pcap open live()*/
pcap t *Descr ;


    /*Structure pour l’en tˆte ETHERNET*/
                           e
struct ethhdr *EtherHdr ;


    /*Structure pour l’en tˆte IP*/
                           e
struct ip *IpHdr ;


    /*Structure pour l’en tˆte TCP*/
                           e
struct tcphdr *TcpHdr ;


   /*Tampon pour retour d’erreur*/
char ErrBuf[LIBNET ERRBUF SIZE] ;


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


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


    /* Initialisation pour les fonctions de
libnet (obtention d’un descripteur)*/


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


   /*Descripteur ”Descr” sur l’interface r´seau en ´coute*/
                                          e        e

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


   while(1) /*On recup´re le paquet (il est point´ par la variable ”Pa-
                      e                          e
cket”)*/


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


   /*On convertit le paquet pour analyser l’en tˆte ETHERNET*/
                                                e


   EtherHdr = (struct ethhdr * ) (Packet) ;


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


   if(ntohs(EtherHdr-¿h proto)==ETH P IP)

/*On convertit le paquet pour analyser l’en tˆte IP*/
                                             e


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


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


   if(IpHdr-¿ip p==IPPROTO TCP)

TcpHdr = (struct tcphdr * ) ( Packet + ETH HLEN +
4 * (IpHdr-¿ip hl)) ;


   /* Cela sert ` verifier que nous avons bien envoy´ le paquet et qu’il
                a                                  e
provient bien de la machine ”scann´e”. Ceci se base sur l’analyse des
                                   e
adresses IP */

                                    112
if(


   (IpHdr-¿ip src.s addr==IP Cible) &&
(IpHdr-¿ip dst.s addr== libnet get ipaddr4(l)))

/*Pour verifier que le port d’envoi correspond au mˆme que le notre*/
                                                  e
if(ntohs(TcpHdr-¿dest)==PORT SOURCE)



    /*Si les flags SYN et ACK sont arm´s, 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 d’injecter les paquets sur le r´seau. Pour
                                                              e
cela, elle utilise la librairie Libnet.

Nous allons utiliser diff´rentes fonctions de la librairie Libnet.
                        e

La premi`re est la fonction libnet t *libnet init(int injection type, char *de-
          e
vice, char *err buf ).

Cette fonction permet d’initialiser une interface d’injection des paquets. Elle
traite trois arguments :


   Le premier injection type d´finit le type d’interface (niveau ethernet, IP
                              e
ou TCP). Pour notre programme, une injection au niveau IP suffira (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 l’interface r´seau qui sera sollicit´e (ex : eth0), la valeur
                                 e                      e
NULL conviendra car libnet choisira automatiquement une carte r´seau.  e

Le dernier argument *err buf est utilis´ pour les messages d’erreur (comme
                                        e
libpcap). Elle renvoie un pointeur sur l’interface d’injection de type libnet t.

Les fonctions libnet ptag t libnet build tcp(...) et libnet autobuild ipv4(...) sont
utilis´es pour construire les en-tˆtes TCP et IP. Elles prennent comme argu-
      e                           e
ments les diff´rentes valeurs constituants les en-tˆtes TCP et IP (num´ro de
              e                                        e                    e
port, de s´quences ... pour TCP, adresses IP, types de protocoles pour IP).
           e
Elle renvoient toutes les deux un descripteur de type libnet ptag t, ces fonc-
tions doivent toujours respecter l’ordre TCP puis IP (sens couche application
vers couche r´seau ou physique).
              e
Ces fonctions prenent en argument le pointeur sur l’interface d’injection
(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) d´truit l’interface cr´e 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 l’en tˆte TCP*/
                           e


     Tag=libnet build tcp(
PORT SOURCE, /*Port Source*/
port dest, /*Port destination*/
0, /*N◦ S´quence*/
          e
       ◦
0, /*N Acquitement*/
TH SYN, /*Demande de connexions*/
4096, /*Taille de fenˆtre*/
                      e
0, /*Somme de contrˆle*/
                      o
0, /*Pointeur d’urgence*/
LIBNET TCP H, /*Taille en tˆte*/
                               e
(u char *) (NULL),/*Pointeur vers les donn´es*/
                                          e
0, /*Taille des donn´es*/
                     e
l,
0) ;


   /*Pour construire l’en tˆte 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 d´truire 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 Re-
ceptionPaquet puis ex´cutera 16000 fois la boucle d’envoi de paquets (16000
                      e
ports).Elle attendra encore 5 secondes pour le traitement des r´ponses 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 d’it´ration*/
                   e
int i ;


    /*Pour stocker l’adresse IP*/
u int32 t IP Cible ;


    /*Variable qui va re¸evoir 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 l’interface*/
case ’i’ :
Device = (char *) (malloc(strlen(optarg)*sizeof(char))) ;
strncpy(Device,optarg,strlen(optarg)) ;
break ;


   /*Pour l’adresse IP de la machine cible*/
case ’c’ :
IP Cible = inet addr(optarg) ;
break ;

    default :
printf(”
nscanner -i interface -c IP Cible
n”) ;
return 0 ;




   /*On lan¸e le processus enfant (r´cuperation 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 ;i¡16000 ;i++)

EnvoiPaquet(IP Cible,i) ;



    /*On d´truit 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 r´gulierement
                                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 fran¸ais disponibles en kiosque, je vous conseille d’acheter
                       c
le magazine MISC. Je ne suis pas d´pendant de MISC, mais c’est le seul
                                      e

                                     120
magazine enti`rement d´di´ ` la s´curit´ apportant des r´ponses 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 num´ros peuvent ˆtre aussi command´s sur le site de MISC,
                 e             e                  e
9 num´ros ayant ´t´ sortis jusqu’` septembre 2003. Chaque num´ro consti-
      e          ee              a                           e
tue une tr`s bonne source d’informations.
          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 n’aurait 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                                                                       r´seaux . . . . . . . . . . . . . . . . . . .
                                                                         e                                                     54
antisniff . . . . . . . . . . . . . . . . . . . . . . 47             d´synchronisation TCP . . . . . . .
                                                                     e                                                         65
antivirus . . . . . . . . . . . . . . . . . . . . . 42              d´tourment de flux . . . . . . . . . . .
                                                                     e                                                         64
architecture . . . . . . . . . . . . . . . . . 104                  DHCP . . . . . . . . . . . . . . . . . . . . . . .         71
ARP-Poisoning . . . . . . . . . . . . . . . 64                          ´puisement de ressources .
                                                                        e                                                      71
arpwatch . . . . . . . . . . . . . . . . . . . . . 65                   faux serveurs . . . . . . . . . . . . .                71
                                                                    dictionnaire
B                                                                       attaque . . . . . . . . . . . . . . . . . . .          59
backdoors . . . . . . . . . . . . . . . . . . . .        43         DNS . . . . . . . . . . . . . . . . . . . . . . . . .      73
    a
    ` distance . . . . . . . . . . . . . . . .           43             cache poisoning . . . . . . . . . . .                  74
    logicielles . . . . . . . . . . . . . . . . .        43             spoofing . . . . . . . . . . . . . . . . . .            73
banni`res . . . . . . . . . . . . . . . . . . . . .
      e                                                  23         dsniff . . . . . . . . . . . . . . . . . . . . . . . . .    47
bibliotheques partag´es . . . . . . .
                                 e                       45
BIOS . . . . . . . . . . . . . . . . . . . . . . . . .   11         E
bogues . . . . . . . . . . . . . . . . . . . . . . .     26         encapsulation . . . . . . . . . . . . . . . . .            68
bombes e-mail . . . . . . . . . . . . . . . .            56         ethereal . . . . . . . . . . . . . . . . . . . . . .       47
bombes logiques . . . . . . . . . . . . . .              53         exploits . . . . . . . . . . . . . . . . . . . . . .       27
boot . . . . . . . . . . . . . . . . . . . . . . . . .   10         EXPN . . . . . . . . . . . . . . . . . . . . . . . .       96
    disquette . . . . . . . . . . . . . . . . .          10
brute forcing . . . . . . . . . . . . . . . . .          59         F
                                                                    faille . . . . . . . . . . . . . . . . . . . . . . . . .   22
C                                                                   failsafe . . . . . . . . . . . . . . . . . . . . . . .     10
Cain . . . . . . . . . . . . . . . . . . . . . . . . .   60         FAT . . . . . . . . . . . . . . . . . . . . . . . . . .    10
carte r´seau
       e                                                            FINGER . . . . . . . . . . . . . . . . . . . . .           77
    transparent . . . . . . . . . . . . . . .            47         firewalking . . . . . . . . . . . . . . . . . . .           32
Chevaux de Troie . . . . . . . . . . . . .               42         firewall . . . . . . . . . . . . . . . . . . . . . . .      31
chroot . . . . . . . . . . . . . . . . . . . . . . . .   39              attaques . . . . . . . . . . . . . . . . . .          31
configuration . . . . . . . . . . . . . . . . .           31         fragmentation de paquets . . . . .                         55
    mauvaise . . . . . . . . . . . . . . . . .           26         FTP . . . . . . . . . . . . . . . . . . . . . . . . .      79
                                                                         attaque par rebonds . . . . . .                       80
D                                                                        serveur anonyme . . . . . . . . .                     79
d´nis de services
 e
    applicatifs . . . . . . . . . . . . . . . . 26                  H
    distribu´s . . . . . . . . . . . . . . . . . 56
            e                                                       HTTP . . . . . . . . . . . . . . . . . . . . . . . . 81


                                                              123
I                                                                    R
IDENT . . . . . . . . . . . . . . . . . . . . . . .       83         r´seau
                                                                      e
IDS . . . . . . . . . . . . . . . . . . . . . . . . . .   34             priv´ virtuel . . . . . . . . . . . . . . 36
                                                                             e
installations . . . . . . . . . . . . . . . . . .         26         rootkit . . . . . . . . . . . . . . . . . . . . . . . 45
IP spoofing . . . . . . . . . . . . . . . . . . .          84
IpvSec . . . . . . . . . . . . . . . . . . . . 36,        48         S
                                                                     scan . . . . . . . . . . . . . . . . . . . . . . . . . .   14
J                                                                        furtifs . . . . . . . . . . . . . . . . . . . .        16
John The Ripper . . . . . . . . . . . . . 59                             vanilla TCP . . . . . . . . . . . . . .                16
                                                                     scanner . . . . . . . . . . . . . . . . . . . . . . .      14
K                                                                    scripts . . . . . . . . . . . . . . . . . . . . . . . .    27
Knoopix . . . . . . . . . . . . . . . . . . . . . . 11               SHTTP . . . . . . . . . . . . . . . . . . . . . .          82
L                                                                    signatures . . . . . . . . . . . . . . . . . . . .         42
libnet . . . . . . . . . . . . . . . . . . . . . . . 108             SMB . . . . . . . . . . . . . . . . . . . . . . . . .      94
libpcap . . . . . . . . . . . . . . . . . . . . . . 108                  scans de shares . . . . . . . . . . .                  94
LKM . . . . . . . . . . . . . . . . . . . . . . . . . 45             SMTP . . . . . . . . . . . . . . . . . . . . . . . .       96
LophtCrack . . . . . . . . . . . . . . . . . . 60                    smurfing . . . . . . . . . . . . . . . . . . . . . .        55
                                                                     sniffer . . . . . . . . . . . . . . . . . . . . . . . .     47
M                                                                    snort . . . . . . . . . . . . . . . . . . . . . . . . .    35
man in the middle . . . . . . . . . . . .                 67         SQL . . . . . . . . . . . . . . . . . . . . . . . . . .    97
MBR . . . . . . . . . . . . . . . . . . . . . . . . .     51             injection . . . . . . . . . . . . . . . . . .          97
mot de passe                                                         SSH . . . . . . . . . . . . . . . . . . . . . . . . . .    98
   attaques . . . . . . . . . . . . . . . . . .           59         SSL . . . . . . . . . . . . . . . . . . . . . . . . . .    82
   interception . . . . . . . . . . . . . .               47         SYN flood . . . . . . . . . . . . . . . . . . . .           54

N                                                                    T
NETBIOS . . . . . . . . . . . . . . . . . . . .           90         tcpdump . . . . . . . . . . . . . . . . . . . . .          47
Netcat . . . . . . . . . . . . . . . . . . . . . . .      22         TELNET . . . . . . . . . . . . . . . . . . . . .           99
NFS . . . . . . . . . . . . . . . . . . . . . . . . . .   91         traceroute . . . . . . . . . . . . . . . . . . . .         32
Nimda . . . . . . . . . . . . . . . . . . . . . . .       52         trappe . . . . . . . . . . . . . . . . . . . . . . . .     43
NIS . . . . . . . . . . . . . . . . . . . . . . . . . .   92         Trinux . . . . . . . . . . . . . . . . . . . . . . .       10
Nmap . . . . . . . . . . . . . . . . . . . . . . . .      14         tunnel . . . . . . . . . . . . . . . . . . . . . . . .     36
NTFS . . . . . . . . . . . . . . . . . . . . . . . .      10
NTFS2DOS . . . . . . . . . . . . . . . . . .              10         U
                                                                     UDP Flood . . . . . . . . . . . . . . . . . . . 54
O                                                                    UML . . . . . . . . . . . . . . . . . . . . . . . . . 39
outrepassements de droits . . . . 27                                 User Mode Linux . . . . . . . . . . . . . 39

P                                                                    V
ping of death . . . . . . . . . . . . . . . . . 55                   vers . . . . . . . . . . . . . . . . . . . . . . . . . . 52
PORTMAP . . . . . . . . . . . . . . . . . . 93                       virus . . . . . . . . . . . . . . . . . . . . . . . . . 51
prelude . . . . . . . . . . . . . . . . . . . . . . . 34                 furtifs . . . . . . . . . . . . . . . . . . . . 51

                                                               124
polymorphes . . . . . . . . . . . . . . 51
VPN . . . . . . . . . . . . . . . . . . . . . . . . . 36
VRFY . . . . . . . . . . . . . . . . . . . . . . . 96

W
Winux . . . . . . . . . . . . . . . . . . . . . . . 51

X
XWINDOW . . . . . . . . . . . . . . . . . 100




                                                           125

Guide de sécurité_réseau

  • 1.
    Un petit guidepour la s´curit´ e e Alexandre Viardin (Mirabellug) copyright Alexandre Viardin Novembre 2003
  • 2.
    Table des mati`res e 1 S´curisation de base e 8 1.1 Premier conseil : Verrouillez les stations . . . . . . . . . . . . . 10 1.2 Pour Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3 Pour Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4 Le lecteur de disquettes . . . . . . . . . . . . . . . . . . . . . . 10 1.5 Le lecteur de CDROM . . . . . . . . . . . . . . . . . . . . . . 11 1.6 N’oubliez pas le mot de passe pour le BIOS . . . . . . . . . . 11 2 La collecte d’informations 12 2.1 Le Scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.1.1 Qu’est ce qu’un scanner ? . . . . . . . . . . . . . . . . . 14 2.1.2 Comment marche Nmap ? . . . . . . . . . . . . . . . . 16 2.1.3 La d´termination du syst`me d’exploitation avec e e Nmap 18 2.1.4 Quel est l’intˆret d’utiliser Nmap ? . . . . . . . e . . . . 19 2.2 Identifier les versions des logiciels en ´coute . . . . . . e . . . . 21 2.2.1 Netcat . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3 Les failles applicatives 24 3.1 Les installations par d´faut . . . . . . . e . . . . . . . . . . . . . 26 3.2 Les mauvaises configurations . . . . . . . . . . . . . . . . . . . 26 3.3 Les bogues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3.1 Des d´nis de services applicatifs e . . . . . . . . . . . . . 26 3.3.2 Outrepassement de droits . . . . . . . . . . . . . . . . 27 3.3.3 Les scripts . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.4 Les exploits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4 Les outils indispensables pour la protection 29 4.1 Le firewall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.1.1 La configuration . . . . . . . . . . . . . . . . . . . . . . 31 4.1.2 Les attaques contre les firewalls . . . . . . . . . . . . . 31 4.2 Les NIDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 1
  • 3.
    4.2.1 Prelude .. . . . . . . . . . . . . . . . . . . . . . . . . 34 4.2.2 Snort . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.3 Le tunneling . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.3.1 Le protocole AH . . . . . . . . . . . . . . . . . . . . . 36 4.3.2 Le protocole ESP . . . . . . . . . . . . . . . . . . . . . 36 4.3.3 Le protocole IPcomp . . . . . . . . . . . . . . . . . . . 36 4.3.4 Le protocole IKE . . . . . . . . . . . . . . . . . . . . . 36 4.3.5 Les deux modes de fonctionnements de IPsec . . . . . . 37 4.3.6 Les limitations d’IPsec . . . . . . . . . . . . . . . . . . 37 4.4 Nessus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.4.1 Pour obtenir tout sur Nessus . . . . . . . . . . . . . . . 38 4.5 User Mode Linux - UML . . . . . . . . . . . . . . . . . . . . 39 5 Surveillance - Dissimulation - Maintien d’acc`s e 40 5.1 Les chevaux de Troie . . . . . . . . . . . . . . . . . . . . . . . 42 5.2 Les backdoors . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.2.1 Les backdoors pr´sentes dans les logiciels. . . . . e . . . 43 5.2.2 Les backdoors d´di´es aux connexions ` distance . e e a . . . 43 5.3 Les Rootkits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.4 L’interception des mots de passe en r´seau. . . . . . . . . e . . . 47 6 Dispositifs destructeurs 49 6.1 Le virus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.2 Les vers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 6.3 Les bombes logiques . . . . . . . . . . . . . . . . . . . . . . . 53 6.4 Les attaques par d´ni de services . . . e . . . . . . . . . . . . . 54 6.4.1 Le SYN flood . . . . . . . . . . . . . . . . . . . . . . . 54 6.4.2 L’UDP Flood . . . . . . . . . . . . . . . . . . . . . . . 54 6.4.3 Fragmentation de paquets . . . . . . . . . . . . . . . . 55 6.4.4 Ping of death . . . . . . . . . . . . . . . . . . . . . . . 55 6.4.5 Attaque par r´flexion : Smurfing e . . . . . . . . . . . . . 55 6.4.6 D´nis de services distribu´s . . e e . . . . . . . . . . . . . 56 6.4.7 Bombes e-mail . . . . . . . . . . . . . . . . . . . . . . 56 7 S´curisation des mots de passe e 57 7.1 L’attaque par dictionnaire . . . . . . . . . . . . . . . . . . . . 59 7.2 Le brute forcing . . . . . . . . . . . . . . . . . . . . . . . . . . 59 7.3 Tester la fiabilit´ de vos mots de e passe ! . . . . . . . . . . . . . 59 7.4 Choisir le bon mot de passe . . . . . . . . . . . . . . . . . . . 60 7.5 Pr´venir l’utilisateur . . . . . . e . . . . . . . . . . . . . . . . . 61 2
  • 4.
    8 La basedes attaques r´seaux e 62 8.1 D´tournement de flux . . . . . . . . . . . . . e . . . . . . . . . . 64 8.1.1 ARP-Poisoning : . . . . . . . . . . . . . . . . . . . . . 64 8.1.2 D´synchronisation TCP : . . . . . . . e . . . . . . . . . . 65 8.2 MIM - Man in the Middle . . . . . . . . . . . . . . . . . . . . 67 8.3 Encapsulation d’IP dans d’autres protocoles. . . . . . . . . . . 68 9 Description d’attaques sur diff´rents protocoles e 69 9.1 DHCP : Dynamic Host Configuration Protocol . . . . . . . . . 71 9.1.1 Attaque par ´puisement de ressources . . . e . . . . . . . 71 9.1.2 Faux serveurs DHCP . . . . . . . . . . . . . . . . . . . 71 9.2 DNS : Domain Name Server . . . . . . . . . . . . . . . . . . . 73 9.2.1 Le DNS ID spoofing . . . . . . . . . . . . . . . . . . . 73 9.2.2 Le DNS cache poisoning . . . . . . . . . . . . . . . . . 74 9.3 FINGER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 9.4 FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 9.4.1 Le serveur FTP anonyme . . . . . . . . . . . . . . . . . 79 9.5 HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 9.5.1 Les serveurs trop bavards . . . . . . . . . . . . . . . . 81 9.5.2 Vuln´rabilit´s li´es aux applications web . e e e . . . . . . . 81 9.6 IDENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 9.7 IP et l’IP-Spoofing . . . . . . . . . . . . . . . . . . . . . . . . 84 9.7.1 Un peu de th´orie ... . . . . . . . . . . . . e . . . . . . . 84 9.7.2 Pr´venir l’IP spoofing grˆce ` Nmap . . . e a a . . . . . . . 87 9.8 NETBIOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 9.9 NFS : Network File System . . . . . . . . . . . . . . . . . . . 91 9.9.1 Les attaques . . . . . . . . . . . . . . . . . . . . . . . . 91 9.10 NIS : Network Information Service . . . . . . . . . . . . . . . 92 9.10.1 Les attaques . . . . . . . . . . . . . . . . . . . . . . . . 92 9.11 PORTMAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 9.12 Le protocole SMB . . . . . . . . . . . . . . . . . . . . . . . . . 94 9.12.1 Les scans de SMB shares . . . . . . . . . . . . . . . . . 94 9.13 SMTP - Les services de messagerie . . . . . . . . . . . . . . . 96 9.14 SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 9.14.1 Le ”SQL-INJECTION” . . . . . . . . . . . . . . . . . . 97 9.15 SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 9.16 TELNET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 9.17 XWINDOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 9.17.1 Les attaques . . . . . . . . . . . . . . . . . . . . . . . . 100 9.18 Peer To Peer (eDonkey, Kazaa ...) . . . . . . . . . . . . . . . . 101 3
  • 5.
    10 S´curit´ avanc´e e e e 102 10.1 L’architecture s´curis´e . . . . . . . . . . . . . . . . . . . . . e e . 104 10.1.1 Le r´seau de d´part . . . . . . . . . . . . . . . . . . . e e . 104 10.1.2 Le premier niveau de s´curit´ . . . . . . . . . . . . . e e . 105 10.1.3 NDIS : Deuxi`me niveau de s´curisation . . . . . . . e e . 105 10.1.4 Les niveaux plus ´lev´s . . . . . . . . . . . . . . . . e e . 106 10.2 D´veloppez vos propres utilitaires s´curit´ . . . . . . . . . . e e e . 108 10.2.1 Le programme . . . . . . . . . . . . . . . . . . . . . . . 108 10.2.2 Comment obtenir et compiler le source entier du pro- gramme ? . . . . . . . . . . . . . . . . . . . . . . . . . 118 10.2.3 Documents . . . . . . . . . . . . . . . . . . . . . . . . 118 11 Annexes 119 11.1 Les sites et revues ` consulter r´gulierement . . . . . . . . . . 120 a e 11.2 Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . 122 4
  • 6.
    Avant-propos ”Qui connaˆt l’autre et se connaˆt, en cent combats ne sera point ı ı d´fait ; qui ne connaˆ l’autre mais se connaˆt, sera vainqueur une e ıt ı fois sur deux ; qui ne connaˆ pas plus l’autre qu’il ne se connaˆ ıt ıt sera toujours d´fait.” e L’art de la guerre - Sun Tzu Ce guide a ´t´ r´alis´ suite ` un audit de s´curit´ que j’ai r´alis´ pour ee e e a e e e e mon ´cole et aux deux conf´rences sur la s´curit´ r´seau pr´sent´es au groupe e e e e e e e d’utilisateurs Linux de NANCY (coucou le Mirabellug). Je ne suis pas sp´cialiste e en s´curit´ r´seau ; j’ai juste ´crit ce guide dans le but de donner ` des ad- e e e e a ministrateurs ou ` des particuliers, un descriptif technique et un manuel a d’autoformation ` la s´curit´ r´seau. a e e e La plupart des administrateurs ne sont pas sp´cialistes en securit´, et peuvent e e ˆtre perdus devant un probl`me de ce type. Le masse d’informations dispo- e e nible sur Internet est parfois confuse, dense ou tr`s technique. Ce guide sert e de point de d´part et d’introduction ` la s´curit´. e a e e Il a ´t´ pens´ dans un but ´volutif. Si vous voulez participer en ´crivant ou en ee e e e compl´tant des chapitres, n’h´sitez pas ` me contacter sur guidesecu@free.fr. e e a Le principe est simple : une description assez succinte sur une attaque et en- suite une description compl`te des m´thodes de protection. Vos exp´riences e e e personnelles et vos remarques sont aussi les bienvenues. Evidemment, ce guide est sous license GPL donc gratuit. La seule r´compense e que pourront recevoir les ´ventuels participants est la mention de leurs noms e en tant que collaborateurs. Ce guide se compose d’une dizaines de chapitres. 5
  • 7.
    Chaque chapitre comporteune introduction. La plupart du temps, un cha- pitre contient au moins une section divis´e en diff´rentes sous sections : une e e pour la description d’un probl`me de s´curit´ particulier, une deuxi`me pour e e e e d´crire les diff´rents moyens de s’en prot´ger et une troisi`me pour donner e e e e diff´rents liens vers des documents plus pr´cis sur le sujet. e e Le premier chapitre montre comment s´curiser une station pour ´viter toutes e e tentatives de piratage par un acc`s physique. e Le deuxi`me chapitre d´crit le fonctionnement des outils de r´cup´ration e e e e d’informations ` distance, notamment les scanners. Il montre l’utilit´ qu’ils a e ont pour vous prot´ger. e Le troisi`me chapitre introduit la notion de failles. e Le quatri`me chapitre introduit diff´rentes notions sur les firewalls et les e e principaux autres syst`mes de protection logiciels. e Le cinqui`me chapitre explique comment un pirate dissimule sa pr´sence e e sur un syst`me. e Le sixi`me chapitre s’int´resse aux dispositifs destructeurs (virus, bombes e e mails ...). Le septi`me chapitre d´crit les attaques sur les fichiers de mots de passe. e e Les huiti`me et neuvi`me chapitres traitent de diff´rents probl`mes pos´s e e e e e par certains protocoles r´seaux. e Le dixi`me chapitre est divis´ en deux parties : la premi`re explique comment e e e architecturer son r´seau de fa¸on s´curis´e. La deuxi`me partie est un cours e c e e e sur le developpement d’outils d´di´s uniquement ` la s´curit´. e e a e e O` trouver ce guide ? u C’est tr`s simple, il y a deux adresses : e Le site officiel : http://guidesecu.ifrance.com/guide/guidesecu.pdf 6
  • 8.
    Sur le sitedu Mirabellug : http://www.mirabellug.org/docs/securite/guidesecu.pdf Les OS vis´s : e La majorit´ des programmes d´fensifs utilis´s et d´crits dans ce guide sont e e e e disponibles sous LINUX. Je n’oublierai pas de parler de la s´curit´ pour les e e produits Microsoft. Cependant, Linux poss`de une certaine avance sur Mi- e crosoft dans le domaine de la s´curit´ (notamment par un plus grand nombre e e de logiciels performants et gratuits). Les autres OS comme SunOS, VMS, MacOS, Plan9, Novell,... seront pass´s e sous silence mais si vous voulez voir des chapitres pr´cis sur certains OS ap- e paraitre, contactez moi par mail. Bonne Lecture ! 7
  • 9.
  • 10.
    Introduction Le but de ce chapitre est de donner diff´rentes m´thodes pour s´curiser e e e physiquement une machine. Il faut savoir qu’une grande partie des piratages sont lanc´s par des pirates ayant un acc`s physique sur un r´seau. e e e Dans ce chapitre, nous ne nous focaliserons pas sur un serveur d´di´ ` un e e a service particulier, mais plutˆt sur les machines constituant les clients. Ces o machines sont en acc`s libre dans une salle non surveill´e. e e L’objectif est d’empˆcher une personne mal intentionn´e d’obtenir les acc`s e e e adiministrateur sur la machine qu’elle utilise. La plupart des utilitaires de pi- ratage ont besoin des acc`s administrateur pour fonctionner ; sans ces acc`s, e e la capacit´ de nuire est fortement diminu´e. e e 9
  • 11.
    1.1 Premier conseil : Verrouillez les stations N’h´sitez pas ` poser un cadenas sur les tours des machines, cela empˆchera e a e tout d’abord le vol de mat´riel, mais cela ´vitera aussi d’avoir des disques e e durs mont´s en ”secret” avec toute une panoplie d’utilitaires install´s dessus. e e Le conseil ` suivre imp´rativement (et vous comprendrez pourquoi en li- a e sant les deux chapitres suivants) : il faut d´sactiver le boot sur le lecteur de e disquette et sur le lecteur de CDROM. 1.2 Pour Linux Evitez d’avoir l’option ”failsafe” au d´marrage propos´ par Lilo. Cette e e option peut permettre d’obtenir les acc`s root (sans mot de passe) pour la e maintenance du syst`me. e 1.3 Pour Windows Le syst`me de fichier NTFS permet une s´curisation accrue par rapport e e aux syst`mes de fichier FAT et FAT 32. Si vos machines W indows c fonc- e tionnent avec de la FAT, passez en NTFS. Je d´conseille fortement d’utiliser Windows 95, 98 et Me, le niveau de s´curit´ e e e offert par ces OS en natif n’´tant 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 s’installant en RAM grˆce ` un nombre limit´ de disquettes) donne la a a e possibilit´ de monter tous les syst`mes de fichiers pr´sents sur le(s) disque(s) e e e dur(s) de la machine et d’en modifier le(s) contenu(s). De plus, Trinux est livr´ avec un panel assez impressionnant d’utilitaires exclusivement d´di´s ` e e e a la s´curit´. e e Le programme NTFS2DOS (sous DOS) permet de changer les partitions NTFS en partitions FAT et de pouvoir acc´der ` leurs contenus sans restric- e a tions. NTFS2DOS est lanc´ depuis une disquette de boot DOS. e 10
  • 12.
    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 d’utilitaires divers) peuvent ˆtre utilis´s pour monter les diff´rents syst`mes de fichiers pr´sents sur le(s) e e e e e disque(s) dur(s). 1.6 N’oubliez pas le mot de passe pour le BIOS N’oubliez de prot´ger l’acc`s du BIOS par un mot de passe ! Attention e e certains BIOS peuvent comporter des failles logicielles permettant d’outre- passer ces protections. Encore une fois, il ne faut pas oublier de cadenasser les tours, afin d’´viter ` des utilisateurs (encore) mal intentionn´s de retirer e a e la pile du BIOS et d’outrepasser la protection par mot de passe. 11
  • 13.
    Chapitre 2 La collected’informations 12
  • 14.
    Introduction Dans ce chapitre, nous allons d´crire le fonctionnement des outils permet- e tant de r´cup´rer des informations ` distance. Ces utilitaires sont fr´quemment e e a e utilis´s par les pirates pour pr´parer de futures attaques. C’est pour cette e e raison qu’il est indispensable de les d´crire d`s le d´but. Vous apprendrez e e e ´galement ` les utiliser pour votre propre protection. e a 13
  • 15.
    2.1 Le Scanner L’objectif du pirate est de rep´rer les serveurs offrant des services parti- e culiers et de les identifier. Pour obtenir ces informations, le pirate va utiliser un scanner. Le but de ce section est de pr´senter des m´thodes de protections contre le e e scan (en utilisant des r`gles de firewalling sous iptables/ipchains par exemple) e et de savoir utiliser un scanner pour anticiper les futures attaques. Le scanner d´crit dans ce chapitre est Nmap1 , un des scanners les plus utilis´s e e et un des plus performants. Je d´crirai dans une premi`re partie ce qu’est un scanner. Ensuite, je me e e focaliserai sur Nmap et je le pr´senterai d’un point de vue un peu plus tech- e nique, permettant de comprendre les diff´rentes m´thodes 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 Qu’est ce qu’un scanner ? C’est tr`s simple : lorsqu’un serveur offre un service particulier (Web, mes- e sagerie, mail), il ex´cute un programme assurant ce service. Ce programme e est en attente de connexions. Les clients devant acc´der ` ce service doivent connaˆ e a ıtre l’adresse IP du serveur et le num´ro de port associ´ au service. e e Ce num´ro de port a ´t´ attribu´ par l’OS du serveur au programme ex´cutant e ee e e ce service. La plupart des services ont un num´ro de port bien d´fini. Par exemple, e e un serveur de messagerie utilise le port 25, un serveur Web le port 80... Lorsqu’un service est en ´coute sur un port, on dit que le num´ro de port e e associ´ ` ce service est ouvert. ea L’int´rˆt du scanner est tr`s simple : il permet de trouver dans un d´lai ee e e 1 Nmap est disponible sous W indows c et Linux ` l’adresse http ://www.insecure.org/, a la version d´crite dans ce chapitre ´tant celle disponible sous Linux. e e 14
  • 16.
    tr`s court, tousles ports ouverts sur une machine. e Il existe diff´rents types de scanner, certains se contentent juste de donner e le listing des ports ouverts, de donner le type et la version de l’OS tour- nant sur le serveur (ces fonctionnalit´s seront d´crites dans ce chapitre avec e e Nmap). D’autres scanners comme Nessus permettent de tester diff´rentes e failles connues sur ces services ( Nessus sera d´crit dans la section 4.4). e Exemple avec Nmap Utilisons Nmap pour connaˆ les services en ´coute sur la machine d’adresse ı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 aper¸u assez complet des diff´rents services s’ex´cutant 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
  • 17.
    2.1.2 Comment marche Nmap ? Je pr´senterai de mani`re tr`s succinte Nmap et me focaliserai principa- e e e lement sur les fonctions les plus utilis´es. e Pour connaˆ les ports ouverts sur une machine, Nmap proc`de ` l’envoi ıtre e a de paquets sur tous les ports de cette machine et analyse les r´ponses. Bien e sˆr, il y a diff´rents types de scans, donc diff´rents types d’envois et donc, u e e diff´rents types de r´ponses. e e Nous nous int´resserons 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 ` l’appel de la fonction connect() sur tous les ports de la e a machine. Ce type de scan est facilement rep´rable. e Le scan en ”vanilla TCP connect” est le scan par d´faut 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 difficiles ` d´tecter : a e - Le scan en connexion demi-ouverte ou ”Syn-scan” : Nmap envoie sur chaque port un paquet TCP avec le flag SYN arm´ ; si e un port est ouvert, il renverra un paquet avec les flags SYN et ACK arm´s. e Illustration 16
  • 18.
    La commande sefait par l’appel de nmap avec l’option -sS : [root@nowhere.net /root]# nmap -sS [ip de la machine cible] - Les scans Xmas, FIN et NULL. Le scan FIN consiste en l’envoi de paquets TCP avec seulement le flag FIN arm´ : e La commande se fait par l’appel de nmap avec l’option -sF : [root@nowhere.net /root]# nmap -sF [ip de la machine cible] Le scan NULL consiste en l’envoi de paquets TCP avec seulement le flag NULL arm´ : e La commande se fait par l’appel de nmap avec l’option -sN : [root@nowhere.net /root]# nmap -sN [ip de la machine cible] Le Xmas scan (traduisez le scan de No¨l) consiste en l’envoi de paquets e TCP avec les flags FIN/URG/PUSH arm´s.e La commande se fait par l’appel de nmap avec l’option -sX : [root@nowhere.net /root]# nmap -sX [ip de la machine cible] 17
  • 19.
    Pour ces troistypes de scans, les syst`mes r´pondent avec un paquet RST si e e le port est ferm´ et ne r´pondent pas si le port est ouvert. Le NULL scan ne e e fonctionne pas contre des plateformes Microsoft. Illustration 2.1.3 La d´termination du syst`me d’exploitation avec e e Nmap Si on lance Nmap avec l’option -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
  • 20.
    901/tcp open samba-swat 10000/tcpopen 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 l’avant-derni`re ligne : e Remote operating system guess : Linux 2.2.12 - 2.2.19 Nmap parvient ` d´terminer le syst`me d’exploitation tournant sur la ma- a e e chine cible. La machine cible utilisait un noyau 2.2.19. Nmap ne s’est pas tromp´. e Il faut savoir que chaque syst`me d’exploitation construit ses paquets d’une 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 donn´es d’un a e grand nombre d’OS. Nmap envoie donc des paquets tests ` la machine cible a et compare les paquets re¸us en r´ponse ` ceux de sa base de donn´es et en c e a e d´duit le type d’OS. e Cette base de donn´es est mise ` jour en fonction des diff´rentes version e a e de Nmap. 2.1.4 Quel est l’intˆret d’utiliser Nmap ? e Nmap permet de pouvoir pr´voir les futures attaques, et aussi de pou- e 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 n´cessaire) et donc vuln´rables ` une attaque. N’h´sitez 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 r´f´rence e e e ee dans le domaine du scanning. Comment s’en prot´ger ? e Configurer votre firewall pour empˆcher les scans e 19
  • 21.
    [root@nowhere /root]# iptables-A FORWARD -p tcp –tcp-flags SYN,ACK, FIN,RST RST -m limit –limit 1/s -j ACCEPT Cette commande permet de d´tecter l’envoi un grand nombre de paquets e TCP avec les flags FIN et/ou SYN et/ou ACK et/ou RST arm´(s). V´rifiez e e que votre firewall (si ce n’est pas iptables) supporte la d´tection de scans. e (Pour plus de d´tails sur cette commande, je vous conseille de lire le docu- e ment ”Packet Filtering HOWTO : Using iptables” (Chapitre 7.3) de Rusty Wagner). Documents Divers articles ´cris par le d´veloppeur de Nmap sur le scanning (en an- e 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
  • 22.
    2.2 Identifier les versions des logiciels en ´coute e Maintenant que notre pirate connaˆ les diff´rents services en ´coute, son ıt e e objectif va ˆtre de d´couvrir les noms et les versions des logiciels utilis´s pour e e e assurer ces services. L’objectif de ce chapitre est de pr´senter une parade pour ´viter de don- e e ner trop d’informations sur votre syst`me. e Le pirate peut d´j` essayer de se connecter sur diff´rents ports grˆce aux ea e a programmes clients associ´s pour glaner des informations. e Rien que telnet donne beaucoup d’informations : [root@nowhere.net /root]# telnet 192.168.1.1 Trying 192.168.1.1... Connected to 192.168.1.1. Escape character is ”CTRL-C”. Welcome to muetdhiver Linux Mandrake release 7.2 (Odyssey) for i586 Kernel 2.2.17-21mdk on an i586 login : Avec la r´ponse : e Linux Mandrake release 7.2 (Odyssey) for i586 Kernel 2.2.17-21mdk on an i586 Trop de renseignements apparaissent. Mˆme si le port telnet est ferm´, le pirate peut glaner d’autres informa- e e tions sur les autres services. Pour cela, il peut proc´der ` une connexion telnet sur le port associ´ ` un e a ea autre service en ´coute : e Exemple d’un telnet sur le port FTP ( port 21) [root@nowhere.net /root]# telnet 192.168.1.1 21 21
  • 23.
    Trying 192.168.1.1... Connected to192.168.1.1. Escape character is ’CTRL-C’. 220 ProFTPD 1.2.5rc1 Server (ProFTPD Default Installation) [neuromancer] La ligne qui nous int´resse le plus est celle-ci : e 220 ProFTPD 1.2.5rc1 Server (ProFTPD Default Installation) [neu- romancer] La version du logiciel nous est donn´e. Le pirate va alors rechercher e des informations sur les faiblesses de s´curit´ de celui-ci. e e Cependant, sur certains services, le client telnet sera inefficace. Le pirate peut alors utiliser un programme con¸u pour ´crire et lire de donn´es sur c e e machine cible et sur le port voulu. Ces programmes permettent d’envoyer des scripts directement sur le logiciel souhait´ sans se soucier des limites pro- e tocolaires. Le plus r´put´ de ces programmes est sans doute Netcat. e e 2.2.1 Netcat Netcat permet d’´tablir une connexion (TCP ou UDP) sur un port sou- e hait´ et d’y envoyer ou d’y recevoir des donn´es. 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 d’autres fonctionnalit´s (comme l’envoi de scripts ...). e Le pirate n’a plus qu’` trouver une faille applicative (voir chapitre suivant) a sur le logiciel correspondant. 2 Netcat est t´l´chargeable sur : http ://packetstormsecurity.nl/UNIX/netcat/ ee 22
  • 24.
    Comment s’en prot´ger? e Retirer les banni`res donnant les versions de logiciel et les messages d’aide e ou de bienvenue d’un service r´seau en ´coute qui peuvent donner des infor- e e mations sur votre syst`me. e Utilisez netcat contre vos serveurs pour rep´rer les services trop ”bavards”. e 23
  • 25.
    Chapitre 3 Les faillesapplicatives 24
  • 26.
    Introduction Nous allons aborder dans ce chapitre les failles li´es aux applications uti- e lis´es. e Nous nous focaliserons principalement sur les failles logicielles : les failles applicatives. Ces failles peuvent ˆtre de natures diverses : probl`mes de configuration, e e probl`mes au niveau du code du logiciel, probl`mes li´s ` de mauvaises in- e e e a terpr´tations de commandes ou de mauvaises ex´cutions de scripts. e e 25
  • 27.
    3.1 Les installations par d´faut e Lors d’une installation, beaucoup de services peuvent ˆtre install´s par e e d´faut (un serveur Web, FTP ...). Ces services peuvent contenir les diff´rents e e types de failles introduites auparavant. L’important est de bien contrˆler lors de l’installation, les services qui seront o install´s sur le syst`me. Pour ˆtre bien sˆr 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). Mˆme si certains logiciels ne comportent pas de failles connues, ils peuvent e quand mˆme donner des informations aux pirates (voir section 2.2). e 3.2 Les mauvaises configurations Lorsqu’une application est mal param´tr´e, elle peut laisser l’acc`s libre e e e a ` certaines bases de donn´es sensibles (fichiers de mots de passe, d’utilisa- e teurs) ou de permettre d’ex´cuter des commandes ou des scripts malveillants. e Il est important de bien lire le manuel avant d’activer un service (RTFM !) et de bien d´finir le ”qui fait quoi”. e Ce principe est simple : il suffit de bien d´finir les utilisateurs et les groupes e et de limiter leurs droits sur certains types de fichiers et certaines op´rations e d’ex´cution de commandes syst`me. e e Le plus important est de restreindre au maximun les acc`s ` certains fichiers 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ˆ diff´rents types de probl`mes de securit´ : ıtre e e e 3.3.1 Des d´nis de services applicatifs e Ce type de faille empˆche le logiciel de fonctionner et ainsi de r´pondre e e aux requˆtes demand´es (d’o` l’appellation d´ni de service). La technique e e u e est simple, il suffit d’utiliser un bogue connu qui va faire planter le logiciel assurant un service. 26
  • 28.
    3.3.2 Outrepassement de droits Les bogues de type d´passement de buffer ou d’exploitation de bogues de e format posent de gros probl`mes de s´curit´. Ils visent majoritairement des e e e applications setsuid (fonctionnant avec les acc`s root) pour permettre ` un e a attaquant d’obtenir un interpr´teur de commande sous l’uid root. e 3.3.3 Les scripts Malheureusement, une mauvaise programmation de scripts ou l’utilisation de fonctions bogu´es peut ˆtre source de failles de s´curit´. Il convient d’ˆtre e e e e e tr`s attentif au niveau du d´veloppement d’un script. e e 3.4 Les exploits Pour exploiter ces bogues, le pirate fait appel ` des ”exploits”. Ces ”ex- a ploits” sont en fait de petits programmes permettant d’exploiter une faille dans un but pr´cis (obtenir un interpr´teur de commandes, acc´der ` certains e e e a fichiers, augmenter ses droits...). Les exploits peuvent aussi fonctionner ` distance, pour l’obtention d’un shell a (parfois avec les droits administrateur) sans mot de passe, ni nom d’utilisa- teur. Comment s’en proteger ? 1 - Recensez les applications vuln´rables. 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) pu- blie un rapport sur toute nouvelle faille de s´curit´. Le CERT permet aussi e e d’obtenir de l’aide en cas de piratage. Le site du CERT : www.cert.org (Anglais) Les archives bugtraq font partie des meilleures sources sur les nouvelles vuln´rabilit´s. Ces archives donnent des descriptions tr`s pr´cises sur des e e e e nouvelles failles de s´curit´. e e Le site BUGTRAQ : 27
  • 29.
    http://citadelle.intrinsec.com/mailing/current/HTML/ml_bugtraq/ (en anglais) http://www.bugtraq-france.com (enfran¸ais) 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 d’architecture ; il est facile de trouver rapidement le logiciel concern´. e 2 - Limitez les programmes s’ex´cutant avec les droits administrateur. e Il est toujours bon de r´p´rer les programmes s’ex´cutant avec les droits e e e administrateur. Ainsi, vous pouvez changer leurs droits pour qu’ils ne de- viennent pas un point critique pour la vuln´rabilit´ du syst`me. e e e Sous linux, la simple commande : [root@nowhere.net /root]# find / -perm +6000 vous permettra de lister tous les programmes s’ex´cutant avec les droits ad- e ministrateur. 3 - Les autres solutions. Les NDIS (d´crit dans le chapitre suivant) peuvent vous permettre de rep´rer e e les attaques exploitant des failles connues sur certains types de logiciel. On peut aussi ”patcher” son noyau pour ´viter l’ex´cution d’exploits utilisant e e des bogues de d´passement de buffer. Le patch OpenWall2 vous permet de e prot´ger votre noyau Linux. e 1 http ://www.securityfocus.com/search dans la rubrique ”Vulnerabilites” 2 librement t´l´chargeable sur www.openwall.com ee 28
  • 30.
    Chapitre 4 Les outilsindispensables pour la protection 29
  • 31.
    Introduction Les firewalls, les tunnels et les IDS/NDIS sont des outils indispensables pour d´tecter, parer ou ´viter de nombreuses attaques. Nous les d´crirons e e e dans ce chapitre, ainsi que la mani`re de les utiliser de fa¸on optimale. e c 30
  • 32.
    4.1 Le firewall La configuration d’un firewall peut s’av´rer ˆtre un sujet tr`s difficile ` e e e a traiter. Cette configuration est surtout ´tablie en fonction de vos besoins per- e sonnels. L’objectif de ce chapitre est de donner des conseils ` suivre pour bien utiliser a un firewall. Ensuite, nous nous int´resserons aux diff´rentes m´thodes d’at- e e e taques contre les firewalls. 4.1.1 La configuration Pour bien configurer son firewall, il suffit de bien respecter les conseils suivants : - Essayez de limiter l’acc`s ` votre r´seau ` des utilisateurs connus utilisant e a e a une adresse IP statique. Vous pourrez ainsi rejeter toutes les autres requˆtes e venant d’utilisateurs utilisant une adresse IP non autoris´e. Vous effectuez e de la sorte un filtrage au niveau IP. - Fermez tous les ports en ´coute sur les diff´rents serveurs et ouvrez seule- e e ment ceux dont vous avez besoin. - Filtrez ces ports, c’est ` dire rejetez toutes les autres requˆtes sur les autres a e ports que ceux en ´coute. e - Empˆchez toutes les connexions sortantes sur des services non autoris´s. e e Pour cela, il suffit de d´finir un nombre limit´ de services auxquels les ser- e e veurs et les clients peuvent acc´der (mail, ftp, web...). Ensuite, il faut confi- e gurer le firewall pour rejeter les connexions depuis l’int´rieur vers l’ext´rieur e e sur des services diff´rant de ceux d´finis. e e 4.1.2 Les attaques contre les firewalls La premi`re ´tape lors d’une attaque est de d´terminer les r`gles de fire- e e e e walling. Le but est simple : savoir quels ports ne sont pas filtr´s. e 31
  • 33.
    Avec le scan Nmap peut d´terminer quels ports sont ou ne sont pas filtr´s. 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 filtered ftp 22/tcp filtered ssh 111/tcp open sunrpc 515/tcp open printer 1024/tcp open kdm Nmap run completed – 1 IP address (1 host up) scanned in 1 second Les ports 21 (ftp) et 22 (ssh) sont filtr´s. e Comment s’en prot´ger ? e Prot´gez-vous contre le scanning (voir section 2.1). e Si le scan ne marche pas, d’autres m´thodes peuvent ˆtre utilis´s comme e e e le firewalking. Le firewalking Cette technique de d´voilement des r`gles de firewalling repose sur un e e unique champ de l’en-tˆte IP, le TTL (pour Time To Live), ce champ repr´sentant e e la dur´e de vie d’un paquet. Il est fix´ d`s son envoi par le syst`me d’exploi- e e e e tation et est diminu´ d’une unit´ ` chaque fois qu’il traverse un ´quipement e ea e assurant le routage ; quand ce champ est ´gal ` 0, le paquet disparaˆ e a ıt. Chaque passage d’un routeur ` un autre est appel´ un saut. a e C’est ce champ qui est utilis´ par le logiciel traceroute. Pour faire un ”tra- e ceroute”, le logiciel envoie un premier paquet UDP avec un TTL de 1 ; au premier routeur, le TTL est d´cr´ment´ ` 0. Le routeur renvoie donc un e e e a 32
  • 34.
    code d’erreur ”ICMPttl-exceeded”, ce qui permet de r´cup´rer l’adresse du e e premier routeur. Ensuite traceroute va envoyer un deuxi`me paquet avec un e TTL de 2, il sera d´cr´ment´ au passage du premier routeur (TTL=1). Le e e e deuxi`me routeur va le recevoir et le d´cr´menter : le champ TTL sera de e e e nouveau ´gal ` 0. Le deuxi`me routeur renverra donc un message d’erreur : e a e on r´cup`re ainsi l’adresse du deuxi`me routeur. e e e Si il y a N sauts jusqu’au r´seau final, on r´it`re l’op´ration N fois. e e e e On peut utiliser cette technique avec diff´rents protocoles : UDP, TCP, ICMP. e Le firewalking repose sur cette technique pour d´terminer les r`gles de fi- e e 1 rewalling. Firewalk (le programme impl´mentant le firewalking) d´termine e e le nombre de routeurs entre la machine source et la machine cible (situ´e e derri`re le firewall). 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 firewall et e on obtient une r´ponse ; sinon il n’y a aucune r´ponse. e e Firewalk envoie diff´rents types de paquets (TCP, UDP) pour d´terminer les e e r`gles de firewalling. N´anmoins, de nombreux param`tres comme la conges- e e e tion du r´seau, le nombre de routeurs s´parant la cible et l’´metteur peuvent e e e fausser l’analyse de firewalk. 1 Disponible librement sur http ://www.packetfactory.net/ 33
  • 35.
    4.2 Les NIDS Les outils les plus pratiques ! Ces utilitaires permettent de d´tecter une attaque et de vous en informer. Un e IDS (pour Intrusion Detection System) analyse tout ce qui se passe sur une station. Il d´tecte les outrepassements de droits (obtention du compte root e d’une mani`re suspecte) et d’autres types d’attaques, il contient une base de e donn´es sur diff´rentes vuln´rabilt´s. e e e e Les NIDS (Network Intrusion Detection System) travaillent de la mˆme e mani`re, mais sur les donn´es transitant sur le r´seau. Il peut d´tecter en e e e e temps r´el une attaque s’effectuant sur l’ une des vos machines. Il contient e une base de donn´es avec tous les codes malicieux et peut d´tecter leurs en- e e vois sur une des machines. Le NIDS travaille comme un sniffer (voir section 5.4), sauf qu’il analyse automatiquement les flux de donn´es pour d´tecter e e une attaque. Cette section pr´sentera deux NIDS : Snort et Prelude-NIDS. A noter que e ces outils sont distribu´s comme logiciel libre. Je ne rappellerai pas que le e logiciel libre a une avance consid´rable dans le domaine de la s´curit´ par e e e rapport ` ses concurrents ”propri´taires”. a e 4.2.1 Prelude Prelude-NIDS2 est un des d´tecteurs d’intrusions les plus connus. Prelude e est disponible et libre sur les plateformes Linux, FreeBSD et Windows. Prelude poss`de une achitecture modulaire et distribu´e. Modulaire, car ses e e composants sont ind´pendants, et peuvent ˆtre facilement mis ` jour. Dis- e e a tribu´e, car ces composants ind´pendants interagissent les uns avec les autres. e e Cela permet d’avoir divers composants install´s sur diff´rentes machines et e e de r´duire ainsi la surchage d’applications. e Ces diff´rents composants sont les sondes et les managers. Les sondes peuvent e ˆtre de deux types : r´seau ou local. Une sonde r´seau analyse tout le traffic, e e e pour y d´tecter d’´ventuelles signatures d’attaques. La sonde locale assure e e la surveillance d’une seule machine, il analyse le comportement du syst`mee pour y d´tecter des tentatives d’exploitation de vuln´rabilit´s internes. Les e e e 2 t´l´chargeable librement sur www.prelude-ids.org/ ee 34
  • 36.
    sondes signalent lestentatives d’attaques par des alertes. Ces alertes sont re¸u par le manager qui les interpr`te et les stocke. c e Pour une description compl`te de Prelude (installation, configuration et uti- e lisation) consultez ce document : http://lehmann.free.fr/PreludeInstall/InstallPrelude.html 4.2.2 Snort Snort3 est un NIDS lui aussi. Il n’est pas structur´ comme Prelude. Snort e est un programme ”monolithique”, il ne comporte pas de module comme Pre- lude, ce qui peut rendre son impl´mentation dans un r´seau un peu moins e e souple que Prelude. Snort fonctionne en trois modes (Sniffer, PacketLogger et NIDS). Les deux premiers modes ne sont pas int´ressants pour la d´tection e e d’intrusion. Le troisi`me mode permet lui d’analyser le trafic r´seau pour y e e d´tecter d’ ´ventuelles attaques. e e Pour une description compl`te de Snort (installation, configuration et uti- e lisation ) consultez ce site : http://www.snort.org/docs/ (en anglais). 3 t´l´chargeable librement sur www.snort.org ee 35
  • 37.
    4.3 Le tunneling Nous allons d´crire dans cette section diff´rentes m´thodes pour s´curiser e e e e vos transactions, c’est-`-dire cr´er un VPN (Virtual Private Network). Un a e r´seau priv´ virtuel (VPN) est utilis´ pour ´tablir des communications s´curis´es e e e e e e en s’appuyant sur un r´seau existant non s´curis´. Le principal outil utilis´ e e e e pour la cr´ation de VPN est IPsec. e IPsec est facultatif sur IPv4 mais est obligatoire sur IPv6. IPsec a d’autres avantages que la s´curisation du trafic, il permet par exemple d’´conomiser e e la bande passante grˆce ` la compression des en-tˆtes des paquets. a a e IPsec fonctionne sous deux modes diff´rents : le mode transport et le mode e tunnel. Ces deux modes seront d´cris dans ce qui suit. e IPsec est compos´ de plusieurs protocoles diff´rents : AH, ESP, IPcomp et e e IKE. 4.3.1 Le protocole AH Le protocole AH (Authentification Header) permet de garantir l’authen- ticit´ des paquets ´chang´s en leur inscrivant une somme de contrˆle (de e e e o l’en-tˆte IP jusqu’` la fin du paquet) chiffr´e. e a e 4.3.2 Le protocole ESP Le protocole ESP (Encapsulating Security Payload) encrypte toutes les donn´es du paquet garantissant leur confidentialit´. e e 4.3.3 Le protocole IPcomp Le protocole IPcomp (IP payload compression) permet de compresser un paquet avant de le chiffrer avec ESP. 4.3.4 Le protocole IKE Le protocole IKE (Internet Key Exchange) est utilis´ pour l’´change des e e cl´s utilis´s pour l’encryptage. e e 36
  • 38.
    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 encrypt´s dans de nou- e veaux en-tˆte IPv4/IPv6. Il est con¸u pour les passerelles VPN. e c 4.3.6 Les limitations d’IPsec IPsec pose quelques probl`mes dus ` son impl´mentation. Certains probl`mes e a e e apparaˆ ıssent au niveau des messages de broadcast et multicast. IPsec est dif- ficile ` filtrer sur les firewalls existants. Il est aussi impossible ` g´rer pour a a e les translations d’adresse (NAT). Documents Description g´n´rale des tunnels et impl´mentation sous Linux : e e e http://www.miscmag.com/articles/index.php3?page=315 http://www.securiteinfo.com/crypto/IPSec.shtml Description g´n´rale des tunnels et impl´mentation sous W indows c : e e e http://www.laboratoire-microsoft.org/articles/network/ipsec/ 37
  • 39.
    4.4 Nessus Nessus est un outil de s´curit´ permettant de scanner une ou plusieurs e e machines. Il permet aussi de tester diff´rentes attaques pour savoir si une ou e plusieurs machines sont vuln´rables. e Il est tr`s utile lors de tests de p´n´tration (pen test) et fait gagner un e e e temps incroyable. Nessus se compose d’une partie serveur (qui contient une base de donn´es re- e groupant diff´rents types de vuln´rabilit´s) et une partie client. L’utilisateur e e e se connecte sur le serveur grˆce au client et apr`s authentification, il ordonne a e au serveur de proc´der aux tests d’une ou plusieurs machines. Le client re¸oit e c ensuite les r´sultats 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 t´l´charger les sources, binaires, ou diff´rents documents concernant ee e Nessus, consultez le site : http ://www.nessus.org 38
  • 40.
    4.5 User Mode Linux - UML User Mode Linux est un dispositif permettant de lan¸er un ou plusieurs c noyau(x) linux dans l’espace utilisateur (comme un simple programme). En clair, il permet d’avoir plusieurs machines virtuelles sur une seule machine physique hˆte ex´cutant Linux. Les avantages sont nombreux : o e - Si une machine virtuelle plante, le syst`me hˆte n’est pas affect´. e o e - Un utilisateur sera root sur une machine virtuelle, mais pas sur le syst`me e hˆte. o - Il permet aussi de tester diff´rents param`tres noyaux sans se soucier des e e cons´quences. e User Mode Linux permet notamment de s’affranchir de chroot (pour, par exemple, la r´alisation de serveurs FTP) et de toutes ses failles de s´curit´. e e e Documents La page web de User Mode Linux : http://user-mode-linux.sourceforge.net Un autre lien int´ressant pour User Mode Linux et la s´curit´ : e e e http://www.rstack.org/oudot/20022003/7/7_rapport.pdf 39
  • 41.
    Chapitre 5 Surveillance -Dissimulation - Maintien d’acc`s e 40
  • 42.
    Introduction Nous pr´senterons de ce chapitre les programmes utilis´s par les pirates e e pour dissimuler, surveiller et maintenir leur acc`s sur un syst`me d’informa- e e tion. Nous pr´senterons les moyens de s’en prot´ger. e e 41
  • 43.
    5.1 Les chevaux de Troie Le principe du cheval de Troie est facile ` comprendre. Un programme ou a un code malveillant est int´gr´ ` une application par ajout ou par modifica- e ea tion de son code. Ainsi lors de l’ex´cution de ce programme inoffensif, le bout e de code malveillant pourra ex´cuter des commandes sp´cifiques (r´cup´ration e e e e de fichiers de mot de passe, alt´ration du syst`me...) ` l’insu de l’utilisateur. e e a Comment s’en prot´ger ? e La plupart des antivirus peuvent d´tecter les chevaux de Troie. N´anmoins, e e comparer la signature num´rique accompagnant les fichiers (cela se fait par e un calcul reposant sur un algorithme de chiffrement appliqu´ ` l’ensemble du ea fichier) avec la sienne permet de savoir directement si l’on est infect´. e Il est aussi conseill´ de consulter les sites suivants pour v´rifier que vos pro- e e grammes ne contiennent pas de chevaux de Troie : CERT : http://www.cert.org (Le CERT (Computer Emergency Response Team) est un organisme s’occupant des probl`mes de s´curit´ sur Internet. Il e e e recense les diff´rents probl`mes de s´curit´ et publie des articles (advisories) e e e e pour les d´crire. e Bugtraq : http://citadelle.intrinsec.com/mailing/current/HTML/ml_ bugtraq/ 42
  • 44.
    5.2 Les backdoors Les backdoors sont des acc`s cach´s sur un syst`me ou sur une appli- e e e cation. Le principe d’une backdoor est similaire ` celui du cheval de Troie. a L’objectif est de modifier ou d’utiliser un programme pour acc`der discre- e tement ` un ordinateur distant, modifier le comportement d’un programme, a devenir administrateur. 5.2.1 Les backdoors pr´sentes dans les logiciels. e Parfois, certains logiciels (messagerie, utilitaires syst`mes) peuvent conte- e nir des backdoors, c’est-`-dire que, pour certaines commandes suivies d’ar- a guments particuliers ou avec un mot de passe bien d´fini, le logiciel peut e avoir un comportement diff´rent (permettre ` l’utilisateur de devenir root, e a renvoyer un shell syst`me ` l’utilisateur...). e a Ces ”trappes” sont inclues directement dans le code du logiciel. Certains d´veloppeurs sont soucieux de poss´der un acc`s sur tous les syst`mes uti- e e e e lisant leurs logiciels. Par exemple, Ken Thompson, l’un des p`res d’UNIX, e avoue avoir modifi´ l’application /bin/login en permettant l’acc`s direct au e e syst`me par la saisie d’un mot de passe pr´compil´ en dur. Thompson pou- e e e vait ainsi visiter tous les syst`mes utilisant son application modifi´e. e e Parfois, certains pirates diffusent des applications infest´es de backdoors. e Comment s’en prot´ger ? e Il convient de t´l´charger ses applications sur le site du distributeur ou ee du programmeur. Utiliser des serveurs de t´l´chargement non li´s ` l’auteur ee e a de l’application peut se r´l´ver dangereux. ee Il est aussi recommand´ de v´rifier les checksums s’il sont donn´s par le e e e d´veloppeur. e Il est aussi bon de consulter des listes de diffusion comme bugtraq pour savoir si la version de logiciel que vous utilisez ne comporte pas de backdoors. 5.2.2 Les backdoors d´di´es aux connexions ` distance e e a Ces backdoors peuvent tr`s bien faire partie de la premi`re cat´gorie. e e e Comme il l’a ´t´ montr´, certains logiciels peuvent autoriser un acc`s pour ee e e 43
  • 45.
    un mot depasse particulier. Toutefois, ce paragraphe va se focaliser sur des applications en ´coute sur un port bien d´fini utilis´es par les pirates pour e e e obtenir un shell. Un logiciel pr´alablement 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 num´ros de ports ayant une valeur assez ´lev´e (sup´rieur ` e e e e e a 5000). Le pirate n’a plus qu’` se connecter sur ce programme pour r´cup´rer a e e son acc`s sur la machine. e Comment s’en proteger ? Nmap peut se r´l`ver ˆtre une aide pr´cieuse pour les d´busquer. Si, en ee e e e proc´dant au scan d’une machine, vous constatez qu’un port non autoris´ est e e en ´coute, il serait bon de v´rifier 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
  • 46.
    5.3 Les Rootkits Le rootkit est un programme permettant d’automatiser la dissimulation et l’effacement des traces d’un pirate sur une machine. L’objectif d’un root- kit est de modifier les commandes permettant d’administrer le syst`me, de e cacher les ports ouverts par le pirate... Les premiers rootkits ´taient assez basiques, ils modifiaient juste les com- e mandes ls, ps, netstat... L’administrateur pouvait d´tecter ces modifications sur les logiciels concern´s. e e Alors une seconde g´n´ration de rootkits apparut. Il faut savoir que des com- e e mandes comme ps, ls ... font appels ` des bibliotheques partag´es pour fonc- a e tionner. Les nouveaux rootkits modifiaient donc le code de ces biblioth`ques e pour modifier le comportement de ces commandes ` l’avantage du pirate. a Encore une fois, ceci ´tait d´tectable. Donc une troisi`me g´neration de root- e e e e kits est n´e afin de modifier directement le comportement du noyau, par le e biais de modules charg´s en m´moire (LKM). C’est ` l’heure actuelle la der- e e a niere g´n´ration. e e Diff´rents rootkits sont disponibles sur Linux. e Je ne donnerai (volontairement) pas dans cette partie une description compl`te e de l’utilisation des rootkits. Cela n’a aucun interˆt 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 s’en prot´ger ? e 1) Les checksums. Une base de donn´es de checksums sur les diff´rents fichiers syst`me peut e e e d´j` constituer une bonne parade. Je vous conseille d’effectuer des check- ea sums a la fin d’une installation sur les diff´rents fichiers comme ls, ps, stat ` e ifconfig ... et sur les diff´rentes biblioth`ques partag´es. e e e Cette base de donn´e devrait ˆtre stock´e sur un CDROM ou tout autre e e e support non r´inscriptible. e 45
  • 47.
    2) Compiler lesprogrammes vitaux en statique Comme je l’ai dit pr´c´demment, certaines commandes font appels ` des e e a librairies partag´es et des utilitaires comme ”md5sum” (qui sert ` faire des e a checksums) sous Linux font appels ` des librairies partag´es. D’o` son com- a e u portement pourrait ˆtre modifi´ indirectement par un rootkit attaquant les e e librairies partag´es. Pour ´viter ce genre de d´sagr´ement, compilez une par- e e e e tie des programmes vitaux en statique, ainsi vous disposerez d’une trousse de secours en cas d’infection par rootkits. Bien sˆr, pour compiler les programmes vitaux en statique, faut-il encore u disposer d’un OS qui permette d’acc´der aux sources de ces programmes vi- e taux... 3) Chkrootkit Chkrootkit (pour CHecK ROOTKIT) vous permet de d´tecter la pr´sence e e d’un rootkit, il fonctionne sous Linux (FreeBsd...) et est t´l´chargeable libre- ee ment sur www.chkrootkit.org/. 4) Compilez votre noyau en statique. Vous ´viterez ainsi le chargement de e modules externes. 46
  • 48.
    5.4 L’interception des mots de passe en r´seau. e Une autre technique utilis´e pour collecter des informations (mots de e passe par exemple) est l’utilisation d’un sniffer. Le sniffer place la carte r´seau e dans le mode transparent (promiscious), ce qui veut dire que la carte inter- cepte tous les paquets sur le segment r´seau, mˆme ceux qui ne lui sont pas e e destin´s. e Plusieurs types de sniffers existent ; certains affichent les donn´es intercept´es e e 1 brutes comme Tcpdump , ce qui donne lieu ` des fichiers de log tr`s volu- a e mineux. D’autres sniffers permettent de r´cup´rer les mots de passe en les e e affichant directement ` l’´cran associ´ avec le login, l’adresse du client et celle a e e du serveur (comme dsniff2 ). Ethereal3 permet par exemple d’afficher toutes les transactions ayant cours sur le r´seau. e Cependant, le sniffer reste un outil puissant pour la d´tection d’intrusion e car, premi`rement, il garde une trace de tous les ´changes ayant cours sur le e e r´seau. Deuxi`ment, il se r´v`le tr`s utile pour d´masquer un scan (un grand e e e e e e nombre de paquets envoy´s d’un seul coup), de tracer l’adresse d’un pirate, e de voir si des commandes particuli`res sont demand´es sur le reseau. e e La plupart des rootkits contiennent un programme pour sniffer. Les NDIS utilisent un sniffer pour analyser les transactions r´seau. e Comment s’en prot´ger ? e L`, c’est tr`s difficile. Un sniffer est passif, il n’envoie aucun paquet, il a e ne fait qu’intercepter. Mais la carte r´seau ´tant en mode transparent, son e e comportement s’en trouve chang´, son temps et sa fa¸on de r´pondre ` cer- e c e a tains paquets sont modifi´s. On peut d´tecter la pr´sence d’un sniffer grˆce ` e e e a a 4 ce changement de comportement. Le programme AntiSniff de Lopht Heavy Industries peut envoyer des paquets ”tests” et en d´duire si la carte est en e mode transparent donc susceptible de sniffer. 1 disponible sur www.tcpdump.org 2 disponible sur www.packetstormsecurity.org 3 disponible sur www.packetstormsecurity.org 4 disponible sur windowsN T c et Linux ` l’adresse http ://packetstormsecu- a rity.nl/sniffers/antisniff/ 47
  • 49.
    Une deuxi`me paradepour d´jouer le sniffing est de ”tunneler” toutes les e e transactions. Cela veut dire encrypter toutes les transactions r´seaux. Utili- e ser IpvSec ou des VPN, ssh sur votre r´seau s’av`re ˆtre une d´fense efficace e e e e contre le sniffing. L’utilisation de tunnels est trait´e dans la section 4.3. e 48
  • 50.
  • 51.
    Introduction Les dispositifs destructeurs sont utilis´s pour paralyser, saturer ou d´truire e e un syst`me d’information. Ils constituent l’esp`ce la plus nuisible dans le do- e e maine de la s´curit´ car ils peuvent ˆtre la source de perte de donn´es. Le e e e e but de ce chapitre est d’expliquer leurs fonctionnements et la fa¸on de les c combattre. 50
  • 52.
    6.1 Le virus Le virus est un programme dont le seul but est de consommer ou de pa- ralyser des ressources syst`me. Le virus s’autoduplique pour mieux infecter e le syst`me, il se propage en infectant tour ` tour les fichiers. Les effets d’une e a contamination varient : fichiers effac´s, disque dur format´, saturation des e e disques, modification du MBR... La grande majorit´ d’entre eux existent sur les plates-formes M icrosof t c , e ils infectent en particulier les fichiers COM ou EXE. De plus, de nouvelles formes sont apparues comme les macro-virus qui attaquent les fichiers de donn´es (word ou excel). e Les syst`mes UNIX ne sont pas ´pargn´s ! Les administrateurs UNIX doivent e e e faire face ` des virus comme Winux. N´anmoins, la gestion des droits sous a e UNIX se r´v`le ˆtre un facteur limitant pour la propagation de virus. e e e Les virus sont de plus en plus ´volu´s, ils peuvent s’automodifier pour ´chapper e e e a ` une ´ventuelle d´tection (virus polymorphes). D’autres types peuvent ten- e e ter de leurrer le syst`me en s’installant dans des secteurs d´fecteux ou non e e utilis´s (virus furtifs) ... e Comment s’en prot´ger ? e Les anti-virus commerciaux comme Norton Antivirus ou McAfee VirusS- can sont de bons outils pour traquer les virus. Toutefois, il convient de les mettre r´guli`rement ` jour pour profiter pleinement de leurs capacit´s. e e a e Il est aussi important de suivre l’´volution et l’apparition de nouveaux vi- e rus ; pour cela, consulter les sites (ainsi que pour tous les autres dispositifs destructeurs d´crits 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
  • 53.
    6.2 Les vers Les vers sont du mˆme acabit que les virus, sauf qu’ils n’utilisent pas e n´cessairement un fichier pour se propager. Ils sont aussi capables de se e dupliquer et de se d´placer au travers d’un r´seau informatique. Les vers e e utilisent diff´rents 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 l’Internet). Les macro-vers utiliseront les pi`ces jointes contenant des documents bu- e reautiques infect´s (exemple du ver Nimda). e Les vers d’email sont contenus dans une pi`ce jointe comprenant un code e malicieux ex´cut´ automatiquement par le logiciel de courrier ´lectronique e e e ou manuellement par l’utilisateur. Comment s’en prot´ger ? e Comme pour les virus, l’antivirus se r´v`le ˆtre une parade efficace. e e e Consultez les listes cit´es dans la section 6.1. e 52
  • 54.
    6.3 Les bombes logiques Les bombes logiques sont aussi n´fastes que les virus ou les vers et sont e la cause de d´gats similaires. La diff´rence est que la bombe logique a besoin e e d’un d´tonateur pour s’activer, c’est-`-dire qu’elle attend une date ou une e a action bien pr´cise de l’utilisateur pour exploser. e Comment s’en prot´ger ? e Utilisez un anti-virus performant (Mc Afee, Norton ...) r´guli`rement mis e e a ` jour. Consultez les sites d´crits dans la section 6.1. e 53
  • 55.
    6.4 Les attaques par d´ni de services e Ce type d’attaques est la plus ´nervante qui soit. Elles ont pour but de e saturer le r´seau ou le syst`me. e e 6.4.1 Le SYN flood Cette technique consiste ` saturer un serveur en envoyant une multi- a tude de paquets TCP avec le flag SYN arm´, cela aura pour but de cr´er une e e multitude de connexions demandant un grand nombre de ressources syst`me. e La plupart des attaques par SYN-flood sont bien d´tect´es par diff´rents e e e firewalls. Comment s’en prot´ger ? 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 docu- ment ”Packet Filtering HOWTO : Using iptables” (Chapitre 7.3) de Rusty Wagner) 6.4.2 L’UDP Flood De la mˆme mani`re que pour le SYN flooding, l’attaquant envoie un e e grand nombre de requˆtes UDP sur une machine. Le trafic UDP ´tant prio- e e ritaire sur le trafic TCP, ce type d’attaque peut vite troubler et saturer le trafic transitant sur le r´seau. e La plus c´l`bre attaque utilisant l’UDP-flooding est le ”Chargen Denial of ee Service Attack”. Un pirate envoie une requˆte sur le port echo d’une machine e A indiquant comme port source celui du port chargen d’une 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 re¸oit, 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
  • 56.
    Comment s’en prot´ger? e Il est conseill´ de d´sactiver les services chargen et echo. e e Si vous ne voulez pas d´sactiver chargen et echo, configurez votre firewall e pour ´viter le ”Chargen Denial of Service Attack” en limitant le traffic 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 vuln´rabilit´ a e e concerne la gestion de la fragmentation IP. Ce probl`me apparaˆ lorsque la pile re¸oit le deuxi`me fragment d’un paquet e ıt c e TCP contenant comme donn´e le premier fragment. La pile TCP/IP peut e s’av´rer incapable de g´rer cette exception et le reste du traffic. 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 d’envoyer un paquet ICMP avec une quantit´ de donn´es e e sup´rieure ` la taille maximale d’un paquet IP . Encore une fois, la pile peut e a s’av´rer incapable de g´rer cette exception et le reste du traffic. e e 6.4.5 Attaque par r´flexion : Smurfing e Cette attaque est bas´e sur le protocole ICMP. Lorsqu’on envoie un ping e a ` un r´seau en broadcast (par exemple 255.255.255.0), le paquet est envoy´ e e a ` chacune des machines du r´seau. e Un pirate envoie un ping en broadcast sur un r´seau (A) avec une adresse e IP source correspondant ` celle de la machine cible (B). Le flux entre le port a ping de la cible (B) et du r´seau (A) sera mulitpli´ par le nombre de machines e e sur le r´seau (A). e Cela conduit ` une saturation de la bande passante du r´seau (A) et du a e syst`me de traitement de paquets de (B). e 55
  • 57.
    Comment s’en prot´ger? e Configurez votre firewall pour limiter le traffic ICMP. [root@nowhere /root]# iptables -A FORWARD -p icmp – icmp-type echo- request -m limit –limit 1/s -j ACCEPT (Pour plus de d´tails 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 D´nis de services distribu´s e e Plusieurs types d’attaques sont lanc´es 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 fichiers ` a a un utilisateur pour saturer sa boˆ de r´ception de courrier ´lectronique. ıte e e Comment s’en prot´ger ? e La plupart des logiciels de contrˆle de contenu assure un filtrage du cour- o rier pour d´tecter ce type d’attaque e 56
  • 58.
    Chapitre 7 S´curisation desmots de passe e 57
  • 59.
    Introduction Le but de ce chapitre est de donner au lecteur toutes les informations n´cessaires sur les techniques utilis´es pour tester la r´sistance des protec- e e e tions par mot de passe. Il faut savoir que les mots de passe utilis´s sur un syst`me d’information sont e e encrypt´s pour garantir leur confidentialit´. Ces mots de passe encrypt´s sont e e e stock´s dans des listes de mots de passe sur des fichiers syst`mes pr´d´finis. e e e e Un pirate peut fort bien r´cup´rer ces listes et tester la fiabilit´ des mots e e e de passe. Il utilise pour cela l’outil ad´quat : un perceur de mot de passe. e La plupart des algorithmes d’encryptage repose sur l’utilisation de fonctions a ` sens unique. Ceci veut simplement dire qu’il est impossible de d´crypter le e mot de passe ` partir sa forme encrypt´e. L’attaque consiste alors ` encrypter a e a diff´rentes combinaisons de caract`res et de comparer cette forme encrypt´e 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 d’attaques pour le craquage de mots de passe qui seront d´finies dans ce chapitre. e 58
  • 60.
    7.1 L’attaque par dictionnaire Le programme utilise une liste de mots pr´d´finis dans un fichier externe. e e Cette liste est appel´e un dictionnaire ; ces mots sont la plupart du temps e ceux provenant d’un dictionnaire contenant les mots du langage courant. Le programme les encrypte avec l’algorithme d’encryptage ad´quat un par un e et les compare au mot de passe encrypt´. e Ce type d’attaque est tr`s rapide. Un mot de passe mal choisi est vite e d´couvert. e 7.2 Le brute forcing Si l’attaque par dictionnaire ne marche pas, le programme peut g´n´rer e e des mots de passe avec une suite al´atoire de caract`res, les encrypter et les e e comparer au mot de passe ` d´couvrir. Avec un mot de passe suffisament long a e (sup´rieur ` 8 caract`res), cette m´thode a peu de chance d’aboutir. Si, de e a e e plus, des caract`res sp´ciaux sont ajout´s comme des signes de ponctuation, e e e la m´thode peut se r´veler inefficace. e e Il existe diff´rents logiciels de per¸age de mots de passe en fonction du type e c d’encryptage ( DES, MD5, special M icrosof t c ...). 7.3 Tester la fiabilit´ de vos mots de passe ! e Sous UNIX Sous UNIX, la liste des mots de passe des utilisateurs syst`me est divis´e e e en deux fichiers ”/etc/shadow” et ”/etc/passwd” ou r´unis seulement dans e le fichier ”/etc/passwd”. Le type d’encryptage peut ˆtre du MD5, DES1 , e RSA ... Pour tester la r´sistance de vos mots de passe, le logiciel John The Rip- e per2 peut s’av´rer ˆtre une bonne aide. Il supporte un grand nombre d’al- e e gorithmes d’encryptage, pr´sente un important param´trage des attaques. e e 1 L’algorithme DES a ´t´ adopt´ par la NSA comme standard ` la fin des ann´es 70. Le ee e a e DES est distribu´ publiquement mais il a ´t´ d´velopp´ dans le secret. Certains suspectent e ee e e le gouvernement am´ricain de s’ˆtre reserv´ une ”gˆche secr`te” pour une d´cryptage plus e e e a e e rapide, je vous conseille d’utiliser d’autres algorithmes ` la place. a 2 John The Ripper est disponible sur http ://www.openwall.com/john/ 59
  • 61.
    John the Ripperest un programme distribu´ librement. e SousW indows c Pour tester la fiabilit´ des mots sous Windows, l’administrateur pourra uti- e liser le logiciel John the Ripper3 sur Windows ou sur Unix ou le logiciel LophtCrack c de LophtHeavyIndustries c 4 qui, lui, n’est pas distribu´ gra- e tuitement (enfin pas pour les versions r´centes). e Sous W indows9x c , les mots de passe sont dispers´s dans le r´pertoire ra- e e cine de windows dans diff´rents fichiers d’exention ”.PWL” portant comme e nom celui de l’utilisateur. Le chiffrement utilis´ pour g´n´rer les mots de passe PWL est tr`s faible. e e e e Le programme Cain permet de tester leur fiabilit´. e 7.4 Choisir le bon mot de passe N’utilisez pas des mots de votre language courant ou des suites de chiffres ! Choisissez des mots de passe longs, avec une suite de caract`res totalement e al´atoires et avec des caract`res sp´ciaux, alternez les majuscules et les mi- e 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,Jt’AmA, qui est un mot de passe assez costaud. 3 Idem. 4 Lophtcrack c est disponible sur http ://www.atstake.com/research/lc/ 60
  • 62.
    7.5 Pr´venir l’utilisateur e N’h´sitez pas ` organiser des r´unions, faire circuler diff´rents documents e a e e pour informer vos utilisateurs des probl`mes de fiabilit´ des mots de passe. e e 61
  • 63.
    Chapitre 8 La basedes attaques r´seaux e 62
  • 64.
    Introduction Dans ce chapitre, nous d´crirons les principes sur lesquels reposent de e nombreuses attaques r´seaux (notamment celles d´crites dans le chapitre 9), e e ainsi que les r`gles ` respecter pour les ´viter ou les parer. e a e 63
  • 65.
    8.1 D´tournement de flux e Les techniques de d´tournement de flux servent ` rediriger le flux r´seau e a e vers un client, vers un serveur, ou vers une autre machine. 8.1.1 ARP-Poisoning : Toute carte r´seau poss`de une adresse physique. C’est cette adresse qui e e lui permet de recevoir les paquets qui lui sont destin´s. Cette adresse physique e est associ´e ` l’adresse IP grˆce au protocole ARP. La table de correspon- e a a dance entre les adresses IP et les adresses physiques est contenue dans le cache ARP. Lorsqu’un ´change doit s’´tablir entre 2 machines, ces deux ma- e e chines envoient des requˆtes ARP avec l’adresse IP du r´cepteur, associ´e e e e a ` un champ vide pour son adresse physique. Ce r´cepteur va renvoyer son e adresse physique dans une r´ponse ARP. Si un attaquant envoie un message e de r´ponse ARP avec son adresse physique correspondant ` l’adresse IP du e a r´cepteur, tout le flux IP dirig´ vers le r´cepteur sera ridirig´ vers l’attaquant. e e e e On dit qu’il a empoisonn´ le cache ARP du recepteur. e Illustration B envoie ` A une requˆte ARP pour connaˆ son adresse physique. a e ıtre A renvoie ` B son adresse physique par une r´ponse ARP. B la stocke dans a e son cache en faisant correspondre l’IP de A ` son adresse physique. a Le trafic circule entre A et B. 64
  • 66.
    C envoie `B, une r´ponse ARP avec son adresse physique correspondant ` a e a l’IP de A. B stocke cette nouvelle correspondance dans son cache en ´crasant e l’ancienne. C dialogue avec B ` la place de A. A ne re¸oit plus rien. a c Comment s’en prot´ger ? e On peut utiliser sous UNIX, le logiciel Arpwatch1 qui permet de surveiller tout le trafic ARP. Les NIDS peuvent aussi d´tecter ce type d’attaques (notamment Prelude). e Documents http://www.securite.teamlog.com/publication/6/10/102/ 8.1.2 D´synchronisation TCP : e L’ARP-Poisining permet de rediriger tout le trafic IP mais, si l’attaquant n’a besoin que du trafic TCP, il peut interf´rer entre une connexion client- e serveur pour rediriger le flux du client vers lui. La synchronisation TCP est assur´e par les num´ros de s´quences TCP. Si, pendant un ´change, l’atta- e e e e quant envoie des paquets malform´s au client avec une adresse IP correspon- e dant ` celle du serveur en y placant des mauvais num´ros de s´quences, le a e e client va croire qu’il a perdu la connexion et stoppera ses ´changes avec le e serveur. Mais si l’attaquant envoie les bons num´ros de s´quences au serveur, e e il r´cup`rera la connexion pour lui. e e Illustration 1 Disponible librement sur ftp ://ftp.ee.lbl.gov/arpwatch.tar.gz 65
  • 67.
    A dialogue avecB. Il envoie un paquet avec de 60 octets, avec les num´ros e de s´quences indiqu´s. e e C r´pond ` A en se faisant passer pour B et envoie de mauvais num´ros de e a e sequences. A ne r´pond plus ` B car il croit qu’il a perdu la connexion. e a C r´pond ` la place de A et communique avec B, il a vol´ la connexion. e a e 66
  • 68.
    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 signifie l’homme du milieu. Cette attaque fait intervenir trois protagonistes : le client, le serveur et l’attaquant. Le but de l’attaquant est de se faire passer pour le client aupr`s du serveur et se faire passer pour e le serveur aupr`s du client. Il devient ainsi l’homme du milieu. Cela permet e de surveiller tout le trafic r´seau entre le client et le serveur, et de le modifier e a ` sa guise pour l’obtention d’informations (mots de passe, acc`s syst`me ...) e e La plupart du temps, l’attaquant utilise les techniques de d´tournement de e flux d´crites dans les pr´c´dentes sections pour rediriger les flux du clients et e e e du serveur vers lui. 67
  • 69.
    8.3 Encapsulation d’IP dans d’autres proto- coles. Certains logiciels permettent d’encapsuler le protocole IP dans d’autres protocoles comme SSH, HTTP ... . Ce type d’encapsulation peut ˆtre la base e de nombreuses attaques r´seaux. e Par exemple, imaginons cette situation : un pirate veut se connecter sur le port FTP (21) d’une machine A d’un r´seau prot´g´ par un firewall B. e e e B n’autorise et n’assure que le trafic HTTP. Si le pirate veut se connecter sur A, il encapsule les paquets ` destination de A dans des requˆtes HTTP a e destin´es ` B. B accepte ces paquets car ils reposent sur le protocole HTTP. e a Si B est mal configur´, il enverra ` A les paquets lui ´tant destin´s. e a e e 68
  • 70.
    Chapitre 9 Description d’attaquessur diff´rents protocoles e 69
  • 71.
    Introduction Ce chapitre d´crit les failles intrins`ques de diff´rents protocoles. In- e e e trins`ques par le fait qu’elles ne sont pas li´es ` une faille applicative du e e a client ou du serveur g´rant ce protocole, mais plutˆt ` sa conception. Nous e o a pr´senterons aussi la mani`re de s’en prot´ger. e e e 70
  • 72.
    9.1 DHCP : Dynamic Host Configuration Pro- tocol Le protocole DHCP est utilis´ pour d´livrer dynamiquement une adresse e e IP unique pour chaque machine le demandant sur le r´seau interne. En clair, e si un client interne veut obtenir une adresse IP pour b´n´ficier des services e e r´seau, il envoie un message DHCP ` tout le r´seau (broadcast) pour trou- e a e ver le serveur DHCP. Le serveur DHCP r´pondra en lui envoyant tous les e param`tres de configuration r´seau. e e Ce service permet d’”all´ger” la gestion du r´seau en ´vitant d’avoir des e e e configurations statiques ` maintenir sur chaque machine. Malheureusement, a le protocole DHCP comporte diverses failles que nous allons vous pr´senter. e 9.1.1 Attaque par ´puisement de ressources e Comme il l’a ´t´ d´crit, un serveur DHCP poss`de un stock d’adresses ee e e IP qu’il distribue aux diff´rents clients. Ce stock est bien sˆr limit´. Il y e u e aura seulement un nombre d´fini de clients pouvant disposer des diff´rentes e e adresses IP en mˆme temps (par exemple 255). e Si un pirate g´n`re un grand nombre de requˆtes DHCP semblant venir e e e d’un grand nombre de clients diff´rents, le serveur ´puisera vite son stock e e d’adresses. Les ”vrais” clients ne pourront donc plus obtenir d’adresse IP : le trafic r´seau sera paralys´. e e 9.1.2 Faux serveurs DHCP Cette attaque vient en compl´ment de la premi`re. Si un pirate a r´ussi 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 contrˆler tout le traffic a o r´seau. e Comment s’en prot´ger ? e Segmentez votre r´seau en sous-r´seau et attribuez-leur chacun un ser- e e veur DHCP. Ces serveurs seront ind´pendants les uns des autres. e Associez une adresse IP d´finie ` une adresse mat´rielle (MAC) sp´cifique. e a e e 71
  • 73.
    SousW indows c Remplissezles champs de l’option ”R´servations” dans le programme de e configuration du serveur DHCP Sous Linux Modifiez le fichier /etc/dhcpd.conf sur le serveur DHCP. Exemple pour un client ”toto” d’adresse MAC 00 :C0 :34 :45 :56 :67 qui recevra l’adresse 192.168.1.2. Le routeur poss`de l’adresse 192.168.1.1 et le e serveur de noms poss`de l’adresse 192.168.1.3. e host toto { hardware ethernet 00 :C0 :34 :45 :56 :67 ; fixed-address 192.168.1.2 ; option routers 192.168.1.1 ; option domain-name-server 192.168.1.3 ; } Les nouvelles versions du protocole DHCP permettent l’utilisation de m´canismes e d’authentification plus stricts. Assurez vous que vos serveurs utilisent ces ver- sions de protocoles. (Voir RFC 3118) Documents : S´curisation 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# (configuration d’une passerelle d’authentification). 72
  • 74.
    9.2 DNS : Domain Name Server Le protocole DNS assure la correspondance entre le nom d’une machine et son adresse IP. Un serveur DNS est en ´coute sur le port 53. Les attaques e d´crites ici concernent les faiblesses du protocole DNS. e 9.2.1 Le DNS ID spoofing C’est la premi`re attaque que nous allons d´crire. Elle aboutit ` un e e a d´tournement de flux entre deux machines ` l’avantage du pirate. e a Imaginons qu’un 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 empˆche pouvoir communiquer avec. La machine A va donc envoyer e une requˆte au serveur DNS du r´seau de B pour connaˆ l’adresse IP de e e ıtre B, cette requˆte sera identifi´e par un numero d’ identification (ID). Le ser- e e veur r´pond ` cette requˆte en fournissant l’adresse IP de B et en utilisant e a e le mˆme num´ro d’ID. e e Ce num´ro a une valeur comprise entre 0 et 65535. e Le DNS ID spoofing a pour but de d’envoyer une fausse r´ponse ` une requˆte e a e DNS avant le serveur DNS. De cette fa¸on, le pirate peut rediriger vers lui c le trafic ` destination d’une machine qu’il l’int´resse. a e Dans notre exemple, un pirate C doit r´pondre ` A avant le serveur DNS e a (D) du r´seau de B. Ainsi, il envoie ` A son adresse IP associ´e au nom de e a e la machine B. A communiquera alors avec le pirate C au lieu de la machine B. Illustration 73
  • 75.
    N´anmoins, pour impl´mentercette attaque, le pirate doit connaˆ e e ıtre l’ ID de requˆte DNS. Pour cela, il peut utiliser un sniffer s’il est sur le mˆme e e r´seau, soit pr´dire les numeros d’ID par l’envoi de plusieurs requˆtes et e e e l’analyse des r´ponses. e 9.2.2 Le DNS cache poisoning Le principe de cette attaque est tr`s similaire ` celui de l’ARP-Poisoining. e a Pour gagner du temps dans la gestion des requˆtes, le serveur DNS poss`de e e un cache temporaire contenant les correspondances adresses IP - noms de machine. En effet, un serveur DNS n’a que la table de correspondance des machines du r´seau sur lequel il a autorit´. Pour des machines distantes, il e e doit interroger d’autres serveurs DNS. Pour ´viter de les interroger ` chaque e a requˆte, il garde en m´moire (dans un cache), le r´sultat des pr´c´dentes e e e e e requˆtes. e L’objectif du pirate est d’empoisonner ce cache avec de fausses informations. Pour cela, il doit avoir un nom de domaine sous contrˆle et son serveur DNS. o Imaginons qu’un pirate (A) poss`de le nom de domaine ”attaquant.com”, e et son serveur DNS (C) et qu’il veuille empoisonner le cache du serveur DNS (B) du r´seau ”cible.net”. e Le pirate envoie une requˆte au serveur DNS (B) du r´seau ”cible.net” de- e e mandant la r´solution du nom de domaine ”attaquant.com”. e 74
  • 76.
    Le serveur DNS(B) de ”cible.net” va donc envoyer une requˆte sur le ser- e veur DNS (C) de l’attaquant (c’est lui qui a autorit´ sur le domaine ”at- e taquant.com”). Celui-ci r´pondra et joindra des informations additionnelles e falsifi´es par le pirate (un nom de machine (D) associ´ ` l’adresse 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 l’adresse IP pour le nom de la machine (D), il recevra l’adresse du pirate (A) en retour. Illustration 75
  • 77.
    Comment s’en prot´ger? e Configurez votre serveur DNS pour qu’il ne r´solve directement que les e noms de machine du r´seau sur lequel il a autorit´. e e Autorisez seulement des machines internes ` demander la r´solution de noms a e de domaines distants. Mettez ` jour ou changez les logiciels assurant le service DNS pour qu’ils a vous prot´gent des attaques d´crites pr´cedemment. e e e Documents Sous linux : http://www.toolinux.com/linutile/reseau/dns/index20.htm (Configu- ration DNS et s´curit´) e e http://linux-france.unixtech.be/article/memo/dns/node16.html 76
  • 78.
    9.3 FINGER Le service finger permet d’obtenir des informations sur les utilisateurs du syst`me. e finger s’invoque simplement avec la commande : [root@nowhere /root]#finger @machinecible Le symbole @ produit le mˆme effet que l’ast´risque pour un listing de e e r´pertoire. En effet, les informations concernant tous les utilisateurs connect´s e e a ` la machine de nom ”machinecible” seront list´es et envoy´es en r´ponse ` e e e a la requˆte. e Exemple [root@nowhere /root]#finger @machinecible Login Name Tty Idle Login Time Office toto Le toto pts/7 3d Mar 26 20 :43 (case)// root root pts/4 5d May 25 16 :20 On voit ainsi qui est connect´ sur le syst`me (toto et root) et depuis quand e e (colonne ”Time”). finger n’est pas dangereux mais le laisser en ´coute, sans en avoir r´ellement e e besoin, est une grossi`re erreur. finger donne trop d’informations sur les uti- e lisateurs syst`mes. e Comment s’en proteger ? UNIX Il est conseill´ de d´sactiver le service finger dans le fichier ”/etc/inetd.conf”. e e Pour cela, ajoutez un di`se (#) devant la ligne relative au service finger. e # finger stream tcp nowait root /usr/sbin/tcpd in.fingerd W IN DOW S c : D´sactivez le programme associ´ au service finger. e e 77
  • 79.
    Si vous nesouhaitez pas d´sactiver le service finger, configurez votre fire- e wall pour y limiter l’acc`s. e 78
  • 80.
    9.4 FTP FTP (pour File Transfert Protocol, en ´coute sur le port 21) est le service e utilis´ pour assurer le transfert de fichiers. Il y a deux types de serveurs FTP : e les serveurs FTP avec authentification par mots de passe et les serveurs ano- nymes. Pour les premiers, le client d´sirant se connecter devra fournir un e login accompagn´ d’un mot de passe pour authentification. Dans le cas du e serveur FTP anonyme, tout le monde peut s’y connecter librement. Le premier d´faut du protocole FTP est de ne pas encrypter les mots de e passe lors de leur transit sur le r´seau. Les mots de passe associ´s aux logins e e circulent en clair ` la merci des sniffers. a Voici l’exemple d’une interception par un sniffer d’une authentification 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 l’utilisateur ”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 d’acc`s peut s’av´rer ˆtre une erreur fatale. e e e Laisser trop de r´pertoires en droit d’´criture et/ou d’ex´cution est plus que e e e dangereux pour la sˆret´ du syst`me. Le pirate pourrait y installer ou y u e e 79
  • 81.
    ex´cuter des codesmalveillants lui permettant d’accroˆ son pouvoir sur la e ıtre machine. Boucing attack - Attaque par rebonds Les serveurs FTP anonymes peuvent ˆtre sujets ` des attaques par re- e a bonds. Ces attaques consistent ` utiliser un serveur FTP anonyme comme a relais pour se connecter ` d’autres serveurs FTP. Imaginons qu’un pirate se a voit refuser l’acc`s par un serveur FTP dont l’acc`s est allou´ ` seulement e e ea un certain groupe d’adresses IP. Imaginons que le pirate ne fait pas partie de ce groupe, mais qu’un serveur FTP anonyme y appartienne. Le pirate peut tr`s bien se connecter sur le serveur FTP anonyme, utiliser les commandes e assurant la connexion sur le serveur FTP prot´g´ et y r´cup´rer des fichiers. e e e e Comment s’en prot´ger ? e Installez un serveur FTP anonyme seulement en cas d’absolue n´cessit´. Si e e vous devez le faire, limitez au maximun les droits sur les diff´rents r´pertoires e e et fichiers laiss´s au public. e Pour vous prot´ger des attaques par sniffer, je vous recommande d’utili- e ser SFTP (Secure FTP) pour vos transactions FTP. SFTP encryptera les ´changes et les prot´gera ainsi des ´coutes indiscr`tes. Vous pouvez aussi uti- e e e e liser des tunnels comme IPSec pour prot´ger vos connexions (voir section 4.3). e Filtrez les acc`s (via un firewall) en allouant seulement l’acc`s ` un certain e e a groupe d’adresses IP (en ´vitant d’inclure des serveurs anonymes permettant e de servir de relais). 80
  • 82.
    9.5 HTTP Un serveur HTTP est en ´coute sur le port 80. Le protocole HTTP est e sˆrement 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 bourr´es de failles. Cela vient du fait e que le web devient de plus en plus demandeur en terme de convivialit´ et e cela g´n`re une complexit´ plus grande des applications, d’o` un risque de e e e u failles plus important. Nous allons d´crire 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 l’envoi de la commande HEAD / HTTP/1.0 Trop d’informations sont donn´es. e Les pages d’erreurs (404 : page non trouv´e) peuvent aussi contenir des in- e formations sur le syst`me. e 9.5.2 Vuln´rabilit´s li´es aux applications web e e e La complexit´ des serveurs ou des navigateurs (clients) web pose de gros e probl`mes de s´curit´. Ces applications sont vuln´rables ` de nombreux e e e e a bugs. Chaque application a son type de faille. Netscape par exemple de- vient vuln´rable lors du traitement de certaines chaˆ e ınes de caract`res. Cela e peut permettre de remonter toute l’arborescence des fichiers 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 r´alisation de scripts e peuvent se r´l`ver dangereux. L’origine d’une faille dans une application web ee 81
  • 83.
    peut apparaˆ `cause de deux probl`mes. Le premier est la fiabilit´ de la ıtre a e e conception du script, le second est la fiabilit´ des fonctions utilis´es. Si un e e script est mal con¸u, il peut ˆtre la source de nombreuses failles. De mˆme, c e e si sa conception est bonne mais qu’il utilise des fonctions bogu´es, il peut se e r´v´ler encore plus dangeureux. e e Comment se prot´ger ? e V´rifiez que votre serveur web n’est pas trop bavard. Si c’est le cas, modi- e fiez sa configuration pour qu’il se taise. Pour cela, consultez la documentation pour modifier le contenu des messages d’erreur ou de bienvenue. Un serveur web ne devrait jamais ˆtre ex´cut´ avec les droits administra- e e e teurs. Mettez ` jour les navigateurs et les serveurs pour pr´voir d’´ventuelles failles. a e e Lors du d´veloppement de scripts, prenez garde lors de la conception ` la e a gestion des droits des utilisateurs pour son ex´cution. 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 d´tecter l’ex´cution de telles attaques. e e Les NIDS et IDS sont trait´s dans la section ??. e L’utilisation de SHTTP (Secure HTTP) est aussi une bonne parade contre les attaques HTTP. Une bonne d´finition de SHTTP est donn´ par E.Rescorla et A. Schiffman : e e ”Le protocole SHTTP est une extension de HTTP qui fournit des services de s´curit´, applicables ind´pendamment, qui permettent de garantir la confi- e e e dentilit´, l’authenticit´/int´grit´, et le non refus d’origine.” e e e e SSL (”Secure Socket Layer” pour Netscape) permet de prot´ger les tran- e sactions web, il peut ˆtre judicieux de l’utiliser. e 82
  • 84.
    9.6 IDENT Le service ident (anciennement appel´ auth, en ´coute sur le port 113) e e est du mˆme genre que le service finger. Il fournit des informations sur les e d´tenteurs de connexions sur le syst`me. e e Il convient de le supprimer, s’il n’a aucune utilit´. e Comment s’en prot´ger ? e UNIX Pour d´sactiver le service ident, ajoutez un di`se (#) devant la ligne le concer- e e nant dans le fichier ”/etc/inetd.conf”. # :INFO : Info services #ident stream tcp wait identd /usr/sbin/identd identd 83
  • 85.
    9.7 IP et l’IP-Spoofing Cette m´thode de piratage date un peu. Mais elle demeure l´gendaire e e par l’utilisation qu’en a fait Kevin Mitnick en 1995 contre le Supercompu- ter Center de SanDiego prot´g´ par Tsatumo Shimomura. N´anmoins, cette e e e faille ´tait connue depuis f´vrier 1985 comme le montre le rapport ”Weakness e e in the 4.2BSD Unix TCP/IP software” ´crit par Robert Morris. e L’IP spoofing se base sur une usurpation d’adresse IP. L’IP spoofing est uti- lis´ lorsque deux hˆtes sont en relation de confiance grˆce ` leurs adresses IP, e o a a c’est-`-dire que la seule authentification faite au niveau du serveur consiste a en une v´rification de l’adresse IP du client. e L’IP spoofing a souvent lieu contre les services rlogin et rsh car leur m´canisme e d’authentification est bas´e sur l’adresse IP. Le principe est simple : d`s qu’un e e client poss`de une connexion ´tablie sur le serveur avec un mode d’authen- e e fication bas´e sur l’adresse IP, le pirate va essayer de se faire passer pour le e client aupr`s du serveur. Pour cela, il va empˆcher le client de dialoguer avec e e le serveur et r´pondra ` sa place. e a L’IP-Spoofing est une attaque concernant un nombre limit´ de machines. e Vous d´couvrirez pourquoi en lisant la suite. e 9.7.1 Un peu de th´orie ... e Le protocole IP est non-orient´ connexion, il n’assure aucune v´rification e e de la r´ception des paquets et ne se soucie gu`re de la fa¸on de les traiter. IP e e c n’assure qu’un routage d’une adresse vers autre. Il est donc facile de duper le routage IP en injectant des paquets falsifi´s ayant des adresses IP valides e sur le r´seau. e Le protocole TCP, quant ` lui, assure une fiabilit´ de la remise des paquets a e grˆce ` des num´ros de s´quences qui les distingue un ` un. Chaque paquet a a e e a TCP poss`de deux num´ros, le num´ro de s´quence et le num´ro d’acquitte- e e e e e ment. Ces deux nombres sont cod´s sur 32 bits. Ils sont uniques, afin de ne e pas confondre les paquets lors de leurs traitements. C’est sur ces bases que nous allons d´crire l’attaque. 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
  • 86.
    Il va enpremier lieu r´duire au silence le client en le saturant avec des at- e taques tels que le syn-flooding, le d´ni de service ... (voir chapitre 6.4). e La seconde partie de l’attaque est assez simple. Le pirate envoie une s´rie e de demandes de connexion au serveur ( paquets TCP avec le flag SYN arm´) e en utilisant l’adresse de A. Le serveur r´pond avec une s´rie de paquets d’ac- e e quittement (flags SYN et ACK arm´s). C’est l` que r´side toute la finesse de e a e l’IP spoofing. Mais d’abord, quelques rappels sur le protocole TCP. Pour l’´tablisement e d’une connexion TCP, le client envoie un paquet avec un num´ro de s´quence e e initial (NS1). Le serveur va r´pondre avec un paquet d’acquittement ayant e son propre num´ro de s´quence (NS2), mais ayant un num´ro d’acquit- e e e tement (NA1) ´gal au num´ro de s´quence initial incr´ment´ d’une unit´ e e e e e e (NA1=NS1+1). Ensuite le client renvoie un paquet avec un num´ro d’acquit- e tement (NA2=NS2+1). Une connexion TCP s’´tablit donc en trois parties. e Ce principe de num´ros de s´quences et d’acquittement est utilis´ tout le e e e long de la transaction pour en assurer la fiabilit´. La subtilit´ de l’attaque e e r´side dans le fait que le serveur g´n´re la valeur NS2 suivant un cycle par- e e e ticulier. Il peut utiliser, par exemple, soit une fonction g´n´rant un nombre e e al´atoire, soit incr´menter une valeur initiale de 128 toutes les secondes et e e de 64 apr`s chaque connexion. Tout d´pend de l’impl´mentation de la pile e e e TCP/IP du syst`me.e Et c’est l` que r´side tout le probl`me. Le pirate envoie un grand nombre a e e de demandes de connexion dans un laps de temps d´termin´ et analyse les e e acquittements du serveur pour d´terminer l’algorithme d’incr´mentation. Si e e cet algorithme est bas´ sur la g´n´ration de nombres al´atoires, l’attaque a e e e e peu de chances d’aboutir. Mais si l’algorithme est facilement compr´hensible, e le pirate va alors envoyer une requˆte de connexion au serveur en utilisant e l’adresse IP du client. Le serveur va r´pondre avec un paquet d’acquittement e de numero de sequence (NS). Le client mis hors service ne pourra r´pondre,e le pirate le fera ` sa place. Pour cela, il doit injecter un paquet ayant un a num´ro d’acquittement de valeur NA = NS +1. Mais, ayant usurp´ l’adresse e e du client, il ne peut intercepter les paquets lui ´tant destin´s. Il ne peut donc e e pas connaˆ cette valeur NS. Il va donc la g´n´rer lui-mˆme ` partir de son ıtre e e e a analyse de l’algorithme d’incr´mentation. C’est pourquoi cette attaque est e aussi qualifi´e ”d’attaque aveugle”. Si le num´ro est valide, le pirate a ´tabli e e e la connexion au serveur en se faisant passer pour le client. 85
  • 87.
    Le fait quel’attaque ne se restreigne qu’` une petite partie de syst`mes vient a e du fait que la plupart des piles TCP/IP utilisent des num´ros de s´quences e e bas´s sur des nombres al´atoires. Certains syst`mes comme BSD ou HP-UX e e e connaissent de gros probl`mes ` cause de l’IP-Spoofing. e a Illustration 86
  • 88.
    9.7.2 Pr´venir l’IP spoofing grˆce ` Nmap e a a Nmap invoqu´ avec l’option -O et -v vous fournit une indication sur la e difficult´ qu’aura le pirate ` proc´der ` une attaque par IP spoofing 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
  • 89.
    The Connect() Scantook 1 second to scan 1554 ports. For OSScan assuming that port 21 is open and port 1 is closed and neither are firewalled Interesting ports on (192.168.1.4) : (The 1548 ports scanned but not shown below are in state : closed) Port State Service 21/tcp open ftp 22/tcp open ssh 111/tcp open sunrpc 139/tcp open netbios-ssn 515/tcp open printer 1024/tcp open kdm Remote operating system guess : Linux 2.1.19 - 2.2.19 Uptime 0.122 days (since Thu Mar 27 16 :02 :38 2003) TCP Sequence Prediction : Class=random positive increments Difficulty=4687481 (Good luck !) IPID Sequence Generation : Incremental Nmap run completed – 1 IP address (1 host up) scanned in 3 seconds Les lignes int´ressantes : e TCP Sequence Prediction : Class=random positive increments Dif- ficulty=4687481 (Good luck !) Celles-ci nous renseignent sur la difficult´ d’une attaque par IP-Spoofing. e Plus le nombre associ´ ` la valeur ”Difficulty” est ´lev´, plus il est difficile ea e e d’entreprendre une attaque. Le message ”Good Luck !” entre parenth`ses est e plutˆt ironique vis-`-vis de la r´ussite de l’attaque. o a e Si, par malchance, lors d’un scan, vous obtenez un nombre tr`s bas avec e un message du type ”Trivial Joke”, cela signifie que votre syst`me est tr`s e e vuln´rable ` une attaque par IP-Spoofing. e a Comment s’en prot´ger ? e Sur la plupart des syst`mes, les num´ros de s´quence sont incr´ment´s e e e e e de fa¸on al´atoire, ce qui limite d´j` une grande partie des attaques par IP c e ea spoofing. 88
  • 90.
    Pour se prot´ger, il faut commen¸er par supprimer tous les services se basant e c sur l’authentification IP (rloging, rsh). Certains modules comme rp filter sous Linux permettent une d´fense contre e ces attaques. L’utilisation de tunnels permet ´galement de parer cette attaque. e Documents D´scription de l’IP-Spoofing : e http://www.phrack.org/show.php?p=48&a=14 (en anglais) 89
  • 91.
    9.8 NETBIOS NETBIOS n’est pas un protocole en lui-mˆme, c’est une interface logi- e cielle et un syst`me de nommage. L’interface NETBIOS est tr`s utilis´e sur e e e les r´seaux M icrosof t c . NETBIOS permet par exemple de partager des res- e sources en r´seau. Ces ressources peuvent ˆtre des imprimantes, processus ou e e des espaces disques. Un pirate peut essayer d’acc´der ` ces ressources en s’y e a connectant et tester diff´rents couples utilisateur/mot de passe. NETBIOS e n’est pas une interface tr`s s´curis´e. Elle est surtout utilis´e dans les r´seaux e e e e e M icrosof t c pour le protocole SMB (bien qu’elle tend ` ˆtre remplac´e). ae e Comment s’en prot´ger ? e Prot´gez toutes vos ressources NETBIOS par mot de passe. e Ne laissez jamais un service NETBIOS de votre r´seau en ´coute sur Internet. e e Autorisez seulement l’acc`s aux ressources NETBIOS au client de votre e r´seau. e Documents Un bon guide pour la s´curisation NETBIOS (en anglais) : e http://packetstormsecurity.org/groups/rhino9/wardoc.txt 90
  • 92.
    9.9 NFS : Network File System NFS a pour but de partager un ensemble de fichiers sur un r´seau. Il est e souvent coupl´ ` un serveur NIS pour l’authentification. ea NFS a ´t´ d´velopp´ par Sun Microsystems. ee e e 9.9.1 Les attaques Le gros probl`me avec NFS, c’est que le client fait toujours confiance 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 s’en prot´ger ? e Utilisez la commande mount avec l’option -nosuid sur les clients, ce qui empˆche la modification ou l’utilisation des programmes setuid sur un syst`me e e de fichier NFS. Utilisez l’option root-squash dans le fichier ”/etc/exports” : [root@nowhere /root]# Cela aura pour but d’empˆcher un client root de devenir root sur le syst`me e e de fichiers NFS stock´s sur le serveur. e Prot´ger l’acc`s ` votre serveur NFS en filtrant ` partir de l’ adresse IP, e e a a les diff´rents clients. e 91
  • 93.
    9.10 NIS : Network Information Service NIS permet de partager, ` travers un r´seau, une base de donn´es conte- a e e nant des bases d’informations pour chacune des machines constituant le r´seau (fichier de mots de passe, listes d’hˆtes...). e o La base de donn´e est g´r´e par un serveur-maˆ qui la partage avec des e ee ıtre serveurs-esclaves pour ˆtre accessible aux machines clientes. e Cette base de donn´es est identifi´e par un nom de domaine propre ` NIS. e e a Ce service a ´t´ d´velopp´ par SUN Microsystems. Il s’accompagne souvent ee e e du service NFS pour permettre le partage de fichiers. 9.10.1 Les attaques Il est possible d’obtenir des nombreuses informations (notamment les fi- chiers de mots de passe) ` partir du nom de domaine NIS. a Il est aussi possible pour un utilisateur non autoris´ d’obtenir les fichiers e de mots de passe ` partir d’un poste local client NIS. a Les mots de passe sont transmis en clair sur le r´seau, donc facilement inter- e ceptable par un sniffer. Comment s’en prot´ger ? e Evitez de donner le mˆme nom de domaine DNS au domaine NIS. e V´rifiez si votre version de NIS vous assure une v´rification de l’adresse du e e domaine depuis lequel sont lanc´es les requˆtes. e e Supprimez la commande ”ypcat” sur les ordinateurs clients. Prot´gez l’acc`s ` votre serveur NIS en filtrant ` partir de l’adresse IP, les e e a a diff´rents clients. e 92
  • 94.
    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 sa- voir 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 requˆte, portmap ne poss`de aucun m´canisme de contrˆle, il e e e o accepte donc la requˆte et la traite. e Comment s’en prot´ger ? e Il est conseill´ de filtrer l’acc`s sur ce port grˆce ` un firewall bien confi- e e a a gur´ ou de d´sactiver totalement ce service. e e 93
  • 95.
    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 authentifications MICROSOFT. Les clients et serveurs SMB sous Linux et d’autres OS libres utilisent SAMBA pour traiter les ´changes e avec ce protocole. SMB poss`de deux modes d’authentification : 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 propri´taire d’une ressource. e e SMB utilise aussi deux modes pour l’envoi de ces mots de passe : encrypt´s e ou non. C’est l` que r´side toute la faille. C’est le serveur qui donne l’infor- a e mation au client s’il supporte l’encryptage ou non. Si un pirate parvient ` d´tecter un ´tablisement de session SMB avant cet a e e ´change, il peut tr`s bien d´tourner le flux entre les deux et demander au e e e client d’envoyer son mot de passe en clair et le recevoir. 9.12.1 Les scans de SMB shares Si vous avez des ressources partag´es en acc`s libre ` tout le monde (eve- e e a ryone shares), un pirate utilisera un scanner de share pour les d´tecter et s’y e connecter. Mˆme si vous prot´gez ces shares par mot de passe, certains logiciels peuvent e e tester diff´rents mots de passe en se loguant ` la ressource et ainsi tenter e a diff´rentes combinaisons de mots de passe (voir section 7.1). e Comment s’en prot´ger ? e Pour ˆtre sˆr que les mots de passe SMB soient envoy´ encrypt´s sur le e u e e r´seau (mˆme en cas de requˆtes ”frauduleuses”), v´rifiez que la valeur des e e e e cl´s suivantes de la base de registre sont bien ´gales ` 0 : e e a SousW indowsN T 4 c HKEYLOCALMACHINESYSTEMCurrentControlSetServicesRdrParameters 94
  • 96.
    ”EnablePlainTextPassword”=dword :00000000” SousW indowsXPc HKEY LOCAL MACHINESYSTEMCurrentControlSetServiceslanmanworkstationparam ”enableplaintextpassword”=dword :00000000” Prot´gez toutes vos ressources par mots de passe, ´vitez les shares en acc`s e e e libre ` tout le monde et n’oubliez jamais de choisir des mots de passe associ´s a e de la bonne fa¸on (voir section 7.1 ). c Ne laissez jamais un serveur SMB en ´coute sur Internet, cela est plus que e suicidaire. Si vous ˆtes oblig´s d’utiliser SMB ` travers Internet, utilisez les e e a tunnels (voir section 4.3). Sur votre r´seau interne, filtrez l’acc`s sur votre serveur SMB grˆce ` un e e a a firewall. Document La description des probl`mes de s´curit´ sur SMB (en anglais) : e e e http://www.phrack.org/show.php?p=60&a=11 95
  • 97.
    9.13 SMTP - Les services de messagerie SMTP : Simple Mail Transfert Protocol. Un serveur SMTP sert a envoyer les mails sur le r´seau 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 qu’il peut servir de relais e de mailing anonyme. Un pirate peut tr`s bien s’en servir pour envoyer des e mails scabreux ` travers Internet. a Un autre probl`me concerne les commandes EXPN et VRFY : ces com- e mandes sont sources de nombreuses informations pour le pirate. Il convient de les d´sactiver si le logiciel de messagerie le permet. e Comment s’en prot´ger ? e Appliquez des r`gles de firewalling assez strictes concernant le serveur e SMTP (usage r´serv´ exclusivement aux machines du r´seau interne). e e e Certains serveurs SMTP empˆchent le relayage, v´rifiez si votre serveur de e e messagerie supporte cette option. 96
  • 98.
    9.14 SQL SQL est utilis´ pour la gestion de base de donn´es. Il permet l’ intercon- e e nexion d’une page web avec une base de donn´es ` l’aide de scripts. e a Ce chapitre va pr´senter une attaque tr`s connue contre les serveurs SQL, le e e ”SQL-Injection”. 9.14.1 Le ”SQL-INJECTION” Une requˆte SQL passe par plusieurs ´tapes avant d’aboutir. e e Les donn´es sont envoy´es par le client par l’interm´diaire d’un script sur e e e le serveur web. Il s’ensuit une connexion au serveur SQL, puis l’envoi des donn´es de la requˆte du client. La rˆquete est ex´cut´e par le serveur SQL. e e e e e La r´ponse est re¸ue par le client et est affich´e sous la forme d’une page web e c e ... L’attaque par SQL-Injection consiste ` injecter des caract`res sp´ciaux ou a e e des chaˆınes de caract`res particuli`res dans les rˆquetes SQL du client. Ces e e e caract`res peuvent ˆtre interpr´t´s par le serveur SQL comme des commandes e e ee permettant d’obtenir un acc`s sans mot de passe, de r´cup´rer des fichiers ... e e e Comment s’en prot´ger ? e Pour bien s´curiser votre serveur SQL, v´rifiez 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 prot´ger du SQL-Injection n’est pas toujours ais´, il faut surtout ˆtre e e e attentif ` la programmation des scripts et aux fonctions utilis´es. a e Documents La technique du ”SQL Injection” d´crite par son inventeur : e http://www.wiretrip.net/rfp/p/doc.asp/i6/d42.htm (en anglais) 97
  • 99.
    9.15 SSH SSH vous permet de cr´er un tunnel chiffr´ pour vos connexions, il en- e e crypte toutes les ´changes. SSH est donc un outil conseill´ (pour ne pas dire e e indispensable) pour les transactions r´seaux. e Malgr´ tout, SSH est sujet ` diff´rentes 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 l’´tablissement de session SSH) grˆce ` des e a a m´thodes de redirection de flux. Lorsque le client et le serveur s’´changent e e les cl´s indispensables pour l’encryptage, 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 g´n´ration al´atoire des caract`res de bourrage. Ces caract`res e e e e e sont utilis´s pour rendre la longueur du paquet multiple de 64 bits. Ces ca- e ract`res n’´tant pas v´rifiables, ils peuvent ˆtre utilis´s pour modifier le bon e e e e e d´roulement de la communication. Cette faille est plus connue sous le nom e de ”l’exploitation du canal cach´”. e Ces attaques ne sont pas tr`s faciles ` impl´menter. e a e 98
  • 100.
    9.16 TELNET Le service telnet (en ´coute sur le port 23) permet ` deux machines dis- e a tantes de communiquer. Telnet ´tablit deux terminaux virtuels pour les deux e machines. Ce type de terminal est semblable ` une connexion s´rie. L’utili- a e sateur a l’impression d’ˆtre assis devant un terminal de la machine. e telnet repose sur une authentification par login et mot de passe. Malheu- reusement, telnet poss`de le mˆme probl`me que FTP : il n’assure pas la e e e protection des mots de passe contre l’´coute d’un sniffer. Les mots de passe e associ´s du login circulent en clair sur le r´seau. e e Comment s’en prot´ger ? e Utilisez plutˆt SSH, qui pr´sente les mˆmes fonctionnalit´s 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 prot´ger e toutes vos connexions. Je vous conseille aussi de restreindre l’acc`s ` votre serveur telnet via un e a firewall. 99
  • 101.
    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 client- serveur. Il est donc possible ` un client connect´ sur un serveur X d’interagir a e avec celui-ci. Il peut agir sur les fenˆtres, capturer des ´venements X ou en e e cr´er. Si un serveur X WINDOW est mal configur´, n’importe quel client e e pourra s’y connecter et modifier son fonctionnement. Comment s’en proteger ? Utilisez la commande : [root@nowhere /root]# xhost - pour fermer les acc`s au serveur XWINDOW. e 100
  • 102.
    9.18 Peer To Peer (eDonkey, Kazaa ...) Les applications Peer to Peer permettent de faciliter l’´change de fichiers e entre particuliers. Ces applications sont nombreuses et diverses (eDonkey, Kazaa ...). Malheureusement, leur utilisation dans un r´seau peut ˆtre source e e de probl`mes de s´curit´ et consommer inutilement de la bande passante. e e e Comment s’en prot`ger ? e Sous linux, le projet P2Pwall donne des utilitaires et des documents per- mettant d’utiliser le firewall iptables pour filtrer le trafic d’application Peer to Peer. Il est disponible gratuitement ` l’adresse : a http://www.lowth.com/p2pwall/ 101
  • 103.
  • 104.
    Introduction Si vous avez lu les pr´c´dents chapitres (et surtout le chapitre 4), vous e e poss´dez maintenant toutes les connaissances requises pour pouvoir abor- e der cette partie. Elle concerne l’impl´mentation et le d´veloppement d’ou- e e tils d´di´s ` la s´curit´. La premi`re section vous montrera comment ar- e e a e e e chitecturer son r´seau de fa¸on s´curis´e et comment bien impl´menter les e c e e e diff´rents outils de protection. La deuxi`me section vous d´crira diff´rentes e e e e biblioth`ques utilis´es pour le d´veloppement d’utilitaires r´seaux. Nous don- e e e e nerons en exemple la programmation d’un simple scanner. 103
  • 105.
    10.1 L’architecture s´curis´e e e Il existe une infinit´ de fa¸on d’organiser votre r´seau mais, quand la e c e s´curit´ entre en jeu, il est conseill´ d’avoir une architecture r´seau bien e e e e pens´e. Ce chapitre va donner des exemples de r´alisation d’architecture e e s´curis´e. Il convient d’avoir lu pr´alablement les pr´c´dents chapitres pour e e e e e bien saisir la subtilit´ des architectures d´crites. e e Nous d´crirons diff´rents niveaux d’architecture s´curis´e. Nous partirons e e e e d’une architecture peu ou pas s´curis´e pour arriver ` une architecture ultra- e e a s´curis´e. e e 10.1.1 Le r´seau de d´part e e Tr`s simple, une PME ou une universit´ poss`de un administrateur qui e e e doit g´rer l’ensemble du parc informatique et sa conception r´seau. Il a pour e e cahier des charges d’assurer une connexion Internet avec le r´seau local, un e serveur de messagerie et un site web. Avec peu de moyen, l’administrateur cr´e son r´seau de la sorte : e e Les serveurs web, de messagerie et de partage de connexion Internet seront assur´s par une seule machine. Cette machine est connect´e directement ` e e a Internet. Dans ce type de r´seau, il n’y aucune forme de s´curit´ : la connexion avec e e e Internet n’est absolument pas s´curis´e. e e 104
  • 106.
    10.1.2 Le premier niveau de s´curit´ e e Apr`s un premier piratage, notre administrateur re¸oit de nouveaux cr´dits. e c e Il repense l’architecture : Il d´diera une machine pour le serveur web, une machine pour le serveur e de messagerie, deux machines pour le firewalling et un routeur pour assurer la connexion Internet. Les serveurs de messagerie et web sont dans une zone ext´rieure ` celle du e a r´seau local. Ils constituent une zone d´militaris´e (DMZ). D´militaris´e car e e e e e on peut s’y connecter depuis l’ext´rieur contrairement au r´seau local. e e Le firewall situ´ entre le r´seau local et le routeur empˆchera toute connexion e e e de l’ext´rieur vers le r´seau local, et autorisera seulement les connexions de- e e puis le r´seau local sur un nombre limit´ de services. e e Le firewall situ´ entre le routeur et la DMZ autorisera tous les acc`s sur e e les serveurs web et de messagerie (depuis le r´seau local comme depuis l’ex- e terieur), mais en empˆchera 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 firewalls en soumettant des requˆtes e sur des ports autoris´s. Il a tr`s bien pu envoyer un exploit sur un serveur e e web ou de messagerie vuln´rable. e 10.1.3 NDIS : Deuxi`me niveau de s´curisation e e Alors, pour se prot´ger, il intercale une sonde NDIS (voir section 4.2) e entre le firewall et le r´seau local et dans la DMZ. Si un pirate venait ` en- e a 105
  • 107.
    voyer des requˆtessuspectes ou des exploits connus, les NIDS pr´viendraient e e du risque d’intrusion (de l’int´rieur ou de l’ext´rieur). Le manager NDIS se e e situera dans le r´seau local. e Il d´die toujours une seule machine pour un seul service. Il met r´gulierement e e a ` jour les logiciels, et s’informe sur les nouvelles failles de s´curit´. e e Ceci constitue un niveau acceptable permettant de r´sister ` des nombreuses e a attaques. 10.1.4 Les niveaux plus ´lev´s e e Nous allons nous appuyer dans cette section sur l’architecture pr´c´dente. e e Nous allons modifier certaines parties du r´seau. e Nous allons d’abord ins´rer une zone de d´contamination entre Inter- e e net et le r´seau interne. Cette zone est constitu´e d’analyseurs de contrˆle e e o de contenu, des antivirus et d’autres utilitaires surveillant le trafic r´seau e (comme des NIDS). Tous les flux entrants et sortants passeront par cette zone de d´contamination. Ces proxys applicatifs peuvent prendre la d´cision e e de couper la connexion en cas d’attaques ou de simplement rejeter la de- mande. Cette zone est appel´e zone de d´contamination car elle permet de d´tecter e e e des signatures d’attaques dans les flux de donn´es provenant d’Internet et e d’´viter la propagation dans le reste du r´seau. e e 106
  • 108.
    Pour le r´seaulocal, nous le subdiviserons en sous-r´seaux, chaque sous- e e r´seau poss´dera un NDIS (sonde + manager). Ces sous-r´seaux seront reli´s e e e e entre eux par des switchs. Ce type d’architecture est tr`s efficace pour la s´curit´, mais reste n´anmoins e e e e assez cˆuteuse et difficile ` g´rer. L’utilisation de tunnels (voir section 4.3) o a e permet en plus d’accroˆ la sˆret´ des transactions. ıtre u e 107
  • 109.
    10.2 D´veloppez vos propres utilitaires s´curit´ e e e Ce chapitre va pr´senter diff´rents outils pour d´velopper vos propres uti- e e e litaires de s´curit´. Une connaissance du language C est requise. Une solide e e connaissance r´seau est aussi demand´e. e e Le syst`me d’exploitation utilis´ est Linux avec un compilateur GCC. Nous e e allons ´tudier 2 biblioth`ques permettant la cr´ation d’utilitaires r´seaux : e e e e libnet et libpcap. La premi`re, Libnet, est d´velopp´e par Mike D. Schiffman. C’est une bi- e e e blioth`que opensource (donc gratuite). Libnet permet de fabriquer et d’in- e jecter facilement des paquets sur un r´seau. Un grand nombre de protocoles e est support´.e Note importante : La version de Libnet d´crite est la version 1.1. De grosses e modifications faites sur le code de la version 1.1 la rend incompatible avec les versions de biblioth`ques ant´rieures. e e La deuxi`me est Libpcap. Elle permet de capturer les paquets transitant sur e le r´seau. Cette biblioth`que est maintenue par l’ ´quipe de d´veloppement e e e e de tcpdump (pr´sent´ dans le chapitre 5.4). e e Libnet est t´l´chargeable ` cette adresse : ee a www.packetfactory.net Libpcap est t´l´chargeable ` cette adresse : ee a www.tcpdump.org Pour donner une description de ces biblioth`ques, nous allons ´tudier le e e d´veloppement d’un scanner de base. Ce scanner listera les ports TCP ou- e verts sur une machine avec une m´thode de scan en port demi-ouvert (SYN e scan, voir section 2.1). L’injection des paquets sera r´alis´e grˆce ` Libnet, e e a a la r´ception des r´ponses grˆce ` Libpcap. e e a a 10.2.1 Le programme Le programme ”scanner” sera appel´ en mode console et recevra deux e arguments : l’interface r´seau d’utilisation et l’adresse IP de la machine ` e a 108
  • 110.
    scanner. Il afficherala liste des ports ouverts et se terminera. Exemple d’utilisation : [root@nowhere.net /root]#./scanner -i eth0 -c 192.168.1.2 Le port 21 est ouvert Le port 22 est ouvert Le port 1111 est ouvert Le port 1024 est ouvert Mais int´ressons-nous ` son d´veloppement. e a e Un petit rappel th´orique : e Le scan en port demi-ouvert consiste ` envoyer un paquet TCP avec le flag a SYN arm´ sur un port pr´cis. Si ce port est ouvert, on recevra en r´ponse un e e e paquet TCP avec le couple SYN/ACK arm´. e Le programme recevra en argument, l’IP de la machine ` scanner et le nom a de l’interface r´seau (par exemple ”eth0”). e ATTENTION ! Le but de ce chapitre est de pr´senter les librairies libnet e et libpcap et certaines de leurs fonctions les plus utiles d’une mani`re suc- e cinte. Ce chapitre n’est en aucun cas un cours de programmation r´seau. e Principe g´n´ral de fonctionnement : e e Le principe de fonctionnemt du programme est simple ; il sera constitu´ de e deux fonctions : la premi`re permettra d’envoyer les paquets (sur les 16000 e premiers ports) et la deuxi`me de les recevoir. Ces deux fonctions seront ac- e tiv´es en parall`le dans deux processus distincts (grˆce ` l’appel de la fonction e e a a fork()). Je pr´senterai les deux fonctions utilis´es 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 r´seau. Pour cela, elle utilise la librairie libpcap. Nous utiliserons deux e fonctions de cette librairie pour notre programme : 109
  • 111.
    La premi`re estla 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 r´seau et renvoie un descripteur de type e pcap t sur cette interface r´seau en ´coute. e e La param`tre *device est un pointeur sur une chaˆ de caract`res conte- e ıne e nant le nom de l’interface r´seau utilis´e (par exemple ”eth0”). e e Le param`tre snaplen repr´sente la taille maximale (en octet) d’un paquet e e intercept´ (max=65535). e Le param`tre promisc contrˆle le fonctionnement de la carte r´seau. S’il est e o e ´gal ` 1, la carte est en mode transparent, c’est ` dire qu’elle intercepte e a a tous les paquets (mˆme ceux qui ne lui sont pas destin´s). Si cette valeur est e e diff´rente de 1, la carte n’acceptera que les paquets lui ´tant destin´s. Pour e e e notre programme, la carte sera en mode transparent donc promisc sera ´gal e a ` 1. Le param`tre to ms sp´cifie le d´lai (en millisecondes) d’interception de pa- e e e quets. Lorsque ce d´lai 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 d’erreur en cas de mauvaise ou non ex´cution du pro- e 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 acc´der ` la carte r´seau. Elle renvoie chaque paquet intercept´. e a e e C’est une fonction bloquante. Ces deux fonctions sont toujours utilis´es en s´rie, la pcap open live initialise e e la carte r´seau et renvoie un descripteur de fichier, ensuite ce descripteur de e fichier 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 utilis´e par les fonctions de libpcap (elle contiendra notre pa- e 110
  • 112.
    quet*/ struct pcap pkthdrHeader ; /*Descripteur repr´sentant l’interface r´seau (retourn´ par e e e la fonction pcap open live()*/ pcap t *Descr ; /*Structure pour l’en tˆte ETHERNET*/ e struct ethhdr *EtherHdr ; /*Structure pour l’en tˆte IP*/ e struct ip *IpHdr ; /*Structure pour l’en tˆte TCP*/ e struct tcphdr *TcpHdr ; /*Tampon pour retour d’erreur*/ char ErrBuf[LIBNET ERRBUF SIZE] ; /*Pointeur vers le paquet*/ u char *Packet ; /*Descripteur pour libnet*/ libnet t *l ; /* Initialisation pour les fonctions de libnet (obtention d’un descripteur)*/ l=libnet init(LIBNET RAW4,NULL,ErrBuf) ; /*Descripteur ”Descr” sur l’interface r´seau en ´coute*/ e e 111
  • 113.
    Descr = pcapopen live(Device,65535,1,0,ErrBuf) ; while(1) /*On recup´re le paquet (il est point´ par la variable ”Pa- e e cket”)*/ Packet = (u char *) pcap next(Descr,&Header) ; /*On convertit le paquet pour analyser l’en tˆte ETHERNET*/ e EtherHdr = (struct ethhdr * ) (Packet) ; /*On verifie si le protocole est bien IP*/ if(ntohs(EtherHdr-¿h proto)==ETH P IP) /*On convertit le paquet pour analyser l’en tˆte IP*/ e IpHdr = (struct ip * ) (Packet +ETH HLEN) ; /*On verifie si le protocole est bien TCP*/ if(IpHdr-¿ip p==IPPROTO TCP) TcpHdr = (struct tcphdr * ) ( Packet + ETH HLEN + 4 * (IpHdr-¿ip hl)) ; /* Cela sert ` verifier que nous avons bien envoy´ le paquet et qu’il a e provient bien de la machine ”scann´e”. Ceci se base sur l’analyse des e adresses IP */ 112
  • 114.
    if( (IpHdr-¿ip src.s addr==IP Cible) && (IpHdr-¿ip dst.s addr== libnet get ipaddr4(l))) /*Pour verifier que le port d’envoi correspond au mˆme que le notre*/ e if(ntohs(TcpHdr-¿dest)==PORT SOURCE) /*Si les flags SYN et ACK sont arm´s, 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 d’injecter les paquets sur le r´seau. Pour e cela, elle utilise la librairie Libnet. Nous allons utiliser diff´rentes fonctions de la librairie Libnet. e La premi`re est la fonction libnet t *libnet init(int injection type, char *de- e vice, char *err buf ). Cette fonction permet d’initialiser une interface d’injection des paquets. Elle traite trois arguments : Le premier injection type d´finit le type d’interface (niveau ethernet, IP e ou TCP). Pour notre programme, une injection au niveau IP suffira (valeur LIBNET RAW4). 113
  • 115.
    Le deuxi`me argument*device est un pointeur sur la chaˆ de caract`re e ıne e contenant le nom de l’interface r´seau qui sera sollicit´e (ex : eth0), la valeur e e NULL conviendra car libnet choisira automatiquement une carte r´seau. e Le dernier argument *err buf est utilis´ pour les messages d’erreur (comme e libpcap). Elle renvoie un pointeur sur l’interface d’injection de type libnet t. Les fonctions libnet ptag t libnet build tcp(...) et libnet autobuild ipv4(...) sont utilis´es pour construire les en-tˆtes TCP et IP. Elles prennent comme argu- e e ments les diff´rentes valeurs constituants les en-tˆtes TCP et IP (num´ro de e e e port, de s´quences ... pour TCP, adresses IP, types de protocoles pour IP). e Elle renvoient toutes les deux un descripteur de type libnet ptag t, ces fonc- tions doivent toujours respecter l’ordre TCP puis IP (sens couche application vers couche r´seau ou physique). e Ces fonctions prenent en argument le pointeur sur l’interface d’injection (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) d´truit l’interface cr´e 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
  • 116.
    /*Pour construire l’entˆte TCP*/ e Tag=libnet build tcp( PORT SOURCE, /*Port Source*/ port dest, /*Port destination*/ 0, /*N◦ S´quence*/ e ◦ 0, /*N Acquitement*/ TH SYN, /*Demande de connexions*/ 4096, /*Taille de fenˆtre*/ e 0, /*Somme de contrˆle*/ o 0, /*Pointeur d’urgence*/ LIBNET TCP H, /*Taille en tˆte*/ e (u char *) (NULL),/*Pointeur vers les donn´es*/ e 0, /*Taille des donn´es*/ e l, 0) ; /*Pour construire l’en tˆte 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 d´truire 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
  • 117.
    attendra une secondepour le lancement du processus et de la fonction Re- ceptionPaquet puis ex´cutera 16000 fois la boucle d’envoi de paquets (16000 e ports).Elle attendra encore 5 secondes pour le traitement des r´ponses 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 d’it´ration*/ e int i ; /*Pour stocker l’adresse IP*/ u int32 t IP Cible ; /*Variable qui va re¸evoir 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
  • 118.
    n”) ; return 0; while((optch= getopt(argc,argv,optstring)) !=EOF) switch(optch) /*Pour le nom de l’interface*/ case ’i’ : Device = (char *) (malloc(strlen(optarg)*sizeof(char))) ; strncpy(Device,optarg,strlen(optarg)) ; break ; /*Pour l’adresse IP de la machine cible*/ case ’c’ : IP Cible = inet addr(optarg) ; break ; default : printf(” nscanner -i interface -c IP Cible n”) ; return 0 ; /*On lan¸e le processus enfant (r´cuperation et analyse des paquets*/ c e Pid=fork() ; if(Pid==0) ReceptionPaquet(IP Cible,Device) ; /*On attend une seconde*/ 117
  • 119.
    sleep(1) ; /* On envoie les paquets sur les 16000 premiers ports*/ for(i=0 ;i¡16000 ;i++) EnvoiPaquet(IP Cible,i) ; /*On d´truit 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
  • 120.
  • 121.
    11.1 Les sites et revues ` consulter r´gulierement 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 fran¸ais disponibles en kiosque, je vous conseille d’acheter c le magazine MISC. Je ne suis pas d´pendant de MISC, mais c’est le seul e 120
  • 122.
    magazine enti`rement d´di´` la s´curit´ apportant des r´ponses 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 num´ros peuvent ˆtre aussi command´s sur le site de MISC, e e e 9 num´ros ayant ´t´ sortis jusqu’` septembre 2003. Chaque num´ro consti- e ee a e tue une tr`s bonne source d’informations. e Pour plus de renseignements : www.miscmag.com 121
  • 123.
    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 n’aurait 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
  • 124.
    Index A r´seaux . . . . . . . . . . . . . . . . . . . e 54 antisniff . . . . . . . . . . . . . . . . . . . . . . 47 d´synchronisation TCP . . . . . . . e 65 antivirus . . . . . . . . . . . . . . . . . . . . . 42 d´tourment de flux . . . . . . . . . . . e 64 architecture . . . . . . . . . . . . . . . . . 104 DHCP . . . . . . . . . . . . . . . . . . . . . . . 71 ARP-Poisoning . . . . . . . . . . . . . . . 64 ´puisement de ressources . e 71 arpwatch . . . . . . . . . . . . . . . . . . . . . 65 faux serveurs . . . . . . . . . . . . . 71 dictionnaire B attaque . . . . . . . . . . . . . . . . . . . 59 backdoors . . . . . . . . . . . . . . . . . . . . 43 DNS . . . . . . . . . . . . . . . . . . . . . . . . . 73 a ` distance . . . . . . . . . . . . . . . . 43 cache poisoning . . . . . . . . . . . 74 logicielles . . . . . . . . . . . . . . . . . 43 spoofing . . . . . . . . . . . . . . . . . . 73 banni`res . . . . . . . . . . . . . . . . . . . . . e 23 dsniff . . . . . . . . . . . . . . . . . . . . . . . . . 47 bibliotheques partag´es . . . . . . . e 45 BIOS . . . . . . . . . . . . . . . . . . . . . . . . . 11 E bogues . . . . . . . . . . . . . . . . . . . . . . . 26 encapsulation . . . . . . . . . . . . . . . . . 68 bombes e-mail . . . . . . . . . . . . . . . . 56 ethereal . . . . . . . . . . . . . . . . . . . . . . 47 bombes logiques . . . . . . . . . . . . . . 53 exploits . . . . . . . . . . . . . . . . . . . . . . 27 boot . . . . . . . . . . . . . . . . . . . . . . . . . 10 EXPN . . . . . . . . . . . . . . . . . . . . . . . . 96 disquette . . . . . . . . . . . . . . . . . 10 brute forcing . . . . . . . . . . . . . . . . . 59 F faille . . . . . . . . . . . . . . . . . . . . . . . . . 22 C failsafe . . . . . . . . . . . . . . . . . . . . . . . 10 Cain . . . . . . . . . . . . . . . . . . . . . . . . . 60 FAT . . . . . . . . . . . . . . . . . . . . . . . . . . 10 carte r´seau e FINGER . . . . . . . . . . . . . . . . . . . . . 77 transparent . . . . . . . . . . . . . . . 47 firewalking . . . . . . . . . . . . . . . . . . . 32 Chevaux de Troie . . . . . . . . . . . . . 42 firewall . . . . . . . . . . . . . . . . . . . . . . . 31 chroot . . . . . . . . . . . . . . . . . . . . . . . . 39 attaques . . . . . . . . . . . . . . . . . . 31 configuration . . . . . . . . . . . . . . . . . 31 fragmentation de paquets . . . . . 55 mauvaise . . . . . . . . . . . . . . . . . 26 FTP . . . . . . . . . . . . . . . . . . . . . . . . . 79 attaque par rebonds . . . . . . 80 D serveur anonyme . . . . . . . . . 79 d´nis de services e applicatifs . . . . . . . . . . . . . . . . 26 H distribu´s . . . . . . . . . . . . . . . . . 56 e HTTP . . . . . . . . . . . . . . . . . . . . . . . . 81 123
  • 125.
    I R IDENT . . . . . . . . . . . . . . . . . . . . . . . 83 r´seau e IDS . . . . . . . . . . . . . . . . . . . . . . . . . . 34 priv´ virtuel . . . . . . . . . . . . . . 36 e installations . . . . . . . . . . . . . . . . . . 26 rootkit . . . . . . . . . . . . . . . . . . . . . . . 45 IP spoofing . . . . . . . . . . . . . . . . . . . 84 IpvSec . . . . . . . . . . . . . . . . . . . . 36, 48 S scan . . . . . . . . . . . . . . . . . . . . . . . . . . 14 J furtifs . . . . . . . . . . . . . . . . . . . . 16 John The Ripper . . . . . . . . . . . . . 59 vanilla TCP . . . . . . . . . . . . . . 16 scanner . . . . . . . . . . . . . . . . . . . . . . . 14 K scripts . . . . . . . . . . . . . . . . . . . . . . . . 27 Knoopix . . . . . . . . . . . . . . . . . . . . . . 11 SHTTP . . . . . . . . . . . . . . . . . . . . . . 82 L signatures . . . . . . . . . . . . . . . . . . . . 42 libnet . . . . . . . . . . . . . . . . . . . . . . . 108 SMB . . . . . . . . . . . . . . . . . . . . . . . . . 94 libpcap . . . . . . . . . . . . . . . . . . . . . . 108 scans de shares . . . . . . . . . . . 94 LKM . . . . . . . . . . . . . . . . . . . . . . . . . 45 SMTP . . . . . . . . . . . . . . . . . . . . . . . . 96 LophtCrack . . . . . . . . . . . . . . . . . . 60 smurfing . . . . . . . . . . . . . . . . . . . . . . 55 sniffer . . . . . . . . . . . . . . . . . . . . . . . . 47 M snort . . . . . . . . . . . . . . . . . . . . . . . . . 35 man in the middle . . . . . . . . . . . . 67 SQL . . . . . . . . . . . . . . . . . . . . . . . . . . 97 MBR . . . . . . . . . . . . . . . . . . . . . . . . . 51 injection . . . . . . . . . . . . . . . . . . 97 mot de passe SSH . . . . . . . . . . . . . . . . . . . . . . . . . . 98 attaques . . . . . . . . . . . . . . . . . . 59 SSL . . . . . . . . . . . . . . . . . . . . . . . . . . 82 interception . . . . . . . . . . . . . . 47 SYN flood . . . . . . . . . . . . . . . . . . . . 54 N T NETBIOS . . . . . . . . . . . . . . . . . . . . 90 tcpdump . . . . . . . . . . . . . . . . . . . . . 47 Netcat . . . . . . . . . . . . . . . . . . . . . . . 22 TELNET . . . . . . . . . . . . . . . . . . . . . 99 NFS . . . . . . . . . . . . . . . . . . . . . . . . . . 91 traceroute . . . . . . . . . . . . . . . . . . . . 32 Nimda . . . . . . . . . . . . . . . . . . . . . . . 52 trappe . . . . . . . . . . . . . . . . . . . . . . . . 43 NIS . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Trinux . . . . . . . . . . . . . . . . . . . . . . . 10 Nmap . . . . . . . . . . . . . . . . . . . . . . . . 14 tunnel . . . . . . . . . . . . . . . . . . . . . . . . 36 NTFS . . . . . . . . . . . . . . . . . . . . . . . . 10 NTFS2DOS . . . . . . . . . . . . . . . . . . 10 U UDP Flood . . . . . . . . . . . . . . . . . . . 54 O UML . . . . . . . . . . . . . . . . . . . . . . . . . 39 outrepassements de droits . . . . 27 User Mode Linux . . . . . . . . . . . . . 39 P V ping of death . . . . . . . . . . . . . . . . . 55 vers . . . . . . . . . . . . . . . . . . . . . . . . . . 52 PORTMAP . . . . . . . . . . . . . . . . . . 93 virus . . . . . . . . . . . . . . . . . . . . . . . . . 51 prelude . . . . . . . . . . . . . . . . . . . . . . . 34 furtifs . . . . . . . . . . . . . . . . . . . . 51 124
  • 126.
    polymorphes . .. . . . . . . . . . . . 51 VPN . . . . . . . . . . . . . . . . . . . . . . . . . 36 VRFY . . . . . . . . . . . . . . . . . . . . . . . 96 W Winux . . . . . . . . . . . . . . . . . . . . . . . 51 X XWINDOW . . . . . . . . . . . . . . . . . 100 125