SecurityInsider
Le blog des experts sécurité Wavestone

Compte-rendu de GreHack 2016




Introduction

Le 18 novembre dernier se déroulait la 4ème édition de la conférence GreHack à Grenoble. Cet évènement, purement axée sur la sécurité, accueillait 300 participants pour une journée entière de conférences, suivie par son traditionnel CTF se déroulant la nuit et regroupant plus de 30 équipes. En complément, des workshops sur des outils divers et variés étaient organisés dans la soirée (radare2, miasm2, scapy, IVRE, ZAP, outils de crypto en boîte blanche, de SDR, et introduction au crochetage de serrures).

KeyNote : Protecting Data on Smartphones & Tablets with Trusted Computing

Stefan Saroiu, chercheur chez Microsoft Research, présente le travail de son équipe sur la protection des données sur plateformes mobiles.
Le nombre de smartphones et tablettes est en constante expansion, et la sensibilité des applications s’y exécutant augmente également. Par exemple, des banques proposent aujourd’hui des applications permettant de prendre en photo des chèques destinés à être encaissés sur le compte de l’utilisateur de l’application. La question de la confiance dans l’authenticité et la confidentialité des données manipulées par les plateformes mobiles devient donc un fort enjeu. 
Des solutions telles que les TPM (Trusted Platform Module) permettent de garantir un certain niveau de confiance dans l’intégrité d’une plateforme. Ces puces sont aujourd’hui présentes dans de nombreux postes de travail (fixe ou portable) et serveurs. Néanmoins, à cause de contraintes d’espace, de coût et d’autonomie, les smartphones actuels ne n’embarquent pas une telle technologie.
Le projet fTPM (pour firmware TPM) de Microsoft Research vise implémenter les fonctions d’une puce TPM de manière logicielle, tout en garantissant un niveau de sécurité équivalent. Cette solution s’appuie sur des primitives de sécurité offertes par certains mécanismes introduits dans certaines architectures, telles que TrustZone dans les SoC ARM, ou SGX (Software Guard Extensions) dans les SoC Intel. Un travail poussé de conception a été également réalisé afin de garantir la réactivité du mécanisme, afin de le rendre transparent pour l’expérience utilisateur.
Dans les dernières minutes de la présentation, Stefan Saroiu présente également le projet Sentry, visant à implémenter un chiffrement total de la mémoire d’un smartphone ou d’une tablette durant son exécution, afin de le protéger contre une attaque de type coldboot par exemple. Afin de réussir cette prouesse, les pages mémoires stockées dans la RAM ne sont déchiffrées qu’au moment de leur lecture par le CPU, et chiffrées de nouveau avant leur réécriture dans la RAM. Pour cela, AES a été implémenté de telle sorte que seuls les registres du CPU et le cache L2 soit utilisé comme mémoire temporaire lors de l’exécution de l’algorithme.

BtleJuice : the Bluetooth Smart Man-In-The-Middle Framework

