Active Directory - Part 2: Authentication - Kerberos - LDAP - LM/NTLM - Users

Authentication
Xác thực Active Directory (AD authentication) là một hệ thống dựa trên Windows cho phép các tổ chức xác thực và ủy quyền cho người dùng, điểm cuối (endpoints) và dịch vụ trong môi trường AD.
Xác thực AD cung cấp khả năng kiểm soát tập trung đối với cấu hình người dùng và thiết bị, cũng như quản lý quyền và người dùng hợp lý thông qua việc sử dụng AD Group Policy (Chính sách nhóm AD). Nó cũng cung cấp chức năng single sign-on (SSO) (đăng nhập một lần), cho phép người dùng xác thực một lần và sau đó truy cập vào bất kỳ tài nguyên công ty được ủy quyền nào trong miền.
Xác thực AD thay thế các giao thức LAN Manager (LM) và NT LAN Manager (NTLM) dễ khai thác, được sử dụng trong các phiên bản trước của hệ điều hành Windows. LM đã sử dụng sơ đồ mật mã dễ vỡ có thể dễ dàng bị bẻ khóa bởi các bộ xử lý hiện đại, trong khi NTLM đã cải thiện điều này bằng mật mã mạnh hơn nhưng thiếu dịch vụ xác thực lẫn nhau và xác thực thẻ thông minh.
Xác thực AD hỗ trợ hai tiêu chuẩn:
Kerberos
Lightweight Directory Access Protocol (LDAP)
Kerberos Protocol
Trong xác thực AD dựa trên Kerberos, người dùng đăng nhập một lần để truy cập tài nguyên doanh nghiệp.
Thay vì truyền thông tin xác thực đăng nhập qua mạng, như trường hợp của LM và NTLM, hệ thống Kerberos tạo session key cho người dùng và token chứa các chính sách và quyền truy cập của người dùng.
Trước tiên, người dùng phải tự xác thực với Key Distribution Center - KDC (trung tâm phân phối khóa), là bên thứ ba đáng tin cậy bao gồm Authentication Server - AS (máy chủ xác thực) và Ticket Granting Server - TGS (máy chủ cấp vé).
AS mã hóa thông tin đăng nhập của người dùng và gửi Ticket Granting Ticket - TGT (vé cấp vé) cho người dùng.
Sau đó, người dùng truyền TGT đến TGS cùng với yêu cầu ủy quyền để truy cập tài nguyên đích trên máy chủ.
TGS phát hành token cho máy khách được mã hóa bằng khóa được chia sẻ giữa máy chủ đích và TGS.
Cuối cùng, máy khách truyền token đến máy chủ mục tiêu
Máy chủ này sẽ giải mã nó để cho phép máy khách truy cập tài nguyên trong một thời gian giới hạn.

Lightweight Directory Access Protocol (LDAP)
LDAP là một giao thức mã nguồn mở và đa nền tảng cung cấp dịch vụ xác thực AD.
Có hai tùy chọn liên quan đến xác thực dựa trên LDAP trong AD:
Simple authentication - Xác thực đơn giản, dựa vào thông tin xác thực đăng nhập để tạo yêu cầu tới máy chủ
Simple authentication and security layer - Lớp xác thực và bảo mật đơn giản (SASL), sử dụng các dịch vụ xác thực khác như Kerberos để kết nối với máy chủ LDAP.
Ngoài 2 tiêu chuẩn Kerberos và LDAP, AD còn sử dụng một số phương thức xác thực khác, bao gồm:
LAN Manager (LM) Hash
Hash (Băm) LM là một phương pháp băm cũ và kém an toàn được sử dụng trong các hệ điều hành Windows trước Windows NT.
Nó được coi là yếu do tính chất KHÔNG phân biệt chữ hoa chữ thường và giới hạn ở 14 ký tự trở xuống, được chia thành hai phần 7 ký tự, được băm riêng và ghép nối lại với nhau → Lỗ hổng này khiến hàm băm LM dễ bị tấn công bằng phương pháp bruteforce hoặc rainbow table attack.
Mặc dù các hệ thống Windows hiện đại không còn sử dụng hàm băm LM theo mặc định nữa nhưng chúng vẫn có thể xuất hiện trong một số hệ thống cũ.
NT LAN Manager (NTLM) Hash
Hàm băm NTLM là một cải tiến so với LM và được giới thiệu trong Windows NT.
Phương pháp băm này phân biệt chữ hoa chữ thường và hỗ trợ độ dài mật khẩu lên tới 128 ký tự.
Mặc dù an toàn hơn LM, NTLM vẫn có một số lỗ hổng, chẳng hạn như dễ bị tấn công bằng pass-the-hash, cho phép kẻ tấn công mạo danh người dùng mà không biết mật khẩu văn bản gốc của họ.
NT LAN Manager version 1 (NTLMv1)
NTLMv1 là giao thức xác thực sử dụng cơ chế challenge-response.
Khi máy khách cố gắng truy cập tài nguyên, máy chủ sẽ gửi một challenge (một số 8 byte ngẫu nhiên).
Máy khách mã hóa challenge này bằng hàm băm NTLM của họ và gửi phản hồi trở lại máy chủ.
Sau đó, máy chủ sẽ xác minh phản hồi bằng cách so sánh nó với hàm băm được lưu trữ của mật khẩu người dùng.

