Retour sur la Deepsec 2016

Sécurité des applications
Retour sur la Deepsec 2016

Nous avons eu l’occasion de participer à la conférence Deepsec 2016 à l’Imperial Riding School de Vienne les 10 et 11 Novembre 2016.

Vous trouverez ici quelques retours sur des conférences qui nous ont intéressés, de par leur originalité ou leur contenu intéressant.

 

Advanced Concepts for SMM Malware

Sebastian Schrittwieser et Julian Rauchberger nous ont montré un nouveau mode d’infection : l’infection hardware via le System Management Mode.

Ce mode CPU est à l’origine destiné aux appels critiques tels que les signaux d’alimentation ou d’alerte de température, et permet de suspendre l’état du système pour exécuter des actions nécessitant des privilèges élevés avec un accès direct aux interfaces de tous les périphériques, et ce sans aucune protection de la mémoire (pas d’ASLR, pas de pagination…).

Ce type d’attaque se rapproche des infections via le bios UEFI mais cette fois via des appels SMI : System Management Interrupt en plusieurs étapes :

  • Appel SMI : sauvegarde le contexte actuel
  • Exécution de code SMI : accès en lecture et écriture à la SMRAM : infection par un malware
  • Appel RSM (Resume System Management) : reprise du contexte

Les challenges principaux ont été :

  • La création d’un laboratoire fonctionnel, qu’ils ont choisi de développer à base de la solution de virtualisation Qemu en version 2.5.
  • La génération d’un code ASM 16bits avec des instructions x64 en « long mode », peu ou mal documentées par Intel.
  • Générer un appel SMI : en passant par les appels APMC / APIC
  • S’attacher aux fonctions et à la mémoire du système d’exploitation pour que le malware puisse procéder à des écoutes des actions de l’utilisateur
  • Rester invisible : écraser l’IDT (Interrupt Description Table) pour effacer les traces d’appels suspects

Conclusion :

Plusieurs recherches sur les attaques SMM avaient été publiées en 2010 (Duflot), 2014 (Gambit) et en 2015 (Kallenberg et Kovah) mais cette fois les chercheurs vont plus loin car ils ont publié un framework de développement de malware SMM : le framework Longkit.

La menace de ce type d’infection hardware est grandissante malgré le fait qu’elle soit difficile à mesurer. Il reste cependant encore beaucoup de recherches à mener sur ce sujet.

 

Go Hack Yourself… Or Someone Else Will

Frans Rosén (Detectify) a pu nous faire un retour intéressant sur sa participation aux bugs bounties et sa démarche.

Parti d’un bug bounty Paypal (récompense offerte lors de la découverte d’une vulnérabilité) au cours duquel il avait réussi à usurper un autre compte et démontrer la possibilité d’un vol financier, celui-ci s’intéresse maintenant à toutes les grandes sociétés offrant une récompense.

Il a également noté que les sociétés participant à des bug bounties sont en majorité fair play pour la remise des récompenses et la correction des vulnérabilités, ce qui n’est pas forcément le cas pour d’autres entreprises (celles qui ne proposent pas ce type de programme, du coup), qui parfois ne veulent pas corriger les vulnérabilités remontées.

Un focus sur le fonctionnement des API Facebook Connect nous a surpris, de par les faiblesses de validation des URL utilisées en paramètres et l’exploitation d’une vulnérabilité de redirection non contrôlée (Open URL Redirect).

Ce type de vulnérabilité a pu être trouvé sur de grandes sociétés telles que Zendesk, Linkedin et Vimeo, via l’injection d’une combinaison de backslashs et d’arobases dans les URL utilisées.

En effet, ces caractères ne sont pas documentés dans la RFC, ce qui a facilité des erreurs de développement dans la validation des URL.

Frans a ensuite donné quelques astuces pour la recherche de contournement de filtres et de vulnérabilités d’injection Cross Site Scripting :

  • La double redirection : utilisation de deux redirections chainées pour passer à travers un filtre limitant le nom de domaine
  • Utilisation des scripts hébergés en externe : il est possible de passer à travers les protections type Content Security Policy (CSP) via des JavaScripts hébergés chez un CDN ou chez Google permettent parfois l’exécution de code XSS via les paramètres type « callback » 

Ensuite, il a pu montrer un vecteur d’attaque intéressant : la récupération d’un sous-domaine abandonné par une société afin de mener des actions malveillantes.

En parcourant régulièrement les sous-domaines existant via les archives DNS publiques type RateIP, Virus total ou encore Similarweb, il a pu relever (de par l’absence de résolution IP) des blogs abandonnés (type Wordpress.com) ou des campagnes marketing terminées (par exemple sur Heroku) et recréer un compte sur les sites publics afin de prendre le contrôle du nom DNS et de son contenu.

 

CSP Is Dead, Long Live Strict CSP!

Lukas Weichselbaum travaillant actuellement chez Google nous a présenté les concepts du CSP (Content Security Policy) permettant de restreindre l’origine du contenu sur une page web afin de se protéger principalement des vulnérabilités de type Cross Site Scripting par un simple ajout d’un entête coté serveur. Cet entête sera alors ensuite pris en compte par le navigateur (si celui-ci est compatible).

 

 

Alors que les premières versions (CSP1 et CSP2) étaient relativement contraignantes à implémenter et très facilement contournables (suite à une mauvaise configuration), la version 3 apporte son lot de nouveautés non négligeable. Il est maintenant possible d’ajouter un aléa unique de type « nonce » et il n’est donc plus nécessaire d’implémenter un système de listes blanches. La directive « strict-dynamic » permet quant à elle d’éviter de rendre non fonctionnel certains appels JavaScript (par la propagation de liens de confiance).  Actuellement seuls Chrome, Opera et Firefox supportent cette dernière version.

 

Google a d’ailleurs commencé à implémenter cette CSP3 sur différents services accessibles au grand public. Ils ont également mis à disposition un outil pour évaluer la robustesse des règles CSP mises en place ici.

N’hésitez pas à lire les slides de présentation à l’adresse suivante pour plus d’informations.

 

Java Deserialization Vulnerabilities – The Forgotten Bug Class 

Matthias Kaiser (Code White) a présenté une nouvelle fois la vulnérabilité de désérialisation Java liée à un bug connu depuis plus de 10 ans dans énormément de produits.
Cependant, nous avons noté quelques points intéressants pour simplifier la recherche de cette vulnérabilité :

  • Cibler les services Java RMI / JMX / JMX ainsi que le module Viewstate JSF est un bon point de départ car ceux-ci sont souvent vulnérables à la désérialisation
  • La détection d’objets sérialisés est facilitée par la recherche du code Magic « AC ED »
  • Les fonctions Java liées à ObjectInputStream ne valident pas les paramètres passés et tout objet est désérialisé même s’il y a une exception. S’intéresser à la fonction readObject() en particulier est un bon point de départ pour un audit de code.

 

Nous avons noté que ce type de vulnérabilité reste présent dans de nombreux produits encore développés aujourd’hui, et que les auteurs de ces programmes ne semblent donc pas suffisamment sensibilisés.

 

The Perfect Door And The Ideal Padlock

 


Cette conférence de Deviant Ollam (The CORE Group) nous a transporté dans son monde particulier : l’ouverture de porte et de cadenas.

Non ici il ne s’agit pas de lockpicking classique, mais plutôt de déjouer tout mécanisme afin de provoquer l’ouverture, sans forcément s’intéresser à la serrure (mécanique ou électronique).

Nous avons pu voir de nombreux scénarios pour lesquels le speaker a pu ouvrir notamment des cadenas de grilles ou des portes liés à des sites protégés tels que des sites de traitement des eaux, ou encore des portes d’établissement bancaires ou sensibles.

Il a montré que parfois il n’est pas nécessaire d’avoir du matériel de serrurier pour ouvrir une porte. Il a démontré qu’il suffit d’utiliser :

  • Un morceau de métal d’une canette pour ouvrir un cadenas

 

 

  • Un fil de fer (trouvé dans une poubelle à proximité) pour ouvrir une porte avec la poignée intérieure depuis l’extérieur d’un bâtiment

  • Un appui sur une « bombe à air », la fumée d’une cigarette (ou en crachant du whisky, cf. son retour d’expérience J) depuis l’arrière de la porte pour déclencher un détecteur de mouvement à l’intérieur.
  • Une radiographie ou un outil coudé pour ouvrir une porte claquée

 
Ses démonstrations surprenantes ont également fait part de nombreux comportements humains qui ont parfois largement facilité son entrée : l’absence d’interrogation lors de la rencontre avec un personnel qui ne le connaissait pas, l’absence de verrouillage d’une porte, et dans la grande majorité des cas, des défauts dans l’installation des portes : ouvertures trop grandes autour de la porte, poignées ou verrous mal placés, gonds des portes du mauvais côté…

 

 

Of Mice and Keyboards: On the Security of Modern Wireless Desktop Sets

Après une présentation des différents outils utilisés et des précédentes recherches (KeySweeper, Mousejack,…) dans le domaine des périphériques sans fils de type souris et claviers, Gerhard Klostermeier nous présente ses résultats sur les claviers qui chiffrent les communications en AES.

Voici ci-dessous un résumé des différentes attaques possibles sur ces équipements sans fils (hors Bluetooth) :

  • Insufficient Protection of Code and Data
      > Accès trivial au bus SPI
      > Extraction et manipulation du firmware
      > Certains équipements disposent d’une clé définie en usine qu’il n’est pas possible de changer
  • Mouse Spoofing Attacks
      > Exploitation des communications sans chiffrement pour les souris sans fil
      > Permet d’envoyer à distance des mouvements et clic de souris et compromettre un équipement (via Crazyradio PA par exemple)
  • Replay Attacks
      > Attaque par rejeu de requête sans en comprendre le protocole
      > Tous les claviers testés sont vulnérables à cette attaque
      > Permet par exemple de capturer le mot de passe entré et de le rejouer par la suite.

  • Keystroke Injection Attacks
      > Récupération automatique de la clé de chiffrement AES par une simple écoute (key release packet).
      > Injection possible de frappes sur les claviers de marques Cherry et Perixx en récupérant la clé AES via un accès SPI.

Pour en savoir plus cliquez-ici.

 

badGPO – Using GPOs for Persistence and Lateral Movement

Après un bref rappel sur l’utilité des GPOs (Group Policies), Yves Kraft et Immanuel Willi nous présentent une manière de les utiliser afin d’infecter un domaine de manière persistance en mémoire sur des serveurs critiques et cela de manière automatisée.

Différents modules présents dans le Framework EMPIRE ont été développés dans ce but afin de créer automatiquement la GPO. Il est par exemple ensuite possible de déployer un malware, de rechercher un fichier précis ou encore de modifier des paramètres de configuration sur l’ensemble des serveurs et poste de travail du domaine.

Ces différents modules sont cependant utilisables lorsque nous disposons déjà des droits Administrateurs du domaine.

La présentation est disponible ici.

 

Smart Sheriff, Dumb Idea: The Wild West of Government Assisted Parenting


Abraham Aranguren & Fabian Fäßler de la société Cure53 nous ont présentés ici un retour d’expérience d’un test d’intrusion sur une application mobile dénommée Smart Sheriff développée à la demande du gouvernement sud-coréen afin de protéger les enfants de contenus illicites. Son installation a été rendue obligatoire lors de l’achat d’un smartphone.

Cependant de nombreuses vulnérabilités ont été détectées :

  • Défaut d’implémentation de TLS sur les URLs appelées. A la place, c’est l’utilisation d’un simple XOR avec un mot de passe stocké dans l’APK Android qui avait été choisi. Cela permet donc trivialement d’accéder à l’ensemble des données envoyées.
  • Fuite d’informations : Récupération du numéro des parents à partir du numéro d’un enfant. Il est ensuite possible de demander à l’application le mot de passe du parent protégé également via un XOR comme précédemment.
  • Défaut de mise à jour : Utilisation d’une version de Tomcat obsolète.
  • Contournement trivial des restrictions sur les URLs

  • XSS, injections SQL ….

Après un test de contrôle non concluant, l’application a été supprimée du Store. Cependant, celle-ci est réapparue quelques temps après sous un autre nom avec une simple modification de l’affichage.

Le rapport d’intrusion est d’ailleurs disponible à l’adresse suivante (test initiale et test de contrôle) ainsi que les slides de la conférence : lien 1 / lien 2 / lien 3

Enfin, une autre application mobile a été testée. Celle-ci est appelée Smart Dream et souffre de nombreux défauts. Il a par exemple été possible d’obtenir de nombreux messages envoyés par des enfants sud-coréens directement depuis internet.

 

Retour sur la conférence en général

Nous repartons de cette conférence en ayant pu participer à des présentations riches et très intéressantes sur les 34 proposées dans 2 salles (left & right pirouette), le tout dans un cadre agréable et parfaitement bien organisé.

Le tarif d’entrée est toutefois assez onéreux (~700€ en Early booking pour 2J) et l’ambiance geek/décalée (que nous avons l’habitude de voir sur les autres conférences) pas assez présente. Notons qu’il est également possible de s’inscrire à deux jours de training supplémentaires avant la conférence pour un total de ~2000€.

Une expérience à renouveler !


Badge d'entrée à la conférence DeepSec 2016

 
Jérémy, Auditeur Sécurité, Advens
Kévin Bontems, Consultant Sécurité Senior, Advens