Aller au contenu

NetExec (nxc) : que prouvent réellement les résultats ?

NetExec (successeur direct et activement maintenu de CrackMapExec) est un outil d’automatisation d’évaluation et de mouvement latéral en réseau Active Directory. Il permet de scanner rapidement des sous-réseaux entiers à travers de multiples protocoles (SMB, WMI, WinRM, LDAP, MSSQL, RDP, SSH, FTP).

Lorsqu’un analyste DFIR examine les artefacts d’une machine d’attaque retrouvée sur un réseau ou consulte les rapports d’un test d’intrusion, il est confronté à des sorties standardisées de NetExec telles que :

  • [-] SMB 10.0.1.15:445 STATUS_LOGON_FAILURE
  • [+] SMB 10.0.1.20:445 CORP\alice:Password123
  • [+] SMB 10.0.1.25:445 CORP\bob:Password123 (Pwn3d!)

NetExec est l’outil de prédilection de la majorité des affiliés ransomwares et des red teams :

  • Confusion entre capacité théorique et action réelle : voir une ligne (Pwn3d!) dans les logs d’une machine d’attaque amène souvent les équipes sécurité à déclarer prématurément que la machine cible a été « piratée ». En DFIR, il faut impérativement chercher la trace d’une action effective (création de service, exécution de binaire, dumping SAM/LSA).
  • Distinction des protocoles utilisés : netExec peut tester des identifiants en SMB (--shares), en WMI (-x whoami), en WinRM (-X), ou en LDAP. Chaque protocole laisse des traces d’audit radicalement différentes.
  • Comportement par défaut par IP : netExec contacte quasi-exclusivement les cibles par leur adresse IP, forçant ainsi l’usage de NTLM au lieu de Kerberos. Cela génère des cascades d’échecs (Event 4625) et de succès (Event 4624 Type 3) caractérisés par des noms de machines d’origine spécifiques.

Sur le protocole SMB, NetExec effectue la séquence exacte suivante :

  1. Négociation SMB et envoi de la requête SESSION_SETUP avec les identifiants fournis.
  2. Si le mot de passe est faux : affiche [-] STATUS_LOGON_FAILURE.
  3. Si le mot de passe est juste : affiche [+].
  4. Pour tester le statut administrateur (Pwn3d!) :
    • NetExec tente d’ouvrir une connexion en arborescence (TREE_CONNECT) sur le partage administratif caché \\TARGET\ADMIN$ ou \\TARGET\C$.
    • Si la cible répond STATUS_ACCESS_DENIED, l’utilisateur est un utilisateur standard valide ([+]).
    • Si la cible autorise l’accès au partage administratif (Code STATUS_SUCCESS), NetExec en déduit que l’utilisateur est administrateur local et ajoute la mention (Pwn3d!).
    • Aucun code malveillant n’a été injecté. Aucun processus n’a été créé. Seule la connexion au partage ADMIN$ a été validée.
NetExec (Attaquant) Serveur Cible
│ │
│ 1. SMB Negotiate & Session Setup │
├──────────────────────────────────────────►│
│◄──────────────────────────────────────────┤ 2. SUCCESS (Event 4624 Type 3)
│ │
│ 3. Tree Connect: \\TARGET\ADMIN$ │
├──────────────────────────────────────────►│
│◄──────────────────────────────────────────┤ 4. STATUS_SUCCESS (Event 5140)
│ │
▼ ▼
Affiche: (Pwn3d!) AUCUN processus créé !

  • Distinguer un spray de mot de passe d’une exécution : netExec sans arguments d’exécution (-x, -X, --sam, --lsa) ne fait que de la vérification de credentials en lecture seule.
  • Identifier la présence d’outils NetExec par la signature réseau : netExec utilise par défaut des chaînes et des noms d’arbres SMB standardisés dérivés de la bibliothèque Impacket (*SMBSERVER, connexions répétitives à IPC$, ADMIN$).
  • Identifier l’exécution réelle de commandes : si l’attaquant ajoute -x "commande", NetExec déploie wmiexec ou smbexec, créant des artefacts concrets (services distants temporaires, fichiers .bat sous C:\Windows\Temp).

  • Conclure à une exécution de malware sur la seule base d’un affichage (Pwn3d!) : l’affichage (Pwn3d!) ne garantit en rien qu’une charge utile ait été déposée.
  • Utiliser Kerberos avec NetExec si une adresse IP est fournie en argument cible : la saisie d’un sous-réseau 192.168.1.0/24 contraint NetExec à employer NTLM, sauf si le flag -k (Kerberos) est explicitement utilisé avec des noms d’hôtes FQDN.
  • **Accéder à ADMINAccéder à avec un compte local si LocalAccountTokenFilterPolicy = 0(sauf RID 500) :** les comptes locaux subissent le filtrage UAC distant et n'obtiennent pas(Pwn3d!)`, même si leur mot de passe est correct.

