Scripts Nmap. Comment utiliser nmap pour analyser un réseau. Numérisation d'un hôte unique ou d'une adresse IP

Pour beaucoup d'entre nous dont les tâches sont étroitement liées à la sécurité de l'information depuis au moins un certain temps, Nmap est depuis longtemps un outil familier et utile. Il est aussi indispensable qu'une couverture chaude par une froide nuit d'hiver. Sauf que Nmap est une couverture sacrément efficace.

Nmap est un scanner de sécurité réseau multiplateforme en ligne de commande populaire et puissant qui vous permet d'explorer n'importe quel réseau de manière extrêmement efficace. Il peut également vous aider à obtenir une vue d'ensemble des systèmes qui se sont connectés à votre réseau ; vous pouvez l'utiliser pour connaître les adresses IP de tous les hôtes en direct, analyser les ports ouverts et les services s'exécutant sur ces hôtes, et bien plus encore.

Nmap est sans aucun doute le scanner de ports le plus polyvalent qui existe. Oui, vous pouvez trouver des scanners plus rapides, mais aucun n'est aussi utile et tout simplement indispensable pour résoudre un grand nombre de vos tâches. Et la grande majorité des professionnels de la sécurité de l'information seraient catégoriquement d'accord avec cette affirmation.

Cependant, beaucoup moins de gens savent que l'une des fonctionnalités les plus intéressantes de Nmap est la possibilité d'utiliser des scripts NSE, ce qui donnera à votre outil de sécurité réseau préféré encore plus de flexibilité et d'efficacité. Avec leur aide, vous pourrez faire ce que vous n'attendriez jamais d'un scanner de ports très avancé comme Nmap.

Regardons de plus près les scripts NSE, et peut-être que leur potentiel peut vous surprendre agréablement.

En d'autres termes, en plus de l'analyse Nmap standard pour les ports ouverts, vous, en utilisant NSE, pouvez également obtenir des informations détaillées sur les services qui s'exécutent dessus. Ainsi, par exemple, en utilisant des scripts NSE, vous pouvez effectuer une analyse plus approfondie de vos services réseau et voir à quel point ils sont configurés, quelles informations sont disponibles, si des informations d'identification faibles sont utilisées, etc. En fait, les scripts NSE font de Nmap une plate-forme flexible. pour l'interaction avec les services réseau.

Fonctionnalités de script du moteur de script Nmap

L'équipe de développement du scanner de ports Nmap a conçu et créé un moteur de script principalement pour résoudre des problèmes tels que :

1. Recherche en réseau

