SSTIC 2017 – première journée

Introduction

Une fois encore, plusieurs consultants d’Intrinsec étaient présents au SSTIC (Symposium sur la Sécurité des Technologies de l’Information et des Communications). Cette 15è édition s’est déroulée du 7 au 9 juin à Rennes et nous vous partageons nos comptes-rendus de ces trois journées de conférences.
Cette édition était, comme chaque année, de qualité et nous remercions les comités d’organisation et de programmation, ainsi que les présentateurs et les orateurs pour les conférences de qualité auxquelles nous avons pu assister.
En plus des comptes-rendus ci-dessous, nous vous encourageons à parcourir les actes, diapositives et vidéos des conférences, disponibles sur le site officiel.

Liens vers les compte-rendus des autres jours :

Conférence d’ouverture : ANTI-DDOS VAC

Cette année, la conférence d’ouverture était tenue par Octave Klaba, fondateur et PDG d’OVH, opérateur et fournisseur de services informatiques et qui possède des datacenters en Europe, en Amérique du Sud et en Asie.

La première partie de la présentation rappelait les capacités impressionnantes d’OVH en termes de débit et de liens réseau. Ainsi, OVH possède plus de 10 000 kilomètres de fibre noire (répartie notamment entre chaque datacenter et chaque point de présence) et a une capacité réseau totale supérieure à 10 Tb/s. Une continuité est assurée au niveau de la couche 1 réseau : tous les ports des routeurs restent en permanence en fonctionnement, ce qui permet d’assurer une reprise en moins de 50ms en cas de coupure d’une fibre.

Octave a ensuite présenté la solution de protection d’OVH contre les attaques de déni de service distribuées (attaques DDOS). En effet, suite à plusieurs attaques DDOS, OVH commençait à perdre des clients qui privilégiaient la concurrence, mieux équipée contre celles-ci. OVH a donc mis en place en 2013 la première version de son VAC. Le VAC v1 était capable d’absorber 160 Gb de données par seconde. En juin 2017, avec le déploiement de la version 3 du VAC (pouvant absorber 600 Gbps de trafic), la capacité totale de la solution anti-DDOS d’OVH est de 2,5 Tbps.

En cas d’attaque DDOS, une fois que l’attaque a atteint la machine cible, celle-ci est donc indisponible et cette indisponibilité est détectée par le système de surveillance d’OVH. Une fois l’attaque détectée, le trafic malveillant est aspiré par le VAC le plus proche, nettoyé puis réinjecté dans le réseau interne d’OVH. Le trafic est analysé de manière unidirectionnelle : les réponses du réseau interne vers Internet ne sont pas analysées par ce VAC, un autre système d’analyse bidirectionnel a été développé. Le VAC dispose de plusieurs étages de nettoyage qui gèrent chacun un type de trafic particulier, afin d’améliorer l’efficacité globale du VAC et d’en réduire les coûts.

La conférence s’est terminée en évoquant les attaques actuelles de type DDOS (OVH en enregistre 1200 à 1500 par jour !) ainsi que par un bref retour sur Mirai. Ce botnet, qui agissait depuis des objets connectés (par exemple des caméras de surveillance connectées), a attaqué plusieurs fois OVH avec une pointe de trafic à 990 Gbps le 20 septembre 2016. Les seules perturbations visibles ont été notées à Madrid, ce qui a poussé OVH à communiquer sur cette attaque puis à prendre les dispositions nécessaires afin d’augmenter sa capacité réseau a posteriori.

Vidéo : https://www.sstic.org/2017/presentation/2017_ouverture/

L’administration en silo

Aurélien Bordes, de l’ANSSI, a voulu mettre en avant les nouveaux moyens de protection des identifiants Active Directory qui existent depuis Windows 8 et Windows Server 2012.

Après des rappels sur la population des utilisateurs d’un Système d’Information et sur les intrusions en environnement Active Directory (où le contrôleur de domaine est le point le plus critique), Aurélien a présenté une pyramide segmentant les ressources (équipements et utilisateurs) suivant leur niveau de criticité :

  • les ressources d’administration (contrôleurs de domaines, administrateurs du domaine, postes de travail d’administrateurs…) sont positionnées au niveau « rouge » ;
  • les ressources métier ou d’infrastructure (messagerie, serveurs de fichiers, administrateurs des serveurs métier…) sont positionnées au niveau « jaune » ;
  • les autres ressources (postes de travail et administrateurs de ces postes) sont positionnées au niveau « vert ».

Aurélien a ensuite rappelé les différentes méthodes d’élévation de privilèges au sein d’un domaine Active Directory, en mettant en évidence les attaques sur les systèmes d’authentification des administrateurs (de chaque niveau de sécurité). L’objectif de sécurité principal est donc de protéger les secrets d’authentification des administrateurs.

