Jean-François Bouchaudy

26  Download (0)

Full text

(1)

© Tsoft et Groupe Eyrolles, 2003, ISBN2-212-11369-2

(2)

Objectifs

Savoir utiliser quelques outils d’audit réseaux tels que nmap et SAINT.

Contenu

L’audit nmap SAINT snort

References

Livres

Network Troubleshooting Tools, par J.D. Sloan.

Halte aux hackers, par S. McClure.

· security scanner

· ACK, RST, SYN

· SEQ, ICMP, FIN

· URG, PUSH

· Syslog

(3)

Module 21 : L ’audit - 21.2 TSOFT - TCP/IP sous Linux

L ’audit

n Les outils d’attaque

l Les « scanners » de ports

nmap

l Les simulateurs d’intrusion

SAINT World Wide Digital Security nessus

ISS ISS

CyberCop Networks Associtaes Scanner Cisco

n La détection des attaques

snort ippl

Objectif : présenter un panorama des outils d’audit réseau.

Introduction

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.

(4)

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

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.

Références 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.

(5)

Module 21 : L ’audit - 21.3 TSOFT - TCP/IP sous Linux

nmap

n Balayer les ports TCP nmap venus

n Balayer les ports UDP nmap -sU venus

n 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

n Balayer les protocoles IP nmap -s0 192.168.218.10

n Déterminer l’OS

nmap -O 192.168.218.15

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.

(6)

-sX Utilise un paquet FIN avec les drapeaux URG et PUSH levés.

-sN Utilise un paquet avec les différents drapeaux baissés.

-sP 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.

-sU 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 nmap- services. Exemples : -p 515, -p 10-16,25,515-600.

-F Balaye uniquement les ports présents dans le fichier nmap- services.

-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).

(7)

-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.

(8)

# 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

(9)

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)

(10)

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.

(11)

Module 21 : L ’audit - 21.4 TSOFT - TCP/IP sous Linux

Saint

n 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.

n La configuration de l’analyse

l Sélection de la cible (hôte(s), réseau(x))

l Niveau d’analyse

n La collecte des données

n L’analyse des résultats

l Par types de failles

l Par catégories (services, OS, domaines, réseaux, hôtes)

l Par relations de confiance

Objectif : savoir utiliser de manière rudimentaire le simulateur d’intrusion SAINT.

Introduction

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.

(12)

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

(13)

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

(14)

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 :

(15)

· « 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.

(16)

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.

Figure N°6 : Information concernant une faille.

L’arborescence de logiciel

bin/ Les programmes de tests de sécurité.

config/ Les fichiers de configuration, principalement saint.cf.

html/ Les formulaires et la documentation de Saint.

results/ 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.

rules/ Les règles du système expert.

status_file Le journal des actions accomplies.

saint La commande saint.

La configuration de 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

(17)

é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.

(18)

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.

(19)

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.

(20)

Module 21 : L ’audit - 21.5 TSOFT - TCP/IP sous Linux

Snort

n Capture de paquets

l Affiche les résultats sur la sortie standard snort -v

l Affiche les données de la couche application et liaison snort -v -d -e > capture 2>&1

l Affiche les paquets provenant ou destinés à un hôte snort -v host 192.168.218.10

n Mémoriser des captures snort -l /var/log/snort

snort -l log -b # format tcpdump

n Détection d’intrusion

snort -d -h 192.168.218.10/24 -c snort.conf

Objectif : savoir utiliser de manière rudimentaire le détecteur d’intrusion snort.

Description

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.

Syntaxe

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é.

(21)

-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.

Exemples

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%)

====================================================================

(22)

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

(23)

- 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 [**]

(24)

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.

(25)

Module 21 : L ’audit - 21.6 TSOFT - TCP/IP sous Linux

Atelier 1 : Introduction

Objectifs :

n

Savoir utiliser le logiciel scanner de ports nmap

n

Savoir utiliser le logiciel SAINT de simulation d’intrusion

Durée :

15 minutes.

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).

(26)

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.

Figure

Updating...

References

Related subjects :