C'est le principal domaine pratique de Nmap. Plusieurs scripts sont conçus pour faciliter, optimiser et accélérer votre scanner de ports préféré. Certains exemples de leur utilisation incluent l'exécution de tâches telles que :

  • rechercher des données WHOIS (un protocole réseau au niveau de l'application basé sur le protocole TCP ; sa principale application est d'obtenir sous forme de texte des données d'enregistrement sur les propriétaires de noms de domaine, d'adresses IP et de systèmes autonomes) dans les domaines correspondants ;
  • Envoi de requêtes aux principaux serveurs régionaux WHOIS ARIN (Amérique du Nord), RIPE (Europe et Moyen-Orient) ou APNIC (Asie et Pacifique) pour déterminer le propriétaire d'une adresse IP spécifique ;
  • recherche identd sur les ports ouverts (permet d'identifier les utilisateurs qui y sont connectés);
  • exécution de requêtes utilisant le protocole SNMP (protocole Internet de gestion d'appareils dans des réseaux IP basés sur des architectures TCP/UDP) ;
  • compilation de listes de ressources et de services disponibles via des protocoles réseau pour un accès distant NFS, SMB ou RPC.

2. Une version plus sophistiquée de la définition des versions

Le système de gestion de versions de services et d'applications de Nmap est capable de reconnaître des milliers de services différents à l'aide de sondes et de correspondances de signatures d'expressions régulières, mais il n'est pas non plus omnipotent. Par exemple, l'identification du service Skype v2 nécessite deux sondes fonctionnant indépendamment, dont les capacités de détection de version sont peu flexibles. Nmap est également capable de reconnaître certains services SNMP s'il tente de forcer plusieurs centaines de noms de communauté. Les méthodes standard de gestion des versions de Nmap ne sont pas très pratiques pour les deux tâches ci-dessus, mais les deux sont facilement réalisables avec NSE. Pour cette raison, le système de gestion des versions appelle désormais le NSE par défaut pour gérer le problème de gestion des versions lors de la gestion de certains services complexes.

3. Recherche de vulnérabilités

Lorsqu'une nouvelle vulnérabilité est découverte, elle devient notoire et les professionnels de la sécurité réseau doivent de toute urgence analyser leurs réseaux pour identifier rapidement les systèmes vulnérables, avant que les malfaiteurs ne le fassent à leur place. Bien que Nmap ne soit pas un scanner de vulnérabilité à part entière, les puissantes capacités de NSE lui permettent d'effectuer des vérifications de vulnérabilité même avec des exigences très strictes. Par exemple, lorsqu'un bogue Heartbleed dans le logiciel cryptographique OpenSSL a compromis des centaines de milliers de systèmes à travers le monde, les développeurs de Nmap ont répondu en écrivant un script de détection de ssl-heartbleed dans les deux jours.

4. Détection de porte dérobée

De nombreux cyber-intrus, ainsi que certains vers automatisés, laissent derrière eux des portes dérobées afin de se fournir une échappatoire pour une pénétration plus facile dans votre système à l'avenir. Certaines de ces portes dérobées peuvent être détectées à l'aide de la gestion des versions Nmap standard basée sur la correspondance des signatures regex, mais de nombreux vers et portes dérobées plus complexes nécessitent des capacités NSE avancées pour détecter de manière fiable de nombreux vers et portes dérobées plus complexes. En particulier, NSE est utilisé pour détecter la porte dérobée DoublePulsar qui exploite une vulnérabilité dans l'implémentation du protocole SMB, les versions de porte dérobée pour le serveur IRC UnrealIRCd et les serveurs FTP vsftpd et ProFTPd.

5. Détection des vulnérabilités

Basé sur un langage de script à usage général, NSE peut même être utilisé pour créer des exploits qui peuvent vous aider à découvrir des vulnérabilités avant même que leur existence ne soit rendue publique. Cette possibilité d'ajouter des exploits scriptés personnalisés peut être extrêmement utile pour certaines personnes (principalement les testeurs de pénétration). Cependant, le NSE n'est pas une plate-forme à part entière pour créer des signatures et des exploits, comme Metasploit.

Quelles catégories de scripts NSE existe-t-il ?

Il existe actuellement 598 scripts NSE que vous pouvez trouver dans le dossier scripts, un sous-répertoire du répertoire principal Nmap. Pour de meilleures performances, tous les scripts sont indexés dans la base de données "scripts/script.db", qui indique à quelle(s) catégorie(s) chaque script appartient.

En fonction de l'utilisation prévue, ainsi que pour simplifier leur utilisation, les scripts NSE sont regroupés en différentes catégories. Les catégories suivantes de scripts NSE sont actuellement définies : auth, broadcast, brute, default. découverte, dos, exploit, externe, fuzzer, intrusif, malware, safe, version et vuln (les noms de catégorie ne sont pas sensibles à la casse). Vous trouverez ci-dessous une vue plus détaillée de chaque catégorie :

  • authentification- Cette catégorie de scripts traite (ou contourne) les informations d'authentification sur le système cible. Des exemples de tels scripts sont "x11-access", "ftp-anon" et "oracle-enum-users". Notez que les scripts qui utilisent une attaque par force brute pour tenter de déterminer les informations d'identification sont classés comme brut.
  • diffuser- les scripts de cette catégorie sont généralement utilisés pour découvrir des hôtes non spécifiés sur la ligne de commande via une interaction à large bande avec le réseau local. Lorsqu'ils utilisent l'argument de script "newtargets", ils ajoutent automatiquement les hôtes qu'ils trouvent à la file d'attente d'analyse.
  • brute- Cette catégorie de scripts permet de réaliser des attaques en force brute pour obtenir les identifiants d'authentification du serveur distant. Nmap propose des scripts d'attaque par force brute pour des dizaines de protocoles. Ceux-ci incluent les scripts suivants : "http-brute", "oracle-brute", "snmp-brute", etc.
  • défaut- cette catégorie de scripts définit les scripts sélectionnés par les développeurs Nmap comme utiles pour étendre les fonctionnalités du scanner ou optimiser son fonctionnement, et sont affectés à l'ensemble de base "par défaut". Ils sont exécutés en utilisant les options "-sC" ou "-A", et non en spécifiant une liste spécifique de scripts à l'aide de l'option "--script". Il est possible de spécifier explicitement cette catégorie de scripts, comme les autres, en utilisant "--script = default". L'équipe Nmap, lorsqu'elle détermine s'il faut catégoriser un script particulier par défaut, essaie de s'appuyer sur les exigences suivantes :
    • la vitesse- L'analyse par défaut doit se terminer rapidement, ce qui exclut l'inclusion de pirates d'authentification par force brute, d'araignées Web et de tout autre script de cette catégorie, dont le temps d'analyse d'un service est calculé en minutes, voire en heures.
    • utilitaire- Réaliser un scan dans une catégorie par défaut nécessite des informations précieuses et pertinentes. En d'autres termes, le résultat de l'analyse d'un tel script doit être compréhensible et utile pour le professionnel moyen de la sécurité réseau. Sinon, cela n'a pas de sens de l'exécuter par défaut.
    • brièveté- la sortie des informations reçues par le scanner Nmap est utilisée à diverses fins et besoins, ces informations doivent donc être lisibles et concises. Les scripts, qui créent souvent de nombreuses pages avec une sortie complète de toutes les informations reçues, n'appartiennent pas non plus à la catégorie de script par défaut. En d'autres termes, les scripts NSE classés par défaut n'affichent rien dans le rapport lorsqu'ils ne trouvent aucune information importante. Cela s'applique également aux scripts par défaut qui recherchent les vulnérabilités cachées - ils n'affichent le résultat que lorsque ces vulnérabilités sont trouvées.
    • fiabilité- de nombreux scripts dans leur travail peuvent s'appuyer sur les données d'analyse heuristique et de coïncidences de signatures floues afin de tirer certaines conclusions sur l'hôte ou le service cible. Des exemples de tels scripts sont « sniffer-detect » et « sql-injection ». De tels scripts ne seront pas catégorisés par défaut, car les résultats de leur travail sont souvent erronés et peuvent induire en erreur l'utilisateur qui ne comprend pas clairement toutes les spécificités de leur travail.
    • discrétion- certains scripts sont inutilement intrusifs lorsqu'ils utilisent des ressources importantes d'un système distant, ce qui peut conduire à la défaillance de ce système ou service, ou que leurs actions peuvent être considérées par les administrateurs distants comme une attaque. De tels scripts ne sont pas non plus inclus dans la catégorie par défaut. Cependant, certains scripts "modérément agressifs" ont été classés par défaut par l'équipe Nmap en fonction de leur utilité et de leur comportement, compte tenu d'autres facteurs.
    • confidentialité- de nombreux scripts peuvent divulguer des informations confidentielles à des tiers, en fonction des spécificités mêmes de leur travail. Par exemple, les scripts pour rechercher des données WHOIS doivent signaler l'adresse IP cible aux bureaux d'enregistrement régionaux. En d'autres termes, dans la catégorie des scripts NSE par défaut, la commande Nmap essaie de ne pas ajouter de scripts qui pourraient compromettre la confidentialité.
  • Découverte- cette catégorie de scripts essaie activement d'en savoir plus sur le réseau en envoyant des requêtes publiques au registraire, aux appareils compatibles SNMP, au service d'annuaire, etc. Des exemples de tels scripts sont "html-title" (obtient le titre du chemin racine des sites Web), "smb-enum-shares" (répertorie les partages Windows) et "snmp-sysdescr" (récupère des informations détaillées sur le système via la norme protocole Internet pour la gestion des périphériques SNMP).
  • dos- les scripts de cette catégorie doivent être utilisés avec une extrême prudence, car ils peuvent entraîner un déni de service. Ils sont parfois utilisés par les testeurs de sécurité pour tester la vulnérabilité d'un système aux attaques par déni de service, mais ces tests peuvent entraîner des effets secondaires indésirables, tels que la défaillance de certains services vulnérables.
  • exploit- ces scripts visent à exploiter activement une vulnérabilité spécifique. Des exemples de cette catégorie de scripts sont "jdwp-exec" et "http-shellshock".
  • externe- les scripts de cette catégorie peuvent envoyer des données à des tiers contrôlant des bases de données ou d'autres ressources réseau. Un exemple d'un tel script est "whois-ip", qui se connecte aux serveurs WHOIS pour obtenir des informations sur l'adresse IP de la cible. Il est toujours possible que les opérateurs de bases de données tiers enregistrent tout ce que vous leur envoyez, ce qui, dans de nombreux cas, inclura des informations sur votre adresse IP et l'adresse IP de votre cible. La plupart des scripts qui traitent exclusivement du trafic entre l'ordinateur d'analyse et le client n'entrent pas dans cette catégorie.
  • fuzzer- Cette catégorie de scripts est conçue pour envoyer des champs inattendus ou aléatoires au logiciel serveur dans chaque lot. Bien que cette méthode puisse être utile pour trouver des bogues et des vulnérabilités inconnus dans les logiciels, il s'agit d'un processus lent qui consomme également beaucoup de bande passante. Un exemple de scripts de cette catégorie est "dns-fuzz", qui bombarde le serveur DNS de requêtes de domaine partiellement modifiées jusqu'à ce que le serveur tombe en panne ou qu'un délai défini par l'utilisateur expire.
  • intrusif- cette catégorie de scripts comprend ceux qui ne peuvent pas être classés comme sûrs (safe), car les risques sont trop élevés que le système cible s'effondre sous leur pression, nécessiteront des ressources importantes sur l'hôte cible (par exemple, bande passante ou temps processeur) , ou autre, leur exécution sera perçue par les administrateurs du système cible comme une activité malveillante. Des exemples de tels scripts sont "http-open-proxy" (qui essaie d'utiliser le serveur cible comme proxy HTTP) et "snmp-brute" (qui essaie de deviner la soi-disant "chaîne de communauté" des périphériques SNMP en envoyant des valeurs telles que public, privé et cisco). Si un script n'appartient pas à la catégorie des versions spéciales, il doit être classé comme sûr ou intrusif.
  • malware- Ces scripts vérifient si la plate-forme cible est infectée par des logiciels malveillants ou des portes dérobées. Des exemples de scripts dans cette catégorie de scripts sont "smtp-strangeport", qui surveille les serveurs SMTP s'exécutant sur des numéros de port inhabituels, et "auth-spoof", qui détecte les démons identd usurpés (qui implémentent la prise en charge du protocole d'authentification utilisateur) qui fournissent une fausse réponse encore avant de recevoir la demande. Pour le premier et le deuxième exemple, un tel comportement, s'il est détecté, est généralement le signe d'une infection du système par un logiciel malveillant.
  • en sécurité- tous les scripts qui n'ont pas été créés pour provoquer une panne de service, utilisent de grandes quantités de bande passante réseau ou d'autres ressources, ou n'ont pas pour but d'exploiter des failles de sécurité, sont classés comme sûrs. Ils sont beaucoup moins susceptibles d'attirer l'attention des administrateurs distants, bien que (comme pour toute autre fonctionnalité Nmap) il ne soit pas garanti à 100% qu'ils n'attireront jamais l'attention collatérale. La plupart de ces scripts effectuent des tâches générales d'exploration du réseau. Des exemples de scripts dans cette catégorie sont "ssh-hostkey" (obtient la clé SSH de l'hôte) et "html-title" (prend le titre de la page Web). Les scripts de la catégorie de version ne sont pas classés comme sûrs, mais les autres scripts qui ne le sont pas doivent être définis comme intrusifs.
  • version- les scripts de cette catégorie spéciale sont des extensions de la fonctionnalité de détection de version et ne peuvent pas être sélectionnés explicitement. Ils ne sont sélectionnés pour s'exécuter que lorsqu'on leur demande de déterminer la version de Nmap ("-sV"). Leur sortie ne peut pas être séparée de la sortie de la fonction de gestion des versions, et ils n'agissent pas comme des scripts d'hôte ou de service. Des exemples de tels scripts sont "skypev2-version", "pptp-version" et "iax2-version".
  • vuln- les scripts de cette catégorie effectuent des vérifications pour une vulnérabilité connue spécifique et ne renvoient généralement que les résultats qui confirment qu'une telle vulnérabilité a été trouvée. Des exemples de tels scripts sont "realvnc-auth-bypass" et "afp-path-vuln".

Les scripts, en fonction de leur focus fonctionnel, ainsi que de la phase d'analyse au cours de laquelle ils sont exécutés, sont divisés en quatre types (certains scripts peuvent supporter plusieurs types d'opérations à la fois) :

  • Scripts de pré-règle - ce type de scripts est exécuté avant même que toute opération Nmap ne soit effectuée, respectivement, ils sont exécutés avant l'étape d'analyse, lorsque Nmap n'a pas encore collecté d'informations sur la cible. Ces scripts peuvent être utiles pour des tâches indépendantes de cibles d'analyse spécifiques, telles que les demandes de diffusion pour interroger les serveurs DHCP et DNS SD. Certains de ces scripts peuvent créer de nouvelles cibles pour les analyses Nmap (uniquement si vous spécifiez l'argument NSE "newtargets"). Ainsi, par exemple, le script dns-zone-transfer peut obtenir une liste d'adresses IP dans un domaine à l'aide d'une demande de transfert de zone, puis les ajouter automatiquement à la liste des cibles pour les analyses Nmap. Les scripts de pré-règle sont identifiés à l'aide de la fonction de pré-règle.
  • Scripts d'hôte - Ces scripts sont exécutés pendant le processus d'analyse Nmap normal, une fois que le scanner Nmap a effectué des opérations normales telles que la découverte d'hôte, l'analyse de port, la détection de version et la découverte de système d'exploitation sur l'hôte cible. Ce type de script est appelé une fois pour chaque hôte cible qui correspond à sa fonction de règle d'hôte. Les exemples incluent les scripts "whois-ip", qui recherchent les informations sur le propriétaire de l'adresse IP cible, et "path-mtu", qui essaie de déterminer la taille maximale des paquets IP pouvant atteindre la cible sans nécessiter de fragmentation.
  • Scripts de service - Ce type de script est exécuté lorsque certains services sont trouvés sur l'hôte cible. Par exemple, Nmap inclut plus de 15 scripts de service http qui s'exécutent pour fonctionner avec les serveurs Web. Si l'hôte dispose de serveurs Web exécutés sur plusieurs ports, ces scripts peuvent être exécutés plusieurs fois (un pour chaque port). Ce sont les types de scripts les plus courants dans Nmap, et ils diffèrent en ce qu'ils contiennent une fonction de portrule pour déterminer sur quels services détectés le script doit s'exécuter.
  • Scripts de post-règle - Ce type de script est exécuté une fois, après que Nmap a scanné toutes les cibles. Ils peuvent être utiles pour formater et présenter la sortie du scanner Nmap. Par exemple, le script "ssh-hostkey" est mieux connu sous le nom de script de service (avec la fonction de portrule spécifiée) qui se connecte aux serveurs SSH, découvre leurs clés publiques et les imprime. Mais il inclut également la fonctionnalité de post-règle, qui vérifie les clés en double parmi tous les hôtes vérifiés, puis imprime toutes celles trouvées. Une autre utilisation potentiellement possible de ce type de script est d'imprimer à l'envers la sortie d'un scanner Nmap - par exemple, répertorier tous les hôtes exécutant un service particulier, plutôt que de simplement répertorier tous les hôtes exécutant des services sur eux. Les scripts de post-règle sont identifiés à l'aide de la fonction de post-règle.

Noter: de nombreux scripts peuvent être exécutés en tant que script de pré-règle ou de post-règle. Dans ces cas, il est recommandé d'utiliser la fonctionnalité de pré-règle pour éviter les incohérences.

L'éternel paranoïaque, Anton Kochukov.


Voir également:

Ci-dessous vous trouverez 20 basiques exemples d'utilisation de la commande Nmap.

Vous apprendrez à utiliser Nmap à partir de ligne de commande sous Linux pour trouver des hôtes actifs sur le réseau et analyser les ports ouverts.

tu verras comment identifier à distance le système d'exploitation utiliser les empreintes de la pile TCP/IP et comment connaître la version du logiciel exécuté sur un serveur distant.

Je vais également vous montrer comment utiliser Nmap pour implémenter analyse secrète, comment définir un pare-feu Et comment usurper l'adresse MAC.

1. Scannez un hôte ou une adresse IP

Analyse Adresse IP distincte:

$ nmap 192.168.1.1

Analyser le serveur par Nom d'hôte:

$ nmap serveur.site

Augmenter Niveau de détail résultats de l'analyse :

$ nmap -v serveur..site

2. Analyser plusieurs adresses IP

Analyse Plusieurs adresses IP:

$ nmap 192.168.1.1 192.168.1.2 192.168.1.3 $ namp 192.168.1.1,2,3

Analyse Sous-réseau:

$ nmap 192.168.1.0/24 $ nmap 192.168.1. *

Analyse Plage d'adresses IP (192.168.1.0 — 192.168.1.200):

$ nmap 192.168.1.0-200

3. Recherche d'ordinateurs actifs sur le Net

Conseil utile: Scannez le réseau avec une seule commande ping ! Calculez tous les ordinateurs actifs !

Analyser le réseau dans la recherche Hôtes actifs:

$ nmap -sn 192.168.1.0/24

4. Numérisation de la liste d'hôtes à partir d'un fichier

Analyser une liste d'hôtes/réseaux à partir de Déposer:

$ nmap -iL input.txt

Format de fichier:

# Les entrées peuvent être dans n'importe quel format que Nmap peut gérer à partir de la ligne de commande (adresses IP, noms d'hôte, CIDR, IPv6 ou plages d'octets). Les entrées doivent être séparées par un ou plusieurs espaces, # tabulations ou sauts de ligne. $ cat input.txt server.site 192.168.1.0/24 192.168.2.1,2,3 192.168.3.0-200

5. Exclure IP/Hôtes/Réseaux de l'analyse

Exclure les ciblesà partir de l'analyse Nmap :

$ nmap 192.168.1.0/24 --exclude 192.168.1.1 $ nmap 192.168.1.0/24 --exclude 192.168.1.1 192.168.1.5 $ nmap 192.168.1.0/24 --exclude 192.168.1.1,2,3

Liste d'exclusion hosts extraits du fichier :

$ nmap 192.168.1.0/24 --excludefile exclude.txt

Le format de fichier des hôtes exclus est le même que ci-dessus.

6. Numérisation de ports spécifiques

Analyse Un port:

$ nmap -p 80 192.168.1.1

Analyse Ports multiples:

$ nmap -p 80 443 192.168.1.1

Analyse Plage de ports:

$ nmap -p 80-1000 192.168.1.1

Analyse Tous les ports:

$ nmap -p "*" 192.168.1.1

Scannez certains des plus Ports communs:

$ nmap --top-ports 5 192.168.1.1 $ nmap --top-ports 10 192.168.1.1

7. Déterminer les protocoles IP pris en charge

Déterminer quel Protocoles IP(TCP, UDP, ICMP, etc.) prend en charge l'hôte analysé :

$ nmap -sO 192.168.1.1

8. Analyse des ports TCP/UDP

Analyse tous les ports TCP:

$ nmap -sT 192.168.1.1

Analyse Ports TCP spécifiques:

$ nmap -p T: 80 192.168.1.1

Analyse tous les ports UDP:

$ nmap -sU 192.168.1.1

Analyse Ports UDP spécifiques:

$ nmap -p U: 53 192.168.1.1

Combinaison de différents scans de ports :

$ nmap -p U: 53,79,113, T: 21-25,80,443,8080 192.168.1.1

9. Analyse rapide

Activer Mode rapide analyse:

$ nmap -F 192.168.1.1

* Analyse moins de ports qu'une analyse normale.

10. Afficher la raison de l'état du port

Spectacle La raison, selon lequel Nmap considère que le port est dans un certain état :

$ nmap --reason 192.168.1.1

11. Afficher uniquement les ports ouverts

Spectacle Ports ouverts uniquement(ou éventuellement ouvert) :

$ nmap --open 192.168.1.1

12. Définition du système d'exploitation

L'une des fonctionnalités les plus connues de Nmap est la détection à distance du système d'exploitation basée sur l'analyse de la pile TCP/IP.

Nmap envoie une série de paquets TCP et UDP à l'hôte distant et examine les réponses.

Après avoir effectué de nombreux tests, Nmap compare les résultats avec sa base de données et, lorsqu'une correspondance est trouvée, affiche des informations sur le système d'exploitation.

Allumer Définition du système d'exploitation:

$ nmap -O 192.168.1.1

13. Détermination de la version des services

Allumer Détermination de la version des services:

$ nmap -sV 192.168.1.1

* Détermine les versions des programmes exécutés sur le serveur distant.

14. Détection de pare-feu

Découvrez si votre ordinateur est protégé par un Filtres par lots ou Pare-feu:

$ nmap -sA 192.168.1.1

15. Usurpation d'adresse MAC

Remplacer Adresses MAC:

$ nmap --spoof-mac 00: 11: 22: 33: 44: 55 192.168.1.1

Usurpation d'adresse MAC MAC aléatoire:

$ nmap --spoof-mac 0 192.168.1.1

16. Analyse du pare-feu à la recherche de vulnérabilités

Ces trois types d'analyses exploitent une faille invisible dans la RFC TCP pour faire la distinction entre les ports ouverts et fermés.

Lorsqu'un système compatible RFC est analysé, tout paquet dont le bit SYN, RST ou ACK n'est pas défini entraînera l'envoi d'un RST en réponse si le port est fermé, ou aucune réponse si le port est ouvert.

Parce que aucun de ces bits n'est défini, alors toute combinaison des trois bits restants (FIN, PSH et URG) sera correcte.

TCP nul balayage:

$ nmap -sN 192.168.1.1

* Aucun bit n'est défini (indicateurs dans l'en-tête TCP 0).

