Question:
Méthodologie d'attaque de serveur Web: pourquoi s'embêter avec des tests manuels si le scanner de vulnérabilité fait tout?
botanga
2020-02-29 18:54:54 UTC
view on stackexchange narkive permalink

Je lis un livre sur le piratage au chapeau blanc issu d'une certification célèbre. On dit que la méthodologie pour pirater un serveur Web est:

  • collecte d'informations (nom de domaine, DNS, IP, etc. )
  • empreinte (ex: capture de bannière)
  • mise en miroir de site Web
  • analyse de vulnérabilité
  • piratage de session
  • mot de passe cracking

Hormis le détournement de session et la collecte d'informations, je ne vois pas pourquoi je ne lancerais pas simplement Acunetix Web App Scanner et / ou Nessus pour trouver toutes les faiblesses.

Quel est l'intérêt d'effectuer des tests manuels si vous pouvez les automatiser?

Par exemple, si le scanner de vulnérabilité ne sait pas comment trouver les cookies vulnérables, et si je trouve manuellement un moyen de détourner une session, Je ne pourrai pas former Acunetix de Nessus pour ça. Même si je le faisais, je ne sais pas à quel point ce serait bénéfique.

Veuillez expliquer pourquoi je ne laisserais pas simplement mon outil faire le piratage pour moi.

Pourquoi apprendre une langue si vous avez Google Traduction?Parce que les outils automatisés ne fonctionnent pas aussi bien que les gens.
@MechMK1 Hahaha.Bien dit.Je pense que vous m'avez convaincu.Cela devrait être une réponse
J'ai demandé à plusieurs projets de passer tous les scans Nessus, puis j'ai demandé à un consultant en sécurité de jeter un coup d'œil et 12 heures plus tard, il s'est connecté en tant que compte administrateur et a changé mon mot de passe - le scanner de vulnérabilité ne peut pas trouver toutes les vulnérabilités simplement parce que le logiciel n'a pas de créativité
Un outil traite votre ressource comme une boîte noire.Un humain peut utiliser ses connaissances pour les traiter au moins partiellement comme une boîte blanche.
Les outils automatisés peuvent être un bon début, mais cela ne devrait jamais s'arrêter là.
Comment de tels outils existeraient-ils si personne n'apprend ce genre de choses?
Cinq réponses:
schroeder
2020-02-29 19:34:13 UTC
view on stackexchange narkive permalink

Vous avez plusieurs hypothèses ici:

  • les scanners peuvent trouver toutes les vulnérabilités
  • si un scanner ne peut pas trouver une vulnérabilité, alors il n'y a aucune vulnérabilité
  • toutes les tâches manuelles peuvent être automatisées
  • les attaquants utiliseraient uniquement des outils automatisés et non des approches manuelles
  • les approches manuelles ne peuvent pas être transformées en outils automatisés sur mesure
  • la recherche de vulnérabilités est la pareil à l'exploitation des vulnérabilités

Aucune de ces hypothèses n'est universellement vraie.

Les scanners automatisés contribuent à rendre le processus de recherche de vulnérabilités plus efficace, mais ils sont loin d'être parfaits et loin d'être complets. Les scanners ne sont pas non plus conçus pour exploiter les vulnérabilités de manière utile.

En pratique, vous souhaitez tester manuellement les résultats d'un scanner (faux positifs) et effectuer des tests manuels pour rechercher des éléments que l'outil automatisé aurait pu manquer.

Les attaquants utiliseront un mélange d'approches puis créeront ou modifieront souvent un outil pour exploiter la vulnérabilité afin qu'elle soit reproductible et fiable. Mais cela ne signifie pas que l'outil fonctionnera dans d'autres situations.

