Dans le cadre de ses activités de veille, Intrinsec était présent à la seconde édition de la conférence internationale NoSuchCon qui se déroulait du 19 au 21 novembre 2014 à l’espace Niemeyer au siège du PCF à Paris. Les présentations étaient en Anglais, techniques et sans langue de bois (« bullshit-free »).
(source : http://www.nosuchcon.org/)
Nous vous proposons des résumés des différentes présentations de la conférence : jour 1, jour 2 (cet article) et jour 3.
Nous tenons aussi à remercier les organisateurs et étudiants bénévoles qui ont très bien géré cet événement, ainsi que les orateurs qui ont partagé leurs connaissances et découvertes.
Jour 2
« Understanding and defeating Windows 8.1 Patch Protections: it’s all about gong fu! (part 2) » – Andrea Allievi (Cisco)
Slides : http://www.nosuchcon.org/talks/2014/D2_01_Andrea_Allievi_Win8.1_Patch_protections.pdf
Andrea Allievi a rappelé les mécanismes de protection ajoutés sur les dernières versions de Windows afin de rendre plus difficile la compromission du système d’exploitation.
En particulier : Patch Guard protège le noyau de Windows et le Driver Signing Enforcement restreint aux seuls pilotes signés l’exécution au sein du noyau.
Le mécanisme Patch Guard fonctionne en arrêtant brutalement le système d’exploitation en cas de compromission de celui-ci. Différentes vulnérabilités ont été découvertes et sont à chaque fois corrigées par Microsoft. Andrea a donc choisi une approche offensive différente : plutôt que chercher à contourner/bloquer ce mécanisme, il a plutôt cherché à s’en servir pour protéger son code malveillant !
Après trois mois de travail difficile, il a réussi à installer un hook sur l’API noyau de création de fichiers et à le protéger par Patch Guard. Ainsi si un logiciel anti-rootkits cherche à le retirer, la protection entrera en œuvre et arrêtera le système !
« Mimikatz » – Benjamin Delpy
Slides : http://www.nosuchcon.org/talks/2014/D2_02_Benjamin_Delpy_Mimikatz.pdf
Benjamin Delpy, créateur de l’outil mimikatz, a rappelé le fonctionnement de l’authentification (LSA, NTLM, Kerberos) dans Windows et les choix de conception du mécanisme de SSO (Single Sign-On) qui permet l’attaque Pass-The-Hash et qui ne dispose d’aucune contre-mesure.
Les domaines Windows tendent à passer de l’authentification NTLM au protocole Kerberos et ses recherches se situent maintenant dans ce domaine.
Benjamin a présenté les fonctionnalités déjà connues de mimikatz : Overpass-The-Hash (obtention de tickets Kerberos via les empreintes seules du mot de passe), Pass-The-Ticket (vol et réutilisation de tickets), Golden/Silver tickets (génération de tickets administrateurs de domaine ou spécifiques à un service et valables sur une longue durée).
Au sujet des Golden Tickets : seule l’empreinte du compte krbtgt est nécessaire à un attaquant et celle-ci ne change que très rarement (modification du niveau fonctionnel du domaine) et deux valeurs sont valides : l’actuelle et la précédente ! Cette empreinte peut fuiter à plusieurs niveaux : dump du domaine (audit des mots de passe AD ou compromission), copie du système de fichiers d’un contrôleur de domaine (cassette ou partage de sauvegarde), compromission d’un hyperviseur hébergeant un contrôle de domaine (et donc accès au système de fichiers).
Il est à noter également que le mot de passe du compte krbtgt n’est pas renouvelé automatiquement et cette procédure n’est pas recommandée par Microsoft car elle n’est pas fiable (citation d’un exemple de déni de service sur un domaine ayant duré une demi-journée).
La nouvelle attaque présentée s’appelle Pass-The-Cache et consiste à extraire le cache de tickets Kerberos sur des machines Ubuntu ou Mac OS X accédant au domaine Windows pour ensuite les convertir avec mimikatz et les injecter pour les utiliser. Il est ainsi possible d’attaquer des utilisateurs sur ces deux systèmes puis d’usurper leur identité sur un domaine Windows.
« Pass the Cache » attack: Mimikatz tool is now able to import Linux and OS X cached Kerberos tickets and reuse them on Windows #NSC14
— NoSuchCon (@NoSuchCon) 20 Novembre 2014
L’outi mimikatz permet également, via l’injection d’un pilote, de retirer la protection des processus protégés (au hasard : lsass.exe) ou de faire protéger par le système un programme (au hasard : mimikatz). Il est aussi possible de rendre inefficaces les antivirus en les déconnectant du système de notification de l’OS.
Benjamin a terminé en saluant les efforts effectués par Microsoft pour renforcer la sécurité des systèmes et domaines Windows dans un contexte difficile (performance, rétrocompatibilité…).
« Google Apps Engine security » – Nicolas Collignon (Synacktiv)
Slides : http://www.nosuchcon.org/talks/2014/D2_03_Nicolas_Collignon_Google_Apps_Engine_Security.pdf
Google Apps Engine (GAE) est l’offre cloud de Google qui permet la conception et l’hébergement d’applications Web (PaaS: Platform as a Service). Nicolas Collignon a présenté les défauts de sécurité qui peuvent apparaître lors de l’utilisation de cette plateforme selon trois aspects.
Tout d’abord : les erreurs qui peuvent être effectuées par les développeurs. Nicolas rappelle que cette plateforme n’est pas magique et ne protège pas contre les vulnérabilités Web classiques : SQLI, XSS, CSRF, XXE, etc., qui restent à la charge des développeurs. Certaines API comme urlfetch et socket ne sont par ailleurs pas sécurisées par défaut : les développeurs doivent explicitement demander la validation des certificats et de l’hôte distant pour les échanges SSL/TLS. Nicolas a également rappelé que la propriété d’élasticité du cloud (augmentation du nombre d’instances avec la charge) pose un dilemme en cas d’attaque par déni de service : soit le client sera surfacturé, soit il met en place un quota, mais le service sera rendu indisponible plus facilement !
Au niveau de l’infrastructure, les tests ne peuvent être exécutés en local par les développeurs qui ont donc des identifiants permettant d’accéder indistinctement aux instances de test et de production. La compromission d’un poste de développeur peut donc permettre d’atteindre la production ce qui est plus rarement le cas dans une infrastructure classique. De plus, GAE permet l’exécution parallèle de plusieurs versions en parallèle avec des fonctionnalités de débogage actives ou non : il est ainsi possible de compromettre la version 2 de production depuis la version 1 de production ou la version 3 de développement !
Des vulnérabilités ont également été découvertes sur le bac à sable utilisé par Google pour segmenter les applications. La protection offerte étant plus faible si le mode de développement est utilisé.
Google Apps Engine (GAE) security conclusions by @synacktiv on stage at #NSC14 pic.twitter.com/9kvp1JCT7P
— Jeff Audenard (@jeffman78) 20 Novembre 2014
« Blended Web and Database Attacks on Real-time, In-Memory Platforms » – Ezequiel Gutesman (Onapsis)
Slides : http://www.nosuchcon.org/talks/2014/D2_04_Ezequiel_Gutesman_Blended_Web_and_database_Attacks_on_real_time.pdf
Les évolutions du matériel informatique font qu’il est désormais possible d’avoir des bases de données de plusieurs centaines de gigaoctets s’exécutant complètement en mémoire pour des gains de performances conséquents.
L’éditeur SAP de l’ERP éponyme a implémenté une telle base de données : HANA. Sa conception va plus loin qu’une base de données traditionnelle, car elle comporte un serveur web et permet d’héberger directement des applications !
Cette cible est intéressante pour Ezequiel Gutesman car des données hautement sensibles des entreprises sont destinées à y être stockées (risques d’espionnage, de sabotage ou de fraude) et la surface d’attaque est conséquente.
Les applications Web hébergées et la base de données sont fortement liées : par exemple les utilisateurs de l’application sont forcément des utilisateurs dans la base et le code source de l’application est stocké en base. Une injection SQL sera donc restreinte aux données accessibles par l’utilisateur courant, cependant si l’utilisateur est privilégié il sera possible de modifier les pages (défiguration ou ajout de code malveillant).
La restriction des injections SQL à l’utilisateur courant amène à des attaques hybrides : ingénierie sociale et SQLI.
Les contre-mesures sont classiques : restriction fine des privilèges des utilisateurs et utilisation des requêtes préparées.
HANA peut également exploiter un moteur de calcul statistique basé sur R. Ezequiel propose des recommandations de configuration pour que celui-ci soit correctement protégé.
En conclusion, les processus et informations critiques des entreprises migrent vers des nouvelles technologies dont la sécurité doit être évaluée (recherche, test d’intrusion, audit). HANA a été conçue en pensant à la sécurité, mais plusieurs facteurs continuent à reposer sur l’humain (administrateurs, développeurs et utilisateurs finaux).
La présentation se termine par des fiches pratiques (cheatsheets) utiles lorsqu’une base HANA est découverte dans un test d’intrusion.
« USBArmory » – Andrea Barisani (Inverse Path)
Slides : http://www.nosuchcon.org/talks/2014/D2_05_Andrea_Barisani_forging_the_usb_armory.pdf
Le produit « USBArmory » est un système libre et ouvert qui vise à créer une clé USB « intelligente » pouvant fournir des fonctionnalités de sécurité.
Les fonctionnalités envisagées pour l’instant sont les suivantes :
- clé USB avec chiffrement et scan antivirus automatiques
- client et agent SSH pour l’utilisation sur des postes non de confiance (kiosques)
- routeur OpenVPN ou Tor
- gestionnaire de mots de passe
- portefeuille numérique
- générateur de jetons d’authentification
- plateforme pour réaliser des tests d’intrusion ou des attaques USB bas-niveau
La conception du produit a démarré début 2014 en open source. Plusieurs itérations ont été réalisées et Andrea Barisani espère sortir la version finale en décembre 2014.
La présentation a également été l’occasion de faire le tour des choix, difficultés et erreurs rencontrés lors de la conception du produit toujours dans un esprit ouvert.
« Fuzzing and Patch Analysis: SAGEly Advice » – Richard Johnson (SourceFire/Cisco)
Slides : http://www.nosuchcon.org/talks/2014/D2_06_Richard_Johnson_Sagely_Advice.pdf
Richard Jonhson a présenté une méthode de recherche de vulnérabilités dans des programmes. Les techniques se basant sur de la recherche aléatoire (fuzzing) ont des limites évidentes d’exhaustivité et l’orateur a donc introduit la méthode de génération concolique de tests.
Cette méthode consiste à instrumenter le programme testé pour établir un arbre des branches (à chaque test logique) de celui-ci afin de générer l’ensemble des entrées permettant de couvrir le maximum de chemins d’exécution du programme, sans tester deux fois les chemins identiques (risque de l’approche par fuzzing). Les résultats sont bons et permettent de découvrir de nombreuses vulnérabilités.
La seconde partie, que Richard n’a pas eu le temps d’aborder, montrait comment découvrir des vulnérabilités en regardant les modifications apportées par les correctifs de sécurité des éditeurs. L’approche présentée permettant de réduire le nombre de modifications à analyser manuellement.
— Clément Notin