Nmap : un « Outil de Piratage » pour les Professionnels de la Sécurité

Nmap: un « Outil de Piratage » pour les Professionnels de la Sécurité

par Justin Hutchens

security-326154_640

La notion de « hacker éthique » a toujours été ironique. Les tendances en développement du piratage éthique et de la sécurité offensive ont transformé l’industrie de la sécurité de l’information en l’une des industries les plus auto-perpétuantes au monde.

Les logiciels et outils utilisés pour sécuriser les actifs d’information vulnérables sont les mêmes outils que ceux qui peuvent être utilisés pour les exploiter. C’est peut-être l’inverse. Peut-être que les outils qui ont été créés dans le seul but d’exploiter les actifs d’information sont maintenant utilisés pour les protéger. Je suppose que c’est un débat qui pourrait durer éternellement et n’est vraiment qu’un autre exemple de « qu’est-ce qui est arrivé en premierthe la poule ou l’œuf? »

Le but de cet essai n’est pas de discuter de la question philosophique de l’intention. Mes intentions sont plus modestes. Je cherche simplement à justifier l’importance d’un outil qui a toujours été étiqueté comme un logiciel de piratage malveillant. L’outil auquel je fais référence est Network Mapper, ou nmap pour faire court. Que vous soyez un agent escroc fou qui cherche à inciter à la révolution mondiale ou un professionnel de la sécurité réseau (espérons que ce dernier, plutôt que le premier), nmap devrait avoir une place permanente dans votre boîte à outils. Peut-être, au lieu de critiquer un outil de réseautage extrêmement fonctionnel, nous devrions tenir les individus responsables de leurs actions et réfléchir à la mise en garde bien connue de Benjamin Parker… « avec un grand pouvoir, une grande responsabilité vient. »Malgré certaines affirmations contraires, nmap n’est pas un logiciel malveillant. Et je pense que la seule raison pour laquelle il est souvent étiqueté comme tel est à cause de sa liste très impressionnante de capacités. Malgré son potentiel de nuire, nmap peut certainement jouer un rôle important dans la sécurisation d’une infrastructure réseau dans un environnement professionnel.

Nmap n’a cessé d’évoluer au fil des ans, passant d’un simple utilitaire de numérisation à une plate-forme de test de pénétration à part entière. Il peut être utilisé à chaque étape du processus d’audit de sécurité, pour inclure la découverte du réseau, l’analyse des ports, l’énumération des services, la cartographie des vulnérabilités et même l’exploitation. Tout au long de cet article, je discuterai des capacités de nmap en ce qui concerne chaque étape du processus de test de pénétration.

Installation et préparation

Évidemment, avant d’utiliser nmap, il est important d’avoir une version fonctionnelle installée sur le système que vous utilisez. Par défaut, nmap est déjà installé sur la plupart des systèmes d’exploitation de test de pénétration et de sécurité réseau tels que Kali-Linux, Backtrack, DEFT, Node-Zero, Security Onion et NST. Cependant, il peut également être chargé sur presque n’importe quelle plate-forme de votre choix. Nmap peut facilement être installé sur tous les systèmes d’exploitation couramment utilisés, y compris Windows, Linux et OSX. Il existe également de la documentation disponible pour l’installer sur des plates-formes plus obscures, notamment BSD, Solaris, AIX et AmigaOS. Les paquets d’installation et les instructions sur la façon d’effectuer l’installation sur l’un de ces systèmes se trouvent à http://nmap.org/book/install.html.

Interface graphique Zenmap

En plus de l’interface de ligne de commande traditionnelle pour nmap, il existe également une interface frontale graphique appelée Zenmap. Zenmap est également intégré à de nombreuses plates-formes de test de pénétration discutées précédemment. Cependant, il n’est pas installé par défaut dans Kali-Linux (la plate-forme que j’utiliserai pour ce tutoriel). Heureusement, il se trouve dans le référentiel d’installation et peut facilement être installé avec une seule commande:

apt-get install zenmap

L’interface pointer-cliquer de Zenmap rationalise non seulement efficacement ce qui nécessiterait autrement des commandes compliquées, mais elle peut également être un outil extrêmement utile pour apprendre à utiliser nmap. Il utilise des « profils » pour enregistrer les configurations de numérisation couramment utilisées pour une modification et / ou une utilisation ultérieures. Jetez un coup d’œil à l’image de l’interface Zenmap qui est fournie dans la figure 1 et nous aborderons brièvement chacun des composants.

f1

Figure 1. Interface graphique Zenmap

