Vous êtes sur la page 1sur 32

Introduction à la sécurité

Table des matières
Notions et principes de base.................................................................................................................3
Définitions.......................................................................................................................................3
Système d'information.................................................................................................................3
Sécurité du système d'information..............................................................................................3
Besoin de sécurité.......................................................................................................................3
Critères de sensibilité et de sécurité............................................................................................3
Menace........................................................................................................................................4
Risque..........................................................................................................................................5
Sécuriser un système...................................................................................................................5
La défense en profondeur............................................................................................................5
La sécurité au sein de l'entreprise....................................................................................................5
Une approche globale..................................................................................................................5
La politique de sécurité...............................................................................................................6
Plan de continuité d'activité........................................................................................................6
Moyens techniques...............................................................................................................................7
Contrôle d'accès...............................................................................................................................7
Définition....................................................................................................................................7
Ressources, droits et profil..........................................................................................................7
Authentification..........................................................................................................................8
Architecture.................................................................................................................................9
Protection des données...................................................................................................................10
Contrôle d'intégrité....................................................................................................................10
Protection de la confidentialité..................................................................................................11
Disponibilité..............................................................................................................................13
Surveillance du réseau...................................................................................................................14
Segmentation du réseau............................................................................................................14
Parefeux et DMZ.......................................................................................................................15
Translation d'adresse.................................................................................................................16
Serveur mandataire et interconnexion.......................................................................................16
Sonde, IDS et IPS......................................................................................................................16
Chiffrement des liens................................................................................................................17
Les services essentiels: DNS et NTP........................................................................................18
Protection applicative....................................................................................................................19
Séparation des privilèges..........................................................................................................19
Protection antivirus...................................................................................................................19
Renforcement du système d'exploitation, empreinte et pot de miel.........................................19
Architecture logicielle et principe du moindre privilège..........................................................20
Gestion de la mémoire et contrôle des formats de données......................................................21
Les attaques........................................................................................................................................23
Programmes malveillants...............................................................................................................23
Outils génériques.......................................................................................................................23
Attaques spécifiques aux messageries......................................................................................23

1/32
Attaques par le réseau....................................................................................................................23
Principales techniques...............................................................................................................23
Cartographie du réseau..............................................................................................................25
Attaques cryptanalytiques par canaux auxiliaires ....................................................................26
Recherche de vulnérabilités sur des binaires............................................................................27
En pratique..........................................................................................................................................29
Les applications web......................................................................................................................29
Le wifi............................................................................................................................................32

2/32
Notions et principes de base

Définitions

Système d'information
Le système d'information représente l'ensemble des éléments participant à la gestion, au stockage, 
au traitement, au transport et à la diffusion de l'information dans l'entreprise.
Il est composé de plusieurs éléments :
– d'une infrastructure constituée de réseaux et d'équipements actifs visant à assurer le stockage (ex 
:   serveur   de   fichier),   la   transmission   (ex   :   réseau   de   données),   l'affichage   ((ex   :   écran)), 
l'échange (ex : passerelle d'interconnexion) et l'acquisition de données (ex : caméra, poste de 
travail, robot logiciel).
– d'un ensemble organisés d'outils logiciels, d'humains et de procédures assurant le traitement des 
données afin de répondre aux besoins de l'organisation tant dans les fonctions opérationnelles 
(production, réalisation de processus industriels) que les fonctions support (aide à la décision, 
gestion RH, ...).
  D'une manière générale, le système d'information permet de :
– collecter des informations ;
– stocker les informations ;
– traiter les informations ;
– diffuser les informations.

Sécurité du système d'information
La sécurité du système d'information ne se limite pas à la protection des systèmes informatiques 
ou de l'information numérique. Elle s'applique à la protection de l'information sous toute ses formes. 
L'objectif est de protéger l'information contre l'accès, la diffusion, la destruction et la modification 
illégitimes tout en garantissant sa disponibilité et son intégrité pour le système d'information.
Pour   assurer   la   sécurité,   il   est   nécessaire   d'apprécier   les   risques   qui   pèsent   sur   le   système 
d'information et de prendre les mesures nécessaires afin de garantir un niveau de sécurité conforme 
au besoin de sécurité.

Besoin de sécurité
Le  besoin   de   sécurité  correspond   à   l'expression   des   exigences   opérationnelles   du   système 
indépendamment   de   toute   considération   technique.   Il   s'appuie   sur   la   définition   des   niveaux   à 
atteindre en matière de critères de sensibilité et de sécurité.

Critères de sensibilité et de sécurité
Les critères habituellement utilisés sont :
– La disponibilité ;
– L'intégrité ;

3/32
– La confidentialité ;
– La traçabilité, l'imputabilité, la preuve, ou la non­répudiation.
La disponibilité correspond à la mesure du rapport entre la période durant laquelle un système est 
opérationnel   est   celle   durant   laquelle   on  aurait   souhaité   qu'il   le   soit.   Par  exemple,   un   système 
opérationnel   à 99% est  utilisable  99% du temps  pendant  lequel  on désire l'utiliser  (et non   pas 
disponible 99% du temps).
L'intégrité correspond au niveau de protection du système contre une altération ou une destruction 
volontaire ou accidentelle qui entraîne l'impossibilité de l'utiliser de la manière prévue initialement. 
L'intégrité correspond à la prise en compte de quatre informations : l'intégralité (il ne manque pas 
d'élément),   la précision  (ex : l'heure donnée est suffisamment  précise), l'exactitude  (fiabilité   de 
l'information) et la validité (pertinence et légitimité de l'information par rapport à son usage).
La  confidentialité  correspond au niveau de protection contre un accès à une information par des 
entités non autorisées.
La  traçabilité  et l'imputabilité  correspondent à la capacité à identifier et suivre un élément du 
système d'information. Elle vise a assurer la non­répudiation.
La  non­répudiation  correspond à la possibilité de vérifier que l'envoyeur et le destinataire sont 
bien les parties qui disent avoir respectivement envoyé ou reçu le message. Autrement dit, la non­
répudiation de l'origine prouve que les données ont été envoyées, et la non­répudiation de l'arrivée 
prouve qu'elles ont été reçues.

Menace
Une menace correspond à une méthode d'attaque résultant d'un élément menaçant.
L'élément menaçant peut être :
– un humain ;
– la nature ;
– l'environnement (social, juridique, logiciel, matériel, ...).
La méthode d'attaque peut être d'origine :
– volontaire (malveillance) ;
– accidentelle;
– involontaire, c'est­à­dire liée à une erreur, ce qui suppose une action ou une absence d'action 
(maladresse, négligence, inconscience).
Elle peut être de nature  :
– technique :
– logiciel : virus, cheval de troie, rootkit, logiciel espion.
– matériel : défaillance matérielle.
– environnement : incendie, inondation, climatisation.
– humaine :
– ingénierie sociale ;
– espionnage.
– juridique, financière, ...
– législation relative à la cryptographie ;
– législation relative à la vie privée ;

4/32
– législation relative aux licences ;
– législation relative à la gestion des documents d'archive.
L'élément impacté par une menace est de nature variée :
– un matériel ;
– un logiciel ;
– une personne ;
– un processus.
L'ingénierie   sociale  est   une   méthode   visant   à   obtenir   d'une   personne   des   informations 
confidentielles, que l'on n'est pas normalement autorisé à obtenir, en vue de les exploiter à d'autres 
fins. Elle consiste à se faire passer pour quelqu’un que l’on est pas (en général un administrateur) et 
de   demander   des   informations   personnelles   (nom   de   connexion,   mot   de   passe,   données 
confidentielles, etc.) en inventant un quelconque prétexte (problème dans le réseau, modification de 
celui­ci,   heure   tardive,   etc.).   Elle   peut   se   faire   soit   au   moyen   d’une   simple   communication 
téléphonique, soit par mail, soit en se déplaçant directement sur place (très rare).

Risque
Le risque est l'appréciation d'une menace en fonction de la probabilité et l'impact de sa réalisation. 
L'impact peut être apprécié de manière qualitative ou quantitative (y compris monétaire).
La   vulnérabilité   d'un   système   traduit   son   exposition   au   risque.   Un   système   est   d'autant   plus 
vulnérable que la probabilité de réalisation et l'impact des menaces sont importants. De manière 
caricatural, on peut écrire : Vulnérabilité = probabilité X impact.
La vulnérabilité global du système résulte de la somme des vulnérabilité marginales du systèmes 
aux différentes menaces.

Sécuriser un système
La confrontation des menaces aux besoins de sécurité permet de ne retenir que les risques qu'il est 
nécessaire de prendre en compte du fait de leur importance. Ceci permet de mettre en œuvre des 
mesures de sécurité qui diminuent le niveau de risque afin d'atteindre un niveau de sécurité qui soit 
conforme au besoin de sécurité.

La défense en profondeur
Le  principe   de   défense   en   profondeur  consiste   à   sécuriser   indépendamment   chaque   sous­
ensemble   du  système. Il s'oppose à la vision d'une protection  périphérique.  Le corollaire  de  la 
défense en profondeur est le principe de subsidiarité qui confie la réalisation d'une action à la plus 
petite entité capable de la réaliser elle­même. Ce qui se résume en disant que la sécurité ne se 
délègue pas à quelque niveau que ce soit.

La sécurité au sein de l'entreprise

Une approche globale
La sécurité du système d'information doit traiter de l'ensemble des éléments qui compose le système 
d'information, ce qui comprend de manière non exhaustive :

5/32
– la sécurité physique ;
– la sécurité des zones d'hébergement ;
– la sécurité des réseaux et de leur interconnexions ;
– la sécurité des systèmes d'exploitations ;
– la sécurité des applications ;
– la sécurité des données ;
– la sécurité des utilisateurs.

La politique de sécurité
La politique de sécurité est un ensemble d'orientation fixée en matière de sécurité. Elle est déclinée 
par   les   entités   responsable   de   la   sécurité   dans   leur   domaine   de   responsabilité.   Ceci   se   traduit 
généralement sous la forme de :
– de règles et de procédures à respecter ;
– de la mise en place d'outils techniques contribuant au respect de ces règles ;
– de formations des utilisateurs sur les comportements à avoir ;
– d'actions à entreprendre et de personnes à entreprendre lorsque des événements contrevenant 
aux règles sont détectées.
Concernant  tous  les  acteurs  au sein de l'entreprise,  elle  se doit d'être  élaborée  au niveau  de  la 
direction de l'organisation concernée, car elle concerne tous les utilisateurs du système. Un bon 
niveau de formation des utilisateurs et la précision dans la définition des règles permet de limiter les 
inadéquations   entre   les   usages   des   utilisateurs   et   les   possibilité   offertes   par   le   système 
d'information.