Fin TCP balayage:

$ nmap -sF 192.168.1.1

* Seul le bit TCP FIN est défini.

TCP Noël balayage:

$ nmap -sX 192.168.1.1

* Les drapeaux FIN, PSH et URG sont définis (le paquet brille comme un sapin de Noël).

17. Scan caché

Conseil utile: Restez anonyme pendant les scans de ports ! Utilisez Nmap + Tor + ProxyChains ! Tests de pénétration sûrs et faciles !

TCP SYN balayage:

$ nmap -sS 192.168.0.1

* Connu sous le nom de scan semi-ouvert car il n'ouvre pas les connexions TCP complètes.

18. Désactiver la découverte d'hôte (pas de ping)

Ne pas envoyer de ping aux hôtes avant l'analyse :

$ nmap -Pn 192.168.1.1

19. Désactiver l'utilisation du DNS

Conseil utile: Besoin de renforcer la sécurité Linux ? Chiffrez le trafic DNS pour éviter l'usurpation d'identité !

N'effectuez jamais de résolution DNS inversée pour chaque adresse IP active trouvée.

Nmap est un scanner culte dont presque aucun pirate informatique ne peut se passer, donc le sujet de l'extension de ses capacités, je pense, en intéresse beaucoup. Il est courant d'utiliser d'autres outils avec Nmap. Cet article expliquera comment automatiser facilement Nmap avec vos outils préférés. Il est plus pratique d'"appuyer sur un bouton" et d'obtenir le résultat que de faire constamment la même séquence d'actions. L'utilisation de scripts dans Nmap peut aider les pirates à s'introduire plus automatiquement dans les systèmes, et les administrateurs système peuvent vérifier les systèmes pour les trous par défaut et les corriger en temps opportun.

