NMAP

Read Time:10 Minute, 29 Second

NMAP

1. Nmap, LE scanner de réseaux

Nmap est un logiciel effectuant des requêtes à une adresse IP (v4 ou v6 ) et sur 1 à 65536 ports.
La requête permet de connaitre quelle application tourne sur le port scanné.

NMAP est installé d’office sur Kali Linux.
Il est également utilsé par la suite d’application LEGION, également sur Kali Linux.
Vous pouvez utiliser Nmap avec metasploit, encore sur Kali Linux.
Et il est même installable sur Windows, avec un GUI ( Graphic Users Interface )

Allez, petit tour du propriétaire !

2. Les lignes de commande à connaitre !

Nmap s’utilise en ligne de commande, comme beaucoup de logiciel finalement sur Linux.

Ici seront misent les lignes de commande souvent utilisées et les tips.

Format de commande : nmap -option -123.123.123.123

Commandes Basiques :

-sS (Scan TCP SYN) :
Format de base, rien ne sert de le mettre car c’est celui par défaut, il sera à ajouter si vous désirer en effectuer 2 à la fois.
Il envoie un paquet SYN et attend sa réponse, comme s’il voulait vraiment ouvrir une connexion. Une réponse SYN/ACK indique que le port est en écoute (ouvert), tandis qu’une RST (reset) indique le contraire. Si aucune réponse n’est reçue après plusieurs essais, le port est considéré comme étant filtré. Le port l’est également si un message d’erreur « unreachable ICMP (type 3, code 1,2, 3, 9, 10 ou 13) » est reçu.

-sT(Scan TCP connect) :
Le scan TCP connect() est le type de scan par défaut quand le SYN n’est pas utilisable. Tel est le cas lorsque l’utilisateur n’a pas les privilèges pour les paquets bruts (raw packets) ou lors d’un scan de réseaux IPv6. Si le scan SYN est disponible, il vaut mieux l’utiliser. 

-sU(Scan UDP) :
Même si les services les plus connus d’Internet son basés sur le protocole TCP, les services UDP sont aussi largement utilisés. DNS, SNMP ou DHCP (ports 53, 161/162 et 67/68) sont les trois exemples les plus courants. Comme le scan UDP est généralement plus lent et plus difficile que TCP, certains auditeurs de sécurité les ignorent. C’est une erreur, car les services UDP exploitables sont courants et les attaquants eux ne les ignoreront pas.
Les idées pour accélérer les scans UDP incluent le scan des cibles en parallèle, ne scanner que les ports les plus courants en premier, scanner derrière le pare-feu et utiliser l’option --host-timeoutpour éviter les hôtes les plus lents.

-sN; -sF; -sX (Scans TCP Null, FIN et Xmas) :
Pour les systèmes respectant ce texte de la RFC, chaque paquet ne contenant ni SYN, ni RST, ni ACK se voit renvoyé un RST si le port est fermé et aucune réponse si le port est ouvert. Tant qu’aucun de ces drapeaux n’est utilisé, toute combinaison des trois autres (FIN, PSH et URG) son valides. Nmap exploite cela avec les trois types de scans:
Scan Null (-sN)
N’active aucun des bits (les drapeaux de l’en-tête TCP vaut 0).
Scan FIN (-sF)
N’active que le bit FIN.
Scan Xmas (-sX)

Active les drapeaux FIN, PSH et URG, illuminant le paquet comme un arbre de Noël 

L’avantage principal de ces types de scans est qu‘ils peuvent furtivement traverser certains pare-feux ou routeurs filtrants sans état de connexion (non-statefull). Un autre avantage est qu’ils sont même un peu plus furtifs que le scan SYN. N’y comptez pas trop dessus cependant — la plupart des IDS modernes sont configurés pour les détecter. L’inconvénient majeur est que tous les systèmes ne respectent pas la RFC 793 à la lettre

sI <zombie host[:probeport]>(Scan passif — idlescan)
Cette méthode de scan avancé permet de faire un véritable scan de port TCP en aveugle, (dans le sens où aucun paquet n’est envoyé directement à la cible depuis votre vraie adresse IP). En effet, la technique employée consiste à récolter des informations sur les ports ouverts de la cible en utilisant un exploit basé sur la prédictibilité de la génération des identifiants de fragmentation IP de l’hôte relais (le zombie). Les systèmes IDS considéreront que le scan provient de la machine zombie que vous avez spécifié (qui doit remplir certains critères). Le mécanisme de cette incroyable technique est trop complexe pour être expliqué en détail dans ce guide; un papier informel a été posté pour rendre compte de tous ces détails:https://nmap.org/book/idlescan.html.
En plus de son incroyable furtivité (en raison du caractère aveugle de la technique), ce type de scan permet de déterminer les relations de confiance entre les machines.

