TDCTF Academy Logo TDCTF ACADEMY

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.

PADA HALAMAN INI