Retour sur la 14e édition du SSTIC (2016) – Jour 1

Retour sur la 14e édition du SSTIC (2016) – Jour 1

Comme chaque année, des consultants XMCO ont eu la chance de pouvoir assister au SSTIC. La conférence se déroulait comme toujours à Rennes. La sélection des sujets retenus par le Comité de programme a encore une fois garanti un niveau particulièrement élevé en termes de qualité des présentations.

Cette série d’articles (Jour 2, Jour 3) propose un résumé des conférences auxquelles nous avons pu assister.


Conférence d’ouverture, par Brad Spengler

SLIDES / VIDEO / ARTICLE

Brad Spengler est le principal développeur du patch Grsecurity, qui permet de durcir le noyau Linux. Dans un premier temps, il a présenté les avancements réalisés depuis 2012 sur grsecurity:

  • KSTACKOVERFLOW, un système afin d’éliminer les stack overflow sous les architectures 64bits
  • RANDSTRUCT, une mesure afin de rendre aléatoire l’organisation des structures critiques en mémoire
  • HARDEN_IPC, un durcissement des objets IPC
  • DENYUSB, un système pour désactiver la reconnaissance des périphériques USB après le boot (ou pour la désactiver/activer temporairement)

Il a ensuite parlé du système RAP (Reuse Attack Protector) qui permet de rendre très compliqué, voire impossible, le ROP (Return Oriented Programming). RAP est implémenté sous la forme d’un plugin de GCC qui va limiter les fonctions qui peuvent être appelée à partir d’une certaine place, ainsi que les endroits auxquels le flot d’exécution peut retourner après avoir atteint la fin d’une fonction.

Dans un second temps, Brad Spengler a parlé de l’état de la sécurité informatique. Avec un regard assez critique à l’égard des pratiques du milieu, il a expliqué comment, selon lui, l’industrie ne prend pas les bonnes mesures de sécurité et a les mauvaises priorités. D’après lui, les acteurs de l’industrie devraient s’occuper à implémenter des vraies mesures de sécurité au lieu de tenter de mitiger les problèmes. Concrètement, il faudrait éliminer des classes de vulnérabilités plutôt que d’enchaîner indéfiniment les corrections de bugs.

 

Démarche d’analyse collaborative de codes malveillants, par Adrien Chevalier, Stéfan Le Berre (@heurs) et Tristan Pourcelot

SLIDES / VIDEO / ARTICLE

Devant le gros volume de malwares à analyser et le manque de ressources humaines, les agents de l’ANSSI ont conçu une plateforme nommée Polichombr permettant de traiter de ce  volume de façon efficace. Certains malwares étant simplement des versions modifiées d’autres malwares déjà connus, il peut être utile de faire le travail d’analyse en tenant compte des connaissances déjà collectées lors des précédentes analyses. Polichombr propose donc des fonctionnalités de stockage, de centralisation d’informations, de travail collaboratif et d’automatisation.

Afin de pouvoir classifier automatiquement les malwares, les auteurs ont conçu un algorithme nommé Machoc qui se base sur les caractéristiques du flot de contrôle du malware, c’est-à-dire sur le graphe des instructions assembleur tel que l’on peut le voir avec le logiciel IDA. Le résultat est ensuite haché avec un algorithme particulier, et ce hash peut être comparé avec d’autres hashes pour évaluer la ressemblance du malware avec les autres malwares précédemment analysés et enregistrés dans la plateforme, ce qui permet d’aider le reverseur dans son travail d’analyse.

 

Gunpack : un outil générique d’unpacking de malwares, par Julien Lenoir

SLIDES / VIDEOARTICLE

Julien Lenoir nous a présenté Gunpack, un outil d’unpacking de malwares développé en interne chez Airbus. L’outil permet  d’analyser les binaires Windows 32bits et utilise le langage de programmation Python. Gunpack fonctionne en instrumentant l’OS de l’intérieur et collecte le maximum d’informations sur la vie du processus étudié. Plutôt que de se baser sur un type d’information particulier, l’outil se veut généraliste et permet aux utilisateurs de le personnaliser en développant leurs propres scripts d’unpacking.

 

Cryptanalyse en boîte noire de chiffrement propriétaire : étude de cas, par Pierre Capillon

SLIDES / VIDEO / ARTICLE

Pierre Capillon nous a présenté le fruit de 6 semaines de rétro-ingénierie sur un firmware chiffré et obfusqué de 18 méga-octets. Il s’est montré très critique à l’égard des constructeurs qui développent leurs propres algorithmes de chiffrement et a présenté comment il avait réussi à déterminer le format du firmware : il s’agit d’un binaire ELF de 42 Mo, contenant un OS temps réel complet. Enfin, le reverse du firmware aura permis d’identifier des vulnérabilités concrètes (qui n’ont pas été communiquée par l’orateur).

 

Eurisko : développement d’une carte électronique sécurisée, par Arnaud Ebalard, Arnaud Fontaine (@arnaud_fontaine), David Diallo, Jean-Pierre Flori, Karim Khalfallah, Mathieu Renard (@gotohack) et Ryad Benadjila

SLIDES / VIDEO / ARTICLE

