The User presents the TGT to the DC when requesting a Ticket Granting Service (TGS) ticket (TGS-REQ). Also Will Schroeder, aka Will Harmjoy (@harmj0y), and I spoke at DerbyCon 2016 about how to Kerberoast to escalate privileges. RC4 Encryption - Easily encrypt or decrypt strings or files. domain functional 2008 and above) the value of the msDS-SupportedEncryptionTypes field on the account with the requested SPN registered is what determines the encryption level for the service ticket returned in the Kerberoasting process. Each SPN starts with a SPN type which is the first part of the SPN. 2017.01.23 Daily Security Issue ReverseNote, Sneaky Persistence Active Directory Trick #18: Dropping SPNs on Admin Accounts for Later Kerberoasting Active Directory Security, Detecting Kerberoasting Activity Active Directory Security, Detecting Kerberoasting Activity Part 2 Creating a Kerberoast Service Account Honeypot Active Directory Security, Trimarc Research: Detecting Kerberoasting Activity TRIMARC, BloodHound 1.3 The ACL Attack Path Update wald0.com, A Case Study in Wagging the Dog: Computer Takeover, Not A Security Boundary: Breaking Forest Trusts. The DC opens the TGT & validates PAC checksum If the DC can open the ticket & the checksum check out, TGT = valid. Dont turn off Kerberos Pre-Authentication unless its necessary theres almost no other way to completely mitigate this attack other than keeping Pre-Authentication on. Copyright 2023 harmj0y | Designed by Felicity Brigham Design, is a C# Kerberos abuse toolkit that started as a port of, toolset and has continued to evolve since then. Tim Medins DerbyCon Attacking Microsoft Kerberos Kicking the Guard Dog of Hades presentation in 2014 (. Copyright 2023 harmj0y | Designed by Felicity Brigham Design, presented a new attack technique he christened , . method can be used to carve out the service ticket bytes from KerberosRequestorSecurityToken, meaning we can forgo Mimikatz for ticket extraction. Hopefully this cleared up some of the confusion some (like me) may have had surrounding different encryption support in regards to Kerberoasting. The service opens the TGS ticket using its NTLM password hash. For more information on Rubeus, check out the "From Kekeo to Rubeus" release post, the follow up "Rubeus - Now With More Kekeo", or the recently revamped . Could you give me a hint how you were able to utilize hashcat for the cracking stage? Remember that just requesting this ticket doesnt grant access to the requesting user, as its up to the server/service to ultimately determine whether the user should be given access. This attack is effective since people tend to create poor passwords. More and more attention has been brought to Kerberoasting recently, with @mubix releasing a three part series on the topic, Sean Metcalf covering it several times, and @leonjza doing a detailed writeup as well. This means that even if you enable AES encryption for user accounts with servicePrincipalName fields set, these accounts are still Kerberoastable with the hacker-friendly RC4 flavor of encryption keys! comparing the different Rubeus Kerberoasting approaches: As a final note, Kerberoasting should work much better over domain trusts, . August 31, 2017 TL;DR There are a lot of great blogs out there that show you how to Kerberoast. Logging 4769 events on Domain Controllers, filtering these events by ticket encryption type (0x17), known service accounts (Account Name field) & computers (Service Name field) greatly reduces the number of events forwarded to the central logging and alerting system. I cover AdminCount in an earlier post (Active Directory Recon Without Admin Rights). Domain Admin) rights, you can always downgrade a user to reversible encryption and then DCSync their plaintext password, so this approach is only really useful in cases where you encounter these type of rights before youre able to elevate on the domain itself. Thanks for the heads up, will try to check into this over the next few days. Managed Service Accounts and Group Managed Service Accounts are a good method to ensure that service account passwords are long, complex, and change regularly. Kerberoast. If we want to go a bit further and avoid the possible encryption downgrade indicator, we can search for accounts that dont have AES encryption types supported, and then state we support all encryption types in the service ticket request. For more information on Rubeus, check out the From Kekeo to Rubeus release post, the follow up Rubeus Now With More Kekeo, or the recently revamped Rubeus README.md. What I mean is, say there are 100 hosts I am interested in getting access on in a domain of tens of thousands of machines. We can confirm this the result of doing a dir \\primary.testlab.local\C$ command followed by Rubeus.exe klist : However, this property is only set by default on computer accounts, not user accounts. Domain Controllers can log Kerberos TGS service ticket requests by configuring Audit Kerberos Service Ticket Operations under Account Logon to log successful Kerberos TGS ticket requests. Enabling this audit category on Domain Controllers will result in two interesting event ids being logged: We are now no longer dependent on Mimikatz for ticket extraction! \Temp>SharpRoast.exe all SamAccountName : harmj0y DistinguishedName : CN=harmj0y,CN=Users,DC=testlab,DC=local ServicePrincipalName . Targeted Kerberoasting (Harmj0y) Kerberoasting without Mimikatz (Harmj0y) Roasting AS REPs (Harmj0y) Sean Metcalf's Presentations on Active Directory Security; Kerberoast (GitHub) Tim Medin's DerbyCon "Attacking Microsoft Kerberos Kicking the Guard Dog of Hades" presentation in 2014 (slides & video). That looks really odd. If you impersonate this account and create a golden ticket, you will have the the ability to create a service ticket for anything you want. to get DES Kerberos tickets. CONTROLLER-1/HTTPService.CONTROLLER.local:30222 HTTPService 2020-05-26 00:39:17.578393 2020-05-26 00:40:14.671872, $4d15890a36dde47beab3a832fb4cc2b9$155f9293736bf74296b26ba4c434231b973aed178db5edf7f9f5ff301618e6f312ef2237aaaa3b570189e5a310eebdd40500f7e96502d18ab2f0a85ccf8c33cb7b252eb0ffa984368df566afc4eec1da00a8d060f57d87d7ace33e443bfb1be1813c34b042614621b39ad6bff805bfea3dc7c344ab5db262dd6fa2c3af8ef1051f9a140bcb7eed77e54c496cc07017596f5a09e9d7b40aae924baa2391d6483d796a32befcff34a8e3d013f27b75a1f5640ec5082bce5ae3657f37438f834ad1d394e60fb18c8558f5140774832dd3c1d8e5f3cfb4a22c4ee2976d989d67fb7cc289991b1f055479cc88449225fbc8fd7515407b14ee0e9ad179b6cb6ca7545e65b4d2b1ee57e12d80642f1f007493b9d96371559b56cfb62a35acc801ae4ca2565cfd55ca4ef91c9121e298b575719f6f41f42f60d7ebf1282c43263fb96dba3d07cd578aaa41210a787dec9066582cab7d13ea887803c1b29a8c6128fb7b7804ef6b42d220a700f267238d263d88d1b5fb38a6ad191cadf5969271e600f9e9e07ebd9fb4b427bd2ba1bc010e200a2a85c97d4702d17191cf7023788f7938f0ecfa1382bd5e4dbb086cf1ed53862e9a9e84c6fa340df05761059d8e8f92b414bb30a1c15c93f92bcbf7d7dae797282c616a6b31bbe136d3fd7d4253e4af257a9977ace8008a106829bc7b0ade5909d4a9b1a3ec306b95e7bbced14799c0b9675bc252d4e1ed20ca42327a587dadd1edd248fdebb0b1d2aad4604e6822ef5127ecb7d4abd2f72420f162c1a25b6043ffb2a1c8b62f1a8bf78568dd403c725827d7f3d2e8453eb21385bdd1b9d1257c48b4e946422ef8b578028fa4b7aec3bd33bc5ee5b265191c94c57c47019c7fdf8011c01e06b46a24c3f21b1ba17ba7cbd7b876c0fb83467530c8529bbb855f5a868ba1519849ee9c97cc3456a5412d8a20b5b60336db361b38ddf0681e1749cfc0766a2640fc877629a8cb84c03a5dc63e4649ffc83af919e6307026dc61ac23df1c16466933e3a3acd136946b2359a60553255fc3f32da9991f5fc6d97c0656220f660ea576c434e5e30b9a5dda0df1b9094ed2c4f8ca184bd1ef31a96db97e218cbeebace0c14d6d6d92662d7222ef48ae02cc33f9ec38f9992a5ef72a24b90787f4802cf364124e4a1c25ddec5f22d0f5dd29f303182e99732a129fb5c77f7af82ffa10b1685d814462ad09fa65c17a958b6ca60fa73ff858b0e315020a662cb27d99ed2984431910aa4c6258b9d7050c8dff72dffa0960ddd8541f0a0933bcfe93403439ea938a40b3c8d41a11a45e1ba93c0e5de4c9dc81f4cfb47fcc2e892d1e5b1868a00b1a6e6360046aae9d11d9d9cdecfb190fceae1ca3df654de190fb, $ec9862c299884035e696537b24e10eeb$53723dc0ca8ffc479b92b7139b96d90e72800baffa1d10c5ef6b3351e2b9a6ce12b385555b8777a289a769623a3c3659907e344f4dea5aa750b806ff3e6ebfdd938fa4fe14e555be46eec324d99debe93f51ac6c5fe491091835a466383858b327894d504487d6596f0bfe758cc047e9076a3f9b941288a5e141fa05362fcb47d6073b684c34ae3c31f61de6826113f40328a2e3315e5ba5661c392289d18c819a3c5aec151ec8c60ac81dd33844b1c1c2407f376ef23ed05feb59ee7e1259c87455f6d4696fd02770bcb5fb78fcf9000a84b76286e28600ce81ed1a78b95d3c15cba33d863ae23a39d4b45344200bf194f49afb5f828040189f66244f6d4b7c27ff090aeeecec1b4f7132e95581ff85ad10a279f522415dfbe6518251c4a166c66309f93f9cef5aa85e7044d06b3cbf95d51ce3fc5998fcaf23613db05f6e22fc9651998191f67f56fd68a421b5e9225472e7cc58292e18358f81c4b06b743da9f3f8d32418c4d8cda6002341094d291c7b156d1b749028088eb4c79d7d9e1fdc2890d890f565151928f85c9a0957a58276519411c789b8277a7e563e38ade046d75c3702bedfb964ef6c234639ef2893166c806de39fd7671f2eb8f7c65022ab69584957739c59a7e931098e54cfd3a8122d155e50711c3cec84866ea73b55f3c57d586f6b36cf45bbab116d85cd146394945c0b0fbbc27a79055b3f8144504d5a72da0e983ba8123de23c6b07aa75209d21bf635d6e9027937b2860286cebf9b99c55abfa571c04a9e600cf13695e42dfd16606af7ecff7116676834e270b6cfaf605d7171812896d819851ac3a4e63cc1f7ff470e5b880dee423f99194e8097fc41966b459f21b1a284c10e04af207fe7346099c4cdd6e8e6bc35cbcacb0eec640af0a52e3ada07ef568fc53531aeee42a58d12c9cfb960f66f44fdfa3ba23214934a3a15261d233c691fb0133d1f300ec687599b0f07a0d983faeacb1134e3182f2133bda84bb9c0f4c62ccee1e9d796a46a38f6a701998605ea21c25684db58a4213469fa4461c1cf009f99e7cebf813daccfbf6854353f06ce6f6789a36e5c789caf4dd303bb0d96fb2ad209bef06399d5c9349a72769c621cb4fb019c8fe3ccdec34cf20e8708775f1507f49d3b77ae977519ab3b1db48af9669492abd303793b09cf9532e529aaf7d33f389e2eb421c6f08da674fc7c071b745417c315c1b159847cd3953a6a177f95c155ef1cb2c1f0014533ae51197bbcb28edff29c32ae5339e24ac2fd4b715e722df225317f6330f4d053c16893fb78dfe356b35e947e574d53e9dfeafba132960e1c6c745b16c2e72087ca02ab7ff253d21da8adea1414f5fb14183597040a05895ae88, $1052948c7ed2ed42fd08a3134a49764f544d0aeb7e29238f3c2bd9fbf6ebddb76f0ebef62a50a35cd1c37b1ae4da4579344fb818aa2acb7e19e634a6d77aacd6ffd58bac470579e3b6edde6fd4a3a5e956000a1241d02c03b0397775eb788e4b86b1c42ac4fbc91a27a1cbeaae9b11baedee2718b3c0b346405ae5b033cae69a853f9ad5bf7fe5a4b7099aa3e5d65d1e555da846c4484dc07fd45b64b371a2d550a7fd821cfc0e8d1b2a4675fa47950779707b08782ad2e30f532cc444613cc0f92f1e920b0e650485c5a635f66015be94e2b17a18d6e5de21820efe9fb0f7365e83fa7bfa90de46b4d204c24045a3e2c4d2cf2d, $a782dcc43409b182863770dc7cd5f51f8c024bb6e76e4572e5588cb5357ce93d5900cd266c58a934763a2ccbe45f5ccb01fdeb3794948c3f28e196957a4b451f0332691d55a5ccc591dbfd69c7dba8082d0d9706ed7b99bab24db7ec5881f45b258e5c221429e9c8b776b19c75c86a221a393a77ee60cbe0f4be5a8d239cb81bca53432409572f9b18280fa43626f4209bda4e814ca67762fddd24fd754fd69defe19b11932cef952c3b5403e5734c45dd81b075f346543d538a92f0c88dd6d3d810633e38df0b4f75dc0caae4e9296c026d3fb46968de35af5db76841e192113554ef1373b3c6506b3b8bba5c78d0f3585e3a3b, Abusing Microsoft Kerberos: Sorry You Guys Dont Get It, https://medium.com/@t0pazg3m/pass-the-ticket-ptt-attack-in-mimikatz-and-a-gotcha-96a5805e257a, https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/as-rep-roasting-using-rubeus-and-hashcat, https://posts.specterops.io/kerberoasting-revisited-d434351bd4d1, https://www.harmj0y.net/blog/redteaming/not-a-security-boundary-breaking-forest-trusts/, https://www.varonis.com/blog/kerberos-authentication-explained/, https://www.blackhat.com/docs/us-14/materials/us-14-Duckwall-Abusing-Microsoft-Kerberos-Sorry-You-Guys-Don't-Get-It-wp.pdf, https://www.sans.org/cyber-security-summit/archives/file/summit-archive-1493862736.pdf, https://www.redsiege.com/wp-content/uploads/2020/04/20200430-kerb101.pdf, CRTO Review (Certified Red Team Operator) & Notion Templates, OSCP Review (Cheat Sheet, Tmux Enumeration Scripts and Notion Templates). Learn how your comment data is processed. New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList $SPNName. Note: No elevated rights are required to get the service tickets and no traffic is sent to the target. However the enc-part part we care about for Kerberoasting (contained within the returned service ticket) is encrypted with the RC4 key of the sqlservice account, NOT its AES key: It turns out that this has nothing to do with the KerberosRequestorSecurityToken method. Given modification rights on a target, we can change the users serviceprincipalname to any SPN we want (even something fake), Kerberoast the service ticket, and then repair the serviceprincipalname value. Will Schroeder Follow Offensive Engineer Advertisement Advertisement Advertisement Recommended Lets quickly cover how Kerberos authentication works before diving into how Kerberoasting works and how to detect Kerberoast type activity. I recently rolled the necessary functions into a single, self-contained script that contains the necessary components from PowerView (this has also been updated in Empire). Tips: to create a silver ticket simply put a service NTLM hash into the krbtgt slot, the sid of the service account into sid, and change the id to 1103. The ticket options may be different, so just filter on 4768 & 4769 events with Ticket Encryption: 0x1 OR 0x2 OR 0x3. If we implement the protocol on the attacker side, we can choose to indicate we only support RC4 during the service ticket request process, resulting in the easier to crack hash format. This approach is still dependent on the target user having a weak/crackable password, but its a nice alternative to force-resetting the users password. I have presented and posted on potential methods to detect Kerberoasting activity in the past: Detection is a lot tougher since requesting service tickets (Kerberos TGS tickets) happens all the time when users need to access resources. When I run it with no -Identity argument it lists accounts with the wrong SPN/hash even though there was an error retrieving the information. A note on terminology. Put another way, The HOST service represents the host computer. Heres a 4769 event that may potentially be from Kerberoasting activity: Some attackers will request a bunch of RC4 TGS tickets for some or all service accounts using something similar to the following graphic. So, how do we determine what encryption type was used when looking at events: 0x12, 0x17? This approach is in fact now implemented in Rubeus with the, So whats the disadvantage here? Given modification rights on a target, we can change the users serviceprincipalname to, SPN we want (even something fake), Kerberoast the service ticket, and then repair the serviceprincipalname value. If the service account is not a domain admin you can use it to log into other systems and pivot or escalate or you can use that cracked password to spray against other service and domain admin accounts; many companies may reuse the same or similar passwords for their service or domain admin users. Pingback: Passwords, Splunk, & Nest Microphones - Paul's Security Weekly #595 - Security Weekly, Pingback: MachineAccountQuota is USEFUL Sometimes: Exploiting One of Active Directory's Oddest Settings, Pingback: Active Directory Password Encryption | Florian Sailer's Knowledge Space. We are currently in the process of refactoring large components of PowerSploit, and the updated functions will be posted here after the changes are published. (ARCFOUR-HMAC-MD5, where an accounts NTLM hash functions as the key), . Looking for TGS-REQ packets with RC4 encryption is probably the best method, though false positives are likely. Not directly, no. HarmJ0y has written a good blog on kerberoasting without Mimikatz. For now, heres what the output of the script looks like: By default, the John format is output, but, will output everything Hashcat-ready. Tags: AP-REQ, Audit Kerberos Service Ticket Operations, Detect Kerberoast Activity, Detecting Kerberoast activity, Event ID 4769, Kerberoasting Active Directory, Kerberoasting activity, Kerberos RC4 Encryption, Kerberos Service Ticket, Kerberos TGS, Kerberos TGS Ticket, KerberosRequestorSecurityToken, NTLM Password, PowerShell Kerberoast, RC4_HMAC_MD5, TGS-REP, TGS-REQ, Sneaky Persistence Active Directory Trick #18: Dropping SPNs on Admin Accounts for Later Kerberoasting, Detecting Kerberoasting Activity Part 2 Creating a Kerberoast Service Account Honeypot, Copyright 2023 Active Directory Security, Cracking Kerberos TGS Tickets Using Kerberoast Exploiting Kerberos to Compromise the Active Directory Domain, DerbyCon 2016 about how to Kerberoast to escalate privileges, Active Directory Recon Without Admin Rights, hunting down the use of Kerberos DES encryption in the AskDS Blog on TechNet, Detecting Offensive PowerShell Attack Tools, PowerShell Security: PowerShell Attack Tools, Mitigation, & Detection, Attack Methods for Gaining Domain Admin Rights in Active Directory, Sean Metcalfs Presentations on Active Directory Security. ServicePrincipalName Name MemberOf PasswordLastSet LastLogon Delegation And the best part is that everything needed is already implemented in PowerView with Set-DomainObject and Get-DomainSPNTicket! Unlike Kerberoasting these users do not have to be service accounts the only requirement to be AS-REP roastable is to have the privilege Does not require Pre-Authentication set. If we want to utilize the users access, we could force a password reset, but this is fairly destructive in that the target user would notice. Gathering and monitoring this data also creates a good baseline of whats normal in order to more easily detect anomalous activity. 4. Kerberos credential, see inner exception for details. If you have elevated (i.e. ----------------------------------------------- ----------- --------------------------------------------------------------- -------------------------- -------------------------- ---------- In password spraying, you take a given Kerberos-based password (such as P@$$W0rd) and spray against all found user accounts in the domain to find which one may have that password. The default KerberosRequestorSecurityToken method results in a service ticket cached in the current logon session for every SPN were roasting. Another advantage of the /tgtdeleg approach for Kerberoasting is that since were building and parsing the TGS-REQ/TGS-REP traffic manually, the service tickets wont be cache on the system were roasting from. However, looking at a Wireshark capture of the TGS-REQ (Kerberos service ticket request) from the client we see that all proper encryption types including AES are specified as supported: The enc-part in the returned TGS-REP (service ticket reply) is properly encrypted with the requesting clients AES256 key as we would expect. Feel free to DM me on Twitter or through email, would love to chat more. Mimikatz command , with the optional base64 export format set first. Password converted to NTLM hash, a timestamp is encrypted with the hash and sent to the KDC as an authenticator in the authentication ticket (TGT) request (AS-REQ). Note that the initial krbtgt ticket is AES encrypted and others are RC4-HMAC(NT). password is used for the service ticket creation. A number of tools have been created to simplify the process of completing a Kerberoasting attack on a Windows domain. One common example is a service account that manages several MSSQL instances; this user account would have a
Hawes And Curtis Vs Tm Lewin Suits,
Tryhackme Network Services Telnet,
Business For Sale In Fethiye,
How Much Is A 1997 Ford F150 Worth,
Articles H