Les tests automatisés sont le seuil de base. Si votre site / programme échoue à un test automatisé, vous avez commis une erreur assez cruelle et elle devrait être corrigée immédiatement (car elle sera facile à trouver). Mais j'ai vu des cas où un développeur a ajouté une vérification de 1 = 1 dans son SQL afin de se cacher des scanners automatiques, mais j'ai pu exploiter le site en utilisant 2 = 2 (les scanners SQL modernes en tiennent compte maintenant). Je ne le savais que grâce à des tests manuels et à mon expérience personnelle. Vous ne pouvez pas encoder l'expérience et l'intuition dans un outil.

Le codage est une activité incroyablement complexe. Cela signifie que les erreurs peuvent également être complexes. Aucun outil n'a pu être créé pour rechercher ou exploiter toutes les vulnérabilités.

Hahaha 2 = 2.C'est une belle.Je comprends que l'expérience ne doit pas être négligée.Dites-moi, savez-vous si des certifications comme CEH ont la bonne approche?Je suis vraiment proche de m'inscrire à ce cert lol je ne veux pas y aller s'il y en a un autre avec une meilleure approche plus réaliste
Ce n'est pas si linéaire.CEH est un bon cert s'il répond à vos besoins dès maintenant.Ce n'est pas le meilleur certificat à utiliser comme seul apprentissage.Il existe de nombreux autres certificats, mais ils sont généralement destinés à des personnes plus expérimentées.CEH est une de ces choses où si vous ne savez rien, c'est bien, mais une fois que vous en apprenez un peu plus, vous commencez à voir pourquoi CEH a des problèmes.Allez en sachant que vous remplacerez probablement tout ce que vous avez appris.
Btw.l'exemple 2 = 2 est également une belle leçon d'une autre manière.Non seulement les tests de pénétration manuels vous aident en votre qualité d'expert en sécurité / testeur de pénétration, etc. à trouver des exploits - si vous ne faites que des tests automatiques, vous entraînez également vos développeurs à battre les tests automatiques au lieu de penser à la sécurité en général, c'est-à-dire qu'ils produisentsécurité factice exactement comme ça 1 = 1 chose.Des tests manuels réguliers qui impliqueront des variations et si ce n'est "par accident" peuvent contrer cela.
Pouvez-vous expliquer en quoi consiste le problème «1 = 1»?Ou dites-moi quoi rechercher pour en savoir plus?
@TomášZato-ReinstateMonica c'est un test d'injection SQL typique: certaines requêtes sont écrites pour être ouvertes à une nouvelle logique entrée dans la requête, comme `SELECT username WHERE userid =% variable%` qui peut devenir `SELECT username WHERE userid =" "OR 1= 1` qui renverrait tous les enregistrements.Le `OR 1 = 1` était un exemple si populaire de SQLi que les scanners l'utilisaient littéralement et les développeurs bloqueraient cette chaîne spécifique.Les scanners modernes utilisent désormais des chaînes aléatoires au lieu de chaînes codées en dur pour les tests.
Donc juste pour clarifier.Le développeur que vous avez mentionné a délibérément ajouté cela pour cacher la vulnérabilité au lieu de la corriger?C'est mauvais.
@TomášZato-ReinstateMonica c'est vrai.L'idée était "bien, c'est comme ça que vous testez et implémentez SQLi, alors nous allons arrêter ça"
Vos deux premières balles sont logiquement équivalentes FYI
@Cruncher vous avez tout à fait raison.Et je sais qu'ils le sont.Donc, la question demeure: pourquoi leur ai-je fait 2 points différents ...?
Demento
2020-02-29 19:39:37 UTC
view on stackexchange narkive permalink
Les outils