Le premier composant est le champ cible (Figure 1. Un). Ce champ vous permet de spécifier les systèmes distants sur lesquels vous souhaitez effectuer une analyse. Vous pouvez entrer une seule adresse IP (par exemple 192.168.1.1), vous pouvez entrer une plage séquentielle d’adresses IP (par exemple 192.168.1.0-255) ou vous pouvez utiliser la notation CIDR pour spécifier un sous-réseau souhaité (par exemple 192.168.1.0/24). Le deuxième composant est le champ de profil (Figure 1. B). Vous pouvez cliquer sur la flèche déroulante à droite de ce champ pour voir plusieurs profils préconfigurés pour la numérisation. Les profils vous permettent d’enregistrer les configurations de numérisation couramment utilisées pour une utilisation future. Vous pouvez également créer vos propres profils et ils apparaîtront ensuite dans cette liste (nous verrons comment procéder plus loin dans cet article). Le troisième composant est le champ de commande (Figure 1. C). Ce champ indiquera la commande qui va être envoyée au backend. Pour lancer la commande apparaissant dans ce champ, il vous suffit de cliquer sur le bouton Analyser. Vous pouvez modifier directement la valeur de ce champ ; cependant, elle sera automatiquement renseignée en fonction des valeurs du champ cible et du profil sélectionné. Si vous êtes nouveau sur nmap, vous devez porter une attention particulière à ce champ, car il vous permettra de mieux comprendre la syntaxe appropriée et l’utilisation des différentes commandes nmap. Le quatrième composant est la liste des hôtes/Services (Figure 1. D). Une fois que vous avez effectué des analyses, les informations seront renseignées dans cette liste. Si vous avez sélectionné le bouton Hôtes, toutes les adresses IP d’hôte découvertes seront répertoriées. Et si vous avez sélectionné le bouton services, tous les services réseau découverts seront répertoriés. La dernière composante (figure 1. E) est l’endroit où vous pouvez trier toutes les informations qui ont été produites par toutes les analyses que vous avez effectuées. L’onglet Sortie Nmap affiche la sortie exacte qui serait fournie si la commande avait été entrée à partir de l’interface de ligne de commande. Le contenu de l’onglet Ports/Hôtes varie selon que le bouton Hôtes ou Services est sélectionné pour votre liste. Si le bouton Hôtes est sélectionné, les informations sous l’onglet Ports/hôtes refléteront les services identifiés sur l’adresse IP en surbrillance active dans la liste. Sinon, si le bouton Services est sélectionné, les informations sous l’onglet Ports/hôtes identifieront tous les hôtes dont le service particulier est mis en surbrillance dans la liste. L’onglet topologie fournira une représentation graphique de la topologie logique du réseau, pour inclure tous les hôtes qui ont été découverts par balayage. Il utilisera les valeurs TTL (Time-To-Live) renvoyées pour afficher l’orientation logique des hôtes, les uns par rapport aux autres. L’onglet Détails de l’hôte est l’endroit où vous trouverez la majeure partie des informations découvertes sur un hôte sélectionné. Ces informations comprennent les adresses MAC, les adresses IP, les ports ouverts, les services identifiés, les informations sur le système d’exploitation et toute information supplémentaire collectée. Enfin, l’onglet Analyses fournira un historique des analyses effectuées au cours de la session.

En haut de l’écran, vous verrez plusieurs menus déroulants différents pour inclure l’analyse, les Outils, le profil et l’aide. Le menu d’aide est explicite. Le menu Analyse contient des options pour créer de nouvelles analyses, enregistrer des analyses ou ouvrir des analyses précédemment enregistrées. Le menu Outils fournit des fonctions supplémentaires qui peuvent être utilisées pour trier et organiser les informations collectées lors de vos analyses. Et le menu Profil offre des options pour créer de nouveaux profils d’analyse ou modifier des profils existants.

Nous allons maintenant discuter brièvement de la création d’un nouveau profil, puis lancer une analyse à l’aide de ce profil. Pour commencer, sélectionnez le menu déroulant Profil, puis sélectionnez « Nouveau profil ou Commande. »Cela ouvrira une interface de configuration de profil visible sur la figure 2.

f2

Figure 2. Éditeur de profil Zenmap

Le premier onglet (onglet Profil) vous permet de créer un nom et une description uniques pour le profil. Tous les autres onglets sont l’endroit où vous spécifierez différentes configurations qui seront utilisées dans votre analyse. Comme vous pouvez le voir dans l’onglet Analyse affiché sur la figure 2, la création d’un profil d’analyse est aussi simple que de cocher les cases des options que vous souhaitez activer, de saisir des valeurs pour que ces options puissent être utilisées efficacement ou de sélectionner parmi des choix prédéfinis dans le menu déroulant. Si vous n’êtes pas sûr de la fonction ou de l’utilisation appropriée d’une option ici, vous pouvez la survoler avec votre souris et la colonne d’aide sur le côté droit de l’écran sera automatiquement remplie d’informations sur ce que fait l’option spécifique et les valeurs et la syntaxe appropriées pour les champs de saisie demandés. À chaque ajustement mineur que vous apportez à la configuration de l’analyse, le champ de commande en haut est ajusté en conséquence. Cette fonctionnalité fait de Zenmap un outil extrêmement efficace pour apprendre à utiliser correctement les commandes nmap. Une fois que vous avez configuré les options de numérisation à votre guise, vous pouvez soit sélectionner le bouton de numérisation en haut à droite de l’écran pour une utilisation unique, soit sélectionner Enregistrer les modifications en bas à droite. Le bouton Enregistrer les modifications enregistre le profil avec le nom fourni sur les configurations du premier onglet et peut ensuite être utilisé immédiatement ou ultérieurement en le sélectionnant par nom dans le menu déroulant Profil de l’interface principale de Zenmap. Bien que Zenmap soit très puissant, vous ne devez pas lui permettre de devenir une béquille qui vous empêche d’apprendre les fonctions de ligne de commande de nmap. Bien que Zenmap puisse exécuter plusieurs des mêmes fonctions, il a toujours ses limites et n’est pas aussi puissant que nmap. Pour utiliser nmap efficacement et à son plein potentiel, il est important de se familiariser également avec l’interface de ligne de commande.

