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.
Lors de l'exécution de scans de sécurité, il est souvent souhaitable d'éviter la détection par des systèmes de sécurité tels que les Systèmes de Détection d'Intrusion (IDS - Intrusion Detection Systems), les Systèmes de Prévention d'Intrusion (IPS - Intrusion Prevention Systems) ou les Pare-feux d'Applications Web (WAF - Web Application Firewalls). Ces systèmes surveillent le trafic réseau à la recherche de modèles malveillants. Nikto inclut des techniques d'évasion intégrées pour aider à masquer ses scans et les rendre moins évidents pour de tels systèmes.
Dans ce laboratoire, vous apprendrez à utiliser l'option -evasion de Nikto pour effectuer des scans plus discrets.
Comprendre les techniques d'évasion disponibles avec -evasion
Dans cette étape, vous apprendrez à lister et à comprendre les différentes techniques d'évasion disponibles dans Nikto. L'option -evasion (ou -e) est utilisée pour spécifier une technique d'évasion. Pour voir toutes les techniques disponibles, vous pouvez exécuter Nikto avec uniquement l'option -evasion et aucun numéro de technique spécifique.
Listons les techniques disponibles. Ouvrez votre terminal et exécutez la commande suivante :
nikto -evasion
Vous verrez une liste des techniques disponibles avec un numéro et une courte description pour chacune.
- Evasion options:
1 Random URI encoding (non-UTF8)
2 Directory self-reference (/./)
3 Premature URL ending
4 Prepend long random string to request
5 Fake parameter
6 GET instead of HEAD
7 Use a random User-Agent
8 Random case sensitivity
A Use a random IP for the Source-IP
B Obfuscate with TABs
C Use a carriage return (CR) as a line-ending
D Use a binary value as a line-ending
E Use a long false request to mis-direct an IDS
F Use Windows-style directory separators (\)
Cette sortie montre les différentes méthodes que Nikto peut utiliser pour modifier ses requêtes afin d'éviter la détection. Dans les étapes suivantes, nous nous entraînerons à utiliser certaines de ces techniques.
Exécuter un scan avec -evasion 1 pour l'encodage aléatoire d'URI
Dans cette étape, vous utiliserez la première technique d'évasion, "Random URI encoding" (encodage aléatoire d'URI). Cette technique encode des parties de l'URI de la requête d'une manière non standard. Bien que les serveurs web comprennent généralement ces encodages, les IDS basés sur des signatures simples peuvent ne pas réussir à faire correspondre les modèles, permettant ainsi à la requête de passer inaperçue.
Nous allons effectuer un scan sur le serveur web simple qui a été démarré pour vous dans la configuration du laboratoire. Il fonctionne sur http://127.0.0.1:8000.
Pour utiliser la technique 1, vous ajoutez le numéro à l'option -evasion. Exécutez la commande suivante dans votre terminal :
nikto -h http://127.0.0.1:8000 -evasion 1
Nikto va maintenant commencer à scanner la cible. Le scan se déroulera comme d'habitude, mais les requêtes envoyées au serveur auront leurs URIs encodées de manière aléatoire.
Voici un exemple de la sortie que vous pourriez voir :
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ 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)
+ Server leaks a possible file system path: /home/labex/project/test-site/. This may suggest the server is running on a Unix-like system.
+ Allowed HTTP Methods: GET, HEAD, OPTIONS
+ Public HTTP Methods: GET, HEAD, OPTIONS
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time: ... (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
Notez que le scan se termine et fournit des résultats, mais les requêtes sous-jacentes ont été modifiées pour être plus évasives.
Essayer un scan avec -evasion 2 pour la référence d'auto-répertoire
Maintenant, essayons une autre technique. La technique d'évasion 2 utilise la "référence d'auto-répertoire" (Directory self-reference). Cette méthode insère /./ dans les URLs des requêtes (par exemple, /cgi-bin/ devient /./cgi-bin/). La plupart des serveurs web normaliseront ce chemin et le traiteront comme une requête régulière, mais cela peut confondre certains filtres de sécurité qui recherchent des correspondances de chemin exactes.
Exécutez un scan Nikto en utilisant la technique d'évasion 2 contre la même cible :
nikto -h http://127.0.0.1:8000 -evasion 2
Le scan s'exécutera à nouveau, mais cette fois en utilisant l'astuce de la référence d'auto-répertoire. La sortie sera très similaire au scan précédent, car le serveur répond correctement aux requêtes modifiées.
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ 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.
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Le point clé à retenir est que vous obtenez toujours des résultats de scan valides tout en utilisant des techniques qui peuvent aider à contourner la surveillance de sécurité.
Utiliser -evasion 4 pour préfixer de longues chaînes aléatoires
Dans cette étape, nous allons explorer la technique d'évasion 4, qui préfixe une longue chaîne aléatoire à la requête. L'idée derrière cette technique est de pousser la partie malveillante ou intéressante réelle de la requête au-delà de la limite du tampon de certains IDS/IPS simples. Si l'IDS n'inspecte que la première partie d'une requête, il pourrait manquer la charge utile réelle.
Exécutons un scan en utilisant cette technique.
nikto -h http://127.0.0.1:8000 -evasion 4
Une fois de plus, Nikto effectuera son scan, mais chaque requête sera préfixée par une longue chaîne aléatoire. Le serveur web ignorera ces données inutiles, mais cela peut être un moyen efficace de tromper les systèmes de sécurité basés sur la correspondance de modèles.
La sortie sera similaire aux scans précédents, démontrant que la technique n'interfère pas avec l'efficacité du scan contre le serveur cible.
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Combiner plusieurs techniques d'évasion en un seul scan
L'une des fonctionnalités les plus puissantes des capacités d'évasion de Nikto est la possibilité de combiner plusieurs techniques en un seul scan. Cela crée des requêtes plus complexes et variées, rendant encore plus difficile la détection du scan par un IDS.
Pour combiner les techniques, il suffit de lister les numéros des techniques que vous souhaitez utiliser les unes après les autres. Par exemple, pour combiner l'encodage d'URI aléatoire (1), la référence d'auto-répertoire (2) et le préfixage de longues chaînes aléatoires (4), vous utiliseriez -evasion 124.
Exécutons un scan combinant ces trois techniques :
nikto -h http://127.0.0.1:8000 -evasion 124
Nikto appliquera maintenant les trois techniques à ses requêtes, créant un scan hautement obfusqué. Cette approche multicouche augmente considérablement les chances de contourner la détection.
La sortie affichera à nouveau les mêmes résultats, confirmant que la combinaison des techniques d'évasion n'a pas altéré la fonctionnalité du scan.
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
En combinant les techniques, vous pouvez créer une stratégie de scan beaucoup plus robuste et discrète, adaptée aux défenses spécifiques que vous anticipez.
Résumé
Dans ce laboratoire, vous avez appris à utiliser les puissantes fonctionnalités d'évasion de Nikto pour effectuer des scans de vulnérabilités web plus discrets. Vous avez commencé par lister les techniques disponibles avec l'option -evasion. Vous avez ensuite pratiqué l'application de techniques individuelles, notamment l'encodage d'URI aléatoire (1), la référence d'auto-répertoire (2) et le préfixage de longues chaînes aléatoires (4).
Enfin, vous avez appris à combiner ces techniques pour créer une stratégie d'évasion multicouche, augmentant considérablement la difficulté pour les systèmes de détection d'intrusion d'identifier votre activité de scan. Ces compétences sont essentielles pour effectuer des évaluations de sécurité efficaces et discrètes dans des environnements avec une surveillance active.


