Nmap Summary (ESP)

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks:

``` nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24 ``` ## Paramètres

Adresses IP à scanner

  • <ip>,<net/mask>: Indique les adresses IP directement

  • -iL <ips_file>: liste_IPs

  • -iR <number>: Nombre d'adresses IP aléatoires, vous pouvez exclure des adresses IP possibles avec --exclude <Ips> ou --excludefile <file>.

Découverte d'équipements

Par défaut, Nmap lance une phase de découverte composée de: -PA80 -PS443 -PE -PP

  • -sL: Non invasif, liste les cibles en effectuant des requêtes DNS pour résoudre les noms. Utile pour savoir, par exemple, si www.prueba.es/24 toutes les adresses IP sont nos cibles.

  • -Pn: Pas de ping. Utile si vous savez qu'elles sont toutes actives (sinon, vous pourriez perdre beaucoup de temps, mais cette option produit également des faux négatifs en indiquant qu'elles ne sont pas actives), cela empêche la phase de découverte.

  • -sn : Pas de scan de port. Après avoir terminé la phase de reconnaissance, il ne scanne pas les ports. C'est relativement discret et permet un petit scan réseau. Avec des privilèges, il envoie un ACK (-PA) à 80, un SYN(-PS) à 443 et une demande d'écho et une demande de timestamp, sans privilèges, il termine toujours les connexions. Si la cible est le réseau, il utilise uniquement ARP(-PR). S'il est utilisé avec une autre option, seuls les paquets de l'autre option sont abandonnés.

  • -PR: Ping ARP. Utilisé par défaut lors de l'analyse des ordinateurs de notre réseau, c'est plus rapide que d'utiliser des pings. Si vous ne voulez pas utiliser de paquets ARP, utilisez --send-ip.

  • -PS <ports>: Envoie des paquets SYN auxquels s'il répond SYN/ACK, il est ouvert (s'il répond avec RST pour ne pas terminer la connexion), s'il répond RST, il est fermé et s'il ne répond pas, il est injoignable. En cas de manque de privilèges, une connexion totale est automatiquement utilisée. Si aucun port n'est donné, il l'envoie à 80.

  • -PA <ports>: Comme le précédent mais avec ACK, la combinaison des deux donne de meilleurs résultats.

  • -PU <ports>: L'objectif est inverse, ils sont envoyés aux ports qui sont censés être fermés. Certains pare-feu ne vérifient que les connexions TCP. S'il est fermé, il répond avec un port injoignable, s'il répond avec un autre icmp ou s'il ne répond pas, il est laissé comme destination injoignable.

  • -PE, -PP, -PM : PINGS ICMP: réponse d'écho, timestamp et masque d'adresse. Ils sont lancés pour savoir si la cible est active.

  • -PY<ports>: Envoie des sondes SCTP INIT à 80 par défaut, INIT-ACK(ouvert) ou ABORT(fermé) ou rien ou ICMP injoignable(inactif) peuvent être répondu.

  • -PO <protocols>: Un protocole est indiqué dans les en-têtes, par défaut 1(ICMP), 2(IGMP) et 4(Encap IP). Pour les protocoles ICMP, IGMP, TCP (6) et UDP (17), les en-têtes de protocole sont envoyés, pour le reste seul l'en-tête IP est envoyé. Le but de ceci est que en raison de la malformation des en-têtes, le protocole injoignable ou les réponses du même protocole sont répondues pour savoir s'il est actif.

  • -n: Pas de DNS

  • -R: Toujours DNS

