lundi 20 juin 2016

Le gâchis


Enfin ! Après 4 ans de travail et 5M€ de financement public, le projet d’antivirus « souverain » vient d’être publié sur GitHub.
Initialement connu sous le nom de DAVFI (Démonstrateurs d'AntiVirus Français et Internationaux), puis Uhuru Anti Malware (marque commerciale), le projet Open Source s’appelle désormais Armadito – est-ce un clin d’œil à la protection logicielle bien connue - mais désormais obsolète - « Armadillo » ?

Histoire

L’histoire de ce projet est controversée. Comme toute initiative dont la nationalité est la seule raison d’être, elle fut vertement critiquée à ses débuts. Et comme toutes les initiatives comparables, la malédiction n’a pas tardé à s’abattre : après avoir initié le développement du projet, puis transféré l’industrialisation (ainsi qu’un « personnel administratif senior » – en l’occurrence sa femme) au consortium porté par Nov’IT, M. Filiol a subitement fait volte-face et lâché ses chiens contre le projet Uhuru – allant même jusqu’à annoncer un « fork » Open Source sous le d’OpenDAVFI (dont on attend toujours la publication promise).
Ce drame franco-français n’est pas sans rappeler la mésaventure du « Cloud souverain », assez rapidement scindé en deux projets aussi infructueux l’un que l’autre. La dissension ne conduit généralement qu’au saupoudrage d’argent public.
Le divorce des « antivirus souverains » semble avoir été particulièrement douloureux, à en juger par les billets publiés sur le blog (payant) SecuriteOff : « Uhuru antimalware, a French deception » et « Les antivirus Uhuru, la grande mystification ». A contrario, le seul article positif – « Fin et bilan du projet DAVFI » - a disparu d’Internet (puisque le site n’autorise aucune indexation ni archivage de son contenu – à se demander qui sont ses lecteurs).

EDIT: l'article est toujours disponible à cette adresse. L'éditeur n'a pas jugé utile de rediriger les favoris antérieurs à la refonte du site (circa septembre 2015).

Technique

Il serait loisible mais peu charitable de se gausser des errements techniques du projet. Après tout nul n’est à l’abri d’une erreur d’implémentation.
Certes la librairie de « chiffrement » Perseus – censée protéger les SMS sur la version « Android » du projet – est régulièrement la risée des participants à la conférence SSTIC [2014][2015]. Le plus grave dans ces failles n’étant pas les détails d’implémentation, mais la méconnaissance répétée des mécanismes de génération d’aléa par son auteur ; pourtant l’un des fondamentaux de la cryptologie.
Certes la version « Android » du projet, publiée en 2014, a été immédiatement « cassée » de manière triviale : il était possible d’exécuter des commandes shell depuis la mire de démarrage du téléphone. Le plus grave a probablement été la réaction du projet, consistant à éditer agressivement la page Wikipedia dans une tentative désespérée de damage control.
Certes la version « Windows », récemment libérée sur GitHub, souffre de failles énormes – pour la plupart présentées lors BeeRump 2016 et dont j’espère la publication prochaine. Certains esprits taquins s’en sont même amusés publiquement. A cette liste s’ajoute la détection de codes malveillants dans les fichiers PDF par la recherche de motifs triviaux, ou l’incapacité totale à analyser des exécutables « .NET ».
L’essentiel des heuristiques « avancées » issues de la recherche en virologie consiste à comparer la liste des sections et des imports du fichier exécutable avec une base de référence, comprenant des fichiers « sains » et des fichiers « malveillants ». Il serait possible de se livrer à une analyse critique sur la méthode de calcul utilisée – et surtout l’importance de la base de référence – mais il s’agit d’un domaine technique ennuyeux pour le lectorat, qui est invité à chercher « import hash » dans son moteur favori (ou dépenser 35€ chez Springer).
Le véritable problème de cette heuristique, c’est qu’elle détecte plusieurs composants critiques du système Windows lui-même comme malveillants. Ce qui pose la question du contrôle qualité chez l’éditeur – le faux positif étant un événement essentiellement catastrophique.

Perspectives

Au-delà de l’idée assez classique des « import hash », le projet Armadito échoue à innover dans le domaine de la virologie opérationnelle.
Le principal reproche qu’on peut faire aux logiciels actuels est certainement l’accroissement de la surface d’attaque due aux nombreux parsers – qui ne sont malheureusement ni sandboxés, ni écrits en OCaml. Ce point est régulièrement mis en exergue par les travaux de Tavis Ormandy.
Un moteur d’analyse conçu pour résister à ses propres défauts – par exemple une sandbox pour ClamAV –  eut été un apport non négligeable à l’état de l’art, directement utilisable par la communauté. Au lieu de cela, les premiers tests de fuzzing semblent montrer une extrême fragilité du parser PDF – entièrement implémenté en C.
Parmi les autres idées dont on aurait pu se plaire à rêver, citons :
  • La capacité à autoriser ou bloquer des processus selon des critères personnalisés, tels qu’une signature Authenticode (à la Bit9) ou une signature YARA - la fonctionnalité AppLocker offerte nativement par Windows étant bien trop limitée de ce point de vue.
  • La capacité à journaliser et remonter en temps réel l’activité des processus sur une machine.
  • Une API ouverte permettant d’interagir avec le moteur d’analyse, par exemple pour réaliser un hunt dans un parc étendu. L’intégration de cette API dans des outils standards tels que PowerShell serait un plus.
  • Un kit de développement permettant l’extension du moteur avec des greffons – bien entendu sandboxés (à la Nessus, avec son langage NASL). Ceci permettrait également de créer une communauté autour du produit ; voire de pérenniser l’activité en commercialisant les greffons les plus complexes.
  • Le support de vecteurs dangereux et peu analysés pour le moment, tels que les scripts PowerShell ou les macros Office.
Je n’aborde pas la question des signatures ; elle est à mon sens anecdotique. Les outils existants échouent systématiquement à détecter le dernier ransomware ou la dernière APT ; un modèle de sécurité basé sur des signatures (liste noire) est voué à l’échec face à des attaquants déterminés.

Conclusion

Confier le développement d’un logiciel – qui plus est de sécurité – à une armée mexicaine en partie composée de stagiaires et de thésards, n’ayant aucune expérience antérieure dans l’édition logicielle – ni la sécurité, ni aucune connaissance opérationnelle du monde de l’entreprise, sur la base de quelques travaux académiques à l’applicabilité douteuse : quelqu’un y croyait-il sérieusement ?
La seule explication rationnelle à l'existence de ce projet n'est probablement pas à chercher du côté de l'avancement de la science.

lundi 5 octobre 2015

Etat de l’Art

Cette année encore, il m'a été donné d'assister à l'évènement professionnel majeur de la sécurité informatique française, à savoir les Assises de la Sécurité.

Je n'ai pas l'intention d'en produire un compte-rendu circonstancié ; d'autres s'en chargeront mieux que moi. J'ai plutôt l'intention de revenir sur un sentiment diffus parmi les barbus du domaine: plus les choses changent, plus elles restent les mêmes.

Retour sur une keynote

La seule conférence digne d'intérêt est la désormais traditionnelle keynote de l'ANSSI. Sans nier la qualité des autres "ateliers" – tantôt distrayant, tantôt édifiant – ils relèvent plus de l'anecdote quand il ne s'agit pas purement et simplement d'un vendor pitch. A contrario, l'ANSSI est probablement la seule institution qui dispose d'un plan. C'est la seule à pouvoir faire référence à ses interventions passées – réalisant un point d'étape sur différents sujets tels que la labellisation ou la législation. Tous les autres acteurs sont ballotés au gré des modes.

(Car la sécurité est une vraie victime de la mode. Cette année, exit le patch management ou l'APT. Cette année, c'est le (Cyber)SOC qui est fashionable)

Et il faut dire que l'ANSSI ne manque pas de sujets cette année: la règlementation, les coopérations avec l'Allemagne mais aussi avec les USA, le développement "en régions", la sensibilisation du grand public (jetez un œil à la Hack Academy, ça vaut son pesant de cacahuètes), le partage d'information avec les industriels, la labellisation des prestataires (PDIS, PRIS et Cloud entre autres) … impossible de tout commenter, mais les trois messages suivants me semblent intéressant.

1. L'ANSSI est réticente à partager des indicateurs de compromission (IOC) avec les industriels pour au moins deux raisons:
  • d'abord les industriels disposent rarement de la maturité nécessaire pour pouvoir rechercher un IOC efficacement dans leur parc (ce qui n'est malheureusement pas faux) ;
  • ensuite ils ne savent pas conserver ces IOC secrets. On peut débattre sur le fait qu'un IOC doive rester secret – puisqu'ils servent plus à comprendre le passé qu'à prédire l'avenir – mais il est certain que le recours massif à la sous-traitance dans les services informatiques est difficilement compatible avec la préservation d'un secret. Sans parler du cas où l'industriel est dans le conflit d'intérêt patent, étant à la fois fournisseur de services de détection d'intrusion et intrusé lui-même (ne rigolez pas, ça s'est vu).

2. La détection et la réponse aux incidents sont des domaines qui ne tolèrent pas l'amateurisme ; le recours à des prestataires aguerris est vivement recommandé. On ne peut que partager ce constat, néanmoins j'ai la vague impression que les prestataires actuels – qu'ils soient en cours de labellisation ou non – manquent singulièrement d'expérience dans le domaine et font une large part à l'improvisation la plus totale (voire à l'amateurisme).

