Kerberos Armoring

๐Ÿ”’ Secure Bits ๐Ÿ’ก
Do you use ๐—ž๐—ฒ๐—ฟ๐—ฏ๐—ฒ๐—ฟ๐—ผ๐˜€ ๐—”๐—ฟ๐—บ๐—ผ๐—ฟ๐—ถ๐—ป๐—ด in your environment?

If youโ€™ve followed my ๐—ฝ๐—ฟ๐—ฒ๐˜ƒ๐—ถ๐—ผ๐˜‚๐˜€ ๐—ฝ๐—ผ๐˜€๐˜๐˜€ on Kerberos internals, Kerberoasting, and Authentication Policies & Silos โ€” this oneโ€™s for you.

Letโ€™s talk about Kerberos Armoring, technically known as FAST (Flexible Authentication Secure Tunneling) โ€” an ๐˜‚๐—ป๐—ฑ๐—ฒ๐—ฟ๐˜‚๐˜€๐—ฒ๐—ฑ ๐—ฏ๐˜‚๐˜ ๐—ฝ๐—ผ๐˜„๐—ฒ๐—ฟ๐—ณ๐˜‚๐—น ๐—น๐—ฎ๐˜†๐—ฒ๐—ฟ of protection.

๐Ÿ’ฅ ๐—ช๐—ต๐˜† ๐—ถ๐˜ ๐—บ๐—ฎ๐˜๐˜๐—ฒ๐—ฟ๐˜€:
During the initial Kerberos authentication (AS-REQ), a client sends:
๐Ÿ”น Client Name (username)
๐Ÿ”น Service Name (usually krbtgt)
๐Ÿ”น Encrypted timestamp (using a key derived from the userโ€™s password)

An attacker who captures this traffic can ๐—ฏ๐—ฟ๐˜‚๐˜๐—ฒ-๐—ณ๐—ผ๐—ฟ๐—ฐ๐—ฒ the encrypted timestamp offline to recover the ๐˜‚๐˜€๐—ฒ๐—ฟโ€™๐˜€ ๐˜€๐—ฒ๐—ฐ๐—ฟ๐—ฒ๐˜ ๐—ธ๐—ฒ๐˜† (potentially NT hash) โ€” enabling impersonation or password recovery.

๐Ÿ›ก๏ธ ๐—ช๐—ต๐—ฎ๐˜ ๐—ž๐—ฒ๐—ฟ๐—ฏ๐—ฒ๐—ฟ๐—ผ๐˜€ ๐—”๐—ฟ๐—บ๐—ผ๐—ฟ๐—ถ๐—ป๐—ด ๐—ฑ๐—ผ๐—ฒ๐˜€:
Kerberos Armoring protects these sensitive exchanges by encapsulating them in a secure tunnel, established using the computerโ€™s own TGT session key.
โžก๏ธ This blocks offline brute-force attacks by encrypting the entire pre-auth request with strong key.
โžก๏ธ Without the session key โ€” attackers get nothing usable.

โš™๏ธ ๐—›๐—ผ๐˜„ ๐˜๐—ผ ๐—ฒ๐—ป๐—ฎ๐—ฏ๐—น๐—ฒ ๐—ถ๐˜:
โœ… On clients (GPO):
Kerberos client support for claims, compound authentication, and Kerberos armoring
โœ… On domain controllers (GPO):
KDC support for claims, compound authentication, and Kerberos armoring

๐Ÿง  If you want to enforce it (๐—ณ๐—ฎ๐—ถ๐—น ๐—ถ๐—ณ ๐—ป๐—ผ๐˜ ๐—ฎ๐˜ƒ๐—ฎ๐—ถ๐—น๐—ฎ๐—ฏ๐—น๐—ฒ), you can set:
Fail authentication requests when Kerberos armoring is not available

๐Ÿ’ฌ ๐—”๐—ฟ๐—ฒ ๐˜†๐—ผ๐˜‚ ๐—ฒ๐—ป๐—ณ๐—ผ๐—ฟ๐—ฐ๐—ถ๐—ป๐—ด ๐—ž๐—ฒ๐—ฟ๐—ฏ๐—ฒ๐—ฟ๐—ผ๐˜€ ๐—”๐—ฟ๐—บ๐—ผ๐—ฟ๐—ถ๐—ป๐—ด, or is your domain still vulnerable to offline password attacks?