CEH Module 4: Kỹ thuật Enumeration và Liệt kê Dịch vụ Hệ thống

Hướng dẫn chuyên sâu về Enumeration theo chuẩn CEH Module 4: khai thác Null Session trên Windows, thăm dò cây SNMP MIB-2, kỹ thuật RID Cycling trong Active Directory và giải pháp phòng thủ toàn diện.
Nếu hai giai đoạn đầu tiên là Footprinting và Scanning giúp chuyên viên an toàn thông tin lập bản đồ vùng mạng và phát hiện các cổng logic đang mở, thì Enumeration (Liệt kê và Trích xuất thông tin dịch vụ) chính là cánh cửa dẫn thẳng vào bên trong cấu trúc phân quyền của hệ thống mục tiêu. Đây là giai đoạn người kiểm thử xâm nhập (Penetration Tester) hoặc kẻ tấn công chủ động thiết lập các kết nối hợp lệ tới những cổng dịch vụ đang mở nhằm ép hệ thống phải khai báo danh tính người dùng (User Accounts), tên nhóm quyền (Groups), danh sách máy trạm (Hostnames), các phân vùng thư mục chia sẻ (Network Shares) và cấu hình dịch vụ nội bộ.
Thông tin thu được từ giai đoạn Enumeration mang tính quyết định đối với toàn bộ sự thành bại của một chiến dịch kiểm thử. Kẻ tấn công không thể tiến hành bẻ khóa mật khẩu (Password Cracking) hoặc leo thang đặc quyền (Privilege Escalation) nếu không nắm trong tay một danh sách tài khoản hợp lệ. Bài viết này sẽ phân tích chi tiết toàn bộ phương pháp luận và kỹ thuật trong CEH Module 4 theo chuẩn EC-Council: từ bản chất của phiên kết nối rỗng (Null Session) trên giao thức SMB/IPC$, cơ chế phân cấp cây MIB và chuỗi cộng đồng trong giao thức SNMP, kỹ thuật vét cạn định danh người dùng qua RID Cycling trong Active Directory, cho đến các biện pháp phòng vệ từ cấp độ Registry đến bộ luật IDS Snort.
Mục lục nội dung bài viết
- 1. Bản chất và vai trò then chốt của Enumeration trong chu trình kiểm thử
- 2. Phân biệt Scanning và Enumeration: Thăm dò cổng đối chiếu trích xuất danh tính
- 3. Cơ chế hoạt động của Null Session trên giao thức SMB và chia sẻ quản trị IPC$
- 4. Quy trình khai thác Null Session: Thiết lập kết nối nặc danh và trích xuất dữ liệu
- 5. Giải pháp phòng thủ Null Session: Cấu hình Registry và bộ luật phát hiện Snort IDS
- 6. Kỹ thuật SNMP Enumeration: Kiến trúc cây MIB-2 và nguy cơ từ Community String
- 7. Liệt kê dịch vụ thư mục Active Directory và giao thức LDAP
- 8. Giải phẫu định danh bảo mật Windows SID và kỹ thuật tấn công RID Cycling
- 9. Chiến lược phòng thủ toàn diện chống tấn công Enumeration và tổng kết
1. Bản chất và vai trò then chốt của Enumeration trong chu trình kiểm thử
Trong tài liệu giáo trình CEH, Enumeration được định nghĩa là tiến trình trích xuất các thông tin có cấu trúc về người dùng và tài nguyên hệ thống thông qua các kết nối chủ động tới mục tiêu. Trong khi giai đoạn Scanning chỉ cho biết thông tin bề mặt như địa chỉ IP 192.168.1.10 có cổng 445/tcp hoặc 161/udp đang mở, thì Enumeration sẽ truy vấn trực tiếp vào các cổng đó để trả lời các câu hỏi mang tính then chốt:
- Hệ thống đang có những tài khoản người dùng nào (Username list)? Tài khoản nào là quản trị viên (Administrator)? Tài khoản nào bị vô hiệu hóa?
- Chính sách quản lý mật khẩu của hệ thống ra sao (Password Policy): độ dài tối thiểu, thời gian hết hạn, số lần đăng nhập sai tối đa trước khi khóa tài khoản?
- Có những thư mục chia sẻ nào đang công khai trên mạng nội bộ (Network Shares), bao gồm cả các phân vùng ẩn mang ký hiệu
$? - Hạ tầng mạng gồm những thiết bị định tuyến, bộ chuyển mạch nào, bảng định tuyến và danh sách phần mềm cài đặt ra sao?
Kẻ tấn công không nhất thiết phải tìm ra ngay mật khẩu của tài khoản quản trị tối cao. Chỉ cần trích xuất được danh sách 50 hoặc 100 tên người dùng nội bộ, chúng đã có thể áp dụng các kỹ thuật tấn công mật khẩu có mục tiêu (như Password Spraying hoặc Brute-force có kiểm soát) để chiếm quyền một tài khoản người dùng thông thường, từ đó làm bàn đạp thâm nhập sâu vào mạng nội bộ.
2. Phân biệt Scanning và Enumeration: Thăm dò cổng đối chiếu trích xuất danh tính
Nhiều người mới bắt đầu học an toàn thông tin thường nhầm lẫn giữa hai khái niệm Scanning và Enumeration. Bảng so sánh dưới đây phân định ranh giới kỹ thuật rõ ràng giữa hai giai đoạn này:
| Tiêu chí so sánh | Scanning (Quét mạng & Cổng) | Enumeration (Liệt kê thông tin) |
|---|---|---|
| Bản chất thao tác | Thăm dò trạng thái lắng nghe của các cổng logic và nhận diện sự tồn tại của máy chủ. | Kết nối sâu vào dịch vụ, thực hiện các truy vấn nghiệp vụ để lấy dữ liệu danh tính người dùng và tài nguyên. |
| Tương tác với ứng dụng | Chủ yếu thao túng cờ hiệu TCP/IP tại tầng giao vận (SYN, FIN, NULL) mà không cần tạo phiên ứng dụng. | Thiết lập phiên làm việc tại tầng ứng dụng (SMB session, SNMP request, LDAP query) có xác thực hoặc nặc danh. |
| Mức độ gây chú ý | Có thể thực hiện ẩn danh (Stealth scan, Zombie scan) để né tránh sự ghi nhận nhật ký của ứng dụng. | Tương tác trực tiếp nên dễ bị ghi lại trong nhật ký ứng dụng hoặc kích hoạt các cảnh báo của hệ thống IDS/IPS. |
| Kết quả thu được | Cổng mở (Open ports), dịch vụ (Services), hệ điều hành sơ bộ (OS fingerprint). | Tên tài khoản (Usernames), nhóm (Groups), định danh SID, tài nguyên chia sẻ (Shares), bảng định tuyến mạng. |
3. Cơ chế hoạt động của Null Session trên giao thức SMB và chia sẻ quản trị IPC$
Một trong những kỹ thuật khai thác kinh điển và nguy hiểm nhất trên các hệ thống Windows là Null Session. Đây là một lỗ hổng thiết kế xuất hiện từ thời kỳ Windows NT, Windows 2000 và vẫn tồn tại trong nhiều cấu hình hệ thống cũ hoặc mạng nội bộ chưa được gia cố.
Về mặt kỹ thuật, hệ điều hành Windows sử dụng cơ chế chia sẻ tài nguyên qua giao thức Server Message Block (SMB) và NetBIOS over TCP/IP (hoạt động trên các cổng 135, 137, 139 và 445). Trong kiến trúc này, Microsoft tạo ra một phân vùng chia sẻ đặc biệt có tên là IPC$ (Interprocess Communication Share).
Chia sẻ IPC$ vốn được thiết kế để phục vụ cho các tiến trình hệ thống nội bộ (như tài khoản SYSTEM) có thể trao đổi thông tin với nhau qua mạng mà không cần người dùng phải nhập thông tin đăng nhập. Tuy nhiên, nếu hệ thống cho phép người dùng nặc danh từ bên ngoài kết nối tới IPC$ với tên đăng nhập rỗng và mật khẩu rỗng (""), một phiên làm việc Null Session sẽ được thiết lập thành công.
Sơ đồ dưới đây mô tả trình tự bắt tay thiết lập Null Session và luồng rò rỉ dữ liệu qua đường ống đặt tên Named Pipe:

