8.1.3 Enumeration
Definisi
Enumeration adalah fase active reconnaissance di mana pentester secara langsung berinteraksi dengan sistem target untuk menggali informasi lebih detail. Berbeda dengan footprinting dan OSINT yang bersifat passive (tidak menyentuh sistem target), enumeration mengirimkan paket data ke target dan menganalisis responsnya. Karena itu, enumeration meninggalkan jejak di log sistem target dan berpotensi memicu alarm keamanan (IDS/IPS).
Jenis informasi yang didapat dari enumeration:
- Nama pengguna (usernames) dan grup lokal
- Resource network (share folder, printer)
- Service dan versi yang berjalan
- Konfigurasi sistem (OS, patch level, domain)
- Protokol autentikasi yang digunakan
1. SMB Enumeration (Server Message Block)
SMB (Server Message Block) adalah protokol file sharing yang banyak digunakan di jaringan Windows. SMB juga diimplementasikan di Linux melalui Samba. SMB berjalan di port 139 (NetBIOS Session) dan 445 (SMB over TCP).
smbclient
Tool CLI untuk mengakses share folder SMB.
# Daftar share yang tersedia tanpa login
smbclient -L //192.168.1.100 -N
# Contoh output
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
IPC$ IPC Remote IPC
Documents Disk Shared documents
Data Disk Company data
# Koneksi ke share folder tertentu
smbclient //192.168.1.100/Documents -N
# Di dalam shell SMB:
smb: \> ls
smb: \> get file_rahasia.xlsx
smb: \> put lokal.txt
smb: \> mkdir test
enum4linux
Tool khusus untuk enumerasi Windows/Samba dari Linux - mengumpulkan user, grup, share, password policy, dan OS information.
# Enumerasi dasar
enum4linux -a 192.168.1.100
# Enumerasi user saja
enum4linux -U 192.168.1.100
# Enumerasi share saja
enum4linux -S 192.168.1.100
# Enumerasi password policy
enum4linux -P 192.168.1.100
# Null session check
enum4linux -s 192.168.1.100
Contoh output enum4linux user list:
[+] Enumerating users using SID S-1-5-21-1275210071-1715567821-725345543
and logon username='', password=''
S-1-5-21-1275210071-1715567821-725345543-500 *unknown*\*unknown* (8)
S-1-5-21-1275210071-1715567821-725345543-501 WIN-ABC\Guest (Local User)
S-1-5-21-1275210071-1715567821-725345543-502 WIN-ABC\DefaultAccount (Local User)
S-1-5-21-1275210071-1715567821-725345543-1000 WIN-ABC\Administrator (Local User)
S-1-5-21-1275210071-1715567821-725345543-1001 WIN-ABC\john.doe (Local User)
S-1-5-21-1275210071-1715567821-725345543-1002 WIN-ABC\jane.admin (Local User)
Smbmap
Tool untuk mengecek akses setiap share folder dengan berbagai kredensial.
# Null session
smbmap -H 192.168.1.100
# Dengan kredensial
smbmap -H 192.168.1.100 -u administrator -p password123
# Cari file dengan ekstensi tertentu
smbmap -H 192.168.1.100 -u administrator -p pass123 -A '.xlsx' -R Documents
# Rekursif
smbmap -H 192.168.1.100 -u admin -p pass -r
CrackMapExec (CME)
Tool pentest network yang sangat powerfull - bukan hanya SMB tapi juga LDAP, SSH, WinRM, MSSQL.
# Null session check
crackmapexec smb 192.168.1.100 -u '' -p ''
# Enumerasi share
crackmapexec smb 192.168.1.100 -u 'guest' -p '' --shares
# Dapatkan OS version
crackmapexec smb 192.168.1.100 -u 'admin' -p 'pass' --os
# Enumerasi user via SAM
crackmapexec smb 192.168.1.100 -u 'admin' -p 'pass' --sam
# Dapatkan domain groups
crackmapexec smb 192.168.1.100 -u 'admin' -p 'pass' --groups
# Check credential validity
crackmapexec smb 192.168.1.100 -u users.txt -p passwords.txt
Impacket - smbclient.py
Impacket adalah collection script Python untuk Windows protocol. Salah satu modulnya adalah smbclient - lebih fleksibel dari smbclient bawaan.
# Koneksi SMB shell
impacket-smbclient administrator:[email protected]
# Mode null session
impacket-smbclient -no-pass '':''@192.168.1.100
Manual Null Session Check (Windows)
# Net use
net use \\192.168.1.100\IPC$ '' /u:''
Null session adalah koneksi SMB tanpa kredensial. Jika berhasil, sangat berbahaya karena attacker bisa membaca user list, share folder, dan password policy tanpa autentikasi. Null session sudah tidak berfungsi di Windows modern, tapi masih sering ditemukan di legacy systems.
2. SNMP Enumeration (Simple Network Management Protocol)
SNMP digunakan untuk memonitor perangkat jaringan - router, switch, server, printer. Versi 1 dan 2c menggunakan community string sebagai "password", bukan autentikasi sesungguhnya. Versi 3 sudah mendukung autentikasi dan enkripsi.
Default community strings:
- Public - read-only (default)
- Private - read-write (sangat berbahaya jika dapat diakses)
SNMP berjalan di port 161 (UDP).
snmpwalk
Tool utama untuk "jalan-jalan" di MIB (Management Information Base) SNMP.
# Query seluruh tree (biasanya butuh community string di OID 1.3.6.1.2.1)
snmpwalk -v 2c -c public 192.168.1.100
# Versi 1 (older devices)
snmpwalk -v 1 -c public 192.168.1.100
# Target OID spesifik - sistem info
snmpwalk -v 2c -c public 192.168.1.100 1.3.6.1.2.1.1
# Target OID - network interfaces
snmpwalk -v 2c -c public 192.168.1.100 1.3.6.1.2.1.2
# Target OID - running processes
snmpwalk -v 2c -c public 192.168.1.100 1.3.6.1.2.1.25.4.2.1.2
# Target OID - installed software
snmpwalk -v 2c -c public 192.168.1.100 1.3.6.1.2.1.25.6.3.1.2
# Target OID - listening TCP ports
snmpwalk -v 2c -c public 192.168.1.100 1.3.6.1.2.1.6.13.1.3
snmpcheck
Tool yang mengotomatiskan enumerasi SNMP dengan satu perintah.
snmpcheck -t 192.168.1.100 -c public
Output mencakup:
- Hostname, OS, uptime
- Interface network (IP, MAC, status)
- Routing table
- Proses yang berjalan
- Software terinstal
- User account dan grup lokal
- Port TCP/UDP yang listening
- Disk dan storage info
snmpenum
Script Perl untuk enumerasi SNMP.
snmpenum 192.168.1.100 public /path/to/wordlist
Onesixtyone
Tool untuk bruteforce community string SNMP dengan wordlist.
# Bruteforce community string
onesixtyone -c /usr/share/wordlists/snmp-strings.txt -i ip_list.txt
MIB Tree Penting
| OID | Informasi |
|---|---|
| 1.3.6.1.2.1.1 | System (hostname, uptime, OS) |
| 1.3.6.1.2.1.2 | Interfaces (network cards, IP, MAC) |
| 1.3.6.1.2.1.4 | IP statistics |
| 1.3.6.1.2.1.5 | ICMP statistics |
| 1.3.6.1.2.1.6 | TCP connections |
| 1.3.6.1.2.1.25.1 | System processes |
| 1.3.6.1.2.1.25.2.1 | Storage |
| 1.3.6.1.2.1.25.4 | Running processes |
| 1.3.6.1.2.1.25.6 | Installed software |
3. LDAP Enumeration (Lightweight Directory Access Protocol)
LDAP adalah protokol untuk mengakses dan memelihara directory service - biasanya Microsoft Active Directory. LDAP berjalan di port 389 (LDAP) dan 636 (LDAPS - LDAP over SSL).
ldapsearch
Tool utama untuk query LDAP.
# Anonymous bind (tanpa kredensial)
ldapsearch -x -H ldap://192.168.1.100 -b "dc=example,dc=com"
# Dengan kredensial
ldapsearch -x -H ldap://192.168.1.100 \
-D "CN=Administrator,CN=Users,DC=example,DC=com" \
-w "password123" \
-b "DC=example,DC=com"
# Dapatkan naming contexts
ldapsearch -x -H ldap://192.168.1.100 -b "" -s base
# Dapatkan semua user
ldapsearch -x -H ldap://192.168.1.100 \
-b "DC=example,DC=com" \
"(objectClass=user)" \
cn mail samaccountname
# Dapatkan semua grup
ldapsearch -x -H ldap://192.168.1.100 \
-b "DC=example,DC=com" \
"(objectClass=group)"
Windapsearch
Python script yang lebih sederhana untuk enumerasi AD via LDAP.
# Enumerasi user
python3 windapsearch.py --dc-ip 192.168.1.100 -u "" -U
# Enumerasi admin
python3 windapsearch.py --dc-ip 192.168.1.100 -u "" --da
# Enumerasi komputer
python3 windapsearch.py --dc-ip 192.168.1.100 -u "" -C
# Enumerasi grup
python3 windapsearch.py --dc-ip 192.168.1.100 -u "" -G
LDAP Domain Dump (ldapdomaindump)
Tool untuk dumping seluruh informasi AD via LDAP.
ldapdomaindump ldap://192.168.1.100 -u "EXAMPLE\\Administrator" -p "password123"
Filter LDAP Berguna
# Semua user
"(objectClass=user)"
# Semua grup
"(objectClass=group)"
# Domain admin
"(memberOf=CN=Domain Admins,CN=Users,DC=example,DC=com)"
# Service account
"(servicePrincipalName=*)"
# User yang tidak pernah login
"(lastLogonTimestamp=0)"
# Computer
"(objectClass=computer)"
# User dengan deskripsi (sering berisi password)
"(&(objectClass=user)(description=*))"
4. NetBIOS Enumeration
NetBIOS (Network Basic Input/Output System) adalah protokol legacy Windows untuk name resolution dan session management. Masih aktif di banyak jaringan legacy. Berjalan di port 137 (Name Service), 138 (Datagram Service), 139 (Session Service).
nbtscan
Tool untuk scan NetBIOS name.
# Scan subnet
nbtscan 192.168.1.0/24
# Output kustom
nbtscan -v -s : 192.168.1.0/24
Contoh output:
192.168.1.100 WIN-SERVER<00> UNIQUE Workstation Service
192.168.1.100 WIN-SERVER<20> UNIQUE File Server Service
192.168.1.100 WORKGROUP<00> GROUP Domain/Workgroup Name
192.168.1.101 DESKTOP-01<00> UNIQUE Workstation Service
NetBIOS Suffix Codes:
| Suffix | Tipe | Keterangan |
|---|---|---|
<00> |
Unique | Workstation Service (hostname) |
<00> |
Group | Domain/Workgroup name |
<03> |
Unique | Messenger Service (username) |
<20> |
Unique | File Server Service |
<1B> |
Unique | Domain Master Browser |
<1C> |
Group | Domain Controller |
<1D> |
Unique | Master Browser |
nbtstat (Windows)
nbtstat -A 192.168.1.100
5. DNS Zone Transfer
DNS Zone Transfer (AXFR) adalah mekanisme replikasi DNS antar name server. Jika misconfigured, siapa pun bisa melakukan AXFR dan mendapatkan seluruh daftar host dalam satu domain - semua subdomain, IP, dan service.
dig AXFR
# Coba zone transfer
dig axfr @ns1.example.com example.com
# Jika berhasil, output mencakup semua record:
; <<>> DiG 9.18 <<>> axfr @ns1.example.com example.com
example.com. 3600 IN SOA ns1.example.com. admin.example.com.
example.com. 3600 IN NS ns1.example.com.
example.com. 3600 IN NS ns2.example.com.
example.com. 3600 IN A 93.184.216.34
www.example.com. 3600 IN A 93.184.216.34
mail.example.com. 3600 IN A 93.184.216.35
vpn.example.com. 3600 IN A 10.0.0.1
dev.example.com. 3600 IN A 10.0.0.2
admin.example.com. 3600 IN A 10.0.0.3
Fierce
Tool DNS yang mencoba zone transfer dan fallback ke brute force jika gagal.
fierce --domain example.com --subdomains subdomains.txt
dnsrecon
Tool DNS enumeration yang komprehensif.
# Zone transfer attempt
dnsrecon -d example.com -t axfr
# Brute force subdomains
dnsrecon -d example.com -D subdomains.txt -t brt
# SRV record discovery
dnsrecon -d example.com -t srv
nslookup (Manual Zone Transfer)
nslookup
> server ns1.example.com
> ls -d example.com
6. Tool Enumeration Tambahan
Nmap NSE (Nmap Scripting Engine)
Banyak script NSE untuk enumeration.
# SMB enumeration
nmap -p 445 --script smb-enum-shares 192.168.1.100
nmap -p 445 --script smb-enum-users 192.168.1.100
nmap -p 445 --script smb-os-discovery 192.168.1.100
# SNMP enumeration
nmap -p 161 --script snmp-info 192.168.1.100
nmap -p 161 --script snmp-brute 192.168.1.100
# LDAP enumeration
nmap -p 389 --script ldap-rootdse 192.168.1.100
nmap -p 389 --script ldap-search 192.168.1.100
RPC Client
# RPC null session
rpcclient -U "" -N 192.168.1.100
# Di dalam shell RPC:
rpcclient $> enumdomusers
rpcclient $> enumdomgroups
rpcclient $> queryuser john.doe
rpcclient $> enumalsgroups builtin
rpcclient $> getdompwinfo
enum4linux-ng
Versi baru enum4linux yang ditulis ulang di Python dengan output lebih baik.
enum4linux-ng -A 192.168.1.100
Contoh Workflow Enumeration Lengkap
Target: 192.168.1.100 (Windows Server)
1. PORT SCAN -> Identifikasi port terbuka
nmap -sV -p 139,445,389,161,137 192.168.1.100
2. SMB -> Cek null session, share folder, user list
smbclient -L //192.168.1.100 -N
enum4linux -a 192.168.1.100
3. SNMP -> Cek community string public
snmpwalk -v 2c -c public 192.168.1.100
4. LDAP -> Cek anonymous bind
ldapsearch -x -H ldap://192.168.1.100 -b "dc=example,dc=com"
5. NetBIOS -> Dapatkan hostname dan service
nbtscan 192.168.1.100
6. DNS Zone Transfer -> Coba AXFR
dig axfr @192.168.1.100 example.com
7. SUMMARIZE -> Kumpulkan semua temuan
Users: Administrator, john.doe, jane.admin
Shares: Documents, Data
SNMP: Community string "public" aktif
LDAP: Anonymous bind memungkinkan
Kesimpulan
Enumeration adalah jembatan antara reconnaissance dan exploitation. Informasi yang dikumpulkan - username, service version, konfigurasi, share folder - adalah amunisi untuk fase serangan berikutnya. Risiko deteksi lebih tinggi dibanding footprinting karena kita mengirim paket langsung ke target. Selalu gunakan scope yang sudah disepakati dalam Rules of Engagement. Jangan pernah melakukan enumeration terhadap sistem tanpa izin tertulis - aktivitas ini ilegal jika tidak memiliki otorisasi.