Quelques mots sur Nmap

Je suis sûr que la plupart des lecteurs du magazine Hacker savent ce qu'est Nmap et l'ont probablement utilisé plus d'une fois pour explorer le réseau et collecter des informations. Pour ceux qui ont oublié ou ne savent pas, au cas où, je vous rappelle :

  • Nmap est un outil multiplateforme pour analyser un réseau, vérifier sa sécurité, détecter les versions du système d'exploitation et divers services, et bien plus encore. C'est un utilitaire très flexible et facilement extensible, et en fait un tel moteur de script NSE ;
  • NSE (Nmap Scripting Engine) est un puissant composant Nmap qui permet aux utilisateurs d'écrire des scripts pour automatiser un large éventail de tâches réseau : interaction plus flexible avec les capacités Nmap existantes, détection et exploitation des vulnérabilités, etc. NSE est basé sur l'interprète en langue Lua ;
  • Lua est un langage de script similaire à JavaScript.

Formulation du problème

Comme déjà mentionné, nous allons travailler aujourd'hui sur l'extension des fonctionnalités de Nmap en écrivant nos propres scripts. Tout piratage / test de pénétration commence généralement par la collecte de renseignements et de données. L'un des premiers à vérifier est la présence de ports ouverts sur l'hôte à l'étude et l'identification des services en cours d'exécution. Il n'y a peut-être pas de meilleur outil pour collecter de telles informations que Nmap. L'étape suivante après l'analyse est généralement soit une recherche d'exploit pour un service vulnérable trouvé, soit une méthode de force brute pour sélectionner une paire login:mot de passe.