Damien Cauquil, chercheur senior au CERT-UBIK (Digital Security), démontre dans sa présentation les faiblesses pouvant apparaitre sur objet connectés utilisant le protocole Bluetooth Low Energy.
Le protocole Bluetooth Low Energy (ou Smart Bluetooth) et très populaire dans le monde de l’IoT, et permet les communications entre et avec des objets connectés. Il s’agit d’un sous ensemble du standard Bluetooth 4.0+, plus léger, permettant des implémentations peu consommatrices en énergie. Côté sécurité, le protocole intègre des mécanismes d’authentification et de chiffrement. 
Lors de l’appairage de deux périphériques, ceux-ci s’échangent des informations concernant les interfaces dont ils disposent (clavier/pavé numérique permettant de composer un code, écran permettant de l’afficher, etc…). Une clé temporaire est alors dérivée du code PIN échangé, puis les périphériques décident d’une clé à utiliser afin de chiffrer le reste des échanges. Cependant, lorsque les interfaces des périphériques ne disposent pas d’interface permettant d’échanger un code PIN, le protocole fonctionne en mode dégradé (« Just Works »), et l’échange des clés de chiffrement n’est pas authentifié.
Damien Cauquil présente alors qu’il est plus simple d’effectuer une attaque de type Man-In-The-Middle qu’une simple écoute du trafic, et expose BtleJuice (https://github.com/DigitalSecurity/btlejuice), un framework facilitant la mise en place de MitM sur les échanges Bluetooth Low Energy. Ecrit en Node.js, le framework dispose d’une interface Web permettant d’intercepter faciliter les communications, et permet également d’enregistrer des fonctions de callbacks écrites en Python, permettant de modifier des échanges à la volée.
La présentation termine par diverses contremesures possibles pour ce type d’attaque, dont la principale est reste la mise en place de chiffrement et d’authentification au niveau applicatif. Cependant, cette mesure casse l’interopérabilité entre différents composants qui n’aurait pas été développés par les mêmes entités.

Arybo : Make expression simplification great again

Quarkslab  présente un nouvel outil permettant de simplifier (au sens : « rendre synthétique et simple à comprendre pour un humain ») des expressions arithmético-booléennes, dans le but principal d’aider le reverse-engineering de programmes obfusqués.
Actuellement, il existe des logiciels de calcul formel permettant de simplifier aisément des expressions arithmétiques, c’est-à-dire composées d’opérateurs mathématiques classiques tels que l’addition, la multiplication, la soustraction, etc. Par exemple, l’expression « (x+7x)*3 » peut être simplifiée en « 24x ».
De même, des logiciels existent également pour simplifier des expressions booléennes, c’est-à-dire composée d’opérateurs tels que « ET », « OU », « OU EXLCUSIF » (XOR), « NON ». Par exemple, l’expression « (a ET (NON b)) OU ((NON a) ET b » peut être réécrite en « a OU EXCLUSIF b ».
Les expressions composées des deux familles d’opérateurs sont appelées « arithmético booléenne ». A l’heure actuelle, la plupart des outils permettant de simplifier ce type d’expression sont basés sur du pattern matching, c’est-à-dire en appliquant des formules de simplification connues sur des sous-parties de l’expression à simplifier. Cependant, ces outils ne peuvent simplifier des formules ne correspondant à aucun pattern. De fait, plusieurs programmes obfusqués (malware, DRMs, …) tirent parti de ce manque d’outillage pour transformer des opérations simples en des expressions arithmético-booléennes complexes équivalentes, afin de complexifier le reverse-engineering.
Quarkslab propose un nouvel outil, nommé Arybo, permettant de manipuler ce type d’expression et de les simplifier efficacement. Leur approche est basée sur le bit-blasting, c’est-à-dire que toute variable est traitée comme un vecteur de bits, et les opérations arithmétiques classiques sont donc recodées en opérations booléennes sur chaque bit. De plus, les expressions sont manipulées dans une forme canonique, ce qui permet de comparer simplement deux expressions (elles sont équivalentes ssi elles s’écrivent de la même manière dans leur forme canonique).

Interludes : {Scapy/Radare2} en 15 minutes

Guillaume Valadon et Julien Voisin présentent, en 15 minutes chacun, les fonctionnalités principales des outils scapy et radare2
Scapy est un outil permettant d’intercepter, disséquer, visualiser, modifier et rejouer des paquets réseaux via des commandes Python. Guillaume Valadon fait un tour des fonctionnalités de scapy en illustrant rapidement les applications possibles pour ce véritable couteau-suisse du réseau.
Radare2 est un framework de reverse engineering permettant de désassembler, extraire le graphe de flot de contrôle, débugger et patcher des binaires exécutables (et autres formats). Malgré son interface peu attrayante, Julien Voisin nous montre comment utiliser radare2 via la présentation d’un cas « pratique », pour reverser un shellcode polymorphique à 3h du matin.

Is Docker Secure ?

Manideep Konakandla, chercheur à l’Université Carnegie Mellon, présente une partie de ses recherches sur la sécurité de Docker, et montre les faiblesses dans la mise à disposition des images Docker et du moteur d’exécution Docker en lui-même.
En effet, Docker met à disposition une banque publique d’images, principalement maintenue par la communauté, de manière similaire à GitHub. Cependant, aucun processus de contrôle n’est en place afin de vérifier la légitimité du contenu des images hébergées. De plus, ces images ne sont pas mises à jour de manière suffisamment récurrente : lors de l’étude réalisée, 70% des images présentes sur la plateforme (et 30% des images officielles) étaient affectées par des vulnérabilités publiques.
De plus, la configuration par défaut de Docker est relativement peu sécurisée. En effet, les logiciels lancés dans les conteneurs s’exécutent avec les privilèges root. De plus, des mesures prévenant le déni de service font défaut : aucune limite de création de processus n’est en place, et la mémoire utilisable par un conteneur n’est pas limitée. Enfin, aucun cloisonnement réseau n’est en place par défaut : les conteneurs peuvent communiquer entre eux, et utilise le même pont réseau, laissant la possibilité aux conteneurs d’intercepter le trafic réseau à destination des autres conteneurs.
En conclusion, il est principalement recommandé de systématiquement appliquer un durcissement système sur les conteneurs utilisés, de n’utiliser que des images signées numériquement et de scanner régulièrement ses images à la recherche de composants vulnérables. Aussi, afin de limiter les risques en cas de compromission, il est une bonne pratique de regrouper des conteneurs par machine virtuelle en fonction de leur niveau de confiance. Enfin, des procédures de patch management, d’audit de sécurité, etc. doivent être appliquées au même titre que pour des systèmes classiques. 

Gorille : Another approach to binary analysis

Jean-Yves Marion, chercheur au LORIA (Laboratoire lorrain de recherche en informatique et ses applications) présente les résultats des recherches et outils développés par son laboratoire dans le domaine de l’analyse de binaire. 
Lors de l’analyse d’un malware, un des objectifs possibles peut être la classification, c’est-à-dire la découverte de similitudes avec des binaires connus. Cela permet par exemple de détecter le caractère malveillant d’un nouveau malware développé à partir d’une souche connue, ou bien de construire des signature plus précises en se basant sur plusieurs variantes d’un même malware.
Cependant, la plupart des codes malveillants utilisent des méthodes d’obfuscation de leur code, ou des techniques rendant complexe leur désassemblage à l’aide des outils les plus courants. Ces techniques permettent aux malwares d’éviter la détection par les solutions antivirales, et de rendre complexe leur analyse par un expert. Une technique commune d’obfuscation employée par les malwares consiste à stocker le code malveillant à exécuter sous forme chiffrée, et de le déchiffrer durant l’exécution du programme. Cette technique peut même être employée plusieurs fois pour un même programme de manière imbriquée (i.e. le code déchiffré permet de déchiffrer une autre partie code, etc…). Dès lors, il est assez évident qu’une simple analyse statique du binaire ne permet pas d’identifier le malware exécuté, ni d’en extraire un graphe de flot de contrôle (CFG).
Dans le cadre du projet CoDisasm, un outil du même nom a été développé afin de répondre entres autres à cette problématique d’obfuscation. L’outil exécute dans une sandbox et instrumente le programme à analyser, afin d’en extraire des « vagues » (« waves » dans le texte d’origine), c’est-à-dire des états du programme correspondant à chaque étape de la désobfuscation. Une extraction du CFG est alors réalisée sur chacune des variantes du binaire obtenues, en utilisant les traces d’exécution enregistrées pour guider le désassembleur.
Une fois le CFG du malware extrait, une abstraction de celui-ci est réalisée afin de pouvoir le comparer à celui d’autres binaires. En éliminant les parties CFG correspondant à des fonctionnalités inoffensives connues (ex. fonctions de la libc), l’outil Gorille est par exemple capable de détecter de manière entièrement automatisée que les vers StuxNet et Duqu partagent plus de 90% de similitude.

Improving dm-crypt performance for AES XTS mode through extended request

Levent Demir, doctorant à l’INRIA, présente les évolutions de travaux sur l’amélioration des performances de l’implémentation de l’algorithme AES-XTS.
dm-crypt est un système de chiffrement de disques inclus dans le noyau Linux depuis sa version 2.6 qui embarque des modes de chiffrement avancés tel que le XTS. Ce dernier, principalement utilisé dans des outils de chiffrement de disque, est un mode complexe incluant des opérations de XOR, chiffrements AES-ECB et multiplications dans un corps fini. Il s’agit du plus récent algorithme recommandé par le NIST pour le chiffrement de disques.
Etant un mode de chiffrement relativement récent, l’AES-XTS n’est pas supporté par les coprocesseurs cryptographiques présents dans la plupart des systèmes embarqués. C’est notamment le cas de la puce Atmel SAMA5D3, qui a servi de référence aux travaux menés. Le firmware de celle-ci a tout d’abord été modifié afin de supporter ce mode de chiffrement. 
De plus, une analyse du code source de l’outil dm-crypt a permis la découverte de limitations liées à des valeurs écrites en dur dans le code source, celles-ci n’ayant historiquement jamais été modifiées pour des raisons de compatibilité descendante. Une réimplémentation d’une partie de l’outil dm-crypt couplée à une modification du firmware Atmel ont ainsi permis une amélioration d’un facteur deux des performances de chiffrement.

Derniers mots

La conférence GreHack a de nouveau fait mentir son slogan ("New is not always better”) en réalisant une édition de qualité, en progression constante depuis son existence. Les sujets traités par les conférences étaient globalement d’un haut niveau technique, et touchaient des domaines variés de la sécurité, aussi bien pratiques que théoriques. L’aspect international de la conférence était encore une fois présent, marqué notamment par l’anglophonie des présentations et la variété des origines des speakers et intervenants.
Pour ma part, j’y ai passé une excellente journée, et serai ravi d’y retourner l’an prochain ! Merci au program committee de GreHack pour une sélection de conférences de qualité, à @commial et @serpilliere pour leur atelier épique sur Miasm (mélange très équilibré entre workshop technique et numéro de stand-up comedy), et enfin à l’association Securimag en charge l’organisation de l’évènement, et qui a réalisé un CTF de qualité (dans lequel il était notamment possible de se confronter la sécurité d’une … cabine téléphonique) !


Maxime Meignan

Aucun commentaire:

Enregistrer un commentaire