Aller au contenu

TP – Scanner, noter, prioriser, corriger, prouver

BTS SIO SISR 2e année – Bloc 3 – S13 – en binôme : un tape, l'autre lit ; on échange les rôles à chaque partie

Note

But. Réaliser un scan sur une cible de laboratoire, calculer des scores CVSS, prioriser les failles d'un rapport fictif (Atelier Verdier), puis corriger et prouver la correction par un nouveau scan.

Durée : 3 h 10. Prérequis : cours S13 lu ; S02 (échelles et dossier Atelier Verdier) ; S10.

Note

Comment ce TP fonctionne. Tu anticipes (« J'anticipe »), tu manipules, tu notes ce que tu constates, puis tu expliques (« Je comprends »). Un bilan de compétences clôt la séance.

Binôme : ____________ / ____________

Warning

Tu ne scannes que la cible du laboratoire, et seulement après avoir rempli l'autorisation de la partie A. Scanner une autre machine (celle d'un camarade hors laboratoire, le réseau de l'établissement, un site extérieur) est une infraction (séance S04, loi Godfrain).

Le laboratoire

Deux machines virtuelles Debian sur un réseau interne isolé, avec un compte sudo :

Machine Adresse Rôle
cible 10.50.0.20 Serveur de laboratoire : SSH et un petit site web mal réglé
scan 10.50.0.10 Poste de l'auditeur : nmap, nikto

Contraintes. Instantané des deux machines ; tu notes la sortie de chaque commande (capture datée).


Partie A – Cadrer le scan (≈ 20 min)

J'anticipe. Que peut-il se passer si tu scannes une machine sans prévenir son responsable ? ______________________

Remplis l'autorisation de scan (une par binôme, signée par l'enseignant qui joue le rôle du responsable) :

Élément À remplir
Périmètre (adresses)
Dates et horaires
Outils utilisés
Ce qui est interdit (déni de service, exploitation, accès aux données)
Contact en cas d'incident
Signatures

Je comprends. Pourquoi demande-t-on les horaires et un contact ? ______________________


Partie B – Préparer et scanner la cible (≈ 50 min)

B1 – Construire la cible

Sur cible :

sudo apt install -y nginx openssh-server
sudo rm -f /etc/nginx/sites-enabled/default
sudo mkdir -p /var/www/lab/backup
echo "<h1>Intranet de laboratoire</h1>" | sudo tee /var/www/lab/index.html
echo "db_password=Secret-Lab-1" | sudo tee /var/www/lab/backup/config.bak
sudo tee /etc/nginx/conf.d/lab13.conf <<'CONF'
server {
    listen 80 default_server;
    root /var/www/lab;
    autoindex on;
}
CONF
sudo nginx -t && sudo systemctl restart nginx

Note

Le mot de passe de config.bak est fictif : le fichier représente une sauvegarde de configuration oubliée sur un serveur web, une erreur très fréquente.

B2 – Scanner

Sur scan :

nmap -sV -p 1-1000 10.50.0.20
nmap -p 80 --script http-enum 10.50.0.20
nmap -p 22 --script ssh2-enum-algos 10.50.0.20
nikto -h http://10.50.0.20
  • nmap -sV : liste les ports ouverts et devine les versions ;
  • --script : lance des vérifications ciblées ;
  • nikto : cherche des faiblesses web courantes.

J'anticipe. Avant de lire : quels ports seront ouverts ? Que pourrait trouver http-enum ? ______________________

Relève au moins quatre constats (en copiant la ligne du rapport) :

# Constat (ligne du rapport) Outil Faille de logiciel ou de configuration ?
1
2
3
4

Je comprends. Un des constats est grave et ne porte aucune note CVSS dans le rapport. Lequel ? Pourquoi un scanneur ne l'a-t-il pas noté ? ______________________

Point de contrôle : captures des sorties de nmap -sV et de nikto.


Partie C – Calculer un score CVSS (≈ 35 min)

C1 – À la main

Pour chaque vecteur, devine la qualification (faible, moyenne, élevée, critique) avant tout calcul :

Vecteur Description Ma qualification
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N Un inconnu lit un fichier confidentiel par Internet
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H Un utilisateur du poste devient administrateur
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N Un script s'exécute dans le navigateur d'un autre utilisateur

C2 – Avec l'outil

Sur scan, crée cvss.py :

#!/usr/bin/env python3
# Calcul du score de base CVSS v3.1 : python3 cvss.py "AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
import sys, math

def arrondi(x):                       # arrondi au dixieme superieur
    n = round(x * 100000)
    return n / 100000.0 if n % 10000 == 0 else (math.floor(n / 10000) + 1) / 10.0

def score(vecteur):
    m = dict(p.split(":") for p in vecteur.replace("CVSS:3.1/", "").split("/"))
    av = {"N": 0.85, "A": 0.62, "L": 0.55, "P": 0.2}[m["AV"]]
    ac = {"L": 0.77, "H": 0.44}[m["AC"]]
    ch = m["S"] == "C"
    pr = {"N": 0.85, "L": 0.68 if ch else 0.62, "H": 0.5 if ch else 0.27}[m["PR"]]
    ui = {"N": 0.85, "R": 0.62}[m["UI"]]
    imp = {"H": 0.56, "L": 0.22, "N": 0.0}
    iss = 1 - (1 - imp[m["C"]]) * (1 - imp[m["I"]]) * (1 - imp[m["A"]])
    impact = 7.52 * (iss - 0.029) - 3.25 * (iss - 0.02) ** 15 if ch else 6.42 * iss
    expl = 8.22 * av * ac * pr * ui
    if impact <= 0:
        return 0.0
    return arrondi(min(1.08 * (impact + expl), 10)) if ch else arrondi(min(impact + expl, 10))

if __name__ == "__main__":
    print(score(sys.argv[1]))
python3 cvss.py "AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
python3 cvss.py "AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
python3 cvss.py "AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"
Vecteur Score Qualification Ma devinette était-elle juste ?
1
2
3

Je comprends. Choisis un critère (par exemple AV) et modifie-le dans un vecteur : de combien le score change-t-il ? Quel critère fait le plus varier la note ? ______________________


Partie D – Prioriser le rapport de l'Atelier Verdier (≈ 50 min)

Voici le résultat fictif d'un scan autorisé du réseau de l'Atelier Verdier (séance S02) : les notes sont calculées avec l'outil de la partie C ; les colonnes « exploitation » et « correctif » viennent d'une veille fictive.

Id Actif Constat Vecteur Note Exposition Exploitation connue Correctif
V01 Box / accès distant Bureau à distance (port 3389) ouvert sur Internet, mot de passe seul AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 9,8 Internet Oui (tentatives automatisées courantes) Réglage
V02 3 PC de machines à commande numérique Windows 7 en fin de support : exécution de code à distance AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H 8,1 Réseau interne Oui Aucun (fin de support)
V03 NAS de sauvegarde Interface d'administration avec identifiants par défaut AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 9,8 Réseau interne Oui (trivial) Réglage
V04 Serveur de fichiers Protocole SMBv1 activé : exécution de code à distance AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H 8,1 Réseau interne Oui Réglage
V05 8 PC du bureau Lecteur de PDF obsolète : exécution de code à l'ouverture d'un fichier AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H 7,8 Réseau interne Oui Mise à jour
V06 Serveur de fichiers Élévation de privilèges locale AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H 7,8 Réseau interne Non connue Mise à jour
V07 Serveur de fichiers Protocole de chiffrement ancien (TLS 1.0) accepté sur l'administration AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N 4,2 Réseau interne Non connue Réglage
V08 Imprimante réseau Version du micrologiciel divulguée AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N 5,3 Réseau interne Non Mise à jour

J'anticipe. Sans calcul, quelles trois failles corrigerais-tu en premier ? ______________________

D1 – Priorité

Pour chaque ligne, attribue une priorité selon la règle du TP :