Supposons que vous utilisez activement la force brute de THC-Hydra pour forcer des mots de passe pour plusieurs services (par exemple, HTTP-Basic, SSH, MySQL). Dans ce cas, vous devez définir l'hydre sur chaque service séparément, vous devez vous souvenir des fonctionnalités des services et des drapeaux nécessaires pour lancer l'hydre. Et s'il y a un besoin de force brute bien plus que cinq services ?.. Pourquoi ne pas automatiser cela ?

Par conséquent, écrivons un script simple qui automatisera le processus de démarrage d'Hydra pour forcer les connexions / mots de passe pour un service (par exemple, PostgreSQL). Pour cela, nous avons besoin des outils suivants :

  • Nmap;
  • THC-Hydra;
  • n'importe quel éditeur de texte.

Si vous n'avez pas encore installé Nmap et/ou Hydra, corrigez-le immédiatement :

$ sudo apt-get install nmap hydra

Bon, commençons. Les scripts Nmap sont des fichiers texte avec l'extension * .nse. Ouvrez donc votre éditeur de texte préféré et créez un nouveau fichier. Je vais utiliser Vim :

$ vim hydra.nse

Structure de script NSE

Avant de passer à l'écriture, il faut dire que tous les scripts ont une certaine structure. En plus du code lui-même, qui automatise certaines actions, il contient une description du script (à quoi il est destiné et comment l'utiliser), des informations sur l'auteur, la licence, la dépendance vis-à-vis d'autres scripts, les catégories auxquelles appartient le script , etc. Regardons de plus près chacune de ces parties.

Description du script (description)

Cette section contient une description du script, les commentaires de l'auteur, un exemple d'affichage du résultat de l'exécution du script à l'écran, des fonctionnalités supplémentaires.