Découverte de réseau

La première étape du processus de test de pénétration dont nous allons discuter est la découverte de réseau. Avant d’évaluer la sécurité des systèmes d’information sur un réseau, vous devez d’abord identifier ce que vous évaluez. Il existe différentes façons de découvrir des hôtes sur un réseau en utilisant nmap. Dans cette section, nous discuterons de la façon d’utiliser nmap pour effectuer la découverte d’hôtes aux couches 2, 3 et 4 du modèle OSI et nous discuterons également des avantages et des inconvénients de chacun. Un exemple de commande pour effectuer la découverte de la couche 2 peut être vu ici :

nmap-PR-sn 192.168.1.0-255

Le commutateur -PR spécifie un ping ARP. Ceci utilise des paquets ARP (Protocole de résolution d’adresse) de couche 2 pour identifier les hôtes vivants dans la plage spécifiée. Il le fait en envoyant une demande de diffusion ARP pour chacune des adresses IP identifiées. S’il existe un hôte actif sur le réseau avec l’une de ces adresses IP, cet hôte enverra une réponse ARP au système de numérisation avec son adresse IP et son adresse MAC de couche 2 correspondante. Nmap collectera les réponses de tous les hôtes en direct, puis renverra une liste des hôtes découverts. Le commutateur -sn est utilisé pour demander à nmap de ne pas effectuer d’analyse de port. Ceci empêche la transmission de tout trafic supplémentaire, au-delà de ce qui est nécessaire pour effectuer le balayage de découverte d’hôte de couche 2. La découverte de la couche 2 est efficace car c’est la plus rapide des trois options. Cependant, il est limité par le fait qu’il ne peut être effectué que contre des hôtes qui se trouvent sur le même réseau local que le système qui effectue l’analyse.

Pour les hôtes distants, vous devrez utiliser la découverte de la couche 3 ou de la couche 4. Un exemple de commande pouvant être utilisée pour effectuer la découverte de la couche 3 est :

nmap-PE-sn 109.74.11.0-255

Cette commande enverra une série de requêtes d’écho ICMP à chaque adresse IP de la couche 3 de la liste. Nmap collectera toutes les réponses d’écho ICMP reçues et renverra une liste de tous les hôtes en direct. Cette analyse de découverte est plus lente que l’exécution d’un ping ARP, mais elle renvoie des résultats pour les hôtes sur les réseaux distants.

Enfin, supposons que vous essayez de découvrir des systèmes distants (vous ne pouvez donc pas utiliser la couche 2) qui se trouvent derrière un pare-feu qui supprime tout le trafic ICMP entrant (vous ne pouvez donc pas utiliser la couche 3). Pour résoudre ce problème, vous devrez effectuer une découverte au niveau de la couche de transport (couche 4). Vous pouvez utiliser les analyses de couche 4 de plusieurs manières différentes pour effectuer la découverte. Une méthode efficace consiste à utiliser un ping UDP. Un exemple de commande ping UDP est:

nmap-PU53-sn 109.74.11.0-255

Cette commande génère une série de demandes d’état du serveur DNS pour chacune des adresses IP cibles. Une série de réponses de requête DNS seront reçues des hôtes en direct et nmap retournera ensuite ces résultats. Étant donné que le DNS est un service couramment utilisé sur le port UDP 53, il est possible d’identifier des hôtes vivants supplémentaires en utilisant cette technique qui peuvent avoir été configurés pour ne pas répondre au trafic ICMP. Une autre alternative efficace de couche 4 aux balayages de ping ICMP consiste à utiliser un ping TCP ACK. Un exemple de ceci peut être vu ci-dessous:

nmap-PA80-sn 109.74.11.0-255

Cette commande enverra une série de réponses ACK non sollicitées au port spécifié pour tous les hôtes de la plage IP. Parce que ces paquets ACK étaient hors contexte de toute ligne de communication établie, les hôtes en direct répondront avec un PREMIER paquet TCP pour indiquer que la communication doit être interrompue. Nmap collectera ces réponses comme indication des hôtes en direct et en retournera ensuite une liste.

Analyse des ports et énumération des services