–badsum :
En fin d’envoi de paquets, un checksum est envoyé pour vérifier l’intégriter des données envoyées. Un mauvais Cheksum peut permettre de récuprer certaines informations complémentaire, surtout du WAF.

-p ( port ) :
permet de choisir un port précis ou une plage de ports ou des ports : -p 80 ou -p 50-80, et pour finir
-p 80,443,3306
Vous pouvez aussi scanner tous les ports en utilisant l’option -p-
Lorsque vous scannez à la fois des ports TCP et UDP, vous pouvez spécifier un protocole particulier en préfixant les numéros de ports par T: (pour TCP) ou U: (pour UDP). Le qualificateur reste actif à moins que vous n’en indiquiez un autre.

-sV(Détection de version)
Autrement, vous pouvez utiliser l’option -A  pour activer à la fois la détection de version et celle du système d’exploitation.

Sachant ceci, une commande simple :

nmap 123.123.123.123
fera un scan -sS sur les 1600 ports les plus utilisés.

nmap -A -sS -sU -p U:53,111,137,T:21-25,80,443,139,8080,3306
Scan des ports cités en TCP et UDP ainsi que la version du l’applications derrière le ports et l’OS faisant tourner la machine scannée.

Le temps :
Un scan trop intense peu être détecté et stoppé par le Firewall. Il est donc possible d’y intégré une variable de temporalité entre les requêtes.

Option NmapNom du modèleRapidité
-T5InsaneMax réseau/2 essaies
-T4AgressifMax réseau/6 essaies
-T3Normal ( mode par défaut Nmap )Max réseau/10 essaies
Pas de pitié !!

La rapidité est maximum, la différence se fera sur le nombre d’essaie répétés, si le réseau en face n’est pas assez rapide, il pourrait envoyer port fermé car pas eu le temps de répondre.
Par exemple, -T4 est à utiliser sur un réseau ethernet.

Option NmapNom du modèle La rapidité
-T2poli1 paquet toutes les 0,4 secondes
-T1sournois1 paquet toutes les 15 secondes
-T0paranoïaque1 paquet toutes les 5 minutes
Mode Ninja

3. Scan d’hotes

-sP(Scan ping)
Cette option indique à Nmap de n’effectuer que le scan ping (la découverte des hôtes), puis d’afficher la liste des hôtes disponibles qui ont répondu au scan. Aucun autre test (comme le scan des ports ou la détection d’OS) n’est effectué.

-PS [portlist](Ping TCP SYN) :
Permet de découvrir des hotes inactif ( recoivent le paquetmais de répondent pas ). Utile pour trouver une machine « zombie ».

-PU [portlist](Ping UDP)
Permet de découvrir des hotes inactif ( recoivent le paquetmais de répondent pas ). Utile pour trouver une machine « zombie ».

–reason(Raisons données à l’état de l’hôte et des ports)
Montre les raisons pour lesquelles chaque port est désigné par un état spécifique et un hôte connecté ou non. Cette option affiche le type de paquet qui à déterminé l’état du port ou de l’hôte. Attention, ce n’est pas une option, elle est a utiliser en complément d’une découverte d’hôte.

Une autre possibilité, n’utilisant pas nmap est arp-scan, la présentation du résultat est plus user friendly
sudo arp-scan 192.168.1.1/24


4. WAF Bypass ou passer un pare-feu

Fragmentation des paquets du scan nmap

-f (fragments) :
Permet la fragmentation des paquets, si le pare-feu est mal configuré, il ne reconnait pas le paquet et le laisse passer. Rarement fiable.

–mtu :
Idem que -f mais nous choisissons la taille des fragments qui doit faire 1 octet donc devrai être un multiple de 8. Ex : –mtu 16

–data-length :
Insertion de data aléatoires dans les paquets pour perdre la WAF.

–spoof-mac :
utilise une adresse MAC choisi ou aléatoire. Si vous avez pu avoir une adresse MAC d’une machine du réseau, utilisé là au cas où elle aurait un accès privilégié.
Adresse MAC aléatoire :
nmap —spoof-mac 0 scanme.nmap.org
Adresse MAC d’un fabricant :
nmap –spoof-mac Windows scanme.nmap.org
Adresse IP spécifique:
nmap —spoof-mac 08:87:AA:18:27:AA scanme.nmap.org