Khi phiên Null Session được cấp phép, kẻ tấn công dù không có quyền quản trị viên nhưng lại sở hữu quyền hạn ngang hàng với người dùng nặc danh, cho phép mở các đường ống giao tiếp liên tiến trình (Named Pipes như pipelsarpc, pipesamr) để gọi các hàm quản trị RPC nhằm trích xuất toàn bộ cơ sở dữ liệu người dùng của máy chủ.
4. Quy trình khai thác Null Session: Thiết lập kết nối nặc danh và trích xuất dữ liệu
Để tiến hành kiểm thử và khai thác Null Session, chuyên viên an toàn thông tin có thể sử dụng các lệnh tích hợp sẵn trên hệ điều hành hoặc các bộ công cụ tự động hóa chuyên dụng.
Thiết lập Null Session bằng lệnh NET tích hợp
Trên cửa sổ dòng lệnh Windows hoặc thông qua công cụ SMB trên Kali Linux, kẻ tấn công thực thi lệnh kết nối tới phân vùng quản trị IPC$:
# Thiết lập Null Session tới máy chủ mục tiêu bằng lệnh NET trên Windows
net use \192.168.1.10ipc$ "" /u:""
# Thông báo trả về nếu mục tiêu tồn tại lỗ hổng:
The command completed successfully.
Nếu cố gắng kết nối tới các ổ đĩa thông thường như \192.168.1.10C$, hệ thống sẽ từ chối bằng lỗi Access is denied (System error 5). Nhưng khi kết nối tới IPC$, hệ thống chấp thuận mà không đòi hỏi bất kỳ mật khẩu nào.
Trích xuất danh tính bằng các công cụ chuyên dụng
Sau khi thiết lập thành công Null Session, chuyên viên kiểm thử có thể sử dụng hàng loạt công cụ để đọc dữ liệu hệ thống:
nbtstat -A 192.168.1.10: Đọc bảng tên NetBIOS của máy chủ, cho biết tên máy tính, tên Workgroup hoặc Domain, địa chỉ MAC và mã định danh dịch vụ (như<00>cho máy trạm,<20>cho dịch vụ chia sẻ tệp,<1B>cho Domain Master Browser).enum.exe: Công cụ dòng lệnh kinh điển trong CEH cho phép trích xuất toàn bộ danh sách tài khoản người dùng, chính sách mật khẩu và các phân vùng chia sẻ:# Trích xuất danh sách người dùng và chính sách mật khẩu qua Null Session enum -U -P 192.168.1.10DumpSec: Công cụ giao diện đồ họa (GUI) của hãng Somarsoft, cho phép kết xuất toàn bộ cây thư mục chia sẻ, quyền truy cập NTFS và danh sách nhóm người dùng nội bộ thành báo cáo chi tiết.rpcclient(trên Kali Linux): Cho phép tương tác trực tiếp với các hàm gọi từ xa của Windows:# Kết nối nặc danh qua rpcclient và liệt kê danh sách tài khoản rpcclient -U "" -N 192.168.1.10 rpcclient $> enumdomusers rpcclient $> enumdomgroups
5. Giải pháp phòng thủ Null Session: Cấu hình Registry và bộ luật phát hiện Snort IDS
Để triệt tiêu hoàn toàn nguy cơ rò rỉ dữ liệu qua Null Session, đội ngũ quản trị mạng và bảo mật phòng thủ cần áp dụng các biện pháp kỹ thuật đồng bộ:
Chặn Null Session thông qua Registry của Windows
Hệ điều hành Windows cung cấp tham số điều khiển mức độ truy cập nặc danh thông qua khóa Registry của hệ thống con bảo mật cục bộ (Local Security Authority - LSA):
- Khởi chạy trình chỉnh sửa
regedithoặcregedt32. - Di chuyển tới đường dẫn:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa - Tìm giá trị
RestrictAnonymous(kiểu dữ liệuREG_DWORD) và thiết lập giá trị bằng 2:RestrictAnonymous = 0: Cho phép truy cập nặc danh không hạn chế (cấu hình mặc định không an toàn trên các hệ thống cũ).RestrictAnonymous = 1: Không cho phép liệt kê tài khoản người dùng qua SAM nhưng vẫn cho phép một số quyền đọc thông tin phân vùng chia sẻ.RestrictAnonymous = 2: Chặn hoàn toàn mọi kết nối nặc danh nếu không cung cấp chứng thực hợp lệ.
Vô hiệu hóa NetBIOS over TCP/IP
Trên các máy chủ không có nhu cầu tương thích với các ứng dụng NetBIOS cũ, quản trị viên nên tắt hoàn toàn tính năng này: vào thuộc tính Card mạng $ ightarrow$ Internet Protocol (TCP/IP) $ ightarrow$ Advanced $ ightarrow$ chọn thẻ WINS $ ightarrow$ đánh dấu chọn Disable NetBIOS over TCP/IP.
Bộ luật phát hiện kết nối Null Session trên Snort IDS/IPS
Hệ thống giám sát an ninh mạng Snort có thể được cấu hình để cảnh báo ngay lập tức khi phát hiện lưu lượng kết nối nặc danh gửi tới cổng NetBIOS 139:
# Bộ luật Snort phát hiện phiên kết nối NetBIOS NT Null Session
alert tcp $EXTERNAL_NET any -> $HOME_NET 139 (msg:"NETBIOS NT NULL session attempt"; flow:to_server,established; content:"|00 00 00 00 57 00 69 00 6E 00 64 00 6F 00 77 00 73 00 20 00 4E 00 54|"; classtype:attempted-recon; sid:1000001; rev:1;)
6. Kỹ thuật SNMP Enumeration: Kiến trúc cây MIB-2 và nguy cơ từ Community String
Giao thức quản lý mạng đơn giản SNMP (Simple Network Management Protocol) là công cụ không thể thiếu trong công tác vận hành hệ thống mạng doanh nghiệp, cho phép giám sát tình trạng hoạt động của hàng nghìn router, switch, máy chủ và thiết bị tường lửa thông qua cổng UDP 161 và 162.
Sơ đồ sau đây trực quan hóa cấu trúc phân cấp của cây cơ sở dữ liệu MIB-2 và cơ chế hoạt động của hai chuỗi xác thực Community String trong SNMP:

