Introduction
La sécurité d’un réseau interne repose sur plusieurs mécanismes parfois complexes à appréhender. Ces réseaux s’appuient souvent sur un système centralisé d’authentification, impliquant une multitude d’utilisateurs, de postes de travail et de services. Plus l’entreprise grandit, plus son réseau devient vaste et difficile à contrôler.
C’est dans ce contexte que l’outil NetExec se distingue. Conçu pour faciliter l’audit de réseaux internes, il offre la possibilité de :
- s’interfacer avec les services d’authentification centrale de Microsoft ;
- exploiter les protocoles les plus courants de ces environnements ;
- interagir avec un très grand nombre de machines ;
- fonctionner depuis n’importe quelle machine présente physiquement sur le réseau.
- s’exécuter sur tout type de système d’exploitation.
Les techniques mises en œuvre par NetExec ne lui sont pas exclusives : chacune pourrait être reproduite par un outil dédié. L’intérêt de NetExec réside dans sa capacité à centraliser l’ensemble de ces fonctionnalités au sein d’un seul programme, simplifiant ainsi le travail d’un auditeur.
Dans cet article, nous présenterons les principes et le fonctionnement de NetExec. Nous détaillerons également ses principales techniques et fonctionnalités dans le cadre d’un pentest de réseau interne en boite noire et en boite grise.
Guide complet sur NetExec
Principes et fonctionnement de NetExec
L’utilisation de NetExec repose sur une commande de base :
nxc <protocole> <cible(s)> [options]
Cette syntaxe constitue le point d’entrée pour interagir avec un ou plusieurs services d’un réseau interne.
Protocoles pris en charge par NetExec
NetExec prend en charge de nombreux protocoles. La commande d’aide (nxc --help
) permet d’en afficher la liste.
Chaque protocole offre des possibilités d’interaction spécifiques :
Protocole | Port(s) d’écoute(s) | Actions réalisables | Description |
---|---|---|---|
LDAP | 389, 636 | Divulgation d’informations du domaine (utilisateurs, machines, services), édition de propriétés et de configuration. | Service d’annuaire exposé par le contrôleur de domaine. Il contient toutes les informations décrivant les objets et la configuration du domaine. |
WMI | 135 | Exécution de code à distance, collecte d’informations techniques propres à une machine. | Interface logicielle Microsoft fournissant des fonctions d’administration. Accessible à distance via RPC et DCOM. |
WINRM | 5985, 5986 | Exécution de code à distance. | Service de gestion et d’administration à distance d’une machine, considéré comme une version modernisée de WMI. |
RDP | 3386 | Accès graphique au bureau d’une machine, exécution de code à distance. | Service Microsoft permettant l’accès et le contrôle graphique du bureau d’une machine distante. |
MSSQL | 1433 | Lecture/écriture dans une base SQL, exécution de code à distance. | Service de gestion des bases Microsoft SQL Server. |
SSH | 22 | Exécution de code à distance | Service d’administration à distance, principalement utilisé par les systèmes Unix. |
VNC | 5900 | Accès graphique distant au bureau d’une machine. | Service d’accès distant non lié à Microsoft, alternative à RDP. |
SMB | 445 | Accès aux partages de fichiers. Accès au système de fichiers. Exécution de commande à distance. | Service de partage de fichiers de Microsoft, actif par défaut sur Windows. Avec des privilèges élevés, il permet d’accéder à tous les fichiers d’une machine et d’exécuter du code à distance. |
NFS | 2049 | Accès aux partages de fichiers. | Service de partage de fichiers utilisé dans des environnements non Microsoft. |
FTP | 21 | Accès aux partages de fichiers | Service de transfert et partage de fichiers non lié à Microsoft. |
Pour chacun de ces protocoles, NetExec propose des actions natives ou des modules permettant d’analyser et exploiter efficacement la surface d’attaque.
Ciblage des machines
Après avoir défini le protocole avec lequel interagir, il faut spécifier les machines cibles.
Cette information peut être définie par un nom d’hôte, une adresse IP, une plage d’adresses IP, une notation CIDR, un fichier ou une combinaison de ces éléments séparés par un espace.
nxc <protocole> 192.168.56.10 # adresse IP unique
nxc <protocole> DC.EXEMPLE.COM # nom d’hôte
nxc <protocole> ~/fichier_cibles.txt # fichier contenant une cible par ligne
nxc <protocole> 192.168.56.0/24 # une plage d’adresse IP
nxc <protocole> 192.168.56.10-22 # une notation cidr
nxc <protocole> DC.EXEMPLE.COM 192.168.56.10-22 ~/fichier_cibles.txt # une combinaison
Lorsque plusieurs cibles sont spécifiés, NetExec parallélise automatiquement les interactions. Cela permet de traiter rapidement des dizaines, voire des centaines de machines.
Authentification
De nombreuses actions nécessitent un compte valide. La façon la plus simple de spécifier le compte avec lequel se connecter consiste à utiliser les options « -u/--username
» et « -p/--password
».
L’outil prendra alors le(s) nom(s) d’utilisateur(s) et le(s) mot(s) de passe définis par ces options.
En fonction du protocole et des options utilisées, l’outil cherchera à s’authentifier soit localement, soit via le service d’authentification centrale du domaine (généralement NTLM ou Kerberos).
Voici comment procéder à l’authentification d’un utilisateur :
# Authentification centrale via NTLM ou local pour FTP,NFS,SSH et VNC.
nxc <protocole> <cible(s)> -u <login> -p <mot de passe> [-d <domain>]
# Authentification locale explicite pour LDAP, WMI, WINRM, RDP, MSSQL et SMB.
nxc <protocole> <cible(s)> -u <login> -p <mot de passe> --local-auth
# Authentification centrale via kerberos pour tous les protocoles.
nxc <protocole> <cible(s)> -u <login> -p <mot de passe> -k [-d <domain>]
Ainsi, NetExec tentera d’interagir avec la machine cible et s’authentifier avec le compte fourni.
En plus des mots de passe, NetExec supporte d’autres méthodes comme l’utilisation de hashes NTLM, de clés Kerberos, de certificats ou d’identifiants stockés dans sa base interne.
Dans le retour de la commande, la réussite ou non de l’authentification est indiquée explicitement.
De plus, ce retour de commande indiquera si l’utilisateur en question dispose de privilèges élevés sur la machine cible via la dénomination « pwned
! » ou « admin
».
Actions natives et modules de NetExec
En l’absence d’instruction d’actions, l’outil va vérifier si le service spécifié est exposé par les machines cibles et retournera des informations sur les machines concernées.
Dans le cas où des options d’authentification sont fournies, alors l’outil tentera une authentification et indiquera si les identifiants fournis ont fonctionné ou non.
En revanche, NetExec propose via des options dédiées des interactions utiles avec les protocoles :
- Gestion de fichiers à distance :
--ls
,--dir
,--put-file
,--get-file
- Collecte d’informations sur le domaine ou la machine :
--users
,--groups
,--computers
- Extraction de secrets et identifiants :
--sam
,--ntds
,--dpapi
,--gmsa
- Exécution de code ou requêtes à distance :
--query
,-x
,-X
Cette liste n’est pas exhaustive. La documentation officielle de NetExec fournit l’ensemble des options disponibles.
En complément, NetExec dispose de modules avancés. Ils permettent d’effectuer des actions plus poussées sur un protocole donné.
- Pour obtenir la liste des modules liés à un protocole (option
-L
) :
nxc wmi -L
- Pour utiliser un module particulier (option -M) :
Notons que certains modules nécessitent des paramètres pouvant être consultés avec « --options
» et définies comme ceci « -o PARAM1=VALUE PARAM2=VALUE
».
nxc wmi -M rdp –options
Techniques d’audit en boite noire avec NetExec
Dans cette partie, nous illustrons comment utiliser NetExec dans un contexte d’audit réseau en boîte noire. Ce type d’audit simule la situation d’un attaquant ne disposant d’aucun compte valide sur le réseau cible.
Analyse du réseau et des services ouverts
Une première utilisation de NetExec consiste à identifier les machines et services actifs sur un réseau.
Par exemple, pour détecter toutes les machines exposant le port SMB sur un réseau local :
nxc smb <plage ip réseau local>
Le service SMB est particulièrement intéressant, car il est activé par défaut sur les machines Windows. En une seule commande, il est possible d’obtenir :
- le nom des machines,
- leur version de système d’exploitation,
- le domaine auquel elles appartiennent.
Sans disposer de compte, l’auditeur obtient ainsi une première cartographie du réseau.
Cette étape pourrait également être réalisée avec un outil comme Nmap, mais la simplicité d’utilisation, la rapidité d’exécution et la lisibilité des résultats font de NetExec une option plus efficace. Le même principe peut d’ailleurs être appliqué à d’autres protocoles.
Password Spraying via NetExec
Le Password Spraying est l’une des techniques phares de NetExec. Contrairement au brute force classique, qui teste un grand nombre de mots de passe sur un seul compte (et entraîne souvent un verrouillage), le Password Spraying consiste à tester quelques mots de passe courants sur de nombreux comptes.
Cette approche permet d’éviter le blocage rapide des comptes et s’avère particulièrement efficace dans un contexte d’entreprise.
Avec cette technique, l’objectif pour l’auditeur est de confirmer rapidement la validité de certains identifiants puis de les réutiliser sur le réseau.
Ce type d’attaque est facilement réalisable depuis NetExec grâce à la flexibilité de ses options « --username/-u
» et « --password/-p
». En effet, la spécification de plusieurs identifiants potentiels est possible. Soit en pointant vers un fichier texte contenant un candidat par ligne, soit en séparant chaque candidat par un espace directement dans la ligne de commande.
Voici un exemple d’attaque par password spraying :
nxc smb 192.168.56.11 -u brute_users.txt -p 'hodor' 'sexywolfy' --continue-on-success
Ici, NetExec a identifié deux comptes valides. Cette technique constitue souvent un point d’entrée lors d’un audit en boîte noire, car elle permet de trouver rapidement un premier jeu d’identifiants valides, réutilisables par la suite.
Identification d’accès anonymes
Il arrive parfois que certains protocoles soient déployés dans des configurations vulnérables autorisant des connexions sans authentification.
NetExec facilite la détection de ces accès anonymes, nuls ou invités :
nxc <protocole> <cibles> -u ‘’ -p ‘’ # test de connexion nulle
nxc <protocole> <cibles> -u ‘anonymous’ -p ‘’ # test de connexion anonyme
nxc <protocole> <cibles> 24 -u ‘guest’ -p ‘’ # test de compte invité
Par exemple, pour rechercher des serveurs FTP acceptant une connexion anonyme et lister les fichiers accessibles :
nxc ftp 172.16.1.0/24 -u ‘anonymous’ -p ‘’ --ls
Attaque Kerbrute Userenum
Enfin, NetExec peut reproduire l’attaque Kerbrute Userenum, qui consiste à déduire l’existence de comptes utilisateurs à partir des réponses du KDC (Key Distribution Center) lors de requêtes Kerberos. Pour ce faire, il faut interagir avec Kerberos (option `-k
`).
L’attaque consiste alors à initier une authentification Kerberos avec une liste de noms d’utilisateur potentiels. En fonction de la réponse renvoyée, il est possible de déterminer si un utilisateur existe ou non.
Ainsi, l’existence d’un compte utilisateur sur le domaine peut être confirmée via la commande suivante :
nxc ldap "$DC" -u brute_users.txt -p '' -k
Dans ce cas, un message d’erreur KDC_ERR_PREAUTH_FAILED
indique que l’utilisateur existe bien sur le domaine. Cette technique permet donc de construire une liste d’utilisateurs valides, ce qui améliore considérablement l’efficacité d’un Password Spraying ultérieur.
Note : contrairement aux scripts kerbrute en go et kerbrute.py qui interrompent l’authentification avant l’étape du mot de passe pour plus de discrétion, NetExec effectue une tentative complète d’authentification.
Techniques d’audit en boite grise
Une fois un compte valide découvert sur le domaine, les possibilités offertes par NetExec s’élargissent considérablement. Cette étape marque un tournant dans l’audit, car elle permet de dépasser la simple reconnaissance pour exploiter réellement les accès disponibles.
Avec un compte, l’auditeur peut :
- interroger l’annuaire LDAP,
- accéder à des partages réseau,
- collecter des informations sensibles,
- exécuter des commandes à distance.
Collecte d’informations sur l’annuaire LDAP
Le protocole LDAP constitue une porte d’entrée précieuse : il permet d’obtenir de nombreuses informations sans nécessiter de privilèges particuliers.
Parmi les options disponibles dans NetExec :
Informations | Option(s) NetExec | Description |
---|---|---|
Utilisateurs | --users , --active-users , --admin-count , --password-not-required | Énumère tous les utilisateurs du domaine, seulement les actifs, les administrateurs, ou ceux sans mot de passe requis. |
Groupes | --groups , --groups <group> | Liste les groupes et, le cas échéant, leurs membres. |
Machines | --computers , -M maq | Énumère toutes les machines du domaine. |
Domaines | --get-sid , --dc-list | Récupère le SID du domaine, les contrôleurs de domaine et leurs relations de confiance. |
Politique de mot de passe | --pso | Affiche la politique de mot de passe appliquée. |
Délégations Kerberos | --find-delegation , --trusted-for-delegation | Liste les délégations configurées et les comptes bénéficiant d’une délégation sans contrainte. |
Comptes vulnérables à une attaque Kerberos. | --asreproast , --kerberoasting | Identifie les comptes exposés aux attaques ASREProast et Kerberoasting. |
Bloodhound | --bloodhound -c COLLECTION | Génère un fichier pour l’outil BloodHound, utile à la cartographie AD. |
D’autres informations pertinentes peuvent être retrouvées via des options ou modules listés dans la documentation de NetExec.
Notez qu’il est possible de spécifier manuellement une requête LDAP pour cibler une information. Pour ce faire, les options --querry
et --base-dn
peuvent être utilisés.
nxc ldap 192.168.56.11 -u hodor -p 'hodor' --query "(name=jon.snow)" "msDS-AllowedToDelegateTo cn"
L’objectif principal de ces interactions est la cartographie du domaine, indispensable pour identifier des chemins d’exploitation menant à du mouvement latéral ou à une élévation de privilèges.
Audit des partages de fichiers
NetExec supporte plusieurs protocoles de partage de fichiers : SMB, NFS et FTP.
L’audit des partages de fichiers vise à identifier les ressources accessibles sur les serveurs du domaine et à évaluer le niveau de sensibilité des données exposées. L’idée ici est donc de détecter d’éventuelles failles liées à une mauvaise gestion des permissions, telles que des répertoires ouverts en lecture ou en écriture à de larges groupes d’utilisateurs, ce qui peut entraîner des fuites d’informations ou servir de vecteur d’escalade de privilèges.
Si NetExec propose les options de base pour télécharger, uploader ou lister des fichiers pour chacun de ces protocoles (--get-file
, --put-file
, --dir
, --ls
, etc.), sa capacité à lister les partages et les fichiers présents sur plusieurs machines simultanément reste un point fort qui le différencie d’autres outils.
Par exemple la commande ci-dessous permet d’énumérer tous les partages de fichiers SMB accessibles en lecture à l’utilisateur sur le réseau.
nxc smb 192.168.56.0/24 -u robb.stark -p sexywolfy -d $DOMAIN --shares read
Des secrets ou informations techniques découverts dans ces partages peuvent conduire à une élévation de privilèges ou à un mouvement latéral.
Audit des services MSSQL avec NetExec
NetExec permet également d’interagir avec Microsoft SQL Server (MSSQL).
Après l’obtention d’un compte valide, NetExec permet de tirer parti du protocole MSSQL pour évaluer et exploiter les services de bases de données présents dans le domaine.
Une première action consiste à tester l’authentification afin d’identifier les instances accessibles avec les identifiants découverts.
nxc mssql <cible> -u <user> -p <password>
Une fois connecté, il est possible d’énumérer les bases de données disponibles, de collecter des informations sur la configuration du serveur et de vérifier le niveau de privilèges associé au compte utilisé.
La manière la plus simple d’interagir avec la base de données consiste à utiliser l’option « -query/-q
» qui permet l’exécution arbitraire d’une requête SQL sur le serveur.
nxc mssql 192.168.56.22 -u hodor -p hodor --query \
'SELECT name FROM master.dbo.sysdatabases;'
La limite des informations consultables et modifiables va dépendre des privilèges de l’utilisateur.
Lorsque celui-ci dispose de droits étendus, NetExec offre la possibilité d’activer des fonctionnalités comme xp_cmdshell
pour lancer des commandes système à distance, ouvrant ainsi la voie à une exécution de code sur le serveur hôte.
nxc mssql 192.168.56.22 -u jon.snow -p iknownothing -M enable_cmdshell -o ACTION=enable
nxc mssql 192.168.56.22 -u jon.snow -p iknownothing -x whoami
L’audit MSSQL peut donc révéler des opportunités de compromission directe ou de déplacement latéral, notamment grâce aux modules spécialisés comme enum_links
ou exec_on_link
.
Exécution de commandes et post-exploitation
Dès qu’un auditeur obtient un compte disposant de privilèges suffisants sur une machine, NetExec permet d’exécuter des commandes à distance via plusieurs protocoles pris en charge.
Une fois ces accès consolidés, l’outil offre également de nombreuses fonctionnalités de post-exploitation, notamment l’extraction de secrets (mots de passe, clés, identifiants). Ces informations peuvent ensuite être réutilisées pour étendre l’accès à d’autres machines ou services du réseau.
Accès aux bureaux à distance via RDP et VNC
Les protocoles RDP et VNC permettent un accès graphique à distance au bureau d’une machine.
Avec un compte valide, NetExec peut tester et exploiter ces services afin de confirmer la possibilité d’une connexion interactive. Dans le cas de RDP, une authentification réussie donne à l’auditeur un contrôle de la session utilisateur sur la machine ciblée.
nxc rdp <cible(s)> -u <user> -p <password>
De la même manière, l’option VNC permet de tester une connexion vers des serveurs accessibles sur le réseau, offrant ainsi une prise en main visuelle du poste ou du serveur ciblé.
Ces tests sont particulièrement utiles pour repérer des postes administratifs ou des serveurs critiques exposés via un bureau distant. Lorsqu’ils aboutissent, ils constituent un vecteur efficace de mouvement latéral ou d’élévation de privilèges, surtout si l’utilisateur compromis dispose de droits élevés.
La connexion graphique elle-même nécessite toutefois des outils spécialisés, tels que xfreerdp. Dans la version 1.4.0 de NetExec, l’interaction avec RDP et VNC reste limitée aux tests d’authentification et aux captures d’écran (--screenshot
).
Note : une « PullRequest » effectuée durant l’été 2025 a introduit la possibilité d’exécuter des commandes à distance via RDP, élargissant encore le champ des actions réalisables.
Exécution de code à distance avec NetExec
L’exécution de commandes permet d’aller au-delà de la simple validation d’accès pour mesurer concrètement l’impact d’une compromission. Elle peut servir à déployer des binaires, extraire des données sensibles locales, vérifier les droits effectifs de l’utilisateur ou encore préparer un mouvement latéral vers d’autres systèmes du domaine.
Actuellement, NetExec prend en charge cette fonctionnalité sur les protocoles WINRM, SSH, MSSQL, WMI, SMB et, depuis l’été 2025, RDP.
En pratique, dès qu’une authentification réussie retourne la mention “Pwn3d!
” ou “Admin
”, il devient possible d’exécuter une commande distante sur la machine ciblée.
Alors l’option -x
ou -X
peut être utilisée pour exécuter une commande distante sur le ou les serveurs cibles.
nxc rdp 192.168.56.11 -u 'jon.snow' -p 'iknownothing' -x ‘whoami /all’
Post-exploitation et extraction de secrets
Un atout majeur de NetExec réside dans sa capacité à extraire des secrets d’une machine grâce à de nombreuses options dédiées. Cette étape est cruciale, car ces informations permettent ensuite à un attaquant de se déplacer latéralement au sein du réseau.
Le protocole SMB est particulièrement riche en ce domaine : il propose un large éventail d’options et de modules dédiés à l’extraction d’identifiants et de données sensibles. Le tableau ci-dessous en présente les principales fonctionnalités.
Options /modules | Privillège requis | Description |
--sam | Administrateur machine | Extraction de la base SAM (hash NT des utilisateurs locaux). |
--lsa | Administrateur machine | Extraction de secrets LSA (DPAPI_SYSTEM, hash NT machine, clés Kerberos, comptes de service, etc.). |
--ntds | Administrateur du domaine | Extraction de la base NTDS (tous les comptes utilisateurs et machines du domaine). |
--dpapi | Administrateur machine | Déchiffrement des secrets DPAPI (mots de passe stockés par applis/services). |
-M lsassy / handlekatz / nanodump / procdump | Administrateur machine | Extraction d’identifiants en mémoire (lsass.exe). |
Par exemple, voici comment extraire les secrets gérés par DPAPI sur une machine :
nxc smb 192.168.56.11 -u robb.stark -p 'sexywolfy' --dpapi
NetExec propose une multitude de modules supplémentaires (eventlog_creds
, iis
, powershell_history
, wifi
, winscp
, etc.) qui permettent d’extraire des identifiants ou secrets dans divers contextes.
Le protocole LDAP permet quant à lui d’extraire des informations sensibles comme :
- les mots de passe locaux gérés par LAPS (Local Administrator Password Solution) via l’option
-M LAPS
- les comptes de service managés gMSA (Group Managed Service Accounts) via
--gmsa
.
Conclusion
L’outil NetExec s’impose comme une solution incontournable pour l’audit de réseaux internes, en particulier dans des environnements Active Directory. Sa force réside dans sa capacité à centraliser, au sein d’un seul programme, des fonctionnalités qui nécessiteraient habituellement plusieurs outils distincts.
En boîte noire, NetExec permet rapidement d’obtenir une première cartographie du réseau, d’identifier des services exposés et de tester des techniques efficaces comme le Password Spraying.
En boîte grise, il déploie toute sa puissance : interrogation de l’annuaire LDAP, exploration des partages de fichiers, interaction avec MSSQL, exécution de commandes à distance, et surtout, post-exploitation par l’extraction de secrets.
Pour un auditeur, NetExec représente donc un gain de temps et une meilleure lisibilité des résultats, tout en restant flexible et extensible grâce à ses nombreux modules.
Auteur : Benoit PHILIPPE – Pentester @Vaadata