enum4linux-ng
Réécriture moderne d'enum4linux. Énumération SMB/Windows plus fiable avec sortie JSON/YAML, meilleure gestion des erreurs, et implémentation Python3. Modern rewrite of enum4linux. More reliable SMB/Windows enumeration with JSON/YAML output, better error handling, and Python3 implementation.
↗ https://github.com/cddmp/enum4linux-ngOverview
enum4linux-ng is a complete Python3 rewrite of the original enum4linux tool. It fixes many reliability issues, adds JSON/YAML output for automation, and improves handling of modern Windows targets. Enumerates users, groups, shares, password policies, OS info, and printer info via SMB/RPC.
Basic Usage
Full enumeration (null session)
enum4linux-ng 10.10.10.1
With credentials
enum4linux-ng -u 'user' -p 'password' 10.10.10.1
JSON output
enum4linux-ng -oJ output.json 10.10.10.1
YAML output
enum4linux-ng -oY output.yaml 10.10.10.1
Verbose
enum4linux-ng -v 10.10.10.1
Quiet (minimal output)
enum4linux-ng -q 10.10.10.1
Specific Enumeration
Users only
enum4linux-ng -U 10.10.10.1
Groups only
enum4linux-ng -G 10.10.10.1
Shares only
enum4linux-ng -S 10.10.10.1
Password policy
enum4linux-ng -P 10.10.10.1
OS information
enum4linux-ng -O 10.10.10.1
Printer info
enum4linux-ng -I 10.10.10.1
NetBIOS
enum4linux-ng -n 10.10.10.1
Authentication Options
Kerberos (domain-joined scenario)
enum4linux-ng -u 'user' -p 'password' -d domain.local -k 10.10.10.1
Pass-the-hash (NTLM)
enum4linux-ng -u 'user' -H NTLM_HASH 10.10.10.1
Null session explicitly
enum4linux-ng -N 10.10.10.1
Output Processing
# Parse JSON output
cat output.json | python3 -c "
import json, sys
data = json.load(sys.stdin)
# Show users
for user in data.get('users', []):
print(user)
"
Extract user list
cat output.json | jq '.users[].username' -r
Extract shares
cat output.json | jq '.shares[].name' -r
Key Differences from enum4linux
| Feature | enum4linux | enum4linux-ng |
|---|---|---|
| Language | Bash/Perl | Python3 |
| JSON output | No | Yes |
| YAML output | No | Yes |
| Error handling | Poor | Improved |
| RID cycling | Basic | Enhanced |
| Kerberos | No | Yes |
| Python3 | No | Yes |
Tips
- Use
-oJfor JSON output when automating or feeding into other tools - enum4linux-ng handles modern Windows targets (2019, 2022) much better than the original
- Null session access is less common on modern Windows — always try authenticated when possible
- Follow up share enumeration with
smbmaporsmbclientfor content browsing
Help / Man page
enum4linux-ng [options] host
Authentication:
-u USER Username
-p PASS Password
-H HASH NTLM hash
-k Use Kerberos auth
-d DOMAIN Domain name
-N Null session
Enumeration:
-A All (default if no flags)
-U Users
-G Groups
-S Shares
-P Password policy
-O OS info
-I Printer info
-n NetBIOS names
-R [range] RID cycling (e.g. 500-1000)
Output:
-oJ FILE JSON output
-oY FILE YAML output
-v Verbose
-q Quiet
--timeout N Timeout in seconds
Vue d’ensemble
enum4linux-ng est une réécriture complète en Python3 de l’outil original enum4linux. Elle corrige de nombreux problèmes de fiabilité, ajoute une sortie JSON/YAML pour l’automatisation, et améliore la gestion des cibles Windows modernes. Énumère les utilisateurs, groupes, partages, politiques de mot de passe, informations OS, et informations d’imprimantes via SMB/RPC.
Utilisation de base
# Énumération complète (session nulle)
enum4linux-ng 10.10.10.1
# Avec des identifiants
enum4linux-ng -u 'user' -p 'password' 10.10.10.1
# Sortie JSON
enum4linux-ng -oJ output.json 10.10.10.1
# Sortie YAML
enum4linux-ng -oY output.yaml 10.10.10.1
# Verbeux
enum4linux-ng -v 10.10.10.1
# Silencieux (sortie minimale)
enum4linux-ng -q 10.10.10.1
Énumération spécifique
# Utilisateurs uniquement
enum4linux-ng -U 10.10.10.1
# Groupes uniquement
enum4linux-ng -G 10.10.10.1
# Partages uniquement
enum4linux-ng -S 10.10.10.1
# Politique de mot de passe
enum4linux-ng -P 10.10.10.1
# Informations OS
enum4linux-ng -O 10.10.10.1
# Informations d'imprimante
enum4linux-ng -I 10.10.10.1
# NetBIOS
enum4linux-ng -n 10.10.10.1
Options d’authentification
# Kerberos (scénario intégré au domaine)
enum4linux-ng -u 'user' -p 'password' -d domain.local -k 10.10.10.1
# Pass-the-hash (NTLM)
enum4linux-ng -u 'user' -H NTLM_HASH 10.10.10.1
# Session nulle explicite
enum4linux-ng -N 10.10.10.1
Traitement de la sortie
# Parser la sortie JSON
cat output.json | python3 -c "
import json, sys
data = json.load(sys.stdin)
# Afficher les utilisateurs
for user in data.get('users', []):
print(user)
"
Extraire la liste des utilisateurs
cat output.json | jq '.users[].username' -r
Extraire les partages
cat output.json | jq '.shares[].name' -r
Différences clés avec enum4linux
| Fonctionnalité | enum4linux | enum4linux-ng |
|---|---|---|
| Langage | Bash/Perl | Python3 |
| Sortie JSON | Non | Oui |
| Sortie YAML | Non | Oui |
| Gestion des erreurs | Faible | Améliorée |
| RID cycling | Basique | Amélioré |
| Kerberos | Non | Oui |
| Python3 | Non | Oui |
Conseils
- Utilisez
-oJpour la sortie JSON lors de l’automatisation ou de l’intégration avec d’autres outils - enum4linux-ng gère bien mieux les cibles Windows modernes (2019, 2022) que l’original
- L’accès en session nulle est moins courant sur les Windows modernes : essayez toujours en mode authentifié quand c’est possible
- Poursuivez l’énumération de partages avec
smbmapousmbclientpour parcourir le contenu
Aide / Page de manuel
enum4linux-ng [options] host
Authentication:
-u USER Username
-p PASS Password
-H HASH NTLM hash
-k Use Kerberos auth
-d DOMAIN Domain name
-N Null session
Enumeration:
-A All (default if no flags)
-U Users
-G Groups
-S Shares
-P Password policy
-O OS info
-I Printer info
-n NetBIOS names
-R [range] RID cycling (e.g. 500-1000)
Output:
-oJ FILE JSON output
-oY FILE YAML output
-v Verbose
-q Quiet
--timeout N Timeout in seconds