Académique Documents
Professionnel Documents
Culture Documents
L'essentiel de la
sécurité
informatique
Version 0.3
sec-ess
Entrée du glossaire
Abréviation
Référence Bibliographique
Référence générale
Table des
matières
Objectifs 5
II - Note de version 11
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
C. Démarche générale.....................................................................................20
D. Intelligence gathering..................................................................................21
1. Renseignement...............................................................................................................21
2. Footprinting....................................................................................................................22
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
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
VI - Sécurité défensive 85
I
concernant la
licence de ce
document
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/
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
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é
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
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
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
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.
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é 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.
1. Points essentiels
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
5 - https://fr.wiktionary.org/wiki/confidentialit%C3%A9
6 - https://fr.wiktionary.org/wiki/authentification
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
D. Intelligence gathering
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.
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
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
IV
offensive
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 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.
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".
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.
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.
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/
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
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
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.
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.
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
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.
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.
21 - http://hackerspaces.org/wiki/List_of_Hacker_Spaces
22 - https://tools.ietf.org/html/rfc1983
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.
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
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 ...
23 - http://www.exploit-db.com/google-dorks
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/
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 :
1 $ cd /pentest/enumeration/theharvester
2
Usage
Exemple
b) dnsenum.pl
Options
Enregistrer les sous-domaines découverts dans un fichier dédié :
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
ii Options
Enregistrer les sous-domaines découverts dans un fichier dédié
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.
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)
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
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.
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.
Exemple : arp-scan
Sous GNU/Linux :
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 :
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
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 :
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.
ou avec nmap :
4. Fingerprinting
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
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.
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.
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
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é.
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
3. Contre-mesures
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)
1. Password cracking
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.
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.
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/
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.
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
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
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).
Pour en savoir plus, rendez vous sur la documentation de john the ripper :
http://www.openwall.com/john/doc/32
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/
Couches hautes
Couches basses
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)
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 :
33 - http://www.iana.org/assignments/port-numbers
É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
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
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
Ensuite, pour lancer une attaque, il vous suffit de lancer la commande suivante :
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.
1 include <unistd.h>
2 int main(int argc, char* argv[]
3 {
4 while(1)
5 fork();
6 return(0);
7 }
1 :(){ :|:&};:
1 forkb(){
2 forkb | forkb &
3 }
4 forkb
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.
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.
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/
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 ...
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
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.
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';
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.
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>
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>
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/
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
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/
V
opérationnelle
Fondamentaux 61
Confidentialité des données 65
Sécurisation des échanges 72
A. Fondamentaux
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
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 ...).
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é.
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
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
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.
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
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
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
c) GnuPG
Standard OpenPGP
OpenPGP est un standard, établi par l'Internet Engineering Task Force (IETF).
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
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/
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/
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
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.
Certificat de révocation
permet de remplacer une clé publique ne devant plus être utilisée :
vérification des signatures
mais pas de chiffrement
Fingerprint
"empreinte digitale"
permet de rapidement vérifier qu'une clé proviens bien de la personne à qui on
pense qu'elle appartient
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
Import
Lister
1 $ gpg --list-keys
Supprimer
$ gpg --delete-key name
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.
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.
1 $ shred -u -z -n 26 monfichierasupprimer
58 - http://eraser.heidi.ie/
- 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
1 # /usr/share/kde4/services/ServiceMenus/shred.desktop
2 [Desktop Entry]
3 Type=Service
4 ServiceTypes=KonqPopupMenu/Plugin,all/allfiles
5 Actions=shred
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
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.
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) :
60 - https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers
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
VPN
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.
Logo OpenVPN
Installation
Debian :
63 - https://www.vpntunnel.com/
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
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
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) ;
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
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
Fonctionnement
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
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
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
ajout de la clé
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 :
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.
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
e) Gestion de fichiers
SCP
SCP est une commande permettant de copier un seul et unique fichier entre deux
machine. Pour le lancer :
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
1 AllowTcpForwarding yes
Puis lancez simplement une commande similaire à celle-ci sur votre client :
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.
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.
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
VI
défensive
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
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.
Translation d'adresses
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 :
NAT statique
Pour faire correspondre une adresse publique à une adresse privée :
NAT Dynamique
Les adresses publiques sont automatiquement choisies dans un pool d'adresse.
création du pool d'adresses :
création de l'ACL :
activation du NAT :
Commandes d'information
Pour afficher la table de translations (ie les translations effectuées en accord avec
les règles établies) :
1 # debug ip paquet
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
Concept
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
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 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
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.
82 - https://fr.libreoffice.org/download/libreoffice-stable/
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
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
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 ...).
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/
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
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
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
b) Scanners de vulnérabilité
OpenVAS
c) Détection d'intrusion
Snort
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
1 root@demo:/home/debian# iptables -F
Exemple de phishing p. 35
http://creativecommons.org/licenses/publicdomain/2.0/fr/, Andrew Levine,
https://commons.wikimedia.org/wiki/File:PhishingTrustedBank.pngwikimedia
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
DMZ Diagramme p. 82
http://creativecommons.org/licenses/publicdomain/2.0/fr/,
http://commons.wikimedia.org/wiki/File:Demilitarized_Zone_Diagram.pngwikimedia
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