650 likes | 1.23k Views
Nessus. Un scanner de vulnérabilité Par Florian ARNOLD XPose IR3 le 24/11/2009. Sommaire. ARNOLD Florian - IR3 -. Présentation Scan distant Scan local Gestion des rapports Gestion des failles de sécurité. Scanner de vulnérabilité. ARNOLD Florian - IR3 -.
E N D
Nessus Un scanner de vulnérabilité Par Florian ARNOLD XPose IR3 le 24/11/2009
Sommaire ARNOLD Florian - IR3 - • Présentation • Scan distant • Scan local • Gestion des rapports • Gestion des failles de sécurité Nessus : un scanner de vulnérabilité
Scanner de vulnérabilité ARNOLD Florian - IR3 - • Comment se caractérisent les vulnérabilités? • Services réseaux vulnérables • Accès aux données sensibles • Fautes de configuration (Ex : relais SMTP ouvert) • Patchs de sécurité non appliqués • Mots de passe par défaut • Dénis de service contre la pile TCP/IP • Notion de « vulnerability Assessment » : • Identifier / Classifier des failles de sécurité • Permet de résoudre les problèmes de sécurité • Utilisé par les scanners de vulnérabilité Nessus : un scanner de vulnérabilité
Nessus, c’est quoi? ARNOLD Florian - IR3 - • Produit de Tenable Network Security depuis 1998 • Sous licence propriétaire depuis 2005 • Compatible Microsoft / Unix • Existe en GPL => OpenVAS • Scanner de vulnérabilité • Logiciel client / serveur • Mécanisme de plugins Audit des failles de sécurité Nessus : un scanner de vulnérabilité
Pré-requis ARNOLD Florian - IR3 - • Installation du serveur Nessus • Installation du client Nessus • Mises à jour des vulnérabilités • Création d’un utilisateur Nessus sudo apt-get install nessusd sudo apt-get install nessus Nessus : un scanner de vulnérabilité • sudo nessus-update-plugins sudo nessus-adduser login
Nessusd : le serveur ARNOLD Florian - IR3 - nessusd [-vcphdDLCR] [ -S <ip[,ip,...]> ] S <ip[,ip,...]> : send packets with a source IP of <ip[,ip...]> v : shows version number h : shows this help p <number> : use port number <number> # 1241 by default c <filename> : alternate configuration file to use (default : /etc/nessus/nessusd.conf) D : runs in daemon mode d : dumps the nessusd compilation options q : quiet (do not issue any message to stdout) Nessus : un scanner de vulnérabilité
Nessus : le client ARNOLD Florian - IR3 - • Exemple de « targets-file » : nessus [–c <.rcfile>] -q <host> <port> <user> <pass> <targets-file> <result-file> host : nessusd host port : nessusd host port user : nessus login pass : nessus password targets : file containing the list of targets result : name of the file where nessus will store the results .rcfile : client configuration side (~/.nessusrc by default) Nessus : un scanner de vulnérabilité 192.168.0.1 srvnessus 192.168.0.11 192.168.0.254 193.5.83.0/24
Schéma de fonctionnement Nessus ARNOLD Florian - IR3 - Demande de scan pour les réseaux : 192.168.0.0/24 192.168.10.1 192.168.20.1 Nessus : un scanner de vulnérabilité
Séquence des opérations ARNOLD Florian - IR3 - • Détection des machines vivantes • Scan des ports • Récupération d’information : • Type et version des divers services (scan distant) • Liste des package installés (scan local) • Attaque simple (peu agressives) • Dénis de service (contre les logiciels visés) • Dénis de service contre la machine ARP ping TCP ping ICMP ping Nessus : un scanner de vulnérabilité 9
Scan distant ARNOLD Florian - IR3 - • Avantages : • Test de connexion aux ports [1-15000] (par défaut) • Scanner de port « maison » • Tester la version des services • Scan en parallèle (Gain de temps et de perf) • Plusieurs instances de nessus[d] possibles • Inconvénients : • Faux positifs possibles • Peut surcharger le réseau inutilement Ex. : HTTP 1.1, OpenSSL/0.8.7a, … Nessus : un scanner de vulnérabilité Ex. : Saturation de la table de translation d’un firewall
Scan distant ARNOLD Florian - IR3 - Mono serveur Multi serveur Nessus : un scanner de vulnérabilité
Scan local ARNOLD Florian - IR3 - • Avantages : • Répond au problème de faux positif • Test de vulnérabilité des logiciels locaux • Ex : version de « dll » obsolète • Rend un scan optimal • Authentifications importantes • Utilisation de techniques de Hackers • Ex : attaque par dictionnaire sur « /etc/shadow » • Inconvénients : • Peut figer des applications locales • Nécessite le redémarrage de ces applications Nessus : un scanner de vulnérabilité Ex : ferme de calcul bancaire Natixis tombé à cause du scan local
Scan local ARNOLD Florian - IR3 - • Différents accès possibles (~/.nessusrc) : • Pour Unix : • SSH (login+password) • SSH (clé privée + publique => cryptage asymétrique) • Kerberos (cryptage symétrique) • Pour Microsoft : • NTLM & NTLMv2 (par défaut) • Kerberos Nessus : un scanner de vulnérabilité
Gestion des rapports ARNOLD Florian - IR3 - • Possibilités de générer des HTML, XML, NBE, TXT, TEX, NSR • Fichiers NBE (Nessus Back End Report) par défaut • Séparateur : ‘|’ timestamps|||scan_start|Wed Oct 21 18:05:26 2009| timestamps||192.168.0.2|host_start|Wed Oct 21 18:05:31 2009| results|192.168.0|192.168.0.2|general/tcp|10180|Security Note|<description> results|192.168.0|192.168.0.2|general/icmp|10114|Security Warning|<description> results|192.168.0|192.168.0.2|general/udp|10287|Security Note|<description> results|192.168.0|192.168.0.2|general/tcp|19506|Security Note|<description> results|192.168.0|192.168.0.2|general/tcp|9999|Security Hole|<description> timestamps||192.168.0.2|host_end|Wed Oct 21 18:07:53 2009| timestamps|||scan_end|Wed Oct 21 18:07:53 2009| Nessus : un scanner de vulnérabilité
Utilisation des rapports ARNOLD Florian - IR3 - Nessus : un scanner de vulnérabilité
Sites de référence ARNOLD Florian - IR3 - • Security Focus : http://www.securityfocus.com • CVE : http://cve.mitre.org • National Vulnerability Database : http://web.nvd.nist.gov Nessus : un scanner de vulnérabilité SCAP: Security Content Automation Protocol DRAFT NIST SP 800-126
NASL : c’est quoi? ARNOLD Florian - IR3 - • Nessus Attack Scripting Language • Interpréteur maison orienté sécurité • Utilisé par Nessus pour tester les vulnérabilités • Permet d’écrire ses propres tests de vulnérabilité • Partage des scripts / Indépendant de l’OS • Environ 32 000 scripts NASL présents aujourd’hui Nessus : un scanner de vulnérabilité
NASL : fonctionnement ARNOLD Florian - IR3 - • Test de scripts NASL : nasl [-vhsDL] [-p] [ -t target ] [-T trace_file] [-SX] script_file ... -h : shows this help screen -p : parse only - do not execute the script -D : run the 'description part' only -L : 'lint' the script (extended checks) -t target : Execute the scripts against the target(s) host -T file : Trace actions into the file (or '-' for stderr) -s : 'safe checks‘ enabled -v : shows the version number -X : Run the script in 'authenticated' mode Nessus : un scanner de vulnérabilité nasl –t target_host my_script.nasl
Structure de scripts NASL ARNOLD Florian - IR3 - • # • # Nasl script to be used with nessusd • # • if(description) { • script_name(language1:<name>, [...]) • script_description(language1:<desc>, [...]) script_family(language1:<family>, [...]) • script_cve_id(CVE-ID1[, CVE-ID2, ..., CVE-IDN]); • script_bugtraq_id(ID1[, ID2, ..., IDN]); • script_dependencies(filename1 [,filename2, ..., filenameN]); • … • … • exit(0); • } • # Script code here. • # 'attack' section. • # Nessus : un scanner de vulnérabilité
Exemple de script NASL ARNOLD Florian - IR3 - ability_ftp_overflow.nasl if(description){ script_id(15628); script_cve_id("CVE-2004-1626", "CVE-2004-1627"); script_bugtraq_id(11508); … exit(0); } # Check starts here include("ftp_func.inc"); port = get_kb_item("Services/ftp"); if ( ! port ) port = 21; if ( ! get_port_state(port) ) exit(0); banner = get_ftp_banner(port:port); if ( ! banner ) exit(0); if ( egrep(pattern:"^220 Welcome to Code-Crafters - Ability Server ([0-1]\..*|2\.([0-2]|3[0-4]))[^0-9]", string:banner) ) security_hole(port); Nessus : un scanner de vulnérabilité APPE & STOR command => buffer overflow
ARNOLD Florian - IR3 - Merci de votre attention QUESTIONS ? Nessus : un scanner de vulnérabilité