Pour notre script, qui sélectionne les logins/mots de passe pour PostgeSQL, la description ressemblera à ceci :

Description = [[Force brutale de tous les services s'exécutant sur un hôte cible. Les résultats sont retournés dans un tableau avec chaque chemin, méthode détectée, login et/ou mot de passe. ]] --- - @usage - nmap --script hydra [--script-args "lpath = , pchemin = "] - - @output - SERVICE D'ÉTAT DE PORT - 80 / tcp ouvert http - | hydre : - | chemin d'accès méthode login mot de passe - | 127.0.0.1/private/index.html Digest log pass - | _ 127.0.0.1/simple/index.txt Basic user qwerty - - @args hydra.lpath : le chemin du fichier avec les logins. Par exemple, - nmap --script hydra --script-args = "lpath = / home / my_logins.txt" - @args hydra.ppath : le chemin du fichier avec les mots de passe. Par exemple, - nmap --script hydra --script-args = "ppath = / home / my_pass.txt"

Un commentaire; - - commentaire multi-lignes ; @usage, @output, @args - un exemple d'appel d'un script, affichant le résultat à l'écran, les arguments requis lors de l'appel.

Ci-dessus dans @usage, nous voyons le format de lancement du script. Dans ce cas, seul le nom du script (hydra) est spécifié. Cela devient possible si le script est placé dans le / /nmap/scripts/, sinon vous devrez spécifier le chemin absolu ou relatif vers celui-ci. À l'avenir, nous allons permettre de définir des arguments lors du démarrage du script. Les arguments sont spécifiés à l'aide du drapeau --script-args " ". Dans notre cas, nous allons définir le chemin vers le fichier avec les logins (lpath) et vers le fichier avec les mots de passe (ppath). Les arguments sont facultatifs : par défaut, nous rechercherons les fichiers nommés login.txt et password.txt dans le répertoire courant.

Catégories dans lesquelles se trouve le script (catégories)

Lors de l'écriture d'un script NSE, vous pouvez spécifier sa catégorie (ou plusieurs catégories). Ceci est utile lorsque l'utilisateur Nmap ne souhaite pas utiliser un script spécifique, mais un ensemble de scripts appartenant à la même catégorie. Exemples de certaines catégories :

  • auth est la catégorie dans laquelle les scripts définissent les données d'authentification de l'hôte cible.
  • brute - une catégorie dont les scripts aident à définir les identifiants et les mots de passe pour divers services ;
  • par défaut est une catégorie qui contient les scripts principaux. Certains critères déterminent si un script appartient à cette catégorie : vitesse de numérisation, utilité, fiabilité, confidentialité, rendu visuel ;
  • les logiciels malveillants sont une catégorie qui permet d'identifier les logiciels malveillants.

Par exemple, si vous devez exécuter tous les scripts de la catégorie auth, la commande ressemblera à ceci :

$ nmap --script = auth example.com

Dans ce cas, les scripts de cette catégorie seront lancés un par un pour l'hôte spécifié. Notre script appartient à la catégorie brute. Ajoutons la ligne suivante au fichier :

Catégories = ("brute")

Informations sur l'auteur (auteur)

Chaque script contient des informations sur son auteur. Dans mon cas:

Auteur = "Olga Barinova"

Informations sur la licence utilisée (licence)

Nmap accueille tous les développements des utilisateurs et encourage le partage, y compris les scripts NSE. En spécifiant la licence, vous confirmez le droit de partager le script avec la communauté. La licence Nmap standard ressemble à ceci :

License = "Identique à Nmap - Voir http://nmap.org/book/man-legal.html"

Ajoutons également cette ligne à notre script.

Dépendances d'autres scripts (dépendances)

Cette zone contient les noms des scripts NSE qui doivent être exécutés avant de démarrer ce script pour obtenir les informations nécessaires. Par exemple,

Dépendances = ("smb-brute").

Dans notre cas, cette fonctionnalité ne sera pas nécessaire, nous n'ajouterons donc pas de dépendances.

Port hôte

Nmap doit savoir pour quels services et sur quels ports exécuter le script. Il y a des règles spéciales pour cela :

  • prerule () - le script est exécuté une fois avant d'analyser un hôte, utilisé pour certaines opérations réseau ;
  • hostrule (hôte) - le script est exécuté pour chaque hôte à partir de la table qu'il prend comme argument ;
  • portrule (hôte, port) - le script est exécuté pour chaque hôte et pour chaque port à partir des tables qu'il prend comme arguments ;
  • postrule () - le script est exécuté une fois après avoir scanné n'importe quel hôte. Il est principalement utilisé pour traiter les résultats obtenus, résumer des statistiques, etc.

Il existe des bibliothèques pour la formation de telles règles. Dans notre script, il vous suffit de spécifier le numéro de port (5432) et le nom du service (postgresql), puis cela ne fonctionnera que pour ce port et ce service. Il existe une bibliothèque shortport assez populaire intégrée au NSE qui comprend diverses méthodes. Nous utiliserons la méthode

Port_or_service (ports, services, protos, états)

où les ports sont des numéros de port, les services sont des noms de service, les protos sont des noms de protocole (par exemple, udp), les états sont des états.

Cette méthode renvoie true si un service en cours d'analyse est situé sur l'un des ports de la liste des ports ou correspond à un service de la liste des services. De plus, le protocole et l'état sont vérifiés pour la conformité, sinon false est renvoyé.
Pour que notre script fonctionne avec PostgreSQL, nous devons ajouter le numéro de port et le nom du service :

Portrule = shortport.port_or_service ((5432), ("postgresql"))

Connexion des bibliothèques

Écartons une seconde de la structure du script et considérons comment les bibliothèques externes sont connectées, dont nous devons accéder aux fonctionnalités.

La suite est disponible uniquement pour les participants

Option 1. Rejoignez la communauté "site" pour lire tous les documents sur le site

L'adhésion à la communauté pendant la période spécifiée vous ouvrira l'accès à TOUS les documents Hacker, augmentera votre remise cumulative personnelle et vous permettra d'accumuler un score Xakep professionnel !

Nmap est un scanner de réseau open source très populaire qui peut être utilisé à la fois sous Windows et Linux. Nmap, ou Network Mapper, a été développé par Gordon Luon et est actuellement utilisé par les professionnels de la sécurité et les administrateurs système du monde entier.

Ce programme aide les administrateurs système à comprendre très rapidement quels ordinateurs sont connectés au réseau, à connaître leurs noms, ainsi qu'à voir quel logiciel y est installé, quel système d'exploitation et quels types de filtres sont appliqués. La fonctionnalité du programme peut être étendue avec son propre langage de script, ce qui permet aux administrateurs d'automatiser de nombreuses actions.

Par exemple, les scripts peuvent détecter automatiquement de nouvelles failles de sécurité sur votre réseau. Namp peut être utilisé avec de bonnes et de mauvaises intentions, veillez à ne pas utiliser nmap contre la loi. Dans ce tutoriel, nous verrons comment utiliser namp pour analyser les ports sous Linux. Mais vous devez d'abord essayer de comprendre comment fonctionne cet utilitaire.

Dans les réseaux informatiques, tous les appareils connectés ont leur propre adresse IP. Chaque ordinateur prend en charge le protocole ping, qui peut être utilisé pour déterminer s'il est connecté au réseau. On envoie juste une requête ping à l'ordinateur, et s'il répond, alors on considère qu'il est connecté. Nmap adopte une approche légèrement différente. Les ordinateurs réagissent également d'une certaine manière à certains paquets réseau, l'utilitaire envoie simplement les paquets nécessaires et regarde quels hôtes ont envoyé une réponse.

Mais vous le savez probablement déjà. Plus intéressant est de savoir comment Nmap sait quels services s'exécutent sur une machine. L'essence de tous les programmes réseau est basée sur les ports. Pour recevoir un message du réseau, le programme doit ouvrir un port sur votre ordinateur et attendre les connexions entrantes. Et pour envoyer un message sur le réseau, vous devez vous connecter à un autre port de programme (destinataire). Ensuite, le programme devra ouvrir un port sur lequel il attendra une réponse.

L'utilitaire nmap, lors de l'analyse du réseau, énumère la plage de ports disponibles et essaie de se connecter à chacun d'eux. Si la connexion est réussie, dans la plupart des cas, en transmettant plusieurs paquets, le programme peut même connaître la version du logiciel qui attend les connexions sur ce port. Maintenant que nous avons couvert les bases, voyons comment utiliser nmap pour l'analyse des ports et du réseau.

Syntaxe Nmap

La commande pour lancer Nmap est très simple pour cela, il vous suffit de lui passer l'adresse IP ou le réseau cible dans les paramètres, et aussi de spécifier des options si besoin :

$ nmap options adresse

Voyons maintenant les options de base dont nous aurons besoin dans cet article.

  • -sL- créez simplement une liste d'hôtes en cours d'exécution, mais ne scannez pas les ports nmap ;
  • -sp- vérifier uniquement si l'hôte est disponible en utilisant ping ;
  • -PN- considérer tous les hôtes disponibles, même s'ils ne répondent pas au ping ;
  • -sS / sT / sA / sW / sM- Analyse TCP ;
  • -su- UDP scan nmap ;
  • -sN / sF / sX- Analyse TCP NULL et FIN ;
  • -sC- exécuter le script par défaut ;
  • -si- scan Indle paresseux ;
  • -p- spécifier une plage de ports à vérifier ;
  • -sV- une étude détaillée des ports pour déterminer les versions des services ;
  • -O- déterminer le système d'exploitation ;
  • -T- vitesse de numérisation, plus, plus vite;
  • -RÉ- balayage de masque utilisant une fausse IP ;
  • -S- changer votre adresse IP à celle spécifiée;
  • -e- utiliser une interface spécifique ;
  • --spoof-mac- définissez votre adresse MAC ;
  • -UNE- détermination du système d'exploitation à l'aide de scripts.

Maintenant que nous avons couvert toutes les options de base, parlons de la façon dont l'analyse des ports nmap est effectuée.

Comment utiliser nmap pour l'analyse des ports sous Linux

Ensuite, regardons des exemples de nmap. Voyons d'abord comment trouver tous les périphériques connectés au réseau, pour cela il suffit d'utiliser l'option -sL et de spécifier le masque de notre réseau. dans mon cas, c'est 192.168.1.1/24. Vous pouvez trouver le masque de votre réseau local en exécutant la commande :

Dans la sortie de l'interface utilisée, prenez le numéro après la barre oblique et spécifiez l'adresse IP de votre routeur avant la barre oblique. La commande pour analyser le réseau nmap ressemblera à ceci :

nmap -sL 192.168.1.1/24

Parfois, cette analyse peut ne produire aucun résultat car certains systèmes d'exploitation disposent d'une protection par analyse de port. Mais cela peut être contourné en utilisant simplement ping pour scanner toutes les adresses IP sur le réseau, pour cela il y a l'option -sn :

nmap -sn 192.168.1.1/24

Comme vous pouvez le voir, le programme a maintenant détecté des appareils actifs sur le réseau. Ensuite, nous pouvons analyser les ports nmap pour le nœud souhaité en exécutant l'utilitaire sans options :

sudo nmap 192.168.1.1

Maintenant, nous pouvons voir que nous avons plusieurs ports ouverts, tous sont utilisés par un service sur la machine cible. Chacun d'eux peut être potentiellement vulnérable, il n'est donc pas sûr d'avoir de nombreux ports ouverts sur une machine. Mais ce n'est pas tout ce que vous pouvez faire, en outre, vous apprendrez à utiliser nmap.

Pour obtenir des informations plus détaillées sur la machine et les services qui y sont exécutés, vous pouvez utiliser l'option -sV. L'utilitaire se connectera à chaque port et déterminera toutes les informations disponibles :

sudo nmap -sV 192.168.1.1

Nous avons ftp en cours d'exécution sur notre machine, nous pouvons donc essayer d'examiner ce service plus en détail en utilisant des scripts nmap standard. Les scripts vous permettent de vérifier le port plus en détail, de trouver d'éventuelles vulnérabilités. Pour ce faire, utilisez l'option -sC et -p pour définir le port :

sudo nmap -sC 192.168.56.102 -p 21

Nous avons exécuté le script par défaut, mais il existe également d'autres scripts, par exemple, vous pouvez trouver tous les scripts pour ftp avec la commande :

sudo find/usr/share/nmap/scripts/-name "* .nse" | grep ftp

Ensuite, nous essaierons d'utiliser l'un d'entre eux, pour cela il suffit de le spécifier à l'aide de l'option --script. Mais d'abord, vous pouvez voir les informations sur le script :

sudo nmap --script-help ftp-brute.nse

Ce script essaiera de déterminer le login et le mot de passe FTP sur l'hôte distant. Exécutez ensuite le script :

sudo nmap --script ftp-brute.nse 192.168.1.1 -p 21

En conséquence, le script a récupéré le login et le mot de passe, admin / admin. C'est pourquoi vous n'avez pas besoin d'utiliser les options de connexion par défaut.

Vous pouvez également exécuter l'utilitaire avec l'option -A, il active le mode le plus agressif de l'utilitaire, avec lequel vous obtiendrez la plupart des informations avec une seule commande :

sudo nmap -A 192.168.1.1

Veuillez noter qu'il y a presque toutes les informations que nous avons vues auparavant. Il peut être utilisé pour augmenter la protection de cette machine.

conclusions

Dans cet article, nous avons examiné comment l'analyse des ports nmap est effectuée, ainsi que quelques exemples simples d'utilisation de cet utilitaire. Ces commandes nmap peuvent être utiles à de nombreux administrateurs système pour améliorer la sécurité de leurs systèmes. Mais ce ne sont pas toutes les capacités de l'utilitaire. Continuez à expérimenter avec l'utilitaire pour en savoir plus, mais pas sur les réseaux d'autres personnes !

A propos de l'auteur

Fondateur et administrateur du site, je suis passionné par les logiciels open source et le système d'exploitation Linux. J'utilise actuellement Ubuntu comme système d'exploitation principal. Outre Linux, je m'intéresse à tout ce qui touche aux technologies de l'information et à la science moderne.

nmap [ <Тип сканирования> ...] [ <Опции> ] { <цель сканирования> }

La description

Nmap (" Mappeur de réseau ") est un utilitaire open source pour l'exploration du réseau et l'audit de sécurité. Il a été conçu pour analyser rapidement les grands réseaux, même s'il convient parfaitement aux cibles uniques. Nmap utilise des paquets IP bruts de manière ingénieuse pour déterminer quels hôtes sont disponibles sur le réseau, quels services (nom et version de l'application) ils offrent, quels systèmes d'exploitation (et versions du système d'exploitation) ils utilisent, dans quels types de filtres de paquets / pare-feu se trouvent utilisation, et bien d'autres caractéristiques. Bien que Nmap soit couramment utilisé pour les contrôles de sécurité, de nombreux administrateurs système le trouvent utile pour des tâches courantes telles que la surveillance de la structure du réseau, la gestion des calendriers de démarrage des services et le suivi de la disponibilité de l'hôte ou du service.

