Trong bài viết trước, chúng tôi đã nói rằng một trong những cách phòng thủ chống lại các tiện ích như mimikatz là vô hiệu hóa đặc quyền debug cho quản trị viên hệ thống bằng chính sách Debug Program. Tuy nhiên, gần đây đã tiết lộ rằng nếu không có đặc quyền debug (là SeDebugPrivilege trong Windows), quản trị viên máy chủ cục bộ không thể cài đặt hoặc cập nhật Microsoft SQL Server. Vấn đề là khi khởi động, trình cài đặt SQL Server kiểm tra xem có đặc quyền SeSecurity, SeBackup và SeDebug hay không. Nó cần chạy quy trình SQL Server và lấy thông tin về việc khởi động thành công của SQL Server. Đây là trông nó như thế nào.
Trong quá trình cài đặt SQL Server, trình cài đặt thực hiện các kiểm tra sơ bộ và xác định một số vấn đề với Setup account privileges.
Nếu bạn nhấp vào liên kết Failed, bạn có thể thấy thông báo sau:
Rule “Setup account privileges” failed.
Tài khoản đang chạy SQL Server Setup không có một hoặc tất cả các quyền sau: quyền sao chép tệp và thư mục, quyền quản lý kiểm toán và nhật ký bảo mật và quyền gỡ lỗi chương trình. Để tiếp tục, hãy sử dụng tài khoản có cả hai quyền này. Để biết thêm thông tin, xem https://msdn.microsoft.com/en-us/library/ms813696.aspx, https://msdn.microsoft.com/en-us/library/ms813959.aspx và https://msdn.microsoft.com/en-us/library/ms813847.aspx.
Bây giờ mở báo cáo SystemConfigurationCheck_Report.htm.
Như bạn thấy, khi kiểm tra quy tắc HasSecurityBackupAndDebugPrivilegesCheck, trình cài đặt đã thấy quy trình hiện tại không có một trong các đặc quyền sau:
- SeSecurity – quản lý kiểm toán và nhật ký bảo mật
- SeBackup – quyền sao chép tệp và thư mục
- SeDebug — đặc quyền gỡ lỗi chương trình
Có một số thông tin chi tiết trong nhật ký cho thấy quy trình cài đặt không có cờ SeDebug.
(09) 2017-12-12 11:15:13 Slp: Initializing rule : Setup account privileges (09) 2017-12-12 11:15:13 Slp: Rule is will be executed : True (09) 2017-12-12 11:15:13 Slp: Init rule target object: Microsoft.SqlServer.Configuration.SetupExtension.FacetPrivilegeCheck (09) 2017-12-12 11:15:13 Slp: Rule ‘HasSecurityBackupAndDebugPrivilegesCheck’ Result: Running process has SeSecurity privilege, has SeBackup privilege and does not have SeDebug privilege. (09) 2017-12-12 11:15:13 Slp: Evaluating rule : HasSecurityBackupAndDebugPrivilegesCheck (09) 2017-12-12 11:15:13 Slp: Rule running on machine: rom-sql10 (09) 2017-12-12 11:15:13 Slp: Rule evaluation done : Failed
Tôi đã quyết định tìm giải pháp thay thế để lấy SeDebugPrivilege mà không thay đổi hoặc vô hiệu hóa chính sách Debug programs. Rõ ràng là có một cách khá dễ dàng để bỏ qua chính sách này nếu bạn có đặc quyền quản trị viên cục bộ trên máy chủ của mình. Công cụ secedit cho phép quản lý chính sách bảo mật cục bộ của máy chủ sẽ giúp chúng ta.
Kiểm tra đặc quyền hiện tại:
whoami /priv
Như bạn thấy, không có SeDebugPrivilege trong token hiện tại của người dùng.
Xuất tập hợp quyền người dùng hiện tại được đặt bởi chính sách nhóm vào file văn bản:
secedit /export /cfg secpolicy.inf /areas USER_RIGHTS
Sử dụng bất kỳ trình soạn thảo văn bản nào, mở secpolicy.inf và thêm một chuỗi vào phần [Privilege Rights] cho phép đặc quyền Debug Programs cho nhóm quản trị viên cục bộ.
SeDebugPrivilege = *S-1-5-32-544
Lưu ý. SID của nhóm quản trị viên cục bộ, S-1-5-32-544, có thể được thay đổi bằng bất kỳ SID nào khác. Để chuyển đổi tên nhóm hoặc người dùng thành SID, xem Cách chuyển đổi SID thành UserName và ngược lại.
Lưu file. Bây giờ áp dụng quyền người dùng mới:
secedit /configure /db secedit.sdb /cfg secpolicy.inf /overwrite /areas USER_RIGHTS
Lưu ý. Bạn phải xác nhận ghi đè cài đặt hiện tại.
Đăng xuất và đăng nhập lại và sử dụng secpol.msc đảm bảo rằng đặc quyền Debug Program được gán cho nhóm quản trị viên cục bộ. Cùng được hiển thị trong kết quả lệnh whoami /priv:
SeDebugPrivilege Debug programs Enabled
Bây giờ bạn có thể chạy cài đặt hoặc cập nhật SQL Server của mình. Nhưng hãy nhớ rằng SeDebugPrivilege được gán tạm thời và sẽ được đặt lại tại chu kỳ cập nhật GPO tiếp theo (sau khi người dùng đăng xuất).
Bạn nên hiểu rằng nếu bạn bật chính sách Debug programs, nó sẽ không bảo vệ hoàn toàn bạn khỏi việc lấy SeDebugPrivilege bởi phần mềm độc hại đã xâm nhập vào máy chủ của bạn với quyền quản trị viên cục bộ, và nó có thể xâm phạm tất cả tài khoản người dùng/quản trị viên làm việc trên máy chủ.