-sI [IP de la machine Zombie] :
Utilisation d’une adresse IP zombie, pour l’utiliser, il faut d’abord trouver un hote dans le réseau, inactif.

Exemple de scan :

nmap –mtu 16 –data-length -sI 111.111.111.111 -A -sS -sU -p U:53,111,137,T:21-25,80,443,139,8080,3306 123.123.123.123

Ce dernier exemple vous montre qu’un scan peut rapidement devenir une vraie grosse ligne de commande.

Avant toutes opération, n’oubliez pas pourquoi vous faites ça et comme toujours, relisez bien mon article sur le droit et le Hacking !


5. Les NSE

Une des caractéristiques de Nmap est l’utilisation des NSE. ( Nmap Scripting Language )
Les NSE sont des scripts intégrés à NMAP qui vérifient et font diverses choses. Bizarrement très peu utilisé ou connu.

Ici nous allons faire le tour du propriétaire.

La liste des scripts est tellement longue, que je ne peut pas vous faire une liste précise, il faudra effectuer une recherche sur le site officiel et voir ce qui pourrait convenir à votre analyse.

Ici, je me bornerai a vous montrer l’utilisation ( très simple ).
Il suffit de mettre en –script et le ou les noms de script.

Pour le site officiel c’est ici
==> Nmap NSE

Pour un site avec recherche spécifique ( trouvable également dans mes bonnes adresses )
==> InfoSecMatter
Le mieux étant d’ouvrir le site et de voguer pour voir l’étendu des possibilités.

Commande d’utilisation :

Voici un exemple d’exécution d’un seul script pour énumérer la version du système d’exploitation d’un système Windows cible via le protocole SMB :
nmap -p 445 –script smb-os-discovery <target>

Vous pouvez également utiliser des caractères génériques (*) pour spécifier plusieurs scripts en fonction de leur nom et les combiner avec un critère de catégorie, par exemple :
nmap –script « http-* and (default or safe or intrusive) » <target>

http-enum.nse :
Effectue une énumération(2000), sur le port 80 ou 443 pour trouver des pages renvoyant 200 ou 401 ( demande d’autorisation ).
Le fonctionnement de ce script est similaire au fonctionnement de Nikto, et il est possible de se connecter à la base de données de Nikto, contenant plus de 6 500 entrées.
http-fingerprints.nikto- db-chemin .

http-default-account :
Permet, sur les ports dédiés au web : 80, 443, 8080 de tester les comptes enregistrés par défaut.
Le nombre de tests n’est pas assez exhaustif de base sur Nmap et peut-être amélioré avec le script suivant, trouvable sur GitHub : https://github.com/nnposter/nndefaccts/

http-grep.nse :
Recherche sur la page donnée des informations utiles. 
Par défaut, il renvoie les adresses e-mail et les adresses IP trouvées sur toutes les sous-pages découvertes par le script

dns-brute.nse
Essaie de trouver autant de sous- domaines que l’hôte est testé en utilisant les noms de sous-domaines les plus fréquemment utilisés.

http-config-backup.nse
Envoie de nombreuses requêtes au serveur Web, essayant d’obtenir une copie de la configuration du CMS
Selon les recherches menées par l’auteur de l’ outil CMSploit , qui s’inspire du script 
http-config-backup , près de 1%des sites utilisant le CMS dévoilent leurs données d’accès à la base de données via des mauvaises configurations.

vulscan.nse
Ajoute la fonctionnalité de scanner de vulnérabilité à Nmap. 
Malheureusement, il ne fait pas partie de la bibliothèque de scripts Nmap, donc pour l’utiliser, télécharger le et placez le dossier que vous aurez décompressé dans les scripts Nmap.
( sur Kali : usr/share/nmap/scripts/ )

http-wordpress-enum.nse
Comme http-enum mais ciblé sur WordPress.

firewalk.nse
Tente de détecter les règles de pare -feu /passerelle.

mysql-empty-password.nse
Vérifie s’il est possible de se connecter au serveur MySQL avec le compte root ou 
anonyme en utilisant un mot de passe vide.



6. Conclusion

Vous connaissez maintenant les rouages de l’engin.
Vous pourrez effectuer des scans même avec pare-feu, en cachant votre adresse IP, cibler le protocole UDP trop peu considéré à mon avis.

Maintenant vous pourrez effectuer des scans plus complexes pour tirer réellement parti de tout le potentiel de ce fabuleux logiciel.

Happy
Happy
0 %
Sad
Sad
25 %
Excited
Excited
50 %
Sleepy
Sleepy
0 %
Angry
Angry
25 %
Surprise
Surprise
0 %