Maintenant que nous avons découvert les adresses IP actives sur le réseau contre lesquelles nous effectuons un test de pénétration, nous devons ensuite identifier les ports ouverts sur chaque système et les services s’exécutant sur ces ports. L’analyse des ports TCP sur les systèmes distants est la fonction la plus élémentaire de nmap. Pour effectuer une analyse TCP d’un système cible, utilisez la commande de base :

nmap 109.74.11.34

Comme les autres commandes nmap, elle peut également être utilisée pour effectuer des analyses sur plusieurs hôtes en utilisant une série séquentielle (192.168.1-255) ou notation CIDR (192.168.1.0/24). Cette commande nmap standard effectue une analyse sur 1000 ports TCP couramment utilisés. Vous pouvez également spécifier un seul port à analyser à l’aide du commutateur -p suivi du numéro de port que vous souhaitez analyser.

nmap 109.74.11.34-p 21

Cette commande ci-dessus analyse le port TCP 21 sur le système spécifié. Vous pouvez également analyser une série de ports à l’aide du commutateur -p, puis lister les ports souhaités, en les séparant par des virgules.

nmap 109.74.11.34-p 80,443

Cette commande va analyser les ports 80 et 443 sur le système cible. Vous pouvez analyser une plage séquentielle de ports à l’aide du commutateur -p suivi de la première valeur de la plage, d’un tiret, puis de la dernière valeur de la plage.

nmap 109.74.11.34-p 0-100

La commande ci-dessus analyse les 100 premiers ports. Pour analyser les 65 536 ports TCP d’une cible, utilisez la commande suivante :

nmap 109.74.11.34-p 0-65535

Vous pouvez utiliser une analyse ACK TCP pour identifier les ports filtrés. Pour ce faire, utilisez le commutateur -sA. Vous pouvez ensuite spécifier un port ou une série de ports. Aucune spécification de port ne scannera les 1 000 ports standard. Cela renverra alors une liste de ports filtrés. Un exemple de cette commande peut être vu ci-dessous :

nmap 109.74.11.34-sA

Les testeurs de pénétration et les professionnels de la sécurité recherchent parfois uniquement les ports TCP ouverts sur les systèmes cibles. Négliger les services UDP peut amener à négliger complètement les vulnérabilités flagrantes qui pourraient facilement conduire à des compromis. Pour rechercher des services UDP sur un système cible, utilisez la commande suivante :

nmap 109.74.11.34-sU

Étant donné que les services UDP ne sont pas orientés connexion de la même manière que les services TCP, cela prendra plus de temps qu’une analyse TCP typique. Le temps nécessaire pour effectuer des analyses UDP peut être réduit en recherchant des ports spécifiques. Vous pouvez spécifier les ports de la même manière que pour les analyses TCP.

nmap 109.74.11.34-sU-p 69

La commande ci-dessus effectue une analyse du port UDP 69, un port couramment utilisé pour TFTP (Trivial File Transport Protocol). Il est également possible d’identifier la version et le numéro de version pour chaque service particulier. Pour ce faire, utilisez le commutateur -sV.

nmap 109.74.11.34-sV

Cette commande utilisera une combinaison de saisie de bannière et d’analyse de réponse de sonde pour tenter d’identifier le service et le numéro de version de ce service pour chaque port analysé. En utilisant des techniques similaires, il est également possible que nmap tente de déterminer le système d’exploitation qui s’exécute sur la cible. Pour ce faire, utilisez le commutateur -O.

nmap 109.74.11.34-O

Une fois terminé, il retournera soit une identification positive du système d’exploitation, soit il donnera une meilleure estimation, puis une liste des autres systèmes d’exploitation possibles.

Techniques de numérisation avancées

Il existe un problème courant que vous rencontrerez fréquemment lors d’un test de pénétration sur des réseaux d’entreprise de taille moyenne à grande. De nos jours, la plupart des entreprises et des organisations sont devenues plus soucieuses de la sécurité et auront probablement des pare-feu ou des systèmes de détection d’intrusion entre vous et les systèmes que vous essayez d’analyser. Pour numériser de tels systèmes, nous devrons utiliser des techniques de numérisation plus avancées. Une façon de contourner potentiellement les pare-feu et / ou les systèmes de détection d’intrusion consiste à utiliser certaines techniques de balayage furtif traditionnelles intégrées à nmap. Une méthode qui peut être utilisée consiste à utiliser un modèle de temporisation plus lent. Les modèles de synchronisation vont de -T0 (analyse paranoïaque) jusqu’à -T5 (analyse folle). Plus la valeur du modèle de synchronisation est faible, plus l’analyse sera lente. Les analyses plus lentes sont moins susceptibles d’être signalées par les systèmes de détection d’intrusion. Un exemple d’analyse paranoïaque serait :

nmap 109.74.11.0-255-T0

Une autre technique qui peut être utilisée pour masquer votre analyse consiste à inonder le réseau de trafic de leurre supplémentaire à l’aide du commutateur -D. Cette fonction vous permettra de spécifier plusieurs adresses pour usurper le trafic ou vous pouvez utiliser l’option RND pour usurper le trafic à partir d’adresses aléatoires.

