Making network protocols go crazy

Aller au contenu | Aller au menu | Aller à la recherche

SSTIC 2013 - jour 1

Innovation in symmetric cryptography

Joan Daemen

En 1988/1989 : la crypto se résumait aux stream ciphers (basés LFSR) contre les block ciphers (exemple : DES). Ensuite, l'orateur parle de vieux algorithmes qui furent cassés par lui-même ou d'autres.

C'est une conférence faite par un crypto pour les cryptos. Je n'ai donc pas tout suivi.

A noter que l'orateur est un belge parlant le français, mais qu'il préfère faire sa présentation en anglais dans une conférence franco-française avec un public de français. Je trouve que c'est à la limite du manque de respect. Voilà pour l'intro.

Mise a plat de graphes de flot de contrôle et exécution symbolique

Eloi Vanderbeken

Ou comment débrouiller automatique du code brouillé (différent du code obfusqué). L'idée est de retrouver les fonctions, et en donner un graphe d'exécution (mise à plat de flot de contrôle).

Plusieurs approches :

  • dynamique avec suivi d’exécution
  • dynamique avec suivi de données
  • statique

L'approche statique est la plus exhaustive et donne les meilleurs résultats, même si les résultats sont parfois abstraits et l'opération complexe et lourde. Une première passe d'analyse statique est faite, suivi d'une exécution symbolique qui permet de simplifier le CFG.

Polyglottes binaires et implications

Ange Albertini (Corkami)

Un outil se sécurité doit comprendre plusieurs langages pour bien protéger les systèmes d'aujourd'hui : infection via une page HTML, exploitation par un code Java, installation d'un binaire Windows PE.

L'orateur exploite les faiblesses de format des documents usuels (PE, PDF, ...) pour ajouter du code caché. Par exemple, PDF autorise 1024 octets au début d'un document PDF. Démo : ajout de notepad.exe dans cet espace. Le document s'ouvre, et notepad.exe s'exécute ...

Autre exemple : un document PDF qui donne un contenu différent en fonction de la visionneuse, à cause de l'interprétation du standard (summatra, Chrome, Adobe).

Puis démo d'exécution de code HTML dans un document PDF (placé dans une variable PDF). Le document s'ouvre, et le HTML peut s'exécuter dans un navigateur.

L'intérêt de ces techniques :

  • évasion de filtres (anti-virus, réseau)
  • contournement de la SOP (pour HTML/JavaScript)
  • exécution d'un fichier sain mais qui embarque un document malveillant (exploitant une faille)

Ces attaques sont connues sous le terme de "confusion de type".

Recompilation dynamique de code binaire hostile

Sebastien Josse

Les malwares sont de plus en plus difficiles à analyser avec les outils "OTS". Il y a beaucoup d'outils, mais bien souvent trop facilement détectés, ou mal adaptés.

Idée : un outil le plus générique possible pour donner le plus d'information possible sur un malware. Par exemple, automatisation du unpacking. Le but est d'automatiser le plus possibles les tâches ingrates.

Création de l'outil VxStripper, un outil d'instrumentation d'un processeur émulé (QEMU). Le but est de décompiler le code et de générer du LLVM recompilable.

Entrée : unpacking puis normalisation. Sortié : un binaire recompilé en LLVM.

QEMU est utilisé pour sa capacité de traduction de binaire en LLVM. Traduction qui est très efficace, selon l'orateur. L'outil supporte actuellement une dizaine d'outils de unpacking. Outil non-publie (DGA oblige).

Parsifal : un parseur robuste et efficace

Olivier Levillain

Un outil pour parser des protocoles binaires. But : écrire des parseurs à l'aide de code concis. Ecrit en OCaml, pour des raisons de performance (peut gérer des Go de données).

C'est du Perl Net::Frame, en moins bien :) Voir aussi binpack dans l'IDS Bro.

nftables

Eric Leblond

Evolution de netfilter en terme de performance et évolutivité. Deux capacités qui manquaient dans netfilter et comblées par nftables. nftables est développé par Patrick McHardy.

Autre ajout : un nouveau langage, accessible par une bibliothèque.

Compromission d'un terminal sécurisé via l'interface carte à puce

Guillaume Vinet

Carte a puce offrant des fonctions de sécurité (signature, chiffrement). C'est un excellent coffre fort numérique. C'est de plus en plus utilisé pour nos PC. Problème : saisie du code PIN sur un PC (environnement faiblement sécurisé). Solution : utilisation d'un terminal sécurisé type bancaire. Ainsi, le code PIN ne transite plus sur le PC.

