Pentest : Méthodologie d’un test intrusion d’un serveur web en pratique. Partie 1 : préambule

Cette suite d’articles a pour but d’expliquer la méthodologie généralement utilisée par les pirates pour s’introduire dans un système informatique. Il vise à expliquer comment compromettre un système afin de mieux pouvoir s’en prémunir. En effet, la meilleure façon de protéger son système est de procéder de la même manière que les pirates afin de cartographier les vulnérabilités du système. Nous allons voir comment exploiter les vulnérabilités découvertes afin de prendre le contrôle du serveur.

Le poste cible est un ordinateur sous Linux (Ubuntu).

Nous verrons les grandes étapes d’un test d’intrusion :

  • La collecte d’informations
  • La recherche de vulnérabilités
  • L’exploitation des vulnérabilités
  • La post-exploitation (l’élévation de privilèges, l’installation de porte dérobée, la récupération d’informations sur le poste, l’effacement des traces, etc.)

Ressources à utiliser :

Une machine virtuelle est à disposition ici pour vous entrainer et refaire le travail pratique.

Lien de la machine virtuelle : https://lepouvoirclapratique.com//big/demo_cybersec_drupal.zip

Avant de commencer, néanmoins un petit avertissement.

Avertissements

Ce guide est à destination des futurs professionnels de la sécurité informatique ou des personnes curieuses/passionnées de sécurité informatique et qui veulent s’initier à la méthodologie d’audit des serveurs (test d’intrusion).

Ce guide n’est aucunement destiné à l’incitation d’actes illégaux. Il s’agit de tester la sécurité uniquement de systèmes qui vous appartiennent et/ou pour lesquels vous avez une autorisation d’audit.

Il est important de savoir que même en cas d’intentions « bienveillantes » (informer de la découverte d’une vulnérabilité, prévenir les administrateurs, améliorer la sécurité, etc.), aux yeux de la loi, vous pouvez être poursuivi au regard des dispositions du Code pénal en matière de fraude informatique.

Le texte suivant est extrait de l’article https://www.murielle-cahen.com/publications/p_intrusions.asp

La loi dite « Godfrain » du 5 Janvier 1988 (n° 88-19) a introduit dans le code pénal l’article 462-2 qui a créé le délit d’intrusion dans un système informatique.

La loi « pour la confiance dans l’économie numérique » du 21 juin 2004 (n° 2004-575) a déplacé et modifié ce texte, désormais présent à l’article 323-1 du code pénal, lequel dispose que « Le fait d »accéder ou de se maintenir, frauduleusement, dans tout ou partie d »un système de traitement automatisé de données est puni de deux ans d »emprisonnement et de 30000 euros d »amende. Lorsqu »il en est résulté soit la suppression ou la modification de données contenues dans le système, soit une altération du fonctionnement de ce système, la peine est de trois ans d »emprisonnement et de 45000 euros d »amende. »

Un système de traitement automatique de données c’est, selon les magistrats, par exemple un réseau, réseau France Telecom, réseau Carte Bancaire (Tribunal correctionnel de Paris, 25 février 2000) ; un disque dur (Cour d’appel de Douai, 7 octobre 1992) ; un radiotéléphone (Cour d’appel de Paris, 18 novembre 1992). En tout cas, tous les équipements (de nature matérielle, logicielle, ou «firmware ») permettant l »acquisition automatique, le stockage, la manipulation, le contrôle, l »affichage, la transmission, ou la réception de données.

Ainsi, toute intrusion ou maintien frauduleux dans un STAD est pénalement répréhensible, ce qui recouvre un grand nombre d’hypothèses.

D’autres informations sont présentes sur les liens suivants :

1    Avant de commencer

1.1   Conseils

Au cours de ce guide, de nombreux outils et frameworks (dont metasploit) sont utilisés.

Il est conseillé d’avoir des connaissances en système Unix et son fonctionnement afin de pouvoir suivre ce guide.

De même, si vous n’avez jamais utilisé metasploit avant ce guide, je vous recommande de vous faire la main avec la distribution metasploitable. Il s’agit d’une distribution vulnérable qui vous apprendra à utiliser metasploit et quelques outils de sécurité basiques :

De même, je vous déconseille d’installer l’ensemble des outils cités dans ce document sur votre environnement de travail, il existe des distributions Linux orientées Sécurité qui contiennent la plupart des outils cités dans ce guide. Une des distributions les plus connues est Kali (https://www.kali.org/).

 Le plus simple est d’utiliser un outil de virtu    alisation (exemple : virtualbox), d’installer Kali dans une machine virtuelle et de tester la machine vulnérable associée à ce document.

Il existe de très nombreux tutoriaux sur Internet (mot clé : « installer Kali avec virtualbox »)

Je vous suggère aussi de lire le glossaire car de nombreux termes techniques sont utilisés dans le document.

1.2   Informations sur la machine vulnérable

Ci-joint les informations sur le système vulnérable joint à ce document.

Système : Ubuntu 14.04

Adresse IP : DHCP

Comptes du système :

Normalement la machine virtuelle a été réalisée sous Virtualbox et son interface réseau est située sur le réseau interne de virtualbox :

Attention ce système a été recréé quelques mois après la première version de ce document, certaines captures d’écran (en particulier celles montrant des hashes du système et l’ip testée) peuvent être donc différentes. Néanmoins en appliquant la méthodologie citée, ceci ne devrait pas poser de problème.

1.3   Notes

Ce document n’étant pas à destiné à la réalisation d’actes malveillants, la partie sur l’effacement des traces a été supprimée du document original.

2     La méthodologie utilisée

Le scénario standard d’un test d’intrusion vis-à-vis d’une machine cible est le suivant :

  • Collecte d’informations : via différents outils, l’attaquant cherche à obtenir le maximum d’informations sur la cible : système d’exploitation, logiciels installés, services actifs, login des utilisateurs ayant accès à la cible.
  • Recherche de vulnérabilités : via des scanneurs réseau (par exemple nessus pour le monde open source, Acunetix, n-stealth pour les logiciels propriétaires), l’attaquant va après la phase de collecte d’informations, chercher à identifier et à recenser les failles de sécurité sur les services et/ou les applications disponibles. Une fois ces informations obtenues, il pourra faire des recherches sur des bases de données (Security-Focus, CVE, Exploit-DB, Metasploit) pour trouver des versions/failles exploitables, et le cas échéant, récupérer un code d’exploitation (exploit)
  • Exploitation : à partir des informations précédentes, l’attaquant cherchera à exploiter un service/application vulnérable via un code d’exploitation. Si pas de failles découvertes, il peut aussi tenter des attaques par force brute ou par dictionnaire afin de découvrir les login/mots de passe des utilisateurs
  • Elévation de privilèges : une fois un accès à la machine obtenu, l’attaquant cherchera à obtenir assez d’informations (comptes administrateurs, vulnérabilités locales) afin de réaliser le plus d’opérations sur la cible. L’objectif étant de devenir « super-utilisateur » (administrateur / root)
  • Récupération d’informations : une fois administrateur sur le poste, l’attaquant va chercher à obtenir le maximum d’informations disponibles : mot de passe, partages réseau, extraction de la base Active Directory (base des comptes utilisateurs)…
  • Effacement des traces : afin que l’attaque reste la plus furtive possible, l’attaquant cherchera au maximum à effacer ses traces (suppression des logins locaux, effacement des fichiers logs, historique shell)
  • Installation d’une porte dérobée : afin de pouvoir se reconnecter plus tard sur la cible en minimisant les risques d’être détecté, l’attaquant pourra installer une porte dérobée (exemple : rootkit[1] pour masquer des processus, daemons réseaux, fichiers…)
  • Tentative de rebond : à partir de l’accès à une première machine, l’attaquant pourra s’en servir afin de découvrir et d’accéder à d’autres cibles (contournement règles de filtrage dans une DMZ, récupération de clés SSH pour se connecter à un autre serveur…)

[1] http://fr.wikipedia.org/wiki/Rootkit

Maintenant que ça s’est dit, let’s go !

Views: 1128