{"id":599,"date":"2018-09-16T18:01:58","date_gmt":"2018-09-16T16:01:58","guid":{"rendered":"http:\/\/remivernier.com\/?p=599"},"modified":"2018-09-28T11:46:13","modified_gmt":"2018-09-28T09:46:13","slug":"exploration-des-entetes-http-www-authenticate","status":"publish","type":"post","link":"https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/","title":{"rendered":"Exploration des ent\u00eates HTTP WWW-Authenticate et Authorization"},"content":{"rendered":"<h1 style=\"text-align: left;\">Ent\u00eates HTTP WWW-Authenticate et Autorization?<\/h1>\n<p>HTTP prend en charge l&rsquo;utilisation de plusieurs m\u00e9canismes d&rsquo;authentification pour contr\u00f4ler l&rsquo;acc\u00e8s aux pages et aux autres ressources. Ces m\u00e9canismes sont tous bas\u00e9s sur l&rsquo;utilisation du code d&rsquo;\u00e9tat 401 et de l&rsquo;en-t\u00eate de r\u00e9ponse \u00ab\u00a0<strong>WWW-Authenticate\u00a0\u00bb<\/strong>. Le client utilise alors l&rsquo;ent\u00eate <strong>\u00ab\u00a0Autorization\u00a0\u00bb<\/strong> pour fournir au serveur des \u00e9l\u00e9ments d&rsquo;authentification.<\/p>\n<p>Les m\u00e9canismes d\u2019authentification HTTP les plus r\u00e9pandu sont les suivants:<\/p>\n<p><strong>Anonymous<\/strong><br \/>\nUne demande anonyme ne contient aucune information d&rsquo;authentification. Cela \u00e9quivaut \u00e0 accorder \u00e0 chacun l&rsquo;acc\u00e8s \u00e0 la ressource.<\/p>\n<p><strong>Basic<\/strong><br \/>\nLe client envoie le nom d&rsquo;utilisateur et le mot de passe sous forme de texte cod\u00e9 en base64 non chiffr\u00e9. Il ne doit \u00eatre utilis\u00e9 qu&rsquo;avec HTTPS, car le mot de passe peut \u00eatre facilement captur\u00e9 et r\u00e9utilis\u00e9 via HTTP.<\/p>\n<p><strong>Digest<br \/>\n<\/strong>Le client envoie une forme hach\u00e9e du mot de passe au serveur. Ce m\u00e9canisme est destin\u00e9 \u00e0 remplacer l\u2019authentification de base mais reste malgr\u00e9 tout faiblement s\u00e9curis\u00e9.\u00a0L\u2019authentification n\u00e9cessite l\u2019utilisation de comptes de domaine Windows.<\/p>\n<p><strong>NTLM<\/strong><br \/>\nCela utilise un m\u00e9canisme de d\u00e9fi \/ r\u00e9ponse s\u00e9curis\u00e9 qui emp\u00eache la capture de mot de passe ou les attaques par relecture sur HTTP. Cependant, l&rsquo;authentification est par connexion et ne fonctionnera qu&rsquo;avec les connexions persistantes HTTP\/1.1. Pour cette raison, il peut ne pas fonctionner avec tous les proxies HTTP et peut introduire un grand nombre d&rsquo;allers-retours r\u00e9seau si les connexions sont r\u00e9guli\u00e8rement ferm\u00e9es par le serveur Web.<\/p>\n<p><strong>KERBEROS<br \/>\n<\/strong>L&rsquo;authentification \u00ab\u00a0negotiate\u00a0\u00bb choisit automatiquement entre le protocole Kerberos et NTLM, selon la disponibilit\u00e9. Le protocole Kerberos est utilis\u00e9 s&rsquo;il est disponible; dans le cas contraire, l&rsquo;authentification NTLM est tent\u00e9e. L&rsquo;authentification Kerberos offre des am\u00e9liorations importantes notamment en terme de s\u00e9curit\u00e9 par rapport \u00e0 NTLM.<\/p>\n<p>-&gt; Nous allons ici particuli\u00e8rement nous focaliser sur deux de ces cinq m\u00e9canismes: <strong>Negotiate:<\/strong><strong>NTLM et Negotiate:KERBEROS<\/strong>, Nous allons tenter d&rsquo;y voir plus clair, de d\u00e9chiffrer et analyser le contenu de ces ent\u00eates.<\/p>\n<h1>Pr\u00e9sentation de la maquette<\/h1>\n<p>Notre environnement sera relativement simple. Un client (WIN8) et un serveur\u00a0(SRV2012) membre\u00a0 d&rsquo;un domaine TEST.LOCAL. Sur ce dernier est install\u00e9 IIS 8. Si vous souhaitez mettre en place une plateforme \u00e9quivalente et configurer IIS 8 pour une authentification Kerberos, vous pouvez suivre <a href=\"http:\/\/remivernier.com\/index.php\/hired-home-page\/\">ce lien<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-606\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img1.jpg\" alt=\"\" width=\"765\" height=\"414\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img1.jpg 765w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img1-300x162.jpg 300w\" sizes=\"auto, (max-width: 765px) 100vw, 765px\" \/><\/p>\n<p>Pour cette analyse nous allons utiliser:<\/p>\n<ul>\n<li><a href=\"http:\/\/remivernier.com\/index.php\/2018\/07\/21\/outils-danalyse-reseau\/\">Fiddler<\/a> qui sera install\u00e9 sur le client et configur\u00e9 en interception HTTPS. Pour rappel, Fiddler est un outil qui va nous aider \u00e0 capturer le trafic r\u00e9seau entre un site et un client. Pour le t\u00e9l\u00e9charger vous pouvez vous rendre sur <a href=\"https:\/\/www.telerik.com\/fiddler\" target=\"_blank\" rel=\"noopener\">ce lien<\/a>.<\/li>\n<li><a href=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/KerbWWW.zip\">KerbWWW &#8211; V1<\/a> que j&rsquo;ai d\u00e9velopp\u00e9 en utilisant la librairie Kerberos.Net pour Visual Studio. Grace \u00e0 cette application, nous allons pouvoir d\u00e9chiffrer le contenu d&rsquo;une ent\u00eate \u00ab\u00a0Autorization\u00a0\u00bb\u00a0qui utilise le protocole Kerberos.<\/li>\n<\/ul>\n<h1>Kerberos ou NTLM?<\/h1>\n<p>Nous l&rsquo;avons vu en introduction,\u00a0Kerberos sera le protocole d&rsquo;authentification privil\u00e9gi\u00e9 si l&rsquo;ensemble de la cha\u00eene est correctement configur\u00e9e (SPN, compte de service, IIS, etc&#8230;); dans le cas contraire, l&rsquo;authentification NTLM sera utilis\u00e9e. Comment diff\u00e9rencier, dans une analyse de trame quel est le protocole utilis\u00e9?<\/p>\n<p>Lan\u00e7ons Fiddler, et tentons une connexion \u00e0 notre site monsite.test.local:<\/p>\n<ul>\n<li>Le client initie une connexion vers le serveur WEB (Request: GET \/HTTP\/1.1)<\/li>\n<li>Le serveur WEB lui r\u00e9pond (Response: HTTP\/1.1 401 Unauthorized) en lui indiquant les protocoles qu&rsquo;il supporte: Negotiate puis NTLM dans l&rsquo;ent\u00eate WWW-Authenticate.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-615 size-full\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img3.jpg\" alt=\"\" width=\"931\" height=\"546\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img3.jpg 931w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img3-300x176.jpg 300w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img3-768x450.jpg 768w\" sizes=\"auto, (max-width: 931px) 100vw, 931px\" \/><\/a><\/p>\n<p>Logiquement dans l&rsquo;\u00e9tape d&rsquo;apr\u00e8s (code HTTP 304) le client, va tenter une authentification sur le premier protocole. Ici Negotiate (Kerberos). Nous pouvons identifier le protocole utilis\u00e9 en regardant le d\u00e9but du contenu de l\u2019ent\u00eate \u00ab\u00a0Autorization\u00a0\u00bb.<\/p>\n<p>Si celle ci commence par<\/p>\n<ul>\n<li><strong>YII<\/strong>, le protocole Kerberos est utilis\u00e9:\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-620\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img6.jpg\" alt=\"\" width=\"341\" height=\"23\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img6.jpg 341w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img6-300x20.jpg 300w\" sizes=\"auto, (max-width: 341px) 100vw, 341px\" \/><\/li>\n<li><strong>TlRMTVNTUA<\/strong> (NTLMSSP cod\u00e9 en base 64), le protocole NTLM est utilis\u00e9 :\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-622\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img7.jpg\" alt=\"\" width=\"344\" height=\"21\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img7.jpg 344w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img7-300x18.jpg 300w\" sizes=\"auto, (max-width: 344px) 100vw, 344px\" \/><\/li>\n<\/ul>\n<p>Ces ent\u00eates sont donc encod\u00e9es en base 64, il sera ais\u00e9 de le v\u00e9rifier en utilisant l&rsquo;outil TextWizard int\u00e9gr\u00e9 \u00e0 Fiddler et en supprimant \u00ab\u00a0Negotiate\u00a0\u00bb au d\u00e9but du message:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-631\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img11-300x209.jpg\" alt=\"\" width=\"300\" height=\"209\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img11-300x209.jpg 300w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img11.jpg 379w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Le r\u00e9sultat est affich\u00e9 sous la forme binaire. En Kerberos, une grande partie du message est chiffr\u00e9 \u00e0 l&rsquo;aide d&rsquo;une cl\u00e9 <strong>K<\/strong>s, calcul\u00e9e depuis le mot de passe du compte machine ou compte ex\u00e9cutant le service (SPN).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-630\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img10-300x192.jpg\" alt=\"\" width=\"300\" height=\"192\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img10-300x192.jpg 300w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img10.jpg 407w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>Si vous \u00eates toujours int\u00e9ress\u00e9 nous pouvons aller plus loin et analyser le contenu de ces ent\u00eates. Vous pouvez alors consulter la suite de l&rsquo;article \ud83d\ude09<\/p>\n<p>&nbsp;<\/p>\n<h1>WWW-Authenticate:\u00a0<strong>Negotiate-Kerberos<\/strong><\/h1>\n<p>Nous avons vu dans le d\u00e9but de cet article que les ent\u00eates \u00ab\u00a0WWW-Authenticate\u00a0\u00bb et \u00ab\u00a0Autorization\u00a0\u00bb pour Kerberos sont encod\u00e9es en base64. Nous allons nous focaliser sur cette derni\u00e8re qui contient les information d&rsquo;identification d&rsquo;un utilisateur.\u00a0Une fois d\u00e9cod\u00e9e, celle ci s&rsquo;affiche alors en format binaire, incompr\u00e9hensible pour l&rsquo;humain. Pour autant nous pouvons \u00ab\u00a0parser\u00a0\u00bb le contenu avec un programme afin d&rsquo;en lire une petite partie en clair. La partie qui contient les informations sur le compte utilisateur qui vient s&rsquo;authentifier est chiffr\u00e9e.<\/p>\n<p><strong>Rappel<\/strong> : pour un SPN donn\u00e9, la partie chiffr\u00e9e d\u2019un ticket de service l\u2019est avec la cl\u00e9 Kerberos du compte associ\u00e9. Dans notre cas par la cl\u00e9 <strong>K<\/strong>s\u00a0du compte de service cible utilis\u00e9 par le pool d&rsquo;application IIS sur lequel le SPN est configur\u00e9. Nous allons devoir connaitre cette cl\u00e9 <strong>K<\/strong>s pour d\u00e9chiffrer l&rsquo;ent\u00eate \u00ab\u00a0Autorization\u00a0\u00bb\u00a0contenue dans cette trame KRB_AP_REQ. Pour cela nous allons utiliser l&rsquo;outil maintenant bien connu KTPASS\u00a0 pour g\u00e9n\u00e9rer un fichier Keytab (<a href=\"http:\/\/remivernier.com\/index.php\/2018\/07\/07\/kerberos-exploration\/\">Vous pouvez consulter l&rsquo;article en suivant ce lien<\/a> pour connaitre la m\u00e9thode g\u00e9n\u00e9ration).<\/p>\n<p>Pour info, le fichier Keytab est aussi un fichier binaire, mais celui ci n&rsquo;est pas chiffr\u00e9.<\/p>\n<p>Nous allons ensuite utiliser l&rsquo;outil KerbWWW.exe sp\u00e9cialement d\u00e9velopp\u00e9 pour cette d\u00e9monstration et pr\u00e9sent dans le <a href=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/KerbWWW.zip\">ZIP t\u00e9l\u00e9chargeable en suivant ce lien<\/a>. Afin de lire le fichier keytab pr\u00e9c\u00e9demment g\u00e9n\u00e9r\u00e9 et en\u00a0exploiter son contenu, il faudra cliquer sur le bouton \u00ab\u00a01- Lire KeyTab\u00a0\u00bb.<\/p>\n<p><a href=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img12-v2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-658\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img12-v2.jpg\" alt=\"\" width=\"1275\" height=\"619\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img12-v2.jpg 1275w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img12-v2-300x146.jpg 300w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img12-v2-768x373.jpg 768w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img12-v2-1024x497.jpg 1024w\" sizes=\"auto, (max-width: 1275px) 100vw, 1275px\" \/><\/a><\/p>\n<p>Le contenu du fichier keytab s&rsquo;affiche alors en clair. Rappelez vous, nous avions lanc\u00e9s ktpass avec l&rsquo;option\u00a0<strong>-crypto All<\/strong> qui signifie que\u00a0tous les types cryptographiques support\u00e9s peuvent \u00eatre utilis\u00e9s et pr\u00e9sent dans le fichier g\u00e9n\u00e9r\u00e9. Nous les retrouvons donc dans l&rsquo;application de mani\u00e8re compr\u00e9hensible pour un humain.<\/p>\n<p>Nous allons ensuite extraire \u00e0 partir de Fiddler (ou pourquoi pas \u00e0 partir de n&rsquo;importe quel navigateur en mode d\u00e9veloppeur) l\u2019ent\u00eate \u00ab\u00a0Autorization\u00a0\u00bb\u00a0au format base64 et la copier (sans le pr\u00e9fixe \u00ab\u00a0negotiate\u00a0\u00bb dans le champ \u00ab\u00a0Ent\u00eates Autorization\u00a0encod\u00e9es\u00a0\u00bb ci dessous:<\/p>\n<p><a href=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img13-V2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-659\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img13-V2.jpg\" alt=\"\" width=\"1273\" height=\"618\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img13-V2.jpg 1273w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img13-V2-300x146.jpg 300w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img13-V2-768x373.jpg 768w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img13-V2-1024x497.jpg 1024w\" sizes=\"auto, (max-width: 1273px) 100vw, 1273px\" \/><\/a><\/p>\n<p>Vous pouvez des \u00e0 pr\u00e9sent cliquer sur \u00ab\u00a02 &#8211; decode\u00a0\u00bb pour consulter la partie non chiffr\u00e9e pr\u00e9sente dans l\u2019ent\u00eate \u00ab\u00a0Autorization\u00a0\u00bb. Un message en rouge, vous informe que celle ci est partiellement d\u00e9chiffr\u00e9e. En r\u00e9alit\u00e9 elle a juste \u00e9t\u00e9 convertie depuis un format base64 et rendue lisible.<\/p>\n<p>Pour aller plus loin dans notre recherche et consulter la partie normalement chiffr\u00e9e, nous allons devoir r\u00e9cup\u00e9rer le contenu \u00ab\u00a0PasswordBytes\u00a0\u00bb provenant du fichier Keytab. Il suffira de copier\/coller dans le champ \u00ab\u00a0PasswordBytes\u00a0\u00bb. N&rsquo;importe quel\u00a0\u00ab\u00a0PasswordBytes\u00a0\u00bb pr\u00e9sent dans le Keytab pourra \u00eatre utilis\u00e9.<\/p>\n<p>Une fois copi\u00e9, il faut cliquer \u00e0 nouveau sur \u00ab\u00a02 &#8211; D\u00e9code\u00a0\u00bb pour que le contenu du \u00ab\u00a0Autorization\u00a0\u00bb \u00a0s&rsquo;affiche alors compl\u00e8tement d\u00e9chiffr\u00e9.<\/p>\n<p><a href=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img14-V2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-660\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img14-V2.jpg\" alt=\"\" width=\"1274\" height=\"618\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img14-V2.jpg 1274w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img14-V2-300x146.jpg 300w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img14-V2-768x373.jpg 768w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img14-V2-1024x497.jpg 1024w\" sizes=\"auto, (max-width: 1274px) 100vw, 1274px\" \/><\/a><\/p>\n<p>Et donc je trouve quoi dans l&rsquo;ent\u00eate \u00ab\u00a0Autorization\u00a0\u00bb\u00a0quand Kerberos est utilis\u00e9? Vous pouvez consulter ici un exemple:\u00a0<a href=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/WWW-Authorization-uncrypted.txt\" target=\"_blank\" rel=\"attachment noopener wp-att-210\">www-authenticate uncrypted<\/a><\/p>\n<h1><\/h1>\n<h1>WWW-Authenticate:<strong>Negotiate-<\/strong>NTLM<\/h1>\n<p>Il faut noter que l&rsquo;utilisation de NTLM n&rsquo;est pas aussi s\u00fbre que Digest et certains autres sch\u00e9mas; NTLM est l\u00e9g\u00e8rement meilleur que le sch\u00e9ma d&rsquo;authentification de base, cependant il a au moins l&rsquo;avantage d\u2019\u00eatre facile \u00e0 comprendre et \u00e0 explorer. Nous allons simplement utiliser l&rsquo;outil <a href=\"http:\/\/remivernier.com\/index.php\/2018\/07\/21\/outils-danalyse-reseau\/\">Fiddler<\/a> install\u00e9 sur le Client et configur\u00e9 en interception HTTPS. NTLM utilise aussi l&rsquo;encodage en base 64 mais aucun des messages \u00e9tant chiffr\u00e9s, il sera possible de les consulter en clair via l&rsquo;onglet \u00ab\u00a0Auth\u00a0\u00bb de Fiddler.<\/p>\n<p>Lan\u00e7ons Fiddler, et tentons une connexion \u00e0 notre site monsite.test.local. Ce dernier \u00e9tant configur\u00e9 pour utiliser l&rsquo;authentification Negociate (Kerberos) en priorit\u00e9, nous allons nous connecter au site via son adresse IP (https:\/\/192.168.0.102). Cette m\u00e9thode permet de court-circuiter Kerberos et utiliser plutot NTLM.<\/p>\n<p>La s\u00e9quence d&rsquo;authentification est bas\u00e9 sur le sch\u00e9ma ci dessous (les # repr\u00e9sentent les num\u00e9ros de trame Fiddler pr\u00e9sent dans les captures):<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-681\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img19-v3.jpg\" alt=\"\" width=\"1004\" height=\"348\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img19-v3.jpg 1004w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img19-v3-300x104.jpg 300w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img19-v3-768x266.jpg 768w\" sizes=\"auto, (max-width: 1004px) 100vw, 1004px\" \/><\/p>\n<p>Le client initie une connexion vers le serveur WEB (Request: GET \/HTTP\/1.1). Le serveur WEB lui r\u00e9pond (Response: HTTP\/1.1 401 Unauthorized) en lui indiquant les protocoles qu&rsquo;il supporte: Negotiate puis NTLM dans l&rsquo;ent\u00eate WWW-Authenticate.<\/p>\n<p><a href=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img15-v2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-666\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img15-v2.jpg\" alt=\"\" width=\"953\" height=\"546\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img15-v2.jpg 953w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img15-v2-300x172.jpg 300w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img15-v2-768x440.jpg 768w\" sizes=\"auto, (max-width: 953px) 100vw, 953px\" \/><\/a><\/p>\n<p>Vous remarquerez que le sc\u00e9nario d\u00e9bute de la m\u00eame mani\u00e8re que pour Kerberos mais la suite va \u00eatre diff\u00e9rente. Ne pouvant pas utiliser Kerberos le client va envoyer une ent\u00eate \u00ab\u00a0Authorization\u00a0\u00bb commen\u00e7ant par <strong>TlRMTVNTUA\u00a0<\/strong>(NTLMSSP cod\u00e9 en base 64).<\/p>\n<p>Le client envoie un message au serveur. Cela contient principalement une liste de fonctionnalit\u00e9s prises en charge par le client et demand\u00e9es par le serveur. En option, il peut \u00e9galement fournir au serveur le nom du poste de travail du client et le domaine auquel le poste de travail client est membre. Ces informations sont utilis\u00e9es par le serveur pour d\u00e9terminer si le client est \u00e9ligible pour une authentification locale.Nous sommes dans le message NTLM<strong> type1<\/strong>:<\/p>\n<p><a href=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img16.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-667\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img16.jpg\" alt=\"\" width=\"1023\" height=\"366\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img16.jpg 1023w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img16-300x107.jpg 300w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img16-768x275.jpg 768w\" sizes=\"auto, (max-width: 1023px) 100vw, 1023px\" \/><\/a><\/p>\n<p>Le serveur r\u00e9pond avec un message de <strong>type 2<\/strong>. Cela contient une liste des fonctionnalit\u00e9s prises en charge et accept\u00e9es par le serveur. Plus important encore, il contient un Challenge (ou nonce) g\u00e9n\u00e9r\u00e9 par le serveur.<\/p>\n<p><a href=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img17.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-668\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img17.jpg\" alt=\"\" width=\"1168\" height=\"624\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img17.jpg 1168w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img17-300x160.jpg 300w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img17-768x410.jpg 768w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img17-1024x547.jpg 1024w\" sizes=\"auto, (max-width: 1168px) 100vw, 1168px\" \/><\/a><\/p>\n<p>Le client r\u00e9pond au d\u00e9fi avec un message de <strong>type 3<\/strong>. Cela contient plusieurs informations sur le client, y compris le domaine et le nom d&rsquo;utilisateur de l&rsquo;utilisateur client. Il contient \u00e9galement une ou plusieurs r\u00e9ponses au d\u00e9fi de type 2.<\/p>\n<p><a href=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img18-v2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-670\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img18-v2.jpg\" alt=\"\" width=\"1138\" height=\"821\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img18-v2.jpg 1138w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img18-v2-300x216.jpg 300w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img18-v2-768x554.jpg 768w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img18-v2-1024x739.jpg 1024w\" sizes=\"auto, (max-width: 1138px) 100vw, 1138px\" \/><\/a><\/p>\n<p>Les r\u00e9ponses dans le message de <strong>type 3<\/strong> constituent l&rsquo;\u00e9l\u00e9ment le plus critique, car elles prouvent au serveur que le client a connaissance du mot de passe du compte. Le processus d&rsquo;authentification \u00e9tablit un contexte partag\u00e9 entre les deux parties impliqu\u00e9es; Cela inclut une cl\u00e9 de session partag\u00e9e, utilis\u00e9e pour les op\u00e9rations de signature et de scellement ult\u00e9rieures.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ent\u00eates HTTP WWW-Authenticate et Autorization? HTTP prend en charge l&rsquo;utilisation de plusieurs m\u00e9canismes d&rsquo;authentification pour contr\u00f4ler l&rsquo;acc\u00e8s aux pages et aux autres ressources. Ces m\u00e9canismes sont tous bas\u00e9s sur l&rsquo;utilisation du code d&rsquo;\u00e9tat 401 et de l&rsquo;en-t\u00eate de r\u00e9ponse \u00ab\u00a0WWW-Authenticate\u00a0\u00bb. Le client utilise alors l&rsquo;ent\u00eate \u00ab\u00a0Autorization\u00a0\u00bb pour fournir au serveur des \u00e9l\u00e9ments d&rsquo;authentification. Les m\u00e9canismes<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43,4,42,3],"tags":[],"class_list":["post-599","post","type-post","status-publish","format-standard","hentry","category-http","category-kerberos","category-ntlm","category-protocoles"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.8.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Exploration des ent\u00eates HTTP WWW-Authenticate et Authorization - R\u00e9mi VERNIER<\/title>\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\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Exploration des ent\u00eates HTTP WWW-Authenticate et Authorization - R\u00e9mi VERNIER\" \/>\n<meta property=\"og:description\" content=\"Ent\u00eates HTTP WWW-Authenticate et Autorization? HTTP prend en charge l&rsquo;utilisation de plusieurs m\u00e9canismes d&rsquo;authentification pour contr\u00f4ler l&rsquo;acc\u00e8s aux pages et aux autres ressources. Ces m\u00e9canismes sont tous bas\u00e9s sur l&rsquo;utilisation du code d&rsquo;\u00e9tat 401 et de l&rsquo;en-t\u00eate de r\u00e9ponse \u00ab\u00a0WWW-Authenticate\u00a0\u00bb. Le client utilise alors l&rsquo;ent\u00eate \u00ab\u00a0Autorization\u00a0\u00bb pour fournir au serveur des \u00e9l\u00e9ments d&rsquo;authentification. Les m\u00e9canismes\" \/>\n<meta property=\"og:url\" content=\"https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/\" \/>\n<meta property=\"og:site_name\" content=\"R\u00e9mi VERNIER\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-16T16:01:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-09-28T09:46:13+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img1.jpg\" \/>\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=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/\",\"url\":\"https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/\",\"name\":\"Exploration des ent\u00eates HTTP WWW-Authenticate et Authorization - R\u00e9mi VERNIER\",\"isPartOf\":{\"@id\":\"https:\/\/remivernier.com\/#website\"},\"datePublished\":\"2018-09-16T16:01:58+00:00\",\"dateModified\":\"2018-09-28T09:46:13+00:00\",\"author\":{\"@id\":\"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906\"},\"breadcrumb\":{\"@id\":\"https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/remivernier.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Exploration des ent\u00eates HTTP WWW-Authenticate et Authorization\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/remivernier.com\/#website\",\"url\":\"https:\/\/remivernier.com\/\",\"name\":\"R\u00e9mi VERNIER\",\"description\":\"Active Directory Services, Azure &amp; co...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/remivernier.com\/?s={search_term_string}\"},\"query-input\":\"required name=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:\/\/remivernier.com\/#\/schema\/person\/image\/\",\"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":"Exploration des ent\u00eates HTTP WWW-Authenticate et Authorization - R\u00e9mi VERNIER","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\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/","og_locale":"fr_FR","og_type":"article","og_title":"Exploration des ent\u00eates HTTP WWW-Authenticate et Authorization - R\u00e9mi VERNIER","og_description":"Ent\u00eates HTTP WWW-Authenticate et Autorization? HTTP prend en charge l&rsquo;utilisation de plusieurs m\u00e9canismes d&rsquo;authentification pour contr\u00f4ler l&rsquo;acc\u00e8s aux pages et aux autres ressources. Ces m\u00e9canismes sont tous bas\u00e9s sur l&rsquo;utilisation du code d&rsquo;\u00e9tat 401 et de l&rsquo;en-t\u00eate de r\u00e9ponse \u00ab\u00a0WWW-Authenticate\u00a0\u00bb. Le client utilise alors l&rsquo;ent\u00eate \u00ab\u00a0Autorization\u00a0\u00bb pour fournir au serveur des \u00e9l\u00e9ments d&rsquo;authentification. Les m\u00e9canismes","og_url":"https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/","og_site_name":"R\u00e9mi VERNIER","article_published_time":"2018-09-16T16:01:58+00:00","article_modified_time":"2018-09-28T09:46:13+00:00","og_image":[{"url":"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/09\/exploration-des-entetes-http-www-authenticate-img1.jpg"}],"author":"R\u00e9mi","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"R\u00e9mi","Dur\u00e9e de lecture estim\u00e9e":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/","url":"https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/","name":"Exploration des ent\u00eates HTTP WWW-Authenticate et Authorization - R\u00e9mi VERNIER","isPartOf":{"@id":"https:\/\/remivernier.com\/#website"},"datePublished":"2018-09-16T16:01:58+00:00","dateModified":"2018-09-28T09:46:13+00:00","author":{"@id":"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906"},"breadcrumb":{"@id":"https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/remivernier.com\/index.php\/2018\/09\/16\/exploration-des-entetes-http-www-authenticate\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/remivernier.com\/"},{"@type":"ListItem","position":2,"name":"Exploration des ent\u00eates HTTP WWW-Authenticate et Authorization"}]},{"@type":"WebSite","@id":"https:\/\/remivernier.com\/#website","url":"https:\/\/remivernier.com\/","name":"R\u00e9mi VERNIER","description":"Active Directory Services, Azure &amp; co...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/remivernier.com\/?s={search_term_string}"},"query-input":"required name=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:\/\/remivernier.com\/#\/schema\/person\/image\/","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\/599","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=599"}],"version-history":[{"count":54,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/599\/revisions"}],"predecessor-version":[{"id":743,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/599\/revisions\/743"}],"wp:attachment":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/media?parent=599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/categories?post=599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/tags?post=599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}