Mais si un logiciel malveillant est installé, il peut exécuter les fonctions de sécurité de la carte à puce (mais ne peut toujours pas voler le code PIN) via l'utilisation du protocole de communication. L'idée est donc d'attaquer le terminal en utilisant le protocole ISO 7816-3. L'orateur a trouvé un certain nombre de vulnérabilité dans ce protocole comme des fuites d'information mémoire.

Pour implémenter ses tests, l'orateur a développé un émulateur de cartes à puces. Il a utilisé une plateforme Arduino. Architecture :

  Raquette ISO 7816-3 <-> Arduino <-> Server Python sur PC

En exploitant certaines failles, il a réussi à dumper le code binaire du firmware. Une autre vulnérabilité permet de récupérer jusqu’à 17 octets de la dernière réponse protocolaire. En exploitant cette vulnérabilité pour tenter de récupérer le code PIN, on n'obtient que du zéro : la protection du code PIN est bien effective au niveau du terminal.

A noter que ce protocole ainsi que l'architecture processeur des terminaux bancaire est très similaire sur les téléphones portables (carte SIM) et les dispositifs OTP. Du coup, ses travaux pourraient être adaptés à ce domaine.

Attaques applicatives via périphériques USB modifiés

Benoit Badrignans

L'idée : piéger des claviers/souris/clé USB à des fins malicieuses (infection, vol de données, ...).

Exemple de faille sous Linux : élévation de privilèges au branchement d'une clé USB avec un filesystem Mac malformé (LDM). Au niveau du matériel (Hub, root Hub), il est possible de sniffer et de faire du fuzzing.

Plateformes de tests disponibles : Micro-controleurs (SMSC, Cypress), téléphones portables (Android + USB-Gadget), outils de pentest prèts à l'emploi (Facedancer USB, ...).

Démo d'une clé USB "piégée". Elle usurpe un USB descriptor autorisé sur la machine victime, et contourne le fait qu'elle soit montée en read-only pour voler un fichier. Le périphérique USB est composite (à la fois mass storage et clavier). Il possède aussi un Linux embarqué ;)

Les attaques sont resté à haut niveau (couche applicative), et pourtant on peut déjà faire beaucoup de choses.

Red October

Nicolas Brulez

Opération Aurora de 2009. Red October, c'est en 2013. C'est une campagne de cyber espionnage complète, basée sur 34 modules. Débutée en Mai 2007 ... Certains modules permettent d'injecter une backdoor sur les téléphones mobiles. D'autres de faire de la récupération de données sur des clés USB.

La cible de ces campagnes était principalement les organismes étatiques.

Étapes d'infection :

  • email piégé (spear phishing)
  • pièce jointe avec un doc Word ou Excel malicieux (que des failles connues exploitées)
  • installation d'un dropper permettant la connexion au serveur C&C

Le dropper extrait et exécute le payload malicieux. Pas besoin de 0day, les gens ne patchent pas. Les fichiers de payload sont chiffrés sur le disque, et déchiffrés uniquement en mémoire au moment de l'utilisation (connexion au serveur C&C).

Attaques lancées en moyenne tous les 2 mois (le temps de mettre à jour le soft). Kaspersky a lancé une analyse par sinkhole : "vol" d'un nom de domaine utilisé par Red October et installation d'un serveur pour récupérer des statistiques.

Les statistiques montrent que le pays le plus "infecté" est la Suisse ... Les tâches exécutées sont fournis par le serveur C&C sous forme de DLL, et sont uniquement stockées en mémoire.

Il y a un grand nombre de catégorie de modules : recon, spreading, email, exfiltration, mobile, ...

L'embarqué entre confiance et défiance

Aurélien Francillon

Un pot pourri de ce qu'on croyait impossible, mais qui le devint, en terme d'exploitation de vulnérabilités sur les systèmes embarqués. Exemple de processeur sur base d'architecture de Harvard.

Un PC n'est pas un PC : c'est un empilement de systèmes embarqués. Exemple : le disque dur possède un système embarqué. On peut le mettre à jour grâce à un simple utilitaire, et les firmwares ne sont pas signés. Démo de backdoor de disque dur pour rendre accessible les données depuis Internet, en utilisant le protocole HTTP. C'est beau.

Excellente conf.

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet