Enregistrement Audio et Interview de Nicolas Brulez sur le Reverse Engeenering

Posté par . Modéré par Christophe Guilloux.
Tags :
0
25
mai
2004
Sécurité
Dans le cadre du Challenge Securitech 2004, concours de sécurité informatique organisé par des élèves de troisième année de l'Ecole Supérieure d'Informatique Electronique Automatique (ESIEA), une conférence de clôture a été organisée le 7 mai 2004.
Lors de cette conférence, Nicolas Brulez, responsable de la sécurité au sein de la société Sillicon Realms notamment éditeur du logiciel de système de protection Armadillo, est intervenu sur la résolution du troisième niveau de la catégorie Reverse Engeenering du concours, il est le créateur de ce niveau.
L'équipe du site Secuobs.com spécialisée dans la sécurité informatique a réalisé et mis en ligne un enregistrement audio de 30 minutes de cette intervention accompagné d'une interview de 3 pages en format html de Nicolas Brulez et du slide de présentation au même format utilisé lors de la conférence. Vous pourrez y trouver des explications détaillées sur les techniques de protection anti-debug (émulateur, breakpoint, obfuscation), les techniques de cryptographie (rc4, rsa, ripmd128, xor, crc32) employées dans le développement de ce niveau ainsi que la méthodologie pour en effectuer le Reverse Engeenering.

Le Reverse Engeenering est le fait de pouvoir analyser les trames d'éxécution d'un logiciel afin d'en comprendre le fonctionnement sans avoir l'accès préalable à des documentations officielles.

Cet enregistrement est disponible dans plusieurs formats ogg, mp3 et aac.

Vous avez la possibilité d'écouter le stream mp3 directement via les modules quicktime, real ou wmp intégrés dans les pages du site.

Les URLs en http de ces 3 fichiers sont également disponibles afin de les utiliser dans des logiciels comme Mplayer avec un buffer prédéfini.

Pour ceux qui le souhaitent, vous pouvez télécharger les fichiers audio en tar.gz selon le format voulu.

