Foundation · Chapter 03

Quản trị Windows & Active Directory

Windows Administration & Active Directory Security

Active Directory là trung tâm kiểm soát danh tính của hầu hết doanh nghiệp — và cũng là mục tiêu số một của kẻ tấn công. Chương này đi sâu vào kiến trúc AD, phân quyền NTFS, chính sách bảo mật cục bộ, bảo mật dịch vụ Windows, Event Log và PowerShell Remoting — tất cả từ góc nhìn phòng thủ thực chiến.

Mục tiêu chương / Learning objectives

1. Lý thuyết cốt lõi / Core theory

1.1. Kiến trúc Active Directory / Active Directory architecture

Active Directory (AD) là dịch vụ thư mục của Microsoft, lưu trữ và quản lý toàn bộ đối tượng trong mạng doanh nghiệp: tài khoản người dùng, máy tính, nhóm, chính sách. Cấu trúc logic của AD gồm ba cấp: Forest (ranh giới bảo mật lớn nhất) → Domain (đơn vị quản lý chính, vd: corp.company.com) → Organizational Unit / OU (đơn vị tổ chức để áp GPO và phân cấp quản trị).

Group Policy Object (GPO) là công cụ áp dụng chính sách hàng loạt cho tập hợp máy/người dùng thông qua OU. GPO có thể kiểm soát: cài đặt bảo mật, script khởi động, cấu hình phần mềm, tắt USB, giới hạn ứng dụng (AppLocker)...

Khái niệm then chốt — Privileged Accounts: AD phân biệt tài khoản thường và tài khoản đặc quyền cao (Domain Admins, Enterprise Admins, Schema Admins). Chiến lược tấn công phổ biến nhất là Pass-the-HashKerberoasting — nhắm vào việc leo thang đặc quyền trong AD. Tier Model (Microsoft) khuyến nghị tách biệt tài khoản admin theo 3 cấp để hạn chế lateral movement.

1.2. Phân quyền NTFS / NTFS permissions

NTFS (New Technology File System) hỗ trợ phân quyền chi tiết ở cấp file/folder thông qua Access Control List (ACL). Mỗi đối tượng có một Discretionary ACL (DACL) — danh sách các Access Control Entry (ACE) xác định ai được phép làm gì. Quyền NTFS cơ bản: Read (R), Write (W), Execute (X), Delete (D), Full Control (F).

Hai khái niệm quan trọng: Inheritance — quyền từ folder cha tự động áp xuống file/folder con (có thể chặn); Effective Permissions — quyền thực tế của một người dùng = hợp (union) của tất cả quyền trực tiếp + quyền từ các nhóm mà người đó là thành viên. DENY luôn ghi đè ALLOW.

Lưu ý bảo mật — NTFS vs Share permissions: Khi truy cập qua mạng, quyền hiệu lực = quyền hạn chế hơn giữa NTFS permission và Share permission. Một lỗi phổ biến là cho Share permission = Full Control rồi chỉ kiểm soát bằng NTFS — điều này đúng nhưng cần nhất quán. Luôn dùng nguyên tắc đặc quyền tối thiểu (least privilege).

1.3. Local Security Policy & Chính sách kiểm toán / Security policy & audit policy

Local Security Policy (secpol.msc) cho phép cấu hình bảo mật cục bộ trên máy Windows, bao gồm: Password Policy (độ dài tối thiểu, độ phức tạp, thời gian hết hạn, lịch sử mật khẩu), Account Lockout Policy (khóa tài khoản sau N lần đăng nhập sai), User Rights Assignment (ai được logon locally, từ xa, shutdown...).

Audit Policy xác định sự kiện nào được ghi vào Security Event Log. Các danh mục quan trọng: Logon Events (đăng nhập thành công/thất bại), Account Management (tạo/xóa tài khoản, thêm vào nhóm), Process Creation (theo dõi tiến trình được tạo), Object Access (truy cập file/registry). Thiếu audit policy phù hợp = mù quáng trong điều tra sự cố.

1.4. Windows Services & Registry Security / Services & registry security

Windows Services là các tiến trình chạy ngầm, khởi động cùng hệ thống, thường với đặc quyền cao (SYSTEM, NETWORK SERVICE). Từ góc nhìn bảo mật: malware thường tự đăng ký thành service để đảm bảo persistence — tự khởi động lại sau reboot. Registry chứa cấu hình toàn hệ thống, bao gồm các khóa autorun (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run) thường bị lợi dụng làm persistence mechanism.

1.5. Event Log & Event ID quan trọng / Event log & key event IDs

Security Event Log (eventvwr.msc → Windows Logs → Security) là nguồn bằng chứng số hàng đầu trong điều tra sự cố. Các Event ID phải thuộc lòng:

