Aller au contenu
Categoria: Pentest8 min de lecture

Nmap Avance: Scripts NSE pour Recon Interne dans un Lab Corporatif Simule

Por Lucas Andrade ·

Comment tirer vraiment parti du NSE pour l enumeration autorisee sur des reseaux internes simules, avec exemples de scripts, parsing de sortie et integration aux pipelines de pentest.

Nmap Avance: Scripts NSE pour Recon Interne dans un Lab Corporatif Simule

Nmap n'est pas mort, et qui pense le contraire n'a jamais ouvert /usr/share/nmap/scripts. Le Nmap Scripting Engine (NSE) embarque plus de 600 scripts Lua, du fingerprint de services legacy a l'enumeration Active Directory via LDAP non authentifie. Dans un lab corporatif simule, monte par exemple avec GOAD ou Ludus, le NSE remplace des dizaines d'outils ponctuels et renvoie du XML structure, ce qui rend tout le tooling reproductible. Cet article pose un flux de recon fiable en trois etapes: balayage large des ports, enumeration par service et validation ciblee. Avant toute option exotique, le point non negociable reste le perimetre ecrit: sans autorisation formelle, scanner est aussi grave que d'ouvrir le courrier d'autrui et, dans bien des juridictions, constitue un delit. On part ici d'un lab possede, isole et documente.

Pourquoi NSE plutot que dix outils separes

La vraie valeur du NSE est la consolidation. Au lieu de lancer enum4linux, smbmap, ldapsearch et une douzaine de snippets Python les uns apres les autres, un seul moteur orchestre les sondes et normalise la sortie. Les scripts portent des categories comme safe, discovery, intrusive, vuln et brute, tu pilotes donc le risque finement. --script safe ne lance que des verifications non invasives, --script vuln ajoute les checks de vulnerabilites connues. Cette distinction n'est pas cosmetique: dans un environnement proche de la prod, la categorie decide si ton scan fait tomber un service. Avant tout usage, lis nmap --script-help <nom>, car la doc precise categorie, arguments et effets de bord de chaque script.

Le lab: GOAD, Ludus et isolation reseau

Un lab de recon serieux exige une topologie realiste. GOAD (Game of Active Directory) fournit un environnement AD multidomaine vulnerable, tandis que Ludus automatise le deploiement de ranges d'attaque entiers sur Proxmox. Les deux vivent dans un VLAN segregue sans route vers la production. L'essentiel est une interface de management separee pour ta VM Kali ou Parrot et un sous-reseau cible dedie comme 10.10.0.0/24. Si ton lab n'est pas encore en place, Pentest Web depuis Zero: Construire un Lab Sur avec DVWA, Juice Shop et Burp Suite est une reference serree et reproductible qui sert de point de depart et empeche tes exercices de recon de fuiter sur le reseau ouvert.

Etape un: un balayage de ports propre

Commence par les bases bien faites. Un sweep initial avec nmap -sS -p- --min-rate 5000 -oA full_tcp 10.10.0.0/24 te donne un inventaire TCP complet en quelques minutes sur un /24 a faible latence. Le scan SYN (-sS) est plus rapide et discret qu'un connect complet, -p- couvre les 65535 ports et --min-rate fixe un plancher de debit de paquets. Une deuxieme passe ciblee, nmap -sV -sC -p$(cat ports.txt) -oA versioned -iL hosts.txt, execute les scripts par defaut (categories safe et discovery) sur les ports reellement ouverts. Ce flux en deux etapes evite le peche classique du -A sur tout un /16, qui sature les sondes, enflamme le SIEM et te laisse sans donnees fiables. N'oublie pas l'UDP: nmap -sU --top-ports 50 trouve SNMP, NetBIOS et IKE, invisibles en scan TCP.

Etape deux: enumeration SMB

Le NSE excelle vraiment dans l'enumeration par service. Pour SMB, des scripts comme smb-os-discovery, smb2-security-mode, smb-enum-shares, smb-enum-users et smb-vuln-ms17-010 reconstruisent la topologie Windows sans credentials valides dans bien des cas. Une invocation typique est nmap -p445 --script 'smb-os-discovery,smb2-security-mode,smb-enum-shares' 10.10.0.0/24. smb2-security-mode revele si le signing est impose, indicateur direct de la faisabilite d'un SMB relay. smb-enum-shares liste les partages avec leurs droits, exposant souvent des repertoires lisibles anonymement pleins de scripts et de sauvegardes. Surveille l'acces guest et des partages comme SYSVOL, qui dans un domaine peuvent contenir des Group Policy Preferences avec des mots de passe chiffres de facon reversible.

Etape deux: LDAP et Active Directory

Pour LDAP, ldap-search avec le filtre (objectClass=user) expose les comptes de service, des descriptions contenant des mots de passe colles (plus frequent qu'on ne l'admet) et des politiques de mots de passe laxistes. L'appel nmap -p389 --script ldap-search --script-args 'ldap.base="dc=corp,dc=lab"' 10.10.0.10 extrait deja beaucoup sans bind. Des scripts comme ldap-rootdse renvoient les contextes de nommage et niveaux fonctionnels. Dans un AD type GOAD, cette reconnaissance nourrit directement l'attaque decrite dans Pentest Active Directory : Kerberoasting Pas a Pas dans un Lab GOAD, ou le Kerberoasting depend de SPNs reperes des le recon. Ajoute krb5-enum-users pour confirmer des noms de comptes valides via les reponses de preauth Kerberos sans generer d'echec de login.

Enumeration web et scripts HTTP

