Scan de Scripts et Analyse de Services Ciblée
Dans cette étape, nous allons explorer le puissant moteur de scripts (NSE) de Nmap et apprendre à effectuer une analyse de services ciblée. Les scripts NSE étendent les fonctionnalités de Nmap en permettant des scans plus détaillés pour des services et des vulnérabilités spécifiques.
Introduction au Nmap Scripting Engine (NSE)
Le Nmap Scripting Engine permet aux utilisateurs d'écrire et de partager des scripts pour automatiser une variété de tâches réseau. Nmap est livré avec des centaines de scripts pré-écrits, classés en différents groupes :
auth : Scripts liés à l'authentification
default : Scripts exécutés par défaut avec -sC
discovery : Découverte d'hôtes et de services
exploit : Tentative d'exploitation des vulnérabilités
malware : Détection de logiciels malveillants et de portes dérobées
safe : Scripts sûrs et non intrusifs
vuln : Scripts de détection de vulnérabilités
Exécution des scripts par défaut (-sC)
Le flag -sC exécute l'ensemble de scripts par défaut, qui sont généralement sûrs et fournissent des informations utiles :
nmap -sC localhost
Sortie :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey:
| 3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
| 256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_ 256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp open http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp open ipp
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open mysql
|_mysql-info: ERROR: Script execution failed (use -d to debug)
Nmap done: 1 IP address (1 host up) scanned in 3.42 seconds
Remarquez comment les scripts ont fourni des informations supplémentaires sur chaque service, comme les clés d'hôte SSH et les titres de pages HTTP.
Exécution de scripts spécifiques
Vous pouvez exécuter des scripts spécifiques en utilisant le flag --script suivi du nom du script ou de la catégorie :
nmap --script=http-title localhost
Cela exécute uniquement le script http-title, qui récupère le titre des pages HTTP :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp open ipp
|_http-title: Home - CUPS 2.3.1
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 0.68 seconds
Exécution de scripts par catégorie
Vous pouvez exécuter tous les scripts d'une catégorie spécifique :
nmap --script=discovery localhost
Cela exécute tous les scripts de découverte, qui peuvent fournir une mine d'informations sur les services réseau (sortie tronquée pour plus de brièveté) :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00014s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey:
| 3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
| 256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_ 256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp open http
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
| http-methods:
|_ Supported Methods: GET POST OPTIONS HEAD
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp open ipp
| cups-info:
| CUPS Server:
| Server: CUPS/2.3 IPP/2.1
|_ Authentication-Method: Basic
| http-methods:
|_ Supported Methods: GET HEAD OPTIONS POST
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open mysql
| mysql-info:
| Protocol: 10
| Version: 8.0.30-0ubuntu0.20.04.2
| Thread ID: 15
| Capabilities flags: 65535
| Some Capabilities: ConnectWithDatabase, SupportsLoadDataLocal, SupportsTransactions, DontAllowDatabaseTableColumn, Support41Auth, InteractiveClient, Speaks41ProtocolOld, FoundRows, IgnoreSigpipes, ODBCClient, SwitchToSSLAfterHandshake, IgnoreSpaceBeforeParenthesis, LongColumnFlag, Speaks41ProtocolNew, SupportsMultipleStatments, LongPassword, SupportsCompression, SupportsMultipleResults, SupportsAuthPlugins
| Status: Autocommit
| Salt: \x7FeL)\x0C\x5C#S\x06N%\x1E\x7EYaC
|_ Auth Plugin Name: caching_sha2_password
Nmap done: 1 IP address (1 host up) scanned in 5.28 seconds
Combiner le scan de scripts avec la détection de services
Pour obtenir les résultats les plus complets, combinez le scan de scripts avec la détection de services :
nmap -sV -sC localhost
Sortie :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:25 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
| 256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_ 256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
631/tcp open ipp CUPS 2.3
|_http-server-header: CUPS/2.3 IPP/2.1
|_http-title: Home - CUPS 2.3.1
3306/tcp open mysql MySQL 8.0.30-0ubuntu0.20.04.2
|_mysql-info: ERROR: Script execution failed (use -d to debug)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.03 seconds
Analyse de services ciblée
Concentrons-nous sur l'analyse plus détaillée de services spécifiques.
Analyse des services HTTP
Pour analyser les services HTTP en détail, nous pouvons utiliser les scripts http-* :
nmap --script="http-*" -p 80 localhost
Cela exécute tous les scripts liés à HTTP sur le port 80 :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
PORT STATE SERVICE
80/tcp open http
|_http-chrono: Request times for /; avg: 32.68ms; min: 32.68ms; max: 32.68ms
|_http-comments-displayer: Couldn't find any comments.
|_http-date: Thu, 14 Sep 2023 17:30:24 GMT; +6s from local time.
|_http-devframework: Couldn't determine the underlying framework or CMS. Try increasing 'httpspider.maxpagecount' value to spider more pages.
|_http-dombased-xss: Couldn't find any DOM based XSS.
|_http-favicon: Unknown favicon MD5: 6D33949773573A11BEBE0D20AC1B7967
|_http-feed: Couldn't find any feeds.
|_http-fetch: Please enter the complete path of the directory to save data in.
|_http-generator: Couldn't find any generator in the HTML headers and body
| http-methods:
|_ Supported Methods: GET POST OPTIONS HEAD
|_http-mobileversion-checker: No mobile version detected.
|_http-referer-checker: Couldn't find any cross-domain scripts.
|_http-security-headers:
| http-server-header:
| Apache/2.4.41
|_ Apache/2.4.41 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-traceroute: ERROR: Script execution failed (use -d to debug)
|_http-useragent-tester:
|_http-xssed: No previously reported XSS vuln.
Nmap done: 1 IP address (1 host up) scanned in 2.31 seconds
Analyse des services SSH
De même, nous pouvons analyser les services SSH :
nmap --script="ssh-*" -p 22 localhost
Sortie :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:35 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00013s latency).
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey:
| 3072 e2:5d:9c:5c:62:42:44:cd:fc:31:e0:a6:18:11:69:1c (RSA)
| 256 7d:95:f0:2f:7a:95:3a:4d:f3:52:ef:6f:6b:af:01:71 (ECDSA)
|_ 256 90:12:20:de:cb:c0:76:3a:fb:15:db:75:4e:78:fc:d7 (ED25519)
|_ssh-run: ERROR: Script execution failed (use -d to debug)
Nmap done: 1 IP address (1 host up) scanned in 0.26 seconds
Scan de vulnérabilités
Nmap inclut des scripts qui peuvent détecter les vulnérabilités potentielles. L'utilisation de la catégorie vuln peut aider à identifier les problèmes de sécurité :
nmap --script=vuln localhost
Cela peut prendre un certain temps car il exécute diverses vérifications de vulnérabilité. La sortie peut ressembler à ceci :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-09-14 17:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00012s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
|_http-csrf: Couldn't find any CSRF vulnerabilities.
|_http-dombased-xss: Couldn't find any DOM based XSS.
| http-slowloris-check:
| VULNERABLE:
| Slowloris DOS attack
| State: LIKELY VULNERABLE
| IDs: CVE:CVE-2007-6750
| Slowloris tries to keep many connections to the target web server open and hold
| them open as long as possible. It accomplishes this by opening connections to
| the target web server and sending a partial request. By doing so, it starves
| the http server's resources causing Denial Of Service.
|
| Disclosure date: 2009-09-17
| References:
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750
|_ http://ha.ckers.org/slowloris/
|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.
631/tcp open ipp
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 87.28 seconds
Dans ce cas, Nmap a identifié que le serveur web Apache pourrait être vulnérable à une attaque Slowloris DoS. Ces informations peuvent être précieuses pour sécuriser vos systèmes.
Création d'un rapport de scan complet
Maintenant, combinons tout ce que nous avons appris pour créer un rapport de sécurité complet :
sudo nmap -sS -sV -O -sC --script=vuln -T4 -oA comprehensive_security_report localhost
Cette commande :
- Utilise le scan furtif SYN (-sS)
- Détecte les versions des services (-sV)
- Tente la détection du système d'exploitation (-O)
- Exécute les scripts par défaut (-sC)
- Exécute les scripts de détection de vulnérabilités (--script=vuln)
- Utilise une temporisation agressive (-T4)
- Enregistre les résultats dans tous les formats (-oA)
La sortie sera complète et pourrait prendre un certain temps à se terminer. Une fois terminé, vous disposerez d'un rapport de sécurité détaillé dans différents formats (normal, XML et grepable) que vous pourrez consulter pour l'analyse de sécurité.
Dans cette étape, vous avez appris à utiliser le moteur de scripts de Nmap pour collecter des informations détaillées sur les services et détecter les vulnérabilités potentielles. Ces techniques avancées sont essentielles pour les évaluations complètes de la sécurité réseau.