Kiến trúc phân cấp của cây MIB (Management Information Base)
Mọi thông tin phần cứng và hệ thống trong SNMP đều được tổ chức dưới dạng một cây cơ sở dữ liệu phân cấp gọi là MIB. Mỗi đối tượng quản lý được gán một chuỗi số học duy nhất gọi là Object Identifier (OID). Nhánh chuẩn mực được định nghĩa trong RFC 1213 là mib-2 có chuỗi OID gốc là 1.3.6.1.2.1:
1.3.6.1.2.1.1 (system): Cung cấp thông tin tên thiết bị, vị trí địa lý, thông tin liên hệ của quản trị viên và phiên bản hệ điều hành.1.3.6.1.2.1.2 (interfaces): Liệt kê danh sách các cổng mạng, địa chỉ vật lý MAC, tốc độ đường truyền và lưu lượng gói tin ra/vào.1.3.6.1.2.1.4 (ip): Cung cấp bảng định tuyến mạng nội bộ và bảng ánh xạ địa chỉ IP sang MAC (ARP cache).1.3.6.1.2.1.25 (host): Nhánh tài nguyên máy trạm (Host Resources MIB), tiết lộ danh sách tài khoản người dùng, toàn bộ tiến trình đang thực thi và danh mục phần mềm đã cài đặt trên máy chủ.
Lỗ hổng từ Community String mặc định
Trong các phiên bản SNMP v1 và SNMP v2c (vẫn đang vận hành rất phổ biến do tính tiện lợi), giao thức này không sử dụng cơ chế xác thực username/password hiện đại mà chỉ dựa vào một chuỗi mật khẩu chia sẻ dạng văn bản rõ (cleartext token) gọi là Community String:
- Read Community String: Mặc định trên hàng triệu thiết bị xuất xưởng là chuỗi
public. Bất kỳ ai gửi gói tin kèm chuỗi này đều có quyền đọc toàn bộ dữ liệu MIB của thiết bị. - Read/Write Community String: Mặc định là chuỗi
private. Cho phép người gửi không chỉ đọc mà còn ghi đè cấu hình thiết bị, thay đổi địa chỉ DNS, hoặc phát lệnh tắt các cổng mạng quan trọng.
# Sử dụng lệnh snmpwalk trên Linux để duyệt toàn bộ nhánh thông tin hệ thống với community public
snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.2.1.1
# Sử dụng snmp-check để trích xuất danh sách tài khoản và giao diện mạng
snmp-check 192.168.1.1
Giải pháp phòng vệ: Biện pháp triệt để nhất là nâng cấp toàn bộ hệ thống lên chuẩn SNMP v3. Phiên bản này áp dụng mô hình bảo mật người dùng (User-based Security Model - USM), mã hóa toàn bộ gói tin bằng thuật toán AES/DES và xác thực toàn vẹn bằng SHA/MD5, loại bỏ hoàn toàn khái niệm Community String dạng văn bản rõ.
7. Liệt kê dịch vụ thư mục Active Directory và giao thức LDAP
Trong các môi trường doanh nghiệp quy mô trung bình và lớn, toàn bộ việc quản lý người dùng, tài nguyên máy tính và quyền hạn đều được tập trung hóa trên dịch vụ thư mục Active Directory (AD) của máy chủ Windows Server Domain Controller.
Giao thức truy cập thư mục hạng nhẹ LDAP (Lightweight Directory Access Protocol) vận hành trên cổng TCP 389 (không mã hóa) và cổng TCP 636 (LDAPS mã hóa qua TLS) là ngôn ngữ chuẩn để các ứng dụng và máy trạm truy vấn thông tin trong Active Directory.
Khi kẻ tấn công đã có được một tài khoản người dùng thông thường hoặc thiết lập được kết nối truy vấn nặc danh tới cổng 389 của Domain Controller, chúng có thể sử dụng các lệnh LDAP để liệt kê toàn bộ cấu trúc của miền doanh nghiệp:
- Organizational Units (OU): Cấu trúc phòng ban và sơ đồ tổ chức nhân sự của công ty (Phòng Kế toán, Phòng Kỹ thuật, Ban Giám đốc).
- Global Catalog: Cơ sở dữ liệu chứa bản sao thuộc tính của toàn bộ đối tượng trong toàn bộ cây rừng (Forest) của Active Directory.
- Service Principal Names (SPN): Danh sách các dịch vụ đang vận hành tài khoản miền (ví dụ: máy chủ MS SQL Server, máy chủ web IIS), mở đường cho các kỹ thuật tấn công trích xuất vé xác thực Kerberoasting nguy hiểm sau này.
# Thực hiện truy vấn LDAP để tìm tất cả các tài khoản người dùng trong miền
ldapsearch -x -H ldap://192.168.1.5 -b "dc=enterprise,dc=local" "(objectClass=user)" sAMAccountName
8. Giải phẫu định danh bảo mật Windows SID và kỹ thuật tấn công RID Cycling
Một trong những kỹ thuật liệt kê tài khoản tinh vi nhất trong hệ sinh thái Windows mà không cần quyền quản trị là kỹ thuật tấn công vòng lặp định danh tương đối (RID Cycling).
Sơ đồ sau đây phân tích cấu trúc giải phẫu của chuỗi định danh bảo mật Windows SID và cơ chế phân giải tài khoản trong cuộc tấn công RID Cycling:

