
La tendance actuelle est au renforcement des exigences sécurité des clients, partenaires et investisseurs. Les audits de sécurité se sont démocratisés aux petites et moyennes entreprises, pour qui ils représentent un passage obligé afin de pouvoir collaborer sur des sujets IT avec des grandes entreprises. En effet, les grands-comptes intègrent quasi systématiquement des demandes de rapport d’audits de sécurité dans leurs processus d’achats. L’entrée en application du RGPD depuis 2 ans a aussi permis aux entreprises de prendre conscience des enjeux de sécurité des données, dans des secteurs d’activité où la prise en compte des risques était auparavant peu élevée. Les certifications en sécurité (ISO 27001, HDS, PCI-DSS, SOC2…) sont de plus en plus plébiscitées par les entreprises de petite et moyenne taille, afin de se différencier et de faire de la sécurité un axe de qualité.
Il existe plusieurs types d’audits de sécurité, dont principalement : les audits organisationnels, les audits techniques, et les tests d’intrusion. Ces différents types d’audits peuvent s’appliquer à un périmètre plus ou moins étendu, selon que l’entreprise souhaite évaluer tout son SI ou seulement certains pans identifiés comme étant prioritaires. Nous nous focalisons dans cet article sur les tests d’intrusion (penetration test ou pentest).
Un test d’intrusion consiste à tester la sécurité d’un système informatique en effectuant des attaques dans le but d’identifier les vulnérabilités du système et de proposer des correctifs de sécurité.
Les tests d’intrusion et les tests de vulnérabilités diffèrent de par leurs objectifs. Un test de vulnérabilité repose sur des scanners automatiques qui permettent d’identifier rapidement les failles les plus courantes. Le test d’intrusion va plus loin. Il inclut notamment la recherche de failles logiques, non détectables par des outils automatiques, et une phase d’exploitation manuelle des vulnérabilités identifiées. C’est une méthode d’audit de sécurité éprouvée plus complète, qui permet de mesurer l’impact réel de tout type de faille.
Un test d’intrusion peut inclure des tests en boite noire, en boite grise ou en boite blanche. Les tests en boite noire ciblent la surface d’attaque accessible à n’importe quel attaquant externe, tandis que des tests en boite grise vont concerner des éléments disponibles uniquement à des clients, des partenaires ou des salariés d’une entreprise. L’audit en boite blanche quant à lui permet d’analyser le niveau de sécurité en disposant des mêmes accès qu’un administrateur du système (serveur, application…).
Le livrable remis à la suite d’un test d’intrusion est un rapport d’audit de sécurité qui présente les vulnérabilités identifiées, classifiées par niveau de criticité, ainsi que des suggestions techniques de remédiation. En complément du rapport, une synthèse non technique peut également être délivrée, pour présentation au comité de direction ou à des partenaires.
Un test d’intrusion repose sur une méthodologie en quatre phases, qui constituent un processus cyclique : Reconnaissance, Mapping, Discovery, Exploitation.
La phase de reconnaissance consiste à rechercher des informations open-source sur la cible de l’audit de sécurité. Toutes les informations potentiellement utiles pour un attaquant sont récoltées, par exemple : adresses IP, noms de domaines et sous-domaines, types et versions de technologies utilisées, informations techniques partagées sur des forums ou des réseaux sociaux, fuite de données…
La phase de mapping permet de répertorier l’ensemble des fonctionnalités de la cible de l’audit. Cette étape permet aux pentesters d’avoir une meilleure visibilité sur les éléments les plus critiques et les plus exposés. Cette étape est particulièrement indispensable lorsque l’objectif de l’audit de sécurité est de conduire des tests sur toutes les fonctionnalités d’une cible.
La phase de discovery est une phase d’attaque : les pentesters recherchent des vulnérabilités via des recherches manuelles complémentées par des outils automatisés. L’objectif est de découvrir le maximum de failles possibles sur la cible.
La phase d’exploitation consiste à tester les exploitations possibles des failles identifiées lors de la phase précédente. Cette étape permet de rebondir en utilisant certaines failles comme un pivot, dans le but de découvrir de nouvelles vulnérabilités. L’exploitation des failles de sécurité permet notamment d’évaluer leur impact réel et donc leur niveau de criticité.
Les tests effectués sur des plateformes web permettent de rechercher des vulnérabilités liées à la configuration des serveurs web ainsi que des vulnérabilités liées à la couche applicative.
Côté serveur, il s’agit par exemple de services ouverts et mal sécurisés, de logiciels non à jour, ou d’erreurs de configuration.
Côté applicatif, il s’agit des vulnérabilités répertoriées par l’OWASP (dont les failles du top 10), ainsi que les failles logiques liées à l’implémentation du workflow, et celles relatives à de nouvelles découvertes sur les technologies utilisées par les développeurs.
Les tests effectués sur les applications mobiles elles-mêmes (hors APIs mobiles et serveurs) comprennent une analyse statique et une analyse dynamique des applications.
L’analyse statique consiste à extraire des éléments (meta-informations et code-source) pour effectuer des tentatives de reverse engineering.
L’analyse dynamique consiste à rechercher des vulnérabilités sur l’application pendant qu’elle fonctionne sur un appareil (runtime), par exemple pour contourner des contrôles ou extraire des données en mémoire vive.
Les failles courantes des applications mobiles sont répertoriées par l’OWASP (notamment le top 10 mobile).
Les tests effectués sur des objets connectés permettent de rechercher des vulnérabilités sur l’ensemble des couches de l’écosystème IoT : hardware, firmware, protocoles de communication, serveurs, applications web et applications mobiles.
Les tests sur le hardware, le firmware et les protocoles de communications sont spécifiques à l’objet en lui-même, par exemple : dump de données via les composants électroniques, analyse du firmware, capture et analyse de signaux…
Les tests effectués sur une infrastructure externe consistent à scanner les IPs publiques de l’entreprise ainsi que les services exposés en ligne, dans le but d’identifier des failles liées à la configuration des services ainsi qu’à l’architecture des systèmes d’exploitation.
Les tests effectués sur un réseau interne d’entreprise consistent à cartographier le réseau, afin de rechercher des vulnérabilités présentes sur les postes de travail, serveurs, routers, proxies et autres périphériques réseaux.
Les tests sur les « facteurs humains » de l’entreprise permettent de tester les réactions des équipes face aux tentatives de phishing, d’attaques téléphoniques et d’intrusion physique.
Les techniques utilisées sont par exemple l’envoi d’emails de phishing et de spear phishing, incluant des clones d’interfaces et des malwares, la récolte d’informations sensibles par téléphone, et l’utilisation de clés USB piégées.
L’objectif final du test d’intrusion est de fournir des recommandations concrètes permettant d’améliorer le niveau de sécurité de la cible.
L’étape suivante est donc la prise en compte de ces recommandations pour corriger à minima les vulnérabilités les plus critiques. Certains correctifs peuvent également être intégrés dans les projets d’évolutions fonctionnelles et techniques ou implémentés sur d’autres systèmes présentant des similitudes avec la cible des tests.
Un test d’intrusion permet aussi de faire évoluer certaines pratiques, de mettre en place de nouveaux processus permettant de renforcer la sécurité, et d’améliorer le niveau de vigilance de l’entreprise face aux risques.
Suite à un test d’intrusion, il peut être recommandé de conduire des analyses complémentaires, par exemple :
En fonctions des vulnérabilités identifiées, les analyses sécurité peuvent être complétées par des formations en sécurité pour des équipes techniques et/ou non-techniques.
Un test d’intrusion fournit un état des lieux du niveau de sécurité d’une cible à un instant T. Se pose ensuite la question de la fréquence à laquelle reconduire ce type de tests.
Cela dépend du niveau de risque auquel est exposée l’entreprise, des enjeux réglementaires et commerciaux autour de la cible, du degré d’exhaustivité du test d’intrusion précédent, de la fréquence des évolutions techniques et fonctionnelles de la cible … Dans certains cas, le choix sera d’un pentest par mois, dans d’autres cas ce sera un pentest par an.
Pour un éditeur de logiciel de taille intermédiaire, ayant de fortes exigences sécurité de la part de ses clients, et dont le produit requiert un nombre de jours de pentest élevés :
Pour une startup fintech certifiée PCI-DSS ayant de fortes contraintes sécurité :
Pour une PME soucieuse de prévenir les principaux risques de sécurité :
Un test d’intrusion coûte généralement entre 3k€ et 20k€, en fonction du scope et des conditions de l’audit.
Exemples d’enveloppes :
20 à 25 k€ pour un audit de sécurité comprenant un pentest externe du système d’information, un pentest interne, et un pentest d’ingénierie sociale.
10 à 15 k€ pour un audit de sécurité comprenant 3 ou 4 sessions de pentest sur un logiciel, au fur et à mesure des nouvelles mises en production.
5 à 10 k€ pour un pentest approfondi sur un logiciel métier, un réseau d’entreprise, ou un objet connecté.
1,5 à 5 k€ pour un premier pentest focalisé sur les risques majeurs pour l’entreprise.