Après quelques rappels sur NTLM et Kerberos, Aurélien a présenté les nouveaux mécanismes de protection implémentés dans Windows 8 et Windows Server 2012 en ce qui concerne Active Directory et Kerberos :

  • les revendications : il s’agit d’attributs de sécurité qui étendent l’historique modèle d’authentification de Windows basé sur les SID ;
  • le blindage Kerberos, qui implémente la technologie FAST (Flexible Authentication via Secure Tunneling) ;
  • les stratégies d’authentification qui permettent de restreindre le poste de travail ou le serveur depuis lequel l’authentification est autorisée ;
  • les silos d’authentification : il s’agit d’un regroupement de postes auxquels on applique une stratégie d’authentification (l’idée étant que toutes les machines de la zone rouge doivent être placées au sein d’un silo).

Enfin, l’authentification composée met en œuvre tous les principes cités précédemment.

Toutes ces protections sont simples à mettre en œuvre et permettent de cloisonner efficacement les niveaux d’utilisation, mais sont très peu utilisées pour le moment, notamment à cause du niveau de mise à jour nécessaire sur les versions de Windows et Windows Server.

Article et vidéo : https://www.sstic.org/2017/presentation/administration_en_silo/

WSUSpendu

Romain Coltel (Alsid) et Yves Le Provost (ANSSI) ont présenté leur outil de compromission d’un domaine Active Directory, basé sur la mise en œuvre d’une fausse mise à jour dans un serveur WSUS (Windows Server Update Service).

Après un rappel sur le processus de mises à jour des postes Windows dans le cadre d’une entreprise et la présentation des composants d’un serveur WSUS, les orateurs ont rappelé que la seule attaque concrète sur un serveur WSUS était « WSUSPect », présentée à la conférence BlackHat en 2015. Leur outil WSUSpendu se distingue en attaquant directement le serveur WSUS :

  • modification de la base de données des mises à jour disponibles ;
  • ajout des binaires qui serviront pour l’attaque. Ces binaires devant être signés par Microsoft, les binaires qui seront les plus intéressants pour l’attaque seront certainement psexec et bginfo.

La mise à jour malveillante poussera donc ces binaires et forcera leur exécution, avec les arguments adéquats afin d’exécuter le commande de leur choix et de compromettre le poste qui recevra la mise à jour.

Les protections à mettre en place sont les suivantes :

  • activer TLS ;
  • mettre les serveurs WSUS dans la zone de confiance « rouge ».

Article et vidéo : https://www.sstic.org/2017/presentation/wsus_pendu/

Durcissement système à l’aide de systemd

Timothée Ravier (ANSSI) a présenté trois mécanismes de sécurité du noyau Linux et a détaillé leur mise en action à l’aide des fonctionnalités proposées par systemd :

  • filtrage d’appels système disponibles pour un processus (avec seccomp-bpf) ;
  • capacités Linux (restriction de droits accordés à un processus root et ajout de permissions à un processus non root) ;
  • espace de nom des points de montage (arborescence du système de fichiers distincte pour chaque service).

Article et vidéo : https://www.sstic.org/2017/presentation/durcissement_systeme_avec_systemd/

Landlock : cloisonnement programmable non privilégié

Mickaël Salaün (ANSSI) a présenté son module de sécurité pour Linux qui a pour objectif d’effectuer du cloisonnement d’applications.

Après un rappel sur les outils et mécanismes déjà existants dans le domaine (SELinux, seccomp-bpf, namespaces), Mickaël a détaillé le fonctionnement de son outil, qui propose de la descente de privilèges pour des processus qui n’ont pas de privilèges root et sans modifier les politiques de sécurité globales du système.

Vidéo : https://www.sstic.org/2017/presentation/landlock/

Static Analysis and Runtime-Assertion Checking: Contribution to Security Counter-Measures

Après un premier repas bien mérité, la conférence a enchaîné sur une présentation de détection de vulnérabilités automatique dans du code source aboutissant sur la génération automatique de code défensif. Cette approche utilise les méthodes formelles qui ont maintenant fait leurs preuves dans ce type d’analyse.

Les conférenciers (Dillon Pariente de Dassault Aviation et Julien Signoles du CEA) ont alors présenté la méthode CURSOR, qui consiste à combiner le plugins VALUE de FRAMA-C et ACSL pour identifier les comportements du programme analysé et lever des alertes en cas de dangers potentiels.

La présentation s’est terminée sur une démonstration prenant appui sur un code vulnérable au débordement de tampon. CURSOR lève alors des alarmes sur la fonction et remplace les commentaires d’avertissement par des commentaires d’évènement et du code de contrôle.

Article et vidéo : https://www.sstic.org/2017/presentation/static_analysis_and_runtime-assertion_checking_contribution_to_security_counter-measures/

BinCAT: purrfecting binary static analysis

Les orateurs (Philippe Biondi, Raphaël Rigo, Sarah Zennou et Xavier Mehrenberger d’Airbus) ont présenté un outil issu du développement interne d’Airbus, BinCAT, permettant l’analyse statique de code binaire x86. Cet analyseur statique permet principalement l’analyse de teinte et le suivi des sauts indirects dans le code. Une méthode de revue en avant et en arrière est aussi implémentée et pour plaire aux plus férus d’entre nous, l’outil est intégrable dans IDA.