Cấu trúc giải phẫu của Windows SID (Security Identifier)
Trong hệ điều hành Windows, hệ thống không nhận diện người dùng hay nhóm bằng tên văn bản mà sử dụng một chuỗi nhị phân có cấu trúc gọi là SID. Ví dụ: S-1-5-21-3623811015-3361044348-30300820-500
S: Tiền tố báo hiệu chuỗi ký tự này là một SID.1: Phiên bản sửa đổi của cấu trúc SID (Revision level).5: Cơ quan cấp quyền bảo mật (Identifier Authority), giá trị 5 đại diện choNT Authority.21-3623811015-3361044348-30300820: Mã định danh duy nhất của miền (Domain Identifier). Tất cả các tài khoản thuộc cùng một miền hoặc cùng một máy trạm đều chia sẻ chung chuỗi tiền tố này.- Số cuối cùng chính là RID (Relative Identifier), một số nguyên xác định chính xác danh tính của đối tượng trong miền:
- RID 500: Tài khoản quản trị viên tối cao (Built-in Administrator). Dù quản trị viên có đổi tên tài khoản này thành bất kỳ tên nào khác để che giấu, giá trị RID vẫn luôn cố định là 500.
- RID 501: Tài khoản khách (Built-in Guest).
- RID 502: Tài khoản cấp vé Kerberos (KRBTGT).
- RID 1000 trở lên: Các tài khoản người dùng và nhóm do quản trị viên tự tạo trong tổ chức.
Kỹ thuật tấn công RID Cycling
Khi kẻ tấn công đã có được một phiên kết nối tới máy chủ (kể cả kết nối cấp thấp hoặc Null Session), chúng có thể gửi yêu cầu gọi hàm RPC tới hệ thống con quản lý tài khoản bảo mật (SAMR Protocol):
- Kẻ tấn công xác định chuỗi Domain SID cơ sở của mục tiêu.
- Sau đó, chúng thiết lập một vòng lặp tự động tăng dần giá trị RID từ 500, 501, cho đến 1000, 1001, 1002... và gửi câu hỏi tới Domain Controller: "Chủ nhân của SID mang RID này là ai?"
- Domain Controller nhận được truy vấn sẽ tự động phân giải và trả về tên người dùng bằng văn bản rõ:
Administrator,john.doe,finance_lead...
Kỹ thuật này cho phép trích xuất 100% danh sách tài khoản nội bộ trong vài giây mà không cần biết mật khẩu của hệ thống, vô hiệu hóa hoàn toàn biện pháp đổi tên tài khoản Administrator truyền thống.
# Sử dụng công cụ crackmapexec để thực hiện RID Cycling liệt kê toàn bộ tài khoản
crackmapexec smb 192.168.1.10 -u '' -p '' --rid-brute 5000
9. Chiến lược phòng thủ toàn diện chống tấn công Enumeration và tổng kết
Enumeration là chiếc cầu nối nguy hiểm giữa giai đoạn thăm dò bên ngoài và tấn công xâm nhập sâu vào bên trong. Để ngăn chặn kẻ tấn công khai thác thông tin từ giai đoạn này, các tổ chức cần áp dụng chiến lược phòng thủ đa tầng:
- Khóa chặt các cổng dịch vụ chia sẻ tại vành đai: Chặn tuyệt đối các cổng NetBIOS và SMB (TCP 135, 137, 138, 139, 445) trên tất cả các thiết bị tường lửa biên tiếp xúc với Internet công cộng.
- Vô hiệu hóa truy cập nặc danh trên toàn hệ thống: Thiết lập chính sách bảo mật miền Group Policy (GPO) áp đặt giá trị
RestrictAnonymous = 2trên tất cả các máy chủ và máy trạm nội bộ. - Loại bỏ giao thức SNMP cũ: Chuyển đổi toàn bộ thiết bị mạng sang SNMPv3 có mã hóa và xác thực. Thay đổi toàn bộ chuỗi Community String mặc định (
public,private) thành các chuỗi ngẫu nhiên có độ dài trên 16 ký tự. - Siết chặt quyền truy vấn Active Directory: Cấu hình giới hạn quyền đọc thông tin danh bạ LDAP đối với các tài khoản người dùng thông thường, ngăn chặn việc đọc thuộc tính tài khoản hàng loạt.
- Giám sát và phân tích nhật ký tập trung (SIEM): Thiết lập cảnh báo đối với các hành vi truy vấn SAMR hoặc RPC bất thường phát sinh từ các máy trạm không phải là máy tính quản trị IT, nhận diện sớm các nỗ lực quét RID Cycling và thăm dò Null Session.
Làm chủ phương pháp luận trong CEH Module 4 giúp chuyên viên bảo mật không chỉ nhận diện được những kẽ hở thông tin nhạy cảm của tổ chức mà còn nắm vững tư duy của kẻ tấn công, từ đó chủ động bịt kín các điểm mù trước khi chúng bị khai thác trong thực tế.