Techniques de scan de ports

  • -sS: Ne complète pas la connexion donc ne laisse aucune trace, très bon s'il peut être utilisé. (privilèges) C'est celui utilisé par défaut.

  • -sT: Complète la connexion, donc laisse une trace, mais peut être utilisé en toute sécurité. Par défaut sans privilèges.

  • -sU: Plus lent, pour UDP. Principalement: DNS(53), SNMP(161,162), DHCP(67 et 68), (-sU53,161,162,67,68): ouvert(réponse), fermé(port injoignable), filtré (autre ICMP), ouvert/filtré (rien). En cas d'ouvert/filtré, -sV envoie de nombreuses requêtes pour détecter l'une des versions prises en charge par nmap et peut détecter le véritable état. Cela augmente considérablement le temps.

  • -sY: Le protocole SCTP échoue à établir la connexion, donc il n'y a pas de journaux, fonctionne comme -PY

  • -sN,-sX,-sF: Null, Fin, Xmas, ils peuvent pénétrer certains pare-feu et extraire des informations. Ils sont basés sur le fait que les machines conformes aux normes doivent répondre avec RST à toutes les demandes qui n'ont pas de drapeaux SYN, RST ou ACK levés: ouvert/filtré(rien), fermé(RST), filtré (ICMP injoignable). Peu fiable sur Windows, CIsco, BSDI et OS/400. Sur Unix oui.

  • -sM: Scan Maimon: Envoie des drapeaux FIN et ACK, utilisé pour BSD, actuellement renverra tout comme fermé.

  • -sA, sW: ACK et Window, est utilisé pour détecter les pare-feu, pour savoir si les ports sont filtrés ou non. Le -sW distingue entre ouvert/fermé car les ouverts répondent avec une valeur de fenêtre différente: ouvert (RST avec une fenêtre différente de 0), fermé (RST fenêtre = 0), filtré (ICMP injoignable ou rien). Tous les ordinateurs ne fonctionnent pas de cette manière, donc s'ils sont tous fermés, cela ne fonctionne pas, s'il y en a quelques-uns d'ouverts, cela fonctionne bien, et s'il y en a beaucoup d'ouverts et peu de fermés, cela fonctionne à l'envers.

  • -sI: Scan en veille. Pour les cas où il y a un pare-feu actif mais que nous savons qu'il ne filtre pas vers une certaine adresse IP (ou lorsque nous voulons simplement rester anonymes), nous pouvons utiliser le scanner zombie (il fonctionne pour tous les ports), pour rechercher des zombies potentiels, nous pouvons utiliser le script ipidseq ou l'exploit auxiliary/scanner/ip/ipidseq. Ce scanner est basé sur le numéro IPID des paquets IP.

  • --badsum: Il envoie la somme incorrecte, les ordinateurs rejetteraient les paquets, mais les pare-feu pourraient répondre quelque chose, il est utilisé pour détecter les pare-feu.

  • -sZ: Scanner SCTP "bizarre", lors de l'envoi de sondes avec des fragments d'écho de cookie, ils devraient être abandonnés s'ils sont ouverts ou répondus avec ABORT s'ils sont fermés. Il peut passer à travers les pare-feu que l'init ne peut pas passer, le mauvais côté est qu'il ne distingue pas entre filtré et ouvert.

  • -sO: Scan de protocole Ip. Envoie des en-têtes incorrects et vides dans lesquels parfois même le protocole ne peut pas être distingué. Si le protocole ICMP injoignable arrive, il est fermé, si le port injoignable arrive, il est ouvert, si une autre erreur arrive, filtré, s'il n'arrive rien, ouvert|filtré.

  • -b <server>: FTPhost--> Il est utilisé pour scanner un hôte à partir d'un autre, cela se fait en se connectant au ftp d'une autre machine et en lui demandant d'envoyer des fichiers aux ports que vous souhaitez scanner à partir d'une autre machine, selon les réponses, nous saurons s'ils sont ouverts ou non. [<user>:<password>@]<server>[:<port>] Presque tous les serveurs ftp ne vous permettent plus de le faire et donc c'est de peu d'utilité pratique.

Analyse centrée

-p: Utilisé pour spécifier les ports à scanner. Pour sélectionner les 65335: -p- ou -p all. Nmap a une classification interne en fonction de sa popularité. Par défaut, il utilise les 1000 principaux. Avec -F (scan rapide), il analyse les 100 principaux. Avec --top-ports <numero> Il analyse ce nombre de principaux (de 1 à 65335). Il vérifie les ports dans un ordre aléatoire, pour éviter cela -r. Vous pouvez également sélectionner des ports: 20-30,80,443,1024- Cela signifie qu'il regarde au-delà de 1024. Vous pouvez également regrouper les ports par protocoles: U:53,T:21-25,80,139,S:9. Vous pouvez également choisir une plage parmi les ports populaires de nmap: -p [-1024] analyse jusqu'au 1024 inclus dans nmap-services. --port-ratio <ratio> Analyse les ports les plus courants selon un ratio qui doit être compris entre 0 et 1

-sV Analyse de version, l'intensité peut être réglée de 0 à 9, par défaut 7.

--version-intensity <numero> Réglez l'intensité, de sorte que plus bas il ne lancera que les sondes les plus probables, mais pas toutes. Cela peut considérablement raccourcir le temps de scan UDP

-O Détection d'OS

--osscan-limit Pour bien scanner un hôte, il faut au moins un port ouvert et un autre fermé, si cette condition n'est pas remplie et que vous avez activé ceci, il n'essaie pas de prédire l'OS (économise du temps)

--osscan-guess Lorsque la détection d'OS n'est pas parfaite, cela le force à faire plus d'efforts

Scripts

--script <filename>|<category>|<directory>|<expression>[,...]

Pour utiliser les scripts par défaut, il suffit de faire -sC ou --script=default