Afin de fonctionner, l’outil transforme le code binaire en langage intermédiaire afin de faciliter l’analyse. Ce comportement a aussi été choisi par les auteurs afin de faciliter les évolutions futures, notamment pour le support de diverses architectures.

La présentation a continué sur une démonstration reposant sur un crackme calculant des clés de licences CRC32 maison à partir d’entrées utilisateurs. Tout au long de l’exécution, BinCAT va colorer en vert les données qui découlent des entrées utilisateurs, même si les données passent au travers de fonctions telles que sprintf().

Article et vidéo : https://www.sstic.org/2017/presentation/bincat_purrfecting_binary_static_analysis/

Désobfuscation binaire : Reconstruction de fonctions virtualisées

Préparée par Jonathan Salwan (Quarkslab), Marie-Laure Potet (CEA) et Sébastien Bardin (VERIMAG), cette conférence s’est attaquée au problème de la protection logicielle, qui rend difficile l’analyse d’un programme sans endommager ses propriétés.

L’une des techniques abordées, la virtualisation, consiste à réécrire le code en utilisant du bytecode propriétaire. L’un des freins à l’analyse est le mélange des traces d’exécution de la VM à celles du programme originel. Afin de contourner ce problème, le présentateur a effectué les cinq actions suivantes :

  1. teinte des entrées utilisateurs virtualisées ;
  2. traduction de l’ASM en IL basé sur Triton ;
  3. extraction d’un chemin logique et découverte du chemin à l’aide d’un SMT solver ;
  4. extraction de l’ensemble du code IR et transformation en code LLVM via Arybo ;
  5. transformation du code LLVM en ASM en s’appuyant sur les passes d’optimisation.

Afin de tester son outil, le conférencier a tenté de résoudre les challenges Tigress. Le résultat est concluant, car d’après le conférencier, rien n’a résisté à l’analyse de l’outil. Il faut prévoir tout de même un SSD de 1 To sur lequel on définit une énorme partition de SWAP (à défaut d’avoir une machine possédant plus de 800Go de mémoire RAM).

Article et vidéo : https://www.sstic.org/2017/presentation/desobfuscation_binaire_reconstruction_de_fonctions_virtualisees/

Writing parsers like it is 2017

Les conférenciers (Geoffroy Couprie de l’ANSSI et Pierre Chifflier de Clever Cloud) ont commencé par présenter le triste état actuel de logiciels développés depuis des années :

  • le code est parfois très souvent truffé de vulnérabilités et ce dernier est difficilement testable ;
  • impossibilité de tout ré-écrire à moindre coût.

Sur ce constat, les orateurs ont proposé de remplacer uniquement les sections vulnérables, notamment la partie parsing C/C++. Ils nous ont ensuite fait une présentation de Rust, langage jeune permettant de gérer la mémoire et possédant des fonctions sûres de mécanismes de validation. Pour cette approche, la libraire NOM permet de combiner des ensembles de parsers à partir de macros Rust basées sur certains concepts de la programmation fonctionnelle.

Puis, les conférenciers ont pris en exemple le lecteur multimédia VLC. Ils ont décidé dans cet exemple de recoder l’interface d’intégration et les parsers qui gèrent les codec/plugins définis dans des DLL. Dans leurs approches, les orateurs ont rappelé que nous sommes uniquement des invités dans la maison du C et qu’il est donc nécessaire de laisser la gestion mémoire à ce dernier.

En conclusion, cette nouvelle méthode permet la communication avec des vieux langages tout en garantissant l’absence de copie ou de conversion de données. Enfin, les principes de bases de cette approche sont énumérés par les orateurs :

  • n’utilisez que du code sûr ;
  • évitez de mélanger le parsing et l’interprétation ;
  • soyez stricts dans ce que vous générez, et laxistes dans ce que vous acceptez ;
  • les parsers sont la partie la plus facile.

Article et vidéo : https://www.sstic.org/2017/presentation/writing_parsers_like_it_is_2017/

caradoc : une boîte à outils pour décortiquer et analyser sereinement les fichiers PDF

Les orateurs (Guillaume Endignoux de l’EPFL et Olivier Levillain de l’ANSSI) ont commencé cette présentation sur des critiques concernant le format PDF : implémentation de référence buggée, diverses interprétations, table de référence et j’en passe. Ils ont notamment démontre les incohérences entre les lecteurs de ce format qui ne vont pas afficher la même chose pour un document donné identique.
Sur ce constat, les orateurs ont proposé un outil, développé en OCaml, permettant de parser un fichier PDF. Le but n’est ici clairement pas d’analyser d’éventuel contenu malveillant, mais plutôt d’empêcher les erreurs de lecture.

Article et vidéo : https://www.sstic.org/2017/presentation/caradoc/