mercredi 9 juin 2010

Port scanning avec Nmap

Nmap est un scanner de ports open source pour détecter les ports fermé | ouvert | filtré  mais aussi pour obtenir des informations sur les système d'exploitation d'une machine distante . Très utilisé par les administrateurs réseaux , cette outils donne des informations sur la sécurité de votre réseaux .
Dans cette article j'aborde très rapidement netcat , pour monter qu'il peut etre utilisé comme un scanner mais l'article reste entièrement consacré a Nmap .
Avant de débuter de scanner les ports d'une cible il est nécessaire et prudent de vérifier son existence, pour cela on va utiliser le protocol ICMP .
requete ping : cmd : ping adress_ip

Nmap Ping Scan : cmd : nmap -sP  adresse_ip


le champ TYPE du header du message ICMP :
8 = echo request : vers la machine cible
0= echo reply : réponse de la cible

si la requete n'aboutit pas cela ne vaut pas forcément dire que la cible n'existe pas mais peut etre qu'elle est configuré pour ne pas répondre a ce type de requete pour plus de sécurité .

Le nmap scan lui , est capable de détecter la présence d'une cible meme si le traffic ICMP est bloqué , en effet le ping nmap envoie deux datagramme , un ICMP echo request et un packet TCP ACK , ce dernier détecte la présence de notre cible.

Passive scans
si on se trouve sur le meme ségment que la victime ou dans le chemin du paquet , il est possible d'écouter le réseau pour détecter les machines connectés .l'avantage est que nous somme pas obliger d'envoyer des paquets , et ainsi cacher nos intentions .

on peut utiliser netdiscover sous linux : cmd : netdiscover
TCP scanning
les applications les plus intéressante lors d'un pentest utilise TCP pour communiquer a travers le réseau (web servers , ftp , base de donnés et bien plus ). il y a différents outils pour déterminer le status d'un port , ici j'utiliserai Nmap et Netcat . Ces outils analysent les TCP headers pour identifier les services qui tournent derrière un port précis . le plus intéressant dans le header sont les bits de control (106èmes bit) URG ,ACK ,PSH ,RST ,SYN et FIN. Ces bits de control sont utilisés pour assurés la fiabilité de la connexion entre deux systèmes .

un scan avec netcat des ports 20 a 25 : 

cmd : nc -z -vv -w adress_ip Range_port
Ex   : nc -z -vv -w 192.168.100 20-25

Dans ce scan on voit que plusieurs que plusieurs port sont ouvers , 25 (smtp) , 23 (telnet) , 21 (ftp) par exemple, mais ca ne vaut pas dire que ce sont les bon services , netcat n'affiches que des suggestions , il n'affiche aucune donnés pour confirmer quelle application tourne derrière , nmap peut faire ca ;).

un scan basic avec nmap : cmd : nmap adress_ip

Nmap nous affiche une liste de ports avec le "service" qui tourne derrière , attention comme meme car un administrateur réseau peu modifier ces informations et ainsi fausser le rapport de nmap , et c'est recommandé pour tromper l'ennemi ^^.
"nmap 192.168.1.100" n'utilise pas toute la puissance de nmap , il nous donne une vue rapide de notre cible mais pas ce qui est réellement notre cible. ce scan ne fait qu'envoyer une simple connexion tcp et attend la réponse mais ne complète pas le TCP three-way handshake . Il est possible que le parfeu filtre les paquets et nous fournit de fausse informations . Voyons des techniques plus avancés de nmap.

TCP connect scan (-sT) :
Le Tcp connect scan est le moyen le plus fiable pour déterminer l'activité d'un port , il réalise un complet Three-way hanhshake .



L'inconvénient de ce scan est qu'il génère du traffic et qui peut etre détecté par IDS (détecteur d'intrusion) et ainsi révéler notre présence . l'avantage du Tcp Connect est qu'on peut déterminer avec certitude ,si une application est présente ou pas.


TCP SYN stealth Scan (-sS) : Ex : nmap -sS 192.168.1.100
TCP SYN est le scan par défaut de nmap (nmap ou nmap -sS ) .contrairement au TCP connect , le SYN stealth réalisent un half-open connection comme vous pouvez le voir sur la figure suivante :


Après avoir récus un SYN\ACK de la part du serveur cible , le pirate termine la connexion avec un RST (TCP reset). L'avantage de cette attaque est bien sur de réduire le traffic en ne complétant pas le three-way handshake , et rester discret face au IDS mais le réel avantage est d'accélérer la vitesse du scan des cibles .

RPC Scan (-sR) :

Ce scan est utilisé pour identifier le service RPC (Remote Call RPC) sur notre machine cible . Le scan vérifie si le service est présent . Les RPC sont des programmes qu'on peut utilisé pour comme si il etait installé sur notre propre machine depuis la machine cible il est donc possible de les attaquer et nous donner les privilèges élevé dans le système cible d'ou l'importance de vérifier leurs existence lors d'un pentest ;) .

