Adresse du support de cours:
http://www.cryptosec.org/docs/CoursMaster2017/CoursCyberSecuriteMaster_2017_v2.pdf
Sous licence Creative Commons – BY – NC – SA
« Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions » (CC BY-NC-SA 2.0 FR)
Avant de commencer...
Mon compte a-t-il été compromis?
La sécurité est une situation objective caractérisée par la seule présence de risques maitrisés.
> La sûreté est relative aux risques accidentels tandis que la sécurité traite des actes malveillants.
> Mais dans le domaine informatique, le terme utilisé est « sécurité » (« sûreté » est utilisé en sécurité physique).
Les risques sont des contingences indésirables qui peuvent être avérées, potentielles ou futures.
Ils découlent d’une probabilité qu’une menace exploite, intentionnellement ou non, une vulnérabilité.
Il y a quatre façons de traiter un risque unitaire :
> le réduire
> l'accepter
> le refuser
> le transférer
La sécurisation résulte toujours d’une dynamique.
La façon classique de présenter les risques :
> Risque = (Menace) x (Vulnérabilité)
> Quantification du risque = (Impact) x (Probabilité d’occurrence)
Quel est le problème de cette approche de quantification des risques ?
Les impacts peuvent se décliner en trois catégories :
> Intégrité
> Confidentialité
> Disponibilité
Enfin, les mesures de sécurité peuvent se diviser en trois catégories :
> Prévention : mesures visant à empêcher la matérialisation d’un risque, ou retarder les actions d’attaquants. Réduisent la probabilité d’occurrence, la surface d’attaque.
> Détection : nécessaires si l’on admet qu’aucune mesure de sécurité préventive ne peut arrêter un attaquant suffisamment motivé, compétent ou doté de moyens assez importants.
> Réaction : ces mesures visent à réduire l’impact d’une attaque, suite à sa détection.
Trouver cet équilibre est essentiel.
Non seulement le risque 0 ne peut pas exister, mais il n’y a pas de vie sans risques.
Et la sécurité a un cout, en énergie, en temps, en argent, mais aussi en usage et en liberté.
Il faut toujours se demander si le cout des moyens de sécurité n’est pas disproportionné, ou ne met pas en jeu certains principes essentiels.
La bonne sécurité résulte toujours d’un équilibre...
(et ce n'est pas dans l'ère du temps)
Pour faire de la bonne sécurité, il faut savoir penser comme un attaquant.
Et donc essayer de savoir qui ils peuvent être…
Objectifs : Gains financiers
Moyens : vol et revente de données, fraudes et détournements de fonds, demandes de rançons, mise à disposition d’infrastructures d’attaques (CaaS, botnets, etc.)
Objectifs : Divers / Opportunistes
Moyens : Opportuniste, utilisation d’outils et de services d’attaques
Objectifs : Espionnage, désinformation, cyberguerre
Moyens très importants : dénis de service, attaques ciblées, portes dérobées…
Objectifs : Espionnage industriel, avantage concurrentiel
Moyens : Dénis de services, vol de données, attaques ciblées, ransomwares, via des mercenaires
Objectifs : Divers
Moyens : Accès à des ressources non protégées, exploitation de lacunes de sécurité
Objectifs : Impact médiatique, politique
Moyens : Défacements, dénis de service, vol de données
Objectifs : Gain de temps, aucun
Moyens : Manque de sensibilisation à la sécurité, complexité du SI
On voit que tous ces types d’attaquants vont déployer divers types d’attaques :
> Attaques « au filet dérivant »: courriels piégés (phishing), sites compromis avec malwares, faux sites...
> Attaques ciblées: envoi de courriels personnalisés (spear phishing), clés USB piégées, faux sites ciblés…
> Intrusion en ciblant des défauts de protection, des vulnérabilités applicatives…
> Dénis de service (DoS), Dénis de service distribués (DDoS)
> Distribution de matériel ou logiciels piégés (trappes - backdoors…)
> …
Ce sont toutes les mesures de sécurité visant à isoler un système d’information de « l’extérieur ».
Pare-feu | DMZ | WAF | IDS / IPS | Filtrage courriels / web
Mesures et dispositifs permettant par exemple de :
> dissimuler le réseau et les services internes / à l’extérieur
> différencier et filtrer le trafic entrant et sortant (indépendamment de ce qu’il contient)
> délimiter des zones de confiance variable: réseau local, DMZ externe
> détecter des tentatives d’intrusion
> filtrer les données entrantes (le contenu du trafic)
> créer des points d’accès distants (pour connexions à d’autres réseaux, à internet)
Un pare-feu est un équipement de sécurité réseau qui permet de filtrer et surveiller le trafic entre des zones réseau, selon des règles préétablies.
Typiquement ils vont permettre de séparer une zone réseau de confiance (comme le LAN d’un SI) d’une zone non sure, comme internet.
Imaginons que vous soyez en voiture et que vous deviez rejoindre un village, pour y acheter un cercle. Puis vous devrez en revenir (avec le cercle dans le coffre de votre voiture).
À l’approche du village, une girafe persuadée de l’importance des frontières est plantée au milieu de la route et contrôle ceux qui veulent passer.
Selon quels principes peut-elle agir pour vous laisser passer ou non, à l’aller et au retour ? (si la girafe se comportait comme un pare-feu)
Types de pare-feu: réseau, logiciels ou en appliances, locaux, à états (stateful)...
Option de règles typique :
> Tout ce qui n’est pas explicitement interdit est autorisé : liste noire (blacklist)
> Tout ce qui n’est pas explicitement autorisé est interdit : liste blanche (whitelist)
Problèmes typiques :
> Accumulation de règles
> Absence d’audit
> Ouvertures en cas d’incident, et non-fermeture ultérieure
> Règles temporaires non fermées
De plus, il est impossible interdire ce que vous devez autoriser. Sachez faire accepter les risques identifiés.
Une « zones démilitarisée » est une zone entre deux zones de sensibilité différentes
Elles peuvent contenir des services qui doivent être exposés
Elles peuvent également héberger des dispositifs de sécurité
En général les DMZ sont construites sur un pare-feu assurant le filtrage des zones séparées.
Les flux doivent être initiés des zones les plus sensibles vers les zones les moins sensibles.
Les pare-feu applicatifs filtrent, inspectent et tracent les flux au niveau des protocoles applicatifs, comme HTTP ou FTP.
Ils combinent des règles et des signatures.
Les flux chiffrés ne seront pas analysés.
Au-delà du filtrage, ils permettent de détecter et bloquer certaines attaques applicatives, comme les SQLi, DoS, directory traversal, XSS, etc.
https://modsecurity.org/
Exemples: Core Rule Set qui implémentent des détections des vulnérabilités du Top 10 de l’OWASP pour ModSecurity ou règles PCI DSS (Payment Card Industry Data Security Standard)
Ils sont compliqués à configurer: pour éviter les faux positifs, il faut souvent une compréhension fine de l’application.
On commence souvent par un mode apprentissage, avant de les passer en mode bloquant.
Exemple:
SecRule ARGS|REQUEST_HEADERS “@rx <script>” id:101,msg: ‘XSS Attack’,severity:ERROR,deny,status:404
Une sonde IDS (Intrusion Detection System) est un dispositif qui surveille le trafic réseau pour détecter des signes de malveillance ou des violations des politiques de sécurité.
Il génère des traces (qui peuvent alimenter un SIEM) et des alertes.
Les plus connus sont Snort (www.snort.org) et Suricata (suricata-ids.org)
Placées à des placées à des points clé du réseau. Mais attention à ne pas en faire un SPOF.
Méthode de détection :
> Par signatures, par exemple en cherchant certains motifs, des séquences d’octets ou des séries d’instructions connues comme étant malveillantes. Défaut : ne détecte que les attaques connues / Très sensible au polymorphisme des attaques, comme l’insertion de code mort ou les changements d’encodage.
> Par détection d’anomalies, détectées par rapport à ce qui aura été « appris » comme étant « normal ». Défaut : les faux positifs.
Les sondes qui savent bloquer un flux sont appelées IPS (Intrusion Prevention System).
Le blocage peut se faire par exemple par reconfiguration d’un pare-feu, ou en bloquant une attaque s’ils sont en coupure.
Pour les esquiver : Fragmentation des paquets, changement des ports par défaut, spoofing / proxyfication de l’adresse source, modifications patterns d’attaque (par exemple modification du payload).
Sur quels flux vont-elles être peu efficaces ?
Problème des missed alarms et du bruit qui noie les détections de cas réelles (comme les trames malformées suite à des bugs).
La sécurité ce sont des processus, jamais des produits. Il faut donc mettre en place des processus et une organisation, les produits ne sont que des moyens.
Les virus (ou malwares) sont un risque connu depuis longtemps, ils arrivent souvent par courriel.
Quelle différence entre spam et virus ?
La majorité des attaques ciblées commencent par des courriels envoyés à des victimes contenant des pièces jointes malveillantes (phishing ou spear phishing). Ces pièces jointes peuvent être des documents Office avec du code VB dans des Macros, ou des documents PDF contenant du Javascript…
Ces pièces jointes peuvent – parfois – être détectées par les passerelles.
Filtrer les courriels entrants est un enjeu important.
En général les messages sont traités en chaine, chaque étape pouvant bloquer le courriel. Par exemple :
> Identification si SPAM
> Vérification anti-virus / antimalware
> Éventuellement sandboxing des pièces jointes
Ne vous faites pas blacklister!
Dans la plupart des organisations ont été mis en place des proxys web (à l’origine pour résoudre des problèmes de bande passante).
Les proxys web relaient les requêtes des utilisateurs au sein d’un LAN.
Ils sont devenus au fil des années un équipement de sécurité clé.
Beaucoup d’attaques utilisent les connexions vers internet:
> L’attaque se fait via un site web compromis ou un document téléchargé qui est piégé
> Le proxy web peut servir à récupérer la « charge utile » (payload) d’un malware, récupérée par un dropper.
> Le proxy web sert à l’attaquant pour communiquer avec le poste de travail ou le serveur qu’il contrôle (C2)
Comme dans le cas des passerelles de messagerie, filtrer les accès sortants web est essentiel.
Les méthodes d’analyses peuvent être :
> analyse des protocoles
> analyse du contenu, en particulier recherche de signatures et motifs malveillants
> blocage de certains protocoles, types MIME, de certaines extensions de fichiers, selon une politique de sécurité
> système de réputation et de catégorisation des sites
Les fichiers chiffrés ne peuvent être analysés, et les sessions TLS doivent être déchiffrées pour pouvoir être inspectées.
Ici comme de façon générale en sécurité, souvenez-vous d’une banalité :
il est impossible d'interdire ce que vous devez autoriser. Et donc, sachez accepter ou faire accepter les risques identifiés.
L’idée est de mettre des défenses au cœur du SI, et pas uniquement en périphérie. Cela vise à ralentir ou stopper un attaquant qui aurait percé les défenses périmétriques.
Cloisonnement interne | Antivirus | AV non local | HIPS | VPM | Durcissement | NAC | Chiffrement des données | Sécurisation de flux
> sécuriser le réseau
> sécuriser les hôtes (serveurs, postes de travail)
> sécuriser les applications
> sécuriser les données
L’hypothèse est que les défenses externes peuvent être défaillantes, et qu’il faut que l’attaquant soit confronté à des barrières internes.
En sécurité, il est essentiel de prioriser. Ne cherchez pas à atteindre le risque 0. Concentrez-vous sur les mesures les plus efficaces.
Commencez par des configurations sécurisées, la gestion des droits, avant de penser à utiliser des produits.
Un réseau interne, un LAN, peut-être « à plat » ou cloisonné.
S’il est « à plat », toute @IP peut être jointe par toute @IP.
Cloisonnemer c'est définir des sous-réseaux différents et filtrer les flux entre eux. Des flux peuvent être interdits, ou certains flux seulement être autorisés :
> Le cloisonnement réseau commence en structurant son réseau.
> Ce n’est que sur la base de cette structure que l’on met en place des règles de filtrage.
Au niveau des switch on peut définir des VLAN (virtual)
On peut typiquement trouver des VLAN pour services de criticité différente, pour héberger des environnements différents (production, intégration, développement…), etc.
Logiciels, parfois appelés anti-malwares, destinés à détecter, stopper et supprimer les logiciels malveillants (virus, vers, keyloggers, rootkits, ransomwares, chevaux de Troie…).
Les méthodes utilisées par les éditeurs d’AV sont souvent obscures et peu ou pas documentées.
Mais deux grandes familles:
> Détections par signatures
> Méthodes avancées, ou heuristiques
Notion de quarantaine... inspirée d’une pratique très ancienne.
 