Plan de continuité d'activité
Le  plan de continuité  est le complément de la politique de sécurité. Il a pour but de limiter les 
éventuelles conséquences d'une catastrophe et de définir les opérations à mener en cas de réalisation 
d'une menace dont l'impact rend impossible le maintien du fonctionnement nominal du système 
d'information. Il est aussi appelé "plan de reprise d'activité".

6/32
Moyens techniques

Contrôle d'accès

Définition
Le contrôle d'accès est la première mesure essentielle et indispensable à mettre en oeuvre dans le 
cadre   de   la   protection   d'un   système.   Concrètement,   c'est   permettre   à   un   sujet   d'accéder   à   une 
ressource sous certaines conditions afin d'effectuer un certain nombre d'opérations. Autrement dit, il 
vise à  garantir les droits d'accès aux données et ressources d'un système, en mettant en place des 
mécanismes   d'authentification   et   de   contrôle.   Ces   mécanismes   permettent   d'assurer   que   les 
utilisateurs des dites ressources possèdent uniquement les droits qui leurs ont été octroyés.
Le contrôle est généralement discrétionnaire. C'est le propriétaire qui définit les règles d'accès sur 
les informations ou systèmes dont il a la responsabilité. La définition des responsabilités est donc un 
préalable afin de savoir qui doit définir ces règles.

Ressources, droits et profil
Les ressources peuvent être très diverses dans leur nature :
– pièce dans un bâtiment ;
– partage de fichiers ;
– librairie ou exécutables;
– flux multimédias (image, son, ...)
– fichier sur un disque local ;
– boîte de messagerie ;
– ...
Les règles applicables peuvent généralement être rangées dans trois catégories :
– droit de lecture ;
– droit d'écriture ;
– droit d'exécution.
Elles sont généralement associées à des conditions d'environnement. Par exemple, un utilisateur 
distant aura des droits réduits par rapport à la situation où il travaille au sein même de l'entreprise. 
Le droit d'écriture peut être conditionné à la concurrence des accès. Par exemple, la modification 
simultanée des données sur une tout ou partie d'une base de données par plusieurs utilisateurs peut 
être interdite, ce généralement en fonction des dépendances entre les données.
L'attribution   de   règles   ne   se   limite   pas   à   des   utilisateurs   mais   à   tout   système   manipulant   des 
informations. Il est en général courant qu'une même ressource soit utilisée à la fois par des êtres 
humains et des automates. Par exemple : les données d'un serveur de fichiers sont utilisées par les 
utilisateurs   et   les   outils   de   sauvegardes   (on   ne   veut   généralement   pas   que   les   données   soient 
modifiées pendant la sauvegarde).
Le  nombre de catégories  de règles  d'accès  ne se limite  pas  à trois. Par exemple,  pour le  droit 
d'écriture, on distingue souvent l'ajout d'information, la suppression d'information et la modification 
des informations existantes.

7/32
Les droits d'accès ne sont pas directement attribuées aux utilisateurs. En effet, dès que le nombre 
d'utilisateur devient conséquent il devient impossible de s'assurer la cohérence des règles de chaque 
utilisateur au cours du temps. C'est pourquoi, on crée des profils d'utilisateurs correspondant à des 
configurations type de droits et ceux sont ces profils qui sont attribuées aux utilisateurs. Ainsi pour 
modifier les droits de tous les utilisateurs d'une même catégorie, il suffit de modifier un profil et 
non les droits de tous les utilisateurs.

Authentification
Pour pouvoir appliquer les règles d'accès, une condition nécessaire est d'authentifier l'utilisateur. Il 
est ainsi possible d'associer à l'identité de l'utilisateur l'ensemble des règles d'accès associées à son 
profil.
L'utilisation de profils facilite la délégation de l'authentification à un système tiers. Ce dernier met 
en   oeuvre   les   mécanismes   associés,   il   transmet   ensuite   un   identifiant   associée   à   une   session 
contenant   en   particulier  l'information   du  profil   à  utiliser.   Ceci   évite   de  multiplier  les  bases   de 
comptes et facilite d'autant l'exactitude et la validité des données dans le temps. Ce mécanisme 
impose   de   rendre   le   canal   de   communication   entre   le   système   opérationnel   et   le   système 
d'authentification sûr et le passage par la solution d'authentification incontournable.
Authentification forte
L'authentification   forte   repose   sur   la   vérification   de   deux   éléments   dans   les   trois   catégories 
suivantes :
– ce que l'on possède : carte à puce ;
– ce que l'on est : biométrie ;
– ce que l'on sait : mot de passe, code confidentiel.
Dans   les   solutions   basées   sur   ce   que   l'on   possède,   on   distingue   les   solutions   passives   (pistes 
magnétiques,   clef)   des   solutions   actives   (appareil   électronique).   Les   solutions   électroniques   se 
divisent en dispositifs déconnectés qui fournissent à l'utilisateur un code (token) et ceux connectés 
qui utilisent un dialogue entre l'élément physique et le système d'authentification (carte à puce). Les 
dernières sont les plus coûteuses mais permettent de rendre des services complémentaires comme le 
stockage du dossier d'un utilisateur.
Dans les solutions basées sur ce que l'on sait, il existe notamment les techniques suivantes :
– l'empreinte digitale ;
– la reconnaissance de la main ;
– la reconnaissance faciale ;
– l'analyse vocale ;
– l'analyse de l'iris ;
– la reconnaissance dynamique de la signature.
Le principe de ces solutions repose sur le stockage une empreinte numérique des informations de 
l'utilisateur   analysées   qui   peut   être   formée   à   partir   de   points   caractéristiques.   Lors   de 
l'authentification de l'utilisateur, cette empreinte est recalculée dynamiquement et comparée à la 
base d'empreinte stockée.
Ce système ne permet pas de révoquer des accès en cas de compromission. L'information utilisée 
peut potentiellement être facile obtenir soit dans la vie quotidienne pour l'empreinte digitale soit via 
un système biométrique basé sur le même principe.

8/32
Dans les solutions basées sur ce que l'on sait, l'utilisateur transmet une information qu'il est seul à 
connaître,  le système d'authentification vérifie que l'information fournie par l'utilisateur est bien 
celle attendue. Un exemple simple est le mot de passe. L'information doit être véhiculée par un 
canal sûr afin d'éviter l'interception de l'information.
Une  solution   alternative   est de  demander   à  l'utilisateur   de  fournir une  information  différente   à 
chaque fois qu'il peut calculer à partir d'une information que lui et le système d'authentification 
possèdent. C'est le challenge/réponse. Par un exemple, l'utilisateur reçoit une chaîne de donnée. Il 
utilise son secret et cette chaîne de donnée pour calculer une nouvelle chaîne de donnée avec une 
fonction   à sens unique ou fonction de hachage. Il transmet le résultat  de ce calcul au système 
d'authentification qui vérifie que le résultat est le bon. Ceci permet d'éviter le rejeu.
Les  solutions  basées sur ce que l'on sait dépendent beaucoup des règles de gestion du secret : 
complexité du mot de passe, durée de vie, stockage de cette information sur le serveur, réutilisation 
du mot de passe,  ...
La règle de base est de ne jamais donner aucun mot de passe à personne et en particulier à un 
administrateur.
Infrastructure de gestion de clefs
Une  infrastructure  de gestion de clefs  (ou infrastructure  à clefs  publiques) permet  de gérer   les 
certificats électroniques durant toute leur vie. Elle fournit les services suivants :
– Enregistrement des utilisateurs ;
– Génération de certificats ;
– Renouvellement de certificats ;
– Révocation de certificats ;
– Publication des certificats ;
– Publication des listes de révocation (comprenant la liste des certificats révoqués) ;
– Identification et authentification des utilisateurs ;
– Archivage, séquestre et recouvrement des certificats (option).
Elles contients les entités suivantes :
– L'Autorité de Certification (AC ou CA) qui a pour mission de signer les demandes de certificat 
(CSR : Certificate Signing Request) et de signer les listes  de révocation (CRL : Certificate 
Revocation List).
– L'Autorité   d'Enregistrement   (AE   ou   RA)   qui   a   pour   mission   de   générer   les   certificats,   et 
d'effectuer les vérifications d'usage sur l'identité de l'utilisateur final (les certificats numériques 
sont nominatifs et uniques pour l'ensemble de l'IGC).
– L'Autorité de Dépôt (Repository) qui a pour mission de stocker les certificats numériques ainsi 
que les listes de révocation (CRL).
Les   certificats   sont   normalement   délivrés   pour   un   usage   donné.   On   distingue   en   général   les 
certificats de signature et ceux de chiffrement. Un découpage plus fin peut évidemment être choisi.

Architecture
On distingue principalement deux architectures de délégation de l'authentification :
– le   portail   unifié   généralement   basé   sur   l'utilisation   d'un   serveur   mandataire.   L'utilisateur 
s'authentifie une fois auprès d'un portail qui relaie les requêtes de l'utilisateur   avec le profil 
associé auprès des autres applications;

9/32
– le serveur d'authentification : l'utilisateur accède directement à l'application qui demande au 
serveur   d'authentification   de   vérifier   les   informations   d'authentification   transmises   par 
l'utilisateur.
Dans le cas où l'authentification n'est pas déléguée, l'une des deux solutions est adoptée au sein d'un 
unique système.

Protection des données

