Computer >> Hướng Dẫn Máy Tính >  >> Kết Nối Mạng >> An Ninh Mạng

GPP (Group Policy Preferences) trong an ninh mạng: Khái niệm, rủi ro, khai thác, phòng thủ

GPP (Group Policy Preferences) là gì?

Group Policy Preferences (GPP) là mở rộng của Group Policy (GPO) trong Active Directory, cho phép quản trị viên cấu hình các tùy chọn "không bắt buộc" (preferences) cho người dùng/máy tính tham gia domain. Khác với Policy (bắt buộc, áp dụng lại định kỳ), Preference chỉ áp dụng một lần (hoặc theo lịch) và người dùng có thể thay đổi cục bộ.

GPP vs GPO (Group Policy Object)

Đặc điểmGroup Policy (Policy)Group Policy Preferences (Preference)
Tính chấtBắt buộc (Mandatory)Tùy chọn / Mặc định (Optional/Default)
Áp dụng lạiMỗi 90-120 phút (Background refresh)Chỉ khi GPO áp dụng (logon/startup/refresh) - không ép buộc lại nếu user đổi
User có thể ghi đèKhông (Winlogon/GPO client enforce)Có (User có quyền local admin có thể đổi)
Lưu trữRegistry.pol (Sysvol)XML files trong Sysvol (\\Policies\\User/Machine\Preferences\*)
Ví dụPassword policy, Screen saver, Disable CMDMap drive, Shortcut, Printer, Local user/group, Scheduled task, Local Admin Password

Rủi ro bảo mật nghiêm trọng: GPP Password (CPassword)

Cơ chế lưu trữ mật khẩu trong GPP

  • Khi tạo GPP tạo user local / đổi pass local admin / map drive với credential, mật khẩu được lưu trong file XML trong SYSVOL (được replicate đến mọi Domain Controller).
  • Mật khẩu được mã hóa bằng AES-256 với khóa công khai (Public Key) - NHƯNG khóa riêng (Private Key) được Microsoft công bố công khai (trong tài liệu MSDN/MS14-025).
  • => Bất kỳ Domain User nào có quyền đọc SYSVOL (mặc định: Authenticated Users) đều có thể tải file XML, giải mã, lấy được mật khẩu plaintext.

Ví dụ file Groups.xml chứa cpassword

<Groups clsid="{3125E937-EB16-4b4c-9934-544FC6D24D26}">
  <User clsid="{DF5F1855-51E5-4d24-8B1A-D9BDE98BA1D1}" name="LocalAdmin" image="2" changed="2024-01-15 10:30:00" uid="{GUID}">
    <Properties action="U" newName="" fullName="" description="" cpassword="J1XeT...base64...AQ==" changeLogon="0" noChange="0" neverExpires="1" acctDisabled="0" subAuthority="RID_ADMIN" userName="LocalAdmin" />
  </User>
</Groups>

Trường cpassword (không phải "password" - spelling đúng) chứa mật khẩu được mã hóa AES-256 với khóa công khai Microsoft.

Khai thác GPP Password (Post-Exploitation)

Công cụ tự động hóa

  • Metasploit: post/windows/gather/credentials/gpp - Tự động tìm, tải, giải mã cpassword từ SYSVOL.
  • PowerSploit / PowerView: Get-GPPPassword, Get-GPPAutologon.
  • CrackMapExec (CME): cme smb -u 'user' -p 'pass' --gpp.
  • Impacket: gpprefdecrypt.py (giải mã thủ công).
  • BloodHound: Thu thập GPP data, hiển thị trong graph (GPPPassword edge).

Quy trình khai thác thủ công

  1. Kết nối domain (có user domain bất kỳ).
  2. Truy cập SYSVOL: \\domain.com\SYSVOL\domain.com\Policies\.
  3. Tìm file XML trong: Machine\Preferences\Groups\Groups.xml, User\Preferences\Groups\Groups.xml, DataSources\DataSources.xml, Printers\Printers.xml, Drives\Drives.xml, ScheduledTasks\ScheduledTasks.xml.
  4. Tìm thuộc tính cpassword (Base64 encoded).
  5. Giải mã bằng công cụ (AES-256 với khóa public Microsoft).
  6. Thu được mật khẩu plaintext của Local Admin / Service Account / SQL SA / v.v.

MS14-025: Bản vá bảo mật Microsoft (2014)

  • CVE-2014-1812 (GPP Password Vulnerability).
  • Sau bản vá: Ngăn chặn tạo mới GPP với cpassword (UI không cho nhập pass cho Local User/Group trong GPP).
  • Không xóa cpassword hiện có - quản trị viên phải tự dọn dẹp.
  • Khuyến nghị: Dùng LAPS (Local Administrator Password Solution) thay thế.

Phòng thủ và Khắc phục (Remediation)

  1. Kiểm tra toàn bộ GPO: Tìm tất cả file XML trong SYSVOL có chứa cpassword.
    PowerShell: Get-ChildItem -Path "\\domain.com\SYSVOL\domain.com\Policies\" -Recurse -Filter "*.xml" | Select-String "cpassword"
    
  2. Xóa cpassword: Sửa file XML (xóa thuộc tính cpassword) HOẶC xóa GPP setting đó > GPUpdate.
  3. Đổi mật khẩu tài khoản bị lộ: Bắt buộc đổi pass cho tất cả Local Admin / Service Account từng từng bị lưu trong GPP.
  4. Triển khai LAPS (Microsoft LAPS / Windows LAPS):
    • Quản lý mật khẩu Local Admin duy nhất, ngẫu nhiên, phức tạp cho mỗi máy.
    • Lưu trữ an toàn trong AD Attribute (msLAPS-Password) - chỉ Domain Admin đọc được.
    • Tự động xoay vòng (rotate) mật khẩu định kỳ.
  5. GPO Hardening:
    • Giới hạn quyền đọc SYSVOL (Authen Users vẫn cần đọc GPO bình thường - cân nhắc).
    • Audit GPO changes (Event ID 5136, 5137, 5138, 5139, 5141).
  6. Không bao giờ dùng GPP để lưu mật khẩu (Local user, Service account, SQL SA, Scheduled task credential, Drive map credential).

LAPS - Giải pháp thay thế chuẩn Microsoft

Đặc điểmGPP (Cũ, nguy hiểm)LAPS (Mới, an toàn)
Lưu trữ mật khẩuSYSVOL (XML, AES-256 với public key)AD Attribute (msLAPS-Password), ACL chặt chẽ
Ai đọc đượcMọi Domain User (Authenticated Users)Chỉ Domain Admins / LAPS Admins (delegate)
Mật khẩuTĩnh, thường yếu, dùng chung nhiều máyNgẫu nhiên, phức tạp, duy nhất mỗi máy, tự rotate
Quản trịHandmade, dễ quên, không auditTích hợp AD, GUI/PS, Event log, Reporting

Tóm tắt

GPP cpassword là lỗ hổng nghiêm trọng (CVE-2014-1812) cho phép bất kỳ Domain User nào leo quyền thành Local Admin trên máy có GPP push mật khẩu. Mặc dù Microsoft đã chặn tạo mới (MS14-025), hàng nghìn domain vẫn còn GPP cũ chứa cpassword. Phải dọn dẹp ngay: Tìm cpassword > Giải mã > Đổi pass > Xóa cpassword > Triển khai LAPS.