3. Le Cloud élève le niveau de sécurité des petites entreprises dont le service informatique n'atteint pas la masse critique. Là encore, on ne peut que partager ce constat: vos emails sont bien souvent mieux protégés dans un service en ligne supportant l'authentification à 2 facteurs que sur un serveur de messagerie interne.

Au delà de la keynote de l'ANSSI, et avec mon regard désormais extérieur, j'ai été frappé par les trois plaies de la cybersécurité françaises tandis que je déambulais dans les travées du salon.

1. L'empilement des boites

C'est une tarte à la crème sur laquelle tout le monde s'accorde: la technique ne résout pas tout (pas de silver bullet), il ne faut pas négliger l'humain, etc.

Pourtant on ne croise au fil des allées que des vendeurs de boites.

Quiconque a déménagé sait que les boites s'empilent plus facilement quand elles sont du même gabarit. Et c'est bien le problème: chaque vendeur conçoit des produits parfaitement autistes, comptant sur les autres pour s'y intégrer. Chacun son format de log, chacun sa console d'administration, chacun son périmètre fonctionnel.

Le sens de l'histoire nous emmène pourtant vers les micro-services et les API. Pourquoi déployer un agent de forensics sur des machines déjà équipées d'un antivirus ? Ne serait-il pas plus efficace d'avoir un seul agent minimaliste, avec une API simple et documentée, permettant l'accès au système de fichiers ? L'avenir de la sécurité n'est-il pas dans la conception de briques de base Open Source ?
Au lieu d'être l'esclave de ses produits, le RSSI deviendrait le maitre d'œuvre d'une intégration harmonieuse.

