0

Clarification sur les test d’intrusion

Les termes tests d’intrusion et évaluation de la vulnérabilité sont souvent confondus et utilisés de manière interchangeable alors qu’en réalité, les deux termes ont des significations distinctes.

Un test d’intrusion aussi appelé test de pénétration ou plus simplement pentest est un cycle continu de recherche et d’attaque contre une cible dans le but d’identifier les vulnérabilités au sein d’un système informatique, un réseau ou une application Web qu’un pirate pourrait exploiter pour ensuite tenter d’obtenir un accès potentiel a différentes données et informations confidentielles sur le système testé.

L‘évaluation de la vulnérabilité est le processus de définition, d’identification et de classification des failles de sécurité potentiellement découverts dans le système cible.

Les test d’intrusion peuvent être automatisés avec des applications logicielles ou peuvent être effectués manuellement. Dans les deux cas, le processus comprend la collecte d’informations sur la cible avant le test (reconnaissance), l’identification des points d’entrée possibles, la tentative d’effraction (virtuelle ou réelle) et la restitution des résultats.

Lorsque un test de pénétration est effectués correctement, les résultats permettent aux professionnels de faire des recommandations pour résoudre les problèmes détectés au cours du test. L’objectif principal du test d’intrusion est d’améliorer la sécurité du système informatique, du réseau ou de l’application Web et de fournir une protection pour l’ensemble du réseau et des périphériques connectés contre les attaques futures.

Il existe trois types de test d’intrusion, selon les attentes de l’entreprise :

  • Black boxLe testeur se met complètement dans la peau d’un pirate. Il ne possède aucune information
  • Grey box: Le testeur possède un nombre limité d’informations
  • White box: Le testeur possède toutes les informations dont il a besoin.

Je ne rappellerais jamais assez sur le fait de toujours vous assurer d’être dans la légalité en passant soit par des sites spécialises ou par la conclusion d’un contrat en bonne et due forme avec votre client avant de commencer.

0

Nmap

NMAP « Network Mapper » est un utilitaire de recherche/découverte de réseau, ainsi que d’audit de sécurité. Il est gratuit et open source. L’utilisation de NMAP a pour but de trouver des informations sur une cible. Les différentes informations sont de savoir s’il y a des ports d’ouverts, et si oui quels services et quelles version de ces services sont utilisés par les ports ouverts découverts. Il est aussi possible de déduire quel système d’exploitation est utilisé par la cible. NMAP dispose aussi d’un moteur de script « Nmap Scripting Engine -NSE » qui s’utilise grâce au langage Lua et qui fournis ainsi une infinité d’opportunités. Les informations trouvée a partir de l’utilisation de cet outil peuvent permettre de trouver des « failles » qui pourraient éventuellement être utilisées pour les exploiter et prendre le contrôle du système scanné. Je vous rappelles que scanner un réseau qui ne vous appartient pas peut être considéré comme une intrusion est pourrait dans certains cas être sévèrement réprimé par la loi. Utilisez le donc toujours a bon escient en toute légalité, ayant toujours l’autorisation du propriétaire du réseau avec un contrat précis ou en passant par des sites/machines virtuelles délibérément vulnérables appelles « laboratoire de pentest ». Pour l’exemple j’utiliserais Metasploitable comme cible, je vous l’ai brièvement décrit dans un article précédent. Pour vous faciliter la tache si vous ne désirez par installer Metasploitable rendez vous sur www.root-me.org ou vous devrez vous inscrire et ensuite dans le menu « Capure the flag » cliquer sur « CTF all the day ». Vous pouvez ensuite créer votre propre machine « Metasploitable », mais retenez que les machines sont limitées dans le temps. D’où l’avantage d’installer Metasploitable sur une machine virtuelle VirtualBox directement sur votre PC pour pouvoir vous entraîner dessus sans limitations.

J’insisterais sur le point que j’utiliserais pour la suite le terminal de kali-Linux sur lequel cet outil est installé d’office. Mais je vous explique malgré tout comment installer NMAP sur Windows, et je vous invite a passer par le site officiel en cliquant sur le lien suivant: https://nmap.org/dist/nmap-7.60-setup.exe. Pour une installation sur Linux , il vous suffit d’ouvrir le terminal et d’entrer la commande suivante: « apt-get update && apt-get install nmap », sans les parenthèses. Voila NMAP est maintenant installé et prêt a l’emploi !

Connectez vous sur le « CTF all the day » de root-me en notant l’URL de la machine vulnérable lancée qui ressemblera a celle la: ctf07.root-me.org

Ou si vous avez opté pour l’installation sur VirtualBox notez l’IP de Metasploitable qui vous sera fournie par « ifconfig » dans métasploitable. elle ressemblera a celle la: 192.168.1.17

Ouvrez maintenant le terminal Kali-Linux. Découvrons avant de démarrer notre premier scan les différentes options présentes dans NMAP. Cette liste d’options a été directement prise sur le site officiel a cette adresse: https://nmap.org/man/fr/man-briefoptions.html

 

Utilisation: nmap [Type(s) de scan] [Options] {spécifications des cibles}

SPÉCIFICATIONS DES CIBLES:
Les cibles peuvent être spécifiées par des noms d’hôtes, des adresses IP, des adresses de réseaux, etc.
Exemple: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0-255.0-255.1-254
-iL <inputfilename>: Lit la liste des hôtes/réseaux cibles à partir du fichier
-iR <num hosts>: Choisit les cibles au hasard
–exclude <host1[,host2][,host3],…>: Exclut des hôtes/réseaux du scan
–excludefile <exclude_file>: Exclut des hôtes/réseaux des cibles à partir du fichier

DÉCOUVERTE DES HÔTES:
-sL: List Scan – Liste simplement les cibles à scanner
-sP: Ping Scan – Ne fait que déterminer si les hôtes sont en ligne -P0: Considère que tous les hôtes sont en ligne — évite la découverte des hôtes
-PN: Considérer tous les hôtes comme étant connectés — saute l’étape de découverte des hôtes
-PS/PA/PU [portlist]: Découverte TCP SYN/ACK ou UDP des ports en paramètre
-PE/PP/PM: Découverte de type requête ICMP echo, timestamp ou netmask
-PO [num de protocole]: Ping IP (par type)
-n/-R: Ne jamais résoudre les noms DNS/Toujours résoudre [résout les cibles actives par défaut]
–dns-servers <serv1[,serv2],…>: Spécifier des serveurs DNS particuliers

TECHNIQUES DE SCAN:
-sS/sT/sA/sW/sM: Scans TCP SYN/Connect()/ACK/Window/Maimon
-sN/sF/sX: Scans TCP Null, FIN et Xmas
-sU: Scan UDP
–scanflags <flags>: Personnalise les flags des scans TCP
-sI <zombie host[:probeport]>: Idlescan (scan passif)
-sO: Scan des protocoles supportés par la couche IP
-b <ftp relay host>: Scan par rebond FTP
–traceroute: Détermine une route vers chaque hôte
–reason: Donne la raison pour laquelle tel port apparait à tel état

SPÉCIFICATIONS DES PORTS ET ORDRE DE SCAN:
-p <plage de ports>: Ne scanne que les ports spécifiés
Exemple: -p22; -p1-65535; -pU:53,111,137,T:21-25,80,139,8080
-F: Fast – Ne scanne que les ports listés dans le fichier nmap-services
-r: Scan séquentiel des ports, ne mélange pas leur ordre
–top-ports <nombre>: Scan <nombre> de ports parmis les plus courants
–port-ratio <ratio>: Scan <ratio> pourcent des ports les plus courants

DÉTECTION DE SERVICE/VERSION:
-sV: Teste les ports ouverts pour déterminer le service en écoute et sa version
–version-light: Limite les tests aux plus probables pour une identification plus rapide
–version-intensity <niveau>: De 0 (léger) à 9 (tout essayer)
–version-all: Essaie un à un tous les tests possibles pour la détection des versions
–version-trace: Affiche des informations détaillées du scan de versions (pour débogage)

SCRIPT SCAN:
-sC: équivalent de –script=safe,intrusive
–script=<lua scripts>: <lua scripts> est une liste de répertoires ou de scripts séparés par des virgules
–script-args=<n1=v1,[n2=v2,…]>: passer des arguments aux scripts
–script-trace: Montre toutes les données envoyées ou recues
–script-updatedb: Met à jour la base de données des scripts. Seulement fait si -sC ou –script a été aussi donné.

DÉTECTION DE SYSTÈME D’EXPLOITATION:
-O: Active la détection d’OS
–osscan-limit: Limite la détection aux cibles prométeuses –osscan-guess: Détecte l’OS de façon plus agressive
–osscan-guess: Devine l’OS de facon plus agressive