4624 — Đăng nhập thành công (Logon Success)
4625 — Đăng nhập thất bại (Logon Failure)
4688 — Tiến trình mới được tạo (Process Creation)
4698 — Scheduled Task mới được tạo (persistence!)
4720 — Tài khoản người dùng mới được tạo
4732 — Thêm thành viên vào nhóm bảo mật cục bộ

1.6. PowerShell Remoting / PowerShell remoting basics

PowerShell Remoting (PSRemoting) cho phép chạy lệnh PowerShell trên máy từ xa thông qua giao thức WinRM (Windows Remote Management) — mã hóa bằng TLS/HTTPS trên cổng 5986. Lệnh cơ bản: Enter-PSSession (phiên tương tác) và Invoke-Command (chạy lệnh hàng loạt trên nhiều máy).

Từ góc nhìn bảo mật: PSRemoting cần được kích hoạt có kiểm soát (chỉ admin được dùng, log đầy đủ qua Script Block LoggingModule Logging). Đây cũng là kỹ thuật lateral movement phổ biến của attacker khi đã có credential admin — do đó cần giám sát WinRM traffic và kích hoạt PowerShell Transcription.

2. Bài thực hành / Hands-on labs

Lab 1 — OS: Windows Server 2022  ·  Tool: PowerShell 7 + RSAT
Lab 2 — OS: Windows 11  ·  Tool: Local Security Policy MMC + auditpol

Lab 1 — Kiểm toán Active Directory & Phân quyền NTFS qua PowerShell

OS: Windows Server 2022 (Domain Controller hoặc máy join domain với RSAT)  ·  Tool: PowerShell 7 + RSAT (Remote Server Administration Tools)

  1. Cài RSAT nếu chưa có (trên Windows 11): Add-WindowsCapability -Online -Name "Rsat.ActiveDirectory*"
  2. Thực hiện kiểm toán tài khoản và Group Policy:
# Liệt kê tất cả user trong domain (cần RSAT + quyền Domain User trở lên)
Get-ADUser -Filter * -Properties LastLogonDate, PasswordLastSet, Enabled |
    Select-Object Name, SamAccountName, Enabled, LastLogonDate, PasswordLastSet |
    Sort-Object LastLogonDate | Format-Table -AutoSize

# Tìm tài khoản đã bị tắt (disabled)
Get-ADUser -Filter {Enabled -eq $false} | Select-Object Name, SamAccountName

# Tìm tài khoản KHÔNG bao giờ hết hạn mật khẩu (rủi ro bảo mật)
Get-ADUser -Filter {PasswordNeverExpires -eq $true} -Properties PasswordNeverExpires |
    Select-Object Name, SamAccountName, PasswordNeverExpires

# Liệt kê thành viên nhóm Domain Admins
Get-ADGroupMember -Identity "Domain Admins" | Select-Object Name, ObjectClass

# Xem tất cả GPO trong domain
Get-GPO -All | Select-Object DisplayName, GpoStatus, CreationTime | Format-Table -AutoSize

Kết quả mong đợi / Expected output: Bảng liệt kê users với cột Enabled, LastLogonDate (user không login lâu là rủi ro — tài khoản zombie). Danh sách Domain Admins — nếu có tài khoản lạ đây là dấu hiệu nghiêm trọng. Danh sách GPO giúp xác minh chính sách bảo mật đang được áp dụng.

  1. Kiểm tra phân quyền NTFS trên thư mục và đọc Security Event Log:
# Xem ACL (NTFS permission) của một thư mục
Get-ACL "C:\Shares\Finance" | Format-List

# Xem chi tiết từng ACE trong DACL
(Get-ACL "C:\Shares\Finance").Access |
    Select-Object IdentityReference, FileSystemRights, AccessControlType, IsInherited |
    Format-Table -AutoSize

# Kiểm tra quyền hiệu lực qua icacls
icacls "C:\Shares\Finance"

# Đọc 20 sự kiện bảo mật gần nhất (Security log)
Get-WinEvent -LogName Security -MaxEvents 20 |
    Select-Object TimeCreated, Id, Message | Format-List

# Lọc chỉ sự kiện đăng nhập thất bại (Event ID 4625)
Get-WinEvent -LogName Security -MaxEvents 100 |
    Where-Object { $_.Id -eq 4625 } |
    Select-Object TimeCreated, Message | Format-List

Kết quả mong đợi: Get-ACL liệt kê từng ACE cho thấy ai có quyền gì trên thư mục. Nếu thấy Everyone: FullControl — đây là cấu hình nguy hiểm cần sửa ngay. Event ID 4625 liên tục từ một IP/tài khoản = dấu hiệu brute force attack.

