<?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>François Lelièvre, Auteur</title>
	<atom:link href="https://www.riskinsight-wavestone.com/author/francois-lelievre/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.riskinsight-wavestone.com/author/francois-lelievre/</link>
	<description>Le blog cybersécurité des consultants Wavestone</description>
	<lastBuildDate>Thu, 03 Jun 2021 10:20:27 +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>François Lelièvre, Auteur</title>
	<link>https://www.riskinsight-wavestone.com/author/francois-lelievre/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Invoke-CleverSpray &#8211; Jamais 1 sans 3</title>
		<link>https://www.riskinsight-wavestone.com/2019/06/invoke-cleverspray-jamais-1-sans-3/</link>
		
		<dc:creator><![CDATA[François Lelièvre]]></dc:creator>
		<pubDate>Mon, 24 Jun 2019 13:44:58 +0000</pubDate>
				<category><![CDATA[Cybersecurity & Digital Trust]]></category>
		<category><![CDATA[Deep-dive]]></category>
		<category><![CDATA[Ethical Hacking & Incident Response]]></category>
		<category><![CDATA[authentification]]></category>
		<category><![CDATA[cleverspray]]></category>
		<category><![CDATA[invoke]]></category>
		<category><![CDATA[mot de passe]]></category>
		<category><![CDATA[utilisateur]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=15509</guid>

					<description><![CDATA[<p>Avant l&#8217;existence du niveau fonctionnel Windows Server 2003, lorsqu&#8217;un utilisateur tentait de s&#8217;authentifier à l&#8217;aide d&#8217;un mot de passe n&#8217;étant pas le sien, son nombre de tentative d&#8217;authentification échouée (représenté par l&#8217;attribut « badPwdCount« ) se voyait automatiquement incrémentée. Depuis l&#8217;introduction du...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2019/06/invoke-cleverspray-jamais-1-sans-3/">Invoke-CleverSpray &#8211; Jamais 1 sans 3</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-15929 media-15929" class="align-center"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-15929" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/06/header.png" alt="" width="640" height="268" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/06/header.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/06/header-437x183.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/06/header-71x30.png 71w" sizes="(max-width: 640px) 100vw, 640px" /></figure>
</div>
<div class="separator" style="clear: both; text-align: center;"></div>
<div></div>
<div class="separator" style="clear: both; text-align: center;"></div>
<div style="text-align: justify;">Avant l&rsquo;existence du niveau fonctionnel Windows Server 2003, lorsqu&rsquo;un utilisateur tentait de s&rsquo;authentifier à l&rsquo;aide d&rsquo;un mot de passe n&rsquo;étant pas le sien, son nombre de tentative d&rsquo;authentification échouée (représenté par l&rsquo;attribut « <b>badPwdCount</b>« ) se voyait automatiquement incrémentée.</div>
<div style="text-align: justify;">Depuis l&rsquo;introduction du niveau fonctionnel Windows Server 2003, lorsqu’un utilisateur essaie de s&rsquo;authentifier à l&rsquo;aide d&rsquo;un de ses deux précédents mots de passe, l&rsquo;attribut « <b>badPwdCount</b> » n&rsquo;est plus incrémenté. D&rsquo;une part, cette fonctionnalité permet de limiter les verrouillages de comptes utilisateurs dues à des tentatives de connexion émises par des applications suite à une modification de mot de passe non répercutée sur ces dernières (Exchange, Skype, etc.).  D&rsquo;autre part, cette évolution a pour objectif de limiter le nombre de verrouillages de comptes utilisateur et ainsi les interventions futiles des équipes de support. En effet, les mauvaises tentatives d&rsquo;authentification émanant d&rsquo;utilisateurs légitimes sont plus susceptibles d&rsquo;être la cause de tentatives d&rsquo;authentification à l&rsquo;aide de mots de passe précédemment valides.</div>
<h3>Fonctionnement du mécanisme de verrouillage de compte utilisateur</h3>
<div style="text-align: justify;">Différents paramètres interviennent au sein du mécanisme de verrouillage de compte utilisateur :</div>
<div style="text-align: justify;"></div>
<style type="text/css">
    .w-table {<br />        width: 100;<br />        border-spacing: 0;<br />        border-collapse: collapse;<br />    }</p>
<p>    .w-table td {<br />        text-align: center;<br />        border: 1px solid rgb(80, 48, 120);<br />        padding: 5px;<br />    }</p>
<p>    .w-table thead td {<br />        background: rgb(80, 48, 120);<br />        font-weight: bold; color: white;<br />        border-left: 1px solid white;<br />        border-right: 1px solid white;<br />    }</p>
<p>    .w-table thead td:first {<br />        border-left: 1px solid rgb(80, 48, 120);<br />    }</p>
<p>    .w-table thead td:last {<br />        border-right: 1px solid rgb(80, 48, 120);<br />    }<br /></style>
<table class="w-table">
<thead>
<tr>
<td>Attribut Active Directory</td>
<td>Propriété PowerShell</td>
<td>Paramètre de la stratégie de groupe</td>
<td style="width: 15%;">Périmètre</td>
</tr>
</thead>
<tbody>
<tr>
<td>lockoutThreshold</td>
<td>LockoutThreshold</td>
<td>Seuil de verrouillage</td>
<td>Domaine</td>
</tr>
<tr>
<td>lockoutDuration</td>
<td>LockoutDuration</td>
<td>Durée du verrouillage</td>
<td>Domaine</td>
</tr>
<tr>
<td>lockoutObservationWindow</td>
<td>LockoutObservationWindow</td>
<td>Fenêtre d’observation du verrouillage</td>
<td>Domaine</td>
</tr>
<tr>
<td>pwdHistoryLength</td>
<td>PasswordHistoryCount</td>
<td>Nombre de mots de passe antérieurs à conserver</td>
<td>Domaine</td>
</tr>
<tr>
<td>lockoutTime</td>
<td>AccountLockoutTime</td>
<td>&#8211;</td>
<td>Utilisateur</td>
</tr>
<tr>
<td>logonCount</td>
<td>&#8211;</td>
<td>&#8211;</td>
<td>Utilisateur</td>
</tr>
<tr>
<td>pwdLastSet</td>
<td>PasswordLastSet</td>
<td>&#8211;</td>
<td>Utilisateur</td>
</tr>
<tr>
<td>pwdProperties</td>
<td>ComplexityEnabled</td>
<td>Mot de passe doit respecter des exigences de complexité</td>
<td>Utilisateur</td>
</tr>
<tr>
<td>badPwdCount</td>
<td>BadLogonCount</td>
<td>&#8211;</td>
<td>Utilisateur</td>
</tr>
<tr>
<td>badPasswordTime</td>
<td>LastBadPasswordAttempt</td>
<td>&#8211;</td>
<td>Utilisateur</td>
</tr>
</tbody>
</table>
<div style="text-align: justify;"></div>
<div class="separator" style="clear: both; text-align: center;"></div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">La majeure partie de ces attributs disposent d&rsquo;un nom autoporteur. Néanmoins, il convient de préciser que la fenêtre d&rsquo;observation du verrouillage (« <b>lockoutObservationWindow</b>« ) ne représente pas la durée pendant laquelle les tentatives d&rsquo;authentification infructueuses doivent avoir lieu pour verrouiller un compte, ni le temps nécessaire à la réinitialisation de l&rsquo;attribut « <b>badPwdCount</b> » si aucune tentative infructueuse de connexion n&rsquo;est conduite. Au contraire, c&rsquo;est la durée nécessaire à la réinitialisation de l&rsquo;attribut « <b>badPwdCount</b> » depuis la dernière mise à jour de l&rsquo;attribut « <b>badPasswordTime</b>« .</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Par ailleurs, les attributs « <b>badPwdCount</b> » et « <b>badPasswordTime</b> » ne sont pas répliqués au sein du domaine mais seulement sauvegardés sur le contrôleur de domaine sur lequel l&rsquo;utilisateur essaye de s&rsquo;authentifier. Néanmoins, ces attributs sont synchronisés sur le contrôleur de domaine disposant du rôle FSMO d’émulateur de contrôleur principal de domaine (ou PDCe).</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Seuls les protocoles Kerberos et NTLM utilisés lors d&rsquo;une authentification via mot de passe ou Smart Card bénéficient de cette fonctionnalité (sous réserve que le PDCe soit joignable par le contrôleur de domaine gérant la demande d&rsquo;authentification).</div>
<h3>Jamais un sans trois</h3>
<div style="text-align: justify;">Du point de vue d&rsquo;un attaquant, cette nouvelle fonctionnalité offre la possibilité d&rsquo;attaquer non seulement le mot de passe actuel d&rsquo;un utilisateur mais aussi ses deux précédents via la vérification de l&rsquo;incrémentation de l&rsquo;attribut « <b>badPwdCount</b> » sur le PDCe suite à une tentative d&rsquo;authentification. En effet, si la tentative d&rsquo;authentification échoue mais que l&rsquo;attribut « <b>badPwdCount</b> » ne se voit pas incrémenter, alors un mot de passe précédemment valide vient d&rsquo;être découvert.</div>
<div style="text-align: justify;">La découverte d&rsquo;un mot de passe précédemment utilisé par un utilisateur permet à un attaquant d&rsquo;identifier une éventuelle structure de création de mot de passe employée par cet utilisateur, pouvant parfois conduire à la découverte de son mot de passe actuel.</div>
<div style="text-align: justify;">D&rsquo;autre part, il est fréquent que des utilisateurs réutilisent leurs anciens mots de passe ; un précédent mot de passe découvert pourrait donc être réemployé par la suite par ce même utilisateur.</div>
<div style="text-align: justify;">Enfin, les anciens mots de passe de domaine découverts peuvent parfois être encore valides sur certains applicatifs se reposant sur un référentiel n&rsquo;imposant aucun changement de mot de passe.</div>
<h3>Invoke-CleverSpray &#8211; Script PowerShell automatisant la découverte de mots de passe (actuel, N-1 et N-2)</h3>
<div style="text-align: justify;">Un script a été développé dans le but d&rsquo;identifier, outre les mots de passe actuels des utilisateurs d&rsquo;un domaine Windows, les mots de passe présents dans les historiques des mots de passe utilisateur :</div>
<div class="separator" style="clear: both; text-align: center;">
<figure id="post-15931 media-15931" class="align-center"><img decoding="async" class="aligncenter size-full wp-image-15931" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/06/1.png" alt="" width="640" height="482" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/06/1.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/06/1-254x191.png 254w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/06/1-52x39.png 52w" sizes="(max-width: 640px) 100vw, 640px" /></figure>
</div>
<div style="text-align: center;"><a href="https://github.com/wavestone-cdt/Invoke-CleverSpray"><i><span style="font-size: x-small;">https://github.com/wavestone-cdt/Invoke-CleverSpray</span></i></a></div>
<div style="text-align: justify;">Le schéma de fonctionnement de ce dernier est le suivant :</div>
<div style="text-align: justify;">
<ul>
<li>Récupération de la liste des utilisateurs du domaine Windows ou au sein d&rsquo;un fichier passé en paramètre ;</li>
<li>Pour chacun des utilisateurs, le contrôleur de domaine disposant du rôle de PDCe va être contacté afin de connaître la valeur initiale de l&rsquo;attribut « <b>badPwdCount</b> » de l&rsquo;utilisateur, puis, si cette dernière est inférieure à un seuil défini par l&rsquo;attaquant, une tentative de connexion à l&rsquo;aide d&rsquo;un mot de passe spécifié en paramètre au script (ou présent au sein d&rsquo;une liste de mot de passe passée en paramètre) va être tentée ;</li>
<li>Si l&rsquo;authentification est réussie :
<ul>
<li>Le mot de passe correspond au mot de passe actuel de l&rsquo;utilisateur ciblé ;</li>
</ul>
</li>
</ul>
<ul>
<li>Si l&rsquo;authentification échoue :
<ul>
<li>La valeur de l&rsquo;attribut « <b>badPwdCount</b> » va alors être analysée :</li>
<li>Si cette dernière n&rsquo;a pas été incrémentée, le mot de passe essayé correspond à un des deux mots de passe précédemment défini par l&rsquo;utilisateur</li>
<li>Si cette dernière a été incrémentée, alors le mot de passe ne correspond ni au mot de passe actuel ni a un précédemment mot de passe de l&rsquo;utilisateur ciblé. Le script va donc passer à l&rsquo;utilisateur suivant afin de poursuivre l&rsquo;attaque.</li>
</ul>
</li>
</ul>
</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<p>Il est à noter que le seuil de verrouillage d&rsquo;un compte utilisateur ne peut être collecté par un utilisateur standard du domaine. De fait, il convient par sécurité d&rsquo;exécuter le script avec une valeur limite de l&rsquo;attribut « <b>badPwdCount</b> » faible afin d&rsquo;éviter tout verrouillage de compte utilisateur.</p>
</div>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2019/06/invoke-cleverspray-jamais-1-sans-3/">Invoke-CleverSpray &#8211; Jamais 1 sans 3</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
