Le logiciel est garanti d'avoir des bogues. Il peut y avoir plusieurs milliers de lignes de code dans un logiciel, et la faillibilité humaine signifie qu'au moins certaines d'entre elles ne seront pas complètes comme prévu. Le cycle de vie du développement logiciel est un processus conçu pour essayer de minimiser ces problèmes en testant régulièrement.
Le problème est que les tests sont souvent effectués par des développeurs, qui ont peut-être appris à coder quelque chose mais n'ont peut-être pas appris les pratiques de codage sécurisé. Même dans des systèmes testés de manière approfondie, avoir un regard d'observateur extérieur et apporter une nouvelle perspective peut aider à identifier de nouveaux problèmes.
Une manière courante de procéder consiste à effectuer un test d'intrusion, généralement abrégé en pentest. Cela implique de faire appel à un hacker professionnel et éthique, un pentester, pour examiner le système et trouver tout problème de sécurité.
Astuce : C'est « pentest » et « pentester », pas « pen test ». Un pentester ne teste pas les stylos. "Pen-test" est légèrement plus acceptable que "pen-test" mais devrait généralement être évité aussi.
Le but d'un pentest
Le but de tout pentest est d'identifier toutes les failles de sécurité du système testé et de les signaler au client. En règle générale, cependant, les engagements sont quelque peu limités dans le temps en fonction du coût. Si une entreprise dispose d'un pentester interne ou d'une équipe de pentester, ils peuvent travailler en permanence pour l'entreprise. Pourtant, de nombreuses entreprises à l'échelle de celles-ci disposent d'un large portefeuille de systèmes qui doivent être testés. Cela inclut à la fois les produits vendus et les systèmes commerciaux de l'entreprise.
En tant que tels, ils ne peuvent pas passer tout leur temps à tester une seule chose. De nombreuses entreprises préfèrent embaucher une société de test de pente externe pour effectuer l'engagement. Ceci est toujours limité dans le temps en fonction du coût. Le coût est lié au fait qu'un pentest est un processus très manuel et que les compétences sont rares.
En règle générale, un pentest sera limité à une période spécifique. Ceci est fait en fonction de la cible en question et du temps qu'il faut pour être raisonnablement sûr d'avoir tout trouvé. Le calendrier de recherche des vulnérabilités est généralement une courbe en cloche. Peu de choses sont trouvées instantanément lorsque le pentester regarde autour de l'application. Ensuite, la grande majorité des résultats peuvent être obtenus dans un délai spécifique avant de diminuer progressivement. À un moment donné, le coût de passer plus de temps à chercher ne vaut pas la chance qu'il n'y ait rien d'autre à trouver.
Parfois, même le prix indiqué pour le temps recommandé est trop élevé. Dans ce cas, le test peut être "time box". C'est là que le client accepte qu'il ne teste pas autant que recommandé, mais souhaite que les pentesters fassent de leur mieux dans un délai réduit. En règle générale, cela est inclus sous forme de mise en garde dans le rapport.
Processus manuel
Certains outils sont disponibles pour effectuer automatiquement des tests de sécurité. Ceux-ci peuvent être utiles. Cependant, ils ont souvent des taux élevés de faux positifs et de faux négatifs. Cela signifie que vous devez passer du temps à creuser les problèmes de vérification, sachant que cela pourrait ne pas être complet. La plupart de ces outils recherchent des indicateurs spécifiques, tels que des versions vulnérables connues de logiciels ou des fonctions vulnérables connues. Cependant, il existe de nombreuses façons pour que ces problèmes ne soient pas réels ou atténués dans la pratique.
Les vulnérabilités de sécurité peuvent provenir d'un tas de pièces apparemment anodines. La meilleure façon de repérer cela est par un effort humain manuel. Les pentesters utilisent des outils mais savent interpréter les résultats, les vérifier manuellement et effectuer des actions manuelles indépendantes. Cet effort manuel sépare un pentest d'une analyse de vulnérabilité ou d'une évaluation de vulnérabilité.
Types de Pentest
En règle générale, un pentest consiste à tester un produit entier tel qu'il serait déployé. Idéalement, cela se produit dans un environnement de production réel. Cependant, ce n'est pas toujours pratique. Premièrement, il y a la crainte que le pentest ne mette la cible hors ligne. En général, cette crainte est essentiellement infondée. Les pentests ne génèrent généralement pas trop de trafic réseau, peut-être l'équivalent de quelques utilisateurs actifs supplémentaires. Les pentesters ne testeront pas non plus délibérément les problèmes de type déni de service, en particulier dans les environnements de production. Au lieu de cela, ils signalent généralement les problèmes de déni de service suspectés pour permettre au client d'enquêter lui-même.
De plus, il convient de noter que si le système est connecté à Internet, il est constamment soumis à des "pentests gratuits" de la part de vrais hackers black hat et de leurs bots. Une autre raison d'éviter les environnements de production est les problèmes de confidentialité avec les données des utilisateurs en direct. Les pentesters sont des hackers éthiques sous NDA et contrats, mais si un environnement de test existe et est similaire, il peut être utilisé.
Astuce : Un « pentest gratuit » est une façon plaisante de se référer à l'attaque de black hats sur Internet.
Les pentests peuvent être effectués sur pratiquement n'importe quel système technologique. Les sites Web et l'infrastructure réseau sont les types de tests les plus courants. Vous obtenez également des tests API, des tests « client lourd », des tests mobiles, des tests matériels, etc.
Variations sur le thème
De manière réaliste, les exercices d'hameçonnage, d'OSINT et d'équipe rouge sont liés mais légèrement différents. Vous êtes probablement conscient de la menace de phishing. Certains tests impliquent des tests pour voir comment les employés réagissent aux e-mails de phishing. En suivant comment les utilisateurs interagissent – ou non – avec le phishing, il est possible d'apprendre à adapter la formation future au phishing.
OSINT signifie Open Source INTelligence. Un test OSINT consiste à récupérer des informations accessibles au public pour voir comment des données précieuses peuvent être collectées et comment elles pourraient être utilisées. Cela implique souvent de générer des listes d'employés à partir d'endroits comme LinkedIn et le site Web de l'entreprise. Cela peut permettre à un attaquant d'identifier des hauts responsables qui pourraient être de bonnes cibles pour une attaque de harponnage, un hameçonnage spécifiquement adapté au destinataire individuel.
Un engagement d'équipe rouge est généralement beaucoup plus approfondi et peut impliquer certains ou tous les autres composants. Cela peut également inclure des tests de sécurité physique et de respect de la politique de sécurité. Du côté des politiques, cela implique de l'ingénierie sociale. C'est essayer de vous convaincre d'entrer dans le bâtiment. Cela peut être aussi simple que de traîner dans la zone fumeurs et de revenir avec les fumeurs après une pause cigarette.
Il peut s'agir de se faire passer pour un fonctionnaire ou de demander à quelqu'un de vous ouvrir une porte tout en portant un plateau de tasse à café. Du côté de la sécurité physique, cela peut même impliquer d'essayer de s'introduire physiquement, de tester la couverture de la caméra, la qualité des serrures, etc. Les engagements de l'équipe rouge impliquent généralement une équipe de personnes et peuvent se dérouler sur des échelles de temps beaucoup plus longues que les pentests normaux.
Équipes rouges
Un exercice en équipe rouge peut sembler moins éthique qu'un pentest standard. Le testeur s'attaque activement aux employés sans méfiance. La clé est qu'ils aient l'autorisation de la direction de l'entreprise, généralement du niveau du conseil d'administration. C'est la seule raison pour laquelle il est acceptable pour un membre de l'équipe rouge d'essayer de s'introduire par effraction. Cependant, rien ne lui permet d'être violent. Un exercice d'équipe rouge n'essaiera jamais de blesser ou de maîtriser un agent de sécurité, de le contourner ou de le tromper.
Pour éviter que l'équipe rouge ne soit arrêtée, ils porteront généralement un contrat signé avec les signatures des membres du conseil d'administration. S'il est pris, cela peut être utilisé pour prouver qu'il avait la permission. Bien sûr, parfois, cela est utilisé comme un double bluff. L'équipe rouge peut porter deux autorisations, une vraie et une fausse.
Lorsqu'ils sont pris, ils remettent d'abord le faux bordereau d'autorisation pour voir s'ils peuvent convaincre la sécurité qu'il est légitime même si ce n'est pas le cas. À cette fin, il utilisera souvent les noms réels du conseil d'administration de l'entreprise, mais inclura un numéro de téléphone de vérification qui va à un autre membre de l'équipe rouge informé pour vérifier l'article de couverture. Bien sûr, si la sécurité voit à travers cela, le véritable bordereau d'autorisation est remis. Cela peut alors être traité avec beaucoup de suspicion, cependant.
Selon la façon dont l'équipe rouge a été attrapée, il peut être possible de continuer le test, en supposant qu'il a contourné l'agent de sécurité individuel qui l'a attrapé. Cependant, il est possible que l'identité du testeur soit « soufflée », le retirant essentiellement de tout autre test en personne. À ce stade, un autre membre de l'équipe peut échanger avec ou sans informer la sécurité.
Conclusion
Un pentest est un engagement dans lequel un professionnel de la cybersécurité est invité à tester la sécurité d'un système informatique. Le test consiste à rechercher et vérifier manuellement la présence de vulnérabilités. Des outils automatisés peuvent être utilisés dans ce cadre. À la fin du test, un rapport est fourni détaillant les problèmes détectés et fournissant des conseils de remédiation.
Il est important que ce rapport ne soit pas seulement la sortie automatisée d'un outil, mais qu'il ait tous été testés et vérifiés manuellement. Tout système informatique, matériel, réseau, application ou appareil peut être testé. Les compétences requises pour chacun varient mais sont souvent complémentaires.