Lab 2 — Cấu hình Local Security Policy & Audit Policy

OS: Windows 11  ·  Tool: Local Security Policy MMC (secpol.msc) + Command Prompt (Administrator)

  1. Nhấn Win+R → gõ secpol.msc → Enter.
  2. Vào Account Policies → Password Policy. Cấu hình các thiết lập bảo mật:
Minimum password length: 14 characters
Password must meet complexity requirements: Enabled
Maximum password age: 90 days
Enforce password history: 24 passwords remembered
Account lockout threshold: 5 invalid logon attempts
Account lockout duration: 30 minutes
  1. Cấu hình Audit Policy qua command line (cần chạy với quyền Administrator):
# Xem cấu hình audit policy hiện tại
auditpol /get /category:*

# Bật audit đăng nhập (thành công và thất bại)
auditpol /set /subcategory:"Logon" /success:enable /failure:enable

# Bật audit tạo tiến trình (quan trọng để phát hiện malware)
auditpol /set /subcategory:"Process Creation" /success:enable

# Bật audit quản lý tài khoản
auditpol /set /subcategory:"User Account Management" /success:enable /failure:enable

# Bật audit thay đổi chính sách
auditpol /set /subcategory:"Audit Policy Change" /success:enable /failure:enable

# Xác nhận lại cấu hình vừa thiết lập
auditpol /get /subcategory:"Logon","Process Creation","User Account Management"

Kết quả mong đợi: auditpol /get /category:* hiển thị danh sách đầy đủ subcategory với trạng thái Success/Failure. Sau khi cấu hình, thực hiện đăng nhập sai mật khẩu và kiểm tra Event Viewer → Security → Event ID 4625 để xác nhận audit đang hoạt động.

3. Tình huống doanh nghiệp / Real-world scenario

Bối cảnh:

Sáng thứ Hai, đội IT nhận báo cáo từ hệ thống giám sát: một tài khoản admin mới lạ (svc_backup_new) xuất hiện trong nhóm Administrators cục bộ trên toàn bộ 50 máy chủ. Tài khoản này được tạo lúc 02:17 sáng Chủ Nhật — ngoài giờ làm việc và không có yêu cầu từ bộ phận nào.

Điều tra theo từng bước:

  1. Lọc Security Event Log tìm Event ID 4720 (tạo tài khoản) quanh thời điểm 02:00-03:00 ngày Chủ Nhật: Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4720 }
  2. Ghi chú Subject Account Name — tài khoản nào đã tạo ra tài khoản mới. Tiếp tục lọc Event ID 4732 (thêm vào nhóm Administrators).
  3. Truy ngược tài khoản thực hiện hành động: phát hiện tài khoản dịch vụ svc_monitoring — vốn chỉ có quyền đọc log — đã tạo tài khoản admin. Điều này không thể xảy ra bình thường.
  4. Kết luận: svc_monitoring đã bị compromise (credential bị lộ hoặc token bị đánh cắp). Kẻ tấn công dùng nó để tạo backdoor admin account và thêm vào Administrators group.
  5. Hành động khắc phục: disable tài khoản svc_monitoringsvc_backup_new ngay lập tức, reset mật khẩu, rà soát toàn bộ service account theo nguyên tắc least privilege, kích hoạt Protected Users security group cho các tài khoản nhạy cảm.

Bài học: Event ID 4720 + 4732 lúc ngoài giờ hành chính là dấu hiệu đỏ (red flag) điển hình của tấn công persistence. Audit Policy phải được kích hoạt trước khi sự cố xảy ra — không thể điều tra hồi tố nếu không có log.

4. Tự kiểm tra / Knowledge check

  1. Giải thích sự khác biệt giữa DACL và SACL trong NTFS. Khi nào cần dùng SACL?
  2. Một user là thành viên nhóm A (Read) và nhóm B (Deny Write). Quyền hiệu lực với file X là gì?
  3. Tại sao Scheduled Task (Event ID 4698) lại là persistence mechanism nguy hiểm?
  4. Phân biệt Local Administrators group và Domain Admins group — ảnh hưởng đến phạm vi tấn công thế nào?
  5. PowerShell Script Block Logging là gì và tại sao nó quan trọng trong phòng thủ?
Chương 2: Mạng TCP/IP & OSI Chương 4: Linux Administration
Thực hành trên công cụPowerShell 7 · RSAT · auditpol
Nền tảngWindows Server 2022 · Windows 11
Thời điểm phát hànhQ2/2026
Ngày biên soạn24/05/2026
Người biên soạnTrần Văn Hòa (MCT)
Phiên bảnv1.0
Zalo