Petit article pour présenter plusieurs techniques de scanners de ports. Nmap est certainement le scanner de ports le plus connu. Il permet de détecter sur une machine les ports réseau ouverts ou filtrer, et bien d’autres choses, comme les services tournants sur celle-ci ou bien le système d’exploitation utilisé…

Scanner de ports : Quelques techniques avec Nmap
Scanner de ports : Quelques techniques avec Nmap

Petit tour d’horizon des techniques pour Nmap, bien sûr il y a d’autres combinaisons possibles :

– Utilisation classique
– Scan avec connexion TCP
– Scan infiltration SYN
– Scan avec ACK
– Scan avec FIN
– Scan Null
– Scan de l’arbre de noël
– Scan pour découvrir le système d’exploitation
– Voir toutes les options possibles

Avant de commencer, vous vous demandez peut-être à quoi sert le logiciel Nmap ? Même si dans l’introduction de cet article j’ai commencé à évoquer les possibilités, voyons cela de plus près. Il s’agit donc d’un scanner de ports. C’est un logiciel libre. Il est utiliser dans le domaine de la sécurité informatique.

Il permet de vérifier la sécurité de ses machines afin d’éviter des attaques informatiques. En utilisant le scanner de port sur ses machines, on va détecter celles qui ont des « portes ouvertes » pour un pirate, celles ayant des potentiels failles ou encore celles potentiellement infectées. C’est un outil indispensable pour tout administrateur de réseau informatique.

Il a deux gros avantages, le premier c’est qu’il est gratuit, le second c’est qu’il fonctionne sur les principaux systèmes d’exploitation, Linux, Mac ou Windows. Voyons maintenant plusieurs techniques et manipulation ques l’on peut effectuer avec le scanner de port Nmap.

Utilisation classique

La première utilisation est la classique, nmap 192.168.1.55, sans option. Le scan appliqué ici envoie des requêtes TCP à la cible et attend de voir s’il y a des retours ou non. Il est possible que le pare-feu altère les paquets cela indiquant des informations incorrectes.

Nmap scanner de port

Scan avec connexion TCP

L’option -sT établit un scan avec TCP. Cette technique peut-être détectée et enregistrée par les IDS, mais si celle-ci fonctionne vous êtes sûr de savoir si une application est vraiment présente ou pas.

Scan de ports TCP avec Nmap

Scan infiltration SYN

L’option -sS est celle utilisée par défaut par Nmap. Contrairement au scan TCP celle-ci créer une demi-connexion, puisqu’une connexion TCP se passe en trois temps avec une confirmation d’établissement de la connexion.

Cette technique envoie un paquet RST qui clôt celle-ci au lieu de la confirmer. Cela a pour effet de réduire le trafic sur la cible et d’augmenter la vitesse du scan.

Option par défaut du scanner de ports

Scan avec ACK

L’option -sN provoque une attaque dite « null ». Une attaque « null » se produit lorsqu’un paquet TCP est envoyé avec tous ses bits de contrôles à zéro. Le paquet est envoyé vers la cible dans l’espoir que le système cible se plaigne du paquet. Les pare-feux classiques ne filtrant que les paquets SYN, le fait que notre paquet soit à zéro pourrait permettre de le faire passer inaperçue.

Attaque Null avec Nmap

Scan avec FIN

L’option -sX est un scan avec tous les drapeaux d’activés dans un paquet TCP. Un paquet avec tous les bits d’activés n’a pas de signification dans le protocole TCP.

Donc le pare-feu, ne connaissant pas ce type de paquet, laissera passer, puisque les pare-feux classiques filtrent uniquement les paquets SYN et ne regardent pas toujours ce genre d’anomalie.

Drapeaux activés dans Nmap

Scan Null

L’option -sA envoie des paquets ACK sur la cible dans l’espoir que le pare-feu supposera qu’une communication existe déjà entre l’attaquant et la cible. Dans le cas ci-dessous le pare-feu renvoie des paquets RST, car il n’y avait pas de paquet ACK attendu, car aucune connexion n’est en cours. Mais si une communication avait été en cours, des paquets ICMP seraient revenus et nous aurions eu un résultat similaire à l’option -sF présente dans cet article.

Attaque sA Nmap

Scan de l’arbre de noël

L’option -sF fonctionne avec les FIN bits. Ceux-ci sont présents à la fin des sessions TCP. Un FIN est envoyé à la cible dans l’espoir que le pare-feu supposera qu’une connexion existe déjà entre l’attaquant et la cible. Les pare-feux classiques filtrent uniquement les paquets SYN, de sorte que le FIN indépendant pourrait passer inaperçu.

Attaque FIN Nmap

Scan pour découvrir le système d’exploitation

L’option -O scan la cible et identifie le système d’exploitation tournant sur celui-ci.

Trouver le système d'exploitation avec Nmap

Voir toutes les options possibles

Pour finir, voici toutes les options possibles pour Nmap :

