User Tools

Site Tools


coursieps:20060317

nmap

network mapper http://www.insecure.org/nmap/

But: recenser les services sur une machine.

Il y a 5 méthodes principales pour repérer les ports ouverts.

TCP connect

nmap 192.168.2.51

Pareil que

 nmap -sT 192.168.2.51
  • -s = scan
  • -T = TCP

Il va essayer d'établir une connexion TCP complète (syn, syn-ack, ack) sur chaque port essayé.

Si la machine répond avec SYN-ACK, le port est ouvert. Sinon, elle répond SYN-RST (reset).

SYN stealth

Il faut être root.

 nmap -sS 192.168.2.51

Envoie SYN, reçoit SYN-ACK (ou SYN-RST si le port est fermé), renvoie RST (reset = abort) → la connexion n'est pas logguée. C'est une connexion semi-ouverte (half-open connection). Le principe est le même que dans le cas de figure précédent.

TCP FIN

Le flag FIN annonce la fin normale (propre) de la connexion TCP. Si une machine envoie un paquet dans lequel seul le flag FIN est positionné à 1 et si la machine destination est compatible à la RFC 793 (définition de TCP/IP = pas les machine avec Windows), elle doit renvoyer un paquet RST si le port est ouvert.

nmap -sF 192.168.2.51

Pour s'en protéger:

iptables -A INPUT -p tcp --tcp-flags ALL FIN -j DROP

TCP NULL

Envoie un paquet TCP avec aucun flag mis à un. En principe, si le port est ouvert, la machine doit renvoyer un RST.

nmap -sN 192.168.2.51

Pour s'en protéger:

iptables-A INPUT -p tcp --tcp-flags ALL NONE -j DROP

TCP Xmas Tree

2 types:

  • tous les bits positionné à un (inverse de TCP NULL)
  • nmap met à un les bits: FIN (fin), PSH (push), URG (urgent) et les autres bits à zéro
nmap -sX 192.168.2.51

Pour se protéger de la première:

iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

De la seconde:

iptable -A INPUT -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP

Comment définir des règles sur les flags des paquets TCP?

iptables -A INPUT -p tcp --tcp-flags ALL SYN,ACK -j DROP

signifie si bits SYN et ACK = 1 et le reste = 0 → jette le paquet

ALL = ceux à aller regarder SYN,ACK = doivent être à un.

iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN SYN,ACK -j DROP

Si FIN=0, SYN=1 et ACK=1 → jette le paquet.

Exercice

Depuis machine A (IP 192.168.2.42), tester machine B (IP: 192.168.2.42). Puis A se protège avec une règle. Puis B réessaye

  • TCP connect:
    • machine A:
nmap 192.168.2.111
  • machine B (règle pour se protéger de cette attaque):
iptables -A INPUT -s 192.168.2.42 -m state --state NEW -j DROP
  • lorsqu'on est protégé, nmap signale que tous les ports sont fermés
  • SYN stealth: pareil que pour TCP connect
  • TCP FIN:
  • machine A:
nmap -sF 192.168.2.51
  • machine B (protection):
iptables -A INPUT -s 192.168.2.42 -p tcp --tcp-flags ALL FIN -j DROP
  • lorsqu'on est protégé, nmap signale que tous les ports sont ouverts ou filtrés
  • TCP NULL:
  • machine A:
nmap -sN 192.168.2.51
  • machine B (protection):
iptables -A INPUT -s 192.168.2.42 -p tcp --tcp-flags ALL NONE -j DROP
  • lorsqu'on est protégé, nmap signale que tous les ports sont ouverts ou filtrés
  • TCP Xmas Tree, type 1:
  • machine A:
nmap -sX 192.168.2.51
  • machine B (se protéger):
iptables -A INPUT -s 192.168.2.42 -p tcp --tcp-flags ALL ALL -j DROP
  • lorsqu'on est protégé, nmap signale que tous les ports sont ouverts ou filtrés
  • TCP Xmas Tree, type 2:
  • machine A:
nmap -sX 192.168.2.51
  • machine B (se protéger):
iptables -A INPUT -s 192.168.2.42 -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP
  • lorsqu'on est protégé, nmap signale que tous les ports sont ouverts ou filtrés

Lorsqu'on a mis les 5 règles ci-dessus en place, les scans TCP nmap sont inopérants.

Quel OS tourne sur telle machine?

nmap -v -O 192.168.2.51

Où se trouve l'information? dans /usr/share/nmap/nmap-os-fingerprints

Scanner un réseau

nmap -v -O 192.168.2.0/24

Spoofing

nmap -v -D 192.168.2.10 192.168.2.111

Le scan a l'air de venir de l'IP 192.168.2.10 en plus de l'IP de la machine (il faut bien qu'il y ait des paquets sources de la machine scannant, sinon, elle ne reçoit rien).

On peut en mettre plusieurs:

nmap -v -D 192.168.2.10,192.168.12.54,125.42.98.74 192.168.2.111

Output

nmap peut sortir un fichier text, texte facile pour la commande grep, XML, …

En texte:

nmap 192.168.2.0/24 -oN fichier_log_nmap.txt

En fichier prêt pour grep:

nmap 192.168.2.0/24 -oG fichier_log_grep_nmap.txt

Ca permet par exemple de trouver les port 80 (serveurs web) ouverts sur le réseau.

En fichier XML:

nmap 192.168.2.0/24 -oX fichier_log_xml_nmap.txt

Exercice

Que fait nmap pour localiser les machines? Réponse à chercher en lançant ethereal sur la machine scannée: un paquet ICMP (ping) suivi d'un paquet TCP avec un flag ACK. Il suffit donc de 2 règles pour apparaître invisible à nmap:

iptables -A INPUT -p tcp --tcp-flags ALL ACK -j DROP
iptables -A INPUT -p ICMP -j DROP
coursieps/20060317.txt · Last modified: 2013/01/30 17:50 (external edit)