La sortie de Nmap est une liste de cibles scannées avec des informations supplémentaires sur chacune d'elles en fonction des options données. Les informations clés sont « table des ports importants» ... Ce tableau contient le numéro de port, le protocole, le nom du service et l'état. L'état peut être ouvert, filtré, fermé ou non filtré. Ouvert signifie que l'application sur la machine cible est prête à se connecter/accepter des paquets sur ce port. Filtré signifie qu'un pare-feu, un filtre réseau ou une autre obstruction sur le réseau bloque le port, et Nmap ne peut pas déterminer si ce port est ouvert ou fermé. Les ports fermés ne sont associés à aucune application, mais peuvent être ouverts à tout moment. Les ports sont considérés comme non filtrés lorsqu'ils répondent aux requêtes Nmap, mais Nmap ne peut pas dire s'ils sont ouverts ou fermés. Nmap affichera ouvert | filtré et fermé | filtré lorsqu'il ne peut pas déterminer lequel des deux états décrit un port. Ce tableau peut également fournir des détails sur la version du logiciel, si demandé. Lorsqu'une analyse de protocole IP (-sO) est effectuée, Nmap fournit des informations sur les protocoles pris en charge, et non sur les ports ouverts.

En plus du tableau des ports importants, Nmap peut fournir des informations supplémentaires sur les cibles : noms DNS résolus, suppositions sur le système d'exploitation utilisé, types de périphériques et adresses MAC.