Usage: nmap [Scan Type(s)] [Options] {target specification}
 TARGET SPECIFICATION:
 Can pass hostnames, IP addresses, networks, etc.
 Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
 -iL <inputfilename>: Input from list of hosts/networks
 -iR <num hosts>: Choose random targets
 --exclude <host1[,host2][,host3],...>: Exclude hosts/networks
 --excludefile <exclude_file>: Exclude list from file
 HOST DISCOVERY:
 -sL: List Scan - simply list targets to scan
 -sn: Ping Scan - disable port scan
 -Pn: Treat all hosts as online -- skip host discovery
 -PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports
 -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
 -PO[protocol list]: IP Protocol Ping
 -n/-R: Never do DNS resolution/Always resolve [default: sometimes]
 --dns-servers <serv1[,serv2],...>: Specify custom DNS servers
 --system-dns: Use OS's DNS resolver
 --traceroute: Trace hop path to each host
 SCAN TECHNIQUES:
 -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
 -sU: UDP Scan
 -sN/sF/sX: TCP Null, FIN, and Xmas scans
 --scanflags <flags>: Customize TCP scan flags
 -sI <zombie host[:probeport]>: Idle scan
 -sY/sZ: SCTP INIT/COOKIE-ECHO scans
 -sO: IP protocol scan
 -b <FTP relay host>: FTP bounce scan
 PORT SPECIFICATION AND SCAN ORDER:
 -p <port ranges>: Only scan specified ports
 Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
 -F: Fast mode - Scan fewer ports than the default scan
 -r: Scan ports consecutively - don't randomize
 --top-ports <number>: Scan <number> most common ports
 --port-ratio <ratio>: Scan ports more common than <ratio>
 SERVICE/VERSION DETECTION:
 -sV: Probe open ports to determine service/version info
 --version-intensity <level>: Set from 0 (light) to 9 (try all probes)
 --version-light: Limit to most likely probes (intensity 2)
 --version-all: Try every single probe (intensity 9)
 --version-trace: Show detailed version scan activity (for debugging)
 SCRIPT SCAN:
 -sC: equivalent to --script=default
 --script=<Lua scripts>: <Lua scripts> is a comma separated list of
 directories, script-files or script-categories
 --script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
 --script-trace: Show all data sent and received
 --script-updatedb: Update the script database.
 OS DETECTION:
 -O: Enable OS detection
 --osscan-limit: Limit OS detection to promising targets
 --osscan-guess: Guess OS more aggressively
 TIMING AND PERFORMANCE:
 Options which take <time> are in seconds, or append 'ms' (milliseconds),
 's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
 -T<0-5>: Set timing template (higher is faster)
 --min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
 --min-parallelism/max-parallelism <numprobes>: Probe parallelization
 --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies
 probe round trip time.
 --max-retries <tries>: Caps number of port scan probe retransmissions.
 --host-timeout <time>: Give up on target after this long
 --scan-delay/--max-scan-delay <time>: Adjust delay between probes
 --min-rate <number>: Send packets no slower than <number> per second
 --max-rate <number>: Send packets no faster than <number> per second
 FIREWALL/IDS EVASION AND SPOOFING:
 -f; --mtu <val>: fragment packets (optionally w/given MTU)
 -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
 -S <IP_Address>: Spoof source address
 -e <iface>: Use specified interface
 -g/--source-port <portnum>: Use given port number
 --data-length <num>: Append random data to sent packets
 --ip-options <options>: Send packets with specified ip options
 --ttl <val>: Set IP time-to-live field
 --spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address
 --badsum: Send packets with a bogus TCP/UDP/SCTP checksum
 OUTPUT:
 -oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,
 and Grepable format, respectively, to the given filename.
 -oA <basename>: Output in the three major formats at once
 -v: Increase verbosity level (use -vv or more for greater effect)
 -d: Increase debugging level (use -dd or more for greater effect)
 --reason: Display the reason a port is in a particular state
 --open: Only show open (or possibly open) ports
 --packet-trace: Show all packets sent and received
 --iflist: Print host interfaces and routes (for debugging)
 --log-errors: Log errors/warnings to the normal-format output file
 --append-output: Append to rather than clobber specified output files
 --resume <filename>: Resume an aborted scan
 --stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
 --webxml: Reference stylesheet from Nmap.Org for more portable XML
 --no-stylesheet: Prevent associating of XSL stylesheet w/XML output
 MISC:
 -6: Enable IPv6 scanning
 -A: Enable OS detection, version detection, script scanning, and traceroute
 --datadir <dirname>: Specify custom Nmap data file location
 --send-eth/--send-ip: Send using raw ethernet frames or IP packets
 --privileged: Assume that the user is fully privileged
 --unprivileged: Assume the user lacks raw socket privileges
 -V: Print version number
 -h: Print this help summary page.
 EXAMPLES:
 nmap -v -A scanme.nmap.org
 nmap -v -sn 192.168.0.0/16 10.0.0.0/8
 nmap -v -iR 10000 -Pn -p 80
 SEE THE MAN PAGE (http://nmap.org/book/man.html) FOR MORE OPTIONS AND EXAMPLES