{"id":1307,"date":"2026-11-09T10:00:00","date_gmt":"2026-11-09T09:00:00","guid":{"rendered":"https:\/\/remivernier.com\/?p=1307"},"modified":"2026-11-09T10:00:00","modified_gmt":"2026-11-09T09:00:00","slug":"kerberos-lire-krb-error-codes-erreur","status":"publish","type":"post","link":"https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/","title":{"rendered":"Kerberos: lire un KRB_ERROR et ses codes d&rsquo;erreur"},"content":{"rendered":"<p>Sur la maquette test.local, nous allons provoquer trois pannes Kerberos: un SPN en double, une horloge d\u00e9cal\u00e9e et un type de chiffrement refus\u00e9. Pour chacune, nous lirons ensuite le KRB_ERROR que le KDC renvoie, dans Wireshark puis avec klist.<\/p>\n<p>Dans une capture, le KRB_ERROR passe souvent pour du bruit, alors qu&rsquo;il porte presque toujours la cause de la panne: le code, le principal demand\u00e9, le realm et l&rsquo;heure du KDC.<\/p>\n<h2>Petit rappel sur KRB_ERROR<\/h2>\n<p>Le message est d\u00e9crit dans la <a href=\"https:\/\/www.rfc-editor.org\/info\/rfc4120\/\">RFC 4120<\/a>, section 5.9.1, et la liste des codes se trouve en section 7.5.9. Dans Wireshark, c&rsquo;est le message de type 30 (champ msg-type), qui contient les champs suivants:<\/p>\n<ul>\n<li>ctime \/ cusec: l&rsquo;heure du client, seulement si elle figurait dans la requ\u00eate,<\/li>\n<li>stime \/ susec: l&rsquo;heure du KDC au moment de l&rsquo;erreur, toujours pr\u00e9sente,<\/li>\n<li>error-code: le code num\u00e9rique, celui qui nous int\u00e9resse,<\/li>\n<li>crealm, cname: le client concern\u00e9,<\/li>\n<li>realm, sname: le service demand\u00e9 (krbtgt\/TEST.LOCAL pour un AS-REQ, le SPN pour un TGS-REQ),<\/li>\n<li>e-text et e-data: un texte libre et des donn\u00e9es compl\u00e9mentaires dont le format d\u00e9pend du code.<\/li>\n<\/ul>\n<p>C\u00f4t\u00e9 Windows, le contr\u00f4leur de domaine reprend le m\u00eame code dans ses \u00e9v\u00e9nements de s\u00e9curit\u00e9, en hexad\u00e9cimal: champ \u00ab Result Code \u00bb du 4768 (demande de TGT), \u00ab Failure Code \u00bb du 4769 (demande de ticket de service) et du 4771 (\u00e9chec de pr\u00e9-authentification). Une fois le d\u00e9cimal converti, ce que nous lisons dans la capture se retrouve donc tel quel dans le journal du DC: 25 dans Wireshark devient 0x19 dans le 4771.<\/p>\n<p>Le sch\u00e9ma ci dessous replace les codes que nous allons rencontrer dans l&rsquo;\u00e9change.<\/p>\n<figure class=\"wp-block-image\">\n<svg viewBox=\"0 0 720 400\" width=\"100%\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" font-family=\"sans-serif\" font-size=\"13\">\n<defs>\n<marker id=\"fl\" markerWidth=\"10\" markerHeight=\"8\" refX=\"9\" refY=\"4\" orient=\"auto\"><path d=\"M0,0 L10,4 L0,8 z\" fill=\"#333\"\/><\/marker>\n<\/defs>\n<rect x=\"20\" y=\"20\" width=\"140\" height=\"40\" fill=\"#e8f0fe\" stroke=\"#333\"\/>\n<text x=\"90\" y=\"45\" text-anchor=\"middle\" font-size=\"14\">Client win11<\/text>\n<rect x=\"290\" y=\"20\" width=\"140\" height=\"40\" fill=\"#fdf3e1\" stroke=\"#333\"\/>\n<text x=\"360\" y=\"45\" text-anchor=\"middle\" font-size=\"14\">KDC dc01<\/text>\n<rect x=\"560\" y=\"20\" width=\"140\" height=\"40\" fill=\"#e6f4ea\" stroke=\"#333\"\/>\n<text x=\"630\" y=\"45\" text-anchor=\"middle\" font-size=\"14\">Service srv01<\/text>\n<line x1=\"90\" y1=\"60\" x2=\"90\" y2=\"390\" stroke=\"#333\" stroke-dasharray=\"4,4\"\/>\n<line x1=\"360\" y1=\"60\" x2=\"360\" y2=\"390\" stroke=\"#333\" stroke-dasharray=\"4,4\"\/>\n<line x1=\"630\" y1=\"60\" x2=\"630\" y2=\"390\" stroke=\"#333\" stroke-dasharray=\"4,4\"\/>\n<line x1=\"90\" y1=\"90\" x2=\"355\" y2=\"90\" stroke=\"#333\" marker-end=\"url(#fl)\"\/>\n<text x=\"100\" y=\"84\">AS-REQ sans pr\u00e9-authentification<\/text>\n<line x1=\"360\" y1=\"125\" x2=\"95\" y2=\"125\" stroke=\"#333\" marker-end=\"url(#fl)\"\/>\n<text x=\"100\" y=\"119\">KRB_ERROR 25 (0x19) attendu<\/text>\n<line x1=\"90\" y1=\"165\" x2=\"355\" y2=\"165\" stroke=\"#333\" marker-end=\"url(#fl)\"\/>\n<text x=\"100\" y=\"159\">AS-REQ + PA-ENC-TIMESTAMP<\/text>\n<line x1=\"360\" y1=\"200\" x2=\"95\" y2=\"200\" stroke=\"#333\" marker-end=\"url(#fl)\"\/>\n<text x=\"100\" y=\"194\">AS-REP ou erreur 6, 24, 37, 14<\/text>\n<line x1=\"90\" y1=\"245\" x2=\"355\" y2=\"245\" stroke=\"#333\" marker-end=\"url(#fl)\"\/>\n<text x=\"100\" y=\"239\">TGS-REQ HTTP\/monsite.test.local<\/text>\n<line x1=\"360\" y1=\"280\" x2=\"95\" y2=\"280\" stroke=\"#333\" marker-end=\"url(#fl)\"\/>\n<text x=\"100\" y=\"274\">TGS-REP ou erreur 7, 8, 37, 14<\/text>\n<line x1=\"90\" y1=\"330\" x2=\"625\" y2=\"330\" stroke=\"#333\" marker-end=\"url(#fl)\"\/>\n<text x=\"100\" y=\"324\">AP-REQ (dans l&rsquo;en-t\u00eate HTTP Authorization)<\/text>\n<line x1=\"630\" y1=\"365\" x2=\"95\" y2=\"365\" stroke=\"#333\" marker-end=\"url(#fl)\"\/>\n<text x=\"380\" y=\"359\">AP-REP ou erreur 37, 41<\/text>\n<\/svg><figcaption>Les codes KRB_ERROR selon l&rsquo;\u00e9tape de l&rsquo;\u00e9change Kerberos<\/figcaption><\/figure>\n<p>Attention, une erreur de l&rsquo;\u00e9change AP peut \u00e9chapper \u00e0 un filtre sur le port 88: en HTTP, elle remonte dans la r\u00e9ponse du serveur web, encod\u00e9e dans l&rsquo;en-t\u00eate WWW-Authenticate, comme nous l&rsquo;avions vu dans l&rsquo;article sur les <a href=\"https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/\">ent\u00eates HTTP WWW-Authenticate et Authorization<\/a>.<\/p>\n<h2>Pr\u00e9sentation de la maquette<\/h2>\n<p>Nom du domaine: test.local (TESTLOCAL)<\/p>\n<p>Contr\u00f4leur de domaine: dc01.test.local (192.168.0.10)<\/p>\n<p>Serveur IIS: srv01.test.local (192.168.0.20), site monsite.test.local, pool d&rsquo;application ex\u00e9cut\u00e9 par svc.monsite@test.local<\/p>\n<p>Poste client: win11.test.local (192.168.0.50), utilisateur alice@test.local<\/p>\n<p>Nous y introduisons trois d\u00e9fauts, un \u00e0 la fois:<\/p>\n<ol>\n<li>le SPN HTTP\/monsite.test.local, d\u00e9j\u00e0 port\u00e9 par svc.monsite, est ajout\u00e9 aussi au compte machine srv01$. Depuis Windows Server 2012 R2, le DC refuse ce doublon: pour reproduire ce que l&rsquo;on trouve encore dans les vieux domaines, nous d\u00e9sactivons temporairement le contr\u00f4le d&rsquo;unicit\u00e9 dans l&rsquo;attribut dSHeuristics;<\/li>\n<li>le service w32time est arr\u00eat\u00e9 sur win11 et son horloge avanc\u00e9e de dix minutes;<\/li>\n<li>une GPO limite win11 au seul RC4 (\u00ab S\u00e9curit\u00e9 r\u00e9seau: configurer les types de chiffrement autoris\u00e9s pour Kerberos \u00bb), alors que le DC n&rsquo;accepte plus que AES.<\/li>\n<\/ol>\n<p>La capture se fait sur win11 avec le filtre d&rsquo;affichage <code>kerberos<\/code>. Pour ne garder que les erreurs, nous filtrons sur <code>kerberos.msg_type == 30<\/code>. La colonne Info de Wireshark affiche directement le nom du code, par exemple \u00ab KRB Error: KRB5KDC_ERR_PREAUTH_REQUIRED \u00bb. Sur une capture longue, tshark sort les m\u00eames informations sous forme de tableau:<\/p>\n<pre class=\"wp-block-code\"><code>tshark -r win11.pcapng -Y \"kerberos.msg_type == 30\" -T fields ^\n  -e frame.time -e ip.src -e kerberos.error_code ^\n  -e kerberos.CNameString -e kerberos.SNameString -e kerberos.stime<\/code><\/pre>\n<h2>Lecture des erreurs, une par une<\/h2>\n<h3>KDC_ERR_PREAUTH_REQUIRED (25 \/ 0x19)<\/h3>\n<p>Avant m\u00eame d&rsquo;introduire les d\u00e9fauts, nous lan\u00e7ons une ouverture de session d&rsquo;alice et nous voyons appara\u00eetre un KRB_ERROR juste apr\u00e8s le premier AS-REQ. Ce comportement est normal: le client Windows envoie une premi\u00e8re requ\u00eate sans pr\u00e9-authentification, le KDC lui r\u00e9pond qu&rsquo;elle est n\u00e9cessaire et lui indique comment la construire.<\/p>\n<p>Tout se trouve dans le champ e-data, qui contient un METHOD-DATA (RFC 4120, section 5.2.7). Nous y trouvons la liste des m\u00e9thodes de pr\u00e9-authentification accept\u00e9es: PA-ENC-TIMESTAMP, PA-PK-AS-REQ si PKINIT est possible, et surtout PA-ETYPE-INFO2. Ce dernier donne les types de chiffrement disponibles pour le compte et le sel \u00e0 utiliser, ici TEST.LOCALalice. Le client d\u00e9rive alors sa cl\u00e9 du mot de passe, chiffre un horodatage et renvoie un second AS-REQ.<\/p>\n<p>-> Un 0x19 suivi d&rsquo;un AS-REP n&rsquo;est pas une panne. C&rsquo;est le second AS-REQ qu&rsquo;il faut regarder.<\/p>\n<h3>SPN en double: KDC_ERR_S_PRINCIPAL_UNKNOWN (7) ou PRINCIPAL_NOT_UNIQUE (8)<\/h3>\n<p>Avec le premier d\u00e9faut en place, alice ouvre https:\/\/monsite.test.local. Le TGT est obtenu, puis le TGS-REQ pour HTTP\/monsite.test.local revient en erreur, et le champ sname du KRB_ERROR nous donne le SPN demand\u00e9 par le navigateur.<\/p>\n<pre class=\"wp-block-code\"><code>C:\\&gt; klist get HTTP\/monsite.test.local\n\nCurrent LogonId is 0:0x5a3f1\nError calling API LsaCallAuthenticationPackage (GetTicket substatus): 0x80090303\n\nklist failed with 0x80090303\/-2146893053: The specified target is unknown or unreachable<\/code><\/pre>\n<p>Microsoft fait le lien entre SEC_E_TARGET_UNKNOWN (0x80090303) c\u00f4t\u00e9 client et KDC_ERR_S_PRINCIPAL_UNKNOWN (0x7) c\u00f4t\u00e9 KDC dans la <a href=\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity\/devices\/how-to-hybrid-join-using-microsoft-entra-kerberos\">documentation de la jonction hybride Entra Kerberos<\/a>. Selon les versions, le KDC Windows renvoie 0x7 ou 0x8 pour un doublon, et Microsoft traite les deux cas dans <a href=\"https:\/\/github.com\/MicrosoftDocs\/SupportArticles-docs\/blob\/main\/support\/windows-server\/windows-security\/kerberos-error-kdc-err-s-principal-unknown-or-not-unique.md\">le m\u00eame article de support<\/a>. Pour savoir s&rsquo;il s&rsquo;agit d&rsquo;un SPN absent ou en double, il faut regarder le journal Syst\u00e8me du DC: un doublon y laisse un \u00e9v\u00e9nement 11 de la source KDC, qui signale plusieurs comptes portant le m\u00eame nom.<\/p>\n<pre class=\"wp-block-code\"><code>C:\\&gt; setspn -X\nChecking domain DC=test,DC=local\nProcessing entry 0\nHTTP\/monsite.test.local is registered on these accounts:\n        CN=svc.monsite,OU=Services,DC=test,DC=local\n        CN=SRV01,OU=Serveurs,DC=test,DC=local\n\nfound 1 group of duplicate SPNs.<\/code><\/pre>\n<p>Pour l&rsquo;utilisateur, le sympt\u00f4me est trompeur: le site s&rsquo;ouvre quand m\u00eame, parce que Negotiate retombe sur NTLM. C&rsquo;est le sc\u00e9nario que nous avions d\u00e9roul\u00e9 dans <a href=\"https:\/\/remivernier.com\/index.php\/2026\/10\/31\/kerberos-retombe-ntlm-diagnostic-maquette\/\">Pourquoi Kerberos retombe en NTLM<\/a>. La correction consiste \u00e0 retirer le SPN du compte machine (<code>setspn -D HTTP\/monsite.test.local srv01<\/code>), puis \u00e0 remettre en place le contr\u00f4le d&rsquo;unicit\u00e9.<\/p>\n<h3>Horloge d\u00e9cal\u00e9e: KRB_AP_ERR_SKEW (37 \/ 0x25)<\/h3>\n<p>Nous retirons le premier d\u00e9faut et avan\u00e7ons l&rsquo;horloge de win11. Au second AS-REQ, le KDC d\u00e9chiffre l&rsquo;horodatage PA-ENC-TIMESTAMP et constate qu&rsquo;il sort de la tol\u00e9rance. Par d\u00e9faut, celle-ci est de 5 minutes (strat\u00e9gie \u00ab Tol\u00e9rance maximale pour la synchronisation de l&rsquo;horloge de l&rsquo;ordinateur \u00bb), et le KDC r\u00e9pond 37.<\/p>\n<p>Le KRB_ERROR contient ici l&rsquo;information qui permet de conclure sans autre outil: stime donne l&rsquo;heure du KDC. Il suffit de la comparer \u00e0 l&rsquo;horodatage de la trame dans la capture, prise sur le client, pour mesurer l&rsquo;\u00e9cart. Sur le DC, nous trouvons un 4771 avec Failure Code 0x25. \u00c0 l&rsquo;ouverture de session, Windows affiche le message bien connu indiquant une diff\u00e9rence d&rsquo;heure ou de date entre le client et le serveur (STATUS_TIME_DIFFERENCE_AT_DC, 0xC0000133).<\/p>\n<p>Attention: le m\u00eame code peut aussi revenir \u00e0 l&rsquo;\u00e9change AP, lorsque c&rsquo;est l&rsquo;horloge du serveur applicatif qui d\u00e9rive. Dans ce cas, rien ne passe par le port 88, et c&rsquo;est le journal du serveur qu&rsquo;il faut lire.<\/p>\n<h3>Type de chiffrement refus\u00e9: KDC_ERR_ETYPE_NOSUPP (14 \/ 0xE)<\/h3>\n<p>Avec la GPO RC4 appliqu\u00e9e sur win11, l&rsquo;AS-REQ ne propose plus que l&rsquo;etype 23 (rc4-hmac). Le KDC n&rsquo;en accepte plus et r\u00e9pond 14. Dans Wireshark, nous d\u00e9pilons le champ etype de la requ\u00eate (KDC-REQ-BODY) pour voir ce que le client a propos\u00e9, puis nous le comparons au PA-ETYPE-INFO2 d&rsquo;un \u00e9change r\u00e9ussi sur un autre poste, qui montre ce que le compte poss\u00e8de. Sur le DC, l&rsquo;\u00e9v\u00e9nement 4768 porte le Result Code 0xE.<\/p>\n<p>Le m\u00eame code appara\u00eet dans un cas plus discret: un compte dont l&rsquo;attribut msDS-SupportedEncryptionTypes annonce AES alors que son mot de passe n&rsquo;a pas \u00e9t\u00e9 chang\u00e9 depuis le passage au niveau fonctionnel 2008. Ce compte n&rsquo;a donc aucune cl\u00e9 AES. Pour g\u00e9n\u00e9rer les cl\u00e9s AES manquantes, il faut changer le mot de passe du compte.<\/p>\n<table>\n<thead>\n<tr>\n<th>Code<\/th>\n<th>Nom<\/th>\n<th>\u00c9change<\/th>\n<th>Cause c\u00f4t\u00e9 KDC<\/th>\n<th>Trace sur le DC<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>25 \/ 0x19<\/td>\n<td>KDC_ERR_PREAUTH_REQUIRED<\/td>\n<td>AS<\/td>\n<td>Normal, pr\u00e9-authentification demand\u00e9e<\/td>\n<td>aucune<\/td>\n<\/tr>\n<tr>\n<td>6 \/ 0x6<\/td>\n<td>KDC_ERR_C_PRINCIPAL_UNKNOWN<\/td>\n<td>AS<\/td>\n<td>Compte inexistant<\/td>\n<td>4768, 0x6<\/td>\n<\/tr>\n<tr>\n<td>24 \/ 0x18<\/td>\n<td>KDC_ERR_PREAUTH_FAILED<\/td>\n<td>AS<\/td>\n<td>Mauvais mot de passe<\/td>\n<td>4771, 0x18<\/td>\n<\/tr>\n<tr>\n<td>7 \/ 0x7<\/td>\n<td>KDC_ERR_S_PRINCIPAL_UNKNOWN<\/td>\n<td>TGS<\/td>\n<td>SPN absent (ou en double)<\/td>\n<td>4769, \u00e9v\u00e9nement KDC 11 si doublon<\/td>\n<\/tr>\n<tr>\n<td>37 \/ 0x25<\/td>\n<td>KRB_AP_ERR_SKEW<\/td>\n<td>AS, TGS, AP<\/td>\n<td>Horloge hors tol\u00e9rance<\/td>\n<td>4771, 0x25<\/td>\n<\/tr>\n<tr>\n<td>14 \/ 0xE<\/td>\n<td>KDC_ERR_ETYPE_NOSUPP<\/td>\n<td>AS, TGS<\/td>\n<td>Aucun etype commun<\/td>\n<td>4768 ou 4769, 0xE<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Ce que ces erreurs disent \u00e0 un attaquant<\/h2>\n<p>Le KDC fournit ces m\u00eames codes \u00e0 n&rsquo;importe quelle machine qui joint le port 88, sans authentification pr\u00e9alable.<\/p>\n<p>Le premier usage est l&rsquo;\u00e9num\u00e9ration de comptes. Un AS-REQ sans pr\u00e9-authentification pour un nom inexistant re\u00e7oit un 6, et pour un nom existant il re\u00e7oit un 25. Une simple liste de noms suffit donc \u00e0 trier les comptes valides. Ces tentatives n&rsquo;incr\u00e9mentent pas badPwdCount et ne g\u00e9n\u00e8rent aucun 4771: seul un 4768 en \u00e9chec avec 0x6 en garde la trace, \u00e0 condition que l&rsquo;audit des \u00e9checs du \u00ab Service d&rsquo;authentification Kerberos \u00bb soit activ\u00e9 sur les DC. Cet audit est souvent absent.<\/p>\n<p>Une fois la liste obtenue, l&rsquo;attaquant passe \u00e0 la pulv\u00e9risation de mots de passe (MITRE ATT&amp;CK T1110.003): un ou deux mots de passe courants essay\u00e9s sur tous les comptes, en restant sous le seuil de verrouillage. Chaque essai rat\u00e9 produit un 24 et un 4771 avec 0x18. Ce qui doit alerter, c&rsquo;est la corr\u00e9lation: une m\u00eame adresse source et des dizaines de comptes diff\u00e9rents en 0x18 sur une courte p\u00e9riode, ou un 0x18 suivi d&rsquo;un 4768 r\u00e9ussi pour le m\u00eame compte depuis la m\u00eame source.<\/p>\n<p>L&rsquo;absence d&rsquo;erreur est aussi un signal. Un compte dont le userAccountControl porte DONT_REQ_PREAUTH (0x400000) re\u00e7oit directement un AS-REP, sans passer par le 25. Or une partie de cet AS-REP est chiffr\u00e9e avec la cl\u00e9 d\u00e9riv\u00e9e de son mot de passe et peut \u00eatre attaqu\u00e9e hors ligne: c&rsquo;est l&rsquo;AS-REP Roasting (T1558.004). Dans une capture, nous le reconnaissons \u00e0 un AS-REP qui arrive sans KRB_ERROR 25 avant lui. Sur le DC, il appara\u00eet comme un 4768 avec \u00ab Pre-Authentication Type \u00bb \u00e0 0. Pour inventorier ces comptes:<\/p>\n<pre class=\"wp-block-code\"><code>Get-ADUser -Filter 'DoesNotRequirePreAuth -eq $true' -Properties DoesNotRequirePreAuth |\n  Select-Object SamAccountName, Enabled<\/code><\/pre>\n<p>Si elle renvoie des comptes, il faut retirer l&rsquo;option, ou \u00e0 d\u00e9faut leur imposer un mot de passe long et al\u00e9atoire.<\/p>\n<p>Le type de chiffrement joue le m\u00eame r\u00f4le c\u00f4t\u00e9 service. svc.monsite porte un SPN: n&rsquo;importe quel utilisateur du domaine peut demander un ticket pour ce service et tenter de casser hors ligne la partie chiffr\u00e9e avec la cl\u00e9 du compte (Kerberoasting, T1558.003). Si ce compte accepte encore RC4, l&rsquo;attaquant demandera l&rsquo;etype 23, beaucoup plus rapide \u00e0 attaquer. Le signal \u00e0 surveiller est un 4769 avec \u00ab Ticket Encryption Type \u00bb \u00e0 0x17 sur un domaine cens\u00e9 \u00eatre pass\u00e9 en AES. C&rsquo;est pour cela que le 0xE du troisi\u00e8me d\u00e9faut est une bonne nouvelle quand il frappe un vieux poste: il montre que le refus de RC4 est r\u00e9ellement appliqu\u00e9. Le type de chiffrement d&rsquo;un ticket se lit avec klist, comme dans l&rsquo;article <a href=\"https:\/\/remivernier.com\/index.php\/2026\/10\/27\/kerberos-lire-ticket-service-klist-wireshark-tgs-req-pac\/\">Kerberos: lire un ticket de service avec klist et Wireshark<\/a>.<\/p>\n<p>Le KDC chiffrant le ticket avec la cl\u00e9 du compte qui porte le SPN, un SPN pos\u00e9 par erreur sur un compte au mot de passe faible l&rsquo;expose \u00e0 la m\u00eame attaque, et un droit d&rsquo;\u00e9criture sur servicePrincipalName permet d&rsquo;en cr\u00e9er un sur n&rsquo;importe quel compte. <code>setspn -X<\/code> et la revue des ACL sur cet attribut ont leur place dans un audit r\u00e9gulier.<\/p>\n<p>Pour la d\u00e9tection, le minimum est d&rsquo;activer sur tous les DC les sous-cat\u00e9gories d&rsquo;audit \u00ab Service d&rsquo;authentification Kerberos \u00bb et \u00ab Op\u00e9rations de ticket du service Kerberos \u00bb, en succ\u00e8s comme en \u00e9chec, puis de remonter les 4768, 4769 et 4771 vers le SIEM avec les champs Result Code, Failure Code, Ticket Encryption Type et l&rsquo;adresse du client. Les codes 0x6, 0x18, 0x19 n&rsquo;ont de sens que compt\u00e9s par source et par fen\u00eatre de temps, un \u00e9v\u00e9nement isol\u00e9 ne dit presque rien.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lire un KRB_ERROR Kerberos dans Wireshark et avec klist: PREAUTH_REQUIRED, SPN en double, d\u00e9calage d&rsquo;horloge, ETYPE_NOSUPP, leurs causes et leur d\u00e9tection.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,4,37],"tags":[136,133,126,5,50,135,7,49],"class_list":["post-1307","post","type-post","status-publish","format-standard","hentry","category-active-directory","category-kerberos","category-securite","tag-active-directory","tag-as-rep-roasting","tag-kerberoasting","tag-kerberos","tag-klist","tag-krb_error","tag-spn","tag-wireshark"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kerberos: lire un KRB_ERROR et ses codes d&#039;erreur - R\u00e9mi VERNIER<\/title>\n<meta name=\"description\" content=\"Lire un KRB_ERROR Kerberos dans Wireshark et avec klist: PREAUTH_REQUIRED, SPN en double, d\u00e9calage d&#039;horloge, ETYPE_NOSUPP, leurs causes et leur d\u00e9tection.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kerberos: lire un KRB_ERROR et ses codes d&#039;erreur - R\u00e9mi VERNIER\" \/>\n<meta property=\"og:description\" content=\"Lire un KRB_ERROR Kerberos dans Wireshark et avec klist: PREAUTH_REQUIRED, SPN en double, d\u00e9calage d&#039;horloge, ETYPE_NOSUPP, leurs causes et leur d\u00e9tection.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/\" \/>\n<meta property=\"og:site_name\" content=\"R\u00e9mi VERNIER\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-09T09:00:00+00:00\" \/>\n<meta name=\"author\" content=\"R\u00e9mi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"R\u00e9mi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/09\\\/kerberos-lire-krb-error-codes-erreur\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/09\\\/kerberos-lire-krb-error-codes-erreur\\\/\"},\"author\":{\"name\":\"R\u00e9mi\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/#\\\/schema\\\/person\\\/a4c76c63a5a3d94454484845e42fc906\"},\"headline\":\"Kerberos: lire un KRB_ERROR et ses codes d&rsquo;erreur\",\"datePublished\":\"2026-11-09T09:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/09\\\/kerberos-lire-krb-error-codes-erreur\\\/\"},\"wordCount\":2014,\"commentCount\":0,\"keywords\":[\"active directory\",\"as-rep roasting\",\"kerberoasting\",\"kerberos\",\"klist\",\"krb_error\",\"spn\",\"wireshark\"],\"articleSection\":[\"Active Directory\",\"Kerberos\",\"S\u00e9curit\u00e9\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/09\\\/kerberos-lire-krb-error-codes-erreur\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/09\\\/kerberos-lire-krb-error-codes-erreur\\\/\",\"url\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/09\\\/kerberos-lire-krb-error-codes-erreur\\\/\",\"name\":\"Kerberos: lire un KRB_ERROR et ses codes d'erreur - R\u00e9mi VERNIER\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/#website\"},\"datePublished\":\"2026-11-09T09:00:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/#\\\/schema\\\/person\\\/a4c76c63a5a3d94454484845e42fc906\"},\"description\":\"Lire un KRB_ERROR Kerberos dans Wireshark et avec klist: PREAUTH_REQUIRED, SPN en double, d\u00e9calage d'horloge, ETYPE_NOSUPP, leurs causes et leur d\u00e9tection.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/09\\\/kerberos-lire-krb-error-codes-erreur\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/09\\\/kerberos-lire-krb-error-codes-erreur\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/index.php\\\/2026\\\/11\\\/09\\\/kerberos-lire-krb-error-codes-erreur\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/remivernier.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kerberos: lire un KRB_ERROR et ses codes d&rsquo;erreur\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/#website\",\"url\":\"https:\\\/\\\/remivernier.com\\\/\",\"name\":\"R\u00e9mi VERNIER\",\"description\":\"Identit\u00e9, s\u00e9curit\u00e9, SAP et IA : Active Directory, Azure &amp; co...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/remivernier.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/remivernier.com\\\/#\\\/schema\\\/person\\\/a4c76c63a5a3d94454484845e42fc906\",\"name\":\"R\u00e9mi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g\",\"caption\":\"R\u00e9mi\"},\"sameAs\":[\"http:\\\/\\\/www.linkedin.com\\\/in\\\/remi-vernier\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kerberos: lire un KRB_ERROR et ses codes d'erreur - R\u00e9mi VERNIER","description":"Lire un KRB_ERROR Kerberos dans Wireshark et avec klist: PREAUTH_REQUIRED, SPN en double, d\u00e9calage d'horloge, ETYPE_NOSUPP, leurs causes et leur d\u00e9tection.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/","og_locale":"fr_FR","og_type":"article","og_title":"Kerberos: lire un KRB_ERROR et ses codes d'erreur - R\u00e9mi VERNIER","og_description":"Lire un KRB_ERROR Kerberos dans Wireshark et avec klist: PREAUTH_REQUIRED, SPN en double, d\u00e9calage d'horloge, ETYPE_NOSUPP, leurs causes et leur d\u00e9tection.","og_url":"https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/","og_site_name":"R\u00e9mi VERNIER","article_published_time":"2026-11-09T09:00:00+00:00","author":"R\u00e9mi","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"R\u00e9mi","Dur\u00e9e de lecture estim\u00e9e":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/#article","isPartOf":{"@id":"https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/"},"author":{"name":"R\u00e9mi","@id":"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906"},"headline":"Kerberos: lire un KRB_ERROR et ses codes d&rsquo;erreur","datePublished":"2026-11-09T09:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/"},"wordCount":2014,"commentCount":0,"keywords":["active directory","as-rep roasting","kerberoasting","kerberos","klist","krb_error","spn","wireshark"],"articleSection":["Active Directory","Kerberos","S\u00e9curit\u00e9"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/","url":"https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/","name":"Kerberos: lire un KRB_ERROR et ses codes d'erreur - R\u00e9mi VERNIER","isPartOf":{"@id":"https:\/\/remivernier.com\/#website"},"datePublished":"2026-11-09T09:00:00+00:00","author":{"@id":"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906"},"description":"Lire un KRB_ERROR Kerberos dans Wireshark et avec klist: PREAUTH_REQUIRED, SPN en double, d\u00e9calage d'horloge, ETYPE_NOSUPP, leurs causes et leur d\u00e9tection.","breadcrumb":{"@id":"https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/remivernier.com\/index.php\/2026\/11\/09\/kerberos-lire-krb-error-codes-erreur\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/remivernier.com\/"},{"@type":"ListItem","position":2,"name":"Kerberos: lire un KRB_ERROR et ses codes d&rsquo;erreur"}]},{"@type":"WebSite","@id":"https:\/\/remivernier.com\/#website","url":"https:\/\/remivernier.com\/","name":"R\u00e9mi VERNIER","description":"Identit\u00e9, s\u00e9curit\u00e9, SAP et IA : Active Directory, Azure &amp; co...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/remivernier.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906","name":"R\u00e9mi","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g","caption":"R\u00e9mi"},"sameAs":["http:\/\/www.linkedin.com\/in\/remi-vernier"]}]}},"_links":{"self":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/1307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/comments?post=1307"}],"version-history":[{"count":1,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/1307\/revisions"}],"predecessor-version":[{"id":1309,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/1307\/revisions\/1309"}],"wp:attachment":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/media?parent=1307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/categories?post=1307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/tags?post=1307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}