Pour les fermes web, combine http-title, http-enum, http-headers et http-methods pour cartographier des paysages applicatifs entiers en secondes. http-enum sonde des chemins connus (panneaux admin, .git, fichiers de backup), tandis que http-methods --script-args http-methods.test-all revele des verbes dangereux comme PUT. Un appel comme nmap -p80,443,8080,8443 --script 'http-title,http-headers,http-enum' -iL web_hosts.txt suffit pour une premiere passe. Pour les stacks Java exposes, les endpoints Spring Boot Actuator ouverts et les configurations Jenkins risquees sont les trouvailles les plus rentables, car elles menent souvent droit a l'execution de code a distance.

Scripts vuln et scans credentialed

Des que tu as des credentials valides issus d'un foothold, le NSE devient bien plus puissant. --script-args smbusername=svc_backup,smbpassword=... debloque smb-enum-shares et smb-enum-sessions pour la vue authentifiee qui reste cachee en anonyme. La categorie vuln regroupe des checks comme smb-vuln-ms17-010, http-vuln-cve2017-5638 (Struts) et ssl-heartbleed; combine avec --script-args vulns.showall tu vois aussi les verifications qui n'ont pas declenche. Important: les scripts vuln confirment la presence, pas l'exploitabilite. Un positif ms17-010 au lab est le point de depart d'une exploitation controlee, jamais d'un tir aveugle contre des hotes inconnus. Documente chaque positif avec le nom du script, les arguments et le timestamp pour que le rapport reste reproductible ensuite.

Sortie parseable et pipeline

Une sortie utile est une sortie parseable. Utilise toujours -oA basename, qui produit .nmap, .gnmap et .xml d'un coup. Le XML alimente nmap-parse-output, dnmap, ou un script Python maison avec python-libnmap. Dans une grosse equipe, ingerer le XML dans Elasticsearch et croiser avec des regles Sigma transforme le recon offensif en intrant pour la blue team, bouclant le cycle decrit dans Purple Team en Pratique: Construire une Boucle de Feedback Red vs Blue. Evite de jeter la sortie brute dans un prompt LLM pour la resumer: au-dela du risque de fuite, tu perds des champs comme reason_ttl precieux pour detecter un IPS en ligne.

Ecrire du NSE maison en Lua

Les scripts personnalises sont le vrai bonus. Ecrire du NSE en Lua est plus simple qu'il n'y parait: un fichier dans ~/.nmap/scripts/ avec les trois parties obligatoires, description, categories et portrule, plus une fonction action, suffit a tourner. Un script minimal definit portrule = shortport.port_or_service(8080, "http-proxy") et appelle la bibliotheque http dans action pour batir une verification de CVE interne. Apres avoir depose le fichier, rafraichis la base avec nmap --script-updatedb. En red team autorise, ca vaut le coup de coder des verifications pour des CVE internes non publiques. Pour la phase d'apres, quand le foothold est acquis et que tu veux pivoter, Pivoting avec Chisel et Ligolo-ng : Reseaux Segmentes en Lab de Pentest prend le relais en supposant le recon termine.

Timing, firewalls et detection

Attention au timing et aux firewalls statefuls. -T4 casse encore beaucoup de vieux IDS, mais aujourd'hui il declenche facilement des alertes XDR modernes. Pour un lab realiste, regle --max-retries 2, --host-timeout 30m et --scan-delay 100ms face a un Suricata. Utilise --source-port 53 ou --data-length 24 pour eprouver des regles laxistes qui font confiance au port source, motif helas toujours present. Cote blue team, un scan SYN sur tous les ports produit une signature marquee de nombreuses connexions semi-ouvertes; Zeek et Suricata la reperent de facon fiable. Si tu travailles en defense, construis tes regles de detection exactement la-dessus et mesure ton propre taux de detection face aux scans montres ici.

Erreurs frequentes et checklist

Les erreurs les plus frequentes: lancer -A sur des plages trop larges, ignorer l'UDP totalement, ne pas sauvegarder le XML et prendre les estimations de version pour des faits. Checklist avant chaque run: (1) autorisation ecrite et perimetre en main; (2) le sous-reseau cible est isole; (3) etape un uniquement -sS -p- avec -oA; (4) etape deux -sV --script "safe,discovery" contre les ports ouverts seulement; (5) etape trois NSE specifique par service, documente par script; (6) top ports UDP verifies; (7) toute la sortie archivee, y compris les scans rates, car ils signalent souvent des ACL interessantes a auditer ensuite.

FAQ

-sV est-il sur contre la production? Le plus souvent oui, mais de vieux stacks SCADA et imprimantes sont fragiles sous les sondes de version. Reduis avec --version-intensity 2 et exclus les hotes fragiles. Le NSE peut-il faire tomber une cible? Oui, surtout les scripts des categories intrusive et dos. Reste sur safe et discovery tant qu'une mission explicite ne couvre pas plus, et teste chaque nouveau script d'abord au lab.

Au final, NSE ne remplace pas la reflexion. Nmap trouve des ports et devine des versions; correler les decouvertes, prioriser le chemin d'exploit et respecter le scope reste un travail humain. Takeaway pratique: monte un pipeline en trois couches, sweep large avec -sS -p-, enumeration avec -sV --script "safe,discovery" et validation via NSE specifique par service, toujours en exportant le XML pour parsing ulterieur. En deux heures tu cartographies mieux un /24 corporatif que bien des scanners automatises payants. Et rappelle-toi, sans autorisation ecrite, ce n'est pas un pentest, c'est un delit.

Related posts

Nenhum comentário ainda

Seja o primeiro a comentar.

Deixe seu comentário

Entre com sua conta Canverly para comentar. Você pode usar a mesma conta em qualquer site da rede.

Entrar com Canverly