enum4linux

Outil d'énumération SMB/Windows. Extrait les utilisateurs, groupes, partages, politiques et informations OS depuis des hôtes Windows et Samba via des sessions nulles et RPC. SMB/Windows enumeration tool. Extracts users, groups, shares, policies, and OS info from Windows and Samba hosts via null sessions and RPC.

↗ https://github.com/CiscoCXSecurity/enum4linux

Overview

enum4linux automates Windows/Samba information gathering via SMB and MS-RPC. It wraps tools like smbclient, rpcclient, and net to enumerate users, groups, shares, password policies, and OS info — often via unauthenticated null sessions.

enum4linux-ng is the modern rewrite (Python, more reliable, JSON output).

Basic Usage

Full enumeration (all checks)

enum4linux -a 10.10.10.1

With credentials

enum4linux -u 'user' -p 'password' -a 10.10.10.1
enum4linux -U 10.10.10.1    # Users
enum4linux -S 10.10.10.1    # Shares
enum4linux -G 10.10.10.1    # Groups
enum4linux -P 10.10.10.1    # Password policy
enum4linux -o 10.10.10.1    # OS information
enum4linux -n 10.10.10.1    # NetBIOS names

Verbose

enum4linux -v -a 10.10.10.1

enum4linux-ng (Modern Version)

Full enumeration

enum4linux-ng 10.10.10.1

With credentials

enum4linux-ng -u 'user' -p 'password' 10.10.10.1

Output as JSON

enum4linux-ng -oJ output.json 10.10.10.1

Output as YAML

enum4linux-ng -oY output.yaml 10.10.10.1

Verbose

enum4linux-ng -v 10.10.10.1

Without credentials (null session)

enum4linux-ng -N 10.10.10.1

What enum4linux Discovers

  • Users: via rpcclient querydispinfo and RID cycling
  • Groups: local and domain groups
  • Shares: accessible SMB shares
  • Password policy: lockout threshold, complexity, min length
  • OS info: Windows version, domain, workgroup
  • NetBIOS names: machine name, domain, MAC address
  • RID cycling: enumerate users by iterating RIDs (500, 501, 1000+)

Tips

  • Null session access (unauthenticated) depends on target configuration — less common on modern Windows
  • If null sessions fail, provide credentials with -u/-p
  • For share enumeration with more control, follow up with smbclient or smbmap
  • enum4linux-ng handles timeouts and errors much better than the original
Help / Man page
enum4linux [options] IP

-u user     Username (default: "")
-p pass     Password (default: "")
-U          Get user list
-M          Get machine list
-N          Get namelist dump
-S          Get share list
-P          Get password policy
-G          Get group and member list
-d          Be detailed, applies to -U and -S
-o          Get OS information
-i          Get printer information
-a          Do all simple enumeration (-U -S -G -P -r -o -n -i)
-v          Verbose
-r          Enumerate via RID cycling (500-550,1000-1050)
-R range    Enumerate users via RID cycling in given range
-K N        Keep searching RIDs until N sequential failures
-l          Use ldap for getting lists
-s file     Brute-force guessing for share names from a file
-k user     Kerberos user(s) for brute-force
-w workgrp  Specify workgroup manually
-n          Do an nmblookup (similar to nbtstat)

Vue d’ensemble

enum4linux automatise la collecte d’informations Windows/Samba via SMB et MS-RPC. Il encapsule des outils comme smbclient, rpcclient, et net pour énumérer les utilisateurs, groupes, partages, politiques de mot de passe, et informations OS, souvent via des sessions nulles non authentifiées.

enum4linux-ng est la réécriture moderne (Python, plus fiable, sortie JSON).

Utilisation de base

# Énumération complète (toutes les vérifications)
enum4linux -a 10.10.10.1

# Avec des identifiants
enum4linux -u 'user' -p 'password' -a 10.10.10.1

enum4linux -U 10.10.10.1    # Utilisateurs
enum4linux -S 10.10.10.1    # Partages
enum4linux -G 10.10.10.1    # Groupes
enum4linux -P 10.10.10.1    # Politique de mot de passe
enum4linux -o 10.10.10.1    # Informations OS
enum4linux -n 10.10.10.1    # Noms NetBIOS

# Verbeux
enum4linux -v -a 10.10.10.1

enum4linux-ng (version moderne)

# Énumération complète
enum4linux-ng 10.10.10.1

# Avec des identifiants
enum4linux-ng -u 'user' -p 'password' 10.10.10.1

# Sortie en JSON
enum4linux-ng -oJ output.json 10.10.10.1

# Sortie en YAML
enum4linux-ng -oY output.yaml 10.10.10.1

# Verbeux
enum4linux-ng -v 10.10.10.1

# Sans identifiants (session nulle)
enum4linux-ng -N 10.10.10.1

Ce qu’enum4linux découvre

  • Utilisateurs : via rpcclient querydispinfo et le RID cycling
  • Groupes : groupes locaux et de domaine
  • Partages : partages SMB accessibles
  • Politique de mot de passe : seuil de verrouillage, complexité, longueur minimale
  • Informations OS : version Windows, domaine, workgroup
  • Noms NetBIOS : nom de machine, domaine, adresse MAC
  • RID cycling : énumération des utilisateurs en itérant sur les RID (500, 501, 1000+)

Conseils

  • L’accès en session nulle (non authentifié) dépend de la configuration de la cible : moins courant sur les versions modernes de Windows
  • Si les sessions nulles échouent, fournissez des identifiants avec -u/-p
  • Pour une énumération de partages avec plus de contrôle, poursuivez avec smbclient ou smbmap
  • enum4linux-ng gère bien mieux les timeouts et les erreurs que l’original
Aide / Page de manuel
enum4linux [options] IP

-u user     Username (default: "")
-p pass     Password (default: "")
-U          Get user list
-M          Get machine list
-N          Get namelist dump
-S          Get share list
-P          Get password policy
-G          Get group and member list
-d          Be detailed, applies to -U and -S
-o          Get OS information
-i          Get printer information
-a          Do all simple enumeration (-U -S -G -P -r -o -n -i)
-v          Verbose
-r          Enumerate via RID cycling (500-550,1000-1050)
-R range    Enumerate users via RID cycling in given range
-K N        Keep searching RIDs until N sequential failures
-l          Use ldap for getting lists
-s file     Brute-force guessing for share names from a file
-k user     Kerberos user(s) for brute-force
-w workgrp  Specify workgroup manually
-n          Do an nmblookup (similar to nbtstat)