Mặc dù NTLMv1 là một cải tiến so với LM và NTLM, nhưng nó vẫn dễ bị tấn công bởi nhiều loại tấn công khác nhau, bao gồm cả các cuộc tấn Man in the middle - MITM và relay attack.
NT LAN Manager version 2 (NTLMv2)
NTLMv2 là phiên bản cập nhật của giao thức xác thực NTLMv1 và được giới thiệu trong Windows NT 4.0 SP4.
Nó tăng cường bảo mật bằng cách thêm client challenge và server timestamp vào quy trình xác thực.

Sự bổ sung này giúp bảo vệ chống lại các cuộc tấn công trung gian và chuyển tiếp. Tuy nhiên, NTLMv2 vẫn dễ bị tấn công bằng pass-the-hash và được coi là kém an toàn hơn Kerberos.
Bảng bên dưới so sánh các hàm băm và giao thức trên. Mặc dù không hoàn hảo nhưng Kerberos thường là giao thức xác thực được ưu tiên khi có thể.
| Protocol | Technique | Mutual Authentication | Message Type | Trusted Third Party |
| NTLM | Symmetric key cryptography | No | Random number | Domain Controller |
| NTLMv1 | Symmetric key cryptography | No | MD4 hash, random number | Domain Controller |
| NTLMv2 | Symmetric key cryptography | No | MD4 hash, random number | Domain Controller |
| Kerberos | Symmetric key cryptography & asymmetric cryptography | Yes | Encrypted ticket using DES, MD5 | Domain Controller,/Key Distribution Center (KDC) |
AD Domain Users
Trái ngược với người dùng cục bộ (local users), domain users có quyền truy cập vào nhiều tài nguyên khác nhau trong miền, chẳng hạn như máy chủ tệp, máy in và máy chủ mạng nội bộ, dựa trên các đặc quyền được gán cho tài khoản người dùng của họ hoặc nhóm mà họ thuộc về.
Không giống như local user, tài khoản domain user có thể đăng nhập vào bất kỳ máy chủ nào trong miền. Để biết thêm thông tin về các loại tài khoản Active Directory khác nhau, bạn có thể khám phá nhiều tài nguyên trực tuyến khác nhau. Một tài khoản đáng được quan tâm đặc biệt là tài khoản KRBTGT (Kerberos Ticket-Granting Ticket).
Kerberos Ticket-Granting Ticket account & Golden Ticket
Tài khoản KRBTGT là tài khoản cục bộ được tích hợp trong cơ sở hạ tầng Active Directory. Nó đóng vai trò như một tài khoản dịch vụ cho dịch vụ Key Distribution (Phân phối khóa), chịu trách nhiệm xác thực và cấp quyền truy cập vào tài nguyên miền. Tuy nhiên, tài khoản KRBTGT thường là mục tiêu của những kẻ tấn công do có khả năng cấp cho chúng quyền truy cập không hạn chế vào domain nếu bị xâm phạm.
Những kẻ tấn công có thể khai thác tài khoản KRBTGT để leo thang đặc quyền và truy cập liên tục bằng các kỹ thuật như Golden Ticket Attack.

Trong cuộc tấn công Golden Ticket, kẻ tấn công có quyền truy cập vào hàm băm của tài khoản KRBTGT, cho phép chúng tạo vé Kerberos giả mạo. Những vé này cấp cho kẻ tấn công quyền truy cập vào bất kỳ tài nguyên nào trong miền, mang lại cho chúng toàn quyền kiểm soát một cách hiệu quả.
Để bảo vệ tài khoản KRBTGT và Active Directory domain khỏi các cuộc tấn công như vậy, điều cần thiết là phải thực hiện các biện pháp bảo mật mạnh mẽ, chẳng hạn như:
Thường xuyên cập nhật mật khẩu tài khoản KRBTGT, đồng thời đảm bảo mật khẩu phức tạp, khó đoán.
Sử dụng hệ thống giám sát và phát hiện xâm nhập để phát hiện mọi hoạt động bất thường hoặc nỗ lực truy cập liên quan đến tài khoản KRBTGT.
Thực hiện nguyên tắc đặc quyền tối thiểu, chỉ cấp cho người dùng và nhóm những quyền cần thiết để thực hiện nhiệm vụ của mình.
Thực thi các chính sách mật khẩu mạnh và multi-factor authentication - MFA (xác thực đa yếu tố) trên toàn domain.
Tiến hành kiểm tra bảo mật thường xuyên và đánh giá lỗ hổng bảo mật để xác định và khắc phục các rủi ro bảo mật tiềm ẩn.
Local accounts
Khi nói đến các hệ thống dựa trên Windows, tài khoản người dùng cục bộ (local user accounts) được lưu trữ trực tiếp trên máy chủ hoặc máy trạm. Các tài khoản này có thể được chỉ định quyền riêng lẻ hoặc thông qua thành viên nhóm, nhưng điều quan trọng cần lưu ý là các quyền này sẽ chỉ áp dụng cho máy chủ cụ thể đó và sẽ không được chuyển sang các hệ thống khác trong miền. Mặc dù được coi là nguyên tắc bảo mật nhưng tài khoản người dùng cục bộ chỉ có thể quản lý quyền truy cập và bảo mật tài nguyên trên một máy chủ độc lập.
Một số tài khoản người dùng cục bộ mặc định được tạo trong quá trình cài đặt Windows, bao gồm:
Administrator account - Tài khoản Quản trị viên, là tài khoản đầu tiên được tạo và có
SID S-1-5-domain-500. Tài khoản này có toàn quyền kiểm soát hầu hết các tài nguyên trên hệ thống và mặc dù không thể xóa hoặc khóa nhưng tài khoản này có thể bị vô hiệu hóa hoặc đổi tên. Windows 10 và Server 2016 vô hiệu hóa tài khoản quản trị viên tích hợp và tạo một tài khoản cục bộ khác trong nhóm quản trị viên trong quá trình thiết lập.Guest account - Tài khoản Khách, bị tắt theo mặc định. Tài khoản này nhằm mục đích cho phép truy cập tạm thời đối với người dùng chưa đăng ký tài khoản trên máy tính, nhưng do rủi ro bảo mật khi truy cập ẩn danh nên nên vô hiệu hóa tài khoản này.
SYSTEM account hoặc NT AUTHORITY\SYSTEM - Tài khoản HỆ THỐNG, là tài khoản mặc định được hệ điều hành cài đặt và sử dụng để thực hiện các chức năng nội bộ. Không giống như tài khoản Root trên Linux, đây là tài khoản dịch vụ và không chạy trong cùng bối cảnh với người dùng thông thường. Nhiều quy trình và dịch vụ chạy trong ngữ cảnh HỆ THỐNG và mặc dù không có hồ sơ nhưng nó có quyền đối với hầu hết mọi thứ trên máy chủ và không thể thêm vào bất kỳ nhóm nào. Theo mặc định, nó có quyền Full Control (Kiểm soát toàn bộ) đối với tất cả các tệp trên hệ thống Windows.
Network Service account - Tài khoản Dịch vụ Mạng, là tài khoản cục bộ được xác định trước được Service Control Manager (Trình quản lý Kiểm soát Dịch vụ sử dụng) để chạy các dịch vụ Windows. Tài khoản này trình bày thông tin xác thực cho các dịch vụ từ xa khi một dịch vụ đang chạy trong ngữ cảnh của nó.
Local Service account - Tài khoản Dịch vụ cục bộ, là một tài khoản cục bộ được xác định trước khác được Trình quản lý kiểm soát dịch vụ sử dụng để chạy các dịch vụ Windows. Tài khoản này được định cấu hình với các đặc quyền tối thiểu và cung cấp thông tin xác thực ẩn danh cho mạng.
Để hiểu toàn diện về cách các tài khoản khác nhau này hoạt động cùng nhau trong một hệ thống Windows riêng lẻ và trên mạng miền, bạn nên nghiên cứu kỹ tài liệu của Microsoft về các tài khoản mặc định cục bộ.



