UAC (User Account Control)
- UAC là một tính năng cho phép hiển thị thông báo yêu cầu đồng ý cho các hoạt động cần đặc quyền nâng cao. Khi UAC được bật, các ứng dụng hay tác vụ sẽ luôn chạy dưới quyền của một tài khoản không phải quản trị viên (trừ khi quản trị viên cấp quyền cho tài khoảng này quyền truy cập).
- Khi UAC được áp dụng, người dùng quản trị viên được cấp 2 token: một khóa tiêu chuẩn để thực hiện những hành động thông thường và một khóa với quyền quản trị viên.
UAC Bypass Theory
- Một số chương trình được tự động nâng quyền nếu người dùng thuộc nhóm quản trị viên và sử dụng các loại tệp thực thi trên để chạy mã tùy ý.
Kiểm tra UAC
-
Để kiểm tra UAC có được bật không thì ta có thể thực hiện:
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System –- EnableLUA –- REG_DWORD –- 0x1
-
Nếu giá trị là 0x1 có nghĩa UAC đã được kích hoạt, nếu là 0 hoặc không tồn tại thì UAC không được kích hoạt.
-
Sau đó kiểm tra level của cấu hình:
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System –- ConsentPromptBehaviorAdmin –-REG_DWORD –- 0x5
- Nếu giá trị là 0x0: UAC sẽ bị tắt.
- 0x1: Quản trị viên yêu cầu username và password để thực thi file với các đặc quyền cao.
- 0x2 (Always notify me): UAC sẽ luôn yêu cầu xác nhận khi cố gắng thực thi với đặc quyền cao .
- 0x3: Giống 0x1 nhưng không cần thiết trên Secure Desktop.
- 0x4: Giống 0x2 nhưng không cần thiết trên Secure Desktop.
- 0x5 (mặc định): Luôn yêu cầu quản trị viên xác nhận để chạy các tệp nhị phân mà không phải của Windows với đặc quyền cao.
-
Một value trong Registry mà ta cần để ý là LocalAccountTokenFilterPolicy . Nếu giá trị này được đặt là 0 thì chỉ có các tài khoản Admin mặc định (RID 500) mới có toàn quyền truy cập từ xa. Nếu giá trị là 1 thì tất cả các tài khoản bên trong nhóm Admin có thể thực hiện các tasks mà không yêu cầu UAC.
-
Và giá trị cuối mà cần để ý là FilterAdministratorToken. Giá trị này nếu được đặt là 0 có nghĩa tài khoản Admin mặc định có toàn quyền khi đăng nhập cục bộ, nếu là 1 thì tài khoản Admin sẽ hoạt động như một tài khoản User tiêu chuẩn khi đăng nhập cục bộ và cần sử dụng UAC để nâng quyền.
-
Tóm tắt:
- Nếu EnableLUA=0 hoặc không tồn tại -> UAC bị vô hiệu hóa.
- Nếu EnableLUA=1 và LocalAccountTokenFilterPolicy=1 -> UAC bị vô hiệu hóa.
- Nếu EnableLUA=1 và LocalAccountTokenFilterPolicy=1 và FilterAdministratorToken=0 -> UAC bị vô hiệu hóa đối với RID 500.
- Nếu EnableLUA=1 và LocalAccountTokenFilterPolicy=0 và FilterAdministratorToken=1 -> UAC được bật với mọi tài khoản.
Access Tokens
Mỗi người dùng đăng nhập vào trong hệ thống sẽ nắm giữ một token cho phiên đăng nhập đó. Hệ thống tạo một access token khi người dùng đăng nhập. Mỗi tiến trình được thực thi đại diện cho người dùng đều có một bản copy của access token. Token này định danh người dùng, nhóm người dùng và các quyền của người dùng. Một token cũng chứa một SID đăng nhập (Security Identifier) để định danh phiên đăng nhập hiện tại.
- Lấy một ví dụ thực tế để dễ hiểu hơn:
- A nhập username và password để đăng nhập vào máy Windows, hệ thống sau đó xác thực thông tin đăng nhập của A.
- Khi đã xác thực thành công, Windows tạo một token truy cập cho A. Token này chứa định danh, các group mà A thuộc về, các đặc quyền của A và SID đăng nhập duy nhất cho mỗi phiên làm việc này của A.
- Về việc token được sử dụng như thế nào thì khi A mở excel để làm việc với một bảng tính nào đó thì excel sẽ nhận một bản sao của token truy cập. Excel sử dụng thông tin này để xác định A là người đang sử dụng và A có quyền mở, chỉnh sửa file kế toán này hay không.
- Khi kết thúc phiên đăng nhập, token này sẽ bị hủy. Với lần đăng nhập tiếp theo thì token mới sẽ được tạo với mộ SID đăng nhập khác.
Các loại token
Primary Token
Đây là token đại diện cho thông tin xác thực bảo mật cho một tiến trình. Khi một dịch vụ xác thực chịu trách nhiệm tạo token sẽ có một dịch vụ đăng nhập xử lý việc liên kết nói với shell hệ điều hành của người dùng.
- Ví dụ:
- A đăng nhập vào máy, Winlogon.exe quản lý quá trình đăng nhập.
- Winlogon.exe gửi thông tin đăng nhập cho Local Security Authority Subsystem Service (LSASS). LSASS xác thực thông tin và tạo một primary token cho A chứa SID của A, các nhóm của A và các quyền.
- Windows sau đó khởi động explorer.exe, primary token của A được gán cho explorer.exe.
- Khi A vào excel thì explorer.exe (lúc này là tiến trình cha) sẽ tạo một tiến trình con cho excel. Excel sẽ kế thừa primary token từ explorer.exe.
- Khi mở excel thì nó có quyền truy cập giống như A là có thể mở các file "Kế toán", …
- Nếu A cố gắng truy cập một file hoặc thực hiện một hành động ngoài quyền thì Windows sẽ kiểm tra token và thấy A không có quyền admin, Windows sẽ hiển thị UAC và yêu cầu thông tin admin.
Impersonation Token
Trong môi trường doanh nghiệp, một máy chủ file có thể sử dụng token mạo danh để truy cập file đại diện cho người dùng.
* Ẩn danh: Máy chủ truy cập file công khai không cần xác thực.
* Nhận dạng: Máy chủ xác minh danh tính người dùng nhưng không sử dụng nó để truy cập.
* Mạo danh: Máy chủ truy cập file cá nhân của người dùng bằng quyền của họ.
* Ủy quyền: Máy chủ có thể truy cập file trên máy chủ khác thay cho người dùng.