nmap 109.74.11.0-255-D RND:5

En plus d’effectuer l’analyse de port TCP traditionnelle des systèmes cibles, la commande ci-dessus usurpe également le trafic de 5 adresses aléatoires pour obscurcir le trafic d’analyse réel. Une autre technique qui peut être utilisée consiste à faire varier la longueur de paquet de vos requêtes transmises. Certains systèmes de détection d’intrusion et pare-feu déposent des paquets en fonction de la longueur des paquets de signature. Pour éviter cela, vous pouvez spécifier la longueur des données en utilisant le commutateur --data-length suivi de la taille du paquet en nombre d’octets.

nmap 109.74.11.0-255lengthdata-length 15

Cette commande enverra tout le trafic d’analyse en paquets de 15 octets de longueur. Bien que cela puisse être utile pour éviter certains systèmes de détection d’intrusion basés sur des signatures, l’envoi constant de paquets d’une longueur de paquet spécifiée inhabituelle pourrait signaler un système de détection d’intrusion basé sur des anomalies. Les systèmes de détection d’intrusion réseau signaleront également le trafic si vous commencez à vous connecter séquentiellement à des systèmes situés dans une plage de réseau spécifiée. Pour éviter d’effectuer vos analyses en séquence, vous pouvez utiliser le commutateur --randomize-hosts.

nmap 109.74.11.0-255randomrandomize-hosts

Cette commande ci-dessus va scanner aléatoirement chaque hôte de la plage au lieu de les exécuter en séquence (109.74.11.0, puis 109.74.11.1, puis 109.74.11.2, etc)). Bien que vous ne puissiez pas usurper votre adresse IP (car vous ne recevriez pas les réponses nécessaires pour déterminer les ports ouverts), vous pouvez usurper votre adresse MAC. Pour ce faire, vous pouvez utiliser le commutateur –spoof-mac, suivi d’un identifiant fournisseur, d’une adresse MAC spécifique ou de 0.

nmap 109.74.11.0-255 –spoof-mac 0

Utiliser 0 comme argument appliquera une adresse MAC aléatoire à votre trafic d’analyse. Une dernière technique qui mérite d’être mentionnée consiste à utiliser le commutateur -f pour fragmenter les paquets.

nmap 109.74.11.0-255-f

La fragmentation des paquets séparera les charges utiles de données de votre trafic d’analyse en plusieurs paquets, ce qui lui permettra de contourner plus facilement les systèmes de détection d’intrusion d’inspection de contenu ou les pare-feu. Bien que toutes ces techniques puissent être efficaces pour analyser des serveurs accessibles au public derrière un pare-feu, elles ne sont généralement pas suffisantes pour analyser des hôtes sur un réseau interne. Alors que certains serveurs accessibles au public seront disponibles pour la numérisation, une grande partie de l’infrastructure interne sera plus profonde au sein du réseau et moins facilement accessible. Considérons le diagramme de la figure 3. Il s’agit d’un exemple simple de configuration courante dans les réseaux d’entreprise.

f3

Figure 3. Configuration réseau commune

Le problème que nous rencontrons ici est que le réseau interne se trouve derrière un pare-feu interne, qui a des règles plus strictes concernant le trafic entrant, par rapport au pare-feu externe. Ce pare-feu interne bloque probablement le trafic entrant provenant d’adresses distantes sur le Web ; cependant, il est possible que les systèmes de la DMZ puissent communiquer avec les systèmes internes. Afin de pouvoir analyser ces systèmes internes, nous devons faire fonctionner les systèmes de la DMZ en notre nom. Nous discuterons de plusieurs façons de le faire, notamment l’analyse de proxy, l’analyse de zombies et l’analyse de rebond FTP.

Le moyen le plus simple d’analyser les systèmes internes consiste probablement à utiliser une chaîne de proxy. Supposons que nous ayons acquis l’accès à un service proxy au sein de la DMZ en localisant un service proxy à accès ouvert, en forçant brutalement un service proxy avec hydra ou en installant un service proxy sur une machine déjà compromise. Une fois que vous avez configuré votre système pour acheminer le trafic via ce proxy, vous pouvez effectuer des analyses nmap à l’aide d’une analyse de connexion complète (-sT).

nmap 10.1.1.0-255-sT

S’il n’y a pas de service proxy disponible, il existe des moyens astucieux de tirer parti des machines de la DMZ pour obtenir des résultats d’analyse sur les systèmes internes. Une façon de le faire est d’utiliser la numérisation zombie, également appelée numérisation inactive. Afin d’effectuer une analyse zombie contre les systèmes sur le réseau local interne, nous devons trouver un hôte zombie viable dans la DMZ. Un hôte zombie est un système relativement inactif qui utilise un séquençage IPID incrémental. Afin de localiser un hôte zombie, nous pouvons utiliser un script nmap pour analyser la DMZ à la recherche d’un système qui correspond à cette description.

nmap –script ipidseq 109.74.11.0-255

