<?xml version="1.0" encoding="windows-1252"?>
<rss version="2.0"><channel>
<title>Feed Randco : Articles et Actualites</title>
<link>http://www.randco.fr</link>
<description>Les derniers articles Randco</description>
<managingEditor>webmaster@randco.fr</managingEditor>
<language>fr</language>
<generator>Randco</generator>
<copyright>Randco</copyright>
<webMaster>webmaster@randco.fr</webMaster>


<item>
	<author>webmaster@randco.fr</author>
	<title>Nouvelle fonctionnalité : devis en ligne !</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=50</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=50</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=50</comments>
	<description>
<![CDATA[ <<P>
<<P>
<<P>
<P></P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Un exemple de Blind SQL Injection : Vulnérabilité Cacti</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=49</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=49</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=49</comments>
	<description>
<![CDATA[ <<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Forensics : un cas réel d'intrusion</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=48</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=48</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=48</comments>
	<description>
<![CDATA[ <P>Dans le cadre de notre activité, un client, dont le serveur web semblait suspect, nous a demandé de réaliser une investigation de l'un de ces serveurs. </P>
<P>&nbsp;</P>
<H4>Description du système: </H4>
<P>Le système analysé est un&nbsp;Linux &nbsp;Ubuntu hébergant une application web accessible sur Internet et déployé via Apache. Le serveur est une VM hébergé sur un ESX 3.0, Quelques mois auparavant, nous avions procédé à un autre Forensic d'une de ces VMs (serveur), et nous avons découvert que le système était compromis, le Hacker a profité d'un phpMyAdmin ancien, accessible et non sécurisé, voir <A href="http://www.exploit-db.com/exploits/8921" target=_blank BORDER="0">http://www.exploit-db.com/exploits/8921</A><A name=""> </A>.</P>
<P>&nbsp;Malheureusement, notre client utilise le même mot de passe pour toutes les VMs présentes sur cet ESX, ce qui a certainement joué un rôle dans tout cela. </P>
<P>&nbsp;</P>
<P>
<H4>Travail sur un clone&nbsp;</H4>
<P></P>
<P>La machine compromise est installée sur un ESX, nous n'avions donc qu'à cloner cette VM pour l'analyser. Dans le cas contraire nous aurions été contraints de préparer une autre machine distante qui aurait reçu les résultats des analyses tout comme les fichiers corrompus.</P>
<P>En effet un rootkit ou des binaires modifiés (ls, cd, netstat...etc.) peuvent être présents, faussant ainsi les résultats. Dans notre cas nous pouvons travailler tranquillement à l'analyse sans nous soucier de modifier le système grâce aux snapshots </P>
<P>Les étapes d'un Forensic sont longues et dépendent du système à analyser. Nous allons dans cet article présenter les étapes les plus importantes. </P>
<P>&nbsp;</P>
<P>
<H4>Premières étapes</H4>
<P></P>
<P>Premièrement, une analyse des logs et des fichiers clés nous permet de restreindre l’étendue des recherches et d’établir les premières pistes. </P>
<P>Voici quelques points qui pourraient vous être utiles : </P>
<UL>
<LI>le fichier /etc/passwd contient une entrée laissant penser à l’infection du système par un bot IRC. <BR></LI><IMG style="WIDTH: 503px; HEIGHT: 120px" src="http://www.randco.fr/img/forensic-actu-1.JPG" width=487 height=120> 
<LI>Nous remarquons aussi que que le fichier log &nbsp;<EM>/var/log/secure</EM> est très volumineux (700MB), son analyse révèle une attaque de type&nbsp;<EM>brute force</EM>&nbsp;sur ssh(22) et ftp(21). </LI>
<LI>Autre point suspect, le fichier history du compte root est vide. </LI></UL>
<P>On peut vérifier alors le contenu de <EM>/var/log/auth</EM>, pour voir les dernières connexions. Cela dit, si l'intrus a pensé à effacer l’historique, il a certainement pensé aussi à effacer ses traces. </P>
<P>Nous n'avons pu trouver aucune trace dans les logs qui ont peut être été nettoyées par un éventuel pirate. Par conséquent, nous avons supposé la présence d'un rootkit sur le serveur. </P>
<P>Une étape nécessaire fut donc de passer cette Ubuntu aux analyseurs de rootkit et Antivirus connus à savoir : ·</P>
<UL>
<LI>Chkrootkit </LI>
<LI>Rkhunter </LI>
<LI>ClamAV </LI></UL>
<P>L’exécution des ces « anti-rootkit » et Antivirus n'a pourtant rien donné. La détection de binaires modifiés reste une étape fastidieuse (c'est dans ces moments que nous nous apprécions l'importance des logiciels tel que Tripwire ou Samhain pour le contrôle d'intégrité des fichiers, et qui nous alertent lors de la modification de ceux-ci) </P>
<P>Nous avons poursuivi notre recherche via l’étude des différents processus. <EM>#netstat -lantp</EM> </P>
<P align=right><IMG style="WIDTH: 589px; HEIGHT: 211px" align=center src="http://www.randco.fr/img/forensic-actu-2.JPG" width=607 height=85></P>
<P>A la vue de ce screenshot , l’application utilisant le port 22(ssh) est de toute évidence une piste à creuser à cause des caractères non imprimables affichés à l'écran.</P>
<P>La commande "<EM>lsof -in"</EM> révélait le même résultat, d'autant que l'emplacement du binaire était buggé/crypté. Il suffit alors de chercher le pid dans <EM>/proc/PID</EM> et exécuter ensuite "<EM>ls -al"</EM> pour avoir l'emplacement exacte. </P>
<P align=right><IMG src="http://www.randco.fr/img/forensic-actu-3.JPG"></P>
<P>
<H4>La découverte</H4>
<P></P>
<P>Le démon SSHd est probablemnt&nbsp;vérolé, mais nous devons le prouver !</P>
<P>Nous notons que la version affichée est : <EM>OpenSSH_4.3p2 Debian-8ubuntu1.1</EM> .. ce qui est&nbsp;la plus récente sur cette plateforme à cette date</P><IMG align=center src="http://www.randco.fr/img/forensic-actu-4.JPG"> 
<P>A notre connaissance, il n'existe pas de backdoor spécifique à cette version : il s'agit donc sans doute d'un "vieux" code source de Backdoor SSH, modifié pour inclure une bannière actuelle, et qui a ensuite été repackagé.</P>
<P>Nous remarquons que la taille du binaire (2.3M) est nettement supérieure à un sshd normal (~ 500k) obtenue sur une installation saine réalisée&nbsp;en laboratoire dans une version d'OS identique.</P>
<P>Les bibliothèques linkées&nbsp;sont ,elles aussi, différentes : ce sshd2 est certainement un binaire compilé (majoritaire statiquement) sur un autre système, que le hacker a juste déposé sur le serveur et a exécuté. </P>
<P>L'avantage ce cette méthode est qu'il n'a eu besoin sur la machine compromise ni d'un compilateur ni des librairies nécessaires : tout est dans le binaire ! (d'où le nom de <EM>kit</EM>)</P>
<P>L'inconvénient (pour le pirate) de cette méthode est un avantage pour nous : la taille du binaire a éveillé nos soupçons ! </P>
<P>D'ailleurs nous ne sommes pas les&nbsp;premiers sur Internet&nbsp;à avoir remarqué cette anomalie (cf <A href="http://jhodges.co.uk/ssh-unknown-option-t/" target=_blank BORDER="0">http://jhodges.co.uk/ssh-unknown-option-t/</A><A name=""> </A>).</P>
<H4>Detection des flux réseaux entrants et sortants</H4>
<P>Supposant qu'il existe un canal de communication entre le serveur compromis et le pirate, nous commençons par mettre des règles iptables qui vont permettre de logger les nouvelles connexions qui pourraient éventuellement être établies, comme l'envoi des mots de passe des utilisateurs qui se connectent ou alors une simple notification.</P>
<P>(Nous observerons effectivement des paquets RST lorsque nous "killerons" le process SSHd, alors que cette connexion TCP n'était pas visible sur le système). </P>
<P>&nbsp;</P><FONT face="courrier new">
<P>#iptables -L </P>
<P>Chain INPUT (policy ACCEPT) </P>
<P>target prot opt source destination </P>
<P>ACCEPT all -- 192.168.10.0/24 anywhere </P>
<P>ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED </P>
<P>LOG tcp -- anywhere anywhere </P>
<P>LOG level warning </P>
<P>LOG udp -- anywhere anywhere </P>
<P>LOG level warning </P>
<P>Chain FORWARD (policy ACCEPT) </P>
<P>target prot opt source destination </P>
<P>Chain OUTPUT (policy ACCEPT) </P>
<P>target prot opt source destination </P>
<P>ACCEPT all -- anywhere 192.168.10.0/24 </P>
<P>ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED </P>
<P>LOG tcp -- anywhere anywhere </P>
<P>LOG level warning </P>
<P>LOG udp -- anywhere anywhere </P>
<P>LOG level warning </P></FONT><BR>
<P>&nbsp;</P>
<P>Chaque nouvelle connexion sera enregistrée dans le fichier <EM>/var/log/kern.log.</EM> </P>
<P>&nbsp;</P>
<P>
<H4>Analyse du <EM>Backdoor SSH</EM></H4>
<P></P>
<P>L'analyse d'un binaire est une étape délicate, qui prend du temps. Plusieurs types d'analyses peuvent être effectuées comme l'analyse de l'exécution du binaire en temps réel et voir comment il se comporte suivant différents évènements. </P>
<P>Dans notre cas nous avons commencer en analysant les chaînes de caractères présentes dans le binaire via la commande «<EM>strings</EM>». En effet, ayant déjà analysé quelques types de Backdoor SSH, nous savons par expérience que cette recherche pourrait donner des résultats probants. </P>
<P>Nous nous lançons donc dans la recherche des chaines de caractère suspectes. Deux chaînes (parmi les milliers de lignes présentes) attirent notre attention :</P>
<P align=center><IMG src="http://www.randco.fr/img/forensic-actu-5.JPG"></P>
<P>Nous consultons le contenu du fichier <EM>/etc/sinux</EM>&nbsp; ...</P>
<P>Bingo ! Celui-ci est la liste de tous les utilisateurs qui se sont connectés sur le système (avec mot de passe, adresse IP source et heure de connexion). <IMG src="http://www.randco.fr/img/forensic-actu-6.JPG">&nbsp;</P>
<P>Par déduction, cela nous permet d'évaluer&nbsp;la date de compromission. </P>
<P>Le principe de la plupart des <EM>backdoor SSH</EM> est de permettre au hacker de se servir d'un mot de passe dit <EM>Magic</EM> (dans le cas présent "blue<EM>champ1835</EM>"), qui lui permet de se connecter au serveur sans que son activité ne soit inscrite sur aucun des fichiers de logs mais aussi de cacher sa présence, et en la rendant indétectable via les commandes (w, who...etc.) </P>
<P>Effectivement le compte <EM>root/bluechamp1835</EM> permet bien de se connecter en SSH...</P>
<P>Un md5sum du fichier binaire nous donne: </P>
<P>&nbsp;</P><FONT size=12 face="courrier new">
<P>#md5sum /usr/sbin/sshd2 <BR>39066f0dc8590d7243bc011127e907a1 /usr/sbin/sshd2 </P>
<P>&nbsp;</P></FONT>
<P>Au final, seul sshd et quelques autres fichiers (sftp...etc.) semblent avoir été modifiés. Malheureusement, nous ne pouvons pas en être certains. Le système a été compromis en tant que <EM>root</EM>, cela veut dire que le pirate a pu modifier n'importe quel binaire présent. </P>
<P>Nous recommandons, dans ce cas, la réinstallation du système du simple fait que l'analyse de tous les binaires prendrait beaucoup plus de temps/argent que sa réinstallation, mais elle est surtout plus sûre.</P>
<P>
<H4>Conclusions</H4>
<P></P>
<P>Le travail de forensic doit s’effectuer sur une copie du système (dd, ghost).</P>
<P>&nbsp;Dans notre cas, l’utilisation d’une VM à été très utile. (Configuration d’un environnement similaire) </P>
<P>L’utilisation de scans (Anti-virus, anti-rootkit…) n’est qu’une première étape. </P>
<P>Une vérification manuelle, rapide et efficace est nécessaire. Avoir un contrôleur d'intégrité de type iWatch/Samhain/Tripwire qui surveillera les fichiers système et nous alertera en cas de changement devient de plus en plus important. </P>
<P>Cela révèle une fois de plus l’importance de l’association d’un firewall bien configuré à des mises à jour régulières. </P>
<P>L’OS dans notre cas présent n’était pas à jour et les règles iptables vides. </P>
<P>Derniers rappels, bien connus mais importants,&nbsp;</P>
<UL>
<LI>changer le port d'écoute de SSHd permet d’éviter les scans permanents, </LI>
<LI>mettre en place un système anti brute-force (type fail2ban) qui élimine ce type d'attaque et facilite l’analyse des logs.</LI>
<LI>utiliser des clefs RSA et désactiver l'authentification SSH par mot de passe</LI></UL>
<P>Enfin, de manière générale, on observe un recrudescence des attaques. Celle-ci a été faite par un pirate discret, qui n'a été detecté que parce qu'il utilisait un binaire générant des caractères à l'affichage... </P>
<P>La signature de ce binaire n'est pas présente sur Internet :&nbsp;le hacker&nbsp;a sans doute recompilé lui-même les sources en modifiant les paramètres importants (probablement le mot de passe <EM>Magic</EM> et le fichier de stockage des login/passwords interceptés). On n'est donc plus tout à fait dans le cas typique d'un <EM>script-kiddie</EM>...</P>
<P>On peut également imaginer les dégats si les mots de passe d'un utilisateur ayant des droits élevés sont repliqués sur plusieurs machines du même réseau...</P>
<P>Sans notre intervention,&nbsp;le hacker&nbsp;serait resté présent sur le système, qui aurait été inclus dans un botnet (réseau de machines zombies), dont l'usage est loué à toutes sortes d'activité illicites (DDOS, spam, etc..). </P>
<P>&nbsp;</P>
<P>Cette prestation a été réalisée dans le cadre de notre <A href="http://www.randco.fr/?p=audit_forensic" target=_self BORDER="0">offre Forensic</A><A name=""> </A>, d'audit sécurité suite à une intrusion.</P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Nos nouvelles offres : ToIP, VPN, Pont Hertzien et Forensic</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=47</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=47</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=47</comments>
	<description>
<![CDATA[ <P>Nous avons pris le temps d'écrire notre <A href="http://www.randco.fr/?p=offre_toip" target=_self BORDER="0">vision du marché de la ToIP/VoIP </A>et d'expliquer nos prestations dans un article publié <A href="http://www.randco.fr/?p=offre_toip" target=_self BORDER="0">ici</A><A name=""> </A>.</P>
<P>Par ailleurs nous avons formalisée nos offres de : </P>
<UL>
<LI><A href="http://www.randco.fr/?p=offre_vpn" target=_self border="0">l'interconnexion de sites en VPN IPSEC </A>(point à point ou multi-points)</LI>
<LI><A href="http://www.randco.fr/?p=offre_pont_hertzien" target=_self border="0">l'interconnexion de sites en pont Hertzien </A>(point à point ou multi-points)</LI>
<LI><A href="http://www.randco.fr/?p=audit_forensic" target=_self BORDER="0">intervention après intrusion </A>ou compromission de serveur(s)</LI></UL> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Suivez nos Tweets</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=46</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=46</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=46</comments>
	<description>
<![CDATA[ <P>Depuis quelques mois nous n'avons plus écrit d'articles sur ce site ou même sur notre <A href="http://blog.randco.fr/" target=_blank BORDER="0">blog</A><A name=""> </A>. En effet, nous utilisons la plateforme de micro-blogging Tweeter, ce qui nous permet d'être plus présent bien que les messages soient (beaucoup trop) courts.</P>
<P>Suivez donc notre <A href="http://twitter.com/randcofr" target=_blank BORDER="0">tweet</A><A name=""> </A> !!</P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Debug VPN sous CheckPoint SecurePlatform</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=45</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=45</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=45</comments>
	<description>
<![CDATA[ <P>&nbsp;</P>
<P>&nbsp;</P>
<P>Cet article se trouve sur notre blog : <A href="http://blog.randco.fr/2009/09/17/debug-vpn-sous-checkpoint-secureplatform/">http://blog.randco.fr/2009/09/17/debug-vpn-sous-checkpoint-secureplatform/</A>&nbsp;.</P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Connaitre la version de son Linux</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=44</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=44</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=44</comments>
	<description>
<![CDATA[ <P>&nbsp;</P>
<P>&nbsp;</P>
<P>L'article se trouve sur notre blog : <A href="http://blog.randco.fr/2009/07/14/connaitre-la-version-de-son-linux/">http://blog.randco.fr/2009/07/14/connaitre-la-version-de-son-linux/</A>&nbsp;.</P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Copier avec écrasement en mode non interactif</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=43</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=43</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=43</comments>
	<description>
<![CDATA[ <P>&nbsp;</P>
<P>&nbsp;</P>
<P>L'article se trouve sur notre blog : <A href="http://blog.randco.fr/2009/07/20/copier-en-mode-non-interactif/">http://blog.randco.fr/2009/07/20/copier-en-mode-non-interactif/</A></P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Désactiver la méthode TRACE sur Apache</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=42</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=42</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=42</comments>
	<description>
<![CDATA[ <P>&nbsp;</P>
<P>&nbsp;</P>
<P>L'article se trouve sur notre blog : <A href="http://blog.randco.fr/2009/07/28/desactiver-la-methode-trace-sur-apache/">http://blog.randco.fr/2009/07/28/desactiver-la-methode-trace-sur-apache/</A>&nbsp;.</P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Support du FTP passif sur un serveur protégé par iptables/netfilter</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=41</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=41</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=41</comments>
	<description>
<![CDATA[ <P>&nbsp;</P>
<P>Cet article se trouve sur notre blog : <A href="http://blog.randco.fr/2009/09/04/support-du-ftp-passif-sur-un-serveur-protege-par-iptablesnetfilter/">http://blog.randco.fr/2009/09/04/support-du-ftp-passif-sur-un-serveur-protege-par-iptablesnetfilter/</A> .</P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Activation des modules Apache sur Ubuntu 8.0.4 Server</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=40</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=40</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=40</comments>
	<description>
<![CDATA[ <P>&nbsp;</P>
<P>&nbsp;</P>
<P>L'article se trouve sur notre blog : <A href="http://blog.randco.fr/2009/09/16/activation-des-modules-apache-sur-ubuntu-8-0-4-server/">http://blog.randco.fr/2009/09/16/activation-des-modules-apache-sur-ubuntu-8-0-4-server/</A>&nbsp;.</P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>NIST lance le concours pour SHA-3</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=39</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=39</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=39</comments>
	<description>
<![CDATA[ <P>&nbsp;Une fonction de hachage, est une fonction particulière qui, à partir d'une donnée fournie en entrée, calcule une empreinte (hash, condensé) servant à identifier rapidement, bien qu'incomplètement, la donnée initiale.</P>
<P>Les fonctions de hachage sont utilisées en cryptographie :&nbsp;initialement crées pour&nbsp;construire des signatures numériques afin d'assurer l'intégrité des messages, elles sont&nbsp;également utilisées dans le contrôle d'intégrité des données et des applications, l'authentification notamment dans <I>HMAC</I> (keyed-hash message authentication code),dans les protocoles IPSEC et SSL notamment.</P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<UL>
<LI>
<<P>
<LI>
<<P>
<LI>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Linux Guru Wanted !</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=38</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=38</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=38</comments>
	<description>
<![CDATA[ <P>Dans le cadre de notre développement, nous recherchons un guru Linux pour travailler principalement sur des sujets OpenSource dans le cadre de nos missions d'expertise sur le périmètre Infrastructure IT (systèmes, réseaux, sécurité et supervision bien sûr !!). <BR><BR>Vous maitrisez parfaitement Linux (et un langague de script tel que Perl ou Python) et êtes capable de contribuer sur certains outils (Nagios, Cacti, Wireshark, Ntop, etc..) <BR><BR>Doué techniquement, autonome, ayant envie d'apprendre et de relever le défi de l'expertise, vous serez intégré à notre équipe et pourrez exprimer votre plein potentiel dans une ambiance jeune et sympathique sur de courts projets très pointus (audit, troubleshooting, consulting, mise en oeuvre, etc..). <BR><BR>Nous vous formerons sur les domaines connexes (notamment matériels et logiciels tels que Cisco, CheckPoint, VMware, etc..) et vous donnerons les moyens matériels et financiers d'atteindre vos objectifs. <BR><BR>CDI basé à Paris. <BR>Pour poustuler , merci de remplir la fiche <A href="http://www.randco.fr/?p=contact" target=_self BORDER="0">ici</A><A name=""> </A><BR></P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Google fabrique son propre switch 10Gb</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=37</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=37</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=37</comments>
	<description>
<![CDATA[ <<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<UL>
<LI>
<<P>
<LI>
<<P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Newsletter Janvier 2008</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=36</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=36</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=36</comments>
	<description>
<![CDATA[ <P>Retrouvez ci-dessous le contenu de notre newsletter de Janvier 2008.</P>
<P>Pour s'inscrire, voir <A href="http://www.randco.fr/?p=newsletter" target=_self BORDER="0">ici</A><A name=""> </A>.</P>
<DIV class=moz-text-html lang=x-western>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<UL>
<LI>
<<P>
<LI>
<<P>
<<P>
<UL>
<LI>
<<P>
<LI>
<<P>
<LI>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<UL>
<LI>
<<P>
<LI>
<<P>
<<P>
<<P>
<<P>
<<P>
<UL>
<LI>
<<P>
<LI>
<<P>
<UL>
<LI value=1>
<<P>
<LI>
<<P>
<UL>
<LI value=1>
<<P>
<UL>
<LI value=1>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<<P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>wfuzz, un fuzzer HTTP</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=35</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=35</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=35</comments>
	<description>
<![CDATA[ &nbsp;C'est un outil assez récent puisque publié le 18 Octobre 2007. Ecrit en python, "wfuzz" ( <A class=moz-txt-link-freetext href="http://www.edge-security.com/wfuzz.php">http://www.edge-security.com/wfuzz.php</A> ) est un "Fuzzer".<BR><BR>"Fuzzer" est une technique de test qualité qui consiste à injecter massivement et de manière automatisée des données aléatoires sans a priori (du "fuzz") en entrée d'un programme. Ainsi, si un crash intervient, le défaut peut être noté puis corrigé.<BR><BR>En quoi cela peut-il nous être utile ? Dans nos activités de sécurité, ce type d'outil nous sert à "Brute-Forcer" un serveur Web, c'est à dire tester toutes les combinaisons possibles à partir soit d'un fichier dictionnaire ou bien d'un ensemble de caractères alphanumériques, ponctuation, etc.. .<BR>Ci dessous quelques usages :<BR><BR>- identifiant / mot de passe&nbsp; ; exemple typique : <BR><TT>python wfuzz.py -c --ntlm "mon_domainemon_user:FUZZ" -z file -f wordlists/megabeast.txt --hc 401&nbsp; <A class=moz-txt-link-freetext href="http://mon_site.com/">http://mon_site.com</A></TT> <BR><BR>- URL ; exemple typique d'attaque sur IIS : <BR><TT>python wfuzz.py -c -z file -f wordlists/vulns/iis.txt --hc 401,404 <A class=moz-txt-link-freetext href="http://www.mon_site.com/FUZZ">http://www.mon_site.com/FUZZ</A> </TT><BR><BR>- variables dans une URL ; exemple typique : <BR><TT>wfuzz.py -c -z range -r 1-100 --hc 404 <A class=moz-txt-link-freetext href="http://www.mon_site.com/list.asp?id=FUZZ">http://www.mon_site.com/list.asp?id=FUZZ</A></TT> <BR><BR>Nous l'avons utilisé cette semaine lors d'un test d'intrusion (pentest) pour "brute-forcer" une authentification HTTP NTLM sur un serveur IIS.<BR><BR>Attention , car notre distribution basée sur Debian ne possédait pas le package python "pycurl" supportant NTLM : nous avons donc dû recompiler libcurl puis pycurl à partir des sources :<BR><BR><TT>wget <A class=moz-txt-link-freetext href="http://curl.haxx.se/download/curl-7.17.1.tar.gz">http://curl.haxx.se/download/curl-7.17.1.tar.gz</A><BR>tar zxvf curl-7.17.1.tar.gz<BR>cd curl-7.17.1/<BR>./configure<BR>make<BR>sudo make install<BR>ldconfig<BR><BR>wget <A class=moz-txt-link-freetext href="http://pycurl.sourceforge.net/download/pycurl-7.16.4.tar.gz">http://pycurl.sourceforge.net/download/pycurl-7.16.4.tar.gz</A><BR>tar zxvf pycurl-7.16.4.tar.gz<BR>cd pycurl-7.16.4/<BR>sudo python setup.py install</TT> <BR><BR>On vérifie ensuite le support de NTLM dans pycurl ainsi :<BR><BR><TT>$ python<BR>Python 2.4.4c1 (#2, Oct 11 2006, 21:51:02)<BR>[GCC 4.1.2 20060928 (prerelease)] on linux2<BR>Type "help", "copyright", "credits" or "license" for more information.<BR>&gt;&gt;&gt; import pycurl<BR>&gt;&gt;&gt; pycurl.version_info()<BR>(3, '7.17.1', 463105, 'i686-pc-linux-gnu', 540, 'OpenSSL/0.9.8b', 0, '1.2.3', ('tftp', 'ftp', 'telnet', 'dict', 'http', 'file', 'https', 'ftps'), None, 0, None)<BR>&gt;&gt;&gt;</TT><BR><BR>Une fois l'attaque achevée, on obtient le résultat suivant :<BR><BR><TT>Target: <A class=moz-txt-link-freetext href="http://www.mon_site.com/exchange">http://www.mon_site.com/exchange</A><BR>Payload type: file<BR>Total requests: 45463<BR>===========================================================<BR>ID Response Lines Word Request<BR>===========================================================<BR>00053: C=401 10 L 18 W "mon_domaineadministrateur:admin"</TT><BR><BR>On constate un code retour HTTP 401 (Accès non autorisé) : on ne gagne pas à chaque coup ... surtout quand les inconnues sont multiples : dans le cas présent non seulement mot de passe mais également identifiant et nom de domaine. ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Monter un environnement PXE en 5 minutes</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=34</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=34</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=34</comments>
	<description>
<![CDATA[ &nbsp; 
<<P>
<<P>
<<P>
<<P>
<<P>
<<P>
<OL>
<LI>
<<P>
<P></P>
<LI>
<<P>
<UL>
<LI>
<<P>
<LI>
<<P>
<<P>
<OL start=3>
<LI>
<<P>
<<P>
<<P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Newsletter Novembre 07</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=33</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=33</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=33</comments>
	<description>
<![CDATA[ <P>Retrouvez ci-dessous le contenu de notre newsletter de Novembre 2007.</P>
<P>Pour s'inscrire, voir <A href="http://www.randco.fr/?p=newsletter" target=_self BORDER="0">ici</A><A name=""> </A>.</P>
<P>====================================================<BR>              Newsletter RANDCO  Novembre 2007<BR>====================================================</P>
<P><BR>--[ Sommaire ]-------------------------</P>
<P>      1. Actualités Société<BR>      2. Nouvel article "Un audit de sécurité WiFi"<BR>      3. Actualités Supervision<BR>      4. Vu sur le Net<BR>      5. L'outil du mois<BR>      6. Contact</P>
<P> </P>
<P>--[ 1. Actualités Société ]----</P>
<P> </P>
<P>Depuis la rentrée, de nombreuses actualités autour de RANDCO :</P>
<P> </P>
<P>- Deux nouveaux consultants nous ont rejoint depuis Octobre : un ingénieur réseau avec une spécialisation sécurité (notamment technologies anti-spam) et un consultant réseaux et systèmes pour l'administration de l'infrastructure d'un de nos clients, en mode contrat de service global.</P>
<P> </P>
<P>- A l'occasion d'une mission sur de l'expertise JBOSS, nous avions fait connaissance et sympathisé avec Jérôme MOLIERE, expert J2EE et auteur de livres sur ce sujet. Nous avons décidé d'un partenariat qui renforce nos compétences sur les domaines des infrastructures IT en y incluant les serveurs J2EE. Nous avons initié ce partenariat en organisant une formation JBOSS sur mesure pour l'un de nos clients.</P>
<P> </P>
<P>- Même si elles sont parfois décriées, nous croyons dans les certifications des éditeurs et des constructeurs afin de valider et de faire valoir nos compétences. Ainsi ce mois-ci, trois de nos consultants ont obtenu les certifications HP SAN , Cisco CCNA et Microsoft Windows 2003 Server.Nous reviendrons sur les cerifications SAN (stockage) dans notre prochain numéro.</P>
<P> </P>
<P>- RANDCO, en tant que spécialiste de l'intégration de plateformes de supervision OpenSource est cité par 01net : <A href="http://www.randco.fr/perl/awredir.pl?tag=01net&url=http://www.01net.com/editorial/357204/" target=_blank >http://www.01net.com/editorial/357204/</A></P>
<P> </P>
<P>- Nous interviendrons, comme chaque année, à l'Ecole Nationale Supérieure d'Informatique pour l'Industrie et l'Entreprise (ENSIIE, <A href="http://www.randco.fr/perl/awredir.pl?tag=ENSIIE&url=http://www.ensiie.fr/" target=_blank >http://www.ensiie.fr/</A> ) lors d'une conférence auprès des élèves ingénieurs sur le métier de consultant en Infrastructures IT, le vendredi 7 décembre 2007.</P>
<P> </P>
<P>--[ 2. Nouvel article "Un audit de sécurité WiFi" ]----</P>
<P> </P>
<P>Nous avons réalisé dernièrement, lors d'un test d'intrusion, un audit de sécurité WiFi dont les résultats se sont révélés assez typiques !</P>
<P><BR>Grâce à nos cartes munies du chipset Atheros et de la distribution en LiveCD Linux BackTrack, nous avons sniffé les communications Wifi et découvert que la sécurisation utilisée reposait sur le protocole propriétaire Cisco LEAP (LightWeight EAP)....</P>
<P> </P>
<P>La suite sur : <A href="http://www.randco.fr/?p=actualites&ID=32">http://www.randco.fr/?p=actualites&ID=32</A></P>
<P><BR>--[ 3. Actualités Supervision ]----</P>
<P> </P>
<P>L'actualité des outils de supervision Open Source est chargée en cette fin d'année :</P>
<P> </P>
<P>- Sortie de la beta Nagios v3.0b6 (<A href="http://www.randco.fr/perl/awredir.pl?tag=Nagios&url=http://www.nagios.org/" target=_blank >http://www.nagios.org/</A>) . Dès qu'une version stable 3.0 sortira, nous écrirons un article détaillant les nouveautés dont principalement un nouveau front-end de configuration, de meilleures performances et l'utilisation d'une base de données. La version stable connait également une nouvelle release mineure avec la version 2.10</P>
<P> </P>
<P>- Sortie de la v0.8.7 de Cacti (<A href="http://www.randco.fr/perl/awredir.pl?tag=Cacti&url=http://cacti.net/" target=_blank >http://cacti.net/</A>) qui apporte notamment une plus grande granularité des options (par équipement), une amélioration graphique (utilisation de fontes TruType par RRDtool), et la possibilité d'export des points de collecte en format CSV. La liste des plugins utilisables dans Cacti s'aggrandit régulièrement,et nous apportons (modestement) notre contribution à cette édifice en patchant le collecteur d'adresses MAC utilisé dans MACTRACK pour les équipements réseaux Foundry ( <A href="http://www.randco.fr/perl/awredir.pl?tag=Cacti&url=http://forums.cacti.net/viewtopic.php?p=116100#116100" target=_blank >http://forums.cacti.net/viewtopic.php?p=116100#116100</A> ).</P>
<P> </P>
<P>--[ 4. Vu sur le Net ]----</P>
<P> </P>
<P>Comme beaucoup de professionnels de la sécurité nous lisons attentivement la newsletter de Bruce Schneier (<A href="http://www.randco.fr/perl/awredir.pl?tag=Schneier&url=http://www.schneier.com/crypto-gram.html" target=_blank >http://www.schneier.com/crypto-gram.html</A> ) qui regorge (trop ?) d'informations. Ce mois-ci nous avons décidé de nous attarder sur cette information : les CPU embarquées sur les cartes graphiques permettent de cracker les mots de passe 25 fois plus vite que la CPU "classique" d'un ordinateur récent !! (<A href="http://www.randco.fr/perl/awredir.pl?tag=techrepublic&url=http://blogs.techrepublic.com.com/tech-news/?p=1433&tag=nl.e019" target=_blank >http://blogs.techrepublic.com.com/tech-news/?p=1433&tag=nl.e019</A>)</P>
<P> </P>
<P>Cela est dû principalement aux capacités massivement parallèles des processeurs de carte graphique (GPU) et la taille de leur mémoire embarquée sans cesse grandissante.</P>
<P> </P>
<P>C'est une information intéressante car nous utilisons assez régulièrement ces technologies lors de nos audits de sécurité ou tests d'intrusion. Nous faisons appel à des Rainbow Table (listes de hashes de mot de passe déjà pré-calculés, cf <A href="http://www.randco.fr/perl/awredir.pl?tag=Wikipedia&url=http://en.wikipedia.org/wiki/Rainbow_table" target=_blank >http://en.wikipedia.org/wiki/Rainbow_table</A> ) via des outils spécialisés tels que ophcrack (<A href="http://www.randco.fr/perl/awredir.pl?tag=Ophcrack&url=http://ophcrack.sourceforge.net/">http://ophcrack.sourceforge.net/</A> ) ou Cain&Abel (<A href="http://www.randco.fr/perl/awredir.pl?tag=CainAbel&url=http://www.oxid.it/cain.html" target=_blank >http://www.oxid.it/cain.html</A> ) . Les tables NTLM (mécanisme d'authentification moderne de Windows) pour les mots de passe jusqu'à 8 caractères sont ainsi publiées sous la forme de plusieurs fichiers de 650Mo. On peut ainsi casser tout mot de passe de cette longueur en moins de 10 minutes (temps de parcours des tables).</P>
<P> </P>
<P>Cependant l'utilisation appropriée, native sur certains systèmes d'exploitation (principalement les UNIX-like et GNU Linux), d'un SALT  (c-a-d un nombre aléatoire ajouté au mot de passe avant le hachage) les rend inéfficiente. Dans ces cas, l'utilisation de réseau type P2P ou Grid computing, tel que <A href="http://www.randco.fr/perl/awredir.pl?tag=FreeRainbow&url=http://www.freerainbowtables.com/" target=_blank >http://www.freerainbowtables.com/</A> , permet de bénéficier d'une puissance de calcul communautaire, sur le principe de gain/consommation de crédits.</P>
<P> </P>
<P>Quoiqu'il en soit, justifier l'achat d'une PlayStation3 à des fins de sécurité ne manque pas de sel  :) </P>
<P> </P>
<P>--[ 5. L'outil du mois ]----</P>
<P> </P>
<P>C'est un outil assez récent puisque publié le 18 Octobre 2007. Ecrit en python, "wfuzz" ( <A href="http://www.randco.fr/perl/awredir.pl?tag=EdgeSecurity&url=http://www.edge-security.com/wfuzz.php" target=_blank >http://www.edge-security.com/wfuzz.php</A> ) est un "Fuzzer".</P>
<P> </P>
<P>"Fuzzer" est une technique de test qualité qui consiste à injecter massivement et de manière automatisée des données aléatoires sans a priori (du "fuzz") en entrée d'un programme. Ainsi, si un crash intervient, le défaut peut être noté puis corrigé.</P>
<P> </P>
<P>En quoi cela peut-il nous être utile ? Dans nos activités de sécurité, ce type d'outil nous sert à "Brute-Forcer" un serveur Web, c'est à dire tester toutes les combinaisons possibles à partir soit d'un fichier dictionnaire ou bien d'un ensemble de caractères alphanumériques, ponctuation, etc.. .<BR>Ci dessous quelques usages :</P>
<P> </P>
<P>- identifiant / mot de passe  ; exemple typique :<BR><CODE>python wfuzz.py -c --ntlm "mon_domainemon_user:FUZZ" -z file -f wordlists/megabeast.txt --hc 401  <A href="http://mon_site.com/">http://mon_site.com</A></CODE></P>
<P> </P>
<P>- URL ; exemple typique d'attaque sur IIS :<BR><CODE>python wfuzz.py -c -z file -f wordlists/vulns/iis.txt --hc 401,404 <A href="http://www.mon_site.com/FUZZ">http://www.mon_site.com/FUZZ</A></P>
<P></CODE> </P>
<P>- variables dans une URL ; exemple typique :<BR><CODE>wfuzz.py -c -z range -r 1-100 --hc 404 <A href="http://www.mon_site.com/list.asp?id=FUZZ">http://www.mon_site.com/list.asp?id=FUZZ</A></CODE></P>
<P>Nous l'avons utilisé cette semaine lors d'un test d'intrusion (pentest) pour "brute-forcer" une authentification HTTP NTLM sur un serveur IIS.</P>
<P> </P>
<P>Attention , car notre distribution basée sur Debian ne possédait pas le package python "pycurl" supportant NTLM : nous avons donc dû recompiler libcurl puis pycurl à partir des sources :</P>
<P> </P>
<P><CODE>wget <A href="http://curl.haxx.se/download/curl-7.17.1.tar.gz">http://curl.haxx.se/download/curl-7.17.1.tar.gz</A><BR>tar zxvf curl-7.17.1.tar.gz<BR>cd curl-7.17.1/<BR>./configure<BR>make<BR>sudo make install<BR>ldconfig</CODE></P>
<P><CODE>wget <A href="http://pycurl.sourceforge.net/download/pycurl-7.16.4.tar.gz">http://pycurl.sourceforge.net/download/pycurl-7.16.4.tar.gz</A><BR>tar zxvf pycurl-7.16.4.tar.gz<BR>cd pycurl-7.16.4/<BR>sudo python setup.py install</CODE></P>
<P> </P>
<P>On vérifie ensuite le support de NTLM dans pycurl ainsi :</P>
<P> </P>
<P><CODE>$ python<BR>Python 2.4.4c1 (#2, Oct 11 2006, 21:51:02)<BR>[GCC 4.1.2 20060928 (prerelease)] on linux2<BR>Type "help", "copyright", "credits" or "license" for more information.<BR>>>> >>> import pycurl<BR>>>> >>> pycurl.version_info()<BR>(3, '7.17.1', 463105, 'i686-pc-linux-gnu', 540, 'OpenSSL/0.9.8b', 0, '1.2.3', ('tftp', 'ftp', 'telnet', 'dict', 'http', 'file', 'https', 'ftps'), None, 0, None)<BR>>>> >>></P></CODE>
<P> </P>
<P>Une fois l'attaque achevée, on obtient le résultat suivant :</P>
<P> </P>
<P><CODE>Target: <A href="http://www.mon_site.com/exchange">http://www.mon_site.com/exchange</A><BR>Payload type: file<BR>Total requests: 45463<BR>===========================================================<BR>ID Response Lines Word Request<BR>===========================================================<BR>00053: C=401 10 L 18 W "mon_domaineadministrateur:admin"</CODE></P>
<P> </P>
<P>On constate un code retour HTTP 401 (Accès non autorisé) : on ne gagne pas à chaque coup ... surtout quand les inconnues sont multiples : dans le cas présent non seulement mot de passe mais également identifiant et nom de domaine.</P>
<P> </P>
<P>--[ 6. Contact ]----</P>
<P> </P>
<P>RANDCO, SARL au capital de 30.000 Euros.<BR>45 Avenue Hoche<BR>75008 Paris<BR>Contact Commercial : <A href="mailto:contact@randco.fr">contact _chez_ randco.fr</A><BR>Contact pour la Newsletter : <A href="mailto:newsletter@randco.fr">newsletter _chez_ randco.fr</A></P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Un audit sécurité wifi</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=32</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=32</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=32</comments>
	<description>
<![CDATA[ <P>Nous avons réalisé dernièrement, lors d'un test d'intrusion, un audit de sécurité WiFi dont les résultats se sont révélés assez typiques !<BR></P>
<P>Grâce à nos cartes munies du chipset <A href="http://www.randco.fr/perl/awredir.pl?tag=atheros&url=http://www.atheros.com/" target=_blank BORDER="0">Atheros</A><A name=""> </A> et de la distribution en LiveCD Linux <A href="http://www.randco.fr/perl/awredir.pl?tag=RemoteExploit&url=http://www.remote-exploit.org/backtrack.html" target=_blank BORDER="0">Backtrack</A><A name=""> </A>, nous avons sniffé les communications Wifi et découvert que la sécurisation utilisée reposait sur le protocole propriétaire Cisco LEAP (LightWeight EAP).</P>
<P><A href="http://www.randco.fr/perl/awredir.pl?tag=Cisco&url=http://www.cisco.com/warp/public/784/packet/exclusive/apr02.html" target=_blank BORDER="0">Cisco décrit ainsi</A><A name=""> </A> la séquence d'authentification et d'échangede clés de la façon suivante :</P>
<P> </P>
<P><CODE>Cisco LEAP is based on a username/password scheme and uses the following basic authentication process: </CODE></P>
<P><CODE>1. A client connects to the wireless medium. </CODE></P>
<P><CODE>2. The client sends a start message to an AP (Access Point). </CODE></P>
<P><CODE>3. The AP sends an access request on behalf of the client to the authentication server. </CODE></P>
<P>Il est important de noter que le trafic réseau entre l'AP et le serveur d'authentification (en général RADIUS) sont réalisées sur le LAN et donc hors de portée des attaquants. Par ailleurs, et c'est d'ailleurs le cas là, le serveur RADIUS utilisé est parfois directement embarqué sur l'AP.</P>
<P><CODE>4. The client sends its username to the AP, which forwards it to the authentication server. </CODE></P><IMG title="LEAP Step 4" alt="LEAP Step 4" src="http://www.randco.fr/img/LEAP/leap-step4.JPG" border=1> 
<P></P>
<P><CODE>5. The authentication server sends a challenge back. </CODE></P>
<P><CODE>6. The AP forwards the challenge to the client as an EAP message over 802.1X. </CODE></P><IMG title="LEAP Step 6" alt="LEAP Step 6" src="http://www.randco.fr/img/LEAP/leap-step6.JPG" border=1> 
<P>Ci-dessus, on observe bien le <EM>nonce </EM>de 8 octets.</P>
<P> </P>
<P><CODE>7. The client runs the challenge through the Cisco LEAP algorithm, mixes challenge and user password together, and responds with a value, which the AP forwards to the authentication server.</CODE></P><IMG title="LEAP Step 7" alt="LEAP Step 7" src="http://www.randco.fr/img/LEAP/leap-step7.JPG" border=1> 
<P>La réponse du client est générée ainsi : 3 copies du nonce sont chiffrées en DES par 3 clés distinctes : on les obtient en hashant le mot de passe (via MD4, produisant un aggrégat de 16 octets), en le concaténant avec 5 octets <EM>null</EM>, puis en le découpant en 3 séquences (clés) de 7 octets.</P>
<P> </P>
<P>Le client envoie alors le <EM>challenge-response</EM> de 24 (3x8) octets, que l'on peut observer dans la capture ci-dessus.</P>
<P> </P>
<P>La faiblesse de LEAP tient dans le fait que le clair est connu (pas de chiffrement du nonce) et que la 3ème clé DES est quasiment connue : les 5 derniers octets (sur 7!) sont "0" ! </P>
<P>Il devient assez simple de lancer une attaque par dictionnaire ou brute force en utilisant cette optimisation.. pour chaque test de mot de passe, seul le 3ème et dernier bloc DES est généré : si celui-ci correspond à la capture, le second bloc est calculé. En cas de correspondance, le premier bloc est alors calculé : si de nouveau il y a correspondance , le mot de passe est trouvé !</P>
<P> </P>
<P><CODE>8. The authentication server runs the user password through the Cisco LEAP algorithm, which processes the challenge and client response, then compares its derived value with the value it received from the client. If the two values match, the authentication server sends a success message to the AP, which passes it to the client.</CODE></P><IMG title="LEAP Step 8" alt="LEAP Step 8" src="http://www.randco.fr/img/LEAP/leap-step8.JPG" border=1> 
<P></P>
<P></P>
<P><CODE>9. Now, the client sends a challenge to the authentication server to authenticate the AP (the network), and proceeds through the reverse Cisco LEAP process.</CODE></P>
<P>On voit bien le client envoyer un challenge de 8 octets..... </P><IMG title="LEAP Step 9" alt="LEAP Step 9" src="http://www.randco.fr/img/LEAP/leap-step9.JPG" border=1> 
<P>.. auquel l'Access Point répond par une donnée de 24 octets. </P><IMG title="LEAP Step 9b" alt="LEAP Step 9b" src="http://www.randco.fr/img/LEAP/leap-step9b.JPG" border=1> 
<P>Dans une seconde trame, l'AP envoie la clé de session :</P><IMG title="LEAP Step 10a" alt="LEAP Step 10a" src="http://www.randco.fr/img/LEAP/leap-step10a.JPG" border=1> 
<P> </P>
<P><CODE>10. If the network is successfully authenticated, the client passes a success message through the AP to the authentication server, which opens a port. The user is live on the network. </CODE></P><IMG title="LEAP Step 10b" alt="LEAP Step 10b" src="http://www.randco.fr/img/LEAP/leap-step10b.JPG" border=1> 
<P><CODE>11. Cisco LEAP RADIUS server a WEP key for that session and stores it in the AP. </CODE></P>
<P><CODE>12. The Cisco LEAP client locally derives the WEP key. </CODE></P>
<P> </P>
<P>Lors de notre audit, nous avons évidemment tenté (et réussi à casser le mot de passe) grâce à l'outil <A href="http://www.randco.fr/perl/awredir.pl?tag=LEAPCracker&url=http://freeworld.thc.org/releases.php" target=_blank BORDER="0">thc-leapcracker </A>en mode brute force :</P>
<P> </P><IMG title="LEAP Cracker" alt="LEAP Cracker" src="http://www.randco.fr/img/LEAP/leap-cracker.JPG" border=1> 
<P></P>
<P> </P>
<P></P>
<P></P>
<P>La conclusion ? Une mauvais mécanisme de sécurité permet à un attaquant :</P>
<UL>
<LI>d'obtenir en clair le login de l'utilisateur connecté</LI>
<LI>d'obtenir le mot de passe chiffré (ou dérivé) attaquable en mode offline</LI></UL>
<P>Ce mot de passe est malheureusement celui du Wifi mais également celui du domaine, et de l'accès VPN !!! On comprend aisément les dégats..</P>
<P>C'est pourquoi nous préconisons :</P>
<UL>
<LI>une politique de mots de passe forts et fréquemment changés qui reste la meilleure contre-mesure à la plupart des attaques. Si cette politique n'est pas applicable alors il existe des alternatives telles que l'authentification forte via des tokens (RSA, ActivCard, etc..) ou des certificats.</LI>
<LI>une décorrelation des comptes (et des mots de passe) VPN, Domaine Active Directory,Wifi, Métier, etc...</LI>
<LI>l'utilisation quasi systématique de VPN IPSEC même en mode WiFi</LI>
<LI>une veille active autour de la sécurité (information, passage de patch, amélioration de la configuration ou des mécanismes de sécurité) lorsque de tels risques sont encourus. Dans le cas présent la mise en oeuvre de PEAP par l'établissement d'un tunnel SSL doublement authentifié (certificat serveur et client) permet d'assurer également une bonne sécurité (au prix d'un déploiement plus lourd sur les postes de travail).</LI></UL>
<P></P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Visioconférences IP au travers de firewalls</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=31</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=31</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=31</comments>
	<description>
<![CDATA[ <P>Les constructeurs de firewall se vantent<A name=""> </A> souvent d'implémenter des modules applicatifs. Ceci est nécessaire lorsque l'applicatif ouvrent des ports TCP/UDP dynamiquement.</P>
<P> </P>
<P>C'est typiquement le cas de la visioconférence IP lorsque celle-ci utilise <A href="http://www.randco.fr/perl/awredir.pl?tag=Wikipedia&url=http://fr.wikipedia.org/wiki/H.323" target=_blank BORDER="0">H.323 </A>(SIP est un autre concurrent ainsi que MGCP), qui "regroupe" de nombreux autres protocoles tels que H.245 et H.225.</P>
<P> </P><IMG src="http://www.randco.fr/images/H323_1.gif" align=left> 
<P>Nous sommes intervenus récemment chez un client qui utilise des équipements de visioconférence TANDBERG pour des communications internationales traversant de nombreux firewall dont un Cisco PIX et un CheckPoint sur plateforme Nokia.</P>
<P> </P>
<P>Lors de l'initialisation de la connexion, un échange <A href="http://www.randco.fr/perl/awredir.pl?tag=Wikipedia&url=http://fr.wikipedia.org/wiki/H.225" target=_blank BORDER="0">H.225 </A>(protocole qui gère l'appel : établissement, contrôle et fin) a lieu puis le flux est diffusé (via <A href="http://fr.wikipedia.org/wiki/H.245" target=_blank BORDER="0">H.245</A><A name=""> </A> pour la gestion des flux médias, RTCP et RTP) sur des ports négociés. Lors de cette investigation nous avons découvert que le flux vidéo était interrompue 1 heure après le début de l'appel.</P>
<P> </P>
<P>Nous avons tout d'abord soupçonné le PIX qui droppait silencieusement certains paquets H.245. Il faut dire que le TAC Cisco nous a conseillé de désactiver <A href="http://www.randco.fr/perl/awredir.pl?tag=Cisco&url=http://www.cisco.com/en/US/products/ps6120/products_configuration_guide_chapter09186a0080640337.html#wp1229306" target=_blank BORDER="0">l'inspection protocolaire "fixup" H.323 </A>et d'ouvrir les connexions TCP et UDP entre les équipements de Visio : ceci permet d'une manière assez brutal de s'assurer que le PIX ne bloquera aucun paquet de visioconférence !!</P>
<P> </P>
<P>L'analyse des logs CheckPoint ne donnera non plus aucune piste (rien dans la règle 0, celle des autorisation / refus implicites). Pourtant l'analyse du traffic (par port mirroring) met en évidence le comportement anormal du CheckPoint : le flux H.245 est "cassé" alors qu'il est actif en permanence !!</P>
<P> </P>
<P>En fait, c'est la session H.225 qui est inactive depuis une heure : déclenchant le "nettoyage" des règles négociées lors de l'appel H.323. Pourtant la <A href="http://www.randco.fr/perl/awredir.pl?tag=Checkpoint&url=http://www.checkpoint.com/appint/appint_application_layer.html" target=_blank BORDER="0">documentation marketing </A>détaille cette fonctionnalité (sic) "<EM>Enforce H.323 call duration limits</EM>".</P>
<P> </P>
<P>Un workaround pour éviter ce "bug" dans l'inspection protocolaire, consiste à augmenter le timer nommé "H.323 idle timeout" prolongeant d'autant la libre circulation des flux H.245.</P>
<P> </P>
<P>La conclusion de cette investigation est qu'il ne faut pas toujours de fier aux fonctions magiques (lire "applicatives") des firewalls et que souvent seule l'analyse du traffic avec un sniffer permet de mettre en lumière les dysfonctionnements d'un réseau.</P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Monter un serveur FTP sécurisé</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=30</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=30</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=30</comments>
	<description>
<![CDATA[ <P>Sur un de nos serveurs hébergés, nous devons installer et configurer rapidement un serveur FTP d'upload pour quelques-un de nos clients.</P>
<P>Notre plateforme de prédilection est désormais <A href="http://www.ubuntu.com/products/WhatIsUbuntu/serveredition" target=_blank BORDER="0">Ubuntu-Server </A>étant donné le manque de visibilité de Mandriva. Voici décrites ci dessous les quelques étapes que nous avons suivi.</P>
<P> </P>
<P>
<H1>Installation de proftpd.</H1>
<P></P>
<P> </P>
<P>La distribution proftpd est contenu dans le repository universe d'Ubuntu que nous devons activer en décommentant dans le fichier /etc/apt/sources.list la ligne :</P>
<P></P>
<P><BR><CODE>deb <A href="http://fr.archive.ubuntu.com/ubuntu/">http://fr.archive.ubuntu.com/ubuntu/</A> edgy universe<BR>deb-src <A href="http://fr.archive.ubuntu.com/ubuntu/">http://fr.archive.ubuntu.com/ubuntu/</A> edgy universe</CODE><BR></P>
<P> </P>
<P>Ensuite on effectue un classique :</P>
<P> </P>
<P><CODE>$ sudo apt-get update<BR>$ sudo apt-get install proftpd</CODE></P>
<P> </P>
<P>Dans le menu proposé, on choisit l'installation en "standalone" plutot qu'avec (x)inetd.</P>
<P> </P>
<P>
<H1>Configuration de proftpd.</H1>
<P></P>
<P> </P>
<P>La configuration par défaut laisse à désirer notamment au niveau de la sécurité.</P>
<P>Nous modifions donc le fichier /etc/proftpd/proftpd.conf en ajoutant les lignes suivantes :</P>
<P><BR><BR><CODE>## L'authentification s'appuye sur une liste explicite de comptes listés dans "/etc/proftpd/passwd"<BR>AuthOrder mod_auth_file.c<BR>AuthUserFile "/etc/proftpd/passwd"<BR>AuthGroupFile "/etc/proftpd/group"<BR><BR>## Les utilisateurs sont chrootés dynamiquement lors de la connexion : il ne peuvent remonter le répertoire <EM>parent</EM><BR>DefaultRoot ~<BR><BR>## On désactive la bannière founrissant des informations sur la version du serveur<BR>ServerIdent off<BR><BR>## les utilisateurs FTP n'ayant pas besoin de se logger autrement sur le serveur, leur shell est fixé à "/bin/false". La directive ci-dessous est nécessaire pour accepter ce fonctionnement.<BR>RequireValidShell off<BR><BR>## Controle d'accès : par défaut tout est interdit !!<BR>< LIMIT ALL> <BR>  DenyAll<BR>< /LIMIT> <BR><BR><BR>## Controle d'accès : les utilisateurs peuvent écrire et lire dans leur répertoire respectif<BR>< Directory ~ ><BR>  < Limit READ WRITE RNFRM ><BR>   AllowAll<BR>  < /Limit ><BR>  < Limit STOR ><BR>   AllowAll<BR>  < /Limit ><BR>< /Directory > <BR><BR># Umask 022 is a good standard umask to prevent new files and dirs<BR># (second parm) from being group and world writable.<BR>Umask 022  022<BR><BR></CODE></P>
<H1>Création des comptes FTP</H1>
<P></P>
<P> </P>
<P><U>Par défaut,</U> tout compte déclaré dans le système et non  inclus dans le fichier "/etc/ftpusers" est apte à se connecter. Ce principe de <EM>black-list</EM> n'est évidemment pas acceptable au vu des risques encourus. </P>
<P>Nous préférons donc opter pour un système en liste blanche via les directives suivantes :</P>
<P> </P>
<P><CODE>AuthOrder mod_auth_file.c<BR>AuthUserFile "/etc/proftpd/passwd"<BR>AuthGroupFile "/etc/proftpd/group" <BR></CODE> </P><BR>
<P>ll faut ensuite à la fois créer les comptes dans le système (avec la commande useradd , par exemple) et pour la partie proftpd avec la commande :</P>
<P> </P>
<P><CODE>/usr/sbin/ftpasswd --passwd --file=/etc/proftpd/passwd --name=mon_user --home=/home/mon_dir --shell=/bin/false --uid=1005</CODE></P>
<P> </P>
<P>On notera que le uid (<EM>user identification number</EM>) fourni (ici "1005") doit correspondre à celui indiqué dans le fichier système /etc/password. </P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Methodes AntiSpam</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=29</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=29</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=29</comments>
	<description>
<![CDATA[ <P>Les spams représentent largement plus de 50% du volume des e-mails.</P>
<P>L'ampleur ce phénomène est telle que des mesures <A href="http://www.randco.fr/perl/awredir.pl?tag=01Net&url=http://www.cnil.fr/index.php?id=1272" target=_self BORDER="0">gouvernementales</A><A name=""> </A> et <A href="http://www.randco.fr/perl/awredir.pl?tag=01Net&url=http://www.01net.com/editorial/278980/justice/la-cnil-obtient-la-premiere-condamnation-du-spam/" target=_self BORDER="0">judicaires</A><A name=""> </A> se mettent en place afin de criminaliser ces pratiques.</P>
<P>Chez nos clients, nous sommes fréquemment mis à contribution pour mettre en oeuvre des contre-mesures pour combattre ce fléau. Dans cet article nous verrons les méthodes anti-spams "génériques". Nous aborderons dans un prochain article la configuration pratique (notamment <A href="http://www.randco.fr/perl/awredir.pl?tag=LDAP&url=http://fr.wikipedia.org/wiki/LDAP" target=_self BORDER="0">LDAP</A><A name=""> </A>) de 2 solutions commerciales que nous avons récemment évalué .</P>
<P> </P>
<P></P>
<H1 class=western>Greylisting</H1>
<P class=western> </P>
<<P>
<<P>
<<P>
<H1 class=western>Challenge/Response</H1>
<<P>
<<P>
<<P>
<<P>
<H1 class=western>CallBacks</H1>
<<P>
<<P>
<<P>
<H1 class=western>Filtres Bayesiens</H1>
<<P>
<<P>
<<P>
<<P>
<H1 class=western>Conclusion</H1>
<<P>
<P> </P>
<P>On comprend mieux pourquoi la plupart de ces solutions ne sont pas satisfaisantes pour un lutte centralisée et efficace contre le spam.</P>
<P>C'est pourquoi les acteurs commerciaux proposent des méthodes complémentaires :</P>
<UL>
<LI>analyse heuristique (à l'instar des anti-virus)</LI>
<LI>analyse à base de signatures</LI>
<LI>liste d'adresse blanches et noires (<EM>white & black list</EM>) contenant les adresses IP des serveurs SMTP "légitimes" ou "spammeurs notoires"</LI></UL>
<P>D'autres fonctionnalités sont indispensables à une solution complète :</P>
<UL>
<LI>accès par l'utilisateur à sa quarantaine (liste des e-mails bloqués et lui étant adressé, nommé en anglais <EM>User Quarantine</EM>)</LI>
<LI>vérification en amont de l'existence de l'adresse mail du destinataire (en général par LDAP) avant d'accepter le contenu du mail</LI></UL> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Proxy SNMP</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=28</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=28</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=28</comments>
	<description>
<![CDATA[ <P></P>
<P> </P>
Dans certains cas, il est intéressant (voire nécessaire) d'implémenter un proxy SNMP afin de pouvoir interroger des équipements qui ne doivent (ou peuvent) pas joindre le serveur de supervision. 
<P></P>Dans ce cas nous utilisons un serveur relais (généralement un firewall Linux) possédant une interface sur chacun des réseaux et nous configurons son agent SNMP (la solution Open Source <A href="http://www.randco.fr/perl/awredir.pl?tag=NETSNMP&url=http://net-snmp.sourceforge.net/" target=_self BORDER="0">net-snmp </A>anciennement ucd-snmp) afin d'agir comme proxy.
<P></P>
<P></P>Suivant la <EM>communauté</EM> fournie, le proxy fera suivre la requête à des machines différentes. 
<P></P>Si on trouve <A href="http://www.randco.fr/perl/awredir.pl?tag=NETSNMP&url=http://net-snmp.sourceforge.net/docs/man/snmpd.conf.html" target=_self BORDER="0">quelques documents </A>sur la configuration de cette fonctionnalité, la partie Contrôle d'Accès est en général omise, or elle est indispensable pour obtenir une solution qui fonctionne. 
<P></P>
Nous reproduison donc ici l'intégralité du fichier <EM>/etc/snmpd/snmpd.conf</EM> :</P>
<P> </P>
<P></P>
<P></P>
<P><CODE>#COM1 est la communauté par défaut pour l'agent lui-même</CODE></P>
<P><CODE>rocommunity COM1<BR></CODE></P>
<P><CODE>view all_view included .1 80</CODE></P>
<P><CODE></CODE> </P>
<P><CODE># Les requêtes comportant le communauté COM2 seront affectées à l'utilisateur "USER1" et au contexte "CONTEXT1"  </CODE></P>
<P><CODE>com2sec -Cn CONTEXT1 USER1 default COM2</CODE></P>
<P><CODE># L'utilisateur USER1 fait partie du groupe GROUP1</CODE></P>
<P><CODE>group GROUP1 v1 USER1</CODE></P>
<P> </P>
<P><CODE>#Le groupe GROUP1 a tous les droits en lecture</CODE></P>
<P><CODE>access GROUP1 CONTEXT1 any noauth exact all_view none none<CODE></P>
<P> </P>
<P><CODE># Les requêtes appartenant au CONTEXT1 sont proxyées (?) vers la machine REMOTE1 avec la communauté REMOTECOM pour l'ensemble de la MIB (OID commençant par ".1.3")</CODE></P>
<P><CODE>proxy -Cn CONTEXT1 -v 1 -c REMOTECOM REMOTE1 .1.3</CODE></P>
<P></P>
<P> </P>
Enfin, envoyons les requêtes :
<P><CODE># snmpwalk localhost -c COM1 system.sysName.0<BR>SNMPv2-MIB::sysName.0 = STRING: "nom_machine_locale"</CODE></P>
<P><CODE>#snmpwalk localhost -c COM2 system.sysName.0<BR>SNMPv2-MIB::sysName.0 = STRING: "nom_machine_distante"</CODE></P>
<P></P>
<P> </P>
Si vous n'obtenez pas ces résultats, il est possible d'obtenir des traces en lançant le démon snmpd ainsi : 
<P><CODE>snmpd -f -Lsd -Dresult,proxy,vacm</CODE></P></CODE></CODE> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>NBAR, une fonctionnalité méconnue</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=27</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=27</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=27</comments>
	<description>
<![CDATA[ Les équipements réseaux ne cessent de s'approcher des applications : chiffrement, compression, cache (ou <EM>accéleration</EM> en termes marketing), qualité de service, partage de charge, stockage, iPBX, détection si ce n'est prévention d'intrusion et maintenant même <A href="http://www.randco.fr/perl/awredir.pl?tag=01Net&url=http://www.01net.com/editorial/338845/securite/cisco-investit-dans-l-antispam/">anti-spam</A> ! </P>
<BR>Le but de cet article est de revenir sur une de ces avancées qui bien qu'ancienne (elle date de 2000) reste peu connue et utilisée : <A href="http://www.randco.fr/perl/awredir.pl?tag=Cisco&url=http://www.cisco.com/en/US/products/ps6350/products_configuration_guide_chapter09186a0080455985.html">Cisco NBAR</A> (<EM>Network Based Application Recognition</EM>) est une fonctionnalité embarquée sur les routeurs Cisco récents permettant la reconnaissance des applications à partir de signatures et non plus uniquement sur des ports TCP/UDP. <P></P>
En l'activant, on peut construire le boitier QoS du "pauvre" en ce sens qu'aucun équipement ou coût suplémentaire n'est nécessaire : l'expert réseau démontre sa plus-value !
<P> </P>
Evidemment, l'architecture doit être routée (ce qui élimine certaines topologies : les LANs étendus au moyen de liens Ethernet 802.1Q, qu'ils soient fournis par des opérateurs ou bien des fibres noires) et sous contrôle ( les routeurs ne doivent pas être gérés par un tiers, typiquement un opérateur ou un hébergeur).
<A href="http://www.randco.fr/perl/awredir.pl?tag=Cisco&url=http://www.cisco.com/go/nbar">NBAR</A> permet d'identifier les flux , à l'instar des ACLs, mais en utilisant des signatures pour détecter les applications utilisant des ports mouvants (par nature tels skype, h.323, ou par "accident"HTTP, Citrix,etc..) ou bien se camouflant (canaux cachés avec <A href="http://www.randco.fr/perl/awredir.pl?tag=Stunnel&url=http://www.stunnel.org/">stunnel</A>, protocoles P2P : kazaa, emule, winMX , etc..). Ces signatures, nommées PDLM, sont mises à jour régulièrement et téléchargeables sous forme de mises à jour sur le <A href="http://www.randco.fr/perl/awredir.pl?tag=Cisco&url=http://www.cisco.com/cgi-bin/tablebuild.pl/pdlm">site web</A> de Cisco (nécessite un accès CCO). </P>
<P>Certains flux utilisant des ports statiques généralement inchangés ou non modifiables (typiquement DNS, Exchange ou bien Netbios) sont définis comme tels dans NBAR (i.e sans signature applicative). 
<P> </P>
Malheureusement, la plupart de ces <A href="http://www.randco.fr/perl/awredir.pl?tag=Cisco&url=http://www.cisco.com/en/US/products/ps6616/products_case_study09186a00800ad0ca.shtml">signatures</A> sont très orientées P2P (on trouve le même biais dans les boitiers de QoS des constructeurs Allot ou Packeteers) ou bien VoIP /ToIP. On peut imaginer que le marché entrevu par le <A href="http://www.randco.fr/perl/awredir.pl?tag=LesEchos&url=http://www.lesechos.fr/lettrespro/presentation/telecom/flash/rapport_filtrage_capgemini_france.pdf">filtrage à grande échelle des flux P2P</A> par les FAIs a justifié ce positionnement. <P></P>
Certaines signatures demandes à être testées : nous avons découvert début 2007 que la signature <A href="http://www.randco.fr/perl/awredir.pl?tag=TFTP&url=http://fr.wikipedia.org/wiki/TFTP">TFTP</A> d'un des constructeurs majeurs de boitiers de QoS ne fonctionnait pas (TFTP utilise des ports UDP dynamiques négociés lors de la session de contrôle) : c'est très problématique surtout lorsqu'on sait que la plupart des IP Phones bootent en chargeant leur logiciel par TFTP. Comment ce trafic pourrait-il être protégé si il n'est pas reconnu correctement ?
<P> </P>
Revenons aux commandes Cisco : une fois le flux identifié, on applique les mécanismes de <EM>queueing</EM> classiques :
<P> </P>
<P><CODE>RTR(config)class-map match-any bad_trafic </CODE></P>
<P><CODE>RTR(config-cmap)#match protocol edonkey </CODE></P>
<P><CODE>RTR(config-cmap)#match protocol napster </CODE></P>
<P><CODE>RTR(config-cmap)#match protocol fasttrack </CODE></P>
<P><CODE>[..]</CODE> </P>
<P><CODE>RTR(config)policy-map kill_bad_trafic </CODE></P>
<P><CODE>RTR(config-pmap)#classmap bad_trafic </CODE></P>
<P><CODE>RTR(config-pmap-c)#drop</CODE> </P>
<P> </P>
Si on veut être moins dur (par exemple pour du traffic web à titre personnel), on limite le débit à 100 kbits/s : 
<P> </P>
<P><CODE>RTR(config)class-map match-any perso_trafic </CODE></P>
<P><CODE>RTR(config-cmap)#match protocol http url "*voila.fr*" </CODE></P>
<P><CODE>RTR(config-cmap)#match protocol http url "*youtube.com*" [..] </CODE></P>
<P><CODE>RTR(config)policy-map slow_perso_trafic </CODE></P>
<P><CODE>RTR(config-pmap)#classmap perso_trafic </CODE></P>
<P><CODE>RTR(config-pmap-c)#bandwidth 100 </CODE></P>
<P><CODE></CODE> </P>
Il existe des possibilités pour rendre la QoS récursive (en utilisant des <CODE>service-policy</CODE> à l'intérieur d'une <CODE>policy-map</CODE>) mais cela sera l'objet d'un autre article... 
Reste à l'appliquer sur l'interface Se0/0 vers Internet : 
<P> </P>
<P><CODE>RTR(config)#interface serial0/0 </CODE></P>
<P><CODE>RTR(config-if)#service-policy input kill_bad_trafic </CODE></P>
<P><CODE>RTR(config-if)#ip nbar protocol-discovery </CODE></P>
<P><CODE></CODE> </P>
La puissance de NBAR lorsqu'il est appliqué à HTTP tient à son caractère <A href="http://www.randco.fr/perl/awredir.pl?tag=Cisco&url=http://www.cisco.com/en/US/products/ps6350/products_configuration_guide_chapter09186a0080455985.html#wp1019736">stateful</A> ( gestion des état en français ?) : bien que ce soient les paquets sortants qui contiennent l'URL, les paquets entrants (c-a-d les données) seront classifiés dans le même flot et ainsi soumis à la politique de QoS (dans le cas présent limitation en téléchargement à 10Kbps -mot clé <EM>input</EM>). 
<P> </P>
Enfin, NBAR permet d'obtenir des statistiques d'utilisation applicative en quasi temps réel : une fonctionnalité que nous utilisons assez souvent lors de nos audits réseau et que nous ne disposons pas d'outils de métrologie sur site. 
<P> </P>
<P><CODE>RTR#conf t </CODE></P>
<P><CODE>Enter configuration commands, one per line. End with CNTL/Z. </CODE></P>
<P><CODE>RTR(config)#int fa0/0 </CODE></P>
<P><CODE>RTR(config-if)#ip nbar protocol-discovery </CODE></P>
<P><CODE>RTR(config-if)#^Z</CODE> </P>
<P> </P>
<P>[10 min plus tard] </P>
<P><CODE>RTR#show ip nbar protocol-discovery stats bit-rate top-n 10 </CODE></P>
<P><IMG title="Stats NBAR " alt="Stats NBAR" src="http://www.randco.fr/images/cisco-nbar-output-petit.jpg" align=middle></P>
On appréciera le fait que les statistiques concernent les paquets entrants et sortant de l'interface selectionnée.
La période de référence (ici 5 min) est modifiable via la commande : 
<P> </P>
<P><CODE>RTR#int fa0/0 </CODE></P>
<P><CODE>RTR(config-if)#load-interval ? </CODE></P>
<P><CODE><30-600> Load interval delay in seconds</CODE> </P>
<P> </P>
Cette variable était déjà utilisé lors du calcul de la charge et de la fiabilité de l'interface : 
<P><CODE></CODE> </P>
<P><CODE>RTR#sho int fa0/0 FastEthernet0/0 is up, line protocol is up </CODE></P>
<P><CODE>Hardware is MV96340 Ethernet, address is 0019.56bc.1288 (bia 0019.56bc.1288) </CODE></P>
<P><CODE>Internet address is 172.31.252.31/24 MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec, </CODE></P>
<P><CODE>reliability 255/255, txload 1/255, rxload 1/255 Encapsulation ARPA, loopback not set </CODE></P>
<P><CODE></CODE> </P>
En ce qui concerne la partie monitoring à moyen et long terme, Cisco publie une <A href="http://www.randco.fr/perl/awredir.pl?tag=Cisco&url=http://tools.cisco.com/Support/SNMP/do/BrowseMIB.do?local=en&mibName=CISCO-NBAR-PROTOCOL-DISCOVERY-MIB">MIB NBAR</A> qui vise peut-être à concurrencer la norme IETF <A href="http://www.randco.fr/perl/awredir.pl?tag=Rmon&url=http://en.wikipedia.org/wiki/Rmon">RMON2</A> qui n'a jamais vraiment décollé. <BR>Des frameworks de monitoring tels que Cacti peuvent ainsi <A href="http://www.randco.fr/perl/awredir.pl?tag=CACTI_Forum&url=http://forums.cacti.net/about2960.html">grapher</A> les stats NBAR. <BR>
<P> <IMG title="NBAR et Cacti" alt="NBAR et Cacti" src="http://www.randco.fr/images/graph_nbar.png" align=middle></P>
<P> </P>
Un dernier point : surveillez l'accroissement de CPU dû à NBAR. Ci dessous un extrait de la <A href="http://www.randco.fr/perl/awredir.pl?tag=Cisco&url=http://www.cisco.com/en/US/products/ps6616/products_qanda_item09186a00800a3ded.shtml">FAQ de NBAR</A>:
<P> </P>
<<P>
<<P>
<<P>
<<P>
<P> </P>
<P>Bonne découverte des flux de votre réseau !</P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Déchiffrer une session SSL : méthodes et limitations</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=26</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=26</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=26</comments>
	<description>
<![CDATA[ <P></P>Tout le monde connait l'analyseur réseau Ethereal et son successeur Wireshark. Une des nouveautés de la version <A href="http://www.wireshark.org/download.html">0.99.5</A> est le déchiffrement de flux SSL dans certaines conditions. 
<P>&nbsp;</P>
<P></P>Cette fonctionnalité est très intéressante car elle permet enfin de pouvoir analyser le trafic SSL à l'aide d'un sniffer que ce soit sur un serveur ( la plupart du temps HTTPS mais également LDAPS, POPS, SFTP, etc.. ) en production ou bien <!--more-->sur un port de recopie d'un flux (grâce à la fonction de mirroring d'un switch ou bien encore l'usage d'un tap physique). 
<P>&nbsp;</P>
<P></P>Au niveau du client, il existe d'autres possiblités en utilisant des proxy (tels que l'excellent outil <A href="http://www.owasp.org/index.php/OWASP_WebScarab_Project">WebScarab</A> de l'<A href="http://www.owasp.org/">OWASP</A>) on bien du tunneling SSL (avec <A href="http://www.stunnel.org/">stunnel</A> par exemple). 
<P>&nbsp;</P>
<P></P>Pour être tout à fait exhaustif, l'outil <A href="http://www.rtfm.com/ssldump/">ssldump</A> permettait déjà d'obtenir ce genre d'information, mais en shell. Son intégration à WireShark permet ainsi de suivre aisément et graphiquement les segments TCP, acknowledgements, retransmissions, etc.. 
<P>&nbsp;</P>
<P></P>Pour mettre en pratique cette fonctionnalité nous allons déchiffrer le flux HTTPs d'un serveur de test. Tout d'abord créeons le matériel crypto : 
<P>&nbsp;</P>
<P>Nous générons un bi-clé <A href="http://en.wikipedia.org/wiki/RSA" target=_self BORDER="0">RSA</A><A name="">&nbsp;</A> de 1024 bits :</P>
<P>&nbsp;</P>
<P><CODE># openssl genrsa -out server.key 1024 </CODE></P>
<P><CODE>Generating RSA private key, 1024 bit long modulus</CODE></P>
<P><CODE>.......++++++ .++++++</CODE></P>
<P><CODE>e is 65537 (0x10001) </CODE></P>
<P>&nbsp;</P>
<P>Notez la valeur de "e"&nbsp;: pour rappel, on a "ed= 1 mod (p-1)(q-1)" avec p et q grands nombre premiers choisis aléatoirement . </P>
<P>La valeur "pq" est la clef publique et "d" la clef privée. Bien que théoriquement libre, la valeur de "e" choisie par la plupart des implémentations est 3 , 5, 17 ou bien 65537.</P>
<P>&nbsp;</P>
<P><CODE># openssl rsa -in server.key -out server.pem</CODE> </P>
<P>&nbsp;</P>
<P>Nous créeons maintenant le CSR (Certficate Signing request) : </P>
<P>&nbsp;</P>
<P><CODE># openssl req -new -key server.key -out server.csr </CODE></P>
<P><CODE>You are about to be asked [..]</CODE></P>
<P><CODE>Country Name (2 letter code) [GB]:FR</CODE></P>
<P><CODE>State or Province Name (full name) [Berkshire]:Paris</CODE></P>
<P><CODE>Locality Name (eg, city) [Newbury]:75008</CODE></P>
<P><CODE>Organization Name (eg, company) [My Company Ltd]:RandCo</CODE></P>
<P><CODE>Organizational Unit Name (eg, section) []:IT </CODE></P>
<P><CODE>Common Name&nbsp;[]:test.randco.fr </CODE></P>
<P><CODE>Email Address []:</CODE> </P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>Comme nous sommes dans un environnement de test, nous autosignons ce CSR pour obtenir le certificat : </P>
<P><CODE></CODE>&nbsp;</P>
<P><CODE># openssl x509 -req -in server.csr -signkey server.key -out server.crt </CODE></P>
<P><CODE>Signature ok</CODE></P>
<P><CODE>subject=/C=FR/ST=Paris/L=75008/O=RandCo/OU=IT/CN=test.randco.fr </CODE></P>
<P><CODE>Getting Private key</CODE> </P>
<P>&nbsp;</P>
<P></P>Nous obtenons ainsi une clé privée server.key et un certificat server.crt. Configurons ensuite Apache : nous ajoutons dans httpd.conf (au niveau du <EM>virtual host</EM> écoutant sur le port 443) ceci : 
<P><CODE></CODE>&nbsp;</P>
<P><CODE>DocumentRoot /usr/local/apache2/htdocs</CODE></P>
<P><CODE>ServerName test.randco.fr SSLEngine on </CODE></P>
<P><CODE>SSLCertificateFile /usr/local/apache2/etc/ssl.crt/server.crt </CODE></P>
<P><CODE>SSLCertificateKeyFile /usr/local/apache2/etc/ssl.key/server.pem </CODE></P>
<P>&nbsp;</P>
<P>Cependant SSL n'est pas supporté par la version du binaire httpd actuel : </P>
<P><CODE></CODE>&nbsp;</P>
<P><CODE># httpd -l | egrep -i "(ssl|so)" </CODE></P>
<P><CODE>mod_so.c </CODE></P>
<P><CODE>#</CODE></P>
<P><CODE></CODE>&nbsp;</P>
<P>Etant donné que nous utilisons Apache2, nous devons donc juste le recompiler en activant l'option <CODE>--enable-ssl</CODE> (contrairement&nbsp;à Apache 1.3 pour lequel le module <A href="http://www.modssl.org/">mod_ssl </A>est distribué&nbsp;à part) : </P>
<P><CODE></CODE>&nbsp;</P>
<P><CODE># ./configure --enable-ssl </CODE></P>
<P><CODE># make </CODE></P>
<P><CODE># make install </CODE></P>
<P><CODE># httpd -l | egrep -i "(ssl|so)" </CODE></P>
<P><CODE>mod_ssl.c</CODE></P>
<P><CODE>mod_so.c </CODE></P>
<P><CODE># apachectl -k restart </CODE></P>
<P><CODE></CODE>&nbsp;</P>
<P></P>Une fois que le flux HTTPs aura été capturé par Wireshark, regardons comment configurer le déchiffrement dans Wireshark : 
<P>dans le menu Edit &gt; Preferences &gt; Protocols &gt; SSL , remplir les champs comme suit : </P>
<UL>
<LI>RSA keys list : les champs séparés par une virgule sont l'adresse IP du server, port TCP, protocole applicatif sous-jacent , chemin vers la clé privée</LI>
<LI>SSL debug file : chemin vers l'indispensable fichier de debug</LI></UL>
<P><IMG alt="SSL capture with Etthereal" src="http://www.randco.fr/images/wire-ssl2-500.jpg" align=middle> </P>
<P>&nbsp;</P>
<P>En appliquant un "SSL follow", on peut suivre la session et récuperer le contenu de la session en clair : </P>
<P>&nbsp;</P>
<P><IMG src="http://www.randco.fr/images/sslfollow-500.jpg" align=middle> </P>
<P>&nbsp;</P>
<P>Pour tester à votre tour, voici la <A href="http://srv.reytan.fr/images/server.key" target=_blank>clé privée</A> et le <A href="http://srv.reytan.fr/images/https3.cap" target=_blank>fichier de capture</A> de la session HTTPS réalisée avec IE6. Les limitations de ssldump et de la méthode demeurent cependant : </P>
<UL>
<LI>AES n'est supporté que dans la <A href="http://sourceforge.net/cvs/?group_id=68993">version CVS</A> de ssldump (donc non intégrée à Wireshark)</LI></UL>
<P>&nbsp;</P>
<UL>
<LI>tous les flux chiffrés avec des <EM>Cipher</EM> <EM>Suite</EM> mettant en oeuvre un échange de clé du type <A href="http://en.wikipedia.org/wiki/Diffie-Hellman_key_exchange" target=_self BORDER="0">Diffie-Helmann Ephemere (DHE)&nbsp;</A>(en opposition avec RSA et Diffie Hellman statique - DH) restent évidemment indéchiffrables ( ceci en est d'ailleurs le but&nbsp;: cet algorithme reste toutefois sensibles aux attaques <EM>Man in the Middle</EM>. C'est&nbsp;la méthode choisie par Webscarab ou d'autres proxy tels que <A href="http://freshmeat.net/projects/spike/?branch_id=31275">Spike Proxy</A> ou <A href="http://portswigger.net/proxy/">Burp Proxy</A>. Evidement, ce genre de manipulation provoque une alerte SSL au niveau du client : "certificat invalide"&nbsp; !).<BR><BR>La capture précédente était réalisée avec MS IE 6 (à jour de patches), le <EM>Cipher Suite</EM> négocié était TLS_RSA_WITH_RC4_128_MD5. Si on utilise d'autres outils (notamment Open Source tels que Firefox ou <A href="http://search.cpan.org/~gaas/libwww-perl-5.69/bin/lwp-request">lwp-request</A>, basé sur Perl) des <EM>Cipher Suite</EM> beaucoup plus forts seront négociés automatiquement :</LI></UL>
<P>&nbsp;</P>
<P><CODE># lwp-request -des <A href="https://localhost/">https://localhost</A></CODE></P>
<P><CODE>200 OK</CODE></P>
<P><CODE>Connection: close</CODE></P>
<P><CODE>Server: Apache/2.0.53 (Unix) mod_ssl/2.0.53 OpenSSL/0.9.7a PHP/4.3.10 mod_perl/2 .0.1 Perl/v5.8.6</CODE></P>
<P><CODE>Content-Length: 2271</CODE></P>
<P><CODE>Content-Type: text/plain</CODE></P>
<P><CODE>Client-Peer: 127.0.0.1:443</CODE></P>
<P><CODE>Client-Response-Num: 1</CODE></P>
<P><CODE>Client-SSL-Cert-Issuer: /C=FR/ST=Paris/L=75008/O=RandCo/OU=IT/CN=test.randco.fr </P>
<P>Client-SSL-Cert-Subject: /C=FR/ST=Paris/L=75008/O=RandCo/OU=IT/CN=test.randco.fr </CODE></P>
<P><CODE>Client-SSL-Cipher: DHE-RSA-AES256-SHA </CODE></P>
<P><CODE>Client-SSL-Warning: Peer certificate not verified</CODE> </P>
<P>&nbsp;</P>
<P>Ce qui donne&nbsp;avec&nbsp;ssldump (version CVS) et le <A href="http://srv.reytan.fr/images/https2.cap" target=_blank>fichier de capture</A> obtenu via : </P>
<P>&nbsp;</P>
<P><CODE># tcpdump -n tcp port 443 -i lo -w https2.cap -s 16436 &amp;</CODE> </P>
<P>&nbsp;</P>
<P>(remarquez la taille des paquets à capturer inhabituellement grande : le MTU de l'interface de loopback est de 16436 octets !) : </P>
<P><CODE></CODE>&nbsp;</P>
<P><CODE># ./ssldump -r https2.cap -k server.key</CODE></P>
<P><CODE>New TCP connection </CODE></P>
<P><CODE>#1: 127.0.0.1(52260) &lt;-&gt; 127.0.0.1(443) 1 1 0.0004 (0.0004) </CODE></P>
<P><CODE>C&gt;S SSLv2 compatible client hello Version 3.1 cipher suites </CODE></P>
<P><CODE>TLS_DHE_RSA_WITH_AES_256_CBC_SHA </CODE></P>
<P><CODE>TLS_DHE_DSS_WITH_AES_256_CBC_SHA </CODE></P>
<P><CODE>TLS_RSA_WITH_AES_256_CBC_SHA </CODE></P>
<P><CODE>TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA </CODE></P>
<P><CODE>TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA </CODE></P>
<P><CODE>TLS_RSA_WITH_3DES_EDE_CBC_SHA SSL2_CK_3DES </CODE></P>
<P><CODE>TLS_DHE_RSA_WITH_AES_128_CBC_SHA </CODE></P>
<P><CODE>TLS_DHE_DSS_WITH_AES_128_CBC_SHA </CODE></P>
<P><CODE>TLS_RSA_WITH_AES_128_CBC_SHA SSL2_CK_RC2 </CODE></P>
<P><CODE>TLS_DHE_DSS_WITH_RC4_128_SHA TLS_RSA_WITH_RC4_128_SHA</CODE></P>
<P><CODE>TLS_RSA_WITH_RC4_128_MD5 SSL2_CK_RC4 SSL2_CK_RC464 </CODE></P>
<P><CODE>TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA </CODE></P>
<P><CODE>TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA </CODE></P>
<P><CODE>TLS_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 </CODE></P>
<P><CODE>TLS_DHE_RSA_WITH_DES_CBC_SHA</CODE></P>
<P><CODE>TLS_DHE_DSS_WITH_DES_CBC_SHA </CODE></P>
<P><CODE>TLS_RSA_WITH_DES_CBC_SHA SSL2_CK_DES </CODE></P>
<P><CODE>TLS_DHE_DSS_WITH_RC2_56_CBC_SHA </CODE></P>
<P><CODE>TLS_RSA_EXPORT1024_WITH_RC4_56_SHA </CODE></P>
<P><CODE>TLS_RSA_EXPORT1024_WITH_RC4_56_MD5 </CODE></P>
<P><CODE>TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA </CODE></P>
<P><CODE>TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA </CODE></P>
<P><CODE>TLS_RSA_EXPORT_WITH_DES40_CBC_SHA </CODE></P>
<P><CODE>TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 </CODE></P>
<P><CODE>SSL2_CK_RC2_EXPORT40 </CODE></P>
<P><CODE>TLS_RSA_EXPORT_WITH_RC4_40_MD5 </CODE></P>
<P><CODE>SSL2_CK_RC4_EXPORT40 1 2 0.0205 (0.0201) </CODE></P>
<P><CODE>S&gt;C Handshake ServerHello Version 3.1 session_id[0]=</CODE> <CODE>cipherSuite TLS_DHE_RSA_WITH_AES_256_CBC_SHA </CODE></P>
<P>&nbsp;</P>Ce qui veut donc dire TLS (SSL v3.1) avec échange de clés <A href="http://en.wikipedia.org/wiki/Diffie_hellman" target=_self BORDER="0">Diffie Hellman Ephemere</A>&nbsp;<A name=""> </A>, algorithme de chiffrement par bloc <A href="http://en.wikipedia.org/wiki/AES" target=_self BORDER="0">AES</A><A name="">&nbsp;</A> 256 bits et hashage par <A href="http://en.wikipedia.org/wiki/SHA" target=_self BORDER="0">SHA</A><A name="">&nbsp;</A> 
<P>&nbsp;</P>
<P><CODE>compressionMethod NULL 1 3 0.0205 (0.0000) </CODE></P>
<P><CODE>S&gt;C Handshake Certificate 1 4 0.0205 (0.0000) </CODE></P>
<P><CODE>S&gt;C Handshake ServerKeyExchange 1 5 0.0205 (0.0000) </CODE></P>
<P><CODE>S&gt;C Handshake ServerHelloDone 1 6 0.0531 (0.0325) </CODE></P>
<P><CODE>C&gt;S Handshake ClientKeyExchange </CODE></P>
<P><CODE>DiffieHellmanClientPublicValue[128]= 7d 96 7e c0 16 ff 1b 63 26 4d 5a 1a b6 0e 16 62 e9 8d dd d6 a0 45 07 d2 51 50 61 d9 26 14 3b 3f bd 77 c5 66 ba 99 26 7e dc 52 c5 1c f2 72 2c dc 24 17 1e 58 a8 45 0d 46 3e 42 da 45 ad 1a c2 e2 87 c3 b8 3b 0f cc 12 c6 6b 98 db 25 7f da 37 8d f7 02 06 95 64 54 94 ec 57 eb 82 e3 76 ab 80 2d a6 da a2 d8 b3 51 a8 29 65 9c 35 fb 81 91 6f 91 e7 ab a9 75 f4 55 b1 30 09 97 13 29 fb a0 a6 a4 1 7 0.0531 (0.0000) </CODE></P>
<P><CODE>C&gt;S ChangeCipherSpec 1 8 0.0531 (0.0000) </CODE></P>
<P><CODE>C&gt;S Handshake 1 9 0.0697 (0.0165) </CODE></P>
<P><CODE>S&gt;C ChangeCipherSpec 1 10 0.0697 (0.0000) </CODE></P>
<P><CODE>S&gt;C Handshake 1 11 0.0700 (0.0003) </CODE></P>
<P><CODE>C&gt;S application_data 1 12 0.0700 (0.0000) </CODE></P>
<P><CODE>C&gt;S application_data 1 13 0.0703 (0.0003) </CODE></P>
<P><CODE>S&gt;C application_data 1 14 0.0705 (0.0001) </CODE></P>
<P><CODE>S&gt;C application_data 1 0.0716 (0.0011) </CODE></P>
<P><CODE>C&gt;S TCP FIN 1 15 0.0717 (0.0001) </CODE></P>
<P><CODE>S&gt;C Alert</CODE> </P>
<P>&nbsp;</P>
<P></P>Pour rappel, la valeur publique de l'échange Diffie Helman est "A = g^a mod p" avec un générateur "g" et un nombre premier "p" fixés suivant le groupe DH sélectionné. (dans le cas présent DHE - <A href="http://www.ietf.org/rfc/rfc2631.txt" target=_self BORDER="0">Diffie Hellman en mode éphémère</A><A name=""> </A>-&nbsp;cette valeur publique est signée à l'aide du certificat serveur afin de se prémunir des attaques <EM>Man in the Middle</EM>) 
<P></P>Le nombre aléatoire "a" est seul connu de l'extremité qui publie A. Grâce à la théorie du logarithme discret, on sait qu' il est impossible (lire : long) connaissant "A","p" et "g" de déterminer "a". 
<P></P>Or "a" ( ou plus exactement "A^b mod p = B^a mod p") est utilisé pour construire la clé de session qui chiffrera le flux avec l'algorithme de chiffrement sélectionné (<EM>stream cipher</EM> RC4 ou bien&nbsp;<EM>block cipher</EM>&nbsp;AES dans les cas de ce présent article). 
<P>&nbsp;</P>
<P></P>Ceci explique que <EM>ssldump</EM> ne puisse obtenir la clé de session uniquement en observant le traffic et en connaissant la clef privée RSA si ce genre de <EM>Cipher Suite</EM> est utilisé. 
<P>&nbsp;</P>
<P></P>Le contenu de cet article est abordé en profondeur lors <A href="http://www.randco.fr/?p=formation" target=_self BORDER="0">notre formation "Réseaux Privés Virtuels"</A><A name=""> </A>. ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Rebond sur un PIX : évolutions au fil des versions</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=25</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=25</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=25</comments>
	<description>
<![CDATA[ <IMG title=ASA alt=ASA src="http://srv.reytan.fr/images/asa.jpg" align=right> 
<P>Par construction, le PIX en version 6.3 <A href="http://www.cisco.com/en/US/products/hw/vpndevc/ps2030/products_qanda_item09186a0080094874.shtml#q44">ne permettait pas</A> à un paquet entré par une interface de sortir par cette même interface. Ceci était particulièrement contraignant car empechait la construction de réseaux VPN architecturé en <EM>Hub and Spoke</EM> à l'aide de PIXs : la solution alternative était alors soit d'utiliser un routeur (ou un concentrateur VPN) sur le site central, soit de mettre en oeuvre une topologie complètement maillée (<EM>full mesh</EM>).</P>
<P>D'autres scénarios étaient également impossibles : </P>
<UL>
<LI>client VPN connecté au site central en IPSEC et ayant besoin d'accéder à un site tiers relié en VPN à ce site central</LI>
<LI>routage par rebond sur l'interface inside du PIX (<EM>ICMP redirect</EM> désactivé sur les firewalls</LI>
<LI>etc..</LI></UL>
<P>A partir de la version 7.0, via l'utilisation de la <A href="http://www.cisco.com/en/US/products/ps6120/products_configuration_guide_chapter09186a0080450beb.html#wp1042114">commande</A> "<CODE>same-security-traffic permit intra-interface</CODE>" le traffic IPSEC pouvait enfin entrer et sortir de la même interface, corrigeant ainsi ce manque de fonctionnalité concernant les topologies VPN de type <EM>Hub and Spoke</EM> .</P>
<P>La version 7.2 apporte une fonctionnalité intéressante : c'est maintenant le traffic clair comme chiffré qui peut "rebondir" sur le PIX. On peut <A href="http://www.cisco.com/en/US/products/hw/vpndevc/ps2030/products_configuration_example09186a00805734ae.shtml">ainsi</A> permettre à un client VPN nomade de sortir sur Internet via le PIX (on utilisait jusque là généralement la focntionnalité de <EM>Split Tunneling</EM>).
<P></P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>LoadBalancer : Algorithmes de répartition</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=24</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=24</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=24</comments>
	<description>
<![CDATA[ <P>Une des fonctionnalités les plus visibles des Load-Balancer est la façon dont il répartissent les flux vers les serveurs réels.</P>
<P>Tout d'abord soyons clair : la répartition (c-a-d le choix du serveur pour la connexion cliente) ne se fait qu'une fois :<!--more--> lors de l'ouverture de la connexion </P>
<P>(( Dans le cas spécifique de HTTP, on verra que les load-balancers gèrent les sessions et qu'ainsi une suite de connexions TCP HTTP sera bien gérée comme la session d'un utilisateur unique )) : les paquets appartenant à une session TCP déjà établie sont dirigés vers le serveur choisi pour cette connexion. </P>
<P><IMG src="http://srv.reytan.fr/images/alteon-methods2.png" align=middle> </P>
<P>Les algorithmes implémentés sont généralement : </P>
<UL>
<LI>round robin : on répartit chaque nouvelle connexion sur un serveur différent</LI>
<LI>least connections : on dirige la nouvelle connexion sur le serveur qui en compte le moins à ce moment précis</LI>
<LI>bandwidth : on dirige la nouvelle connexion sur le serveur qui en utilise le moins à ce moment précis</LI>
<LI>hashing (certaines variantes sont nommées minmisses ou phash): en effectuant une opération sur l'adresse IP du client (ou l'URL de la demande par exemple) , typiquement condensat, bit de parité,etc.. on détermine le serveur réel cible : c'est une méthode frustre qui présuppose une distribution répartie des adresses IP des clients (on verra que c'est rarement le cas). L'avantage de cette méthode est qu'elle rend le choix du serveur déterministe et permet ainsi nativement d'assurer la persistence.</LI>
<LI>weighted : on applique une des méthodes précédentes en biaisant le poids des serveurs réels (intéressant lorsque la ferme est composée de serveur de puissance hétérogènes)</LI></UL>Le choix d'un méthode de répartition est , on le voit, assez structurant pour comprendre la façon dont la charge sera répartie sur les servuers réels. Dans un prochain article, on verra comment est assurée la persistence et quelles sont les réelles opérations bas niveau réalisées par le load balanceur (i.e <EM>delayed binding</EM>) ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Apple se moque de la sécurité de Vista</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=22</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=22</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=22</comments>
	<description>
<![CDATA[ <P>La <A href="http://www.apple.com/getamac/" target=_blank>nouvelle</A> campagne publicitaire d’Apple, se moque gentiment d’un des nouveaux mécanismes de sécurité introduit dans Vista : UAC (User Access Control). Le but d’UAC<SUP><A id=footnote-link-1-23 title="See the footnote." href="http://srv.reytan.fr/wp/?p=23#footnote-1-23">1</A></SUP> est de séparer les privilèges nécessaires à l’utilisation quotidienne (modification du fuseau horaire -mais pas de l’heure système-, configuration d’un accès Wifi, installation de programmes ou codes mobiles - i.e ActiveX- signés, etc..) de ceux relevant des prérogatives de l’administrateur système.</P>
<P><A id=more-23></A></P>
<P>Si l’option “Administrator Approval Mode” est activée, d’incessants pop-ups demandent la confirmation des actions lorsque celles-ci ont un impact important sur le système (ouverture d’un mail piégé, installation d’un programme non signé,etc..).</P>
<P>On sait bien que ce genre de protection est complètement inéfficace à court terme : les utilisateurs répondent mécaniquement “Allow” ou bien désactivent cette option (ce qui est d’ailleurs réalisé par défaut). C’est ce comportment dont se moque la publicité d’Apple.</P>
<P>Aux sujets des nouveautés “néfastes” introduites dans Vista, je vous recommande d’ailleurs la lecture du très instructif “<A href="http://www.cs.auckland.ac.nz/~pgut001/pubs/vista_cost.html" target=_blank>A cost analysis of Windows Vista Content protection</A>“</P> ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Load-Balancers : Introduction</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=21</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=21</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=21</comments>
	<description>
<![CDATA[ <P>Nous intervenons fréquement dans des sociétés qui possèdent des <EM>Load Balancers</EM> (ex. Nortel Alteon, Cisco CSS, F5 BigIP, Radware Application Switch, etc..) qui sont au coeur de leur infrastucture Web.</P>
<P>Or, la plupart du temps, le potentiel énorme de ces équipements est inexploité. La fonction première de ces équipements est de "publier" des serveurs/services (( bien que majoritairement HTTP(s) on trouve également des architectures load-balancées de serveurs Citrix ou Microsoft Terminal Server, FTP, SMTP, POP, Firewalls, etc.. )) virtuels : les requètes à destination de ces derniers sont réparties sur des fermes de serveurs réels.</P>
<P>Pour parvenir à ce résultat, les load-balancers doivent integrer <!--more-->des fonctions de : </P>
<UL>
<LI>commutation niveau 2 (incluant le support du <EM>Spanning Tree Protocol</EM>)</LI>
<LI>routage IP (incluant le support des protocoles de routage dynamiques les plus courants ainsi qu'HSRP/VRRP)</LI>
<LI>firewall (NAT et protection anti-DoS)</LI>
<LI>commutation niveau 4+ ((abusivement appelée niveau 7)) : choix du serveur réel (en fonction de critères tels que l'URL et suivant différents algorithmes) et maintien de ce choix au long de la session (fonctionnalité appellée <EM>persistence</EM>)</LI>
<LI>synchronisation des états de session entre boitiers primaires et secondaires</LI>
<LI><EM>Health check</EM> : vérification avancée de l'état de santé des différents serveurs réels afin de connaitre leur capacité à recevoir de nouvelles requetes</LI>
<LI>terminateur SSL</LI></UL>Dans une suite d'articles à venir, nous allons explorer chacune de ces fonctions en détail. ]]>
	</description>
</item>

<item>
	<author>webmaster@randco.fr</author>
	<title>Mesure réseau sous Linux</title>
	<link>http://www.randco.fr/?p=actualites&amp;ID=10</link>
	<guid>http://www.randco.fr/?p=actualites&amp;ID=10</guid>
	<comments>http://www.randco.fr/?p=actualites&amp;ID=10</comments>
	<description>
<![CDATA[ <P>Ce court billet a pour but de faire découvrir un outil de mesure des débits réseaux sous Linux par l’intermédiaire de la ligne de commande .</P>
<P>Le but n’est évidemment pas de remplacer des plateformes de supervision (en général basées sur SNMP) mais simplement de donner en un court instant les débits réseaux vus par le système. En cherchant ce type d’outil, nous avons découvert cette excellente <A href="http://www.ubuntugeek.com/bandwidth-monitoring-tools-for-ubuntu-users.html" target=_blank>page</A> présentant différents outils dont <A href="http://people.suug.ch/~tgr/bmon/" target=_blank>bmon</A> et <A href="http://www.kernel.org/bwbar.html" target=_blank>bwbar</A>.</P>
<P>Sous Ubuntu, on installe <EM>bmon</EM> classiquement :<A id=more-27></A></P>
<BLOCKQUOTE>
<P><CODE>root@miniU:~# apt-get install bmon<BR>Reading package lists... Done<BR>Building dependency tree... Done<BR>The following NEW packages will be installed:<BR>bmon<BR>0 upgraded, 1 newly installed, 0 to remove and 36 not upgraded.<BR>Need to get 49.3kB of archives.<BR>After unpacking 197kB of additional disk space will be used.<BR>Get:1 http://fr.archive.ubuntu.com dapper/universe bmon 2.0.1-3 Fetched 49.3kB in 2s (16.9kB/s)<BR>Selecting previously deselected package bmon.<BR>(Reading database ... 85434 files currently installed.)<BR>Unpacking bmon (from .../bmon_2.0.1-3_powerpc.deb) ...<BR>Setting up bmon (2.0.1-3) ...</CODE></P></BLOCKQUOTE>
<P>Nous pouvons ensuite lancer ce programme qui implémente une interface intuitive et graphique (grâce à <EM>libncurses</EM>) :</P>
<img src="http://srv.reytan.fr/images/bmon2.JPG" title="http://srv.reytan.fr/images/bmon.JPG" alt="http://srv.reytan.fr/images/bmon.JPG" align="middle" height="368" width="566" />
<P>On obtient un histogramme (en <EM>in</EM> et <EM>out</EM>), le détail de erreurs, etc.. Attention, cependant car les débits affichés sont en Kilo<EM>Byte</EM>/s et non Kilo<EM>Bit</EM>/s !!</P>
<P>L’outil bwbar permet de mesuer les flux réseaux et génère une barre graphique (format png) que l’on peut faire affciher sur une page web.</P>
<P>Après l’avoir installé avec un classique <CODE>apt-get install bwbar </CODE>, il reste à créer un script contenant les lignes suivantes :</P>
<BLOCKQUOTE>
<P><CODE>#!/bin/sh -<BR>killall bwbar<BR>/home/admin/bwbar eth0 1000 -k -t 60 -x 100 -y 8 --png-file /var/www/html/images/ubar.png --text-file /var/www/html/images/ubar.txt &<BR></CODE></P></BLOCKQUOTE>
<P>Ce script, une fois exécuté, lance en fond de tache un process <EM>bwbar</EM> qui génère une image png de 100×8 pi, représentant le débit réseau sortant de eth0, sur une référence de 1Mbits/s avec un rafraichissement toutes les 60 secondes :</P> ]]>
	</description>
</item>
</channel></rss>