L'attente des participants à ce concours pour ces ressources devrait être assez importante, si vous rencontrez des problèmes de consultation, n'hésitez pas à bookmarker l'URL de l'interview et à y retourner dans les heures creuses.
  • # Ou sont les épreuves ? Les solutions ? Les résultats ?

    Posté par (page perso) . Évalué à 3.

    Ou sont les épreuves ? Les solutions ? Les résultats ?
    Il faut s'inscrire ? Faut trouver la faille ?
    C'est secret ?


    Une voix dans le haut parleur : les moutons sont priés de passer au vestiaire récupérer la nouvelle LEN. Les retardataires seront poursuivis et condamnés.
    • [^] # Re: Ou sont les épreuves ? Les solutions ? Les résultats ?

      Posté par (page perso) . Évalué à 3.

      >Ou sont les épreuves ? Les solutions ? Les résultats ?
      les epreuves sont finis. (depuis le 1er mai je crois)
      les solutions ont les attents toujours... (a par celui de reverse justement). Mais les solutions du challenge 2003 sont dispo, ca peux donner une idée.
      les résultats je les ai pasque je suis inscrit aux concours mais je donne les 10 premiers en cadeau (1967 inscrits)

      >Il faut s'inscrire ? Faut trouver la faille ?
      trop tard:)

      >C'est secret ?
      ya eu plusieurs post sur linuxfr:)

      voici les resultats:
      1 nono2357 12600
      2 ghorg0re/3ey 12600
      3 naybx 12600
      4 dvrasp 12580
      5 Satori 12580
      6 newsoft_ 12580
      7 LostNoobs 11100
      8 Mattwood9 10870
      9 orgar 10400
      10 reuvayrsi 10400
    • [^] # Re: Ou sont les épreuves ? Les solutions ? Les résultats ?

      Posté par . Évalué à 2.

      à mon avis t'as pas du cliquer sur les liens sinon tu poserai pas toutes ces questions ...

      tous les articles sur le concours sont içi http://www.secuobs.com/sommaires/concours.html(...)

      pour les résultats & détails publics des épreuves c'est marqué sur le site du challenge, ça arrive sous peu ...

      vu que c'est fait par des étudiants de 3e année, j'imagine qu'ils sont dans les périodes d'exam et qu'il faut jongler entre tout ça pour eux ...
  • # Bon article mais bonjour les fautes d'orthographe et de grammaire !

    Posté par . Évalué à 4.

    Tout ça, ça donne envie de se frotter à une protection Armadillo !

    Petite remarque en passant, la proctection du code c'est bien mais la protection du code _et_ des données, c'est mieux.

    Combien de programmes (jeux ?) utilisent le même format de données pour leur version de démo et leur version commerciale ?

    Ce qui permet d'échanger les fichiers de données entre les deux versions et généralement de biaiser(1) la protection du code.

    (1) Non, ce n'est pas une faute de frappe ;-), c'est ce qui se rapproche le plus, à mon avis, de "bypass" en Anglais.
  • # Impressionnant

    Posté par (page perso) . Évalué à 5.

    Je suis impressionne par le niveau de contre-mesure qu'il faut mettre dans un programme pour bien le proteger. J'avais deja reflechi naivement a quelques contre-mesures et ca rejoignais ce qui est propose. Mais c'est une chose de les imaginer, et autre chose de voir un professionnel les implementer et expliquer comment il va biaiser (2) les vilains crackers.

    Si on n'est pas cracker soi-meme, c'est d'ailleurs difficile d'etre expert dans ce domaine.

    Je note aussi que tout ca est tres tres windows. Je me demande quelle serait la problematique sous Linux. D'un autre cote, il est absolument infaisable aujourd'hui de distribuer un produit grand public pour Linux sous forme binaire [3], donc de la a le securiser, on y est pas encore.


    (2): c'est une faute de frappe !

    [3]: je sais que certains vont bondir mais c'est une realite. 5 distributions majeures, avec au moins une mise a jour de la distrib tous les ans, ca fait 10 produits binaires a packager (de facon completement differente) par an minimum. Mais c'est sans compter les gentooistes qui vont recompiler leur libc, les linux sur PPC, les distributions mineures, ... La seule facon de distribuer un produit grand public sous linux, c'est de le developper dans un langage byte-code ou interprete (python roxor!)
    • [^] # Re: Impressionnant

      Posté par (page perso) . Évalué à 3.

      La seule facon de distribuer un produit grand public sous linux, c'est de le developper dans un langage byte-code ou interprete (python roxor!)

      Ou de faire ce que les devs windows, ainsi que les jeux pour GNU/Linux récents et OO.org font : inclure leurs propres versions des librairies sensibles.
      En sachant que la plupart des distros fournissent des binaires de compatiblité pour un truc qui s'appelle la "LSB" (je crois)... ça devrait passer.
      La réticence vis à vis des "binaires universels" est surtout une question de culture (et puis c'est peut être moins optimal qu'un système dont chaque binaire à été prévu pour la version actuelle des librairies).
    • [^] # Re: Impressionnant

      Posté par . Évalué à 2.

      On ne peut pas espérer concevoir une protection infaillible. On peut juste espérer décourager les crackers assez longtemps pour que les ventes soient rentables ;>

      Sinon c'est vrai que la protection des binaires Linux est une question qui sucite mois d'intérêt, vu que les logiciels propriétaires y sont encore plus rares, en comparaison, que les LL sur Windows. Ironiquement, il y a pourtant une forte demande du côté des pirates, qui cherchent à ne pas se faire voler leurs 0-days.
      Les techniques sont globalement les mêmes que sur Windows, à l'exceptions de quelques tricks spécifique, probablement, mais qui risquent de poser des problèmes de compatibilité. On peut citer Shiva (http://www.securereality.com.au/(...)).

      Et pour en revenir à ta dernière assertion, n'est-il pas possible de fournir des binaires compilés statiquement avec une certaine version de la libc ? Ça ne résoud pas tous les problèmes, bien sûr (kernel, toolkits graphique, perfs, etc.).
      Il me semble que les binaires de certains logiciels libres sont fournis sous cette forme (blender ?). Quelqu'un a-t-il de l'expérience sur ce sujet ?
      • [^] # Re: Impressionnant

        Posté par (page perso) . Évalué à 2.

        Tout depend du nombre de dependance. Si c'est un module noyau a la nvidia, pas de probleme pour le binaire. Si c'est une appli graphique, bonjour la galere:
        ldd `which konqueror` | wc -> 40 dependances, loins d'etre triviales (X, fontconfig, pthreads, librender, ....)

        Le pire pour des binaires, c'est une distrib style gentoo: etant donne qu'il n'y a pas d'arret dans le temps de la distrib, tous les utilisateurs ont une gentoo differente. C'est aussi le cas si je ne m'abuse des debian instables. Tous les developpeurs n'ont pas necessairement la derniere version du logiciel X. Ou bien ils ont une version plus recente que la version qui etait la quand le logiciel est sorti.

        Vraiment, en dehors des langages interpretes/byte-compiles, je pense que la distribution binaire de masse sous Linux est vouee a l'echec. Bien sur, il y a les oracles qui te certifient une version de redhat et c'est tout. Ca va pour un serveur en fait.
    • [^] # Re: Impressionnant

      Posté par . Évalué à 3.

      C'est vrai que assez rare de voir des professionnels expliquer les techniques employées surtout avec un tel niveau de détails.

      L'interview reste tout de même très accéssible pour un sujet aussi technique et démystifie un peu les méthodes employées pour ceux qui ne sont pas justement des experts dans ce domaine.

      Pour ce qui en est du reste, j'ais remarqué que certains professionnels se contentent juste d'afficher une compatibilité très restreinte pour leurs produits initialement conçus pour windows puis portés sous linux :

      - une seule version du kernel pour une seule version d'une seule distribution,

      Tu choisis ton système d'exploitation en fonction du soft et non pas le contraire.
  • # Où trouver le binaire utilisé pour la présentation ?

    Posté par . Évalué à 0.

    Quelqu'un a une URL où télécharger le binaire en question ? J'aimerai voir plus précisemment comment cela marche (le speech donne les indications, mais cela ne remplace pas d'essayer par soit même AMHA).
    • [^] # Re: Où trouver le binaire utilisé pour la présentation ?

      Posté par (page perso) . Évalué à 0.

      kado

      Vous êtes en présence d'un binaire protégé contre le Reverse Engineering. Pour completer ce niveau, vous devrez analyser le système de protection afin d'obtenir le message de félicitations.

      De nombreuses techniques Anti Reverse Engineering sont utilisées dans cette protection.
      Tous les outils sont autorisés pour compléter le niveau. Pour le valider, il sera nécessaire d'expliquer la démarche utilisée, et de fournir les éléments qui vous ont permis de résoudre le niveau.

      Télécharger le binaire http://DMRproject.free.fr/rstack.zip(...)

      Commentaire :
      - Niveau programmé 100% en Assembleur Win32.
      - Fonctionne sur Windows 98, ME, 2000, XP et probablement 2003.
      - Ne fonctionne pas sur Win95 et NT4. Virtual PC et Vmware ne peuvent pas être utilisés à cause du code Anti Emulateurs.

      Liens


      Merci à Nicolas Brulez pour la conception de ce niveau. Vous pourrez notamment le voir lors de la conférence SecuriTech qui aura lieu en mai prochain :
      Nicolas Brulez - 0x90[AT]rstack[DOT]org
      Chief of Security
      The Armadillo Software Protection System
      http://www.siliconrealms.com/armadillo.shtml(...)

      Indices


      La où les choix sont multiples, prenez la longueur 5...

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.