Sortie / Indicateur NetExecCe que cela prouve techniquementCe que cela NE prouve PAS
[-] STATUS_LOGON_FAILURELe mot de passe testé est invalide pour ce compte.Ne prouve pas que le compte n’existe pas.
[+] User:PassLe compte existe et le mot de passe est valide.Ne prouve pas que le compte a accès aux données de la machine.
[+] User:Pass (Pwn3d!)Le compte peut ouvrir une session SMB sur ADMIN$ ou C$.Ne prouve pas que du code OU un ransomware a été exécuté.
[+] SMB ... Signing:FalseLe serveur n’impose pas la signature SMB (vulnérable au relais).Ne prouve pas qu’une attaque par relais a eu lieu.

Dans une enquête post-intrusion, les analystes retrouvent un fichier texte output_nxc.txt sur une machine d’attaque :

SMB 192.168.10.50 445 SRV-APP [+] CORP\helpdesk:Summer2026! (Pwn3d!)

Le management s’inquiète immédiatement d’une compromission complète du serveur applicatif SRV-APP.

L’équipe DFIR analyse le serveur SRV-APP aux horodatages correspondants :

  1. Event ID 4624 (logon type 3) : authentification réussie pour CORP\helpdesk à 14:02:11 via NtLmSsp.
  2. Event ID 5140 (network share object was accessed) : accès au partage ADMIN$ à 14:02:12 avec succès.
  3. Event ID 7045 (new service installed) : Aucun service créé.
  4. Event ID 4688 / Sysmon 1 (process creation) : Aucun processus anormal créé.
  5. Dossier C:\Windows\Temp : aucun fichier exécutable ou script temporaire déposé.
  6. Conclusion DFIR : l’attaquant a validé que le compte helpdesk était administrateur local, mais n’a exécuté aucune action offensive sur cette machine à cet instant.

  1. Journaux de sécurité Windows sur la cible :
    • Event ID 4624 (type 3) : connexion réseau SMB (LogonProcessName: NtLmSsp), Workstation Name contenant le nom NetBIOS du poste de l’attaquant.
    • Event ID 5140 : accès au partage ShareName: \\*\ADMIN$ ou \\*\IPC$.
    • Event ID 5145 : vérification détaillée des droits d’accès sur le partage avec un AccessMask élevé (0x12019F).
  2. Artefacts en cas d’exécution réelle de commande (-x / wmiexec / smbexec) :
    • Smbexec : création d’un service temporaire (Event ID 7045) exécutant cmd.exe /Q /c ... > \\127.0.0.1\C$\__output 2>&1.
    • Wmiexec : exécution de commandes via WmiPrvSE.exe engendrant des processus fils cmd.exe ou powershell.exe avec redirection de sortie dans C:\Windows\Temp.

  1. Rechercher les accès consécutifs à IPCRechercher les accès consécutifs à puis ADMINRechercher les accès consécutifs à IPCRechercher les accès consécutifs à IPCRechercher les accès consécutifs à puis puisADMINRechercher les accès consécutifs à puis : Corréler les Event IDs 4624 et 5140 intervenant dans la même seconde sur un grand nombre d’hôtes (signature du scan NetExec).
  2. Vérifier l’absence d’event ID 7045 : Vérifier systématiquement si une connexion d’administrateur a été suivie par l’installation d’un service malveillant.
  3. Inspecter les connexions SMB anonymes : NetExec commence toujours par interroger la cible sans identifiants pour extraire le nom d’hôte, le domaine et la version de Windows (session anonyme sur IPC$).

  • Chainsaw / hayabusa : Règles Sigma détectant les signatures de scan NetExec et d’exécution WMI/SMB :
    • net_connection_win_impacket_lateral_movement.yml
    • win_system_service_install_smbexec.yml
  • PowerShell / Get-WinEvent :
    Fenêtre de terminal
    # Rechercher les accès suspects aux partages administratifs
    Get-WinEvent -FilterHashtable @{LogName='Security'; ID=5140} |
    Where-Object { $_.Properties[6].Value -like '*ADMIN$' -or $_.Properties[6].Value -like '*C$' } |
    Select-Object TimeCreated, @{N='User';E={$_.Properties[1].Value}}, @{N='Share';E={$_.Properties[6].Value}}, @{N='IP';E={$_.Properties[7].Value}}

  • (Pwn3d!) signifie uniquement que l’accès au partage ADMIN$ ou C$ a été accordé.
  • NetExec sans options d’exécution ne lance aucun processus sur la cible.
  • Les scans NetExec par adresse IP utilisent NTLM et génèrent une télémétrie Event 4624 Type 3 très caractéristique.
  • Pour affirmer qu’une machine a été compromise, l’enquêteur doit prouver une exécution effective (Event 7045, Event 4688, fichiers créés).