Priorité Critère
P1 Exposée à Internet et exploitée ; ou exploitée et actif essentiel (sauvegarde, serveur de fichiers, machines de production)
P2 Exploitée, actif non essentiel ; ou note ≥ 7 sur un actif essentiel
P3 Non exploitée, note ≥ 4, avec un impact direct sur un actif
P4 Le reste (simple divulgation d'information, note < 4)

Note

Cette règle est propre au TP, pour s'exercer : chaque organisation écrit la sienne (séance S03).

Id Priorité Justification en une ligne Action Délai
V01
V02
V03
V04
V05
V06
V07
V08

Délais de laboratoire, à adapter : P1 sous 48 heures, P2 sous 2 semaines, P3 sous 2 mois, P4 au fil de l'eau.

Je comprends.

  1. Deux failles ont la même note (9,8) mais pas la même urgence : lesquelles, et pourquoi ? ______________________
  2. La faille V02 n'a aucun correctif : quelle réponse proposes-tu, avec quelle séance du cours ? ______________________
  3. Une faille à 4,2 peut-elle passer avant une faille à 7,8 ? Dans quel cas ? ______________________
  4. Quelles sont les corrections rapides et gratuites (celles qui sont de simples réglages) à faire immédiatement ? ______________________

Partie E – Corriger et prouver (≈ 35 min)

Retour sur la cible de laboratoire. Parmi les constats de la partie B, corrige au moins trois points.

E1 – Les corrections

Sur cible :

# 1. Retirer le fichier de sauvegarde oublie
sudo rm -rf /var/www/lab/backup
# 2. Remplacer la configuration du site
sudo tee /etc/nginx/conf.d/lab13.conf <<'CONF'
server {
    listen 80 default_server;
    root /var/www/lab;
    autoindex off;
    server_tokens off;
    add_header X-Frame-Options "DENY" always;
    add_header X-Content-Type-Options "nosniff" always;
}
CONF
sudo nginx -t && sudo systemctl restart nginx

Je comprends. Explique ce que corrige chaque ligne (rm, autoindex off, server_tokens off, chaque en-tête). Laquelle est indispensable et lesquelles sont du durcissement ? ______________________

E2 – Prouver

Sur scan, refais exactement les mêmes scans que la partie B :

nmap -sV -p 1-1000 10.50.0.20
nmap -p 80 --script http-enum 10.50.0.20
nikto -h http://10.50.0.20
Constat de la partie B Corrigé ? Preuve (ligne du nouveau rapport)
1
2
3
4

Je comprends. Un constat subsiste après correction (cherche dans la sortie de nikto) : lequel, et que décides-tu : le corriger, le compenser, ou accepter le risque ? ______________________

Point de contrôle : captures « avant » et « après » côte à côte.


Partie F – Rendre compte (≈ 20 min)

F1 – Tableau de bord

Indicateur Valeur
Failles du rapport Verdier par priorité (P1, P2, P3, P4)
Failles qui exigent un réglage (rapide, gratuit)
Failles sans correctif
Failles de la cible de laboratoire : avant / après correction

F2 – Note à la direction

Rédige dix lignes pour le dirigeant de l'Atelier Verdier (qui n'est pas informaticien) : les trois premières actions, ce qu'elles coûtent en temps (pas en euros), ce qu'on ne corrige pas tout de suite et pourquoi, et comment on vérifiera que c'est fait. N'utilise aucun sigle non expliqué.


Retour en entreprise (si ta situation le permet)

  • Observer : ton entreprise scanne-t-elle ses machines ? Avec quel outil, à quelle fréquence, et qui lit le rapport ?
  • Documenter : compare avec le cycle du cours.

Rendu

Compte rendu PDF, nommé RENDU-B3A2-S13-NOM.pdf, contenant l'autorisation de la partie A, les captures datées des parties B et E, les tableaux de C et D, et la note de F2.

Bilan de la séance

Compétence du référentiel Ce que j'ai fait dans cette séance Niveau
B3.4 – Garantir la disponibilité, l'intégrité et la confidentialité des services informatiques et des données de l'organisation face à des cyberattaques
B3.5A – Assurer la cybersécurité d'une infrastructure réseau, d'un système, d'un service

Note

Je sais faire, sans aide :

  • Distinguer vulnérabilité, correctif, exposition et exploitation ;
  • Lire un vecteur CVSS et en expliquer les limites ;
  • Faire un scan autorisé et lire le résultat ;
  • Prioriser avec plusieurs critères ;
  • Prouver une correction par un nouveau scan.

Ce que je dois reprendre : ______________________