TEMPORISATION ET PERFORMANCE:
Les options qui prennent un argument de temps sont en milisecondes a moins que vous ne spécifiiez ‘s’
(secondes), ‘m’ (minutes), ou ‘h’ (heures) à la valeur (e.g. 30m).

-T[0-5]: Choisit une politique de temporisation (plus élevée, plus rapide)
–min-hostgroup/max-hostgroup <msec>: Tailles des groupes d’hôtes à scanner en parallèle
–min-parallelism/max-parallelism <nombre>: Parallélisation des paquets de tests (probes)
–min_rtt_timeout/max-rtt-timeout/initial-rtt-timeout <msec>: Spécifie le temps d’aller-retour des paquets de tests
–min_rtt_timeout/max-rtt-timeout/initial-rtt-timeout <msec>: Spécifie le temps d’aller-retour des paquets de tests
–min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Précise
le round trip time des paquets de tests.
–max-retries <tries>: Nombre de retransmissions des paquets de tests des scans de ports.
–host-timeout <msec>: Délai d’expiration du scan d’un hôte –scan-delay/–max_scan-delay <msec>: Ajuste le délai de retransmission entre deux paquets de tests
–scan-delay/–max-scan-delay <time>: Ajuste le delais entre les paquets de tests.

ÉVASION PARE-FEU/IDS ET USURPATION D’IDENTITÉ
-f; –mtu <val>: Fragmente les paquets (en spécifiant éventuellement la MTU)
-D <decoy1,decoy2[,ME],…>: Obscurci le scan avec des leurres
-S <IP_Address>: Usurpe l’adresse source
-e <iface>: Utilise l’interface réseau spécifiée
-g/–source-port <portnum>: Utilise le numéro de port comme source
–data-length <num>: Ajoute des données au hasard aux paquets émis
–ip-options <options>: Envoi des paquets avec les options IP spécifiées.
–ttl <val>: Spécifie le champ time-to-live IP
–spoof-mac <adresse MAC, préfixe ou nom du fabriquant>: Usurpe une adresse MAC
–badsum: Envoi des paquets TCP/UDP avec une somme de controle erronnée.

SORTIE:
-oN/-oX/-oS/-oG <file>: Sortie dans le fichier en paramètre des résultats du scan au format normal, XML, s|<rIpt kIddi3 et Grepable, respectivement
-oA <basename>: Sortie dans les trois formats majeurs en même temps
-v: Rend Nmap plus verbeux (-vv pour plus d’effet)
-d[level]: Sélectionne ou augmente le niveau de débogage (significatif jusqu’à 9)
–packet-trace: Affiche tous les paquets émis et reçus
–iflist: Affiche les interfaces et les routes de l’hôte (pour débogage)
–log-errors: Journalise les erreurs/alertes dans un fichier au format normal
–append-output: Ajoute la sortie au fichier plutôt que de l’écraser
–resume <filename>: Reprend un scan interrompu
–stylesheet <path/URL>: Feuille de styles XSL pour transformer la sortie XML en HTML
–webxml: Feuille de styles de références de Insecure.Org pour un XML plus portable
–no_stylesheet: Nmap n’associe pas la feuille de styles XSL à la sortie XML

DIVERS:
-6: Active le scan IPv6
-A: Active la détection du système d’exploitation et des versions
–datadir <dirname>: Spécifie un dossier pour les fichiers de données de Nmap
–send-eth/–send-ip: Envoie des paquets en utilisant des trames Ethernet ou des paquets IP bruts
–privileged: Suppose que l’utilisateur est entièrement privilégié -V: Affiche le numéro de version
–unprivileged: Suppose que l’utilisateur n’a pas les privilèges d’usage des raw socket
-h: Affiche ce résumé de l’aide

Voila , les présentations étant faites passons a la suite et faisons un scan de démonstration avec différentes options prises dans la liste ci-dessus.

  • -sV pour trouver les services et leurs versions
  • -O pour trouver l’OS
  • L’adresse IP
  • -oX metasploitable.xml afin de générer un rapport en format .XML

Dans le terminal  de Kali-Linux entrez la commande: « sudo nmapsV -O 192.168.1.17 –oX metasploitable.xml » ou  si vous avez choisi de scanner votre machine par le biais de root-me « sudo nmap -sV -O ctfxx.root-me.org -oX metasploitable.xml » sans les parenthèses  et voyons le résultat. Je vous rappelles que l’URL ou l’IP devrons être noté et modifié par le votre comme expliqué plus haut ! Le fait de mettre « sudo » vous obligera a entrer votre mot de passe administrateur de votre machine Kali-Linux.

 

