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

De Wiki d'activités IMA
(Intrusion sur un serveur d'application web)
(Intrusion sur un serveur d'application web)
 
(41 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
  
DNS : tournecochon.site
+
== Serveur DNS ==
 
+
sur gandi.net on à reserver le DNS tournecochon.site pour notre site
= DNS =
 
  
 
== Configuration Bind ==
 
== Configuration Bind ==
 +
on souhaite avoir notre serveur Xen comme DNS principal
  
 +
on commence pour cela par installer bind
 
  apt-get install bind9
 
  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
 
Ajout GlueRecords ns1.tournecochon.site | 193.48.57.183
Ligne 40 : Ligne 67 :
 
== Certificat ssl ==
 
== Certificat ssl ==
  
aled.jpg
+
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
  
  $ openssl req -nodes -newkey rsa:2048 -sha256 -keyout myserver.key -out server.csr
+
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 51 : 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 92 : Ligne 216 :
  
 
==Intrusion sur un serveur d'application web==
 
==Intrusion sur un serveur d'application web==
 +
[[Fichier:intrusion_honey.zip]]
 +
(mot de passe habituel)
  
l'objectif de cette partie est de pouvoir executer des commandes en mode root sur le serveur honey.plil.info
+
= ASR =
 
 
pour ce faire on commence par accéder au site. On nous demande alors un identifiant et un mot de passe.
 
 
 
pour déterminer ce mot de passe, on utilise les identifiants et le mot de passe suivant
 
 
 
$ 'OR 'a'='a
 

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