Un scan typique utilisant Nmap est montré dans l'exemple 1. Les seuls arguments utilisés dans cet exemple sont -A, pour la détection, le script et le traçage de la version du système d'exploitation ; -T4 pour une exécution plus rapide ; puis deux hôtes cibles.

Exemple 1 : Exemple d'analyse Nmap typique

# nmap -A -T4 scanme..org) Ports intéressants sur scanme.site (64.13.134.52) : (Les 1663 ports scannés mais non affichés ci-dessous sont dans l'état : filtered) PORT STATE SERVICE VERSION 22 / tcp open ssh OpenSSH 3.9p1 (protocole 1.99) 53 / tcp domaine ouvert 70 / tcp fermé gopher 80 / tcp ouvert http Apache httpd 2.0.52 ((Fedora)) 113 / tcp fermé auth Type de périphérique : usage général Exécution : Linux 2.4.X | 2.5.X | Détails du système d'exploitation 2.6.X : Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 Ports intéressants sur le terrain de jeu..168.0.40) : (Les 1659 ports analysés mais non affichés ci-dessous sont à l'état : fermé) PORT VERSION DE SERVICE D'ÉTAT 135/tcp ouvert msrpc Microsoft Windows RPC 139/tcp ouvert netbios-ssn 389/tcp ouvert ldap ? 445 / tcp ouvert microsoft-ds Microsoft Windows XP microsoft-ds 1002 / tcp ouvert windows-icfw ? 1025 / tcp ouvert msrpc Microsoft Windows RPC 1720 / tcp ouvert H.323 / Q.931 CompTek AquaGateKeeper 5800 / tcp ouvert vnc-http RealVNC 4.0 (Résolution 400x250 ; port VNC : 5900) 5900 / tcp ouvert vnc VNC (protocole 3.8) MAC Adresse : 00 : A0 : CC : 63 : 85 : 4B (Lite-on Communications) Type d'appareil : à usage général Exécution : Microsoft Windows NT / 2K / XP Détails du système d'exploitation : Microsoft Windows XP Pro RC1 + jusqu'à la version finale Informations sur le service : Systèmes d'exploitation : Windows , Windows XP Nmap terminé : 2 adresses IP (2 hôtes en place) scannées en 88,392 secondes


La dernière version de Nmap peut être téléchargée à partir de

Vous avez aimé l'article ? A partager avec des amis :