Jules Aubert

#include "jules_aubert.h"

Accueil > Informatique > Route vers OSCP > Un simple script d’énumération de ports avec Nmap

Un simple script d’énumération de ports avec Nmap

mardi 19 mai 2020, par Jules Aubert

Lorsqu’il s’agit de pentester une machine distante, et que l’on a que l’IP comme information, il faut évidemment commencer par scanner la cible.

En tout premier scan, j’exécute nmap en demandant un stealth scan sur tous les ports,
Le but est de ne récupérer que la liste des ports ouverts ou filtrés, sans terminer la connexion TCP. C’est plus rapide et ça permet d’être un peu plus discret que d’essayer tous les ports avec une connexion complète. S’il y a un IDS (Intrusion Detection Software), j’aurai beaucoup moins de chance de me faire rejeter.

La commande est

  1. nmap -p- -sS $target

Les exemples qui suivent ont comme cible la machine Archetype de Hack The Box.

J’ai les ports, je peux alors en déduire les services derrière, en espérant que le sysadmin derrière l’infrastructure utilise les ports par défauts. Mais, mettons que je veuille aller plus loin, en risquant de me faire détecter.

Le but maintenant est de récupérer les ports dans une variable, séparés par des virgules. J’injecterai alors cette variable dans un prochain appel à Nmap qui scannera plus en profondeur la machine cible.

D’abord, je réutilise la même commande, dont la sortie est enregistrée dans une variable ports. Ca m’évite d’avoir à scanner à chaque fois et de jouer avec la même sortie.

Je veux maintenant récupérer seulement les lignes qui commencent par un chiffre, car ce sont les seules qui contiennent un port. J’utlise grep pour ça.

Maintenant, je sépare chaque ligne en deux champs avec cut, en séparant les deux parties avec le caractère / comme délimiteur, et je ne garde que la première partie.

Puis, je demande à transformer chaque retour à la ligne par une virgule avec tr.

Il ne faut pas faire attention au caractère # à la fin, c’est simplement mon shell qui m’indique qu’il ne devrait pas y avoir de retour à la ligne et que mon prompt devrait être collé à la fin de la ligne, mais il fait intelligemment le retour pour moi pour que ça reste lisible.
En revanche, j’ai toujours une virgule en trop à la fin de la ligne. J’utilise sed pour substituer la virgule en fin de ligne par... rien.

Ok, ça a l’air d’être un bon filtre, je teste pour de vrai.

Plus qu’à injecter la variable dans un autre appel à Nmap qui lui donnera plus d’informations.

Plus qu’à en faire un script pour automatiser dorénavant chaque scan.

  1. echo -n "Target: "
  2. read target
  3.  
  4. ports=$(nmap -p- -sS $target | grep '^[0-9]' | cut -d '/' -f1 | tr '\n' ',' | sed s/,$//)
  5. echo ports: $ports
  6.  
  7. if [ -n "$ports" ]
  8. then
  9.     nmap -sC -sV -p$ports $target
  10. fi

Télécharger

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.