Introduction à Kali Linux et pentesting
Introduction à Kali Linux et pentesting
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.
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.
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.
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.
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.
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.
▪ 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 :
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.
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…
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
44C6 513A 8E4F B3D3 0875 F758 ED44 4FF0 7D8D 0BF6
▪ 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:
▪ /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.
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é.
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 :
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
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
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
# 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
# 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.
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].
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
# Keyboard selection.
# netcfg will choose an interface that has link if possible. This makes
it
# skip displaying a list if there is more than one interface.
# 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.
# If you select ftp, the mirror/country string does not need to be set.
# You may set this to any valid setting for $TZ; see the contents of
# /usr/share/zoneinfo/ for valid values.
# Controls whether to use NTP to set the clock during the install
# And the same goes for the confirmation to write the lvm partitions.
# 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.
# 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
# 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 :
> 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]
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
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]
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
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.
▪ 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
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
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]
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]
…
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.
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 :
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]
…
On peut également, pour un port donné, scanner l’ensemble de la plage réseau de notre
infrastructure :
# name -p 22 192.168.3.*
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
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)
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é.
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
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 :
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
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.
▪ 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) :
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
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 :
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 :
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 :
# 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]
# 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
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
# 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)
▪ 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 :
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 :
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
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.
Ensuite, pour obtenir l’élévation de privilège système, on peut alors exécuter la même
commande sans l’option -h.
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.
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 :
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]
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 :
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 :
▪ 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.
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.
On peut alors effectuer le montage de notre partition sur le point de montage cible :
# mount /dev/sda1 /mnt/target/
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]
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:
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>
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
# unzip [Link]
# mv gerix-wifi-cracker-master/ /usr/share/gerix-wifi-cracker
# cd /usr/share/gerix-wifi-cracker
# python [Link]
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.
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]
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.
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 😉
▪ 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 :
▪ 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 :
▪ 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 :
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.
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.