Kerberoasting

Ý tưởng

Kerberroasting là kiểu tấn công lợi dụng hành vi đặc biệt của SPN (Service principal name).

Hiểu nôm na SPN là một user dùng để chạy services trong AD. Một số services sẽ cần quyền admin local để khởi chạy, do đó đôi khi SPN sẽ có quyền admin local, hoặc lý tưởng hơn SPN được set up có quyền domain admins. Tham khảo : https://en.hackndo.com/service-principal-name-spn/

SPN có một hành vi độc lạ, là ta có thể request TGS với bất kỳ SPN nào. Tức là ta có thể giả danh SPN để request TGS, vì TGS -REP sẽ được mã hóa bằng hash của user, nên khi ta nhận được TGS-REP ta cũng sẽ nhận được hash của user SPN, từ đây ta có thể crack và lấy được cleartext

Tóm lại mục đích của Kerberoasting là lấy được hash hoặc lý tưởng hơn là cleartext password của SPN. Tùy thuộc theo từng tình huống thì account SPN sẽ có quyền thấp hoặc cao trong hệ thống AD.

Điều kiện để exploit:

  • Có foothold trong hệ thống (máy join-domain hoặc creden hợp lệ)

Exploit Kerberoasting bằng Linux

Recon SPN users

Đầu tiên ta cần biết được trong AD có những SPN users nào, được phân quyền ra sao. Đánh giá xem có khả thi hoặc đáng để Kerberoasting hay không.

Ta dùng GetUserSPNs.py của impacket

GetUserSPNs.py -dc-ip <domain_ip> <domain_name>/<domain_user>:<domain_password>
GetUserSPNs.py -dc-ip 172.16.5.5 INLANEFREIGHT.LOCAL/sqldev:database!

Request TGS ticket

Cracking

Cuối cùng là crack TGS với Hashcat

Exploit Kerberoasting bằng Windows

Manual

Enumerating SPNs with setspn.exe

Request TGS

Lúc này TGS đã ở trong memmory, ta dùng Mimikatz để dump

Ta có thể bỏ output base64 để ra trực tiếp file .kirby rồi dùng hashcat để crack

Cracking

Nếu output là base64 thì ta cần 1 bước decode rồi chuyển về file .kirbi

Bắt đầu crack

Automic tools

Dùng PowerView

Dùng Rubeus

Note

Tùy thuộc vào loại hash được sử dụng để mã hóa sẽ ảnh hưởng đến tỷ lệ thành công của Kerberoast. Ví dụ hash mã hóa RC4 thì dễ crack hơn AES126-256

Ta có thể check xem user SPN đang được dùng loại thuật toán mã hóa nào bằng câu lệnh:

Ta đối chiếu kết quả của cột msds-supportedencryptiontypes với bảng trong link này https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/decrypting-the-selection-of-supported-kerberos-encryption-types/ba-p/1628797

Hoặc kết quả của Rubeus cũng hiển thị

Tuy nhiên ta có thể bypass bằng cách dùng flag /tgtdeleg trong Rubeus. Flag này sẽ nói cho rubeus request và chỉ chấp nhận ticket trả về được mã hóa bởi RC4. Lúc này cho dù SPN users được setup với loại mã hóa nào đi nửa, thì cũng bị buộc chuyển sang RC4. Từ đó ta có thể dễ dàng crack hơn. Đây có thể coi là một trong những tính năng kỳ lạ của AD, có thể mục đích của nó là giúp tương thích ngược giữa hệ thống mới và cũ

Cách bypass trên không hoạt động với phiên bản Windows Server 2019 trở lên. Vì từ phiên bản này TGS sẽ luôn được trả về với thuật toán mã hóa có level cao nhất mà account đó hỗ trợ, ko thể bypass

Last updated