Ce script enverra une série de paquets à chaque hôte et suivra les numéros IPID pour toutes les réponses reçues. Il analysera ensuite ces numéros IPID pour classer chaque système en séquence aléatoire, tous les zéros ou incrémentaux. Voir la figure 4 pour un exemple de sortie pour un système incrémental.

f4

Figure 4. Hôte Zombie situé avec un script de séquence IPID

Une fois que nous avons acquis une adresse IP pour notre système zombie, nous sommes prêts à tenter notre analyse de zombies. Avant d’aborder la façon d’effectuer l’analyse, je discuterai brièvement du fonctionnement de l’analyse. Reportez-vous à la figure 5 pour un diagramme de ce qui se passe lorsqu’une analyse zombie est effectuée sur un port ouvert.

f5

Figure 5. Analyse des zombies par rapport au port ouvert

Tout d’abord, notre scanner nmap détermine la valeur IPID actuelle du système zombie en envoyant un paquet SYN/ACK non sollicité. Comme aucun paquet SYN n’a été envoyé à l’origine par le système zombie pour établir une connexion, le zombie répond ensuite à notre scanner avec un PREMIER paquet. Notre système de numérisation utilisera alors l’IPID du PREMIER paquet comme point de référence. Ensuite, notre système d’analyse suivra immédiatement cela avec un paquet SYN usurpé envoyé au système cible à l’aide d’une adresse IP source du système zombie. Étant donné que l’adresse IP source se trouve dans la zone démilitarisée, cette demande de connexion est plus susceptible de passer par le pare-feu. Si la cible reçoit le paquet et que le port de destination est ouvert, la cible renverra alors un paquet SYN/ACK au système zombie (qui, selon elle, a envoyé le paquet SYN d’origine). Parce que ce paquet SYN/ACK est reçu hors contexte, le système zombie répondra alors au système cible avec un PREMIER paquet, incrémentant ainsi sa valeur IPID d’un. Enfin, notre scanner enverra un dernier paquet SYN/ACK au système zombie. La PREMIÈRE réponse suivante du zombie incrémente l’IPID une fois de plus. Ainsi, si le port ciblé sur le système distant est ouvert, la valeur IPID finale renvoyée sera deux nombres plus élevés que la valeur d’origine. Alternativement, la figure 6 illustre ce qui se passe lorsque le port du système cible est fermé.

f6

Figure 6. Analyse zombie par rapport au port fermé

Si le port du système cible est fermé, le système zombie ne reçoit aucune réponse non sollicitée de la cible et n’est donc pas incité à envoyer un PREMIER paquet à la cible. Donc, si la valeur IPID de la première réponse finale n’a augmenté que d’un, nous pouvons en déduire que le port est fermé car aucune réponse SYN / ACK n’a été envoyée au système zombie pour déclencher une PREMIÈRE réponse. Sinon, si la valeur IPID finale a été incrémentée de deux par rapport à la valeur d’origine, nous pouvons en déduire que le port sur le système cible doit être ouvert car il doit avoir répondu au zombie qui a provoqué la réponse qui a incrémenté la valeur IPID du système zombie.

Bien que cela puisse paraître extrêmement compliqué; ne vous laissez pas intimider par la description, car nmap fait presque tout le travail pour vous. Pour effectuer réellement une analyse de zombies, il vous suffit d’entrer une commande simple.

nmap-sI 192.168.199.132-Pn 192.168.199.130

Le commutateur -sI indique à nmap d’effectuer une analyse zombie en utilisant l’adresse IP suivante comme hôte zombie (192.168.199.132). Le commutateur -Pn empêche nmap d’effectuer un ping ICMP initial sur le système cible avant de tenter l’analyse. Ainsi, l’adresse IP finale de la commande identifie le système cible. La sortie de cette commande est visible sur la figure 7.

f7

Figure 7. Analyse de zombies par rapport au port fermé

Il convient de noter que la plage IP que j’ai utilisée pour démontrer cette analyse de zombies est une plage privée sur mon réseau interne. Pour que cela fonctionne efficacement contre un réseau distant, comme décrit dans le scénario original, les systèmes de la DMZ et du réseau interne doivent être sur des plages IP routables publiquement. Si le réseau interne est configuré sur une plage privée derrière un serveur NAT (Network Address Translation), le scanner nmap ne pourra pas envoyer le paquet SYN usurpé à l’adresse interne depuis son emplacement distant.

Une autre façon d’utiliser les systèmes au sein de la DMZ pour tenter d’analyser les hôtes sur le réseau interne consiste à utiliser le rebond FTP. Certains serveurs FTP existants prennent en charge la capacité de transmettre des fichiers à un système tiers. Si vous avez découvert un serveur FTP dans la zone démilitarisée qui permet une connexion anonyme ou que vous avez forcé brute avec hydra, vous pouvez tester le serveur FTP pour déterminer s’il prend en charge le rebond FTP. Pour ce faire, utilisez le script ftp-bounce.

nmap ftpscript ftp-bounce –script-args

