Nmap

De Linuxmemo.

(Différences entre les versions)
(TECHNIQUES DE SCAN:)
(EXEMPLES:)
Ligne 212 : Ligne 212 :
== EXEMPLES: ==
== EXEMPLES: ==
-
nmap -v -A scanme.nmap.org
+
nmap -v -A scanme.nmap.org
-
nmap -v -sP 192.168.0.0/16 10.0.0.0/8
+
nmap -v -sP 192.168.0.0/16 10.0.0.0/8
-
nmap -v -iR 10000 -P0 -p 80
+
nmap -v -iR 10000 -P0 -p 80

Version du 3 avril 2013 à 20:06


nmap -P0 -PN -n -sS -p 1-1024 -O -A -oG sortie.txt Cibles


Source: http://nmap.org/man/fr/man-briefoptions.html - http://nmap.org/man/fr/ - http://nmap.org/book/toc.html

Ce résumé des options est affiché quand Nmap est exécuté sans aucun argument; la plus récente version est toujours disponible sur http://www.insecure.org/nmap/data/nmap.usage.txt . Il sert d'aide-mémoire des options les plus fréquemment utilisées, mais ne remplace pas la documentation bien plus détaillée de la suite de ce manuel. Les options obscures n'y sont pas incluses.

Nmap 4.50 (insecure.org) Utilisation: nmap [Type(s) de scan] [Options] {spécifications des cibles}

Sommaire

SPÉCIFICATIONS DES CIBLES:

Les cibles peuvent être spécifiées par des noms d'hôtes, des adresses IP, des adresses de réseaux, etc.

Exemple: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0-255.0-255.1-254

-iL <inputfilename>: Lit la liste des hôtes/réseaux cibles à partir du fichier
-iR <num hosts>: Choisit les cibles au hasard
--exclude <host1[,host2][,host3],...>: Exclut des hôtes/réseaux du scan 
--excludefile <exclude_file>: Exclut des hôtes/réseaux des cibles à partir du fichier

DÉCOUVERTE DES HÔTES:

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

TECHNIQUES DE SCAN:

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


  • TCP Connect scanning for localhost and network 192.168.0.0/24
# nmap -v -sT localhost
# nmap -v -sT 192.168.0.0/24
  • nmap TCP SYN (half-open) scanning
# nmap -v -sS localhost
# nmap -v -sS 192.168.0.0/24
  • nmap TCP FIN scanning
# nmap -v -sF localhost
# nmap -v -sF 192.168.0.0/24
  • nmap TCP Xmas tree scanning

Useful to see if firewall protecting against this kind of attack or not:

# nmap -v -sX localhost
# nmap -v -sX 192.168.0.0/24
  • nmap TCP Null scanning

Useful to see if firewall protecting against this kind attack or not:

# nmap -v -sN localhost
# nmap -v -sN 192.168.0.0/24
  • nmap TCP Windows scanning
# nmap -v -sW localhost
# nmap -v -sW 192.168.0.0/24
  • nmap TCP RPC scanning

Useful to find out RPC (such as portmap) services

# nmap -v -sR localhost
# nmap -v -sR 192.168.0.0/24
  • nmap UDP scanning

Useful to find out UDP ports

# nmap -v -O localhost
# nmap -v -O 192.168.0.0/24
  • nmap remote software version scanning

You can also find out what software version opening the port.

# nmap -v -sV localhost
# nmap -v -sV 192.168.0.0/24

SPÉCIFICATIONS DES PORTS ET ORDRE DE SCAN:

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

DÉTECTION DE SERVICE/VERSION:

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

SCRIPT SCAN:

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

DÉTECTION DE SYSTÈME D'EXPLOITATION:

-O: Active la détection d'OS
--osscan-limit: Limite la détection aux cibles prométeuses --osscan-guess: Détecte l'OS de façon plus agressive
--osscan-guess: Devine l'OS de facon plus agressive

TEMPORISATION ET PERFORMANCE:

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

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

ÉVASION PARE-FEU/IDS ET USURPATION D'IDENTITÉ

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

SORTIE:

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

DIVERS:

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

NSE (The Nmap Scripting Engine)

Scripts are written in the embedded Lua programming language, version 5.2.

NSE is activated with the -sC option (or --script if you wish to specify a custom set of scripts) and results are integrated into Nmap normal and XML output.

-sC to enable the most common scripts. (equivalent to --script=default)
--script option to choose your own scripts to execute by providing categories, script file names, or the name of directories full of scripts you wish to execute.
--script <filename>|<category>|<directory>|<expression>[,...]