Et franchement, quand on regarde le périmètre couvert par certaines solutions du marché, on ne peut qu'être déçu. Comment justifier l'acquisition d'une solution complète (et fermée) pour un service aussi basique que le chiffrement de fichiers par exemple, qui est nativement disponible dans tous les systèmes d'exploitation du marché ?

Autant il me semblerait intéressant d'unifier la gestion des secrets cryptographiques à l'échelle de tous les systèmes d'entreprise (protection des fichiers, protection des emails, certificats, etc.), autant le chiffrement de fichiers en lui-même ne me semble être qu'un sous-ensemble trivial du problème – et ne justifie clairement pas l'absorption d'une quotité significative du budget sécurité.

2. Le franco-français

Les Assises de la Sécurité sont un évènement plus social que technique. "Le RSSI c'est celui qui mange seul à la cantine" ; pour une fois il peut échanger avec des milliers de personnes qui partagent le même buffet.

Malheureusement la rencontre est biaisée. Le milieu de la sécurité informatique français est si restreint qu'il frise déjà la consanguinité, mais ici tous les autres invités sont aussi des consommateurs de produits de sécurité. Quant aux intervenants, il n'y en a pour ainsi dire aucun qui ne soit pas exposant, à l'exception de quelques keynotes … très "high level". Ici, les organisateurs ne rémunèrent pas les intervenants pour assurer un contenu de qualité, mais monnaient au contraire le droit de s'exprimer.

Les échanges se limitent alors à un retour d'expérience sur tel produit ou tel prestataire, mais "on invente pas l'électricité en perfectionnant la bougie": les chances de repartir avec des idées disruptives ou de bousculer un visionnaire lors du cocktail sont assez minces. Surtout que l'appétence au changement n'est ni répandue, ni valorisée dans une profession de RSSI de plus en plus normée et standardisée.

Pourtant de nouvelles idées – comme la dépérimétrisation – existent … ailleurs.

3. L'incompréhension des enjeux

