Ired.Team Kerberoasting (Credential Access)
Ired.Team Kerberoasting (Credential Access)
Giải thích về các khái niệm
Kerberos trong Active Directory
- Trong môi trường Windows Active Directory (AD), Kerberos là giao thức xác thực mặc định. Nó sử dụng các ticket để xác thực người dùng và dịch vụ mà không truyền mật khẩu qua mạng.
Các thành phần chính:
- KDC
(Key Distribution Center): Thường là Domain Controller (DC). - TGT
(Ticket Granting Ticket): Cấp cho user sau khi đăng nhập thành công → dùng để xin ticket cho dịch vụ. - TGS
(Ticket Granting Service ticket): Là service ticket cho một dịch vụ cụ thể → dùng để truy cập dịch vụ đó.
SPN là gì? (Service Principal Name)
- SPN là một định danh duy nhất cho một dịch vụ trong domain.
- Định dạng:
ServiceClass/HostName[:Port] - SPN được lưu trong thuộc tính
servicePrincipalNamecủa đối tượng người dùng (user object).
TGS là gì?
- TGS
(Ticket Granting Service ticket)là ticket dùng để truy cập một dịch vụ cụ thể. - Khi user yêu cầu truy cập dịch vụ (ví dụ:
IIS trên HTTP/dc-mantvydas.offense.local). - Tìm tài khoản nào sở hữu SPN đó → ví dụ:
user svc_iis. - Tạo TGS, trong đó có phần
"server ticket"được mã hóa bằng mật khẩu hash củasvc_iis. - Gửi TGS cho client.
Kỹ thuật Kerberoasting là gì?
Lợi dụng việc TGS được mã hóa bằng mật khẩu hash của tài khoản dịch vụ để trích xuất ticket, rồi brute-force offline nhằm khôi phục mật khẩu gốc.
Mục tiêu của Kerberoasting?
- Cho phép bất kỳ user hợp lệ nào trong domain trích xuất
Ticket Granting Service (TGS) ticketdành cho các tài khoản dịch vụ cóSPN (Service Principal Name). - Những TGS này được mã hóa bằng
NTLM hashcủa mật khẩu gốc của tài khoản dịch vụ. - Kẻ tấn công có thể
brute-force offlineđể lấy mật khẩu → không gây lockout tài khoản, vì không thực hiện xác thực sai.
Build lab và tiến hành phân tích tấn công
Dựa theo những máy AD đã được tạo ở lab trước bây giờ ta sẽ tiến hành tạo tài khoản service trên máy dc-mantvydas.offense.local ta dùng lệnh sau :
1 | # Tạo user service |

Sau đó ta tiến hành gán SPN kiểu HTTP cho user ta vừa mới add đó ta dùng lệnh :
1 | setspn -S HTTP/dc-mantvydas.offense.local offense\iis_svc |

Sau đó ta tiến hành kiểm tra lại với lệnh :
1 | setspn -L offense\iis_svc |

Thành công kết quả trả về là HTTP/dc-mantvydas.offense.local. Vậy là ta đã có được SPN hoạt động trong domain được tạo bởi Domain Controller.
Tiến hành Execution

Đầu tiên ta tiến hành liệt kê ra các SPN(Service Principle Name) ở đây ta dùng máy dc-red thay vì máy DC ta có được kết quả HTTP/dc-mantvydas.offense.local vậy là đáp ứng được điều kiện user account phải có thuộc tính servicePrincipalName.

Bây giờ ta sử dụng lệnh :
1 | Add-Type -AssemblyName System.IdentityModel |
Để tiến hành request TGS ticket từ Kerberos.

Sau đó ta sẽ mở mimikatz để export ticket sau đó để đến với bước offline bruteforce.

Thành công thấy được ticket TGS.
Bây giờ ta sẽ đến với bước crack ticket để lấy được password.

Đưa file sang bên kali cho dễ crack.

Sử dụng script python có sẵn ta đã thành công crack ra password và nó là Passw0rd!.