Introduction
Nikto est un scanner de serveurs web open-source populaire qui effectue des tests complets sur les serveurs web pour plusieurs éléments, notamment plus de 6700 fichiers/programmes potentiellement dangereux, des vérifications de versions obsolètes pour plus de 1250 serveurs, et des problèmes spécifiques à la version sur plus de 270 serveurs.
Par défaut, Nikto effectue des recherches DNS inversées sur les adresses IP qu'il trouve dans le contenu du serveur web. Bien que cela puisse être utile pour découvrir des noms d'hôtes associés, cela peut également ralentir considérablement le scan, en particulier lors de l'analyse de grands réseaux ou de cibles non réactives.
Dans ce laboratoire, vous apprendrez à utiliser l'option -nolookup pour désactiver cette fonctionnalité et comparerez les temps de scan pour comprendre les avantages en termes de performance.
Comprendre l'objectif de l'option -nolookup
Dans cette étape, vous allez découvrir l'option -nolookup dans Nikto.
Lorsque Nikto scanne un serveur web, il peut trouver des adresses IP dans les fichiers de configuration, les journaux ou les pages web du serveur. Par défaut, Nikto tente d'effectuer une recherche DNS inversée pour chacune de ces adresses IP afin de trouver les noms d'hôtes associés. Ce processus peut prendre du temps.
L'option -nolookup indique à Nikto de sauter complètement cette étape. Cela peut se traduire par un scan beaucoup plus rapide, mais vous manquerez des informations potentiellement précieuses sur d'autres noms d'hôtes associés à la cible.
Vous pouvez voir cette option et d'autres en consultant le menu d'aide de Nikto. Faisons cela maintenant.
Exécutez la commande suivante dans votre terminal :
nikto -Help
Faites défiler la sortie et trouvez l'option -nolookup. Elle sera listée avec une brève description.
...
-nolookup Skip name lookups
...
Maintenant que vous comprenez ce que fait -nolookup, nous pouvons passer à sa mise en pratique.
Exécuter un scan de référence sur une cible en utilisant son adresse IP
Dans cette étape, vous allez effectuer un scan Nikto standard sur un serveur web local. Nous utiliserons la commande time pour mesurer la durée du scan. Cela servira de référence pour la comparaison.
L'environnement de laboratoire a déjà démarré un serveur web Nginx simple fonctionnant sur 127.0.0.1. Nous l'utiliserons comme cible.
Pour exécuter le scan et mesurer son temps, exécutez la commande suivante :
time nikto -h 127.0.0.1
Le scan va démarrer, et vous verrez une sortie similaire à celle ci-dessous. Soyez patient, car cela peut prendre une minute pour se terminer.
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: localhost
+ Target Port: 80
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: nginx/1.18.0 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ Retrieved x-powered-by header: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD
+ Public HTTP Methods: GET, HEAD
+ OSVDB-3233: /index.html: Server may leak inodes via ETags, header found with file /var/www/html/index.html inode 262204, size 612, mtime ...
+ 7554 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time: ... (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
real 0m15.543s
user 0m14.987s
sys 0m0.312s
Portez une attention particulière aux trois dernières lignes, qui correspondent à la sortie de la commande time. Le temps real est le temps total écoulé en horloge réelle. Notez cette valeur pour la prochaine étape.
Exécuter à nouveau le même scan avec le drapeau -nolookup
Maintenant que vous avez un temps d'exécution de référence, exécutons exactement le même scan mais avec l'ajout du drapeau -nolookup. Cela empêchera Nikto d'effectuer des recherches DNS inversées.
Exécutez la commande suivante dans votre terminal :
time nikto -h 127.0.0.1 -nolookup
Le scan s'exécutera à nouveau. La sortie de Nikto elle-même sera très similaire au scan précédent, mais vous devriez remarquer une différence dans le temps d'exécution rapporté par la commande time.
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 80
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: nginx/1.18.0 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ Retrieved x-powered-by header: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD
+ Public HTTP Methods: GET, HEAD
+ OSVDB-3233: /index.html: Server may leak inodes via ETags, header found with file /var/www/html/index.html inode 262204, size 612, mtime ...
+ 7554 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time: ... (8 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
real 0m8.123s
user 0m7.890s
sys 0m0.201s
Remarquez que le Target Hostname dans la sortie est maintenant 127.0.0.1 au lieu de localhost. C'est parce que Nikto n'a pas effectué la recherche inversée pour résoudre l'IP en un nom d'hôte. Prenez également note du nouveau temps real.
Comparer le temps d'exécution des deux scans
Dans cette étape, vous allez analyser les résultats des deux étapes précédentes pour observer l'impact sur les performances du drapeau -nolookup.
Examinons le temps real des deux commandes.
Scan 1 (Référence) :
real 0m15.543s (Votre temps peut varier légèrement)
Scan 2 (avec -nolookup) :
real 0m8.123s (Votre temps peut varier légèrement)
Comme vous pouvez le constater, le scan avec le drapeau -nolookup s'est terminé beaucoup plus rapidement. Dans cet exemple, il était presque deux fois plus rapide. Le gain de performance peut être encore plus spectaculaire lors du scan de plusieurs hôtes ou cibles sur des réseaux lents ou mal configurés où les recherches DNS pourraient expirer.
Cette simple comparaison démontre le bénéfice direct en termes de performance de la désactivation des recherches DNS dans vos scans Nikto.
Analyser quand utiliser cette optimisation des performances
Dans cette dernière étape, nous discuterons des compromis et déterminerons quand il est approprié d'utiliser l'option -nolookup.
Bien que -nolookup offre un gain de performance évident, cela se fait au détriment d'une perte potentielle d'informations. Les recherches DNS inversées peuvent vous aider à découvrir d'autres noms d'hôtes et hôtes virtuels associés à une adresse IP, ce qui peut être crucial pour une évaluation de sécurité complète.
Alors, quand devriez-vous utiliser -nolookup ?
- Scans initiaux et triage : Lorsque vous scannez un grand nombre d'hôtes et que vous souhaitez obtenir un aperçu rapide des vulnérabilités potentielles. La vitesse est plus importante que les détails exhaustifs à ce stade.
- Scan par adresse IP : Si votre liste de cibles ne contient que des adresses IP et que vous ne vous souciez pas de découvrir les noms de domaine associés, l'utilisation de
-nolookupest un choix logique. - Réseaux peu fiables : Lors du scan sur une connexion réseau lente ou peu fiable où les requêtes DNS pourraient échouer ou expirer,
-nolookuppeut empêcher le scan de se bloquer. - Lorsque la vitesse est critique : Dans des situations où le temps est un facteur important, comme lors d'une compétition de test d'intrusion ou d'une réponse rapide à un incident, la vitesse gagnée grâce à cette option peut être inestimable.
Quand devriez-vous éviter -nolookup ?
- Évaluation complète : Lors de la réalisation d'un audit de sécurité complet et approfondi d'une cible spécifique, vous souhaitez obtenir autant d'informations que possible. Les noms d'hôtes découverts par les recherches DNS pourraient révéler des surfaces d'attaque supplémentaires.
- Découverte d'hôtes virtuels : Si vous suspectez que l'adresse IP cible héberge plusieurs sites Web (hébergement virtuel), vous devriez permettre à Nikto d'effectuer des recherches pour aider à les identifier.
Comprendre ce compromis entre vitesse et exhaustivité vous permet d'utiliser Nikto plus efficacement pour différents scénarios.
Résumé
Dans ce laboratoire, vous avez appris à optimiser vos scans Nikto pour la vitesse. Vous avez commencé par comprendre le but du drapeau -nolookup, qui désactive les recherches DNS inversées.
Vous avez ensuite effectué deux scans : un scan de référence et un second scan utilisant l'option -nolookup. En comparant les temps d'exécution avec la commande time, vous avez observé une amélioration significative des performances.
Enfin, vous avez analysé les compromis, concluant que -nolookup est idéal pour les scans rapides et à grande échelle ou lorsque la vitesse est une priorité, tandis que les scans complets pour des évaluations approfondies devraient omettre ce drapeau afin de collecter autant d'informations que possible.