ftp-bounce.username=anonymous,

Cette commande utilise le script nmap avec des arguments username et password contre le serveur FTP. Une fois terminée, cette analyse indiquera si le rebond FTP est possible ou non. Si le script indique que FTP bounce fonctionne, vous pouvez utiliser le serveur FTP pour effectuer une analyse de port par rapport à d’autres systèmes du réseau. La figure 8 illustre comment cela fonctionne.

f8

Figure 8. Analyse de rebond FTP

Le scanner tentera d’envoyer des données binaires, via la fonction de rebond FTP, au système cible sur un port désigné. Si les données sont transmises, le serveur FTP le rapportera ensuite au scanner, indiquant que le port sur le système cible est ouvert. Pour effectuer une analyse de rebond FTP, utilisez le commutateur -b .

nmap-b ftpuser::21 10.1.1.128-255

Dans cette commande, la fonction -b est utilisée pour effectuer une analyse de rebond FTP en utilisant le nom d’utilisateur « ftpuser » et le mot de passe PassW0rd, contre le serveur FTP au 192.168.11.201 hébergé sur le port TCP 21. Les actions décrites dans le diagramme ci-dessus seront ensuite effectuées sur chacun des ports 1000s communs sur chacun des hôtes cibles de 10.1.1.128 à 10.1.1.255.

Mappage et exploitation des vulnérabilités avec NSE

Une fois que vous avez découvert des hôtes en direct sur le réseau cible et que vous avez réussi à énumérer les ports ouverts et/ ou à exécuter des services sur ces hôtes, vous pouvez commencer à tester et à exploiter les vulnérabilités. Avec le nouveau moteur de script NSE (Nmap Scripting Engine) intégré, un certain nombre de scripts préchargés sont fournis avec l’installation standard de nmap. Ces scripts ont un large éventail de fonctions différentes allant de la collecte d’informations de base (comme les deux dont nous avons déjà discuté), de la cartographie des vulnérabilités, du forçage brutal, du déni de service et même de l’exploitation à distance. Tous ces scripts se trouvent dans votre répertoire d’installation nmap. Dans Kali-Linux, ils peuvent être trouvés à /usr/share/nmap/scripts/. Pour accéder à ces scripts et commencer à travailler avec eux, utilisez les commandes suivantes:

cd/usr/share/nmap/scripts/

ls

La commande cd changera le répertoire à l’emplacement des scripts NSE, et la commande ls affichera le contenu du répertoire. Vous pouvez ensuite afficher n’importe lequel des scripts en utilisant la commande cat, suivie du nom du script que vous souhaitez afficher. Pour les besoins de cette démonstration, nous utiliserons ftp-vuln-cve2010-4221.nse. Pour afficher le contenu de ce script, utilisez la commande suivante :

cat ftp-vuln-cve2010-4221.nse

f9

Figure 9. Contenu du script NSE

La figure 9 affiche le contenu de ce script. Si vous naviguez jusqu’en haut du contenu du script, vous verrez plusieurs informations utiles pour inclure une description du script, une liste de ressources supplémentaires pour référence, ainsi qu’une utilisation et une syntaxe appropriées du script. Cependant, le tri de ces scripts dans le répertoire et la localisation d’un script qui remplit une fonction spécifique peuvent être très fastidieux. À mon avis, c’est là que Zenmap (l’interface graphique dont nous avions précédemment parlé) brille vraiment. Pour montrer à quel point l’interface Zenmap peut être utile lorsque vous travaillez avec des scripts NSE, ouvrez-la à nouveau depuis la ligne de commande avec la commande :

zenmap

Puis sélectionnez le menu déroulant Profil et cliquez sur « Nouveau profil ou Commande. »Une fois l’Éditeur de profil ouvert, choisissez l’onglet Script en haut de l’écran. La figure 10 affiche une image de l’interface de script Zenmap.

f10

Figure 10. Interface de script Zenmap

Une liste de tous les scripts nmap disponibles se trouve sur le côté gauche de l’écran. Vous pouvez sélectionner l’un de ces éléments pour l’inclure dans votre commande nmap. Certains scripts nécessiteront des arguments pour pouvoir s’exécuter correctement. Les scripts d’authentification post nécessiteront souvent un nom d’utilisateur et un mot de passe pour des services réseau spécifiques. Dans l’exemple de la figure 10, des arguments peuvent être fournis pour configurer l’attaque par force brute qui doit être effectuée contre le service MySQL. Vous pouvez également passer facilement les arguments du script en entrant les valeurs dans la fenêtre Arguments. Ces arguments seront automatiquement renseignés dans la commande nmap générée. La fenêtre en haut au centre fournit une description du script sélectionné, l’utilisation et la syntaxe appropriées, et même des catégories pour décrire les fonctions du script. Ces catégories peuvent être particulièrement utiles si vous essayez d’effectuer un type de tâche spécifique, telle que l’analyse de vulnérabilité. Après avoir lancé un script NSE avec une commande nmap, vous verrez les résultats dans la sortie nmap standard. Dans le cas de scripts de force brute, la sortie indiquera si l’attaque par force brute a réussi et, si c’est le cas, affichera le nom d’utilisateur et le mot de passe découverts. Dans le cas de scripts de vulnérabilité, la sortie indiquera si la vulnérabilité est présente sur le ou les systèmes cibles. Et dans le cas de scripts d’exploitation, la sortie fournira des informations sur la charge utile qui a ensuite été livrée au système cible.

