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.
Lorsque Nikto envoie des requêtes à un serveur cible, il s'identifie à l'aide d'une chaîne "User-Agent" par défaut. Cette chaîne peut être facilement détectée par les pare-feux ou les systèmes de détection d'intrusion, qui pourraient bloquer le scan. Pour effectuer un scan plus discret, vous pouvez "usurper" ou modifier le User-Agent pour imiter un navigateur web courant.
Dans ce laboratoire, vous apprendrez à identifier le User-Agent par défaut de Nikto, puis à le modifier en utilisant l'option -useragent pour rendre vos scans moins discrets.
Identifier le User-Agent Nikto par défaut à partir d'un scan de test
Dans cette étape, vous allez exécuter un scan Nikto de base contre un serveur web local pour voir sa chaîne User-Agent par défaut. Un serveur web Python simple a été démarré pour vous en arrière-plan, qui enregistre toutes les requêtes entrantes dans un fichier nommé access.log.
Tout d'abord, exécutez un scan Nikto standard ciblant le serveur local fonctionnant sur le port 8000. Ouvrez votre terminal et exécutez la commande suivante :
nikto -h http://localhost:8000
Nikto effectuera une série de tests. Nous ne nous intéressons pas aux résultats du scan eux-mêmes, mais à l'entrée de journal qu'il crée.
Une fois le scan terminé, affichez le contenu du fichier journal pour voir comment le serveur a enregistré la requête de Nikto. Utilisez la commande cat :
cat ~/project/access.log
Vous devriez voir des entrées de journal qui incluent le User-Agent par défaut de Nikto. Cela ressemblera à ceci, identifiant clairement le scanner.
127.0.0.1 - "GET / HTTP/1.1" Mozilla/5.0 (X11; Linux x86_64) Nikto/2.5.0 (Evasions:None) (Test:Port Check)
127.0.0.1 - "GET /icons/blank.gif HTTP/1.1" Mozilla/5.0 (X11; Linux x86_64) Nikto/2.5.0 (Evasions:None) (Test:Port Check)
... (autres entrées de journal) ...
Remarquez la partie Nikto/2.5.0 de la chaîne. C'est la signature que nous voulons masquer dans les étapes suivantes.
Choisir une chaîne User-Agent de navigateur courante à imiter
Dans cette étape, nous allons sélectionner une chaîne User-Agent d'un navigateur web courant. L'objectif est de faire en sorte que notre trafic de scan ressemble à celui d'un utilisateur régulier, et non à celui d'un outil automatisé. Cela aide à contourner les règles de détection simples qui bloquent le trafic basé sur des User-Agents de scanners connus.
Il existe de nombreuses ressources en ligne pour trouver les chaînes User-Agent actuelles. Pour ce laboratoire, nous utiliserons un User-Agent typique pour le navigateur Firefox sur une machine Windows.
Voici la chaîne que nous utiliserons :
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Cette étape est purement informative. Vous n'avez pas besoin d'exécuter de commandes. Familiarisez-vous simplement avec la chaîne ci-dessus, car vous l'utiliserez dans les étapes suivantes.
Utiliser l'option -useragent pour définir la nouvelle chaîne
Dans cette étape, vous apprendrez comment construire la commande Nikto pour utiliser le nouveau User-Agent usurpé. Nikto fournit une option de ligne de commande spécifique à cet effet : -useragent.
La syntaxe de cette option est simple. Vous ajoutez -useragent à votre commande, suivi de la nouvelle chaîne que vous souhaitez utiliser. Comme les chaînes User-Agent contiennent des espaces et des caractères spéciaux, il est crucial d'encapsuler la chaîne entière entre guillemets doubles (").
Voici comment vous construiriez la commande pour scanner notre serveur local avec le User-Agent Firefox que nous avons choisi à l'étape précédente :
nikto -h http://localhost:8000 -useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"
Dans cette étape, vous devez seulement comprendre comment la commande est construite. Vous l'exécuterez à l'étape suivante.
Exécuter un scan avec le User-Agent usurpé
Dans cette étape, vous allez exécuter le scan Nikto en utilisant le User-Agent personnalisé. Pour vous assurer que nous ne voyons que les résultats de notre nouveau scan, il est conseillé de d'abord vider l'ancien fichier journal.
Videz le fichier access.log avec la commande suivante :
> ~/project/access.log
Cette commande écrase le fichier, le laissant vide. Maintenant, exécutez le scan Nikto avec l'option -useragent et la chaîne Firefox.
nikto -h http://localhost:8000 -useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"
Nikto va maintenant exécuter le même scan qu'auparavant, mais chaque requête qu'il enverra portera la chaîne User-Agent de Firefox au lieu de celle par défaut de Nikto. Laissez le scan se terminer.
Vérifier le nouveau User-Agent dans les journaux du serveur ou un proxy
Dans cette dernière étape, vous allez vérifier que l'usurpation du User-Agent a réussi. Nous allons consulter à nouveau le fichier journal du serveur pour voir quel User-Agent a été enregistré lors du dernier scan.
Utilisez la commande cat pour afficher le contenu de access.log :
cat ~/project/access.log
Cette fois, la sortie devrait être différente. Au lieu de voir "Nikto" dans les journaux, vous verrez la chaîne User-Agent de Firefox que vous avez spécifiée.
127.0.0.1 - "GET / HTTP/1.1" Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
127.0.0.1 - "GET /icons/blank.gif HTTP/1.1" Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
... (autres entrées du journal) ...
Comme vous pouvez le constater, le journal affiche maintenant un User-Agent Firefox standard. Le mot "Nikto" a disparu, cachant ainsi avec succès l'identité de notre scanner des journaux de base du serveur.
Résumé
Dans ce laboratoire, vous avez appris une technique fondamentale pour rendre les scans de sécurité plus discrets. Vous avez réussi à usurper la chaîne User-Agent dans Nikto pour imiter un navigateur web standard.
Vous avez appris à :
- Exécuter un scan Nikto par défaut pour établir une référence.
- Inspecter les journaux du serveur pour identifier le User-Agent Nikto par défaut.
- Utiliser l'option de ligne de commande
-useragentpour spécifier une chaîne personnalisée. - Exécuter un nouveau scan avec le User-Agent usurpé.
- Vérifier le changement en consultant à nouveau les journaux du serveur.
Cette compétence est essentielle pour les testeurs d'intrusion et les professionnels de la sécurité qui doivent effectuer des évaluations de vulnérabilité sans être immédiatement bloqués ou détectés par les systèmes de sécurité.