Contrôle d'intégrité
Les codes correcteurs d'erreurs
Lors   du   stockage   ou   du   transfert   d'une   information,   le   signal   ou   le   support   peut   subir   des 
modification affectant l'intégrité de celle­ci du fait :
– de la perte d'un paquet ;
– de l'impossibilité de savoir si un bit est à 0 ou 1 (vieillissement du support) ;
– ...
Le codage correcteur d'erreur, ou codage de canal, assurent une redondance de l'information. Ils 
sont caractérisés par leur capacité à détecter et corriger des erreurs en fonction de leur type. Les 
erreurs peuvent être isolées, en bloc, uniformément aléatoires. Le choix du code correcteur repose 
donc   d'une   part   sur  la  connaissance  des  erreurs  possibles  et   d'autre  part   sur  la   fréquence   avec 
laquelle elles se produisent.
Le principe est de rajouter à l’information numérique, des symboles binaires, appelés symboles de 
redondance, suivant une loi mathématique particulière. Le décodeur vérifie que la loi de codage n’a 
pas été modifié lors des divers traitements réalisés sur l’information numérique codée. Si c’est le 
cas, le décodeur conclut à l’absence d’erreurs ; dans le cas contraire, par un traitement approprié, il 
repère les symboles erronés puis les corrige par simple inversion binaire.
Un exemple simple est le contrôle de parité. Sur un octet (8 bits d'information 0 ou 1), un bit est 
utilisé pour indiquer la parité des sept autres. Si un nombre impair d'erreurs se produit, on peut 
détecter qu'il y a eu une erreur mais pas la corriger.
Un   exemple   plus   complexe   mais   beaucoup   plus   performant   sont   les   turbocodes   qui   sont   par 
exemples utilisés dans l'UMTS. Ils permettent d'obtenir de très bons résultats proches de la limite 
théorique de pouvoir de correction de Shannon.
Le principe est d'associer deux codes correcteurs simples pour obtenir un code composite à deux 
dimensions.   Concrètement,   le   turbo   codeur   produira   trois   sorties   à   envoyer   sur   le   canal   de 
transmission (après modulation éventuelle) :
– l'entrée du turbo­codeur ;
– la sortie du premier codeur ;
– la sortie du deuxième codeur. 
Ce codage permet donc de répartir l'information apporté par un bit de la trame sur ses voisins (avec 
le codage du premier codeur) et même sur toute la longueur de la trame transmise (avec le codage 
du deuxième codeur). Ainsi, si une partie du message est fortement abîmée pendant la transmission, 
l'information peut encore se retrouver ailleurs.
Pour   décoder,   chaque   code   élémentaire   est   d'abord   décodé   avec   le   premier   codeur   puis   on 

10/32
renouvelle le processus de décodage dans le second et ainsi de suite. Ceci permet à chaque étape de 
corriger de nouvelles erreurs.
Le pouvoir de correction de tout code correcteur ne permet pas de dépasser la capacité du canal qui 
est définit par la limite de Shannon ou seuil plancher pour le rapport signal/bruit.
Les codes correcteurs d'erreurs ne permettent pas de se prémunir des modifications intentionnelles. 
L'attaquant   est  en  effet  en  mesure  de  recalculer  les   valeurs   de  redondances   et  ainsi  cacher   les 
modifications qu'il a effectuées. 
Condensat numérique ou fonction de hashage
Une fonction de hachage est une fonction qui fait subir une succession de traitements à une donnée 
quelconque fournie en entrée pour en produire une empreinte servant à identifier la donnée initiale.
Ceci permet de stocker des mots de passe. En ne stockant que l'empreinte, on ne dispose pas du mot 
de passe. Lorsque l'utilisateur  s'authentifie,  on compare l'empreinte  calculée avec celle  stockée. 
L'utilisation d'un sel par utilisateur permet d'éviter que deux utilisateurs avec le même mot de passe 
aient la même empreinte.
Des exemples de fonction de hashage sont md5, sha­1 ou sha­2.
Les condensats numériques permettent également de calculer des sommes de contrôles. Ceci donne 
un moyen simple de vérifier l'intégrité lors d'une transmission de données.
Scellement numérique et signature numérique
Deux techniques peuvent être utilisées : le scellement numérique et la signature électronique.
Le scellement numérique repose sur un algorithme non linéaire irréversible qui permet de calculer 
un sceau à partir des données transmises. Ce sceau est ensuite ajouté aux données utiles et transmis 
avec l'information. L'algorithme de scellement peut être un algorithme de chiffrement par bloc en 
mode CBC dans lequel on utilise le bloc précédent chiffré et le bloc à chiffrer pour calculer le 
nouveau chiffré. 
Ce peut également être une fonction de condensation ou fonction de hachage dont le résultat est 
chiffré avec un algorithme de chiffrement symétrique.
La signature numérique est un scellement particulier dans lequel on chiffre le condensat numérique 
avec un algorithme asymétrique ce qui garantit l'identité de la personne qui a créé le message.

Protection de la confidentialité
Chiffrement
Le chiffrement des informations vise à rendre incompréhensibles les données par un attaquant. Elle 
est utilisée pour les connexions sécurisées dans le cadre du commerce électronique. La sécurité 
repose sur la connaissance d'un secret. Une attaque courante contre cette technique est l'attaque par 
le milieu ou man in the middle. Elle consiste à se faire passer auprès de chacun des intervenants 
pour l'autre intervenant.
Les principaux systèmes de chiffrement sont :
– le chiffrement symétrique. Il utilise la même clef pour chiffrer et déchiffrer.
– Le   chiffrement   asymétrique.   Il utilise  des   clefs   différentes  :  une  paire  composée  d'une  clef 
publique, servant au chiffrement, et d'une clé privée, servant à déchiffrer. Le point fondamental 

11/32
soutenant cette décomposition publique/privée est l'impossibilité calculatoire de déduire la clé 
privée de la clé publique.
La sécurité du chiffrement repose non pas sur l'algorithme utilisé mais sur le secret utilisé. Il est 
donc recommandé d'utiliser des longueurs minimales :
– pour un chiffrement symétrique, une clef d'au moins 128 bits.
– pour un chiffrement asymétrique, une clef d'au moins 2048 bits.
La taille de la clef doit être d'autant plus longue que l'information sera confidentielle longtemps. Il 
est par ailleurs recommandé d'utilisé des chiffrements par blocs et non par flot avec des tailles de 
blocs d'au moins 128 bits. Il est recommandé d'utiliser un chiffrement symétrique AES­CBC et la 
fonction de hashage SHA­256. Sauf exception, il faut également limiter la crytopériode (la durée 
limitée d'emploi d'une clé de chiffrement) à une durée inférieure à deux ans.
Stéganographie
La stéganographie est l'art de la dissimulation. L'objet n'est pas de rendre un message inintelligible 
mais de le faire passer inaperçu. Pour être efficace, il faut que le procédé utilisé empêche une 
personne interceptant le message :
– de découvrir le contenu caché ;
– de savoir qu'un contenu est caché ;
– empêcher la transmission d'un contenu caché éventuel ;
– d'envoyer une fausse information en se faisant passer pour l'émetteur.
Les techniques pouvant être utilisées sont l'utilisation :
– d'un message adhoc ou codage sous forme d'une apparence de spam. Le message utilise une 
convention connue pour transmettre via des banalités de l'information. Le principe est d'utiliser 
un codage binaire simple basé sur l'utilisation de synonyme par exemple (succès = 1, réussite = 
0). Ce procédé est difficilement utilisable de manière répétée.
– de modification mineures du contenu, par exemple l'usage des bits de poids faible d'une image 
(LSB)   ou   la   modulation   fine   d'un   texte   écrit.   Décaler   une   lettre   de   quelque   pixels   est 
pratiquement invisible à l'œil nu. En jouant sur les interlettrages d'un texte très long et à raison 
de deux valeurs d'espacement correspondant à 1 et 0, il est possibḷe de transmettre un message  
sous   forme   papier.   De   la   même   façon,   on   peut   marquer   les   caractères   (avec   un   point   par 
exemple).
– La dissimulation dans un élément annexe du contenu. Cela consiste par exemple à maintenir une 
image intacte mais à y incorporer une table des couleurs ou palette construite dans un ordre qui 
paraît arbitraire.
Les canaux cachés
Un canal caché est un canal de communication qui utilise la bande passante d'un autre canal dans 
l'objectif de transmettre des informations sans l'autorisation ou la connaissance du propriétaire de 
l'information. Il existe deux types de canaux cachés :
– Les storage channels : le processus émetteur modifie une donnée particulière, et le processus 
récepteur détecte et interprète la donnée modifiée pour recevoir indirectement des informations.
– Les   timing   channels   :   le   processus   émetteur   module   la   durée   d'une   tâche   effectuée   par   le 
processus récepteur, et le processus récepteur interprète cette variation comme une information.
La protection contre de tels système est très difficile et n'est généralement possible que dans le cas 

12/32
de   comportements   facile   à   détecter   et   peu   ambigu.   Tout   canal   qui   permet   d'envoyer   deux 
informations peut être utilisé comme canal caché.
Les données oubliées
La protection de la confidentialité nécessite de se premunir contre le vol de données dont on a 
oublié l'existence.
Par exemple, une femme de ménage dans une entreprise volant chaque jour quelques pages en bas 
d'une   des   piles   de   papier   sur   un   bureau   a   toute   les   chances   que   l'on   ne   s'aperçoive   pas   de   la 
disparition de ces documents.
Les   disques   durs   contiennent   de   nombreuses   données   résiduelles.   Pour   accéder   à   un   fichier   le 
système utilise une table des fichiers qui donne la correspondance entre le nom du fichier et son 
emplacement sur le support physique. Pour des raisons de performance, lors de l'effacement d'un 
fichier, on ne supprime que la référence dans la table. Le fichier est donc toujours accessible si l'on 
lit le support au bon endroit. 
Des outils permettent de récupérer l'information sur un support sans la table des fichiers. Les outils 
d'effacement résiduel suppriment le fichier du support en écrivant des données aléatoires sur les 
espaces non affectés à des fichiers présent dans la table. Il effectuent cette tâche plusieurs fois car à 
chaque écriture les données précédentes ne sont pas totalement effacées. En effet la tête du disque 
dur n'inscrit jamais la donnée exactement au même endroit sur le disque.
Des   données   peuvent   également   être   conservées   dans   les   imprimantes   réseaux,   sur   les   disques 
réseaux de partage de fichiers, fichiers de quarantaine des antivirus, fichiers temporaires, ... Toutes 
ces zones peuvent être la source de fuite d'informations.

Disponibilité
Haute­disponibilité
La haute disponibilité correspond à des sytèmes pour lesquels on a mis en place des mécanismes 
assurant une disponibilité suffisante. On distingue quatre techniques :
– l'asynchronisme. Un élément synchrone peut être bloqué car il attend une ressource pour être 
actif. Un fonctionnement asynchrone lui permet d'être disponible même si des ressources lui 
manque pour traiter la requête.
– la répartition de charge. La puissance des éléments doit être suffisante pour assurer le service si 
l'un d'entre eux est défaillant. Par exemple avec trois machines, chaque serveur doit pouvoir 
assurer 50% de la charge. Ceci permet d'avoir une très bonne fiabilité puisqu'un élément fiable à 
99% redondé une fois donne une fiabilité de 99,99% (probabilité que les deux éléments soit 
défaillants au même moment = 1/100x1/100 = 1/10.000 ). Dans un fonctionnement actif/actif, 
tous les composants sont actifs en permanence. En mode actif/passif, le secours surveille les 
autres équipements et remplace l'élément défaillant lorsqu'il le détecte.
– la redondance différentielle. On utilise des outils différents pour assurer la même fonction. Par 
exemple : utilisation de deux antivirus de marque différente.
– la   redondance   avec   système   de   vote.   Différents   composants   traitent   les   mêmes   entrées   et 
produisent donc (en principe) les mêmes sorties. Les résultats produits par tous les composants 
sont collectés, puis un algorithme est mis en œuvre pour produire le résultat final. L’algorithme 
peut être simple (vote à la majorité) ou complexe (moyenne, moyenne pondérée, médiane…), 
l’objectif étant d’éliminer les résultats erronés imputables à un dysfonctionnement sur l’un des 