cmd : nmap  -sR address_ip


Nmap possède beaucoup d'options différentes pour énumérer un système cible , certaine d'entre elles sont utilisées pour éviter les par-feus en , voici un détails de ces paramètres :

  • ACK scan (-sA) : active le bit ACK , Ce scan va envoyer un accusé de réception au système cible, dans l'espoir que le pare-feu prendra une communication en croyant qu'elle existe déjà entre l'attaquant et le système cible .
  • Fin scan (-sF) : Ce scan porte sur la bit FIN, qui ne devrait être présente qu'a  la fin d'une session TCP FIN est envoyé vers le système cible, dans l'espoir que le pare-feu prendra en charge cette communication en croyant qu'elle existe déjà entre l'attaquant et le système cible. En général le pare-feu qui filtre seulement les paquets SYN (filtrage simple de paquets), possible qu'il laisse FIN passer et donc inapércu.
  • Null scan (-sN) : une attaque "Null" est quand un paquet est envoyer avec tous ces bits de control a zero. Le paquet est envoyé vers le système cible dans l'espoir que quelque chose se plaint à propos du paquet - de préférence le système cible.En général si le parfeu filtre seulement les paquets SYN (filtrage simple de paquets) ,  le paquet vide pourrait aller inaperçu.
  • Xmas Tree scan (-SX): Une attaque Xmas Tree scan est celui où tous les flags sont activés dans un paquet TCP. Comme un paquet avec tous les bits de contrôle activé ne veut rien dire dans le protocole TCP, le pare-feu peut laisser l'attaque passer, généralement si il ne filtre que les paquets SYN (filtrage simple de paquets) et ne peut pas donc être la recherche de ce type d'anomalie.
Ces quatre scans sont utilisées pour détecter les systèmes et les protocoles qui sont actives, mais le faire en manipulant le protocole TCP de manière à ne pas se conformer à la norme pratiques de communication.

Null Scan Attack (-sN) :
Le Null scan renvoi le meme  a peu près le meme résultat que le TCP SYN scan , a une différence près , est que nmap ne sais pas si c'est le port est réellement ouvert ou filtrer .
D'après le RFC 793, si un port est fermé  un RST (tcp reset) doit etre renvoyer par le système et si le port est filtré un erreur devra etre renvoyer, comme par exemple une impossibilité de connexion (ICMP unreachable error) . Dans notre cas aucune erreur ,ni RST n'a été envoyer pas le système cible ,le paquet doit sans doute etre rejeter par le système cible ou par un par-feu , si le système la rejeté ,cela vaut dire qu'une application  tourne derrière le port,  la recu et la rejeter , il faut donc faire des scans plus précis  , sans doute avec d'autre tools que nmap ;).

ACK scan (-sA)
La figure montre le traffic capturé lors d'un ACK scan sur la cible avec nmap .on peut voir que nmap (192.168.1.4) envoie une séries de paquets TCP ACK vers le système cible (192.168.1.100). la cible répond avec une requete  RST ,parce Le ACK  n'etait pas attendu et ne fat parti d'aucune communication prétabli.
si nmap recoit un RST , il classe le port comme unfiltered  (deuxième figure) 8 ports dans ce cas , sinon si il recoit un ICMP reply ou rien , il classe le port comme filtré ,dans ce cas 992 ports sont filtrés.
si notre machine cible n'etait pas derrière un parfeu ,on aurait 992+8  unfiltered ports . A partir de ces informations, on devra ajuster notre attaque pour prendre en compte le parfeu  , qui devient une deuxième cible .


 FIN ( -sF) et Xmas  Tree(-xS) scans :

Dans la figure suivante on peut voir le scan contre le cible 192.168.1.100 . on voit que deux ports sont classer comme fermé ,ce qui indique qu'un RST a été renvoyer pendant le scan des ports 20 et 443 . parce que nous savons que la cible utilise un par-feu avec avec filtrage simple de paquets ,  il doit y avoir une erreur de configurations du parfeu ,qui permet une communication sans entrave au moins avec ces deux ports , dans le cas contraire les deux ports serait considéré comme open|filtered

Les quatre paramètres qu'on vient de voir sont utiles pour connaitre les services qui tournent derrière ou si la cible se trouve derrière un par-feu . d'autre méthodes existe , et consiste a manipuler les autres champs d'un paquet TCP , voir scapy .

Aucun commentaire:

Enregistrer un commentaire