Auditer la sécurité de son réseau |
||
|
gunzip sara-2_1_9_tar.gz
tar xvf sara-2_1_9_tar
Puis dans le répertoire ainsi obtenu, il suffit de taper:
make linux
Il va créer des exécutables sous ./sara-2.1.9/bin. L'exécutable de lancement de SARA se trouve directement sous ./sara-2.1.9, chez moi il n'avait pas les droits d'exécutions, j'ai du modifier ça.
chmod 744 ./sara-2.1.9/sara
NOTE: vous devez disposer de Perl 5 (ou supérieur).
./sara-2.1.9/sara
NOTE: Si vous disposez de nmap (voir le chapitre suivant), vous pouvez rajouter l'option -n pour lui indiquer, le scan sera d'autant meilleur.
Et là surprise, c'est le browser par défaut qui se lance
(netscape chez moi). Il y a une chose à modifier dans les
Préférences
de netscape pour que ça puisse marche, aller dans le
menu:
Edit -> Préférences -> Navigator -> Applications -> dans la liste choisir Perl Program -> puis en final Edit, modifiez les champs tels qu'indiqués sur le screenshot à droite. |
Voilà maintenant dans le browser vous avez la page d'accueil de Sara avec le menu à gauche contenant les champs suivants:
Sara Home (cette page)
Data Management
Target Selection
Data analysis
Configuration Mgt
Documentation
Troubleshouting
A noter que la partie documentation (en html) est très bien fournie ainsi que la section troubleshouting se présentant sous forme de FAQ.
La première étape est de sélectionner la cible à analyser. on clique donc sur Target Selection, vous devez alors saisir:
Primary target selection: choix de la cible
Primary target host or network, e.g. : la cible à analyser, par défaut la machine courante
Vous avez le choix entre:
Scan the target host only. :scanner uniquement la cible indiquée
plus haut
Perform DOS attack on the target host only.: si c'est une machine
sous windows, on peut faire des attaques particulières
Scan all hosts in the primary (i.e. the target's) subnet.: scanner
tout le sous-réseau
Par défaut on scrute que l'host indiqué
Scanning level selection: niveau de scanning
Light: léger
Normal (may be detected even with minimal logging)
Heavy (error messages may appear on systems consoles)
Extreme (some unpatched services may fail)
Par défaut c'est un scanning heavy qui est choisi
Firewall Support: si la machine à scanner est derrière un firewall ou non
No Firewall Support: pas derrière un firewall
Firewall Support : derrière un firewall
Voilà maintenant on a un bouton start the scan, et c'est parti, là ça peut prendre un certain temps, voilà le résultat final sur la machine obelix.armoric.bz:
Data collection in progress...
18:58:16 bin/timeout 120 bin/fping obelix.armoric.bz
18:58:17 bin/timeout 20 bin/finger.sara obelix.armoric.bz
18:58:20 bin/timeout 20 bin/dns.sara obelix.armoric.bz
18:58:20 bin/timeout 20 bin/rpc.sara obelix.armoric.bz
18:58:21 bin/timeout 120 bin/tcpscan.sara 1-1525,1527-7099,7101-9999,12345,16600,20034,27665,31337,31785,65000
obelix.armoric.bz
18:58:36 bin/timeout 120 bin/hosttype.sara obelix.armoric.bz
18:58:48 bin/timeout 120 bin/udpscan.sara 1-1760,1763-2050,31335,31337,27444,32767-33500
obelix.armoric.bz
18:59:23 bin/timeout 30 bin/login.sara -u rewt -p satori obelix.armoric.bz
18:59:48 bin/timeout 120 bin/nfs-chk.sara -t 10 obelix.armoric.bz
18:59:49 bin/timeout 20 bin/sendmail.sara obelix.armoric.bz
18:59:51 bin/timeout 120 bin/relay.sara obelix.armoric.bz
18:59:52 bin/timeout 20 bin/http.sara http obelix.armoric.bz
18:59:55 bin/timeout 20 bin/statd.sara obelix.armoric.bz
18:59:55 bin/timeout 20 bin/sample.sara.ext http obelix.armoric.bz
18:59:55 bin/timeout 20 bin/smb.sara obelix.armoric.bz
19:00:15 bin/timeout 20 bin/pop3.sara obelix.armoric.bz
19:00:18 bin/timeout 30 bin/login.sara -u guest obelix.armoric.bz
19:00:42 bin/timeout 20 bin/showmount.sara obelix.armoric.bz
19:00:43 bin/timeout 20 bin/ypbind.sara obelix.armoric.bz
19:00:43 bin/timeout 30 bin/login.sara -u lp obelix.armoric.bz
19:01:08 bin/timeout 20 bin/dns-chk.sara obelix.armoric.bz
19:01:23 bin/timeout 20 bin/xhost.sara -d obelix.armoric.bz:0 obelix.armoric.bz
19:01:25 SARA run completed
Data collection completed (1 host(s) visited).
Si vous choisissez View primary target results, vous obtiendrez un truc du style:
General host information:
Host type: Linux 2.1.122
NFS server
NIS server
NNTP (Usenet news) server
POP server
Telnet
server
WWW server
X Windows server
XDM (X login) server
Subnet 192.168.13
Scanning level: heavy
Last scan: Fri Mar 3 19:01:23 2000
Vulnerability information:
DNS may be vulnerable
Check nntp for vulnerabilities
SMTP
may be a mail relay
Do
you want snmp on Internet
rpc.statd
is enabled and may be vulnerable
Vous constatez qu'il y a des liens un peu partout qui vous donne plus d'info.
Si par contre vous choisissez "Sara Reporting and analysis", vous aurez alors le menu suivant:
Table of contents
Vulnerabilities
By Approximate Danger Level
By Type of Vulnerability
By Vulnerability Count
Host Information
By Class of Service
By System Type
By Internet Domain
By Subnet
By Host Name
Trust
Trusted Hosts
Trusting Hosts
Reporting
SARA Pro Reporter
Chaque catérogie étant un lien vers un autre page avec davantages de détails. Je ne vous les présenterai pas de manière exhaustive, car ça part vraiment dans tous les sens.
rpm -ivh nmap-2.12-1.i386.rpm
L'exécutable nmap est installé par défaut dans /usr/local/bin
NOTE: Vous constaterez qu'il existe une version supérieure béta de nmap, mais je préfère travailler sur des versions stables.
nmap [options éventuelles] cible
Les options principales sont:
-sT scanning des ports TCP ouverts, on ouvre une
connexion sur tous les ports ouverts, toutes les connexion sont visibles
sur la machine cible (dans les fichiers de log notamment),
-sS scanning des ports TCP, on envoit un message
SYN pour dire qu'on va ouvrir une connexion TCP puis on attend la réponse,
après réponse on sait que le port est ouvert, l'avantage
de cette option est que l'action n'est pas logué par la cible,
-sF,-sX,-sN Stealth FIN, Xmas, ou
Null scan (marche que sous UNIX) scan des ports plus discrets (voir man
nmap pour plus de détails)
-sP équivalent à ping, pour
voir si la cible est "alive", ne fait pas de scan,
-sU scanning des ports UDP ouverts (plutôt
lent),
-b <ftp_relay_host> ftp "bounce attack" port
scan, en gros ça exploite un trou de sécurité sur
certain proxy, je vous en dirais pas plus (voir le man).
D'autres options intéressantes (liste non exhaustive):
-O permet de connaître sur quel OS tourne
la cible (fingerprinting en anglais),
-p <range> syntaxe pour avoir un ensemble de
ports à scanner, exemple :
-p 23 on va regarder
que le port 23
-p 20-30,63000-
va scanner les ports de 20 à 30 et supérieur à 63000
(jusqu'à 65535 en fait)
par défaut
il scrute uniquement de 1 à 1024 plus les ports se trouvant dans
/etc/services,
-F scan rapide, scanne uniquement les ports
contenus dans /etc/services,
-I permet d'avoir plus d'info sur les ports TCP
ouverts, notamment le proprio,
-o <logfile> log le résultat dans le
fichier <logfile>,
-v Verbose, mode verbeux (recommandé),
-h help, pour avoir la liste complète des
options,
-V pour avoir uniquement le numéro de version,
pas la peine de rentrer de cible,
-e <devicename>, avec ça on peut spécifier
une interface particulière pour envoyer les paquets (eth0,ppp0,etc.).
Maintenant la cible peut être identifié par son nom sur internet ou son adresse IP. On peut désigner un ensemble d'adresse aussi, ou des sous-masques de réseau particulier. Par exemple domaine.org/24 ou 192.88.209.5/24, 192.88.209.0-255 ou bien encore '128.88.209.*'.
nmap -v cible
Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
No scantype specified, assuming vanilla tcp connect() scan. Use
-sP if you reall
y don't want to portscan (and just want to see what hosts are up).
Host cible (192.168.13.10) appears to be up ... good.
Initiating TCP connect() scan against cible (192.168.13.10)
Adding TCP port 25 (state Open).
Adding TCP port 113 (state Open).
Adding TCP port 619 (state Open).
Adding TCP port 21 (state Open).
Adding TCP port 1024 (state Open).
Adding TCP port 6000 (state Open).
Adding TCP port 110 (state Open).
Adding TCP port 98 (state Open).
Adding TCP port 23 (state Open).
The TCP connect scan took 3 seconds to scan 1483 ports.
Interesting ports on cible (192.168.13.10):
Port State
Protocol Service
21 open
tcp ftp
23 open
tcp telnet
25 open
tcp smtp
98 open
tcp linuxconf
110 open
tcp pop-3
111 open
tcp sunrpc
113 open
tcp auth
515 open
tcp printer
619 open
tcp unknown
1024 open
tcp unknown
6000 open
tcp X11
Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds
La commande suivante va permettre de scanner tous les ports TCP réservés :
nmap -sS -O cible
Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
Interesting ports on cible (192.168.13.11):
Port State
Protocol Service
21 open
tcp ftp
23 open
tcp telnet
25 open
tcp smtp
98 open
tcp linuxconf
110 open
tcp pop-3
111 open
tcp sunrpc
113 open
tcp auth
515 open
tcp printer
619 open
tcp unknown
1024 open
tcp unknown
6000 open
tcp X11
TCP Sequence Prediction: Class=random positive increments
Difficulty=4054800 (Good luck!)
Remote operating system guess: Linux 2.1.122 - 2.1.132; 2.2.0-pre1
- 2.2.2
Nmap run completed -- 1 IP address (1 host up) scanned in 12 seconds
Maintenant on va tester si sshd, DNS, pop3d, imapd (ports respectifs 22, 53, 110 et 143) tournent sur le système et si le port 4564 est utilisé:
nmap -sX -p 22,53,110,143,4564 cible
Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
Interesting ports on cible (192.168.13.11):
Port State
Protocol Service
53 open
tcp domain
110 open
tcp pop-3
Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds
On constate qu'il n'y a que le DNS (domain) et un serveur POP3 qui marchent sur la machine.
nessus-plugins-0_99_5_1-1_i386.rpm (contenant la liste des points
de sécurité à vérifier)
nessus-0_99_5_1-1_i386.rpm (contenant le serveur nessusd)
nessus-client-0_99_5_1-1_i386.rpm (contenant le client nessus)
A noter aussi que vous avez besoin d'installer aussi le package nmap (voir chapitre précédent). L'installation est on ne peut plus classique, on commence d'abord par installer nmap, puis nessus, nessus-plugins et enfin nessus-client, avec les commandes:
rpm -ivh nessus-plugins-0_99_5_1-1_i386.rpm
rpm -ivh nessus-0_99_5_1-1_i386.rpm
rpm -ivh nessus-client-0_99_5_1-1_i386.rpm
A noter qu'à l'install du serveur nessusd on a les commentaires suivants:
[root@tavel nessus]# rpm -ivh nessus-0_99_5_1-1_i386.rpm
nessus
##################################################
nessusd is now ready to run !!
You must at first launch, create an initial user account.
To do that, you must be super-user and enter :
nessusd -P user,password
ie: nessusd -P root,myownpwd
PS: if you upgrade from previous nessus release
remove your nessus key with :
rm -f ~/.nessus*
Le serveur nessusd vous indique qu'il faut qu'il faut créer un utilisateur autorisé à utiliser nessus, root me semble un bon choix. La commande à taper est:
nessusd -P root,mot-de-passe-en-clair
Generating primes: ........q............pg
Vous noterez que le mot de passe est en clair.
nessusd -D
Ca y est le serveur est lancé, la seule signe de son activité est qu'il apparaît dans la liste des process:
NOTE: L'installation RPM fait que nessusd sera lancé à chaque boot de la machine pour éviter cela supprimer les liens suivants
cd /etc/rc.d
rm -f ./rc0.d/K15nessusd ./rc1.d/K15nessusd
./rc2.d/K15nessusd ./rc3.d/S85nessusd ./rc5.d/S85nessusd
./rc6.d/K15nessusd ./rc4.d/S85nessusd
ps -A | grep nessus
pour le client nessus, il suffit de taper nessus, quand on le lance la première fois, voici le resultat de la commande:
[root@tavel nessus]# nessus
Generating primes: ...q........pg
To protect your private key just generated, enter your
personal
pass phrase, now. Keep that pass phrase secret.
And each time
when you restart nessus, re-enter that pass phrase
when you are
asked, for. This prevents anybody else from logging
in to the
nessus server using your account.
The drawback of a pass phrase is that it will
prevent you from being
able to use nessus(1) in a cron job or in a quiet script.
If you do not want to use a pass phrase, enter a blank
one.
To change or remove the pass phrase, later on read in
the manual
page nessus(1) about the -C option.
New pass phrase:
Repeat :
Comme vous pouvez le lire en anglais, en plus du mot de passe, vous devez saisir une phrase password (éventuellement limité à un mot), elle sera demandée à chaque lancement du client nessus (en plus du mot de passe). Deux conséquences à cette saisie, elle empêchera que quelqu'un d'autre, connaissant votre mot de passe, utilise nessus et par ailleurs empêche qu'on puisse lancer nessus dans un script ou dans une tâche programmée (avec cron). On peut éventuellement changer la phrase (man nessus option -C).
NOTE: A la saisie de la phrase, rien n'apparaît, même
pas des *.
La fenêtre suivante (à droite) apparaît,
vous devez saisir le nom de la machine où tourne le serveur, si
la machine et le client tourne sur la même machine, vous pouvez laisser
localhost.
Laissez le port par défaut, c'est celui utilisé par nessusd.
Vous devez au niveau du champ login saisir l'utilisateur nessus que vous avez créé auparavant. Sur le site de nessus, vous pouvez trouver d'autres plugins au gré de la découverte de nouveaux trous de sécurité, on vous explique aussi comment les installer, ou éventuellement carrément en créer d'autres tout seul dans son coin. Maintenant vous pouvez vous connecter au serveur en appuyant sur le bouton Log in. A la première connexion, vous aurez sans doute un message et puis rien du tout, réessayer une deuxième, on vous demande alors le mot de passe. Vous voyez alors que le champ du bouton Log in se change en Log out, c'est bon vous êtes connectés. |
||
Une fois connectée dans le champ plugins, vous verrez
la liste des points à vérifier (liste du haut), la liste
du bas contenant les détails du point sélectionné
dans celle du haut, vous pouvez éventuellement invalider certains
points à vérifier. A noter que vous avez des infos bulles
fort riches quand vous passez la souris sur un champ. Par défaut
tout est sélectionné.
Dans l'onglet Prefs, vous pouvez saisir d'autres informations, notamment un nom d'utilisateur valide et son mot de passe si votre machine est aussi serveur POP. Dans l'onglet Scan options, vous avez encore d'autres options pour la vérification, je n'y ai pas touché. Dans l'onglet User, vous devez indiquer l'adresse email de la personne destinataire du rapport (root@locahost par défaut). |
||
Dans l'onglet Targer Selection, vous devez indiquer la machine cible dont on va auditer la sécurité en rentrant son adresse IP, éventuellement si vous voulez auditer toutes les machines du réseau 192.168.13.X, saisissez comme dans le screenshot 192.168.13.0/24. |
||
Voilà, on peut lancer maintenant le scan en appuyant sur le bouton "Start the scan", une fenêtre apparaît avec une barre d'avancament. Le scan peut être relativement long, ça dépend évidemment de la puissance de votre machine, du coup soyez patient et ne l'interrompez pas même s'il parait bloqué. | ||
Une fois le scan terminé, une fenêtre "Report" apparaît avec le détail des trous de sécurité et des warnings, vous pouvez éventuellement sauvegarder le rapport au format désiré (html, txt, latex, ....) (bouton du milieu en bas). |