DAST ont plusieurs limitations qui doivent être résolues par une inspection manuelle de l'application:

  • Ils ne peuvent pas trouver de failles de logique métier, car ils ne comprennent pas le cas d'utilisation et cas d'utilisation abusive de l'application.
  • Ils ne trouvent que les types et modèles de vulnérabilité connus. Votre kilométrage variera en fonction du niveau de maturité du scanner, mais même les meilleurs scanners ne trouveront pas tous les problèmes.
  • Les modèles complexes présentent souvent des problèmes de sécurité subtils, comme une implémentation personnalisée d'un protocole d'autorisation comme OAuth. Ce n'est qu'en étudiant l'architecture sous-jacente en détail qu'un pentester peut trouver ces failles, tandis qu'un outil automatisé échouera, car ce type d'analyse nécessite un raisonnement d'ordre supérieur.
  • Les charges utiles pour vérifier l'exploitabilité d'une application ont souvent à être conçu pour l'application spécifique. Même si le scanner soupçonne une vulnérabilité, sa vérification doit souvent être effectuée manuellement.

Cela étant dit, un scanner de sécurité est un outil pratique dans l'arsenal d'un testeur de pénétration, pour identifier les faibles fruits suspendus. La majorité du travail sera toujours manuelle.

De plus, en tant que testeur de sécurité, vous devriez toujours faire des tests en boîte blanche, si possible. Cela inclut l'accès au code source, ce qui vous donne également la possibilité d'utiliser les outils SAST. Ces outils souffrent de limitations similaires, mais peuvent être en mesure de trouver différents types de vulnérabilités, et ainsi ajouter une valeur supplémentaire. Mais même avec les outils DAST et SAST combinés, vous n'atteindrez pas la profondeur de test requise sans test manuel, en particulier pour les applications avec un profil de protection élevé.

Ouais, je suis totalement d'accord avec vous sur le défaut de logique métier.
Anonymous
2020-02-29 21:34:42 UTC
view on stackexchange narkive permalink

Voici un sujet très récent qui aborde le même problème: Pourquoi OpenVAS ne trouve pas tous les ports ouverts par rapport à Nmap?. À retenir: chaque outil est différent et peut donner des résultats différents. Sans parler des faux positifs et des différentes méthodologies de test.

En termes simples, les outils automatisés font des suppositions éclairées et interprètent les résultats. Ils font les choses correctement, la plupart du temps, mais vous devez comprendre comment l'outil fonctionne, ce qu'il fait (et ne le fait pas ) et être en mesure de le régler pour des résultats optimaux .

Un exemple simple: par défaut nmap, Openvas etc ne scanne pas tous les ports tcp / udp mais une sélection des ports les plus populaires, soit quelques milliers sur 65535. Si vous n'êtes pas au courant et exécutez les outils avec les paramètres par défaut, vous pouvez très facilement manquer les ports actifs. Par exemple, de nombreux administrateurs système choisissent d'exécuter SSH sur un port aléatoire plutôt que sur le port standard 22.

Les outils automatisés ont généralement de nombreuses options, et pas seulement un bouton - vous devez donc comprendre ce qu'ils font ou vous filmez dans le noir. Ensuite, votre audit n'est pas approfondi et n'a que peu de valeur, car vous ne savez pas ce que vous faites et ce que vous devriez rechercher. Tout ce que vous avez fait est de gratter la surface et de rechercher les défauts les plus évidents.

En d'autres termes, pourquoi devrions-nous engager des pentesters professionnels si tout ce qu'il faut, c'est télécharger et exécuter un outil? Parce qu'un pentester compétent a de l'expérience et ira plus loin et peut trouver des vulnérabilités qu'un script kiddie manquera.

C'est rarement "aussi simple que d'exécuter un outil".

Une machine correctement configurée et exposée sur Internet devrait avoir une sorte de mécanisme de défense intégré: un pare-feu et / ou un IDS qui contrarieront ce genre d'effort de reconnaissance.

Lorsqu'ils détectent une activité d'analyse des ports , ils réagissent généralement en bloquant votre adresse IP, ou ils limitent le trafic, abandonnent certains paquets de manière sélective ou choisissent de renvoyer des résultats délibérément trompeurs pour frustrer les pirates. Vous vous retrouvez avec des résultats incomplets ou carrément faux.

