<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Consultant</title>
	<atom:link href="https://www.riskinsight-wavestone.com/author/nicolas-daubresse/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.riskinsight-wavestone.com/author/nicolas-daubresse/</link>
	<description>Le blog cybersécurité des consultants Wavestone</description>
	<lastBuildDate>Wed, 07 Jul 2021 15:10:09 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.riskinsight-wavestone.com/wp-content/uploads/2024/02/Blogs-2024_RI-39x39.png</url>
	<title>Consultant</title>
	<link>https://www.riskinsight-wavestone.com/author/nicolas-daubresse/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Utilisation des métadonnées de réplication, quand les journaux font défaut</title>
		<link>https://www.riskinsight-wavestone.com/2018/02/utilisation-des-metadonnees-de/</link>
		
		<dc:creator><![CDATA[Nicolas Daubresse]]></dc:creator>
		<pubDate>Fri, 16 Feb 2018 07:33:17 +0000</pubDate>
				<category><![CDATA[Cybersecurity & Digital Trust]]></category>
		<category><![CDATA[Deep-dive]]></category>
		<category><![CDATA[Ethical Hacking & Incident Response]]></category>
		<category><![CDATA[Active directory]]></category>
		<category><![CDATA[deep-dive]]></category>
		<category><![CDATA[forensics]]></category>
		<category><![CDATA[usn]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=15551</guid>

					<description><![CDATA[<p>Introduction aux données de réplication de l’Active Directory Au sein d’un domaine Active Directory se trouvent généralement plusieurs contrôleurs de domaine qui nécessitent de disposer des mêmes informations. Pour parvenir à cela, l’Active Directory dispose d’un mécanisme de réplication qui...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2018/02/utilisation-des-metadonnees-de/">Utilisation des métadonnées de réplication, quand les journaux font défaut</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="separator" style="clear: both; text-align: center;">
<figure id="post-15553 media-15553" class="align-none"><img fetchpriority="high" decoding="async" class="aligncenter wp-image-15553 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/header-1.png" alt="" width="640" height="160" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/header-1.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/header-1-437x109.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/header-1-71x18.png 71w" sizes="(max-width: 640px) 100vw, 640px" /></figure>
</div>
<div style="text-align: justify;"></div>
<h3 style="text-align: justify;">Introduction aux données de réplication de l’Active Directory</h3>
<div style="text-align: justify;">Au sein d’un domaine Active Directory se trouvent généralement plusieurs contrôleurs de domaine qui nécessitent de disposer des mêmes informations. Pour parvenir à cela, l’Active Directory dispose d’un mécanisme de réplication qui permet, entre autres, de propager un changement depuis un contrôleur de domaine vers les autres.</div>
<div style="text-align: justify;">Dans son processus de réplication, l’Active Directory utilise des USN (Update Sequence Number) pour déterminer l’état des contrôleurs de domaines. Ces USN représentent un compteur stocké dans la base de données de l’Active Directory, qui est incrémenté à chaque changement de cette base au niveau d’un contrôleur de domaine. Chaque contrôleur de domaine dispose alors d’un USN qui lui est propre.</div>
<div style="text-align: justify;">Lorsqu’un changement d’une information de l’Active Directory intervient sur un contrôleur de domaine, deux cas peuvent se présenter :</div>
<div style="text-align: justify;"></div>
<ul>
<li>L’information modifiée n’est pas une information répliquée entre les différents contrôleurs de domaines. C’est le cas de l’ensemble des attributs de l’Active Directory qui disposent du flag <span style="font-family: 'courier new' , 'courier' , monospace;">FLAG_ATTR_NOT_REPLICATED</span>[1] comme par exemple l’attribut « BadPwdCount » qui tient compte du nombre de tentatives de connexion échouées :
<div class="separator" style="clear: both; text-align: center;">
<figure id="post-15555 media-15555" class="align-none"><img decoding="async" class="aligncenter wp-image-15555 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img1.png" alt="" width="563" height="200" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img1.png 563w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img1-437x155.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img1-71x25.png 71w" sizes="(max-width: 563px) 100vw, 563px" /></figure>
</div>
<div style="text-align: left;"><span style="text-align: justify;">Dans ce cas, le contrôleur de domaine effectue la modification dans sa propre base de données, mais ne transmet rien aux autres contrôleurs de domaine.</span></div>
<p>&nbsp;</li>
<li>
<div style="text-align: left;"><span style="text-align: justify;">L’information modifiée nécessite une réplication entre les différents contrôleurs de domaines. Dans ce cas, le contrôleur de domaine qui a reçu le changement utilise le modèle de réplication de l’Active Directory pour transmettre le changement aux autres contrôleurs du domaine. Ce modèle de réplication ne sera pas détaillé dans cet article, mais permet la diffusion des évolutions à l’ensemble des contrôleurs d’un domaine en limitant le trafic nécessaire et en assurant la gestion des collisions (en cas de changement d’un même attribut sur différents contrôleurs sur une fenêtre de temps réduite).</span></div>
</li>
</ul>
<div style="text-align: justify;">Le processus de réplication utilise des métadonnées qui sont conservées sous la forme de deux attributs distincts : <span style="font-family: 'courier new' , 'courier' , monospace;">msDS-ReplAttributeMetaData</span>[2] et <span style="font-family: 'courier new' , 'courier' , monospace;">msDS-ReplValueMetaData</span>[3]. <span style="font-family: 'courier new' , 'courier' , monospace;">msDS-ReplAttributeMetaData</span> est utilisé pour les changements effectués sur les attributs non linkés de l’Active Directory alors que <span style="font-family: 'courier new' , 'courier' , monospace;">msDS-ReplValueMetaData</span> est réservé aux attributs linkés.</div>
<div style="text-align: justify;">Les attributs linkés ont été introduits dans l’Active Directory à partir du niveau fonctionnel Windows Server 2003. Ce sont en fait des paires d’attributs dont la valeur de l’un est basée sur celle de l’autre. C’est par exemple le cas des attributs <span style="font-family: 'courier new' , 'courier' , monospace;">member </span>d’un groupe et <span style="font-family: 'courier new' , 'courier' , monospace;">memberof </span>de l’utilisateur.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<h3>Quel intérêt pour l’investigation ?</h3>
</div>
<div style="text-align: justify;">En tant qu’analyste forensic qui intervient suite à un incident de sécurité, le premier réflexe pour permettre d’identifier les actions malveillantes ayant eu lieu au sein d’un Active Directory est l’utilisation des journaux d’événements. Mais que faire si ceux-ci n’étaient pas activés au moment de l’attaque ? Ou si l’attaquant est parvenu à supprimer les journaux générés par ses actions, comme le permet un outil comme mimikatz[4] ?</div>
<div style="text-align: justify;">Dans de telles situations, il est possible d’utiliser les données de réplication pour obtenir une vision partielle des actions des attaquants. En effet, d’après le fonctionnement des données de réplication, toute modification d’un attribut de l’Active Directory aboutit à la création d’une donnée de réplication contenant différentes informations pouvant être utile pour une investigation.</div>
<div style="text-align: justify;">Dans le cas d’un attribut non linké, et donc d’une métadonnée de type <span style="font-family: 'courier new' , 'courier' , monospace;">msDS-ReplAttributeMetaData</span>, les informations stockées sont la version, qui correspond au nombre de changements de l’attribut depuis sa création, la date à laquelle a été effectuée la modification, l’USN correspondant au changement pour le contrôleur de domaine qui a initié la réplication, l’USN correspondant au changement pour le contrôleur de domaine sur lequel est récupéré la métadonnée, ainsi que l’UUID et le DN du contrôleur de domaine ayant initié le changement :</div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<figure id="post-15557 media-15557" class="align-none"><img decoding="async" class="aligncenter wp-image-15557 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img2.png" alt="" width="563" height="128" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img2.png 563w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img2-437x99.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img2-71x16.png 71w" sizes="(max-width: 563px) 100vw, 563px" /></figure>
</div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">Pour les attributs linkés, les métadonnées de réplication, cette fois de type <span style="font-family: 'courier new' , 'courier' , monospace;">msDS-ReplValueMetaData</span>, vont également stocker des informations sur les attributs liés à l’attribut en question. Les métadonnées de réplication vont alors conserver des informations sur chacune des propriétés de l’attribut lié, y compris pour les valeurs précédentes. Dans l’exemple de l’attribut <span style="font-family: 'courier new' , 'courier' , monospace;">member</span>, les données de réplication conserveront donc à la fois des informations sur les membres actuels du groupe, mais également sur les utilisateurs ayant été membres mais ne l’étant plus :</div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<figure id="post-15559 media-15559" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15559 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img3.png" alt="" width="558" height="209" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img3.png 558w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img3-437x164.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img3-71x27.png 71w" sizes="auto, (max-width: 558px) 100vw, 558px" /></figure>
</div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">A un instant donné, il est alors possible grâce à ces données de déterminer la date de dernière modification d’un attribut, ainsi que le nombre de fois où il a été modifié depuis sa création. Ces données, bien que semblant très limitées, peuvent alors servir à identifier différents scénarios d’attaque.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<h3>Elévation de privilèges par ajout dans un groupe</h3>
</div>
<div style="text-align: justify;">L’un des cas où les données de réplication offrent les meilleurs résultats est l’identification d’un scénario où l’attaquant s’est ajouté, puis supprimé d’un groupe, comme par exemple le groupe « Admins du domaine ».</div>
<div style="text-align: justify;">En effet, au sein d’un Active Directory, les groupes possèdent une propriété « member » qui liste les utilisateurs appartenant au groupe. L’ajout d’un utilisateur dans un groupe va alors incrémenter l’USN de son attribut « <span style="font-family: 'courier new' , 'courier' , monospace;">member </span>» de 1, celui-ci ayant été modifié. De même, le retrait de l’utilisateur incrémentera également cet USN de 1.</div>
<div style="text-align: justify;">Etant donné ces propriétés, deux conclusions sont possibles :</div>
<div style="text-align: justify;">
<ul>
<li>Les utilisateurs ayant un USN impair sont membres du groupe (chose qu’il est directement possible de voir dans la valeur de l’attribut « <span style="font-family: 'courier new' , 'courier' , monospace;">member </span>»), et la date de dernier ajout de l’utilisateur au sein du groupe est celle de l’USN ;</li>
<li>Les utilisateurs ayant un USN pair ont appartenu au groupe, mais n’en font plus parti depuis la date de l’USN.</li>
</ul>
</div>
<div style="text-align: justify;">C’est donc dans le second cas que se retrouverait le compte d’un attaquant s’étant ajouté au groupe « Admins de domaine » pour réaliser des actions malveillantes, puis supprimé du groupe. Il est alors possible de créer un script récupérant les utilisateurs ayant été ajoutés ou supprimés d’un groupe après une date donnée (seule la date de premier et de dernier changement étant conservés, il ne serait pas fiable de limiter la recherche à une date maximale) :</div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<figure id="post-15561 media-15561" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15561 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img4.png" alt="" width="561" height="86" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img4.png 561w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img4-437x67.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img4-71x11.png 71w" sizes="auto, (max-width: 561px) 100vw, 561px" /></figure>
</div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">
<h3>Targeted Kerberoasting</h3>
</div>
<div style="text-align: justify;">Le kerberoasting est une technique qui exploite le processus d’authentification Kerberos pour permettre à un attaquant de récupérer le mot de passe d’un compte de service (comprendre « compte disposant d’un Service Principal Name »). Le principe de cette attaque est que, comme le montre le schéma suivant, lors d’une demande d’authentification à un service par un utilisateur, le KDC utilise le hash NTLM du compte de service pour chiffrer le TGS renvoyé à l’utilisateur. Dans ce processus, la légitimité de l’utilisateur à accéder au service n’est pas vérifiée, et n’importe quel utilisateur peut donc obtenir le TGS.</div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<figure id="post-15563 media-15563" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15563 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img5.png" alt="" width="640" height="391" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img5.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img5-313x191.png 313w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img5-64x39.png 64w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
</div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Il est alors possible pour l’attaquant d’effectuer une tentative de cassage du hash NTLM du compte de service en tentant de déchiffrer le TGS à partir de hashs successifs.</div>
<div style="text-align: justify;">Supposons maintenant qu’un attaquant soit parvenu à récupérer des privilèges maximums sur un objet utilisateur, à savoir des privilèges de type <span style="font-family: 'courier new' , 'courier' , monospace;">GenericAll</span>[5], qui donne notamment le droit de modifier le mot de passe du compte, ou encore de modifier les propriétés de l’objet Active Directory associé au compte. Pour usurper l’identité du compte en question, l’attaquant pourrait donc réinitialiser le mot de passe du compte avec une valeur qu’il choisit, et se connecter à l’aide de ce nouveau mot de passe. Néanmoins, une telle attaque serait rapidement détectée par l’utilisateur légitime du compte, qui ne parviendrait plus à se connecter avec son mot de passe habituel.</div>
<div style="text-align: justify;">Une possibilité plus intéressante pour l’attaquant serait alors d’ajouter un Service Principal Name (SPN) au compte de ciblé, puis d’exécuter une attaque de type kerberoasting. C’est ce qu’on appelle le targeted kerberoasting.</div>
<div style="text-align: justify;">La majorité des utilisateurs d’un domaine n’étant jamais supposée avoir de SPN, une telle attaque peut assez simplement être détectée si ce SPN n’est pas supprimé. Si par contre ce SPN est supprimé par l’attaquant une fois l’attaque effectuée, il reste toujours possible d’utiliser les données de réplication !</div>
<div style="text-align: justify;">En effet, l’ajout ou la suppression d’un SPN sont des événements répliqués au sein de l’Active Directory, et génèrent donc des métadonnées de réplication de type <span style="font-family: 'courier new' , 'courier' , monospace;">msDS-ReplAttributeMetaData</span> :</div>
<div style="text-align: justify;">
<div class="separator" style="clear: both; text-align: center;">
<figure id="post-15565 media-15565" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15565 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img6.png" alt="" width="559" height="76" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img6.png 559w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img6-437x59.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img6-71x10.png 71w" sizes="auto, (max-width: 559px) 100vw, 559px" /></figure>
</div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">Il est alors possible de créer un script récupérant les comptes du domaine dont l’attribut SPN a été modifié depuis une date donnée, comptes qui sont donc des victimes potentielles d’une attaque de type targeted kerberoasting.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<h3>Bruteforce d’un compte par blocage successif</h3>
</div>
<div style="text-align: justify;">Un scénario d’attaque par bruteforce pouvant être utilisé par un attaquant au sein d’un Active Directory ne disposant d’aucune alerte est la réalisation de tentatives de connexion en dehors des heures d’utilisation du compte, et ce jusqu’au blocage du compte.</div>
<div style="text-align: justify;">
<p>Lors du blocage d’un compte, un flag <span style="font-family: 'courier new' , 'courier' , monospace;">LOCKOUT</span>[6] est positionné sur l’attribut <span style="font-family: 'courier new' , 'courier' , monospace;">userAccountControl</span> d’un utilisateur. Cet attribué étant répliqué entre les différents contrôleurs de domaine, des données de réplication de type <span style="font-family: 'courier new' , 'courier' , monospace;">msDS-ReplAttributeMetaData</span> sont alors générées. Il est alors possible de créer un script permettant d’identifier les comptes du domaine ayant un numéro de version important dans les données de réplication de cet attribut, ce qui pourrait annoncer un tel bruteforce :</p>
<div class="separator" style="clear: both; text-align: center;">
<figure id="post-15567 media-15567" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15567 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img7.png" alt="" width="560" height="73" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img7.png 560w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img7-437x57.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/img7-71x9.png 71w" sizes="auto, (max-width: 560px) 100vw, 560px" /></figure>
</div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">Il est cependant à noter que l’attribut <span style="font-family: 'courier new' , 'courier' , monospace;">userAccountControl </span>dispose de plusieurs autres flags dont la modification entrainerait également la génération de données de réplication, indissociable des précédentes, comme par exemple pour le flag <span style="font-family: 'courier new' , 'courier' , monospace;">PASSWORD_EXPIRED</span>. Cependant, cet attribut n’est généralement pas amené à évoluer grandement, et un très grand nombre de changements reste un indicateur relativement fiable d’un bruteforce.</div>
<div style="text-align: justify;">Un autre point à noter est qu’en limitant les tentatives de connexion pour éviter le blocage du compte, un attaquant serait invisible à cette méthode d’investigation.</div>
<div style="text-align: justify;">
<h3>Conclusion</h3>
</div>
<div style="text-align: justify;">Bien que n’apportant pas une vision aussi complète que les journaux d’événements, les données de réplication peuvent donc être une source d’information non négligeable pour une investigation forensic dans un Active Directory.</div>
<div style="text-align: justify;">Il est cependant à noter que des techniques permettant la modification des données de réplication pourraient exister[7], la confiance accordée aux informations obtenues grâce à celles-ci ne doit donc pas être aveugle.</div>
<p></p>
<div style="text-align: right;"></div>
<div style="text-align: justify;">
<h3>Sources :</h3>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">[1] Voir « systemFlags » : <a href="https://msdn.microsoft.com/en-us/library/cc223202.aspx">https://msdn.microsoft.com/en-us/library/cc223202.aspx</a></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">[2] <a href="https://msdn.microsoft.com/en-us/library/cc220352.aspx">https://msdn.microsoft.com/en-us/library/cc220352.aspx</a></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">[3] h<a href="ttps://msdn.microsoft.com/en-us/library/cc220356.aspx">ttps://msdn.microsoft.com/en-us/library/cc220356.aspx</a></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">[4] <a href="https://github.com/gentilkiwi/mimikatz/releases">https://github.com/gentilkiwi/mimikatz/releases</a></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">[5] <a href="https://msdn.microsoft.com/en-us/library/aa772285(v=vs.85).aspx">https://msdn.microsoft.com/en-us/library/aa772285(v=vs.85).aspx</a></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">[6] <a href="https://support.microsoft.com/en-us/help/305144/how-to-use-the-useraccountcontrol-flags-to-manipulate-user-account-pro">https://support.microsoft.com/en-us/help/305144/how-to-use-the-useraccountcontrol-flags-to-manipulate-user-account-pro</a></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;">[7] <a href="https://twitter.com/mysmartlogon/status/903166180889907200">https://twitter.com/mysmartlogon/status/903166180889907200</a></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;"><a href="https://www.harmj0y.net/blog/defense/hunting-with-active-directory-replication-metadata/">https://www.harmj0y.net/blog/defense/hunting-with-active-directory-replication-metadata/</a></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;"><a href="https://social.technet.microsoft.com/wiki/contents/articles/25946.metadata-de-replication-et-analyse-forensic-active-directory-fr-fr.aspx">https://social.technet.microsoft.com/wiki/contents/articles/25946.metadata-de-replication-et-analyse-forensic-active-directory-fr-fr.aspx</a></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;"><a href="https://blogs.technet.microsoft.com/pie/2014/08/25/metadata-2-the-ephemeral-admin-or-how-to-track-the-group-membership/">https://blogs.technet.microsoft.com/pie/2014/08/25/metadata-2-the-ephemeral-admin-or-how-to-track-the-group-membership/</a></div>
</div>
<div style="text-align: justify;">
<div style="text-align: left;"></div>
</div>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2018/02/utilisation-des-metadonnees-de/">Utilisation des métadonnées de réplication, quand les journaux font défaut</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Compromission d’un domaine Windows à l’aide des délégations Kerberos</title>
		<link>https://www.riskinsight-wavestone.com/2017/04/compromission-domaine-windows-delegation-kerberos/</link>
		
		<dc:creator><![CDATA[Nicolas Daubresse]]></dc:creator>
		<pubDate>Wed, 19 Apr 2017 17:18:23 +0000</pubDate>
				<category><![CDATA[Cybersecurity & Digital Trust]]></category>
		<category><![CDATA[Deep-dive]]></category>
		<category><![CDATA[Ethical Hacking & Incident Response]]></category>
		<category><![CDATA[Active directory]]></category>
		<category><![CDATA[audit]]></category>
		<category><![CDATA[authentification]]></category>
		<category><![CDATA[kerberos]]></category>
		<category><![CDATA[pentest]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=15795</guid>

					<description><![CDATA[<p>Quelques rappels sur le protocole d’authentification Kerberos Kerberos est un protocole d’authentification réseau reposant sur un mécanisme de clés secrètes (chiffrement symétrique) et l’utilisation de tickets. Il fait partie intégrante des système d’exploitation Windows depuis la version Serveur 2000. Différents...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2017/04/compromission-domaine-windows-delegation-kerberos/">Compromission d’un domaine Windows à l’aide des délégations Kerberos</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Quelques rappels sur le protocole d’authentification Kerberos</h2>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Kerberos est un protocole d’authentification réseau reposant sur un mécanisme de clés secrètes (chiffrement symétrique) et l’utilisation de tickets. Il fait partie intégrante des système d’exploitation Windows depuis la version Serveur 2000. Différents termes spécifiques sont utilisés pour détailler ce protocole :</p>
<ul style="font-weight: 400;">
<li>KDC (<em>Key Distribution Center</em>) : Le KDC est un service installé sur les contrôleurs de domaine et permettant l’obtention des différents tickets par un utilisateur.</li>
<li>TGT (<em>Ticket-Granting Ticket</em>) : Le TGT est un ticket attribué par le KDC à un utilisateur. Ce ticket représente l’identité de l’utilisateur, et lui permet d’effectuer des demandes de TGS auprès du KDC.</li>
<li>TGS (<em>Ticket-Granting Service</em>) : Le TGS est également un ticket attribué par le KDC pour représenter un utilisateur. Il permet à l’utilisateur de s’authentifier auprès d’un service spécifique, dont le nom est inscrit dans le ticket. Un exemple d’un tel ticket est le suivant :</li>
</ul>
<figure id="post-15796 media-15796" class="align-none"><img loading="lazy" decoding="async" class="size-full wp-image-15796 aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/1.png" alt="" width="454" height="83" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/1.png 454w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/1-437x80.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/1-71x13.png 71w" sizes="auto, (max-width: 454px) 100vw, 454px" /></figure>
<p>Le schéma d’une authentification Kerberos classique est le suivant :</p>
<figure id="post-15798 media-15798" class="align-none"><img loading="lazy" decoding="async" class="size-full wp-image-15798 aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/2.png" alt="" width="514" height="315" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/2.png 514w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/2-312x191.png 312w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/2-64x39.png 64w" sizes="auto, (max-width: 514px) 100vw, 514px" /></figure>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Dans la première étape, l’utilisateur envoi au contrôleur de domaine un <em>timestamp</em> chiffré à l’aide du hash NTLM de son mot de passe. Ayant accès à ce hash, le contrôleur de domaine, et plus précisément le KDC, peut déchiffrer l’information reçue et vérifier le <em>timestamp</em>, ce qui prouve l’identité de l’utilisateur. Le KDC fournit alors à l’utilisateur son TGT (étape 2).</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">L’utilisateur peut alors fournir le TGT préalablement récupéré pour effectuer une demande de TGS (étape 3). Le TGT étant représentatif de l’utilisateur, le KDC peut valider son identité et lui fournir un TGS pour le service demandé (étape 4).</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Enfin, l’utilisateur transmet ce TGS comme preuve de son identité auprès du service (étape 5).</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Dans le protocole Kerberos, ce sont donc bien les tickets qui permettent d’assurer l’identité d’un utilisateur, au même titre qu’un couple nom d’utilisateur / mot de passe le fait dans une authentification classique.</p>
<h2>Introduction aux délégations Kerberos</h2>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Microsoft a introduit les délégations Kerberos dans l’objectif de permettre à une application de réutiliser l’identité d’un utilisateur pour accéder à une ressource hébergée sur un serveur différent. Un cas d’usage est par exemple l’accès à des documents hébergés sur un serveur dédié depuis une plateforme SharePoint :</p>
<figure id="post-15800 media-15800" class="align-none"><img loading="lazy" decoding="async" class="size-full wp-image-15800 aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/3.png" alt="" width="385" height="249" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/3.png 385w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/3-295x191.png 295w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/3-60x39.png 60w" sizes="auto, (max-width: 385px) 100vw, 385px" /></figure>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">L’utilisateur n’ayant pas d’accès direct au serveur de fichiers, il s’authentifie sur la plateforme SharePoint qui doit alors transmettre l’identité de l’utilisateur au serveur de fichiers.</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Cependant, les tickets de service étant délivrés pour une application spécifique, le SharePoint ne peut transmettre directement le ticket qu’il a reçu de l’utilisateur. C’est donc pour répondre à cette problématique que Microsoft a mis en place les délégations Kerberos, qui existent sous deux formes :</p>
<ul style="font-weight: 400;">
<li>Les délégations non contraintes, apparues avec le système d’exploitation Windows Serveur 2000, et qui donnent l’autorisation à un compte de service de réutiliser l’identité de l’utilisateur sur n’importe quel service du domaine ou de la forêt.</li>
<li>Les délégations contraintes, apparues avec le système d’exploitation Windows Serveur 2003, et qui permettent un meilleur contrôle en limitant les services sur lesquels un compte de service donné peut s’authentifier en tant que l’utilisateur.</li>
</ul>
<h2 data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Les délégations Kerberos non contraintes</h2>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Le schéma d’authentification d’un utilisateur désirant accéder à une ressource dans le cas d’une délégation Kerberos non contrainte est le suivant :</p>
<figure id="post-15802 media-15802" class="align-none"><img loading="lazy" decoding="async" class="size-full wp-image-15802 aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/4.png" alt="" width="734" height="314" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/4.png 734w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/4-437x187.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/4-71x30.png 71w" sizes="auto, (max-width: 734px) 100vw, 734px" /></figure>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Lors de la première étape de ce schéma, l’utilisateur effectue une demande de TGT auprès du contrôleur de domaine, en lui transmettant un <em>timestamp</em> chiffré avec le hash NTLM de son mot de passe. Après avoir validé son identité, le contrôleur de domaine fournit un TGT à l’utilisateur (étape 2), comme il le ferait pour une authentification Kerberos classique.</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Pour s’authentifier auprès de l’application SharePoint, l’utilisateur demande alors un TGS au contrôleur de domaine, en lui fournissant le TGT précédemment récupéré (étape 3). Dans le cas d’une délégation Kerberos non contrainte, le contrôleur de domaine construit le TGS de l’utilisateur à partir de son TGT, qu’il chiffre à l’aide du hash NTLM du mot de passe du compte de service utilisé par l’application SharePoint (étape 4).</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">L’utilisateur s’authentifie alors sur l’application SharePoint (étape 5) en transmettant le TGS que lui a fourni le contrôleur de domaine lors de l’étape précédente.</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Le compte de service de l’application SharePoint peut déchiffrer ce TGS étant donné qu’il est chiffré avec son propre hash. Il récupère ainsi le TGT de l’utilisateur, qu’il peut fournir au contrôleur de domaine pour effectuer une demande de TGS pour le serveur de fichier (étape 6). Le TGT étant celui de l’utilisateur, le TGS renvoyé par le contrôleur de domaine (étape 7) représente son identité, et non celle du compte de service.</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Le compte de service de l’application SharePoint peut alors transmettre ce TGS (étape 8), que le serveur de fichiers validera comme s’il provenait de l’utilisateur lui-même, donnant accès au document demandé (étape 9).  Ayant récupéré ce document, l’application SharePoint peut le fournir à l’utilisateur, pour lequel les phases d’authentification intermédiaires auront été transparentes.</p>
<h2 data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Les délégations Kerberos contraintes</h2>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Dans le cas d’une délégation Kerberos contrainte, deux extensions de protocole sont utilisées pour permettre à une application de réutiliser l’identité de l’un de ses utilisateurs :</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">S4U2Self (Server-for-User-to-Self) qui autorise un service à obtenir un TGS pour lui-même en tant qu’un utilisateur.</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">S4U2Proxy (Server-for-User-to-Proxy) qui autorise un service à obtenir un TGS pour un autre service en tant qu’un utilisateur.</p>
<p data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">La cinématique d’authentification et d’accès aux ressources dans le cas d’une telle délégation est alors la suivante :</p>
<figure id="post-15804 media-15804" class="align-none"><img loading="lazy" decoding="async" class="size-full wp-image-15804 aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/5.png" alt="" width="734" height="325" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/5.png 734w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/5-431x191.png 431w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/05/5-71x31.png 71w" sizes="auto, (max-width: 734px) 100vw, 734px" /></figure>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Dans la première étape de cette cinématique, l’utilisateur s’authentifie après du premier service en lui transmettant ses identifiants. L’authentification n’utilisant pas Kerberos, l’utilisateur n’a pas besoin de s’authentifier auprès du contrôleur de domaine.</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Le compte de service demande alors un TGS représentant l’identité de l’utilisateur et permettant de s’authentifier auprès de son propre service (étape 2). Le compte de service possédant l’extension S4U2Self, le contrôleur de domaine accorde ce ticket (étape 3).</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Ce même compte de service demande ensuite un TGS représentant l’identité de l’utilisateur et permettant de s’authentifier auprès du second service (étape 4). Après validation de l’extension S4U2Proxy, le contrôleur de domaine accorde ce TGS (étape 5)</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Grâce à ce second ticket de service, le compte de service du SharePoint peut accéder aux ressources du serveur de fichier avec l’identité de l’utilisateur (étape 6). Le serveur de fichiers valide les privilèges de l’utilisateur, et transmet le document demandé au compte de service SharePoint (étape 7), qui le transmet à l’utilisateur (étape 8).</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Contrairement au cas des délégations non contraintes, l’utilisation de l’extension de protocole S4U2Proxy permet de spécifier les services accessibles au compte de service SharePoint. Ainsi, même si l’utilisateur dispose des privilèges nécessaires pour accéder à un autre serveur, le compte de service ne pourra récupérer de TGS valide représentant l’identité de l’utilisateur. Dans le cas d’une délégation contrainte, cette restriction se fait à l’aide d’un paramètre du compte de service, appelé SPN pour <em>Service Principal Name</em>.</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Il est à noter que depuis la version Serveur 2012 du système d’exploitation Windows, un troisième type de délégation Kerberos est proposée, les délégations Kerberos contraintes basées sur les ressources. Le fonctionnement de ces délégations est similaire à celui des délégations contraintes, mais la restriction est effectuée en spécifiant explicitement le compte ayant accès aux ressources.</p>
<h2 data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Exploiter les délégations non contraintes</h2>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Les faiblesses induites par les délégations Kerberos non-contraintes sont connues depuis plusieurs années. Sean Metcalf a, par exemple, présenté les dangers de telles délégations à la Black Hat USA 2015. Dans la cinématique d’authentification présentée précédemment, il est en effet évident que le compte de service de l’application SharePoint peut, une fois que l’utilisateur lui a transmis un TGS contenant son TGT, accéder à l’ensemble des services pour lesquels l’utilisateur dispose de privilèges nécessaires.</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">L’objectif d’un attaquant est alors d’obtenir le TGT d’un administrateur du domaine, ce qui lui permet de se connecter au contrôleur de domaine avec les privilèges maximum pour changer le mot de passe du compte <em>krbtgt </em>afin de pouvoir forger ses propres tickets à la demande.</p>
<p style="font-weight: 400; text-align: left;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Pour parvenir à cela, il est d’abord nécessaire d’identifier les services qui disposent de délégations non contraintes. Pour cela, il suffit de filtrer les objets de l’Active Directory à la recherche de paramètres <em>TrustedForDelegation </em>valant <em>True</em>. Ce paramètre indique en effet la présence d’une délégation non contrainte, et est de plus accessible sans privilège particulier, par exemple à l’aide de la commande <em>Get-ADComputer</em> du module <em>ActiveDirectory </em>:</p>
<table class="MsoNormalTable" style="background: #dacdeb; border-collapse: collapse; mso-padding-alt: 0cm 0cm 0cm 0cm; mso-yfti-tbllook: 1184;" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 551.5pt;" valign="top" width="735">
<div class="MsoNormal" style="mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; text-align: justify;">
<div style="text-align: left;"><span lang="EN-GB"><span style="font-family: 'courier new' , 'courier' , monospace;">PS C:\&gt; Import-Module ActiveDirectory</span></span></div>
</div>
<div class="MsoNormal" style="mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; text-align: justify;">
<div style="text-align: left;"><span style="font-family: inherit;"><span lang="EN-GB"><span style="font-family: 'courier new' , 'courier' , monospace;">PS C:\&gt; Get-ADComputer –Filter {(TrustedForDelegation –eq $True) –and (PrimaryGroupID –eq 515)}</span></span></span></div>
</div>
</td>
</tr>
</tbody>
</table>
<p style="font-weight: 400; text-align: left;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Une fois les services disposant d’une délégation Kerberos non contrainte identifiés, il est nécessaire d’obtenir des privilèges administrateur sur l’un des serveurs sur lesquels ils sont utilisés. Les méthodes de compromission classiques peuvent alors être utilisées, mais ne seront pas abordées dans cet article.</p>
<p style="font-weight: 400; text-align: left;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">En cas d’accès au service par un administrateur du domaine, l’attaquant sera en mesure d’extraire le TGS fourni à l’aide par exemple de l’outil <em>mimikatz </em>et de la commande suivante :</p>
<table class="MsoNormalTable" style="background: #dacdeb; border-collapse: collapse; mso-padding-alt: 0cm 0cm 0cm 0cm; mso-yfti-tbllook: 1184;" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 551.5pt;" valign="top" width="735">
<div class="MsoNormal" style="mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly; text-align: justify;">
<div style="text-align: left;"><span style="font-family: inherit;"><span style="font-family: 'courier new' , 'courier' , monospace;">mimikatz # kerberos::list /export</span></span></div>
</div>
</td>
</tr>
</tbody>
</table>
<p style="font-weight: 400; text-align: left;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Comme indiqué dans le scénario d’authentification, ce TGS contient le TGT de l’administrateur, que l’attaquant pourra extraire afin de réaliser une attaque <em>Pass-The-Ticket</em> pour se connecter au contrôleur de domaine.</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Les recommandations pour protéger un domaine d’une telle attaque sont alors les suivantes :</p>
<ul>
<li>Utiliser des délégations Kerberos contraintes qui sont plus restrictives</li>
<li>Configurer l’ensemble des comptes à privilèges avec le paramètre « Le compte est sensible et ne peut être délégué » qui empêche la réutilisation de l’identité du compte par une application possédant une délégation</li>
</ul>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Dans le cas d’un domaine au niveau fonctionnel supérieur à Windows Serveur 2012 R2, le groupe de sécurité « Utilisateurs protégés » peut être utilisé pour les comptes à privilèges étant donné que les délégations ne sont pas autorisées pour les comptes de ce groupe.</p>
<h2>Qu’en est-il des délégations contraintes ?</h2>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">L’utilisation de délégations contraintes semble être une alternative plus sécurisée. Cependant, différents éléments sont à noter concernant ce mécanisme d’authentification, comme l’a présenté Matan Hart lors de la Black Hat 2017. En effet, les deux extensions de protocole utilisées ont été pensées avec les principes suivants :</p>
<ul>
<li>Les deux extensions permettent à un service Kerberos d’obtenir des TGS sans même que l’utilisateur n’ait besoin de s’authentifier auprès du contrôleur de domaine.</li>
<li>L’extension S4U2Self permet au service d’obtenir un TGS pour l’utilisateur sans qu’aucun mot de passe ne soit nécessaire.</li>
</ul>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">De ce fait, un service qui possèderait les deux extensions pourrait obtenir un TGS pour n’importe quel autre service en se faisant passer pour un utilisateur, et ce sans nécessiter son mot de passe.</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Matan Hart a publié son outil « Mystique[1] » qui permet d’identifier des configurations à risque pour les délégations. Pour cela, il liste les comptes qui disposent du paramètre <em>TrustedToAuthForDelegation </em>valant True, indiquant une délégation contrainte, ainsi que d’un paramètre <em>MsDS-AllowedToDelegateTo</em> non nul, indiquant l’utilisation d’un SPN, ce qui est obligatoire pour les comptes de délégation.</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Il est également à noter que les TGS sont validés selon deux critères, le hash du mot de passe de l’utilisateur, et le SPN possédé par le compte de service qui possède la délégation contrainte. En cas de multiples SPNs associés à un même compte de service, et de mot de passe partagé entre différents comptes, les tickets pour deux services distincts seront complétement interchangeables, ce qui pourrait permettre à un service de réutiliser l’identité d’un utilisateur de manière illégitime.</p>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">Ces faiblesses ne sont pas considérées comme des vulnérabilités par Microsoft, et ne sont donc pas amenées à changer. Lors de la création d’une délégation Kerberos contrainte, il est alors nécessaire de faire attention aux points suivants pour se protéger des attaques :</p>
<ul>
<li>Configurer les services à l’aide de comptes de service dédiés, évitant ainsi le partage des comptes qui pourrait aboutir à des tickets interchangeables. Il est également important d’assurer une bonne complexité des mots de passe, ainsi qu’une rotation régulière.</li>
<li>Configurer des SPNs uniques comme étant autorisés pour la délégation, en évitant les SPNs par défaut de Microsoft, et en spécifiant les ports utilisés.</li>
<li>Comme pour les délégations non contraintes, configurer les comptes à privilèges comme étant des comptes sensibles ne pouvant être délégués.</li>
</ul>
<h2>Conclusion</h2>
<p style="font-weight: 400;" data-original-attrs="{&quot;style&quot;:&quot;mso-element-anchor-horizontal: column; mso-element-anchor-vertical: paragraph; mso-element-frame-hspace: .75pt; mso-element-wrap: around; mso-element: frame; mso-height-rule: exactly;&quot;}">L’utilisation de délégations contraintes n’est pas totalement à proscrire. Il est cependant nécessaire de bien maitriser leur configuration et les ressources auxquelles elles permettent d’accéder afin d’éviter les travers détaillés dans cet article.</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2017/04/compromission-domaine-windows-delegation-kerberos/">Compromission d’un domaine Windows à l’aide des délégations Kerberos</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
