Jean-François Bouchaudy Tsoft et Groupe Eyrolles, 2003, ISBN 2-212-11369-2
security scanner ACK, RST, SYN SEQ, ICMP, FIN URG, PUSH Syslog Objectifs Contenu Savoir utiliser quelques outils d audit réseaux tels que nmap et SAINT. L audit nmap SAINT snort References Livres Network Troubleshooting Tools, par J.D. Sloan. Halte aux hackers, par S. McClure. Tsoft/Eyrolles TCP/IP sous Linux 21-1
L audit Les outils d attaque Les «scanners» de ports nmap Les simulateurs d intrusion SAINT nessus ISS CyberCop Scanner La détection des attaques snort ippl World Wide Digital Security ISS Networks Associtaes Cisco TSOFT - TCP/IP sous Linux Module 21 : L audit - 21.2 Introduction Objectif : présenter un panorama des outils d audit réseau. Comment être sûr que son réseau ne peut être attaqué? Une des meilleures techniques pour le savoir est de se mettre à la place du pirate et de l attaquer soi-même. Une autre technique est d essayer de détecter si on est attaqué ou si on a été attaqué. Les outils d attaque Les scanners de ports Un scanner de port essaye de découvrir quels sont les ports ouverts d un ordinateur. Le produit le plus connu dans cette catégorie est sans conteste nmap. Ce produit en plus balaye tout un réseau et détermine quels sont les ordinateurs qui le composent. Les simulateurs d intrusion Les simulateurs d intrusion sont des logiciels qui sont d abord des scanners de ports, mais qui ensuite utilisent les ports découverts pour commencer une intrusion. C est souvent simplement la configuration et la manière d utiliser ces outils qui font la différence entre un audit et un piratage. Les outils libres SAINT Ce logiciel est simple d utilisation. Il est composé de modules Perl et est accessible à distance via une interface Web. Une version commerciale plus complète existe. nessus Ce logiciel fonctionne sous l interface X-Window. 21-2 Tsoft/Eyrolles TCP/IP sous Linux
Les outils commerciaux CyberCop Ce logiciel est produit par Network Associates. ISS «Internet Security Scanner» est produit par la société du même nom, ISS. Il est considéré comme le leader en la matière. Scanner Le célèbre logiciel de la société Cisco. La détection des attaques La détection des attaques va être permise à travers l étude approfondie des journaux des systèmes d exploitation, des applications et des pare-feu. En plus de l étude des logs, il y a des outils qui essayent de détecter l utilisation des scanners de ports qui sont le préalable à toute attaque. snort Détecte les attaques en temps réel. Prévient l administrateur via Syslog. C est un outil en open source. ippl Génère des messages pour Syslog concernant les messages ICMP reçus, les connexions TCP et les paquets UDP. La suite du module Références Le module se poursuit par l étude de nmap, de SAINT et snort. On a choisi ces outils pour leur puissance mais également pour leur simplicité d emploi. Internet http://www.nessus.org Le site officiel du logiciel Nessus. http://pltplp.net/ippl/ Le logiciel ippl. http://www.snort.org Le site du logiciel snort. http://www.iss.net Le site de la société ISS. http://www.pgp.com/products/cybercop-scanner/default.asp Le logiciel CyberCop. http://www.wwdsi.com/saint/ Le site officiel du logiciel SAINT. http://www.insecure.org/nmap/ Le logiciel nmap. Livres Network Troubleshooting Tools, par J.D. Sloan. Building Secure Servers with Linux, par M.D. Bauer. Décrit notamment les techniques d intrusion et la commande snort. Halte aux hackers, par S. McClure. Présente les techniques utilisées par les pirates pour pirater un réseau. Donne brièvement les parades. Tsoft/Eyrolles TCP/IP sous Linux 21-3
nmap Balayer les ports TCP nmap venus Balayer les ports UDP nmap -su venus Balayer un réseau nmap -sp 192.168.0.0/24 nmap -sp 192.168.*.* nmap -sp 192.168.218.1,4,5,11-20 Balayer les protocoles IP nmap -s0 192.168.218.10 Déterminer l OS nmap -O 192.168.218.15 TSOFT - TCP/IP sous Linux Module 21 : L audit - 21.3 Objectif : savoir utiliser de manière rudimentaire le scanner de ports nmap. Introduction L application nmap, disponible sous licence GPL, est un outil qui possède plusieurs fonctionnalités. Il sert principalement de scanner de ports, en français un outil qui balaye les ports réseaux et détermine les applications réseaux actives. On peut également utiliser nmap pour découvrir les machines actives d un réseau (scanner IP) et leur système d exploitation. L outil nmap est très puissant, on ne présente ici que quelques options. Il faut être conscient qu il peut être utilisé également comme une arme par un pirate pour trouver les failles d un système ou d un pare-feu. Syntaxe nmap [type_d_analyse] [option...] (hôte réseau)... Les différents types d analyse -st Balaye les ports TPC en utilisant la connexion TCP (le programme réalise une déconnexion aussitôt la connexion établie). C est le type d analyse par défaut. -ss Balaye les ports TCP en utilisant l envoi de paquets SYN (le programme attend simplement le paquet ACK accusant réception du paquet SYN). -sf, -sx, -sn Balaye les ports TCP en essayant de passer les pare-feu. -sf Utilise un paquet FIN. Normalement un hôte qui reçoit un paquet FIN pour un port TCP fermé doit répondre par un paquet RST. Si le port est ouvert, le paquet est ignoré (RFC 793). Microsoft, sur ses systèmes 95/NT, ne respecte pas les RFCs. 21-4 Tsoft/Eyrolles TCP/IP sous Linux
-sx -sn -sp -su Utilise un paquet FIN avec les drapeaux URG et PUSH levés. Utilise un paquet avec les différents drapeaux baissés. Détermine les hôtes actifs d un réseau. Par défaut, en utilisant l option -PB. Voir les options -PT, -PS, -PI, -PB un peu plus loin. Balaye les ports UDP. Le programme envoie un paquet UDP de 0 octet. Il attend en retour un message ICMP destination unreachable si le port est fermé (RFC 768). -s0 Balaye les protocoles IP. Le programme envoie un paquet adressé aux différents protocoles IP (OSPF,...) et attend un message ICMP destination unreachable si le protocole n est pas utilisé. Les systèmes Microsoft, ne suivent généralement pas les standards et ne répondent pas. -sa Balaye les ports TCP en utilisant des paquets ACK (avec des SEQ et ACK aléatoires). Le programme attend un paquet RST. Si le programme ne reçoit rien ou un message ICMP destination unreachable, les paquets passent sans doute par l intermédiaire d un pare-feu. -sr Balaye les programmes RPC. Cette méthode est utilisée en combinaison avec une autre méthode d analyse (par exemple -su ou -st). Les principales options -P0 Ne pas utiliser le ping avant de balayer les ports. -PT[<port>] Balaye un réseau en utilisant des paquets TCP ACK. Le programme attend des paquets RST. Par défaut utilise le port 80. -PS Utilise un segment TPC SYN au lieu d un paquet TCP ACK. Le programme attend des paquets RST ou SYN ACK. -PI Utilise le véritable ping (ICMP echo request). -PB C est le ping par défaut. Il est équivalent à -PT et -PI. -O Essaye de déterminer le système d exploitation du système cible. -p <domaine> Spécifie un domaine de port. Par défaut, le programme balaye les ports 1 à 1024, ainsi que les ports décrits dans le fichier nmapservices. Exemples : -p 515, -p 10-16,25,515-600. -F Balaye uniquement les ports présents dans le fichier nmapservices. -n Ne pas faire de reverse DNS. -R Effectuer systématiquement le reverse DNS. -v Mode bavard. -vv Mode très bavard. -on,-ox,-og fic Sortie dans un fichier. L option -on correspond à une sortie normale, -ox à une sortie XML et -og à une sortie exploitable par la commande grep. -D <leure[,...]> Cette option spécifie une liste d adresses qui vont apparaître comme des leurres par les systèmes explorés, ainsi que par les pare-feu. L adresse d origine appartiendra à une de ces adresses. -S <adresse> Fixe l adresse IP d origine des paquets (spoofing). Tsoft/Eyrolles TCP/IP sous Linux 21-5
-T <temps> Fixe la rapidité du balayage. Elle prend une des valeurs suivantes : Paranoid, Sneaky, Polite, Normal, Agressive et Insane. --randomize_hosts Mélange les plages d adresses testées. -f Cette option demande que les paquets de balayage (SYN, FIN, XMAS, NULL) utilisent des petits fragments. -R Effectue systématiquement un reverse-dns sur les adresses testées. -h Affiche un écran d aide. Liste des hôtes et des réseaux Les hôtes peuvent être indiqués en utilisant leur nom réseau ou leur adresse IP. Les réseaux sont spécifiés par un couple adresseip/netmask ou par l usage de jokers, de listes et de domaines dans une adresse IP, par exemple : 192.168.218.0/24, 192.150-160.*.*, 192.168.218.1,2,10,12-20. Exemples L usage par défaut : balayer les ports TCP On balaye les principaux ports TCP, ici d un hôte. # nmap pikachu Starting nmap V. 2.54BETA34 ( www.insecure.org/nmap/ ) Interesting ports on pikachu.pokemon (192.168.218.1): (The 1555 ports scanned but not shown below are in state: closed) Port State Service 139/tcp open netbios-ssn Nmap run completed -- 1 IP address (1 host up) scanned in 1 second Idem, mais on utilise l option v. # nmap -v pikachu Starting nmap V. 2.54BETA34 ( www.insecure.org/nmap/ ) No tcp,udp, or ICMP scantype specified, assuming vanilla tcp connect() scan. Use -sp if you really don't want to portscan (and just want to see what hosts are up). Host pikachu.pokemon (192.168.218.1) appears to be up... good. Initiating Connect() Scan against pikachu.pokemon (192.168.218.1) Adding open port 139/tcp The Connect() Scan took 1 second to scan 1556 ports. Interesting ports on pikachu.pokemon (192.168.218.1): (The 1555 ports scanned but not shown below are in state: closed) Port State Service 139/tcp open netbios-ssn Nmap run completed -- 1 IP address (1 host up) scanned in 1 second On balaye un réseau On balaye un réseau en utilisant les messages du ping et des paquets TCP ACK. Le réseau est spécifié par un couple adresse_ip/netmask. 21-6 Tsoft/Eyrolles TCP/IP sous Linux
# nmap -sp 192.168.218.0/24 Starting nmap V. 2.54BETA34 ( www.insecure.org/nmap/ ) Host pikachu.pokemon (192.168.218.1) appears to be up. Host bulbizarre.pokemon (192.168.218.10) appears to be up. Host (192.168.218.14) appears to be up. Nmap run completed -- 256 IP addresses (3 hosts up) scanned in 4 seconds Idem, mais le réseau est spécifié en indiquant une liste de machines. # nmap -sp 192.168.218.1,2,10,14,15 Starting nmap V. 2.54BETA34 ( www.insecure.org/nmap/ ) Host pikachu.pokemon (192.168.218.1) appears to be up. Host bulbizarre.pokemon (192.168.218.10) appears to be up. Host (192.168.218.14) appears to be up. Nmap run completed -- 5 IP addresses (3 hosts up) scanned in 4 seconds On balaye le réseau, mais on utilise uniquement des paquets TCP ACK sur le port 80 sans utiliser le «ping». # nmap -sp -PT 192.168.218.1-20 Starting nmap V. 2.54BETA22 ( www.insecure.org/nmap/ ) Host pikachu.pokemon (192.168.218.1) appears to be up. Host bulbizarre.pokemon (192.168.218.10) appears to be up. Host salameche.pokemon (192.168.218.12) appears to be up. Host psykokwak.pokemon (192.168.218.14) appears to be up. Host dracaufeu.pokemon (192.168.218.15) appears to be up. Host miaous.pokemon (192.168.218.16) appears to be up. Host raichu.pokemon (192.168.218.17) appears to be up. Host nidoran.pokemon (192.168.218.18) appears to be up. On essaye de déterminer l OS # nmap -O 192.168.218.1 Starting nmap V. 2.54BETA34 ( www.insecure.org/nmap/ ) Interesting ports on pikachu.pokemon (192.168.218.1): (The 1555 ports scanned but not shown below are in state: closed) Port State Service 139/tcp open netbios-ssn Remote operating system guess: Windows NT4 / Win95 / Win98 Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds On balaye les ports UDP On balaye les ports UDP, ici du port 1 au port 10000. # nmap -su -p 1-10000 192.168.218.10 Starting nmap V. 2.54BETA34 ( www.insecure.org/nmap/ ) Interesting ports on bulbizarre.pokemon (192.168.218.10): (The 9987 ports scanned but not shown below are in state: closed) Port State Service Tsoft/Eyrolles TCP/IP sous Linux 21-7
37/udp open time 53/udp open domain 111/udp open sunrpc 137/udp open netbios-ns 138/udp open netbios-dgm 517/udp open talk 518/udp open ntalk 855/udp open unknown 858/udp open unknown 863/udp open unknown 1024/udp open unknown 1026/udp open unknown 2049/udp open nfs Nmap run completed -- 1 IP address (1 host up) scanned in 12 seconds On balaye les ports, on note les programmes RPC On balaye les ports TCP, on essaye de déterminer s ils correspondent à des programmes RPC-ONC. # nmap -sr -p 1-3000 192.168.218.10 Starting nmap V. 2.54BETA34 ( www.insecure.org/nmap/ ) Interesting ports on bulbizarre.pokemon (192.168.218.10): (The 2981 ports scanned but not shown below are in state: closed) Port State Service (RPC) 21/tcp open ftp 22/tcp open ssh 23/tcp open telnet 25/tcp open smtp 37/tcp open time 53/tcp open domain 79/tcp open finger 110/tcp open pop-3 111/tcp open sunrpc (rpcbind V2) 139/tcp open netbios-ssn 512/tcp open exec 513/tcp open login 514/tcp open shell 515/tcp open printer 857/tcp open (status V1) 860/tcp open (mountd V1-2) 865/tcp open (mountd V1-2) 901/tcp open samba-swat 2401/tcp open cvspserver Nmap run completed -- 1 IP address (1 host up) scanned in 10 seconds Idem, mais on balaye les ports UDP. # nmap -su -sr -p 1-3000 192.168.218.10 Starting nmap V. 2.54BETA34 ( www.insecure.org/nmap/ ) Interesting ports on bulbizarre.pokemon (192.168.218.10): (The 2987 ports scanned but not shown below are in state: closed) Port State Service (RPC) 37/udp open time 53/udp open domain 111/udp open sunrpc (rpcbind V2) 21-8 Tsoft/Eyrolles TCP/IP sous Linux
137/udp open netbios-ns 138/udp open netbios-dgm 517/udp open talk 518/udp open ntalk 855/udp open (status V1) 858/udp open (mountd V1-2) 863/udp open (mountd V1-2) 1024/udp open (nlockmgr V1-3) 1026/udp open unknown 2049/udp open nfs (RPC (Unknown Prog #)) Nmap run completed -- 1 IP address (1 host up) scanned in 16 seconds Balayer les protocoles IP # nmap -so 192.168.218.10 Starting nmap V. 2.54BETA34 ( www.insecure.org/nmap/ ) Interesting protocols on bulbizarre.pokemon (192.168.218.10): (The 251 protocols scanned but not shown below are in state: closed) Protocol State Name 1 open icmp 2 open igmp 6 open tcp 17 open udp Nmap run completed -- 1 IP address (1 host up) scanned in 4 seconds Références Man nmap(1) Internet http://www.insecure.org/nmap Le site officiel de nmap. http://www.insecure.org/nmap/nmap_documentation.html La documentation de nmap. Magazine Linux Magazine Hors-Série N 13 : Nmap par la pratique Livre Network Troubleshooting, par J.D. Sloan. Tsoft/Eyrolles TCP/IP sous Linux 21-9
Saint La vision client/serveur On active le serveur. On y accède ensuite grâce à un navigateur pour configurer l analyse et étudier les résultats. La configuration de l analyse Sélection de la cible (hôte(s), réseau(x)) Niveau d analyse La collecte des données L analyse des résultats Par types de failles Par catégories (services, OS, domaines, réseaux, hôtes) Par relations de confiance TSOFT - TCP/IP sous Linux Module 21 : L audit - 21.4 Introduction Objectif : savoir utiliser de manière rudimentaire le simulateur d intrusion SAINT. Le logiciel SAINT (Security Administrator s Integrated Network Tool) est un simulateur d intrusion, on utilise également le terme de «scanner» de sécurité. Ce type d application essaye d analyser un réseau et d en trouver les failles. SAINT a été créé par la société World Wide Digital Security. Il constitue en fait une version améliorée du logiciel SATAN de Dan Farmer. SAINT fonctionne comme un système expert. On lui indique un ordinateur ou un réseau cible. SAINT recherche les ports actifs du premier système qu il doit analyser et effectue des tests sur ces ports (SAINT est donc, en autres, un scanner réseau et un scanner de ports comme nmap). Les informations recueillies alimentent sa base de connaissances. SAINT réalise alors de nouveaux tests qui eux-mêmes grossissent la base. SAINT examine ensuite les autres ordinateurs du réseau ainsi que les systèmes ajoutés dans la base. Ainsi, de proche en proche, SAINT peut analyser tout le réseau et trouver toutes ses failles. SAINT fonctionne en mode texte ou avec l interface Web. Il est possible de l utiliser à distance. Un des points très intéressants de SAINT est qu il est extensible. En effet, on peut lui ajouter un programme d analyse, le plus souvent en PERL, pour détecter un nouveau type de faille. Utilisation élémentaire Il y a plusieurs manières d utiliser Saint. La plus simple est d activer un serveur sur le système Linux et ensuite de piloter le logiciel à distance à partir d un navigateur Web. C est la technique qui est décrite dans ce paragraphe. On peut aussi donner les instructions au logiciel par l intermédiaire des arguments de la ligne de commande ou bien via un fichier de configuration. 21-10 Tsoft/Eyrolles TCP/IP sous Linux
Figure N 1 : La page d accueil de SAINT. Activation de SAINT 1er exemple : utilisation locale Dans l environnement graphique, à partir d une fenêtre terminal, on active la commande saint. Le logiciel active à son tour dans une fenêtre graphique le navigateur par défaut. La page d accueil s affiche. L utilisateur n a pas besoin de s authentifier. bulbizarre:~ # saint 2ème exemple : utilisation à distance On active le logiciel Saint sur le serveur et on le pilote à partir d un navigateur situé sur un poste distant. Le mode distant est demandé par l option «-r». L adresse du poste distant autorisé à se connecter au serveur Web Saint est introduite par l option «-h». Saint demande de saisir deux mots de passe. Le premier, associé à l utilisateur de nom «admin», permet de tout faire : paramétrer les analyses et accéder aux données recueillies. Le deuxième, qui est optionnel, est associé au nom «saint». Il donne uniquement accès aux données recueillies. Par défaut, le serveur Saint se met à l écoute du port TCP 1414. Il faut donc indiquer au niveau du navigateur l URL «http://adresse_du_serveur:1414». La page de connexion apparaît (cf. fig. N 1). Ensuite on se connecte soit sous le nom admin, soit sous le nom saint. bulbizarre:~/saint-3.4.10 #./saint -r -h 192.168.218.1 Security Administrator's Integrated Network Tool Portions copyright (C) 1998-2002 SAINT Corporation. Portions copyright (C) 1995 by Dan Farmer and Wietse Venema. SAINT is starting up... Enter new password for "admin" or hit ENTER to leave as is Password: XXXXX Confirm Password: XXXXX Enter new password for "saint" or hit ENTER to leave as is Tsoft/Eyrolles TCP/IP sous Linux 21-11
Password: Starting SAINT server on port 1414 bulbizarre:~/saint-3.4.10 # Configuration de l analyse Dans les pages Web de Saint, un menu sur le côté contient les principales actions possibles. Le bouton «Target Selection» provoque l affichage du formulaire qui donne accès à la configuration de l analyse. Figure N 2 : La configuration de l analyse (1er écran). Le formulaire débute en demandant la cible de l analyse. Ensuite, on saisit les autres paramètres d analyse. Pour la plupart d entre eux, la valeur par défaut est correcte. Ces valeurs par défaut sont elles-mêmes paramétrées par le fichier de configuration de SAINT. Nous les détaillerons dans le paragraphe concernant ce fichier. La cible de l analyse est spécifiée par l adresse IP ou DNS d un l hôte ou bien par une liste d adresses de machines ou par l adresse d un réseau (exemple : 192.168.218). On peut également choisir un fichier (se trouvant dans le répertoire racine de SAINT) qui liste les cibles choisies. La collecte des données Le formulaire de configuration de l analyse se termine par un bouton «Start Scan» qui provoque la collecte des données, c est-à-dire l analyse de l hôte ou du réseau sélectionné. On voit se dérouler cette analyse en temps réel. On peut suivre chacun des tests effectués avec ses paramètres 21-12 Tsoft/Eyrolles TCP/IP sous Linux
Figure N 2bis : La configuration de l analyse (2ème écran).. Figure N 3 : La collecte des données. L analyse des résultats Les données collectées sont stockées dans un fichier. On peut très bien les exploiter ultérieurement. Ainsi, quand on active le logiciel SAINT, si on appuie sur le bouton «Data Analysis», on accède aux données récoltées antérieurement. Si la collecte des données vient juste de se terminer, on peut passer directement à l analyse en suivant le lien hypertexte «Continue with report and analysis». Le premier menu qui s affiche présente trois catégories d accès aux résultats : Tsoft/Eyrolles TCP/IP sous Linux 21-13
«Vulnerabilities». Les résultats sont présentés en fonction du type de faille de sécurité. «Information». Les informations concernant les systèmes et leurs failles de sécurité sont affichées en fonction du réseau ou de l hôte que l on choisit. «Trust». Les hôtes sont classés en fonction du nombre de systèmes qu ils ont en relations de confiance. Figure N 4 : Formulaire de choix d accès aux résultats. Dans le cas où l on choisit d afficher les informations d un poste, les données recueillies sont présentées à l intérieur de trois rubriques : Informations générales (le type de l OS,...), les services réseaux et les failles de sécurité. Figure N 5 : Un exemple de résultat. 21-14 Tsoft/Eyrolles TCP/IP sous Linux
Les failles de sécurité sont présentées sous forme de lien hypertexte. Si on active un de ces liens, on affiche une page décrivant dans le détail la faille et les mesures à prendre pour la corriger. Fréquemment cette page référence d autres pages Internet pour un complément d information. L arborescence de logiciel bin/ config/ html/ results/ rules/ status_file saint La configuration de SAINT Figure N 6 : Information concernant une faille. Les programmes de tests de sécurité. Les fichiers de configuration, principalement saint.cf. Les formulaires et la documentation de Saint. Les résultats. Il y a un sous-répertoire par analyse. Chaque sous-répertoire contient les fichiers suivants : facts La base des faits. all-hosts La liste des hôtes. todo Les actions à accomplir. cve Les failles CVE. Les règles du système expert. Le journal des actions accomplies. La commande saint. La configuration du logiciel SAINT est mémorisée par défaut dans le fichier saint.cf, présent dans le sous-répertoire config du répertoire d installation. Lors de la configuration de l analyse ou via la ligne de commande, on peut indiquer un fichier différent de saint.cf. On peut modifier directement le fichier de configuration, mais un minimum de connaissances du langage Perl est nécessaire pour l exploiter complètement. Il est Tsoft/Eyrolles TCP/IP sous Linux 21-15
également possible d utiliser l interface Web, via le bouton «Config. Mgmt.» qui affiche un formulaire de mise à jour du fichier de configuration. Les arguments de la ligne de commande sont prioritaires sur le fichier de configuration et autorisent aussi à changer la configuration (cf. man saint(1)). Le niveau d attaque La première section spécifie le niveau d attaque. Il présente les niveaux suivants : - «Light» : Léger - «Normal» : Normal - «Heavy» : Fort - «Heavy +» : Très fort - «Top 20» : Les failles les plus importantes (cf http://www.sans.org/top20.htm) - «Custom» : Niveau créé par l administrateur Ce paramètre est très important car il décide des tests (probes) qui seront déclenchés durant la phase de recueil des données. Si l on veut modifier un niveau ou en créer un nouveau, on est obligé d éditer le fichier de configuration. Voici par exemple la section qui décrit le niveau «Light». @light = ( dns.saint, ostype.saint, rpc.saint, showmount.saint, ) ; Les spécialistes Perl constateront que le niveau Light est en fait un tableau qui contient le nom des tests (Probe) à effectuer. Ces tests se trouvent dans le sous-répertoire bin de SAINT. Nombre d essais pour deviner les mots de passe Ce paramètre spécifie le nombre d essais que peut effectuer SAINT afin de deviner un mot de passe. La valeur par défaut est de «2». La valeur «0» désactive le module qui devine les mots de passe. Il faut savoir que la plupart des systèmes verrouillent un compte après trois essais infructueux de saisie de mot de passe. La valeur des minuteries et le choix de la minuterie Les tests lancés par SAINT peuvent durer très, très longtemps. Il est indispensable de les limiter dans le temps. SAINT possède trois minuteries : - «Slow» : lente - «Medium» : moyenne - «Fast» : rapide Ces minuteries sont réglées par défaut aux valeurs respectives de 60, 20 et 10 secondes. On peut changer ces valeurs et choisir une des minuteries. Certains tests utilisent une valeur spécifique de minuterie, par exemple le balayage des ports TCP et UDP. Quand SAINT déclenche un test, il démarre une minuterie, et si le test n est pas terminé lorsque la minuterie s arrête, il envoie un signal au test. Par défaut, c est le signal «9» qui est envoyé, on peut en choisir un autre. Le multitâche Si l on désire augmenter la vitesse d analyse d un réseau, il est possible d effectuer plusieurs tests simultanément. Le paramètre «Maximum Threads» précise ce nombre. 21-16 Tsoft/Eyrolles TCP/IP sous Linux
Effectuer des tests dangereux Certains tests sont dangereux pour les machines explorées. L utilisateur de SAINT peut décider de les activer ou non. La proximité d exploration Le paramètre «Maximal proximity» est un paramètre très dangereux. Il faut tout à fait comprendre ses implications. - La valeur «0» indique que l on analyse uniquement les machines que l on a spécifiées explicitement. C est la valeur par défaut. C est également la valeur conseillée! - La valeur «1» indique que l on analyse également les machines qui sont référencées par les machines analysées. Par exemple le serveur DNS du réseau. - La valeur «2» indique que l on analyse aussi les machines référencées par les machines référencées par les machines analysées (deux niveaux d indirection). Et ainsi de suite. Le paramètre «Proximity descent» essaye de diminuer la dangerosité du paramètre précédent. Il diminue le niveau de l attaque pour les machines analysées en indirection. Il est possible également d indiquer si on étend l analyse à tout le réseau ou si l on se limite uniquement aux cibles spécifiées. Les relations de confiance Par défaut, SAINT considère qu il n existe pas de relations de confiance entre le poste où s exécute le programme et les postes analysés. Ces relations se manifestent par la présence du poste dans les fichiers.rhosts, hosts.equiv ou dans les systèmes de fichiers NFS exportés. On peut au contraire indiquer que le poste est en relations de confiance avec les postes attaqués, ce qui modifie les tests effectués. Les masques de sous-réseau Durant ses tests, SAINT doit connaître le masque de sous-réseau et les adresses de diffusion des réseaux attaqués. Par défaut, les masques suivants sont utilisés : 255.255.255.0, 255.255.255.128 et 255.255.255.192. Si l on connaît les valeurs exactes des réseaux, on peut les entrer. L étendue du réseau analysé, exclusions On peut limiter l étendue du réseau analysé en indiquant un début d adresse IP ou un nom de domaine DNS, par exemple : 192.168. ou societe.fr. Il est possible également d indiquer des domaines que l on veut voir exclus du champ d analyse. Activation des tests généraux (dns, icmp) On peut choisir d utiliser ou non nslookup pour trouver le nom des postes analysés. On peut choisir d utiliser ou non ping pour tester la présence d un poste. Dans le cas où on ne veut pas utiliser ping, on peut choisir les ports TCP à tester pour déterminer la présence d un poste. Par défaut, ce sont les ports 25, 53, 80, 139 et 143 qui sont utilisés. Tsoft/Eyrolles TCP/IP sous Linux 21-17
Attaque derrière un pare-feu Si les postes analysés sont derrière un pare-feu (vis-à-vis du poste attaquant), il faut le préciser. Les autres paramètres Les autres paramètres ne sont accessibles qu en modifiant directement le fichier de configuration. Ils permettent un paramétrage fin de certaines variables, notamment celles utilisées pour réaliser des attaques derrière un pare-feu. Références Man saint(1) La documentation en ligne Quand on accède à Saint en mode Web, le bouton «Documentation» donne accès à la documentation en ligne. Elle est très complète. Internet http://www.saintcorporation.com/saint/ Le site officiel de Saint. http://www.cve.mitre.org CVE (les failles les plus courantes). http://www.sans.org/top20/ Les vingt failles réseaux les plus importantes. Livre Protecting Networks with SATAN, par M. Freiss. 21-18 Tsoft/Eyrolles TCP/IP sous Linux
Snort Capture de paquets Affiche les résultats sur la sortie standard snort -v Affiche les données de la couche application et liaison snort -v -d -e > capture 2>&1 Affiche les paquets provenant ou destinés à un hôte snort -v host 192.168.218.10 Mémoriser des captures snort -l /var/log/snort snort -l log -b # format tcpdump Détection d intrusion snort -d -h 192.168.218.10/24 -c snort.conf TSOFT - TCP/IP sous Linux Module 21 : L audit - 21.5 Description Syntaxe Objectif : savoir utiliser de manière rudimentaire le détecteur d intrusion snort. Le logiciel snort est un détecteur d intrusion en Open Source. On peut l utiliser pour détecter une grande variété d attaques (scan de ports, buffer overflow,...). La détection est paramétrable par des règles qui précisent le type de contenu attendu dans les paquets d intrusion. L administrateur est averti de plusieurs manières : grâce à un fichier alert, via le service Syslog, ou via le service WinPopup. snort est d abord un détecteur d intrusion. On peut aussi l utiliser comme un analyseur de protocoles similaire à tcpdump. snort [option...] [expression] L expression précise un filtre de capture de paquets. Il utilise la même syntaxe que tcpdump. Voici les principales options : -v Liste tous les paquets reçus sur la sortie standard. -c fichier Active snort en mode «Détection d intrusion». On donne en paramètre le fichier de configuration des règles de détection. Par défaut, les alertes sont mémorisées dans le fichier alert. -s Envoie les alertes à Syslog. -M hôte Envoie les alertes à un hôte en WinPopup. Il faut que le logiciel Samba soit installé. Tsoft/Eyrolles TCP/IP sous Linux 21-19
Exemples -D Active snort en mode démon. -A mode Spécifie le mode d alerte : fast L alerte est indiquée par une seule ligne au format Syslog. full L alerte est décrite complètement. none Désactive le mode alert. -l répertoire Active le mode journalisation des paquets et spécifie le répertoire où sont stockés les alertes et les paquets capturés. Par défaut, le répertoire /var/log/snort. -b Journalise les paquets au format binaire tcpdump. -L fichier Spécifie le nom du fichier qui mémorise les paquets. Par défaut, il s appelle snort-<date@heure>.log. -N Désactive la journalisation des paquets. -d Visualise le contenu de la couche application. -C Affiche le contenu de la couche application en mode caractère. -e Visualise le détail de la couche liaison. -a Affiche les paquets ARP. -r fic Lit un fichier au format tcpdump. -i carte Spécifie la carte réseau. -h réseau Spécifie le réseau local, par exemple : 192.168.1.0/24. -n nb Traite nb paquets et s arrête. -q Mode silencieux : n affiche pas les messages de démarrage. Capture de paquets On capture tous les paquets provenant ou destinés au poste 192.168.218.10. On redirige la sortie dans le fichier capture. On arrête snort par CTRL-C. # snort -v host 192.168.218.10 > capture 2>&1 ^C # more capture -*> Snort! <*- Version 1.8.1-RELEASE (Build 74) By Martin Roesch (roesch@sourcefire.com, www.snort.org) ==================================================================== Snort analyzed 2 out of 2 packets, dropping 0(0.000%) packets Breakdown by protocol: Action Stats: TCP: 0 (0.000%) ALERTS: 0 UDP: 0 (0.000%) LOGGED: 0 ICMP: 2 (100.000%) PASSED: 0 ARP: 0 (0.000%) IPv6: 0 (0.000%) IPX: 0 (0.000%) OTHER: 0 (0.000%) DISCARD: 0 (0.000%) ==================================================================== 21-20 Tsoft/Eyrolles TCP/IP sous Linux
Fragmentation Stats: Fragmented IP Packets: 0 (0.000%) Fragment Trackers: 0 Rebuilt IP Packets: 0 Frag elements used: 0 Discarded(incomplete): 0 Discarded(timeout): 0 Frag2 memory faults: 0 ==================================================================== TCP Stream Reassembly Stats: TCP Packets Used: 0 (0.000%) Stream Trackers: 0 Stream flushes: 0 Segments used: 0 Stream4 Memory Faults: 0 ==================================================================== Log directory = --== Initializing Snort ==-- Initializing Network Interface eth0 Decoding Ethernet on interface eth0 --== Initialization Complete ==-- 01/19-13:27:12.567657 192.168.218.1 -> 192.168.218.10 ICMP TTL:32 TOS:0x0 ID:27532 IpLen:20 DgmLen:60 Type:8 Code:0 ID:1 Seq:7 ECHO =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 01/19-13:27:12.567852 192.168.218.10 -> 192.168.218.1 ICMP TTL:255 TOS:0x0 ID:64782 IpLen:20 DgmLen:60 Type:0 Code:0 ID:1 Seq:7 ECHO REPLY =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Snort received signal 2, exiting Autres exemples On capture des paquets, on affiche les données de la couche liaison et de la couche application. # snort -v -d -e > capture 2>&1 # more capture... =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 01/19-13:41:06.321304 0:40:5:49:FA:67 -> 0:50:BA:31:C9:EC type:0x800 len:0x3f 192.168.218.1:1244 -> 192.168.218.10:21 TCP TTL:32 TOS:0x0 ID:13967 IpLen:20 DgmLen:49 DF ***AP*** Seq: 0x9B83BA6 Ack: 0x2A625958 Win: 0x21E8 TcpLen: 20 55 53 45 52 20 6A 66 0D 0A USER jf..... On conserve les captures au format ASCII dans l arborescence /var/log/snort/. Les captures sont réparties dans des répertoires, un par adresse IP. # snort -l /var/log/snort Tsoft/Eyrolles TCP/IP sous Linux 21-21
On conserve les captures au format binaire tcpdump. # snort -l /var/log/snort -b host 192.168.218.1 # ls /var/log/snort snort-0119@1349.log # tcpdump -r 'snort-0119@1349.log' 13:49:10.345481 pikachu.pokemon.1090 > salameche.pokemon.telnet:. ack 4134044713 win 8236 (DF)... Détection d intrusion On active le mode «Détection d intrusion». On utilise le fichier de règles contenu dans le paquetage (/etc/snort/snort.conf). Les alertes sont mémorisées dans le fichier /var/log/alert. La commande tail -f /var/log/alert permet de voir en temps réel le fichier. Le fichier portscan.log donne le détail du scanning de ports. Dans l exemple, on a utilisé le logiciel Saint pour simuler une intrusion. # snort -d -h 192.168.218.0/24 -c /etc/snort/snort.conf ^C # more /var/log/alert [**] [100:1:1] spp_portscan: PORTSCAN DETECTED from 192.168.218.10 (THRESHOLD 4 connections exceeded in 1 seconds) [**] 01/19-13:59:31.095606 [**] [111:12:1] spp_stream4: NMAP FINGERPRINT (stateful) detection [**] 01/19-14:09:34.440780 192.168.218.10:51543 -> 192.168.218.12:22 TCP TTL:41 TOS:0x0 ID:22429 IpLen:20 DgmLen:60 ***A**** Seq: 0x4B3C1C55 Ack: 0x0 Win: 0x800 TcpLen: 40 TCP Options (5) => WS: 10 NOP MSS: 265 TS: 1061109567 0 EOL [**] [1:628:1] SCAN nmap TCP [**] [Classification: Attempted Information Leak] [Priority: 3] 01/19-14:09:34.440944 192.168.218.10:51545 -> 192.168.218.12:25 TCP TTL:41 TOS:0x0 ID:27582 IpLen:20 DgmLen:60 ***A**** Seq: 0x4B3C1C55 Ack: 0x0 Win: 0x800 TcpLen: 40 TCP Options (5) => WS: 10 NOP MSS: 265 TS: 1061109567 0 EOL [Xref => http://www.whitehats.com/info/ids28] [**] [1:239:1] DDOS shaft handler to agent [**] [Classification: Attempted Denial of Service] [Priority: 6] 01/19-13:59:31.090771 192.168.218.10:1406 -> 192.168.218.12:18753 UDP TTL:64 TOS:0x0 ID:51 IpLen:20 DgmLen:49 Len: 29 [Xref => http://www.whitehats.com/info/ids255] [**] [1:245:1] DDOS mstream handler ping to agent [**] [Classification: Attempted Denial of Service] [Priority: 6] 01/19-13:59:31.090982 192.168.218.10:1406 -> 192.168.218.12:10498 UDP TTL:64 TOS:0x0 ID:53 IpLen:20 DgmLen:32 Len: 12 [Xref => http://cve.mitre.org/cgi-bin/cvename.cgi?name=can-2000-0138] [**] [1:220:1] BACKDOOR HideSource backdoor attempt [**] 21-22 Tsoft/Eyrolles TCP/IP sous Linux
01/19-14:10:37.186320 192.168.218.10:4431 -> 192.168.218.12:23 TCP TTL:64 TOS:0x0 ID:24359 IpLen:20 DgmLen:58 DF ***AP*** Seq: 0x99C975A3 Ack: 0x9F1CB791 Win: 0x7D78 TcpLen: 32 TCP Options (3) => NOP NOP TS: 334785546 43974158 [**] [1:358:1] FTP saint scan [**] [Classification: Attempted Information Leak] [Priority: 3] 01/19-14:10:42.324375 192.168.218.10:4456 -> 192.168.218.12:21 TCP TTL:64 TOS:0x10 ID:24749 IpLen:20 DgmLen:66 DF ***AP*** Seq: 0x99ADE4FB Ack: 0xA0349FCD Win: 0xFE88 TcpLen: 32 TCP Options (3) => NOP NOP TS: 334786060 43974672 [Xref => http://www.whitehats.com/info/ids330]... # more portscan.log Jan 19 13:59:30 192.168.218.10:3775 -> 192.168.218.12:65535 SYN ******S* Jan 19 13:59:30 192.168.218.10:899 -> 192.168.218.12:111 SYN ******S* Jan 19 13:59:31 192.168.218.10:1406 -> 192.168.218.12:27444 UDP Jan 19 13:59:31 192.168.218.10:1406 -> 192.168.218.12:34555 UDP Jan 19 13:59:31 192.168.218.10:1406 -> 192.168.218.12:18753 UDP Jan 19 13:59:31 192.168.218.10:1406 -> 192.168.218.12:7983 UDP Jan 19 13:59:31 192.168.218.10:1406 -> 192.168.218.12:10498 UDP Jan 19 13:59:32 192.168.218.10:1406 -> 192.168.218.12:1 UDP Jan 19 13:59:31 192.168.218.10:3776 -> 192.168.218.12:10008 SYN ******S* Jan 19 13:59:31 192.168.218.10:3777 -> 192.168.218.12:12754 SYN ******S* Jan 19 13:59:31 192.168.218.10:3778 -> 192.168.218.12:15104 SYN ******S* Jan 19 13:59:31 192.168.218.10:3779 -> 192.168.218.12:16660 SYN ******S*... Références Man snort(8), tcpdump(1) Paquetage La documentation du paquetage est très complète. Le fichier README donne une bonne vision d ensemble du produit et contient comme le man, la syntaxe. Le fichier SnortUsersManual.pdf est le guide d utilisation du produit, il donne de nombreux exemples. Internet http://www.snort.org Le site officiel du logiciel Snort. http://www.snort.org/snort_rules.html Comment établir de nouvelles règles de détection d intrusion. Tsoft/Eyrolles TCP/IP sous Linux 21-23
Atelier 1 : Introduction Objectifs : Savoir utiliser le logiciel scanner de ports nmap Savoir utiliser le logiciel SAINT de simulation d intrusion Durée : 15 minutes. TSOFT - TCP/IP sous Linux Module 21 : L audit - 21.6 Exercice n 1 Balayez les ports TCP d un hôte avec nmap. Exercice n 2 Balayez les ports TCP d un hôte avec nmap, mais en précisant la plage de ports 1000 à 3000. Exercice n 3 Balayez les ports UDP d un hôte dans la plage 500 à 550 avec nmap. Exercice n 4 Découvrez les hôtes présents sur le réseau (192.168.218.0/24 par exemple) avec nmap Exercice n 5 Découvrez les protocoles IP d un hôte avec nmap. Exercice n 6 Découvrez avec nmap les imprimantes réseaux présentes sur le réseau (192.168.218.0/24 par exemple). 21-24 Tsoft/Eyrolles TCP/IP sous Linux
Exercice n 7 En suivant l exemple du support, utilisez le logiciel SAINT pour analyser un hôte. Exercice n 8 Durant l analyse effectuée par le logiciel SAINT déclenchée dans l exercice précédent, détectez cette attaque via le logiciel snort. Tsoft/Eyrolles TCP/IP sous Linux 21-25