13/32
composants et/ou de fiabiliser un résultat en combinant plusieurs résultats légèrement différents.
Ce procédé est utilisé généralement dans les cas suivants :
– Des systèmes reposant sur des capteurs (exemple : capteurs de température) pour lesquels 
les capteurs sont redondés
– Des systèmes ou plusieurs composants différents assurant la même fonction sont utilisés et 
pour lesquels un meilleur résultat final peut être obtenu en combinant les résultats produits 
par   les   composants   (exemple   :   système   de   reconnaissance   de   formes   utilisant   plusieurs 
algorithmes pour obtenir un meilleur taux de reconnaissance.
Raid
Le   disque   dur   est   l'une   des   pièces   les   plus   fragiles   car   il   comporte   de   nombreuses   pièces 
mécaniques. La mise en raid permet de combiner de nombreux périphériques de stockage de sorte 
que ce groupement offre une capacité, une fiabilité et/ou des performances accrues, et ce pour un 
coût largement inférieur à un périphérique de stockage unique équivalent. Il peut être logiciel ou 
matériel. 
Le raid 0 consiste à faire travailler n disques en parallèle. La perte d'un disque entraîne la perte de 
données. Les performances sont améliorées. 
Le raid 1 consiste à faire travailler les disques en miroir. La capacité est celle du plus petit disque. 
La fiabilité est élevée puisqu'il faut perdre tout les disques pour perdre les données. Le coût est 
élevé.
Le raid 5 ajoute au raid 0 de la redondance afin de permettre de stocker sur n disques de taille X, 
(n­1) * X données. Il supporte la perte d'un disque et est pénalisé en écriture du fait de l'ajout de la 
redondance.
Le raid ne permet pas de protéger contre les destructions importantes  du fait par exemple d'un 
incident électrique. 
Les sauvegardes 
La sauvegarde consiste à dupliquer et à mettre en sécurité les données contenues dans un système 
informatique. La principale difficulté est la restauration des données sauvegardées dans le système 
en production. 
L'archivage
L'archivage   correspond   à   un   enregistrement   des   données   sur   un   support,   généralement   non 
réinscriptible, pour une conservation de longues durée. Les données archivées ne sont normalement 
plus utiles en production. La principale difficulté est le choix d'un support matériel et d'un format de 
fichiers pérennes en particulier dans les stockage de très longues durées (>30 ans).

Surveillance du réseau

Segmentation du réseau
ACL
La mise en place d'un plan d'adressage définissant la manière dont seront distribuées les adresses IP 
et du routage qui va permettre le transfert des informations sur le WAN constituent deux préalables 
à   la   maîtrise   des   flux.   Ceci   peut   s'accompagner   de   la   mise   en   place   d'ACL   (liste   de   contrôle 

14/32
d'accès ) définissant les adresses Ips ayant le droit de communiquer. Les ACL peuvent être utiliser 
pour filter  des protocoles utilisant des ports statiques  mais pas les protocoles complexes  à port 
dynamiques.
VLAN
L'IEEE a défini les VLAN (Virtual Area Network) sous la référence 802.1Q. Il s'agit d'un réseau 
local logique indépendant. Plusieurs VLAN peuvent être créer sur un même réseau physique. Ceci 
permet   de   segmenter   le  réseau   en  diminuant   la  zone   de  broadcast   et  contribue  également  à   la 
sécurité du réseau en rendant plus difficile le dialogue entre des machines appartenant à des VLAN 
différents.
Il existe des VLAN 
– par port physique ;
– par adresse MAC ;
– par adresse IP ou sous­réseau.

Parefeux et DMZ
Parefeux
Un pare­feu est parfois appelé coupe­feu ou encore firewall en anglais est un équipement offrant 
des fonctions de filtrage de paquets. Le filtrage se fait selon divers critères, les plus courants étant :
– l'origine ou la destination des paquets (adresse IP, ports TCP ou UDP, interface réseau, etc.)
– les options contenues dans les données (fragmentation, validité, etc.)
– les données elles­mêmes (taille, correspondance à un motif, etc.)
On distingue au moins deux familles de parefeux :
– pare­feu à états (stateful firewall) : ils permettent de filtrer les protocoles avec un suivi de la 
connexion. Ce suivi de connexion est soit lié au protocole dans le cas de TCP soit simulé pour 
UDP.
– Pare­feu applicatif : il vérifie la conformité du paquet à un protocole attendu. Il permet en outre 
de suivre les protocoles utilisant des ports dynamiques tels que FTP qui échangent au niveau 
applicatif des informations du niveau IP (échange d'adresses) ou du niveau TCP (échange de 
ports).
Le filtrage applicatif n'est pas toujours possible. Avec IRC, par exemple, une requête DCC (direct 
client to client) fait passer dans la requête au serveur le pseudo de l'utilisateur et non son adresse IP, 
le  pare­feu   ne peut donc pas  connaître  l'adresse IP du client  distant qui va essayer d'établir   la 
connexion.
DMZ
Les   parefeux   permettent   d'isoler   le   réseau   en   plusieurs   zones   de   sécurité   appelées   zones 
démilitarisées ou DMZ. Ces zones sont séparées suivant le niveau de confiance qu'on leur porte.
La DMZ (zone démilitarisées) se définit comme une zone, un sous­réseau voire même une plage 
d'adresses IP (ou une seule adresse IP) sur un réseau n'étant pas soumise aux règles d'un pare­feu 
mais dont les échanges avec d'autres zones sont filtrés. Généralement une DMZ n'accepte que les 
connexions entrantes si elle n'héberge que des serveurs, à l'exception de certains protocoles de base 
comme DNS ou NTP que les serveurs peuvent avoir besoin d'utiliser.

15/32
Translation d'adresse
La   translation   d'adresse   consiste   à   faire   correspondre   des   adresses   IP   internes   non­uniques   et 
souvent non routables à un ensemble d'adresses externes uniques et routables.
On distingue les types suivants :
– NAT : changement de l'adresse IP par une autre ;
– PAT : changement de l'adresse IP et du port.
Les   règles   de   correspondances   peuvent   être   statiques   ou   dynamiques,   unidirectionnelles   ou 
bidirectionnelles. Le NAT améliore la sécurité en cachant le réseau interne vis­à­vis de l'extérieur, 
une fois la connexion établie, la sécurité de la connexion n'est pas améliorée.

Serveur mandataire et interconnexion
Le serveur mandataire ou proxy (de l'anglais) est un serveur informatique qui a pour fonction de 
relayer des requêtes entre un poste client et un serveur. Les serveurs mandataires sont notamment 
utilisés pour assurer les fonctions suivantes :
– mémoire cache ;
– la journalisation des requêtes ;
– le filtrage et l'anonymat.
Le reverse proxy est implémenté du coté des serveurs. L'utilisateur passe par son intermédiaire pour 
accéder aux applications. Cette technique permet entre autre de protéger un serveur des attaques 
provenant de l'extérieur. Il permet en outre de fournir les services suivants :
– accélération SSL ;
– équilibrage de charges entre les serveurs ;
– cache des éléments statiques et compresssion des données.
Les serveurs mandataires permettent la mise en place d'interconnexions, c'est ­à­dire de relier des 
systèmes ayant des caractéristiques différentes et en particulier des niveaux de sécurité différents. 
Une interconnexion entre deux acteurs implique normalement :
– un engagement d'innocuité vis­à vis de l'autre ;
– un engagement de coopération pour contribuer à la sécurité ;
– la possibilité unilatérale de rompre ou de restaurer l'interconnexion ;
– la possibilité de contrôler les mesures de sécurité.

Sonde, IDS et IPS
Les sondes permettent d'écouter le trafic sans perturber le réseau. Elles comprennent un prisme 
(pour les fibres optiques) ou bien une connectique adaptée qui permet de capter une partie du signal 
afin de ne pas couper la liaison en cas de dysfonctionnement de la sonde. Le signal est ensuite 
stocké et peut être analysée par la sonde.
Un   système   de   détection   d'intrusion   (ou   IDS   :   Intrusion   Detection   System)   est   un   mécanisme 
destiné à repérer des activités anormales ou suspectes sur la cible analysée (un réseau ou un hôte). Il 
permet ainsi d'avoir une connaissance sur les tentatives réussies comme échouées des intrusions.
Comme   un   antivirus,   il   s'appuie   sur   la   recherche   de   signature   ou   de   motifs   (pattern).   Il   peut 
également essayer de faire de la corrélation entre plusieurs événéments issus de sondes différentes.

16/32
Un système de prévention d'intrusion (ou IPS, Intrusion Prevention System) est un outil similaire 
aux IDS, sauf que ce système peut prendre des mesures afin de diminuer les risques d'impact d'une 
attaque.   C'est   un   IDS   actif,   il   détecte   un   balayage   automatisé,   l'IPS   peut   bloquer   les   ports 
automatiquement.
Des comportements typiquement suspects sont par exemples :
– les scans : généralement beaucoup de petits flux depuis une adresse IP avec peu de sessions 
établies et beaucoup de messages icmp pour indiquer des ports fermés ;
– les virus et les vers : beaucoup de petits flux courts vers un grand nombre de machine et/ou de 
ports. Les destinations peuvent être aléatoires et ne pas correspondre à des segments réseaux 
routés. L'adresse source peut également ne pas faire partie du réseau si les paquets sont forgés.
– les réseaux cachés : encapsulation dans des flux DNS, icmp ou http. Des flux DNS ou icmp de 
plus  de  quelques secondes  et ko sont suspects. Des flux http symétriques  sont également à 
surveiller en particulier s'ils durent dans le temps. La détection d'adresses publiques ou de ports 
non standards est à surveiller.
– les flux répétifs : ceux­ci peuvent correspondre à de la messagerie ou de la navigation web.
– les   changements   de   protocoles   entre   deux   points   qui   peuvent   correspondre   à   différentes 
tentatives d'encapsulation.

Chiffrement des liens
IPSEC
Réalisé pour le protocole IPv6, IPSec fut adapté pour Ipv4. Il permet d'assurer un chiffrement et une 
authentification des flux au niveau de la couche transport. Il est l'un des éléments essentiel pour la 
mise en place des réseaux privés virtuels (VPN).
Son fonctionnement repose sur deux étapes :
– l'échange   des   clefs   :   une   connexion   UDP   depuis   et   vers   le   port   500  (canal   ISAKMP   pour 
Internet Security Association and Key Management Protocol). Le protocole IKE est en charge 
de négocier la connexion. Ce protocole permet deux types d'authentifications, PSK (Pre­Shared 
Key ou secret partagé) pour la génération de clefs de sessions ou à l'aide de certificats/signatures 
RSA.
– un ou plusieurs canaux de données par lesquels le trafic du réseau privé est véhiculé, deux 
protocoles sont possibles :
– le   protocole   n°50,   ESP   (Encapsulating   Security   Payload)   qui   fournit   l'intégrité   et   la 
confidentialité ;
– le protocole n°51, AH, (Authentication Header) qui ne fournit que l'intégrité.