L'ultime frontière – qui catalyse toutes les peurs et tous les espoirs de la profession – se nomme Cloud. Le Cloud, c'est comme le sexe chez les ados: personne ne sait ce que c'est, mais tout le monde pense que les autres en font.

Pourtant derrière le Cloud, se dessine une réalité tangible: l'informatique devient trop compliquée – et les investissements trop couteux – pour les utilisateurs finaux.

C'est le sens de l'histoire. J'ai connu la télévision en noir et blanc (la redevance était moins chère que sur la couleur) avec le condensateur en façade permettant de syntoniser les chaines. La génération précédente construisait elle-même son téléviseur en suivant les schémas disponibles dans feu Radio Plans. Aujourd'hui il ne viendrait à l'idée de personne de concevoir sa propre carte mère allant du démodulateur DVB-T au décodage de flux H.264.

L'informatique suit le même chemin ; les leaders ont compris qu'on n'avancerait plus en essayant d'empiler des legos de forme et de couleur différente, mais en devenant maitre de son destin. Développeur est le métier le plus prisé de la Silicon Valley ; il n'y a plus de catalogues produits mais des briques de stockage, de traitement et de présentation qu'il faut assembler pour créer les services du futur. Docker everywhere.

S'il est un point sur lequel les vieux barbus se sont accordés pendant ces Assises de la Sécurité, c'est bien que les RSSI "d'infrastructure" sont dépassés. Ce qui viendra après reste à définir.

mardi 3 février 2015

Sécurité et espionnage informatique

Sécurité et espionnage informatique

J’ai donc lu “Sécurité et espionnage informatique – connaissance de la menace APT”.

Je ne vais pas vous faire le profil de l’oeuvre. Si votre chef vous a demandé une synthèse des solutions miracles pour demain … débrouillez vous :)

Par contre je vais vous épargner la recopie manuelle des hashes donnés en exemple page 106 – ils ne contiennent rien d’intéressant.

$ john --show hash.txt
borislz:TOTO42:F67AC4C658E4EBA7AAD3B435B51404EE:F116850228DF3C891BB260730A65E78F
cpe:TOTOTOTO42:A466CD4F80A06085A973C7865148EF2E:837DB89C7B7C6444E1D189AFC266F1BE

IMG_20150203_154656

Non, si vous avez vraiment du temps à perdre, il vaut mieux vous attaquer directement aux hashes donnés page 105: ils ont été “anonymisés” ; ils doivent donc être importants.

IMG_20150203_154711

Voici ce que ça donne:

cpe:cpe-PC:3A6999A4D3EA7D4469...:35560bc48654e...

Nous disposons donc du hash LM partiel et du hash NTLM partiel pour le même mot de passe. C’est entièrement suffisant pour retrouver le mot de passe d’origine, sauf collision hautement improbable.

Tout expert sécurité sait que le hash LM se compose de deux demi-hashes totalement indépendants. Ici la première moitié du hash LM est donnée en totalité, l’inversion du demi-hash s’effectue donc instantanément avec John ou n’importe quelle Rainbow Table.

3A6999A4D3EA7D44 –> PCKRD42

Malheureusement le mot de passe est mis en majuscules avant le calcul du hash LM ; il n’est donc pas possible de connaitre la casse réelle à ce stade.

Prenant en compte ce fait, il est désormais possible de compléter le mot de passe jusqu’à tomber sur un hash NTLM commençant par 35560bc48654e (la probabilité d’une collision est pour ainsi dire nulle).

Un simple script Python suffit, car la réponse ne tarde pas à venir:

Pckrd42!:3A6999A4D3EA7D44695109AB020E401C:35560BC48654EF33BD7162C7721BDE8C:::

Ce mot de passe est très intéressant, car il vérifie tous les critères appliqués habituellement en entreprise (mais beaucoup plus rarement chez les particuliers):

  • Longueur 8
  • Présence de majuscules/minuscules/chiffres/caractères spéciaux
  • Deux derniers chiffres ressemblant fortement à un incrément (il s’agit d’une construction universellement appliquée par les utilisateurs lorsqu’un changement régulier de mot de passe est imposé – 42 jours par défaut sous Windows).

S’agirait-il d’une capture d’écran réalisée sur le poste de travail de l’auteur ? Celui-ci ayant changé d’entreprise il y a quelques semaines ; on peut de toute façon espérer que son compte ait été verrouillé et ses accès révoqués :)