Gardez à l'esprit que des outils comme nmap, Acunetix, etc. sont bruyants et généralement très faciles à repérer (et à bloquer) par un IDS car le trafic qu'ils génèrent a des signatures et des modèles typiques. Donc, à moins que vous ne testiez une machine non protégée ou faiblement protégée (sur un LAN peut-être), vous devrez les régler un peu pour obtenir des résultats significatifs.

La réponse est donc que vous faites les deux : vous utilisez des outils automatisés, puis vous effectuez des tests manuels , en particulier lorsque l'outil a détecté quelque chose, comme un port ouvert, mais n'a pas été en mesure de l'exploiter, ou que vous voulez revérifier.

Au cours d'une année ou même de quelques jours, vous pouvez sonder chaque port ... et ne jamais être détecté une seule fois.Changement de votre IP, MAC, port de sonde, retards de temps - c'est le chat et la souris, et si vous (travaillez) pour le long jeu, alors qu'est-ce que quelques semaines?
secprof
2020-02-29 19:05:14 UTC
view on stackexchange narkive permalink

Les scanners de vulnérabilité ne peuvent pas trouver toutes les vulnérabilités qui peuvent être présentes. Ils recherchent essentiellement des modèles et une exploitabilité de vulnérabilités déjà connues.

De plus, vous pouvez obtenir des faux positifs ou d'autres résultats inattendus lorsque vous utilisez des outils automatisés. Vous avez donc besoin de professionnels capables d'évaluer la sortie et de réaliser des pentestings plus avancés.

Qu'est-ce qu'un "pentesting plus avancé"?Le pentesting avancé CEH?Une certification est-elle vraiment avancée?Des reaserchers hautement qualifiés?Je pose la question parce que presque toutes les certifications donnent le même matériel, ou les résultats de recherches qui sont emballés dans des outils.Donc au final, il semble toujours être question de trouver le bon outil
@botanga CEH est une certification d'entrée de gamme - et une très mauvaise à cela.
@botanga non, cela ne revient pas au bon outil.Cela revient à la bonne approche.Parfois, la bonne approche implique un outil.
OMG.Je pensais investir un gran sur CEH.Ne me dis pas que je vais le regretter lol
@botanga D'après mon expérience, aucun certificat, diplôme ou grade ne peut remplacer quelqu'un avec un réel talent pour trouver des moyens d'exploiter le système.Développer des talents dans ce domaine équivaut à développer des talents dans n'importe quoi d'autre: skateboard, programmation, peinture, etc. - vous avez besoin de beaucoup de pratique et vous avez besoin d'une passion pour cela (car faire quelque chose qui ne vous intéresse pas à plusieurs reprises devient rapidement ennuyeux).Pour certains, aller à l'école (université, école d'art, faculté de droit, etc.) est un moyen de s'entraîner et d'amener les gens à vous guider.Pour certains, passer de nombreux tests est un moyen de prouver qu'ils ont les compétences
... Un certificat ou un diplôme ou un grade n'est qu'une indication pour les autres (et parfois pour vous-même) que vous savez ce que vous faites.Cela ne veut pas dire que tu es bon dans ce domaine
Minh-Triet Pham Tran
2020-03-04 12:48:40 UTC
view on stackexchange narkive permalink

Voici quelques défis difficiles courants (en particulier des activités de reconnaissance et de pivotement) aux scanners automatiques de sécurité des applications qu'ils ne parviennent généralement pas à détecter ou qui pourraient avoir des détections faussement positives:

  • Paramètre caché détection pour une analyse plus approfondie
  • Détection d'URL masquées ou relativement référencées pour une analyse plus approfondie
  • Impact de la sécurité métier / logique pour identifier une vulnérabilité à partir de détections potentielles de faux positifs La menace d'attaques CSRF fait partie de ce type de défi. Les scanners ont également des problèmes avec les vulnérabilités affichées uniquement lorsqu'une valeur spécifique d'un paramètre est définie.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 4.0 sous laquelle il est distribué.
Loading...