Deux modes sont possibles :
– le mode transport : les données utiles sont chiffrées et le paquet est modifié en conséquence (en 
particulier la valeur du ckecksum).
– le mode tunnel. chaque paquet est chiffré dans son ensemble et le résultat devient l'information 
utile d'un nouveau paquet. Le tunnel préserve la confidentialité de toutes les informations sur les 
émetteurs et récepteurs dans le cas où on utilise le mode ESP.
Ceci   permet   de   créer   des   chaînes   de   tunnels   avec   des   redirections,   des   séparations   et   des 
multiplexation de flux. La compatibilité et l'interropérabilité des produits est le problème essentiel.
SSL/TLS

17/32
SSL/TLS est un protocole de sécurisation des échanges au niveau de la couche de session. 
Le chiffrement est réalisé par un chiffrement asymétrique (qui va permettre une authentification) et 
un   chiffrement  symétrique  (qui est plus  léger qu'un chiffrement  asymétrique)  qui va assurer  la 
transmission des informations. On y adjoint une fonction de hachage pour s'assurer que les données 
sont transmises sans être corrompues.
Dans la majorité des cas, l'utilisateur authentifie le serveur SSL sur lequel il se connecte. Cette 
authentification est réalisée par l'utilisation d'un certificat numérique X509 délivré par une autorité 
de confiance (AC). Mais de plus en plus d'applications web utilisent maintenant l'authentification 
du poste client en exploitant SSL. Il est alors possible d'offrir une authentification mutuelle entre le 
client et le serveur.
Le protocole utilisant le plus SSL/TLS pour fournir la couche de sécurité est HTTPS.
S/MIME
Multipurpose Internet Mail Extensions (MIME) est un standard internet qui étend le format de 
données   des   courriels   pour   supporter   des   textes   en   différents   codage   de   caractères   autres   que 
l'ASCII, des contenus non textuels, des contenus multiples, et des informations d'en­tête en d'autres 
codages que l'ASCII. Les courriels étant généralement envoyés via le protocole SMTP au format 
MIME, ces courriels sont souvent appelés courriels SMTP/MIME.
L'utilisation des types multipart/signed et multipart/encrypted permet de sécuriser le contenu des 
courriels.
multipart/signed est utilisé pour attacher une signature numérique à un message. Il est composé de 
deux parties : le corps du message et la partie signature. L'ensemble de la partie corps du message, y 
compris les en­têtes MIME, est utilisé pour générer la signature.
multipart/encrypted  est utilisé pour envoyer un contenu encrypté. Sa première partie définit les 
informations nécessaires pour décrypter la seconde partie (application/octet­stream).

Les services essentiels: DNS et NTP
Le service de nommage (DNS : domain name service) est l'un des services les plus utilisés et n'est 
pas le plus souvent correctement protégé. Les principales vulnérabilités sont :
– la fuite d'informations ;
– la corruption de la résolution ;
– le déni de service.
Dans le cas où une station interne peut effectuer des requêtes DNS vers l'extérieur, il est possible 
d'envoyer de l'information soit par un tunnel ssh sur le port 53 ou bien en faisant un tunnel IP 
directement   dans   le   trafic   DNS.   La   solution   est   de   n'autoriser   que   les   serveurs   mandataires   à 
effectuer des requêtes vers l'extérieur du réseau.
La corruption de la résolution vise à corrompre les données DNS pour assurer un trafic avec un 
autre site que celui désiré en :
– compromettant le processus de résolution ;
– en modifiant le trafic DNS ;
– en modifiant le cache dans le serveur de nom.
Le déni de service consiste à envoyer un grand nombre de question sur les serveurs DNS exposé à 
l'extérieur.

18/32
Il est  nécessaire de segmenter le service DNS en fonction des besoins. Le serveur DNS cache 
interne permet la résolution des adresses internes auprès des machines internes. Pour les proxys 
cherchant   à   résoudre   des   adresses   externes,   les   serveurs   caches   relaient   la   question   auprès   de 
serveurs   placés   en  DMZ  et  qui   ne  peuvent   que  faire   la  résolution  des  sites   externes.  Pour   les 
interrogations externes, un serveur dédié et isolé effectue la résolution des noms des domaines dont 
on a la responsabilité.
Pour la sécurisation du DNS vis­à­vis du contrôleur de domaine ou du serveur DHCP qui peuvent 
effectuer des mise à jours dynamiques   du DNS, il est possible de créer des sous­domaines sur 
lesquels ces serveurs ont des droits limités.
L'exploitation des journaux n'est possible que si les équipements sont à l'heure. Il donc important de 
les faire se synchroniser sur un serveur de temps en utilisant le protocole NTP.

Protection applicative

Séparation des privilèges

Protection antivirus
Censé  protégé  le  micro­ordinateur  contre  les  malwares,  l'antivirus  repose sur quatre  techniques 
principales :
– la recherche de séquences de programmes caractéristiques (détection sur signature), la méthode 
la plus usitée;
– l'analyse heuristique ou analyse du comportement
– la modification de zones réservées.
Les antivirus sont globalement satisfaisante pour se prémunir des attaques communes mais sont 
inefficaces face aux attaques ciblées ou aux codes malicieux complexes.
Lors de la détection d'un virus, l'antivirus dispose de trois options, il peut :
– tenter de réparer les fichiers endommagés en éliminant le virus ;
– mettre le fichier en quarantaine afin qu’ils ne puissent être accessibles aux autres fichiers ni se 
répandre et qu'il puisse éventuellement être réparé ultérieurement ;
– supprimer les fichiers contaminés.
En pratique, seule la suppression a un intérêt réel.

Renforcement du système d'exploitation, empreinte et pot de miel
Le renforcement des systèmes d'exploitation s'appuie avant tout sur l'utilisation de règles simples :
– verrouiller   les   comptes   utilisateurs   avec   un   mot   de   passe   ayant   un   niveau   de   complexité 
suffisante   (mélanger   chiffre   et   lettres,   minuscules   et   majuscules,   attention   à   l'attaque   par 
dictionnaire et aux substitutions basique o > 0 ou aux séquences de clavier " azerty ") ;
– gérer les accès au système de fichiers ;
– minimiser le nombre de services ;
– faire les mises à jour.
Une mesure complémentaire est de diminuer l'information diffusée par le serveur afin de rendre 
plus difficile l'identification du système d'exploitation utilisé et des logiciels associés.

19/32
On peut configurer les services afin de limiter l'information fournie par les banières. On peut aussi 
modifier le comportement réseau par une personnalisation de la pile TCP/IP. Ceci peut se faire soit 
avec un dispositif en coupure qui va appliquer des filtres (par exemple netfilter) modifiant ainsi les 
réponses soit en modifiant directement le comportement de la pile au niveau du noyau. La seconde 
solution   est   plus   intrusive   et   n'est   pas   toujours   possible   en   particulier   pour   les   systèmes 
d'exploitation propriétaires.
De nombreux paramètres dépendent du système d'exploitation, généralement pour des questions de 
performances : taille de la fenêtre, réponse sur des ports fermés en UDP et en TCP, ... Des outils 
sont également basés sur la réponse à des paquets mal formés. Une solution est d'utiliser un filtre 
suprimant les paquets mal formatés (taille de l'en­tête, combinaison de drapeaux invalide, ...) et 
réécrivant certains paramètres (recalcul du checksum, modification des drapeaux, ...) complété par 
une reconstruction des paquets fragmentés.
Ces   techniques   sont   en   général   difficiles   à   mettre   en   oeuvre   car   elles   rendent   plus   difficiles 
l'application des correctifs et des nouvelles versions. 
Pour comprendre les attaques qui sont menés contre des serveurs, une technique est la mise en place 
de   serveurs   dédiés,   les   honypots,   qui   servent   de   cibles   pour   les   attaques.   L'analyse   des 
comportements permet de mieux détecter les attaques sur les vrais serveurs.

Architecture logicielle et principe du moindre privilège
Les risques
Un   logiciel   ne  peut   être  sécurisé   que  si  la   problématique   est  traitée   dès   la  conception   initiale. 
Certains facteurs sont propices à des failles de sécurité et nécessitent des précautions particulières :
– utilisation d'un langage de bas niveau comme C qui permet nu grand nombre d'erreurs ;
– développement spécifique à une plate­forme avec utilisation de mécanismes spécifiques à la 
plate­forme ;
– utilisation de démons fournissant des services réseaux qui exposent le logiciel à une exploitation 
à distance;
– utilisation de protocole Internet complexes et qui contiennent parfois des problèmes de sécurité 
inhérents :  messagerie électronique, téléphonie sur IP.
Une bonne organisation des sources facilite la relecture du code. Un exemple d'organisation est la 
séparation des différentes parties du source en fonction des sous­systèmes associés. Une verbosité 
importante du code et des commentaires facilitent la compréhension de celui­ci.
La relecture des sources, l'audit du code et la vérification de l'utilisation mémoire sont indispensable 
au maintien de la sécurité d'un programme mais ces tâches sont complexes et coûteuses en temps.
Moindre privilège
Les  logiciels  sont souvent amenés  à faire des tâches  complexes. L'utilisation  d'une architecture 
monolithique rend difficile le maintien d'un bon niveau de sécurité. Certains services nécessitent 
des droits élevés comme par exemple l'écoute sur des ports privilégiés tandis que le programme 
peut être amené à traiter des données non sûres, gérer des files d'attentes, se connecter sur d'autres 
programmes, assurer de la disponibilité. La séparation en module permet de répartir les contraintes 
et   d'appliquer   des   exigences   adaptées   à   chaque   sous­partie.   Ceci   évite   que   des   erreurs   de 
programmation sur une sous­partie affecte le bon fonctionnement de l'ensemble.

20/32
Le programme doit utiliser le moindre privilège. C'est­à­dire que s'il n'a besoin d'aucun privilège, il 
n'a aucune raison d'être lancé avec les droits root. Si le programme a besoin d'effectuer des actions 
privilégiées, il doit les effectuer le plus tôt possible dans son fonctionnement.
Si le logiciel doit effectuer régulièrement des actions nécessitant des droits élevés, par exemple 
lancer des nouveaux processus, il faut isoler ces fonctions dans un sous­système spécifique dont le 
nombre de tâche sera réduit au minimum. En particulier l'utilisateur ne devra pas pouvoir effectuer 
des   tâches   dans   ce   contexte   et   les   données   en   entrée   et   en   sortie   devront   être   soigneusement 
vérifiées.
Chroot et jail
Chroot ou jail permettent de changer pour un programme le répertoire racine de la machine hôte. 
Ceci permet d'isoler l'exécution d'un programme et d'éviter ainsi certaines malveillances, comme 
l'exploitation d'un dépassement de tampon, pour ensuite accéder au répertoire racine de la machine 
hôte. Il permet également de faire tourner plusieurs instances d'un même ensemble de services ou 
démons sur la même machine hôte.

Gestion de la mémoire et contrôle des formats de données
Format des données
Le   programme   doit   considérer   comme   non   sûres   toutes   les   informations   qu'il   reçoit   d'autres 
programmes   ou   d'un   utilisateur.   Ceci   implique   en   particulier   de   vérifier   que   les   chaînes   de 
caractères   reçues   sont   bien   des   chaînes   de   caractères,   c'est­à­dire   qu'elles   se   terminent   par   le 
caractère   '\0'.   Il   faut   également   vérifier   la   longueur   des   données   pour   éviter   d'avoir   des 
débordements de tampons dans le cas où les données seraient de taille trop importante. Enfin, il est 
important de vérifier que de la mémoire est effectivement disponible. On peut se retrouver avec un 
pointeur NULL ou encore provoquer une erreur de programme pour manque de mémoire.
Gestion de la mémoire
Plusieurs solutions permettent de gérer plus ou moins efficacement la mémoire dans un programme. 
Une solution est d'utiliser une librairie qui gère les tampons et les chaînes de caractères afin de gérer 
la taille de ceux­ci. On peut également utiliser des buffers de taille fixe mais ce n'est pas très souple. 
Certains langages de haut niveau utilisent un ramasse­miette ce qui permet de ne pas avoir à gérer la 
mémoire.   Ceci   n'empêche   pas   de   prendre   en   compte   la   charge   induite   par   le   traitement   de   la 
mémoire afin de ne pas dégrader les performances de l'ensemble.
Enfin une solution est de combiner l'utilisation d'une pile pour stocker les données temporaires et 
d'un espace mémoire partagé que le programme répartie entre les différentes parties du programme. 
La pile permet de stocker les données temporaires et pour désallouer, on supprime la pile entière. 
Sensibilité de la mémoire
Un examen de la mémoire lors ou en dehors de l'exécution d'un programme permet de récupérer des 
informations sensibles. Ceci est particulièrement vrai pour les mots de passe. La première chose 
évidente à ne pas faire est de stocker dans le code un mot de passe. Celui­ci sera conservé lors de la 
compilation et l'attaquant pourra le retrouver en parcourant le fichier binaire.
Suivant les droits possédés par l'attaquant, celui­ci peut examiner le contenu de la mémoire. Ceci est 
possible sous windows avec winhex qui permet de parcourir la mémoire vive. Si des mots de passe 
ont été stockés en mémoire vive en clair, ils pourront être lu. Dans le cas de données sensibles, une 

21/32
technique   consiste   à   réécrire   sur   l'espace   mémoire.   Dans   le   cas   d'une   base   de   données,   il   est 
judicieux   de  ne pas conserver les  mots  de passe en clair mais  leur image  via une fonction   de 
hashage.

22/32
Les attaques

Programmes malveillants

Outils génériques
On distingue les types suivants :
– Le virus : programme se dupliquant sur d'autres ordinateurs ;
– Le ver (worm en anglais) : exploite les ressources d'un ordinateur pour se dupliquer ;
– Le wabbit : programme qui se réplique par lui­même (mais qui n'est ni un virus, ni un ver) ;
– Le cheval de Troie (trojan en anglais) : programme à apparence légitime (voulue) qui exécute 
des routines nuisibles sans l'autorisation de l'utilisateur ;
– La   porte   dérobée   (backdoor   en   anglais)   :   ouvreur   d'un   accès   frauduleux   sur   un   système 
informatique, à distance ;
– Le logiciel espion (spyware en anglais) : collecteur d'informations personnelles sur l'ordinateur 
d'un utilisateur sans son autorisation, et en envoyant celles­ci à un organisme tiers ;
– L'enregistreur de frappe (keylogger en anglais) : programme généralement invisible installé sur 
le poste d'un utilisateur et chargé d'enregistrer à son insu ses frappes clavier ;
– L'exploit : programme permettant d'exploiter une faille de sécurité d'un logiciel ;
– Le rootkit : ensemble de logiciels permettant généralement d'obtenir les droits d'administrateur 
sur   une   machine,   d'installer   une   porte   dérobée,   de   truquer   les   informations   susceptibles   de 
révéler   la   compromission,   et   d'effacer   les   traces   laissées   par   l'opération   dans   les   journaux 
système.

Attaques spécifiques aux messageries
En dehors des nombreux programmes malveillants qui se propagent par la messagerie électronique, 
il existe des attaques spécifiques à celle­ci :
– Le pourriel (spam en anglais) : un courrier électronique non sollicité, la plupart du temps de la 
publicité. Ils encombrent le réseau, et font perdre du temps à leurs destinataires ;
– L'hameçonnage   (phishing   en   anglais)   :   envoi   massif   d'un   courriel   dont   l'expéditeur   se   fait 
généralement passer pour un organisme financier et demandant au destinataire de fournir des 
informations confidentielles ;
– Le canular informatique (hoax en anglais) : un courrier électronique incitant généralement le 
destinataire à retransmettre le message à ses contacts sous divers prétextes. Ils encombrent le 
réseau, et font perdre du temps à leurs destinataires. Dans certains cas, ils incitent l'utilisateur à 
effectuer des manipulations dangereuses sur son poste (suppression d'un fichier prétendument 
lié à un virus par exemple).

Attaques par le réseau

Principales techniques
Voici les principales techniques d'attaques sur le réseau :
– Le sniffing : technique permettant de récupérer toutes les informations transitant sur un réseau 

23/32
(on utilise pour cela un logiciel sniffer).Elle est généralement utilisée pour récupérer les mots de 
passe des applications qui ne chiffrent pas leurs communications, et pour identifier les machines 
qui communiquent sur le réseau.
– La mystification (en anglais spoofing) : technique consistant à prendre l'identité d'une autre 
personne ou d'une autre machine. Elle est généralement utilisée pour récupérer des informations 
sensibles, que l'on ne pourrait pas avoir autrement ;
– L'ARP Spoofing : c'est probablement le cas le plus fréquent. Si l'un des interlocuteurs et 
l'attaquant se trouvent sur le même réseau local, il est possible, voire relativement aisé, pour 
l'attaquant de forcer les communications à transiter par son ordinateur en se faisant passer 
pour un « relais » (routeur, passerelle) indispensable. Il est alors assez simple de modifier 
ces communications.
– Le Spoofing de DNS : L'attaquant altère le ou les serveur(s) DNS des parties de façon à 
rediriger vers lui leurs communications sans qu'elles s'en aperçoivent.
– Le  déni de service (en anglais  denial of service) : technique  visant à générer des arrêts  de 
service,   et   ainsi   d’empêcher   le   bon   fonctionnement   d’un   système.   Elle   peut   se   faire   via 
l'utilisation d'une faille ou plus couramment par l'utilisation massive de requêtes.
– Attaque de l'homme du milieu (man in the middle)  : une attaque dans laquelle l'attaquant est 
capable de lire, insérer et modifier comme il le souhaite les messages chiffrés entre deux parties, 
sans   que   ni   l'un   ni   l'autre   ne   puisse   se   douter   que   la   ligne   entre   eux   a   été   compromise. 
L'attaquant doit d'abord être capable d'observer et d'intercepter les messages d'une victime à 
l'autre. L'attaque HDM est particulièrement applicable dans le protocole original d'échange de 
clés Diffie­Hellman, quand il est utilisé sans authentification.
Et d'autres techniques (généralement obsolètes) utilisant les différences de comportement entre les 
équipements et les mauvais implémentations de TCP/IP :
– vol de session TCP (hijacking) : il s'agit d'une attaque à l'aveugle dans laquelle on établit une 
session avec un hôte en se faisant passer pour un autre. Quand l'attaquant effectue la première 
étape de ce procédé, il va mettre l'adresse IP de l'hôte de confiance de la cible comme adresse 
source dans l'en­tête IP du paquet SYN. Mais quand la cible répond par un paquet SYN|ACK, 
ce dernier  va être envoyé au véritable propriétaire de l'adresse à savoir l'hôte de confiance. 
L'attaquant ignore donc le numéro de séquence envoyé par la cible, or il en a besoin pour établir 
la connexion. S'il se trompe de numéro d'acquittement, la cible va envoyer un paquet RESET 
qui met fin à la procédure. L'attaquant a donc besoin de prédire le numéro de séquence envoyé 
par la cible en fonction du numéro de séquence initiale du paquet qu'il a envoyé. Mais s'il arrive 
à deviner une plage de valeurs possibles, il peut éventuellement « inonder » la cible avec des 
paquets ACK et espérer que l'un des paquets aura le bon numéro d'acquittement. ;
– Syn flood : cette attaque permet un déni de service par un envoi massif de requêtes SYN vers la 
cible. En ne terminant pas le dialogue d'initialisation, on crée un grand nombre de connexion 
semi­ouvertes, ce qui empêche l'ouverture de nouvelles sessions. Plusieurs solutions existent :
– limitation du nombre de connexions depuis la même source ou la même plage d'IP, avec un 
délai imparti plus ou moins grand ;
– libération des connexions semi­ouvertes selon un choix de client et un délai aléatoires ;
– réorganisation de la gestion des clients en évitant de consommer des ressources avec des 
champs inutiles tant que la connexion n'est pas complètement établie.
– attaque   par   fragmentation   (fragments   attacks)   :   une   attaque   réseau   par   saturation   (déni   de 
service) exploitant le principe de fragmentation du protocole IP. En effet, le protocole IP est 
prévu pour fragmenter les paquets de taille importante en plusieurs paquets IP possédant chacun 
un numéro de séquence et un numéro d'identification commun. A réception des données, le 

24/32
destinataire   réassemble   les   paquets   grâce   aux   valeurs   de   décalage   (en   anglais   offset)   qu'ils 
contiennent. L'attaque par fragmentation la plus célèbre est l'attaque Teardrop. Le principe de 
l'attaque Teardrop consiste à insérer dans des paquets fragmentés des informations de décalage 
erronées. Ainsi, lors du réassemblage il existe des vides ou des recoupements (overlapping), 
pouvant provoquer une instabilité du système.
– Tiny   Fragments   :   L’attaque   consiste   à   fragmenter   sur   deux   paquets   IP   une   demande   de 
connexion   TCP.  Le   premier   paquet   IP   de  68   octets   ne   contient   comme   données   que   les   8 
premiers octets de l’en­tête TCP (ports source et destination ainsi que le numéro de séquence). 
Les données du second paquet IP renferment alors la demande de connexion TCP (flag SYN à 1 
et flag ACK à 0). Or, les filtres IP appliquent la même règle de filtrage à tous les fragments d’un 
paquet. Le filtrage du premier fragment (Fragment Offset égal à 0) déterminant cette règle elle 
s’applique donc aux autres (Fragment Offset égal à 1) sans aucune autre forme de vérification. 
Ainsi, lors de la défragmentation au niveau IP de la machine cible, le paquet de demande de 
connexion est reconstitué et passé à la couche TCP. La connexion s’établit alors malgré le filtre 
IP.
– Fragment Overlapping : si deux fragments IP se superposent, le deuxième écrase le premier. 
L’attaque consiste à forger deux fragments d’un paquet IP. Le filtre IP accepte le premier car il 
ne contient aucune demande de connexion TCP (flag SYN = 0 et flag ACK = 0). Cette règle 
d’acceptation s’applique, là encore, aux autres fragments du paquet. Le deuxième contenant les 
véritables données de connexion est alors accepté par le filtre IP. 
Attaques sur les mots de passe
Les deux méthodes suivantes sont les plus utilisées :
– L'attaque par dictionnaire : le mot testé est pris dans une liste prédéfinie contenant les mots de 
passe les plus courants et aussi des variantes de ceux­ci (à l’envers, avec un chiffre à la fin, etc.). 
Ces listes sont généralement dans toutes les langues les plus utilisées, contiennent des mots 
existants, ou des diminutifs (comme par exemple “powa” pour “power”, ou “G0d” pour “god”).
– L'attaque par force brute : toutes les possibilités sont faites dans l’ordre jusqu’à trouver la bonne 
solution   (par   exemple   de   “aaaaaa”   jusqu'à   “ZZZZZZ”   pour   un   mot   de   passe   composé 
strictement de six caractères alphabétiques).

Cartographie du réseau
Reconnaissance passive
La première démarche pour cartographier un réseau est d'utiliser un ensemble de techniques non 
intrusives (qui ne pourront pas être détectée) :
– utilisation du Web ;
– les Outils réseau : Whois (donne les informations sur les enregistrements dns), nslookup.
Cette   démarche   permet   d'obtenir   des   informations   sur   la   cible,   diffusées   publiquement,   mais 
pouvant être confidentielles (diffusées généralement par erreur ou insouciance).
Ceci   permet   d'avoir   des   noms   de   responsable,   des   numéros   téléphonique   et   des   adresses 
électroniques.
Reconnaissance semi­active
Bien que non intrusives, les techniques suivantes deviennent détectables par la cible, notamment à 
l'aide d'un système de détection d'intrusion :

25/32
– ping, traceroute et utilisation des propriétés du protocole ICMP ;
– Balayage de port (port scan en anglais) via Nmap ;
– Prise d'empreinte TCP/IP (TCP/IP fingerprinting en anglais).
Ces techniques permettent généralement de recenser et d'identifier une grande partie des éléments 
du réseau cible.
Reconnaissance active
On   passe   dans   les   techniques   réellement   intrusives,   donc   clairement   détectables,   mais   ne 
représentant pas un risque immédiat pour la cible :
– Utilisation des propriétés des protocoles SNMP, SMB, RPC ;
– Détection automatisée de vulnérabilités : Nessus.
Techniques d'intrusion système
– Connexion à une ressource partagée ;
– Attaque par force brute ;
– Attaque par débordement de tampon ;
– Accès à un interpréteur de commandes interactif ;
– Élévation des privilèges ;
– Installation d'un rootkit ;
– Effacement des traces
Attaques avancées
– Le   cassage   de   logiciel   (Cracking   en   version   anglaise)   :   cette   technique   a   pour   but   la 
modification   d'un   programme   pour   déjouer   sa   protection   (en   général   pour   permettre   une 
utilisation complète, ou à durée illimitée) ;
– La rétro­ingénierie (compréhension des mécanismes internes des logiciels) ;
– Exploitation des bogues de formats : exploite le fait de ne pas vérifier le format des entrées 
fournies à un programme ;
– Détournement et utilisation de données WEB : Cookie, CSS, CGI, vulnérabilités concernant les 
langages PHP, ASP, SQL, etc.

Attaques cryptanalytiques par canaux auxiliaires 
Une sécurité mathématique ne garantit pas forcément une sécurité lors de l'utilisation en pratique. 
On distingue deux grandes catégories d'attaques :
– les attaques invasives qui endommagent le matériel (voire le détruisent totalement) :
– attaque par sondage : elle consiste à placer une sonde directement dans le circuit à étudier, 
afin d'observer son comportement (généralement utilisée dans le cas des bus chiffrés) ;
– les   attaques   non­invasives   qui   se   contentent   de   procéder   à   une   observation   extérieure   du 
système :
– attaque temporelle : étude du temps mis pour effectuer certaines opérations ;
– cryptanalyse   acoustique   :   étude   du   bruit   généré   par   un   ordinateur   ou   une   machine   qui 
chiffre. En effet, le processeur émet du bruit qui varie en intensité et en nature selon sa 
consommation et les opérations effectuées ;
– analyse d'émanations électromagnétiques : similaire à la cryptanalyse acoustique mais en 
utilisant   le   rayonnement   électromagnétique   (émission   d'ondes,   analyse   d'une   image 
thermique, lumière émise par un écran, etc.) ;

26/32
– analyse de consommation : une consommation accrue indique un calcul important et peut 
donner des renseignements sur la clé ;
– attaque par faute : introduction volontaire d'erreurs dans le système pour provoquer certains 
comportements   révélateurs.   Notons   que   ce   type   d'attaque   peut   être   considérée   comme 
invasive dans certains cas.
Les constructeurs de puces de chiffrement visent à aplanir la courbe de consommation électrique 
pour dissimuler les opérations sous­jacentes. Des protections et des blindages permettent de limiter 
le rayonnement en dehors du circuit. Il faut également tenir compte des états impossibles qui ne 
doivent pas se produire et doivent être traités correctement s'ils venaient à être détectés. Limiter les 
messages   d'erreur   et   la   communication   d'informations   diverses   avec   l'extérieur   est   aussi   une 
solution mais elle pénalise les développeurs et les utilisateurs du système. 

Recherche de vulnérabilités sur des binaires
Analyse par graphes
Les   logiciels   sont   généralement   disponibles   sous   forme   compilée.   Les   seules   informations 
accessibles   sont les  commandes  au niveau  assembleur.  Des  changements  mineurs  dans le  code 
peuvent changer considérablement la suite d'instructions du fait :
– d'allocation de registres différents ;
– de la réorganisation des instructions par le compilateur ;
– d'inversion de branchements entre les blocs d'instructions pour des raisons d'optimisation.
Une approche est de considérer l'exécutable comme un graphe de fonctions qui s'appellent entre 
elles, c'est le graphe des appels. Une première comparaison permet de détecter l'ajout de contrôle ou 
le   remplacement   d'un   appel   par   un   autre.   Pour   comparer   différentes   versions   d'un   logiciel,   on 
calcule   la   signature structurelle  des  différentes  fonctions  en s'appuyant  sur le nombre  de  blocs 
basiques dans la fonction, le nombre d'arcs vers cette fonction et le nombre d'appels. Ceci permet de 
trouver des points fixes d'une version à une autre et par propagation de trouver les isomorphismes 
entre les versions. 
L'utilisation d'une distance euclidienne permet de résoudre les ambiguités en calculant la racine 
carré   de   la   somme   des   carrés   des   différences   entre   les   points.   Au   sein   des   fonctions   on   peut 
appliquer   le   même   schéma   aux   blocs   basiques   en   utilisant   une   signature   structurelle   telle   que 
nombres d'arcs pour arriver à l'entrée du bloc, nombre d'arc pour arriver à la fin du bloc et nombre 
de sous­blocs appelés. On n'utilise plus le nombre d'appels de la fonction car en général le point 
d'entrée est unique.
Pour la recherche de vulnérabilités, on se concentre sur les changements apportés, ce qui permet de 
trouver plus facilement des zones susceptibles de contenir des vulnérabilités.
Fuzzing
Une autre technique, le fuzzing, consiste à envoyer des données aléatoires presques conformes à un 
système   afin   de  détecter  des  comportements  anormaux.  Les  comportements  anormaux  sont   par 
exemple une utilisation anormale de ressources mémoires ou processeurs. Les changements les plus 
usités sont :
– des chaînes aléatoires dans leur contenu et leur longueur ;
– des chaînes typiques ;
– un grand nombre aléatoire d'arguments ;

27/32
– des longues chaînes alphanumériques ;
– des chaînes de caractères quelconques ;
– création de contenu adaptés avec des erreurs de compression.

28/32
En pratique

Les applications web
Les banières suffisent en général à identifier le serveur :
telnet www.microsoft.com 80
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Server: Microsoft­IIS/5.0
P3P: CP='ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR 
SAMo CNT COM INT NAV ONL PHY PRE PUR UNI'
Content­Location: http://tkmsftwbw11/default.htm
Date: Fri, 05 Oct 2001 09:18:47 GMT
Content­Type: text/html
Accept­Ranges: bytes
Last­Modified: Thu, 04 Oct 2001 18:34:38 GMT
ETag: "188b883934dc11:854"
Content­Length: 23062

Server: Apache/1.3.14 (Unix)  (Red­Hat/Linux) PHP/4.0.3pl1 mod_perl/1.24

Certains langages sont typiques d'un serveur :
– Apache, Netscape : script PHP ;
– IIS : pages dynamiques ASP ;
– Lotus : bases NSF ;
– Tomcat, WebLogic : script JSP.
Les   messages   d'erreurs   peuvent   également   être   exploités.   Il   permettent   en   outre   de   connaître 
l'existence ou non d'un utilisateur dans le cas d'une authentification basic http.
GET /pipo HTTP/1.0

HTTP/1.1 404 Not Found
Date: Sat, 03 Nov 2001 14:33:08 GMT
Server: Apache
Connection: close
Content­Type: text/html; charset=iso­8859­1

<!DOCTYPE HTML PUBLIC "­//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL /pipo was not found on this server.<P>
<HR>
<ADDRESS>Apache/1.3.12 Server at p500.labo.net Port 80</ADDRESS>
</BODY></HTML>

Les attaques les plus courantes sont :
– l'accès à un shell via une requête par exemple GET ../../../winnt/system32/cmd.exe
– l'injection de requête SQL : elle s'appuie sur l'injection d'une requête SQL non prévue ;
– le   cross   site   scripting   par  envoi  de  contenus   html  ou  javascript  affiché  par  le  serveur   sans 
filtrage. Ces attaques ne compromettent pas le serveur mais permettent de voler des données.

29/32
Le cross site scripting consiste à injecter du javascript dans les données envoyées au serveur. Ce 
code est ensuite exécuter sur le poste client. Il existe trois types de failles XSS :
– faille locale : le problème est dans le script d'une page côté client. Par exemple, si un fragment 
de javascript accède à un paramètre d'une requête d'URL, et utilise cette information pour écrire 
du HTML dans sa propre page, et que cette information n'est pas encodée sous forme d'entités 
HTML, alors il y a probablement un trou XSS, puis les données écrites seront réinterprétées par 
le navigateur comme du HTML contenant éventuellement un script ajouté.
– faille   non   permanente   :   elle   apparaît   lorsque   des   données   fournies   par   un   client   web   sont 
utilisées  telles  quelles par les scripts du serveur pour produire une page de résultats. Si les 
données non vérifiées sont incluses dans la page de résultat sans encodage des entités HTML, 
elles   pourront   être   utilisées   pour   injecter   du   code   dans   la   page   dynamique   reçue   par   le 
navigateur client.
– faille permanente : elle se produit quand les données fournies par un utilisateur sont stockées sur 
un serveur (dans une base de données, des fichiers, ou autre), et ensuite réaffichées sans que les 
caractères spéciaux HTML aient été encodés. Elle est souvent présente sur des forums.
La méthode HTTP TRACE permet de faire du XSS. Cette méthode est traditionnellement utilisée 
pour   déterminer   la  vision   qu’a   le   serveur   d’une   requête.   Le   serveur   renvoyant   exactement 
l’argument fourni par l’utilisateur, cette méthode est couramment utilisée pour réaliser des attaques 
de type XSS.
var xmlHttp = new ActiveObject("Microsoft.XMLHTTP")
xmlHttp.open("TRACE", "./", false)

TRACE 
/mail/victime.nsf/c1dee9080256c3f003dccf5/33cc18a13483c9f2c125704400447cf
6/$FILE/
HTTP/1.1
Accept: */* Accept­Language: fr
Referer:
http://Srv_Domino/mail/victime.nsf/c1cdee9080256c3f003dccf5/33cc18a13483c
9f2c125704400447cf6/$FILE/Humour.htm
Accept­Encoding: gzip, deflate
User­Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 
1.1.4322)
Host: Srv_Domino
Content­Length: 0
Connection: Keep­Alive
Cache­Control: no­cache
Authorization:,dmljdGltZTptZHBfc2VjcmV0IA

La seconde attaque la plus courante est l'injection de code SQL qui permet de corrompre la base ou 
de faire des requête arbitraires. Par exemple :
Private Sub btnLogin_Click(ByVal sender As System.Object, _
                 ByVal e As System.EventArgs) _
                 Handles btnLogin.Click

    SqlConnection1.Open()
    Dim str As String = "SELECT * FROM Users WHERE UserID='" _
              & txtName.Text & "' AND Password='" & _
              txtPassword.Text & "'"
    Dim comm As New SqlCommand(str, SqlConnection1)
    Dim reader As SqlDataReader = comm.ExecuteReader()
    If Not reader.HasRows Then _
       Response.Write("Login failed. Please try again")

30/32
    While reader.Read()
        Response.Write("Hello " & reader("UserName"))
    End While

End Sub

On   peut   faire   de   l'injection   avec  xyz'   union   select   @@servername,   @@servicename, 


@@version ­­
Une solution est d'utiliser les mécanismes de sécurité du langage ou bien de valider les données en 
entrée.
Les informations sensibles ne doivent pas non plus être stocké dans de cookies sur le poste client 
car ceux­ci peuvent être modifiés. Il vaut mieux stocker ces informations dans des variables de 
sessions sur le serveur.
L'authentification basique http transmet le nom de l'utilisateur et le mot de passe en clair dans les 
en­têtes. Il est donc nécessaire de chiffrer le lien et de protéger l'accès au fichier contenant les mots 
de passe et la liste des utilisateurs.
Il faut éviter de passer des informations cachées dans les formulaires si ce n'est pas nécessaire et les 
garder dans des variables de sessions car l'utilisateur peut les modifier.
Les validations des données des formulaires par des codes javascript sont inutiles du point de vue de 
la sécurité car l'utilisateur peut les contourner. De la même façon la délégation de traitement de 
données dans des applets peut être manipuler par l'utilisateur qui peut lire et modifier le code si 
celui­ci n'est pas protéger (exemple java, mon légionnaire.com).
La  gestion  des  aléas  pour les  sessions est importante  sinon une simple attaque  par brute force 
permet de récupérer des sessions, en particulier si on utilise le temps pour l'aléa.
http://www.cible.fr/shop.htm?id=0112037524678
http://www.cible.fr/shop.htm?id=0112037520987
http://www.cible.fr/shop.htm?id=0112037521345
http://www.cible.fr/shop.htm?id=0112037526794
http://www.cible.fr/shop.htm?id=0112037523098

Indépendemment de l'application web, il est judicieux de mettre des filtres (mod_security) afin de 
bloquer   les   requêtes   malveillantes   connues.   Ceci   permet   également   de   cacher   les   erreurs   qui 
peuvent être générées par le serveur. Enfin on peut faire une analyse avec un antivirus des fichiers 
reçus ou encore chrooter le serveur. Dans le cas d'application web bien construite, on peut définir 
un profil contenant l'ensemble des requêtes valides afin de ne permettre que l'envoi de celles­ci.
Exemples d'attaques sur les en­têtes : répétition d'en­têtes. Certains serveurs prennent en compte le 
premier, d'autres le second.
Des modules (mod_dosevasive) permettent de détecter des bloquer les deni de service en limitant 
les requêtes répétés sur des ressources et la fréquences de celles­ci selon trois facteurs :
– requêtes répétées sur une même ressource. Un utilisateur ne récupère pas plusieurs fois la même 
ressource.
– multiplication   du   nombre   de   requêtes.   Un   utilisateur   ne   récupère   pas   massivement   des 
ressources.
– sortie de la liste noire après un certain délai.

31/32
Le wifi
Le wifi est une technologie de réseau informatique sans fil mise en place pour fonctionner en réseau 
interne.  Les réseaux filaires traditionnels posent des problèmes liés aux travaux de mise en place, 
coût d'acquisition, au nécessaire surdimensionnement des infrastructures, et à la faible mobilité du 
réseau.
Les réseaux wifi posent des problèmes liés : 
– au confinement du réseau : contrôle d'accès au médium est difficile du fait de la multiplicité des 
points d'accès et la difficulté pour confiner le réseau.
– à   la   confidentialité   des   échanges   :   faible   segmentation   du   réseau.   Les   points   d'accès   se 
comportent comme des hubs. N'importe quel utilisateur peut écouter une grande partie du trafic. 
– à   la   résistance   à   l'écoute   :   faible   robustesse   des   mécanismes   standards   de   sécurité   et   des 
technologies de chiffrement et possibilité d'écoute passive.
– à la disponibilité du réseau : saturation des ressources ip disponibles avec un grand nombre de 
demandes. Brouillage par bruit électromagnétique.
La mise en œuvre de tels réseaux nécessite :
– la vérification du respect de la législation sur l'usage des bandes de fréquences;
– d'évaluer les perturbations électromagnétique de l'environnement ainsi que les risques naturels.
– une   étude   sur   le   positionnement   des   point   de   raccordement   qui   soit   adapté   à   la   zone   de 
couverture. Définition des espaces couverts non désirés.
– la   protection   physique   des   locaux   et   des   abords   des   locaux   afin   de  se   prémunir   contre   les 
atteintes aux matériels et l'écoute passive.
– la définition des flux réseaux transportés sur le réseau et de leur sensibilité.
– la protection logique du réseau adaptée à la sensibilité des services par les mesures graduelles 
suivantes :
– l'activation du chiffrement des flux avec une clef WPA qui est plus sûre que WEP du fait 
d'une meilleure utilisation des moyens cryptographiques et des changements réguliers de 
clefs;
– le cloisonnement entre le réseau non filaire et le réseau filaire;
– une restriction des postes autorisés (adresse IP et MAC) mais difficile à gérer sur un réseau 
de taille importante et/ou avec des changements fréquents des postes.
– la   mise  en   place   de  l'authentification   réciproque  des   clients  et   de  l'infrastructure  réseau 
(nécessite un serveur d'authentification);
– l'activation d'IPSEC;
– sécurisation des points d'accès : changement des mots de passe, limitation des services, réglages 
des   puissances,   gestion   des   mises   à   jour,   journalisation,   gestion   des   pannes   matérielles, 
supervision, ...
Dans tous les cas on est confronté au risque résiduel de brouillage à l'aide d'un émetteur contre 
lequel il est difficile de se prémunir y compris en utilisant des sauts de fréquence.

32/32

Vous aimerez peut-être aussi