--script-args and --script-args-file You can customize some scripts by providing arguments.
--script-help shows a description of what each selected script does.
--script-trace and --script-updatedb, are generally only used for script debugging and development.
Script scanning is also included as part of the -A (aggressive scan) option.
  • Categories are auth, broadcast, brute, default. discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, and vuln. Category names are not case sensitive.

Téléchargement des script et des nselib (modules lua): https://svn.nmap.org/nmap/nselib/

Les six états de port reconnus par Nmap

  • ouvert (open)

Une application accepte des connexions TCP ou des paquets UDP sur ce port. Trouver de tels ports est souvent le but principal du scan de ports. Les gens soucieux de la sécurité savent pertinemment que chaque port ouvert est un boulevard pour une attaque. Les attaquants et les pen-testers veulent exploiter ces ports ouverts, tandis que les administrateurs essaient de les fermer ou de les protéger avec des pare-feux sans gêner leurs utilisateurs légitimes. Les ports ouverts sont également intéressants pour des scans autres que ceux orientés vers la sécurité car ils indiquent les services disponibles sur le réseau.

  • fermé (closed)

Un port fermé est accessible (il reçoit et répond aux paquets émis par Nmap), mais il n'y a pas d'application en écoute. Ceci peut s'avérer utile pour montrer qu'un hôte est actif (découverte d'hôtes ou scan ping), ou pour la détection de l'OS. Comme un port fermé est accessible, il peut être intéressant de le scanner de nouveau plus tard au cas où il s'ouvrirait. Les administrateurs pourraient désirer bloquer de tels ports avec un pare-feu, mais ils apparaîtraient alors dans l'état filtré décrit dans la section suivante.

  • filtré (filtered)

Nmap ne peut pas toujours déterminer si un port est ouvert car les dispositifs de filtrage des paquets empêchent les paquets de tests (probes) d'atteindre leur port cible. Le dispositif de filtrage peut être un pare-feu dédié, des règles de routeurs filtrants ou un pare-feu logiciel. Ces ports ennuient les attaquants car ils ne fournissent que très peu d'informations. Quelques fois ils répondent avec un message d'erreur ICMP de type 3 code 13 (« destination unreachable: communication administratively prohibited »), mais les dispositifs de filtrage qui rejettent les paquets sans rien répondre sont bien plus courants. Ceci oblige Nmap à essayer plusieurs fois au cas où ces paquets de tests seraient rejetés à cause d'une surcharge du réseau et pas du filtrage. Ceci ralenti terriblement les choses.

  • non-filtré (unfiltered)

L'état non-filtré signifie qu'un port est accessible, mais que Nmap est incapable de déterminer s'il est ouvert ou fermé. Seul le scan ACK, qui est utilisé pour déterminer les règles des pare-feux, catégorise les ports dans cet état. Scanner des ports non-filtrés avec un autre type de scan, comme le scan Windows, SYN ou FIN peut aider à savoir si un port est ouvert ou pas.

  • ouvert|filtré (open|filtered)

Nmap met dans cet état les ports dont il est incapable de déterminer l'état entre ouvert et filtré. Ceci arrive pour les types de scans où les ports ouverts ne renvoient pas de réponse. L'absence de réponse peut aussi signifier qu'un dispositif de filtrage des paquets a rejeté le test ou les réponses attendues. Ainsi, Nmap ne peut s'assurer ni que le port est ouvert, ni qu'il est filtré. Les scans UDP, protocole IP, FIN, Null et Xmas catégorisent les ports ainsi.

  • fermé|filtré (closed|filtered)

Cet état est utilisé quand Nmap est incapable de déterminer si un port est fermé ou filtré. Cet état est seulement utilisé par le scan Idle basé sur les identifiants de paquets IP.

L'option cachée de nmap

nmap possède l'option -O qui permet de déterminer le type de système d'exploitation utilisé par un système.

Malheureusement quand nmap n'a pas été capable d'obtenir le type de système d'exploitation car l'ensemble de réponses reçu ne correspond pas à une entrée présente dans sa base (nmap-os-fingerprints).

Il est alors possible d'utiliser l'option --osscan_guess pour obtenir les entrées ayant le plus de similitudes avec les paquets reçus :

# nmap --osscan_guess -sS -O -p 19-26 -n -P0 192.168.148.31

EXEMPLES:

nmap -v -A scanme.nmap.org
nmap -v -sP 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -P0 -p 80
Outils personnels