De façon générale : ne pensez pas que par déductions et inductions. La pensée par analogie est souvent très fructueuse.
Les AV ne détectent pas tous les malwares. En particulier, les attaques de type « Odays » ne seront pas détectées par la méthode des signatures (une analyse comportementale peut cependant réussir).
De plus, de nombreux attaquants utilisent dans leurs protocoles d’attaque des outils faisant partie d’exceptions des analyses AV (« whitelistés » ; cf. le cas Target).
Les AV embarquent parfois des fonctions de détection comportementales, « HIPS » (cf. plus bas).
Comme pour tous les dispositifs de détection et de blocage, ils introduisent un risque. Lequel ?
Il existe des solutions d'AV non locaux. Par exemple, au niveau d’un proxy web via des requêtes ICAP (Internet Content Adaptation Protocol) vers un serveur d’AV.
Pour tester si un ordinateur ou une infrastructure détecte un virus: fichiers de test EICAR (European Institute for Computer Antivirus Research).
Moteurs d'AV : VirusTotal : https://www.virustotal.com (Attention : si vous soumettez un fichier, les résultats seront accessibles aux abonnés). Il est également possible de soumettre des condensés.
Host Intrusion Prevention System (HIPS): surveillance des évènements malveillants sur un ordinateur.
Similaire à un pare-feu, mais agit sur les changements et les processus (au lieu du réseau).
Mal configuré, un HIPS – comme toute solution de sécurité – peut lourdement handicaper l’expérience utilisateur.
Comme toujours en sécurité, c’est un processus...
Celui de la gestion continue des vulnérabilités techniques. Cela contribue grandement au maintien en conditions de sécurité (MCS).
Tous les jours sont publiées des vulnérabilités affectant les OS, les logiciels, les firmware…
Les vulnérabilités sont en général publiées selon une certaine nomenclature, les CVE (Common Vulnerabilty Exposure).
À cette description est associée une estimation de la criticité selon une échelle, le CVSS (Common Vulnerability Scoring System)
Scoring adaptable: https://nvd.nist.gov/cvss/v2-calculator?
Souvent, si les éditeurs ou fabricants publient (disclose) des vulnérabilités, ils publient en même temps un correctif de sécurité qui les corrigent.
Mais d'ailleurs...qu'est-ce qu'une vulnérabilité sur un logiciel?
Soit un bug, soit une erreur de conception, qu’un chercheur en sécurité ou un attaquant parvient à exploiter à des fins malveillantes, soit une erreur de configuration... ou une backdoor (ou porte dérobée).
Exemple, « ShellShock » : https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6271
La première étape est de s’assurer que l’on va être informé en cas de publication d’une vulnérabilité sur l’un des logiciels que nous utilisons. Par une veille manuelle, ou par exemple en inscrivant ses logiciels à une source d’information spécialisée.
Ex. pour recherche manuelle: http://www.securityfocus.com/bid
Le déploiement des correctifs devrait être le plus automatique possible.
Effectuer des tests de non-régression
Le durcissement des systèmes consiste à en réduire la surface d’attaque, c’est-à-dire les potentielles vulnérabilités, en modifiant les configurations.
Des actions de durcissement peuvent s’appliquer aux OS, aux firmwares, aux serveurs web, aux applications, aux bases de données, aux objets connectés, aux systèmes industriels, aux smartphones…
Un processus de durcissement bien maitrisé peut suivre trois grandes étapes :
> Définition d’une politique, papier uniquement
> Déploiement partiel des composants durcis ou des configurations durcies, et observation
> Généralisation, et gestion au quotidien des composants durcis (évolutions, dérogations, etc.)
Le durcissement, c'est aussi à définir des paramètres cryptographiques solides. Quelle longueur de clés ?
www.keylength.com/fr
Un projet existe également visant à définir des configurations crypto « prêtes à l’emploi » pour divers logiciels : https://bettercrypto.org/
Les solutions de NAC permettent de contrôler les accès de ressources à un réseau.
Lorsque la sécurité physique n’est pas suffisante
Certaines mise en oeuvre permettent de conditionner l’accès à un réseau à des contrôles de conformité (présence d’AV à jour, correctifs de sécurité déployés, politiques de sécurité opérationnelles, etc.)
Le chiffrement permet de rendre des données inintelligibles.
En simplifiant, il y a trois sortes de chiffrement :
> Le chiffrement des volumes de stockage (par exemple tout un disque, une base de données)
> Le chiffrement de containers (par exemple une partition, des tables d’une base de données)
> Le chiffrement de fichiers (ou des données avant de les enregistrer en base de données par exemple)
Chiffrer les données sur le disque dur permet de les protéger en cas de vol de l’ordinateur par exemple, sans se préoccuper si on a chiffré tel ou tel fichier.
La plupart des framework de développement contiennent des fonctions de chiffrement.
Ne réinventez pas la cryptographie.
Quelques solutions:
> Windows intégrée: BitLocker (avec TPM)
> BestCrypt, accompagné de BCWipe
> VeraCrypt
> GnuPG pour ses mails, (strandard OpenPGP)
Un VPN est une extension d’un réseau privé à travers des réseaux non sûrs, comme internet.
Outre la connexion entre plusieurs réseaux, les solutions de VPN permettent à des utilisateurs de se connecter à un SI de façon distante, comme s’ils étaient localement présents.
Les deux protocoles les plus communément utilisés pour mettre en place des VPN sont IPSec et TLS.
Transport Layer Security (TLS) est un protocole de sécurisation au niveau applicatif, successeur de SSL.
C’est le S de HTTPS, typiquement sur le port 443.
Il fonctionne avec des certificats X.509 : au moins un certificat « serveur », mais peut aussi utiliser des certificats « clients ».
Ce protocole assure :
> La confidentialité des données transmises
> L’intégrité des données transmises
> L’authentification du serveur, éventuellement du client
Une session TLS commence par un handshake...
Aujourd’hui, TLS est utilisé pour sécuriser les liens client / serveur, mais aussi pour établir des sessions « VPN » d’un client vers une passerelle.
Utiliser si possible les versions TLS 1.2 ou 1.3.
Une façon d’éviter les attaques Man-in-the-middle (MitM) ou les conséquences d’une compromission d’une AC est le certificate pinning : une étape est ajoutée à la validation d’un certificat serveur, la vérification du condensé de sa clé publique (ou d’un certificat de la chaine).
Pour détecter s’il y a un MitM : https://checkmyhttps.net
Longueurs de clés et conf':
> https://www.keylength.com/fr/
> https://bettercrypto.org/
Internet Protocol Security: permet d’authentifier et de chiffrer les paquets d’une communication IP.
Les principaux éléments:
> Authentication Headers (AH)
> Encapsulating Security Payloads (ESP)
> Security Associations (SA)
IPSec fait partie intégrante de la spécification d’IPv6.
Vu qu’il est « bas » au niveau protocolaire, il permet d’établir des tunnels qui véhiculent tout type de protocoles sur IP.
Une politique de sécurité est un document décrivant les obligations en matière de sécurité.
Un principe général peut être qu’il faut écrire ce que l’on fait, et faire ce que l’on écrit.
Elle peut définir :
> Les principes de sécurité
> Des règles précises de sécurité (Ex. politique de mots de passe, obligations en matière de Vulnerability and Patch Management)
> Les méthodes et critères de classification de l’information. Classifiez vos données (publique, interne, retreinte, confidentielle). Identifiez les données et processus sensibles!
> Les obligations en matière de respect de la Loi Informatique et Libertés
> La gouvernance de la sécurité...
L’objectif d’un corpus documentaire devrait toujours d’être compréhensible, cohérent, utilisable et utilisé.
Dans tous les cas, avant de commencer à rédiger des spécifications ou de développer, il faut lire, comprendre et prendre en compte les exigences des politiques de sécurité.
Pour définir une politique de sécurité, définir des priorités et des choix stratégiques, préférer les référentiels concrets et construits sur des constats techniques et factuels comme : https://www.sans.org/critical-security-controls
(plutôt / en complément d'ISO par exemple)
La seule façon d’atteindre un niveau de sécurité parfait… c’est sans utilisateurs. Mais il y en a!
Les utilisateurs, par leurs erreurs ou parce ce qu’ils sont victimes d’ingénierie sociale, sont souvent une cible de choix pour les attaquants.
Aujourd’hui, l’immense majorité des attaques réussies commencent par un courriel envoyé à quelqu’un qu’on essaie de convaincre de cliquer sur un lien, ou d’ouvrir une pièce jointe. Pas par une tentative d’exploitation d’une Oday sur un pare-feu.
Sensibilisez les utilisateurs à l'hygiène de la sécurité informatique... et soi-même.
S’il y a un message universel à retenir en matière de sensibilisation : « Réfléchissez avant de cliquer ».
Formez-vous.
Partagez avec vos pairs, assistez à des conférences. Sur les méthodes, les vulnérabilités, les incidents… Pas avec n’importe qui, dans des cercles de confiance et faisant attention à la confidentialité. Mais partagez.
Les principes généraux d’une bonne sécurité des accès :
> Une identification, authentification, autorisation et traçabilité solide
> Moindre privilège : donner les privilèges minimums
> Besoin d’en connaitre : ne donner les accès qu’aux personnes en ayant besoin, pour le temps nécessaire, et les retirer ensuite.
> Séparation des rôles : séparation des taches criques entre divers intervenants, afin d’éviter l’assurance et l’accumulation des privilèges, par exemple procédures 4 yeux
La première étape de la sécurité des accès, l’authentification à des ressources informatiques repose sur quatre étapes, distinctes :
> L’identification
> L’authentification
> L’autorisation
> La traçabilité
Le mécanisme d’authentification peut reposer sur trois éléments :
> Ce que je sais
> Ce que je possède
> Ce que je suis
On parle « d’authentification forte » (2FA : Two Factor Authentication) lorsqu’un mécanisme d’authentification met en œuvre deux de ces trois facteurs.
Quelques modèles de contrôle d’accès :
> Discrétionnaire (Discretionary Access Control) : basé sur l’identité ou l’appartenance à des groupes, et capacité du possesseur d’un droit de le transmettre à un autre utilisateur
> Obligatoire : les contrôles d’accès sont imposés par une politique de sécurité, et ne sont pas laissés à la liberté du propriétaire des ressources.
> À base de rôles (Role-Based Access Control) : dans ce cas c’est l’appartenance à un rôle qui détermine les droits d’accès. Les rôles peuvent refléter la structure d’une organisation.
Pourquoi « chmod 777 » sur le répertoire d’un serveur web est-il dangereux ?
Quel est le problème avec ces messages en cas d’erreur d’authentification ?
> Login for User foo: invalid password
> Login failed, invalid user ID
> Login failed; account disabled
> Login failed; this user is not active
En cas d’échec d’authentification :
> soit on peut bloquer le compte après un certain nombre de tentatives
> soit on peut introduire une temporisation
Le blocage a l’avantage de couper court à toute tentative de brute-force, mais il peut permettre un déni de service en bloquant un grand nombre de comptes.
Les mots de passe ne sont pas la seule façon de s’authentifier.
Exemple : les clés SSH. Un jeu de bi-clés (sous la forme de fichiers), sert à s’authentifier auprès du serveur et à négocier une clé symétrique de chiffrement (à l’aide de l’algorithme Diffie-Hellman).
Quel est l’avantage de ce type d’authentification par rapport à un classique mot de passe ?
Le client demande à accéder à une page, le serveur demande une authentification au client (HTTP 401), avec un realm=www.leserveur.org
Le client renvoie un GET avec le nom d’utilisateur et le mot de passe encodé en base64.
Le serveur vérifie, par rapport à une base de comptes quelconque (propre au serveur web, celle du système, celle d’un référentiel distant, etc…
Mécanisme assez faible :
> Authentification en clair
> Peut être rejouée
> Très faible authentification du serveur
> Pas de déconnexion (sauf fermeture du navigateur)
Qu’est-ce qui peut améliorer un peu la sécurité de HTTP Basic ?
Évolution de l’authentification Basic, en mode challenge / response. : le serveur envoie un « aléa », que le client adjoint au mot de passe avant de le condenser (MD5).
Cette fois, le mot de passe n’est pas envoyé.
Mais vulnérable à l’attaque de « l’homme du milieu »
Repose sur le mécanisme d’authentification Windows, protocole challenge / response.
C’est du Kerberos ou du NTLM via HTTP ou HTTPS, et on trouve ce moyen d’authentification typiquement dans les intranets Microsoft.
> L’utilisateur s’authentifie à une machine cliente
> Windows vérifie l’authentification auprès d’un contrôleur de domaine
> L’utilisateur veut aller sur un site
> Le serveur web exige une authentification
> Le client envoie le token d’authentification.
Formulaire présenté à l’utilisateur, l’application vérifie le nom d’utilisateur / mot de passe (LDAP, base de données).
Il faut véhiculer le flux en HTTPS.
La sécurité dépend de la conception et de développements spécifiques, on peut donc plus facilement y trouver des vulnérabilités de type injections (XSS, SQLi…).
Un exemple de mécanisme d’authentification décentralisé, qui permet aux développeurs de ne pas redévelopper leur système d’authentification et aux utilisateurs de s’authentifier à de multiples sites sans se réauthentifier à chaque fois.
(https://lwn.net/SubscriberLink/708151/a26c64b1d7ffec65/))
C’est un autre mécanisme de délégation de l’authentification à un tiers.
Ce mécanisme a été conçu pour qu’une application puisse connecter ses utilisateurs à d’autres services sans transmettre leurs mots de passe. Souvent utilisé par les réseaux sociaux, Twitter, FB, etc.
Mécanisme capable de gérer la fonction d’authentification de plusieurs composants (systèmes, applications, etc…).
Les avantages de l’authentification centralisée sont :
> Facilité pour les utilisateurs, qui n’ont pas à retenir ou stocker de nombreux noms d’utilisateurs / mots de passe
> Gains de temps et de couts
> Réduction du risque de compromission des mots de passe
Les risques de l’authentification, si les mécanismes d’autorisation adéquats ne sont pas en place, c’est un accès démultiplié au SI en cas de compromission d’un compte.
Le Single Sign-On (SSO) est une évolution de l’authentification centralisée: non seulement l’utilisateur n’a plus qu’un mot de passe unique, mais en plus il n’a besoin de le saisir qu’une seule fois sur un système pour accéder ensuite à de multiples plateformes et applications.
Protocole de SSO reposant sur une authentification initiale auprès d’un AS (Authentication Server – qui possède les mots de passe des utilisateurs) qui distribue des Ticket-Granting Ticket (TGT).
Ensuite, le service de Ticket-Granting Service délivre des jetons qui pourront être déchiffrés et authentifiés par les services que l’on voulait atteindre.
Pour donner une analogie :
> Un État délivre des passeports à ses citoyens (c’est l’AS qui donne des TGT)
> Pour aller dans certains pays, on demande un visa. Le consulat qui délivre les visas vérifie l’authenticité du passeport présenté, et délivre le visa - valable uniquement pour un pays, et pour une durée limitée (ce sont les TGS)
Développé dans le monde UNIX, Kerberos a été adopté par Microsoft: il est cœur de son système d’authentification.
Le mot de passe est un élément « que je connais ».
Une politique de sécurité doit imposer des règles pour leur constitution, et elle doit les rendre suffisamment solides.
Attention cependant aux politiques trop complexes
Exemple de politique :
> au moins 10 caractères (en 2016). Il ne faudrait plus parler de « mots de passe », mais de « phrases de passe » (pour faciliter la mémorisation)
> au moins une majuscule
> au moins une minuscule
> au moins un caractère spécial (de ponctuation)
> pas plus de deux caractères identiques consécutifs)
D’autres règles peuvent être imposées par la politique de sécurité, comme l’interdiction de réutiliser d’anciens mots de passe ou des parties d’entre eux.
Toutes les vérifications de conformité doivent se faire au niveau du serveur.
Ils ne doivent jamais être stockés en base de données ou en dur : ce sont leurs condensés (hash) qui doivent l’être.
Qu’est-ce que l’on perd en stockant les mots de passe de façon dérivée (condensée / hash)?
Pourquoi ajouter des « sels » aux mots de passe avant de les condenser (hash) ?
On casse des mots de passe dans deux circonstances bien différentes :
> en ligne, et alors il y a en général des restrictions : blocage, temporisation, détection des tentatives…
> hors-ligne : mais il faut avoir réussi à récupérer un compte ou une base de compte. L’avantage est alors qu’on dispose de tout son temps et que l’on peut déployer toute la puissance de calcul à disposition.
Méthodes hors ligne: Dictionnaire, Rainbow table, brute-force, brute-force avec masque
> hash d'un mot de passe NTLM de 8 caractères avec utilisation d'une Rainbow table: 9 heures
> 10j avec une carte Tesla (éq. carte graphique grand public)
> hash UNIX DES (salé) de 8 car. avec une carte Tesla: +4 ans.
> hash MD5 de 8 caractères: Temps max: 17j avec la Tesla
> hash NTLM de 8 car.: 30s avec la Tesla
> hash NetNTLMv2 de 8 car.: 1 an et 317j avec la Tesla
> hash NetNTLMv2 de 8 car. avec un masque: 6h avec la Tesla
La prévention c’est l’idéal, la détection est nécessaire
On ne peut se prémunir de toutes les menaces
Mais il faut essayer de mettre en place une sécurité qui permette de détecter les attaques, ou au moins de disposer de données pour analyse a posteriori.
Si on sait ce qui s’est passé au cours d’une attaque, on peut espérer empêcher que cela n’arrive à nouveau.
La capacité opérationnelle de détection de tentatives d’attaques est essentielle: quelles que soient les mesures de sécurité mises en place, il doit y avoir des vigies.
Cette capacité opérationnelle repose sur des techniques, des processus et une organisation.
Un aspect essentiel, le partage d’informations avec les pairs : ma détection est votre prévention
Les systèmes, équipements, logiciels et applications génèrent des traces, des logs, des journaux d’évènements.
Les traces sont utiles pour développer des programmes, pour surveiller leur bon fonctionnement, mais aussi pour repérer des problèmes de sécurité.
Souvent, après un incident sécurité on en voit les traces dans les logs.
L’enjeu est de réduire ce temps de détection, si possible jusqu’à pouvoir alerter en temps réel.
Les alertes sont définies lorsque certaines conditions sont réunies. Par exemple :
> Plus de 10 tentatives d’authentification en erreur en moins de 1 minute
> Connexion SSH ou RDP illégitimes
> Ajouts dans des groupes de comptes à haut privilège (stables usuellement)
> Connexions aux interfaces d’administration hors des horaires de travail
> Détection des WAF ou sondes IDS
Une fois que l’on dispose des traces et éventuellement d’alertes, le vrai travail commence : les interpréter.
Les SIEM sont des logiciels qui traitent des traces provenant de diverses sources, afin de détecter des problèmes de sécurité, d’effectuer des contrôles. Ses principales fonctions sont :
> Agrégation de traces provenant de sources différentes
> Fonctions de corrélation
> Génération d’alertes
> Génération de tableaux de bord
> Fonctions de recherche et d’analyse post-mortem
Des scans devraient être réalisés régulièrement. Permettent de comparer au fil du temps.
Établissement de listes priorisées des vulnérabilités : vulnérabilités, ou défauts de configuration.
Peut-être couplé avec les journaux d’évènements pour :
> Vérifier que les scans sont bien détectés
> Pouvoir corréler des détections d’attaques avec les vulnérabilités
4 outils typiques : nmap, Nessus, Burp, ZAP.
Pouvez-vous citer quelques vulnérabilités ?
L’intérêt des tests de sécurité peut se résumer en deux devises :
> découvrir ses propres faiblesses avant qu’un tiers ne le fasse
> la connaissance des attaques oriente la défense
Les tests d’intrusion vont consister à identifier des vulnérabilités et tenter de les exploiter.
Ils vont non seulement permettre de découvrir des vulnérabilités à corriger, mais ils vont aussi permettre de définir des mesures préventives de sécurité réduisant la probabilité d’exploitation de futures vulnérabilités.
Une méthodologie (simule une vraie attaque):
> Reconnaissance
> Scanning
> Obtention d’accès
> Persistance des accès
> Exploitation
> Couverture des traces
Une méthodologie de pentest va ajouter : une phase initiale de préparation, une phase finale: analyse et reporting.
La qualité d’un test de sécurité dépend essentiellement de la compétence et de l’expérience des analystes.
Phases de pentests applicatifs :
> Reconnaissance
> Recensement
> Découverte
> Exploitation
Méthode itérative et cyclique : dès qu’une vulnérabilité est exploitée, on recommence depuis le début.
Pour la reconnaissance, ça peut commencer par du simple : les recherches « ouvertes » peuvent être très utiles. Par exemple:
> site : domaine.com
> inurl : phpinfo
> intitle : " Admin login "
> link : domain.com
> ext : xls
Plus d’information sur les « Google dorks » : www.exploit-db.com/google-dorks
Exemple de vulnérabilité : les injections SQL : création d’utilisateurs, modifications de contenu, scan de port…
Pour tester : ‘
Que peut-il se passer ?
Des nombreux outils aident à réaliser les tests de sécurité.
Proxy web : Burp…
Scanner : nmap, Nessus, ZAP…
Exploitation : Metasploit…
Distribution Linux : Kali
Il s’agit des procédures et des plans d’action permettant de gérer les incidents de sécurité comme :
> les infections par des malwares
> les vols de données
> les intrusions (comme les « APT »)
> les dénis de service
> les usurpations d’identité ou d’image
En cas d’incident majeur, quelle va être la première difficulté pour décider de mettre les équipes de sécurité sur le pont?
Pour les gens de la sécurité, « incident » est entendu comme malveillance, ou volonté de malveillance.
Les procédures de réaction sont comme les sauvegardes : vous ne les utiliserez pas souvent, mais quand vous en aurez besoin, vous serez content de les avoir.
> Les phases de la gestion d’incident :
> Préparation
> Identification
> Endiguement
> Élimination
> Retour à la normale
> Enseignements
Les 7 péchés capitaux de la réaction, priorisés (SANS):
> Absence de signalement ou de demande d’aide
> Notes absentes ou médiocres
> Mauvaise manipulation ou destruction des preuves
> Échec de la restauration à partir des sauvegardes
> Échec de l’endiguement ou de l’élimination
> Prévention de la ré-infection en échec.
> Échec de l’application des enseignements
En synthèse : faites en sorte d’être prêts.
Au sein de toute organisation devrait exister une procédure simple et fonctionnelle pour mise en place d’une cellule de crise.
Caractéristiques :
> Pouvoir être convoquée rapidement
> Mettre en contact les dirigeants capables de prendre des décisions et les techniciens le plus qualifiés
Responsabilités :
> Décider d’un plan d’action
> Gérer la communication
Remarques importantes :
> Séparation des rôles : les solutions devraient venir des techniciens, pas des dirigeants. Si le mode de décision n’est pas autogestionnaire, ces derniers doivent prendre leurs responsabilités et faires des choix.
> La hiérarchie doit se garder de peser sur les techniciens.
> Entraînement : de telles cellules de crises ne peuvent fonctionner que si l’organisation s’exerce à les convoquer et joue des scénarios en guise d’entraînement (exercices sur table).
Il y a des actions légales, et d’autres illégales.
En particulier, l’informatique traite souvent des données personnelles: il existe des lois, décrets et jurisprudences.
En France, la loi fondatrice est la loi n°78-17 du 6 janvier 1978 relative à l'informatique, aux fichiers et aux libertés.
Les cinq principes fondateurs en sont :
> Finalité
> Pertinence des données
> Conservation des données
> Obligation de sécurité
> Respect du droit des personnes
Quiconque met en œuvre des traitements de données personnelles est tenu de le déclarer à la Commission Nationale Informatique et Libertés (CNIL): www.cnil.fr
Les activités de tests de sécurité (pentest) doivent également être très encadrées.
Le « maintien frauduleux dans un système de traitement informatique de données » tombe sous le coup de la Loi Godfrain du 5 janvier 1988.
En cas de découverte d’une vulnérabilité majeure, certaines précautions doivent également être prises.
Au-delà de la légalité des actions, il est vital de toujours penser ce que l’on fait, pour qui, pour quelle finalité.
Société de plus en plus numérisée, électronique, connectée, digitale, cyber-truc… choisissez le buzzword qui vous plait: avec de grands pouvoirs viennent de grandes responsabilités
Les individus peuvent renoncer à formuler des jugements éthiques et moraux sur leurs actions ou celles qui les entourent, se contentant d’obéir aux instructions ou aux procédures.
Ils cessent de penser, démissionnent et ne se voient plus que comme un rouage qui n’a pas son mot à dire.
Ces renoncements à penser par soi-même peuvent être des facteurs clés dans la commission d’actions immorales (Exemple funeste : Amesys).
La fin ne justifie pas les moyens. Les moyens déterminent la fin.
Avant de commencer à développer – après avoir recueilli les besoins des clients – mais avant de commencer à spécifier :
Faite une analyse de risques. Identifiez les menaces, les enjeux, les données et les services critiques et déduisez-en des exigences de confidentialité, intégrité et disponibilité.
Les développeurs sont les acteurs clés de la sécurité des applications.
Document listant les 10 types de vulnérabilités applicatives les critiques et les plus souvent rencontrées.
Basé sur des statistiques de centaines de milliers de vulnérabilités effectivement constatées.
Ce document, qui est un outil de sensibilisation, est destiné aux développeurs, aux architectes de solution, aux décideurs, aux auditeurs…
> A1 - Injection
> A2 - Violation de gestion d’authentification et de session
> A3 - Cross Site Scripting (XSS)
> A4 - Références directes non sécurisées à un objet
> A5 – Mauvaise configuration sécurité
> A6 – Exposition de données sensibles
Que'en pensez-vous?
> A7 – Manque de contrôle d’accès au niveau fonctionnel
> A7 – Manque de contrôle d’accès au niveau fonctionnel
> A8 – Falsification de requête intersite (CSRF – Cross Site Request Forgery)
> A9 - Using components with known vulnerabilities
> A10 – Redirections et renvois non validés
Ce ne sont « que » les vulnérabilités les plus critiques.
Mais il peut exister bien d’autres problèmes de sécurité que ce Top 10 n’évoque pas.
> Ne faites pas de vérification sécurité côté client, en particulier de droits d’accès
> Ne laissez pas d’informations sensibles dans les commentaires de votre code public (JS, HTML, etc.)
> Ne mettez pas en ligne en libre accès des applications en test / en développement
> Dédiez des chapitres spécifiques « sécurité » dans les cahiers de recette, en particulier afin de concevoir et dérouler des tests non passants
> Anonymisez les données confidentielles avant de les passer de la production à des environnements moins sécurisés, par exemple pour des tests
> S’il s’agit d’une application critique avec un haut niveau de sécurité, prévoyez toujours une procédure de débrayage des mesures de sécurité, en cas d’urgence. Il doit être possible de débrayer la sécurité pour faire fonctionner le système
Utilisez les guides de développement sécurisé de l’OWASP
> https://www.owasp.org/index.php/Guide
> https://www.owasp.org/index.php/Cheat_Sheets
Si votre application est particulièrement sensible, il est possible de réaliser un audit de code, manuel ou à l’aide d’outils (par exemple http://www.sonarqube.org/)
Écrivez ce que vous faites : essayez d’être le plus rigoureux possible. Et si des actions sont amenées à se répéter, définissez un processus formel.
N’oubliez pas :
La sécurité d’un système est celle du maillon le plus faible. Les efforts de sécurisation doivent être homogènes.
Faites des analyses des risques, même minimales, en tenant compte des menaces, identifiez les données et services critiques et déduisez-en des exigences de confidentialité, intégrité et disponibilité.
Classifiez vos données (publique, retreinte, confidentielle). Identifiez les données et processus sensibles.
Il est impossible interdire ce que vous devez autoriser. Sachez faire accepter les risques identifiez.
Écrire ce que fait, faire ce que l’on écrit.
Toute solution de sécurité mal utilisée, mal configurée, peut lourdement handicaper l’expérience utilisateur.
Ne pensez pas que par déductions et inductions. La pensée par analogie est souvent très fructueuse.
À mesure que la sophistication des usages croit, celle des malveillances aussi.
La connaissance des attaques oriente la défense.
Sachez ce que les attaquants savent, découvrez vos vulnérabilités avant eux.
Commencez par des configurations sécurisées, à la gestion des droits, avant de penser à utiliser des logiciels complexes.
La prévention c’est l’idéal, la détection est nécessaire
Soyez prêts à réagir.
Utilisez des principes simples :
> Besoin d’en connaitre : ne donner les accès qu’aux personnes en ayant besoin, pour le temps nécessaire, et les retirer ensuite.
> Moindre privilège : donner les privilèges minimums
> Séparation des rôles et des droits: séparation des taches criques entre divers intervenants, afin d’éviter l’assurance et l’accumulation des privilèges
> Choisir entre les modèles : « Tout ce qui n’est pas explicitement interdit est autorisé » ou « Tout ce qui n’est pas explicitement autorisé est interdit »
Le produit hérite de ses processus de production.
La sécurité ce sont des processus, jamais uniquement des logiciels ou des produits.
En sécurité il est essentiel de prioriser. On ne doit pas chercher le risque 0. Concentrez-vous sur les mesures les plus efficaces.
Plus tard une vulnérabilité est découverte et corrigée, plus sa correction est est couteuse (en risque, en temps, en argent…)
Formez-vous, partagez avec vos pairs, assistez à des conférences. Sur les méthodes, les vulnérabilités, les incidents… Pas avec n’importe qui, dans des cercles de confiance et faisant attention à la confidentialité.
La sécurité a un cout, en énergie, en temps, en argent, mais aussi en usage et en liberté.
Pensez ce que vous faites en termes éthiques, pour qui, pour quelle finalité.
Avec de grands pouvoirs viennent de grandes responsabilités.
La fin ne justifie pas les moyens. Les moyens déterminent la fin.
Pensez ce que vous faites en termes éthiques, pour qui, pour quelle finalité.
Avec de grands pouvoirs viennent de grandes responsabilités.
La fin ne justifie pas les moyens. Les moyens déterminent la fin.