Plusieurs autres membres de l’ANSSI nous ont présentent comment ils ont développé une carte informatique sécurisée. Cette carte contient une chaîne de démarrage sécurisée via un composant sécurisé certifié EAL5+. L’EAL (Evaluation Assurance Level) est un système d’évaluation défini dans les Critère Communs.

 

Évolution et dé-évolution des systèmes multimédias embarqués, par François Pollet et Nicolas Massaviol

SLIDES / VIDEO / ARTICLE

À travers deux cas concrets de véhicules audités dans le cadre de leur travail chez Thalès, François Pollet et Nicolas Massaviol ont présenté leurs travaux de recherche sur la sécurité des systèmes multimédias embarqués dans les voitures. Ils ont montré comment les défauts de conception des bus CAN (Controller Area Network) rendaient possible le contrôle de fonctionnalités critiques de la voiture telles que le freinage à travers l’exploitation des boîtiers multimédias.

 

USB Toolkit, par Benoit Camredon

SLIDES / VIDEO / ARTICLE

Benoit Camredon a présenté son projet USB toolkit, un proxy USB matériel qui lui permet d’analyser le flux USB entre un périphérique et un système. Cela est entre autres utile lorsque l’on ne maîtrise pas le système. L’USB toolkit propose notamment un pare-feu USB, un keylogger, une fonctionnalité de rejeu de capture USB, ainsi qu’une API qui permettant de créer ses propres scripts pour analyser le flux USB.

 

Confusion de type en C++, par Florent Saudel

SLIDES / VIDEO / ARTICLE

Florent Saudel nous a présenté comment l’exploitation d’un type de vulnérabilité peu connu, la confusion de type, permet d’arriver jusqu’à l’exécution de code arbitraire. Cette faiblesse est à l’origine de 6 vulnérabilités publiées depuis début 2016.

Cette vulnérabilité provient de la conversion (casting) d’objets dans un autre type d’objets (appelé polymorphisme dans le paradigme de la programmation orientée objet). Cette faille est très répandue due à la complexité de l’organisation du code des gros programmes, et au besoin de faire un compromis sur la sécurité afin de ne pas sacrifier les performances. Florent Saudel prend l’exemple du projet WebKit dans lequel certaines classes peuvent contenir jusqu’à 300 classes filles, ce qui rend la vérification du type de l’objet compliqué ou coûteux en performance.

 

Composants logiciels vérifiés en F* : Poly1305, par Benjamin Beurdouche et Jean Karim Zinzindohoue

SLIDES / VIDEO / ARTICLE

Jean Karim Zinzindohoue a présenté le langage F* (prononcer « f star »). Ce langage fonctionnel est très fortement typé et les fonctions utilisent un système de précondition et postcondition qui permettent de vérifier la correction fonctionnelle du code, telles que par exemple les spécifications mathématiques pour les fonctions cryptographiques. Jean Karim nous présente ensuite un exemple d’utilisation de F* appliqué à l’algorithme Poly1305 afin d’en faire une implémentation dont la fiabilité est mathématiquement prouvée. F* permet notamment de se protéger contre les dépassements mémoire, les integer overflow, et de vérifier que les chemins d’exécution de code sont indépendants des secrets.

 

My friends botnet: How to use your friends to perform Cyber Int ?, par Amaury Leroy

SLIDES / VIDEO / ARTICLE

Amaury Leroy nous raconte sa quête pour un système de crawling de l’internet, et nous a présenté la solution qu’il a mis en place. Après avoir essayé sans succès sur Amazon, un VPS à l’étranger ou encore Tor, il n’a pas pu aboutir à un système efficace à cause de problèmes de limitations de requêtes ou de performances. Sa solution est d’utiliser un réseau de Raspberry Pi, distribué chez ses amis, afin d’effectuer les requêtes et de contourner les limitations qu’il a précédemment rencontrées.

 

Broken Synapse, par Ivan Kwiatkowski

SLIDES / VIDEO / ARTICLE

Ivan Kwiatkowski nous présente comment l’exploitation de vulnérabilités au sein du jeu vidéo Froken Synapse lui a permis d’augmenter ses chances de gagner lors de parties contre d’autres utilisateurs en lignes. Après avoir analysé les communications réseau du jeu avec le logiciel Wireshark, puis avoir fait de la rétro-ingénierie sur le binaire du jeu, il est parvenu à écrire un émulateur et décompilateur du bytecode utilisé pour le jeu afin d’en retrouver la source. Il a ensuite pu écrire son propre script qui a été chargé dans le jeu et qui lui a permis de le modifier afin de lui procurer un avantage.

 

Un FizzBuzz pour le cyber, par Eric Jaeger et Olivier Levillain

SLIDESVIDEO / ARTICLE

Eric Jaeger et Olivier Levillain ont présenté une méthode novatrice de recrutement baptisée « Cyber Fizz Buzz », en référence à l’exercice « Fizz Buzz » communément utilisé dans le cadre du recrutement de programmeurs.

Certaines questions issues du test « Cyber Fizz Buzz » semblent nécessiter des connaissances relativement pointues dans différents domaines de la sécurité ou de l’informatique. Cependant, ce sont l’état d’esprit du candidat, et sa réaction face à aux problèmes qui lui sont présentés qui sont évalués, et non ses connaissances brutes.


Cert-XMCO