Script avec Nmap

En plus de son propre moteur de script intégré, nmap prend également en charge plusieurs options de sortie qui facilitent l’utilisation des langages de script traditionnels pour effectuer des analyses de sortie. Deux formats de sortie qui peuvent être utiles pour les scripts incluent la sortie greppable (-oG) et la sortie XML (-oX). XML peut être efficace pour les langages de script de plus haut niveau qui ont des modules qui peuvent être importés pour l’analyse XML et une sortie pouvant être utilisée en conjonction avec le script shell bash pour rationaliser l’analyse des résultats nmap. Pour démontrer comment cette fonctionnalité de sortie pourrait être utilisée en conjonction avec des scripts, nous examinerons un script shell bash simple à 4 lignes, affiché à la figure 11 pour analyser les résultats d’une analyse nmap.

f11

Figure 11. Analyse des résultats Nmap Script Bash

Considérons un scénario dans lequel une analyse nmap a déjà été effectuée sur un très grand réseau et la sortie de l’analyse a été enregistrée au format compatible dans un networkscan.fichier txt. Et supposons que nous souhaitions utiliser hydra pour effectuer une attaque par force brute contre tous les services FTP du réseau, mais nous ne voulons pas perdre le temps qui serait nécessaire pour analyser à nouveau le port 21 sur l’ensemble du réseau. Ce script simple extraira tous les systèmes qui ont un port spécifié ouvert. La première ligne invite l’utilisateur à indiquer un numéro de port. La deuxième ligne affecte ensuite la valeur de l’entrée utilisateur à la variable ‘port’. La troisième ligne indique à l’utilisateur que tous les systèmes avec ce port ouvert seront répertoriés. Et enfin, la dernière commande est l’endroit où nous extrayons les résultats de la sortie greppable nmap. Le script utilise la commande grep pour extraire toutes les lignes du fichier de sortie qui font référence au port spécifié. Cela inclura des lignes qui énumèrent chaque instance où le port est ouvert, fermé ou filtré. Ensuite, il achemine la sortie vers une autre fonction grep qui extrait uniquement les instances dans lesquelles le port spécifié est ouvert. Cette sortie est ensuite acheminée vers la fonction cut, qui spécifie un caractère espace comme délimiteur, puis sort le deuxième champ. Ce faisant, notre script affiche ensuite l’adresse IP de chaque système sur lequel le port spécifié est ouvert. La figure 12 affiche la sortie du script.

f12

Figure 12. Sortie du script d’analyse des résultats Nmap

Bien qu’il s’agisse d’un script très simple, il montre à quel point il peut être facile d’extraire des informations du format de sortie accessible. Une fois acquises, ces informations collectées pourraient facilement être utilisées pour d’autres scripts. Il pourrait être utilisé comme point de départ pour effectuer une autre tâche ultérieure contre chaque système identifié comme ayant un port spécifique ouvert.

Un outil de test de pénétration tout-en-un

En combinant ses différentes capacités, on pourrait facilement effectuer un test de pénétration complet en utilisant nmap seul. On ne peut nier que nmap, avec sa liste impressionnante de fonctions et de capacités, est un outil vraiment puissant. Et au fil des années, il deviendra probablement encore plus puissant à mesure que de plus en plus de personnes continueront à contribuer à ce projet. Comme un enfant avec l’arme de son père, nmap peut être un outil dangereux entre de mauvaises mains. Mais s’il est utilisé correctement, il peut être un atout inestimable pour assurer la sécurité de votre infrastructure réseau. Donc, rappelez-vous toujours de l’utiliser à bon escient et de bien l’utiliser.

À propos de l’auteur

jh

Justin Hutchens effectue actuellement des analyses de vulnérabilité de réseau, de détection d’intrusion et de criminalistique numérique pour un grand réseau d’entreprise avec plus de 33 000 systèmes en réseau. Il a rempli de nombreux rôles différents dans le domaine des technologies de l’information, notamment la conception de réseaux, le développement de systèmes, l’administration de bases de données et la sécurité des réseaux. Il enseigne également actuellement des cours sur les tests de pénétration avec les systèmes d’exploitation Backtrack et Kali-Linux. Il est actuellement titulaire d’un baccalauréat en Technologie de l’information et de plusieurs certifications professionnelles, notamment CISSP (Certified Information System Security Professional), CEH (Certified Ethical Hacker), ECSA (EC-Council Certified Security Analyst) et CHFI (Computer Hacking Forensic Investigator).

Write a Comment

Votre adresse e-mail ne sera pas publiée.