complete penetration testing guide with sample test cases
C’est le processus d’identification des vulnérabilités de sécurité dans une application en évaluant le système ou le réseau à l’aide de diverses techniques malveillantes. Les points faibles d'un système sont exploités dans ce processus via une attaque simulée autorisée.
Le but de ce test est de sécuriser les données importantes des personnes extérieures comme les pirates informatiques qui peuvent avoir un accès non autorisé au système. Une fois la vulnérabilité identifiée, elle est utilisée pour exploiter le système pour accéder à des informations sensibles.
Un test de pénétration est également connu sous le nom de test du stylo et un testeur de pénétration est également appelé hacker éthique.
Ce que vous apprendrez:
- Qu'est-ce que le test de pénétration?
- Causes des vulnérabilités
- Outils et entreprises de test de pénétration
- Outils de test de pénétration recommandés
- Société de test de pénétration recommandée
- Pourquoi les tests de pénétration?
- Que faut-il tester?
- Types de tests de pénétration
- Techniques de test au stylo
- Exemples de scénarios de test de pénétration (scénarios de test)
- Conclusion
Qu'est-ce que le test de pénétration?
Nous pouvons découvrir les vulnérabilités d'un système informatique, d'une application web ou d'un réseau grâce à des tests d'intrusion.
Un test de pénétration indique si les mesures de défense existantes utilisées sur le système sont suffisamment fortes pour empêcher toute faille de sécurité. Les rapports de test de pénétration suggèrent également les contre-mesures qui peuvent être prises pour réduire le risque de piratage du système.
Causes des vulnérabilités
- Erreurs de conception et de développement : Il peut y avoir des défauts dans la conception du matériel et des logiciels. Ces bogues peuvent exposer vos données critiques à l'entreprise.
- Mauvaise configuration du système : Ceci est une autre cause de vulnérabilité. Si le système est mal configuré, alors il peut introduire des failles par lesquelles les attaquants peuvent entrer dans le système et voler les informations.
- Erreurs humaines : Des facteurs humains tels que l'élimination incorrecte des documents, le fait de laisser les documents sans surveillance, les erreurs de codage, les menaces internes, le partage de mots de passe sur des sites de phishing, etc. peuvent conduire à des failles de sécurité.
- Connectivité : Si le système est connecté à un réseau non sécurisé (connexions ouvertes), il est alors à la portée des pirates.
- Complexité : La vulnérabilité de sécurité augmente proportionnellement à la complexité d'un système. Plus un système a de fonctionnalités, plus il y a de chances que le système soit attaqué.
- Mots de passe : Les mots de passe sont utilisés pour empêcher tout accès non autorisé. Ils doivent être suffisamment solides pour que personne ne puisse deviner votre mot de passe. Les mots de passe ne doivent être partagés avec personne à aucun prix et les mots de passe doivent être modifiés périodiquement. Malgré ces instructions, les gens révèlent parfois leurs mots de passe aux autres, les écrivent quelque part et conservent des mots de passe faciles à deviner.
- Entrée utilisateur : Vous devez avoir entendu parler d'injection SQL, de débordements de tampon, etc. Les données reçues électroniquement par ces méthodes peuvent être utilisées pour attaquer le système récepteur.
- Gestion : La sécurité est difficile et coûteuse à gérer. Parfois, les organisations manquent de retard dans la gestion des risques appropriée et par conséquent, la vulnérabilité est induite dans le système.
- Manque de formation du personnel : Cela conduit à des erreurs humaines et à d'autres vulnérabilités.
- la communication : Les canaux tels que les réseaux mobiles, Internet, le téléphone ouvrent la voie au vol de sécurité.
Outils et entreprises de test de pénétration
Des outils automatisés peuvent être utilisés pour identifier certaines vulnérabilités standard présentes dans une application. Les outils Pentest analysent le code pour vérifier s'il existe un code malveillant pouvant conduire à une faille de sécurité potentielle. Les outils Pentest peuvent vérifier les failles de sécurité présentes dans le système en examinant les techniques de cryptage des données et en déterminant les valeurs codées en dur comme le nom d'utilisateur et le mot de passe.
Critères pour sélectionner le meilleur outil de pénétration:
- Il doit être facile à déployer, à configurer et à utiliser.
- Il devrait analyser votre système facilement.
- Il doit classer les vulnérabilités en fonction de leur gravité nécessitant une correction immédiate.
- Il devrait être capable d'automatiser la vérification des vulnérabilités.
- Il devrait revérifier les exploits trouvés précédemment.
- Il doit générer des rapports et des journaux de vulnérabilité détaillés.
Une fois que vous savez quels tests vous devez effectuer, vous pouvez former vos ressources de test internes ou engager des consultants experts pour effectuer la tâche de pénétration à votre place.
Outils de test de pénétration recommandés
# 1) Acunetix
Acunetix WVS offre aux professionnels de la sécurité et aux ingénieurs logiciels une gamme de fonctionnalités étonnantes dans un package simple, simple et très robuste.
=> Essayez le meilleur outil de test de stylo ici
# 2) Intrus
Intrus est un puissant scanner de vulnérabilités qui détecte les faiblesses de cybersécurité dans votre parc numérique, explique les risques et aide à les corriger avant qu'une brèche ne se produise. C'est l'outil parfait pour vous aider à automatiser vos efforts de test d'intrusion.
Principales caractéristiques :
- Plus de 9 000 contrôles automatisés sur l'ensemble de votre infrastructure informatique.
- Contrôles de l'infrastructure et de la couche Web, tels que l'injection SQL et les scripts intersites.
- Analyse automatiquement vos systèmes lorsque de nouvelles menaces sont découvertes.
- Intégrations multiples: AWS, Azure, Google Cloud, API, Jira, Teams, etc.
- Intruder propose un essai gratuit de 30 jours de son plan Pro.
Société de test de pénétration recommandée
# 1) ImmuniWeb®
ImmuniWeb® est une société de tests d'intrusion basée à Genève, en Suisse. Sa plate-forme de test de pénétration d'applications compatible DevSecOps combine les humains et l'intelligence artificielle et est livrée avec un SLA sans faux positif, une détection de vulnérabilité la plus élevée et des rapports exploitables.
ImmuniWeb propose des tests complets de pénétration des applications des applications Web et mobiles internes et externes, des API et des services Web, des serveurs de messagerie, des appareils IoT, etc.
Principales caractéristiques:
- Détection continue de nouveau code.
- Tests manuels rapides et rentables.
- Capacités de correction virtuelle en un clic.
- Accès 24/7 aux analystes de sécurité.
- Intégration DevSecOps et CI / CD.
- Commande instantanée et livraison rapide.
- Tableau de bord multirôle.
Autres outils gratuits:
Services commerciaux:
Vous pouvez également vous référer à la liste ci-dessous disponible à STH qui parle de 37 puissants outils de test de pénétration => Outils de test de pénétration puissants pour chaque testeur de pénétration
comment utiliser arrays.sort en java
Pourquoi les tests de pénétration?
Vous devez avoir entendu parler de l'attaque du ransomware WannaCry qui a commencé en mai 2017. Elle a verrouillé plus de 2 ordinateurs lakh dans le monde et a exigé des paiements de rançon dans la crypto-monnaie Bitcoin. Cette attaque a touché de nombreuses grandes organisations à travers le monde.
Avec des cyberattaques aussi massives et dangereuses qui se produisent ces jours-ci, il est devenu inévitable de faire des tests de pénétration à intervalles réguliers pour protéger les systèmes d'information contre les failles de sécurité.
Ainsi, les tests de pénétration sont principalement requis pour:
- Les données financières ou critiques doivent être sécurisées lors de leur transfert entre différents systèmes ou sur le réseau.
- De nombreux clients demandent des tests de stylet dans le cadre du cycle de publication du logiciel.
- Pour sécuriser les données des utilisateurs.
- Pour rechercher des vulnérabilités de sécurité dans une application.
- Découvrir les failles du système.
- Évaluer l'impact commercial des attaques réussies.
- Pour répondre à la conformité de la sécurité de l'information dans l'organisation.
- Mettre en œuvre une stratégie de sécurité efficace dans l'organisation.
Toute organisation doit identifier les problèmes de sécurité présents dans le réseau interne et les ordinateurs. En utilisant ces informations, l'organisation peut planifier une défense contre toute tentative de piratage. La confidentialité des utilisateurs et la sécurité des données sont les plus grandes préoccupations de nos jours.
Imaginez si un pirate parvient à obtenir les détails des utilisateurs d'un site de réseautage social comme Facebook. L'organisation peut faire face à des problèmes juridiques en raison d'une petite faille laissée dans un système logiciel. Par conséquent, les grandes organisations recherchent des certifications de conformité PCI (Payment Card Industry) avant de faire des affaires avec des clients tiers.
Que faut-il tester?
- Logiciel (système d'exploitation, services, application)
- Matériel
- Réseau
- Processus
- Comportement de l'utilisateur final
Types de tests de pénétration
# 1) Test d'ingénierie sociale: Dans ce test, des tentatives sont faites pour amener une personne à révéler des informations sensibles comme un mot de passe, des données critiques pour l'entreprise, etc. Ces tests sont principalement effectués par téléphone ou Internet et ciblent certains services d'assistance, employés et processus.
Les erreurs humaines sont les principales causes de la vulnérabilité de la sécurité. Les normes et politiques de sécurité doivent être suivies par tous les membres du personnel pour éviter les tentatives de pénétration d'ingénierie sociale. Un exemple de ces normes inclut de ne mentionner aucune information sensible dans le courrier électronique ou la communication téléphonique. Des audits de sécurité peuvent être menés pour identifier et corriger les défauts de processus.
# 2) Test d'application Web: En utilisant des méthodes logicielles, on peut vérifier si l'application est exposée à des vulnérabilités de sécurité. Il vérifie la vulnérabilité de sécurité des applications Web et des programmes logiciels positionnés dans l'environnement cible.
# 3) Test de pénétration physique: Des méthodes de sécurité physique solides sont appliquées pour protéger les données sensibles. Ceci est généralement utilisé dans les installations militaires et gouvernementales. Tous les périphériques réseau physiques et points d'accès sont testés pour les possibilités de toute faille de sécurité. Ce test n'est pas très pertinent pour la portée des tests logiciels.
# 4) Test des services réseau : Il s'agit de l'un des tests de pénétration les plus couramment effectués, dans lequel les ouvertures du réseau sont identifiées par quelle entrée est effectuée dans les systèmes du réseau pour vérifier le type de vulnérabilités. Cela peut être fait localement ou à distance.
# 5) Test côté client : Il vise à rechercher et à exploiter les vulnérabilités des programmes logiciels côté client.
# 6) Cadran de guerre commuté à distance : Il recherche des modems dans l'environnement et essaie de se connecter aux systèmes connectés via ces modems en devinant le mot de passe ou en forçant brutalement.
# 7) Test de sécurité sans fil : Il découvre les hotspots ou réseaux Wi-Fi ouverts, non autorisés et moins sécurisés et se connecte à travers eux.
Les 7 catégories ci-dessus que nous avons vues sont une façon de catégoriser les types de tests de stylo. Nous pouvons également organiser les types de tests de pénétration en trois parties, comme indiqué ci-dessous:
Discutons de ces approches de test une par une:
- Test de pénétration de la boîte noire : Dans cette approche, le testeur évalue le système, le réseau ou le processus cible sans en connaître les détails. Ils ont juste un très haut niveau d'entrées comme l'URL ou le nom de l'entreprise à l'aide desquelles ils pénètrent dans l'environnement cible. Aucun code n'est en cours d'examen dans cette méthode.
- Test de pénétration en boîte blanche : Dans cette approche, le testeur est équipé de détails complets sur l'environnement cible - Systèmes, réseau, OS, adresse IP, code source, schéma, etc. Il examine le code et découvre les erreurs de conception et de développement. C'est une simulation d'une attaque de sécurité interne.
- Test de pénétration de la boîte grise : Dans cette approche, le testeur dispose de détails limités sur l'environnement cible. Il s'agit d'une simulation d'attaques de sécurité externes.
Techniques de test au stylo
- Test de pénétration manuel
- Utilisation d'outils de test de pénétration automatisés
- Combinaison de processus manuel et automatisé
Le troisième processus est plus courant pour identifier toutes sortes de vulnérabilités.
Test de pénétration manuel
Il est difficile de trouver toutes les vulnérabilités à l’aide d’outils automatisés. Certaines vulnérabilités ne peuvent être identifiées que par analyse manuelle. Les testeurs de pénétration peuvent effectuer de meilleures attaques sur les applications en fonction de leurs compétences et de leur connaissance du système pénétré.
Les méthodes comme l'ingénierie sociale ne peuvent être effectuées que par des humains. La vérification manuelle comprend la conception, la logique métier ainsi que la vérification du code.
Processus de test de pénétration:
Discutons du processus réel suivi par les agences de test ou les testeurs d'intrusion. L'identification des vulnérabilités présentes dans le système est la première étape importante de ce processus. Des mesures correctives sont prises sur cette vulnérabilité et les mêmes tests de pénétration sont répétés jusqu'à ce que le système soit négatif à tous ces tests.
Nous pouvons classer ce processus dans les méthodes suivantes:
# 1) Collecte de données: Diverses méthodes, y compris la recherche Google, sont utilisées pour obtenir les données du système cible. On peut également utiliser la technique d'analyse du code source de la page Web pour obtenir plus d'informations sur les versions du système, du logiciel et du plugin.
Il existe de nombreux outils et services gratuits disponibles sur le marché qui peuvent vous donner des informations telles que les noms de bases de données ou de tables, les versions de bases de données, les versions de logiciels, le matériel utilisé et divers plugins tiers utilisés dans le système cible.
# 2) Évaluation de la vulnérabilité: Sur la base des données collectées lors de la première étape, on peut trouver la faiblesse de sécurité dans le système cible. Cela aide les testeurs d'intrusion à lancer des attaques en utilisant des points d'entrée identifiés dans le système.
# 3) Exploit réel: C'est une étape cruciale. Il faut des compétences et des techniques spéciales pour lancer une attaque sur le système cible. Les testeurs de pénétration expérimentés peuvent utiliser leurs compétences pour lancer une attaque sur le système.
# 4) Résultat dans l'analyse et la préparation du rapport: Une fois les tests de pénétration terminés, des rapports détaillés sont préparés pour prendre des mesures correctives. Toutes les vulnérabilités identifiées et les méthodes correctives recommandées sont répertoriées dans ces rapports. Vous pouvez personnaliser le format du rapport de vulnérabilité (HTML, XML, MS Word ou PDF) selon les besoins de votre organisation.
Exemples de scénarios de test de pénétration (scénarios de test)
N'oubliez pas qu'il ne s'agit pas de tests fonctionnels. Dans Pentest, votre objectif est de trouver des failles de sécurité dans le système. Voici quelques cas de test génériques et pas nécessairement applicables à toutes les applications.
- Vérifiez si l'application Web est capable d'identifier les attaques de spam sur les formulaires de contact utilisés sur le site Web.
- Serveur proxy - Vérifiez si le trafic réseau est surveillé par des appliances proxy. Le serveur proxy rend difficile pour les pirates d'obtenir les détails internes du réseau, protégeant ainsi le système contre les attaques externes.
- Filtres de courrier indésirable - Vérifiez si le trafic des e-mails entrants et sortants est filtré et si les e-mails non sollicités sont bloqués.
- De nombreux clients de messagerie sont livrés avec des filtres anti-spam intégrés qui doivent être configurés selon vos besoins. Ces règles de configuration peuvent être appliquées aux en-têtes, à l'objet ou au corps des e-mails.
- Pare-feu - Assurez-vous que tout le réseau ou les ordinateurs sont protégés par des pare-feu. Un pare-feu peut être un logiciel ou du matériel pour bloquer l'accès non autorisé à un système. Un pare-feu peut empêcher l'envoi de données en dehors du réseau sans votre autorisation.
- Essayez d'exploiter tous les serveurs, systèmes de bureau, imprimantes et périphériques réseau.
- Vérifiez que tous les noms d'utilisateur et mots de passe sont cryptés et transférés via des connexions sécurisées telles que https.
- Vérifier les informations stockées dans cookies de site Web . Il ne doit pas être dans un format lisible.
- Vérifiez les vulnérabilités trouvées précédemment pour vérifier si le correctif fonctionne.
- Vérifiez s'il n'y a pas de port ouvert sur le réseau.
- Vérifiez tous les appareils téléphoniques.
- Vérifiez la sécurité du réseau WIFI.
- Vérifiez toutes les méthodes HTTP. Les méthodes PUT et Delete ne doivent pas être activées sur un serveur Web.
- Vérifiez si le mot de passe répond aux normes requises. Le mot de passe doit comporter au moins 8 caractères contenant au moins un chiffre et un caractère spécial.
- Le nom d'utilisateur ne doit pas être comme «admin» ou «administrator».
- La page de connexion de l'application doit être verrouillée après quelques tentatives de connexion infructueuses.
- Les messages d'erreur doivent être génériques et ne doivent pas mentionner de détails d'erreur spécifiques tels que «Nom d'utilisateur invalide» ou «Mot de passe invalide».
- Vérifiez si les caractères spéciaux, les balises HTML et les scripts sont correctement gérés en tant que valeur d'entrée.
- Les détails du système interne ne doivent être révélés dans aucun des messages d'erreur ou d'alerte.
- Des messages d'erreur personnalisés doivent être affichés aux utilisateurs finaux en cas de plantage de la page Web.
- Vérifiez l'utilisation des entrées de registre. Les informations sensibles ne doivent pas être conservées dans le registre.
- Tous les fichiers doivent être analysés avant de les télécharger sur le serveur.
- Les données sensibles ne doivent pas être transmises dans les URL lors de la communication avec différents modules internes de l'application Web.
- Il ne devrait y avoir aucun nom d'utilisateur ou mot de passe codé en dur dans le système.
- Vérifiez tous les champs d'entrée avec une longue chaîne d'entrée avec et sans espaces.
- Vérifiez si la fonctionnalité de réinitialisation du mot de passe est sécurisée.
- Vérifier l'application pour Injection SQL .
- Vérifier l'application pour Script intersite .
- Les validations d'entrée importantes doivent être effectuées côté serveur au lieu des vérifications JavaScript côté client.
- Les ressources essentielles du système devraient être disponibles uniquement pour les personnes et services autorisés.
- Tous les journaux d'accès doivent être conservés avec les autorisations d'accès appropriées.
- Vérifiez que la session utilisateur se termine lors de la déconnexion.
- Vérifiez que la navigation dans les répertoires est désactivée sur le serveur.
- Vérifiez que toutes les applications et versions de base de données sont à jour.
- Vérifiez la manipulation d'URL pour vérifier si une application Web n'affiche aucune information indésirable.
- Vérifiez la fuite de mémoire et le dépassement de la mémoire tampon.
- Vérifiez si le trafic réseau entrant est analysé pour détecter les attaques de chevaux de Troie.
- Vérifiez si le système est à l'abri des attaques Brute Force - une méthode d'essai et d'erreur pour trouver des informations sensibles comme les mots de passe.
- Vérifiez si le système ou le réseau est protégé contre les attaques DoS (déni de service). Le pirate peut cibler le réseau ou un seul ordinateur avec des demandes continues en raison de la surcharge des ressources du système cible, ce qui entraîne un déni de service pour les demandes légitimes.
- Vérifiez l'application pour les attaques par injection de script HTML.
- Vérifiez contre les attaques COM et ActiveX.
- Vérifiez contre les attaques d'usurpation d'identité. L'usurpation d'identité peut être de plusieurs types - usurpation d'adresse IP, usurpation d'ID d'e-mail,
- Usurpation ARP, usurpation de référent, usurpation d'identité de l'appelant, empoisonnement des réseaux de partage de fichiers, usurpation GPS.
- Recherchez une attaque de chaîne de format incontrôlée - une attaque de sécurité qui peut provoquer le blocage de l'application ou exécuter le script nuisible dessus.
- Vérifier l'attaque par injection XML - utilisée pour modifier la logique prévue de l'application.
- Vérifiez contre les attaques de canonisation.
- Vérifiez si les pages d'erreur affichent des informations qui peuvent être utiles à un pirate informatique pour entrer dans le système.
- Vérifiez si des données critiques telles que le mot de passe sont stockées dans des fichiers secrets sur le système.
- Vérifiez si l'application renvoie plus de données que nécessaire.
Ce ne sont que les scénarios de test de base pour démarrer avec Pentest. Il existe des centaines de méthodes de pénétration avancées qui peuvent être effectuées manuellement ou à l'aide d'outils d'automatisation.
Lectures complémentaires:
Normes de test du stylo
- PCI DSS (Norme de sécurité des données de l'industrie des cartes de paiement)
- OWASP (Ouvrir le projet de sécurité des applications Web)
- ISO / CEI 27002 , OSSTMM (Le manuel de méthodologie de test de sécurité Open Source)
Certifications
- GPEN
- Associate Security Tester ( AST )
- Testeur de sécurité senior (SST)
- Testeur de pénétration certifié ( CPT )
Conclusion
Enfin, en tant que testeur de pénétration, vous devez collecter et consigner toutes les vulnérabilités du système. N'ignorez aucun scénario étant donné qu'il ne sera pas exécuté par les utilisateurs finaux.
comment rédiger un plan de test logiciel
Si vous êtes un testeur de pénétration, veuillez aider nos lecteurs avec votre expérience, des conseils et des exemples de cas de test sur la façon d'effectuer efficacement des tests de pénétration.
lecture recommandée
- 19 outils de test de pénétration puissants utilisés par les professionnels en 2021
- Guide du débutant sur les tests de pénétration des applications Web
- Test alpha et test bêta (un guide complet)
- Test de sécurité réseau et meilleurs outils de sécurité réseau
- Guide de test de sécurité des applications Web
- Build Verification Testing (BVT Testing) Guide complet
- Test fonctionnel vs test non fonctionnel
- Meilleurs outils de test de logiciels 2021 (Outils d'automatisation des tests QA)