Les types disponibles sont: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, et vuln

  • Auth: exécute tous ses scripts disponibles pour l'authentification

  • Default: exécute les scripts de base par défaut de l'outil

  • Discovery: récupère des informations sur la cible ou la victime

  • External: script pour utiliser des ressources externes

  • Intrusive: utilise des scripts considérés comme intrusifs pour la victime ou la cible

  • Malware: vérifie s'il y a des connexions ouvertes par des codes malveillants ou des backdoors

  • Safe: exécute des scripts qui ne sont pas intrusifs

  • Vuln: découvre les vulnérabilités les plus connues

  • All: exécute tous les scripts avec l'extension NSE disponibles

Pour rechercher des scripts:

nmap --script-help="http-*" -> Ceux commençant par http-

nmap --script-help="not intrusive" -> Tous sauf ceux-là

nmap --script-help="default or safe" -> Ceux qui sont dans l'un ou l'autre ou dans les deux

nmap --script-help="default and safe" --> Ceux qui sont dans les deux

nmap --script-help="(default or safe or intrusive) and not http-*"

--script-args <n1>=<v1>,<n2>={<n3>=<v3>},<n4>={<v4>,<v5>}

--script-args-file <filename>

--script-help <filename>|<category>|<directory>|<expression>|all[,...]

--script-trace ---> Fournit des informations sur le fonctionnement du script

--script-updatedb

Pour utiliser un script, il suffit de taper: namp --script Nom_du_script cible --> En spécifiant le script, le script et le scanner seront exécutés, vous pouvez donc également ajouter “safe=1” pour exécuter uniquement les scripts sûrs.

Contrôle du temps

Nmap peut modifier le temps en secondes, minutes, ms: --host-timeout arguments 900000ms, 900, 900s, et 15m font tous la même chose.

Nmap divise le nombre total d'hôtes à scanner en groupes et analyse ces groupes par blocs de sorte que tant que tous les hôtes n'ont pas été analysés, il ne passe pas au bloc suivant (et l'utilisateur ne reçoit aucune mise à jour tant que le bloc n'a pas été analysé) de cette manière, il est plus optimal pour nmap d'utiliser de grands groupes. Par défaut en classe C, il utilise 256.

Cela peut être modifié avec**--min-hostgroup** <numhosts>; --max-hostgroup <numhosts> (Ajuster les tailles de groupe de scan parallèle)

Vous pouvez contrôler le nombre de scanners en parallèle mais il est préférable de ne pas le faire (nmap intègre déjà un contrôle automatique en fonction de l'état du réseau): --min-parallelism <numprobes>; --max-parallelism <numprobes>

Vous pouvez contrôler le délai d'attente rtt, mais ce n'est généralement pas nécessaire: --min-rtt-timeout <time>, --max-rtt-timeout <time>, --initial-rtt-timeout <time>

Vous pouvez modifier le nombre de tentatives:--max-retries <numtries>

Vous pouvez modifier le temps de scan d'un hôte: --host-timeout <time>

Vous pouvez modifier le délai entre chaque scan pour ralentir la vitesse: --scan-delay <time>; --max-scan-delay <time>

Vous pouvez modifier le nombre de paquets par seconde: --min-rate <number>; --max-rate <number>

De nombreux ports mettent du temps à répondre car ils sont filtrés ou fermés, si seuls les ouverts vous intéressent, vous pouvez accélérer le processus avec: --defeat-rst-ratelimit

Pour définir l'agressivité de nmap: -T paranoid|sneaky|polite|normal|aggressive|insane

-T (0-1)

-T0 --> Seul un port est scanné à la fois et il attend 5min avant le suivant

-T1 et T2 --> Très similaires mais attendent respectivement 15 et 0,4sec entre chaque test

-T3 --> Fonctionnement par défaut, inclut en parallèle

-T4 --> --max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6 --max-scan-delay 10ms

-T5 --> --max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --max-scan-delay 5ms

Firewall/IDS

Ils bloquent les ports et analysent les paquets.

-f Pour fragmenter les paquets, par défaut ils sont fragmentés en 8 octets après l'en-tête, pour spécifier cette taille, utilisez ..mtu (avec cela, ne pas utiliser -f), le décalage doit être un multiple de 8. Les scanners de version et les scripts ne prennent pas en charge la fragmentation

-D decoy1,decoy2,ME Nmap envoie des scanners mais avec d'autres adresses IP comme origine, de cette façon vous vous cachez. Si vous mettez ME dans la liste, nmap vous placera là, il est préférable de mettre 5 ou 6 avant vous pour vous masquer complètement. Des adresses IP aléatoires peuvent être générées avec RND:<numero> Pour générer <numero> d'adresses IP aléatoires. Ne fonctionne pas avec la détection de versions sans connexion TCP. Si vous êtes dans un réseau, il est préférable d

Dernière mise à jour