sudo nmap -sV -O 192.168.1.17 -oX metasploitable.xml
[sudo] Mot de passe de votre Kali-Linux :

Vous donnera le résultat suivant.

Vous allez maintenant transformer le résultat que vous avez exporté au format metasploitable.xml  dans le dossier ou vous avez fait le scan ! pas de panique dans le terminal faites un ‘ls » vous verrez que metasploitable.xml est bien affiché 🙂 Bref … pour transformer ce rapport dans un format plus facile a lire vous allez le transformer en HTML grâce a un outil qui s’appelle « xsltproc », il  devra d’abord être installé en entrant la commande suivante dans le terminal: « apt-get install xsltproc » sans les parenthèses. Pour générer le rapport en HTML vous devrez entrer la commande suivante dans le terminal: xsltproc metasploitable.xml -o metasploitable.html

Naviguez maintenant dans le dossier ou se situe le rapport généré et cliquez dessus. vous verrez apparaître quelques chose qui devrait ressembler a ceci.

Vous pouvez maintenant constater les différentes informations que NMAP a trouvé et affiché ! Ces différentes informations seront utilisées dans un article suivant pour essayer de trouver des vulnérabilités !

0

Les phases d’un test d’intrusion

Je vais commencer par récapituler les cinq phases d’un test de pénétration. Les cinq phases se réfèrent à chaque étape primaire dans le processus d’un test de pénétration. le concept est primordial pour un nouveau venu dans ce domaine. Voici un bref aperçu des cinq phases d’un tests de pénétration

Phase1: Reconnaissance.

Reconnaissance est l’acte de recueillir des données préliminaires ou des renseignements sur votre cible.Les données sont collectées afin de mieux planifier votre attaque. La reconnaissance peut être effectuée activement (ce qui signifie que vous touchez directement la cible) ou passivement (ce qui signifie que votre reconnaissance est effectuée par un intermédiaire). La phase 1 comprends l’identification de la cible, la découverte de la plage d’adresses IP cible, le réseau, le nom de domaine, le serveur de messagerie, les enregistrements DNS, etc.

Phase2: Balayage.

La phase de Balayage (scanning) nécessite l’utilisation d’outils techniques pour recueillir davantage d’informations sur votre cible, dans ce cas, l’information recherchée concerne plus souvent les systèmes qui sont en place. Un bon exemple serait l’utilisation d’un scanner de vulnérabilité sur un réseau cible. La phase 2 comprends l’analyse de la cible pour les services en cours d’exécution, les ports ouverts, la détection de pare-feu, la recherche de vulnérabilités, la détection de l’os, etc.

Phase3: Obtenir l’accès.

L‘obtention de l’accès à la phase 3 nécessite de prendre le contrôle afin d’extraire des données de la cible ou d’utiliser cette cible pour lancer ensuite des attaques sur d’autres cibles. La phase 3 inclut l’exploitation des vulnérabilités, l’ingénierie sociale, etc.

Phase4: Maintenir l’accès.

Maintenir l’accès nécessite de prendre les mesures nécessaires pour pouvoir rester dans l’environnement cible afin de rassembler le plus de données possible. L’attaquant doit rester furtif dans cette phase, afin de ne pas être attrapé lors de l’utilisation de l’environnement hôte. La phase 4 inclut l’escalade des privilèges, l’installation de backdoor sur la cible pour pouvoir conserver l’accès acquis et voir se connecter à la cible à tout moment, etc.

Phase5: Effacer les traces.

Cette phase finale signifie simplement que l’attaquant doit prendre les mesures nécessaires pour supprimer tout semblant de traces. Toutes les modifications apportées, les autorisations qui ont été escaladées, etc. doivent toutes revenir à un état de non-reconnaissance par les administrateurs du réseau hôte.

 

On pourrait aussi ajouter deux autres phases:

Une phase de pré-engagement: qui se place avant la phase de reconnaissance et qui consiste a définir avec le client un périmètre du test d’intrusion qui va être réalisé, ce que l’on a le droit de faire et ce qu’il est totalement proscrit, ainsi que les objectifs.

Une phase ou l’on crée un rapport final: qui se place bien sur en dernière position. il s’agira de fournir au client un rapport documenté qui expliquera commentet avec quel outils le pentest a été effectué, quelles failles on été découvertes, quels sont les risques pour le client, et bien sur comment remédier a ces problèmes en expliquant comment corriger les différentes failles découvertes.