Rencontre 1.2 - Authentification, CID, faille/exploit/fix
- 👨🏫 Déroulement
- 📚 Documents
- Retour sur le dernier cours
- Notions du contrôle d'accès
- Comment déjouer un mot de passe
- Facteurs d'authentification
- Formation des équipes pour le TP1 et choix des sujets
Le contrôle d'accès
Il apparaît comme une évidence que l'accès aux systèmes informatiques doit être contrôlé d'une manière ou une autre. On peut contrôler les accès de manière physique ou logique.
La notion d'identification permet de distinguer les différents utilisateurs d'un système. Généralement, cela se fait au moyen d'un nom d'utilisateur, qui représente en quelque sorte notre identité numérique.
La notion d'autorisation permet d'attribuer des droits, des permissions et des privilèges différents pour chaque utilisateur. Ce principe est rendu possible grâce à l'identification. Généralement, cela se fait par des listes d'accès (ACL).
La notion d'authentification est très importante puisque sans elle, n'importe qui pourrait se faire passer pour n'importe qui. L'authentification est le mécanisme par lequel on arrive à prouver notre identité au système, à démontrer que nous sommes vraiment qui nous prétendons être. Souvent, on accepte un mot de passe ou un NIP en guise de preuve.
La faiblesse des mots de passe
Un mot de passe est souvent utilisé en guise de preuve d'identité, mais il ne constitue pas vraiment une preuve. Nous avons vu au dernier cours que des mots de passe simples et non salés peuvent être facile à craquer si nous en possédons le hash. Même sans le hash, certains mots de passe sont faciles à deviner.
Augmenter la complexité du mot de passe est certes une bonne pratique, mais il y a des limites à son efficacité. Si le mot de passe est trop complexe, il risque d'être difficile à retenir. Si cette complexité est imposée à l'utilisateur, celui-ci risque d'être tenté d'écrire son mot de passe dans un fichier ou un post-it. Choisir un mot de passe long mais peu complexe, qu'on appelle parfois une passphrase, est plus difficile à craquer à partir du hash, mais plus facile à deviner par des humains (surtout s'il est composé de mots prévisibles, comme le nom de ses enfants).
De toutes les manières, s'il arrive que l'utilisateur n'est plus la seule personne au monde à connaître son mot de passe, alors celui-ci n'est plus une preuve valable de son identité. Alors comment protéger son mot de passe?
Avez-vous été pwned?
Comment fait-on pour obtenir le mot de passe de quelqu'un? Il y a plusieurs manières de s'y prendre.
Attaque par force brute
La manière la plus intuitive d'obtenir le mot de passe de quelqu'un est de tous les essayer un par un, souvent en commençant par les plus fréquents. C'est peu pratiquable pour un humain, mais c'est très facile à faire pour un script. On appelle ce stratagème une attaque par force brute (brute force attack).
Cette méthode est généralement peu efficace car la plupart des applications vont contrer automatiquement ce stratagème. Plusieurs contremesures:
- Bloquer l'application après un certain nombre de tentatives
- Ajouter un délai de traitement de plus en plus long entre les tentatives
- Imposer un CAPTCHA, c'est-à-dire poser une question facile à répondre pour les humains mais difficile pour les ordinateurs
Par ailleurs, ce type d'attaque est dangereux pour l'attaquant puisqu'il s'expose au risque de se faire prendre. Une attaque par force brute laisse souvent des traces et a le potentiel de déclencher des alertes qui pourraient attirer l'attention des équipes de sécurité.
Le site PasswordMonster.com permet d'estimer la force d'un mot de passe et combien de temps il faudrait pour le deviner à l'aide d'une attaque par force brute.
Craquage
Si un hacker arrive à mettre la main sur une base de données contenant des mots de passe, ou des hash, il peut tenter de craquer ces derniers comme on a vu au dernier cours. Si les mots de passe ne sont pas salés ou que le hacker a accès à des ordinateurs très performants, il pourrait arriver à retrouver le mot de passe ou un équivalent. Un mot de passe long peut aider à empêcher que votre mot de passe ne soit craquable.
Ingénierie sociale
Il arrive que les humains soient plus faciles à tromber que les systèmes. Par exemple, le hacker peut faire une recherche sur l'utilisateur pour tenter de deviner son mot de passe, ou encore le contacter en se faisant passer pour un technicien légitime et lui demander son mot de passe. Normalement, vous devriez choisir des mots de passe qui ne sont pas facilement devinables et ne jamais le communiquer à qui que ce soit. Dès que votre mot de passe est connu d'une autre personne que vous, il n'est plus sécuritaire.
Surveillance du clavier
On a beau chiffrer le mot de passe dans sa transmission et son stockage, il est toujours en texte clair lorsque l'utilisateur le tape sur le clavier. Donc en surveillant les frappes de touches, on peut connaître le mot de passe.
Surveillance du presse-papier
Et même si le mot de passe n'est pas tapé sur le clavier, qu'on préfère le copier-coller pour ne pas qu'il soit détectable sur le clavier, sachez que le presse-papier (la zone de la mémoire qui contient les données copiées en attente d'être collées) n'est pas chiffré non plus. Il est possible de visualiser le contenu du presse-papier avec un outil spécialisé.
Voler les mots de passe ailleurs
Plusieurs personnes utilisent le même mot de passe pour plusieurs applications. C'est une mauvaise pratique, puisque si l'une de ces applications est compromise, l'attaquant peut deviner votre mot de passe et usurper votre identité sur toutes les autres. C'est particulièrement dangereux si, en plus, votre nom d'utilisateur est aussi le même.
Le site Have I Been Pwned peut vous aider à identifier le risque que l'un de vos mots de passe soit compromis. Entrez votre identifiant ou votre adresse courriel et l'application vous dira s'il se trouve dans une liste de comptes qui ont fuité. Le cas échéant, il pourrait être judicieux de modifier votre mot de passe, sur cette application mais aussi sur les autres.
Stratégies pour gérer ses mots de passe
Pour bien gérer ses mots de passe tout en gardant une bonne taille et un niveau de complexité raisonnable, tout en évitant qu'il soit toujours le même partout, on peut recourir à un gestionnaire de mots de passe. Il y a deux types de gestionnaire de mots de passe:
Stocker les mots de passe localement
Au lieu d'avoir un fichier texte ou Excel avec tous nos mots de passe écrits en clair, il existe des applications qui permettent de stocker localement notre liste de mots de passe de manière sécuritaire, dans un fichier fortement chiffré. Un des plus connu est KeePass 2.
L'application permet de manipuler des fichiers KBDX qui contiennent des comptes et des mots de passe. Le fichier KBDX est chiffré et exige un mot de passe. On a avantage à choisir un mot de passe solide puisque c'est celui-ci qui donnera accès à tous les autres mots de passe contenus dans le fichier. On peut créer un compte et laisser générer des mots de passe longs et complexes aléatoirement. Pour utiliser le mot de passe, on n'a qu'à le copier-coller; l'application efface automatiquement le presse-papier après usage.
Stocker les mots de passe dans le nuage
Une autre approche consiste à conserver les mots de passe dans le cloud. Il existe plusieurs options, gratuites ou payantes.
Ces applications ont l'avantage d'être faciles d'utilisation et centralisées, donc utilisables sur une multitude d'appareils. Mais avant de transférer nos mots de passe, il ne faut pas oublier que ceux-ci deviennent connus de ce fournisseur. S'il se fait pirater, tous nos mots de passe sont compromis d'un coup. Il faut avoir une confiance inébranlable envers la compagnie à qui on confie nos mots de passe.
Facteurs d'authentification
On a beau employer toutes les bonnes pratiques dans la construction et la gestion de nos mots de passe, il y a toujours un risque que celui-ci soit compromis. Donc même si le mot de passe constitue souvent une preuve acceptable de l'identité d'un utilisateur, ce n'est pas parfait. Pour améliorer la fiabilité de l'authentification, nous allons souvent exiger des preuves supplémentaires. On appelle ces preuves des facteurs d'authentification.
Les facteurs d'authentification se déclinent en trois grandes catégories: mémoriel (ce que je sais), matériel (ce que je possède) et corporel (ce que je suis). Un seul de ces facteurs peut être compromis, mais si on en exige plus d'un en même temps, on réduit le risque de compromission. C'est ce qu'on appelle l'authentification multifactorielle (MFA, 2FA).
Le facteur mémoriel (ce que je connais)
Une manière de prouver mon identité consiste à fournir une information connue uniquement de moi et du système.
Quelques exemples de facteurs mémoriels:
- Un mot de passe
- Un NIP
- Les réponses aux questions de sécurité
Le facteur matériel (ce que je possède)
On peut également prouver notre identité en procurant la preuve de possession d'un objet.
Quelques exemples de facteurs matériels:
- Un téléphone cellulaire
- Une clé USB particulière
- Une carte d'identité électronique
- Un jeton SecurID
Le facteur corporel (ce que je suis)
On recourt de plus en plus à la biométrie en tant que facteur d'authentification. Bien que des caractéristiques biométriques soient difficiles à falsifier en théorie, elles sont aussi plus difficiles à mesurer de manière fiable. Aussi, elles sont souvent stockées localement sur les appareils plutôt que dans des systèmes centralisés.
Quelques exemples de facteurs biométriques:
- Une empreinte digitale
- La reconnaissance faciale
- La reconnaissance vocale
Outils
Keepass
KeePass est un gestionnaire de mots de passe. Il permet de créer un fichier sécurisé contenant plusieurs mots de passe et inclut des outils pour générer des mots de passe complexes aléatoirement. Il est particulièrement pratique pour gérer des mots de passe de comptes de service dans les départements TI.
InsideClipboard (NirSoft)
InsideClipboard est un outil qui permet de visualiser le contenu du presse-papier de Windows.
Clipboardic (NirSoft)
Clipboardic (NirSoft) est un outil qui permet d'enregistrer l'historique du contenu du presse-papier de Windows.
Notions de vulnérabilité, exploit et correctif
Concepts clés en cybersécurité
| Terme | Définition |
|---|---|
| Vulnérabilité | Une faille ou faiblesse dans un système pouvant être exploitée. Peut être de nature technologique ou humaine. |
| Menace | Événement potentiel qui pourrait causer des dommages. |
| Risque | Probabilité qu'une menace exploite une vulnérabilité et cause un impact. |
| Exploit (attaque) | Action visant à tirer profit d'une vulnérabilité. L'exploit est souvent complexe et contient beaucoup d'étapes. Essentiellement, c'est une marche à suivre qu'une personne qualifiée peut appliquer pour mener à bien l'attaque en « exploitant » la vulnérabilité. |
| Correctif (fix) | Solution pour corriger la vulnérabilité et bloquer l'exploit. On peut valider un correctif en s'assurant que l'exploit ne fonctionne plus. |
Exemple d'attaque avec exploit et correctif
Résumé :
Un étudiant a placé un keylogger physique sur le poste du prof dans le local D0605. Il a pu récupérer les mots de passe des 8 profs qui donnent des cours dans ce local. Cela inclut son prof pour un cours qu'il est au bord de couler.
Vulnérabilité
L'accès physique aux ordinateurs des profs est possible et il n'y a pas de moyen de surveillance des classes.
Exploit
- acheter un keylogger physique sur un site de vente en ligne
- attendre une fin de journée un vendredi pour installer le keylogger
- fermer la porte du local temporairement
- glisser sa main derrière le poste pour débrancher le clavier
- brancher le clavier USB du prof dans le keylogger
- brancher le keylogger dans le port USB du poste
- attendre une période suffisamment longue pour que le keylogger ait enregistré des mots de passe
- revenir pour récupérer le keylogger en procédant à l'inverse de la première étape
Correctif
Les détails de l'exploit permettent de trouver un correctif:
- on pourrait empêcher une main de passer derrière les postes
- espace plus serré
- boite complètement fermée
- on pourrait empêcher l'accès sans être détecté
- avec des caméras dans les locaux
- avec une caméra sur l'arrière des postes
- on pourrait limiter la durée de l'attaque
- s'assurer qu'un technicien passe régulièrement inspecter les postes
- former les profs pour qu'ils valident que rien n'est branché en arrière en début de cours
Leçons
- Si on ne sait pas comment l'attaque a été menée, on ne peut pas trouver de correctif
- On essaie de se défendre un peu à l'aveugle
Exemple de vulnérabilité sans réel exploit :
- https://medium.com/@haydengpt/when-72-characters-is-all-it-takes-unpacking-spring-securitys-latest-snafu-6a65164d370b
- https://spring.io/security/cve-2025-22228
Exercice par équipe de 3-4 (10 min)
Par groupe de 3 ou 4, déterminer la vulnérabilité, l'exploit et le correctif.
Joris un des profs du département d'informatique a reçu un courriel venant d'un collègue d'un autre collège. Dedans il y avait un `.exe` avec supposément la démo d'un TP dans un cours qu'il donne.
En ouvrant le `.exe` depuis son poste au collège, apparemment rien ne se passe. Il continue ses affaires.
Une heure plus tard, il essaie d'ouvrir un fichier sur son disque réseau Z: et il y a un fichier `LIS_MOI.txt` qui accompagne un énorme fichier `stuff.encrypted`, tout le reste a disparu.
Types d'attaques et objectifs visés
Ceci est une liste non exhaustive des objectifs visés et des types d'attaques présentant le potentiel de les atteindre.
| Objectif | Types d'attaques |
|---|---|
| Obtenir des données confidentielles | Hameçonnage, Exécution de code à distance, Rançongiciel |
| Nuire à un ennemi | Déni de service (DoS) , Déni de service distribué (DDoS), Rançongiciel |
| Voler des renseignements personnels | Hameçonnage, Exécution de code à distance |
| Détourner des fonds | Hameçonnage, Exécution de code à distance, Rançongiciel |
| Modifier ou détruire des données | Exécution de code à distance, Rançongiciel |
Critères de sensibilité (triade CID)
| Critère | Définition |
|---|---|
| Confidentialité | L'information n'est accessible qu'aux personnes dont l'accès est autorisé. |
| Intégrité | L'information est authentique, correcte et fiable; elle n'a pas subi d'altération. |
| Disponibilité | L'information est disponible et les utilisateurs peuvent y accéder chaque fois qu'ils en ont besoin. |
Exercice triade CID (10 min)
Faites une petite recherche sur ces événements et dites quel(s) critère(s) de la triade CID ont été compromis.
- Desjardins (2019)
- Ashley Madison (2015)
- CrowdStrike (2024)
- Equifax (2017)
- Université de Santa Clara (2011)
- L'attaque de Mafiaboy (2000)
- Attaque NotPetya contre l'Ukraine (2017)
Traçabilité
On ajoute parfois à la triade CID un quatrième critère, celui de la traçabilité. Les entreprises vont mettre en place des mesures pour remonter à la source en cas d'attaque, à l'aide de systèmes de détection et de journalisation.
Les types de hackers
Les hackers sont des experts en cybersécurité qui cherchent à exploiter des vulnérabilités d'un système informatique. Ce sont des spécialistes de la cybersécurité offensive.
Les hackers se déclinent en plusieurs catégories en fonction de leur intention et de leur sens de l'éthique.
-
Le Black Hat est un cybercriminel qui utilise ses compétences dans le but de nuire ou de faire du profit.
-
Le White Hat, ou hacker éthique, opère dans la légalité. Il réalise des tests d'intrusion avec la permission ou à la demande d'une organisation pour aider cette dernière à sécuriser ses systèmes et ses données.
-
Le Grey Hat est situé entre les deux. Il perpètre ses attaques, illégalement ou non, sans intention malveillante ou pécuniaire.
-
Le hacktiviste est un grey hat qui utilise des techniques de hacking pour défendre une cause qu'il croit juste et vertueuse, souvent de manière illégale.
Métriques de base du CVSS
Si tu es exposé à 50 menaces de cybersécurité de toutes sortes et que tu dois décider laquelle est la plus importante à gérer, il faut que tu t'équipes d'outils pour l'évaluer.
Un de ces outils est le Common Vulnerability Scoring System (CVSS).
Le CVSS est un système permettant d'évaluer le niveau de criticité d'une vulnérabilité. Il vise à nous aider à prioriser notre réponse à des vulnérabilités connues. En évaluant certaines métriques, le CVSS produit un score: plus le score est élevé, plus la vulnérabilité est sérieuse et plus il est urgent de la sécuriser. Vous pouvez utiliser cet outil pour calculer le score CVSS.
Dans ce cours, nous nous attarderons seulement aux métriques de base.
AV: Vecteur d'attaque
Le vecteur d'attaque décrit comment la vulnérabilité peut être exploitée.
| Valeur | Code | Description |
|---|---|---|
| Réseau | AV:N | La vulnérabilité est exploitable par le réseau et peut passer à travers un routeur. |
| Adjacent | AV:A | La vulnérabilité est exploitable par le réseau, mais demande soit une proximité locale (bluetooth, WiFi) soit sur le même segment du réseau local. |
| Local | AV:L | La vulnérabilité est exploitable seulement avec un accès local au système, soit directement, soit à distance à l'aide de protocole comme SSH ou RDP, ou encore par ingénierie sociale. |
| Physique | AV:P | La vulnérabilité est exploitable seulement avec un accès physique et direct. |
AC: Complexité de l'attaque
La métrique de complexité décrit le niveau de difficulté de l'exploit. Il n'est pas ici question du niveau de compétence requis pour exploiter la vulnérabilité ou si l'attaque est "compliquée" à réaliser (par exemple, on doit envoyer du code en assembleur et c'est difficile à apprendre). On parle plutôt des conditions dans laquelle l'attaque doit être réalisée.
| Valeur | Code | Description |
|---|---|---|
| Bas | AC:L | L'attaque peut réussir sans circonstances particulières et sans grands efforts de préparation. |
| Haut | AC:H | Le succès de l'attaque dépend de circonstances hors du contrôle de l'attaquant, qui devra investir des efforts considérables pour préparer son attaque. |
PR: Privilèges nécessaires
La métrique de privilège décrit le niveau de privilège requis par un attaquant afin de réussir son exploit.
| Valeur | Code | Description |
|---|---|---|
| Aucun | PR:N | L'attaquant n'a pas besoin de s'authentifier ou de s'identifier pour l'attaque. |
| Bas | PR:L | L'attaquant doit être authentifié et disposer d'un accès de base. |
| Élevé | PR:H | L'attaquant doit être authentifié à l'aide d'un compte disposant de privilèges élevés ou significatifs. |
UI: Interaction nécessaire de l'utilisateur
La métrique d'interaction avec l'utilisateur décrit si le succès d'un exploit dépend d'une action particulière de la part d'un utilisateur tiers (autre que l'attaquant).
| Valeur | Code | Description |
|---|---|---|
| Aucune | UI:N | La vulnérabilité peut être exploitée sans dépendre d'une quelconque interaction avec un utilisateur. |
| Requise | UI:R | Le succès de l'exploit dépend d'une action de la part d'un utilisateur (par exemple, cliquer sur un lien dans un courriel). |
S: Portée (scope)
La métrique de portée décrit si une attaque réalisée avec succès sur le système vulnérable peut causer un impact sur un autre système.
| Valeur | Code | Description |
|---|---|---|
| Changée | S:C | Une vulnérabilité exploitée peut avoir des répercussions sur d'autres systèmes. |
| Inchangée | S:U | Le dommage causé par l'exploitation de la vulnérabilité est limité au système vulnérable. |
C: Impact sur la confidentialité
La métrique de confidentialité décrit si l'exploitation de la vulnérabilité a le potentiel de permettre l'accès à des données sensibles par des personnes non autorisées.
| Valeur | Code | Description |
|---|---|---|
| Aucune | C:N | Aucun impact sur la confidentialité. |
| Faible | C:L | Il y a un impact sur la confidentialité, mais l'étendue de l'information compromise est partielle ou l'attaquant n'a pas de contrôle sur les données qu'il accède. |
| Élevée | C:H | Un attaquant peut avoir accès à l'entièreté des données du système, incluant des données sensibles. |
I: Impact sur l'intégrité
La métrique de confidentialité décrit si l'exploitation de la vulnérabilité a le potentiel de permettre la modification ou l'altération de données.
| Valeur | Code | Description |
|---|---|---|
| Aucune | I:N | Aucun impact sur l'intégrité de l'information. |
| Faible | I:L | L'impact sur l'intégrité de l'information est circonscrit et limité. |
| Élevée | I:H | Un attaquant peut modifier toutes les données du système compromis. |
A: Impact sur la disponibilité (availability)
La métrique de disponibilité décrit si l'exploitation de la vulnérabilité a le potentiel d'empêcher l'accès à l'information par les personnes autorisées.
| Valeur | Code | Description |
|---|---|---|
| Aucune | A:N | Aucun impact sur la disponibilité. |
| Faible | A:L | La disponibilité est affectée de manière intermittente ou partielle, ou la performance peut être dégradée. |
| Élevée | A:H | Un attaquant peut rendre le système vulnérable complètement indisponible. |
Exemple de calcul du score CVSS
Cet exemple décrit le calcul du score CVSS d'une vulnérabilité ayant permis une attaque de déni de service (DDoS) sur le site omnivox pendant la période de remise des notes.
Résumé :
On est rendus le 28 décembre, et demain c'est la date limite pour remettre les notes. Plusieurs profs commencent à se plaindre, car la plupart du temps on ne peut pas accéder, et quand on accède, c'est très lent.
On va évaluer ça:
- Vecteur d'attaque: réseau
- Complexité d'attaque: là c'est pas évident, il faut quand même prendre le contrôle de plusieurs postes à moins que ce soit un grand nombre d'étudiants coordonnés
- Niveau de privilège nécessaire: aucun
- Interaction nécessaire de l'utilisateur: aucune
- Portée de l'impact: inchangée
- Confidentialité: aucune
- Intégrité: aucune
- Disponibilité: élevée
On va donc avoir un score de 7.5/10. C'est assez élevé, on va donc devoir s'en occuper rapidement.
Exercices par équipe de 3-4 (10 min):
Par groupe de 3 ou 4, déterminez chaque composante du CVSS 3.1 et le score final. Pensez à prendre des notes, ça pourrait servir pour les révisions pour l'examen.
Joris, un des profs du département d'informatique, a reçu un courriel venant d'un collègue d'un autre collège. Dedans, il y avait un `.exe` avec supposément la démo d'un TP dans un cours qu'il donne.
En ouvrant le `.exe` depuis son poste au collège, apparemment, rien ne se passe. Il continue ses affaires.
Une heure plus tard, il essaie d'ouvrir un fichier sur son disque réseau Z: et il y a un fichier `LIS_MOI.txt` qui accompagne un énorme fichier `stuff.encrypted`, tout le reste a disparu.