Skip to content

Latest commit

 

History

History
710 lines (684 loc) · 48.4 KB

com301.md

File metadata and controls

710 lines (684 loc) · 48.4 KB

$$ \def\H{\overset{H}\to} \def\R{\overset{R}\to} $$

COM301

GNU General Public License v3.0 licensed. Source available on github.com/zifeo/EPFL.

Fall 2015: Sécurité des Réseaux

[TOC]

Introduction

  • systèmes informatiques complexes
  • difficle de vérifier le bon déroulement et detecter un déroulement non demandé
  • but des mesures de sécurité
    • garantir confidentialité
    • garantir intégrité
    • garantir disponiblité des données
    • CIA : confidentiality, integrity, availability
  • cybercrime cost (global estimation)
    • phishing : $320m
    • fake antivirus : $97m
    • expenditure on antivirus : $3400m
    • industry of patching : $1000m
    • defense costs of firms : $10000m
  • provenance des attaques : externe et interne
  • loi suisse punit toutes attaques même par malice
  • comment gérer la sécurité : travailler de manière méthodique et générale

Menaces : quelques attaques classiques

  • évolution des menaces
  • emails forgés
    • protocole SMTP : RFC 821/1982, aucune authentification
    • emails forgés : spam, phishing, propagation de rumeurs
    • connexions TCP sur port 25
    • commandes
      • HELO : annonce d'un serveur
      • Mail From : définition expéditeur
      • Rcpt To : définition destinataire
      • Data : définition du contenu
    • serveur SMTP dépose dans un serveur plus proche
    • serveur SMTP responsable pour un domaine : nslookup -query=mx epfl.ch
    • chaque serveur ajoute une entête et note
      • commentataire de la commande hello
      • adresse IP de l'émetteur du message
      • heure de réception
    • possible d'obtenir le même résultat en modifiant les informations de messagerie
    • pour être moins tracable, lancer la connexion telnet depuis une machine sans log
    • systèmes de messagerie "plus" anonyme : TOR
    • example
  • hameçonnage (phishing)
    • obtention d'informations confidentielles en se faisant passant pour un expéditeur de confiance
    • messages non-sollicités, non-ciblés, à très grand tirage
    • adresse de l'émetteur est toujours forgée
  • technique de diffusion
    • relais ouverts (open relay)
      • message déposé dans une 100taine de serveurs SMTP avec une liste de >10k desinataires chaque fois
      • serveurs abusés surchargés
      • disques remplis de logs et messages
      • BAL (boite à lettres) admin inondés d'erreurs (adresses invalides)
      • ISP menance de couper la ligne
      • inclusion dans liste noires
      • protection
        1. expéditeur ou destinataire doit être local
        2. seules machines ocales ont le droit de spécifier expéditeurs locaux (si utilisateurs en déplacement, SMTP peut demander une authentification)
    • machines infectées (spam bots)
      • spam à travers les serveurs messageries de la victime
      • bots groupés en botnets jusqu'à plusieurs miliers de bots
      • bots communiquent avec leur maitre en se connectant à un chat
    • abus de messageries en igne
      • spammers ouvrent comptes en ligne gratuit (si pas de bon captcha)
      • envoient le nombre maximum de messages autorisés
    • protections
      • filtres anti-spam
        • basé sur : contenu, formats, liste noire de messages
        • pas parfait : faux positifs et faux négatifs
        • mailcleaner : utilise Spamassassin
        • listes noires : ex. Spamhaus
          • SBL : adresses d'opérateurs de spam connus
          • XBL : adresses de machines abusées, relais ouverts, bots et autres émetteurs
          • PBL : adresses qui ne sont pas censées envoyer du mail
          • DBL : adresses citées dans les spams
          • serveurs de messagerie bloquer utilisant ces listes les spams entrants
          • consultation par DNS : nslookup 4.3.2.1 zen.spamhaus.org pour vérifier si 1.2.3.4 est une liste
      • ajouter un coût à chaque message : timbres, calculs
      • preuves que les messages sont émis par serveurs autorisés
        • SPF : serveurs enregistrés dans le DNS
        • DKIM : clé publique dans DNS, les serveurs signent les messages
        • déjà utilisé par quelques spams
        • besoin d'adhération rapide et générale
      • loi : spam interdit
        • en Suisse depuis 2007 jusqu'à 100'000 d'amende
        • aux USA, 9 ans prision pour 750'000 par mois avec un taux de retour de 1 sur 30'000
  • codes malveillants
    • classification
      • virus : fragment qui ne se propage pas par ses propres moyens
      • ver : programme qui se propage de manière autonome
        • Melissa : 1999, document Word avec macro, 20 mois de prison
        • Loveletter : message avec script VBS, double extension (iloveyou.txt.vbs), modifie page de démarrage IE, envoie une copie à tous contacts et IRC, dommage $15 billions
        • Conficker : 2009, vulnérabilité de Windows patché en 2008, 9m machines infectés business (car non mis à jour), se copie sur tous disques, bloque l'accès aux sites anti-virus, tente de pénétrer machines local
        • Stuxnet : 2010 (Iran), attaque PC pour progammer des contrôleurs programmables industriels (SCADA, centrale nucléaire), varie fréquence moteur pour le détruire, 1000 centrifugeuses détruites
      • cheval de Troie : programme utile qui contient un programme malveillant (ou ce dernier par abus de langage)
        • Trojan-Downloader:OSX/Flashback.C : faille Java, drive-by-download, installeur de Flashplayer pour Mac, télécarge un programme depuis internet, modifie les résultats des recherches pour favoriser ses clients (Adware), 650'000 Mac infectés
      • backdoor : accès caché à un ordinateur installés par des chevaux de Troie, plus petit plus facile à installer
        • attente sur un port TCP/UDP prédéfini, communication sur chat, réseau P2P, Twitter (mieux)
        • téléchargement d'autres programmes, espionnage réseau, écran, clavier
        • Shiz : 2012, installe serveur VNC pour accès complet
      • spyware : logiciel qui transmet des informations privées
      • adware : logiciel qui affiche de la publicité
        • Superfish : 2014-15 par Lenovo, intercepte trafic HTTP et HTTPS pour insérer des pubs, installe faux certificat pour éviter erreurs, facile d'extraire la clé privée du certificat et intercepter soi-même le trafic de tous les Lenovos
      • rookit : logiciel qui masque la présence d'un intrus, modifie le système d'exploitation pour cacher fichiers, processus ou clés de registry
        • Sony : distribue un logiciel DRM avec rootkit, tous les fichiers commençant par $sys$ invisibles, $750'000 d'amende
        • TDL-4 : 2011, s'intalle dans le secteur d'amorçage du disque dur et s'exécute avant le système d'exploitation, 4m infectés
      • rançongiciels et cryptovirus : chiffre fichiers victime, nécessite un payement de rançon (en bitcoin)
        • SynLocker : compte à rebours pour Synology infectés, 0.6 bitcoin
      • canulars : infectent le cerveau de l'utilisateur pour se propager (menances importants, sources non fiabiles, demande d'envoi à tous contacts)
      • polymorphisme : virus se modifie à chaque infection pour être méconnaissable, chiffrement du virus avec différentes clés
        • Tequilla : 1991, Suisse
    • revenus
      • transfert d'argent (e-banking)
      • extorsion (chiffrement des fichiers)
      • exploitation de la messagerie pour phishing ou spam
      • mise en réseau (botnet) puis location
      • publicité
      • espionnage
    • histoire
      • époque classique : progagation passive par échange de disquettes (1er virus connu : 1981 sur Apple II, 1986 brain sur PC)
      • époque moderne : utilisation d'internet, infection générale en quelques heures (plus vite que les antivirus), simples et faciles à détecter
    • active-mail : message qui s'execute tout seul lors de visualisation, sans besoin de cliquer car défaut de messagerie
    • drive-by-download : s'éxecute automatiquement au download
  • vulnérabilités des réseaux
    • écoute réseau (sniffing)
      • protocoles utilisent authentification en clair, glagnable : telnet, rsh, rlogin, rexec, ftp, http, pop, imap
      • réseaux cablés restraignent cette possibilté, mais les commutateurs (switch) peuvent être manipulé
      • lan partagé (wifi) : tout le monde voit tout
      • lan commuté : chaque utilisateur voit que son trafic, ARP spoofing pour voir le réseau des autres
    • session hijacking : ne vole pas le mot de passe, mais la session
      • session TCP : insérer un paquet TCP, forgeant adresses source et destination, ports et numéros de séquence, desyncronise la connexion
      • session HTTP
    • usurpation d'identité (spoofing) : en modifiant la configuration ou créant des paquets, il est possible de forger l'adresse source (MAC ou IP) de quelqu'un d'autre
      • usurpation MAC : facile de changer l'adresse MAC de sa carte réseau, pour entrer dans un réseau n'acceptant que certaine adresse MAC
      • usurpation IP UDP : facile forger un paquet dont la réponse sera envoyée à l'adresse usurpée, pour passer les filtres des routeurs et firewalls basé sur l'IP source
      • usurpation IP TCP
        • fenêtre coulissante, utilisant numéros de séquence basé sur numéro de séquence initial aléatoire (ISN), 3-way handshake
        • difficle de devenir ISN, doit empêcher la victime de répondre (sinon reset de connexion)
        • standard original ISN (RFC 793) : indique +1 toutes les 4 microsecondes, facilement devinable en ouvrant quelques connexions et en déduisant les prochains ISN
    • détournement de connexions : convaincre la victime qu'elle doit se connecter chez nous, empoissonnant les protocoles pour retrouver les adresses
      • empoisonnement ARP (address resolution protocol) : couche 2/3 (ethernet/IP), simple et non sécurisé (réponse de tout le monde), même non-sollicitées, possiblité de se faire passer par le routeur par défaut
      • empoisonnement du cache NDP (neighbor discovery protocol) : ARP pour IPv6, même soucis
      • empoisonnement du DNS : requête contient identifiant de 16 bits et un port aléatoire, si deviner on peut forger une réponse pour tromper un DNS intermédiaire (cache) car UDP
    • dénis de service (DoS) : ou distributed denial of service (DDoS, plus difficle à remonter, filtrer, 75Gb/s), ralentir/gripper un système en le surchargeant de façon annonyme (plusieurs couches, bots nets, vers)
    • syn flooding : surcharge en packet syn allouant des resources dans une queue de connexions mi-ouvertes et ne jamais complété le TCP handshake, historiquement bloqué à 16 connexions
    • attaques par réflexion : noyer la cible à l'aide d'amplificateurs de trafic, ICMP echo-request, forger un ping avec une adresse de réponse et l'envoyer à une adresse de broadcast, amplification si la réponse est plus grande que la requête (nslookup -query=txt 20120113._domainkey.google.com)
  • vulnérabilités logicielles : utilisation des défauts, les plus critiques (cwe.mitre.org/top25)
    • intéractions peu sures entre composants : injection de commandes système, paramètre utilisé lors de l'execution $hostname, commande additionnelles dans paramètres
    • gestion des ressources risquées : buffer overflow, risque d'écraser une zone mémoire qui ne lui appartient pas et qui sera exécuté plus tard
      • pile (stack)
        • contient : adresse de retour, paramètres
        • trame : zone reservée sur la pile pour variables locales
        • pointeur de trame indique ou commence la trame active
        • lors d'un appel de procédure, l'ancienne valeur du pointeur de trame est déposée sur la pile avant être remplacé
        • exploit : écrasé l'adresse de retour avec un fragment de programme (adresse pointant vers ce fragment)
      • difficle à devenir la pile et l'architecture
      • le programme ne doit pas contenir le caractère spécial \0 qui termine les chaines
      • 2007 : bufferowerflow de Zelda permet de rooter la WII
      • protection
        • canaris : écriture d'une valeur secrêtement sur la pile juste avant l'adresse de retour
        • adresse space layout randomization (ASLR) : code chargé à une adresse différente à chaque exécution
        • mémoire non-exécutable (W^X) : marquer les zones mémoires contenant du code comme non modifiable et les zones modifiables comme non-exécutable
    • défenses poreuses
  • vulnérabilité web : site dynamique permettant de soumettre des paramètres
    • cross site scripting (XSS) : paramètres fournis par l'utilisateur sont insérés tel quel, possiblité d'insérer du scripts d'ailleurs, risque de redirection de session, d'exécution d'actions, du vol de cookies de session
    • SQL injetion : modification en utilisant les paramètres d'une requête SQL (philippe' /*)
      • detection : catid=2 test => error near 'test order by catfullname' at line 1
      • recherche d'un nom de table : catid=2 union select foo from test /* => table 'xxxxxxxx.test' doesn't exist
      • recherche d'un nom de colonne : catid=2 union select foo from user /* => unknown column 'foo' in field list
      • même nombre de colonne requis
    • références directes : manipulation de paramètre, pour accéder à une donnée non protégée, utilisation de table évite ce genre de découverte
    • OWASP (owasp.org) : liste de vulnérabilités classiques des applications web
      • failles d'injection
      • erreurs d'authentification et de gestion de session
      • cross side scripting
      • référence directe non sécurisée à un objet
      • mauvaise configuration des systèmes
      • exposition de données sensibles
      • manque de restriction d'accès à des fonctionnalités
      • cross site request forgery (CSRF)
      • utilisation de composants contenant des vulnérabilités connues
      • redirection non validées
  • code mobile
    • applets Java
      • précompilées en Bytecode, téléchargés et interprété par navigateur dans la Java virtual machine
      • modèle "bac à sable" : limité (paramétrable) aux opérations que l'applet peut exécuter, peut donner à sortir du bac si utilisateur donne accord
      • failles régulières : dans les mécanismes de sécurité JVM (s'échapper du bac)
      • protection : scanners savent reconnaitre des signatures d'applet malicieux, bloquer si pas signé par un tiers de confiance
    • objets ActiveX : pour Windows sans bac à sable, possiblité de signer les objets, mais l'éditeur de certificat peut se tromper, liste noire
    • Flash, Sliverlight, PDF via plugins

Mesures techniques : firewalls, proxys, antivirus

  • pare-feux : empêche la propagation d'une attaque tout en laissant passer le trafic utile
    • principe de bases
      • moindre privilège : utilisateur, logiciel a uniquement minimum de privilège pour accomplir sa tâche (pas administrateur)
      • défense en profondeur : plusieurs mesures valent mieux qu'une (anti-virus sur serveurs de messagerie et sur sur postes)
      • goulet d'étranglement : plus simple de contrôler la sécurité en 1 point (critique implique redondance, pas de hotspots)
      • maillon le plus faible : firewall aussi sûr que son maillon le plus faible (sécuriser tous les aspects, investir équitablement entre le aspects)
      • principe d'interdiction par défaut : interdire tout ce qui n'est pas explicitement permis (impossibilité de connaitre les futurs menaces)
      • participation des utilisateurs : système de protection efficace que si utilisateurs le supporte (pas trop restrictif, besoin de bien connaitre les besoins et bien communiquer les raisons des restrictions)
      • simplicité : réduire le risque d'erreur humaine (plus simple à vérifier)
    • types
      • logiciel : sur station de travail standard (IPCop), hérite des vulnérabilités de l'OS, meilleurs performances
      • matériel : boite noire spécialisée (Cisco)
      • virtuel : machine virtuelle (Cisco Virtual Security Gateway)
      • sans mémoire (stateless) : ne se rappelle pas des paquets
      • à mémoire (stateful) : grade une trace des paquets qui passent, reconstruit l'état de chaque connexion, voire de protocoles
        • stateful TCP : pour chaque connexion, il connait le prochain packet (flag, numéro), peut remplacer les numéros de séquence, empêche le syn-flooding
    • filtrage : limite le trafic au services utiles par rapport aux critères (IP source, destinataire, protocoles, ports, flags, options)
    • applicatif : spécialisé pour un type d'application (web => WAF), connait les comandes et format de l'application, bloque requêtes dangereuses (SQL)
    • personnel : sur poste de travail, surveille trafic reçu et généré par application, demande à l'utilisateur de confirmer les accès aux ports (OS récent bloque par défaut le traffic entrant)
    • translation d'adresse (NAT) : cacher 100 postes derrières une seule adresse
      • plages réservées par IETF : 10.0.0.0/16, 172.16.0.0/16, 192.168.0.0/16, fc00::/7, fd00::/7
      • utilisation adresses privée dans réseau interne et 1 adresse publique pour communiquer avec internet
      • table de translation pour trouver la référence interne privée
      • NAT dynamique : initialement vide, on note les adresses et ports des destinations internes et externes
        • collision : deux connexions différent que par l'adresse interne, utilisation d'un pool d'adresse publiques, changer le port source (Port and Address Translation PAT)
        • pas de connexion entrantes
      • NAT statique : connexions entrantes définies statiquement (1 entrée par protocole)
      • désavantage : certains protocoles échangent leurs IPs (FTP, P2P), firewall peut patcher les paquets (mais pas supporté par protocoles IPSec)
      • avantage : moins d'adresses, coûts limités, facilité pour changer organisation de réseaux, effet de protection, dissimule structure interne
    • authentification
    • accès à distance, chiffrement : virtual private network (VPN)
    • inspection de paquets : intrusion dectection system (IDS)
    • génération de logs
    • protection syn-flooding : reset connexion mi-ouverte trop longtemps ou génère lui même un syn-ack puis se effectue un syn-ack interne et adjuste les numéros de séquences
    • architectures
      • NAT + filtrage
        • NAT dynamique interne
        • NAT statique pour serveur accessible
        • pas d'analyse de contenus
        • connexions directes sur les serveurs internes
        • sécurité basse, pas de serveur web grand public
      • pare-feu avec zone démilitarisée
        • zone démilitarisée (DMZ) : non connecté à internet, ni interne, agit comme un proxy
        • machines internes peuvent uniquement se connecter au proxy
        • seul le proxy a internet
        • NAT dynamique sortant, statique entrant
        • filtrage sortant (trafic utile), filtrage entrant (blocage de l'accès au firewall)
        • pare-feu point critique, 1 vulnérabilité sur un seul service donne accès à tout le trafic
        • sécurité moyenne
      • zone démilitarisée en sandwich
        • machines internes ne peuvent se connecter qu'aux proxys
        • seul les proxys ont internet
        • pas de routage dans les proxys
        • NAT dynamique sortant, statique entrant
        • filtrage sortant (trafic utile), filtrage entrant (blocage de l'accès au firewall)
        • sécurité élevée
      • exemple : serveur web
      • exemple : banque
    • règles de filtrage : parcourt une liste de règle jusqu'à qu'il trouve une qui s'applique et passe au prochain paquet
      • dernière règle : interdit tout ce qui n'a pas été autorisé au préalable
      • ordre des règles importants
      • sans états
      • à état : connait les connexions établies, autorise automatiquement le trafic de retour (plus sûr, pas de paquets non-sollicités, plus simple)
      • méthode organisation
        • niveau de sécurité pour chaque zone
        • groupe les règles par zone dans l'ordre décroissant du niveau de sécurité
        • chaque groupe a 4 parties
          • autorisations explicites du trafic en entrée
          • interdiction générale de trafic en entrée
          • autorisations explicites du trafic en sortie
          • interdiction générale du trafic en sortie
        • pour chaque zone, déclarer les flux vers les zones moins sécurisées (flux vers zones plus sécurisées plus influençable)
        • une règle qui implique deux zones doit être faite dans la plus sécurisée
        • dernière règle any-any peut detecter les erreurs avec log activé
  • détection d'intrusion : protéger c'est bien, surveiller et se défendre c'est mieux
    • système de détetion d'intrusion IDS
    • network IDS (NIDS) : trafic sur le réseau devant le firewall
    • host IDS (HIDS) : événement sur les serveurs
    • en cas d'attaque : alarme SMS ou mail et reconfigure le pare-feu ou serveurs
    • analyse en temps réel ou via les logs
    • IDS à caractérisation du trafic : statistique, détecte valeur hors normes, peu utilisé, possiblité de faux positif
    • IDS à signature : base de données des attaques connues, mis à jour requises, faux négatif si l'attaque est personnalisée, nécessite une connaissance du système pour éviter trop de faux positifs
    • Snort (NDIS) : sniffer sous linux, base de données de signature mise à jour par les utilisateurs et développeurs, signature commercial
    • OSSEC (HDIS) : crée signature numérique de tous fichiers, répertorie ceux qui ne doivent pas être modifié, analyse les logs
    • HDIS avancées : contrôle d'accès à fichiers, fonction du système, application qui communique, liste blanche et noire, contrôle des périphériques
    • désavantage : si on a la signature, on peut bloquer via pare-feu, d'abord empêcher avant détecter, réaction manuelle
    • IDS interne : alarmes moins fréquentes, plus critique
  • proxys : relais d'applications, analyser le contenu, filtre si nécessaire, évite connexions directes
    • agit dans couche application (filtres, même à mémoire, agissent dans les couches inférieures)
    • utilisation d'un protocole par proxy requiert modification
    • cache : stocke localement pour un second accès si l'original non modifié (if modified since: => not modified)
    • filtre parental : interdit l'accès en fonction du contenu, liste d'URL
    • proxy transparent : redirection de port directement sur le proxy via le firewall, forcé l'utilisation si c'est un port standard
    • proxy HTTP : nécessite quelques modifications, demander la page et le domaine voulu
    • proxy FTP
      • FTP utilise deux connexions (1 pour contrôle, l'autre pour les données)
      • proxy FTP HTTP
      • proxy FTP user@
    • proxy SMTP : déjà par étape, déposer le courieur sur le proxy, proxy comme receveur
    • proxy DNS : déjà par étape, améliorer le cache, sauter un server DNS local en utilisant ceux de Google
    • proxy Socks (TCP/UDP) : transparent, accepte une connexion et transvase vers une autre, nécessite certaine fois modification du socksifier des programmes
    • proxy HTTPS : transparent, entre client et serveur sinon perte de chiffrement, pas de filtrage, permet de traverser le firewall via lui sur port 443 (HTTPS) ou 563 (SNEWS)
    • proxy inverse : proxy agit comme serveur, si le protocol ne connait pas les relais (HTTP, FTP) le proxy inverse ne peut agir que pour un seul server
    • proxy inverse HTTP : filtrage, authentification avant de parler au serveur, accélérer les serveurs (cache, fournis document statique)
    • proxy inverse HTTPS : décharge le serveur du chiffrement
    • translation des protocoles : utilisation de différent protocoles de chaque côté, diversité des protocoles limites les vulnérabilités
  • antivirus
    • detection
      • analyse statique de code : difficle si compressé ou chiffré, fonctionne avec heuristique, halting-problem
        • A(x) programme qui sait si X contient une boucle infinie (sait si X est un virus)
        • P(x) programme : if A(x) then exit else loop (else spread)
        • P(P) peut ni se terminer, ni ne pas se terminer (V(P) ne peut être ni vrai ni faux)
        • détecteur de virus parfait n'existe pas
      • analyse dynamique de code : exécution virtuelle, détectable par le virus
      • signature
    • mise à jour automatique et contrôlé régulièrement
    • centralisation des mises à jour
  • défense en profondeur
    • desktop : interférences des utilisateurs, laptop en ballade, desktops éteints
    • serveur de fichiers : scanner tous fichiers à l'écriture, 7x24, mise à jour automatique, analyse des logs automatiques
    • serveurs de messagerie : message scané avant d'être déposé dans la bal, antivirus pour attachement avec alarme, blacklisting, mise à jour régulière
    • passerelles internet (proxys mail, web, ftp) : isole les serveurs d'internet, sous la responsabilité d'une seule équipe, 7x24, nombre réduit pour faciliter le travail, analyse et bloque les attaques
    • filtre générique : interdit attachements non utiles (exe, pif, vbs, bat, etc.), interdiction par défaut, mail, web, ftp

Applications, protocoles

Cryptographie

  • but de la crypto : confidentialité, intégrité, authenticité
  • chiffrement symétrique (à clef secrète) : même clef pour chiffrer et déchiffrer
    • problème : transfert de clef
    • chiffrement par bloc
    • plus performant
    • mode chiffrement : manière de combiner les blocs
      • electronic code book (ECB) : chaque bloc indépendamment même clef, un pattern peut ressortir
      • cipher bloc chaining (CBC) : combine les données d'un nouveau bloc avec celles des autres blocs
    • longueur clé : 40bits = $2^{40}$ possibilités (1 million de million), $2^{56}$ 2 jours pour $200 (cloudcracker)
  • fonctions de hachage : résumé de données de longueur fixe
    • irréversible : résistance à la pré-image
    • collisions : inévitable puisque plus court que données
    • résistance à la collision : avec un message et son empreinte, pas possible de réer un deuxième message avec même empreinte, résistance à la deuxième pré-image
    • MD5 (128bits) : casser, collision générable
    • SHA-1 (160bits) : presque cassé, collision avec beaucoup d'effort ($75K sur amazon)
    • SHA-2 (224-512bits) : loin d'être cassé
    • SHA-3 : en concours gagné par KECCAK (co-auteur de AES)
  • authentification de messages
    • message authentication code (MAC) : clé symétrique intervient au moment du hash ou chiffré l'empreinte
    • si clé uniquement connue par deux partenaires : preuve que ne provient pas d'un tiers, pas d'altération en route
    • HMAC-SHA-1, HMAC-SHA-256, CBC-MAC-AES
  • chiffrement asymétrique (à clé publique) : deux clés, une publique, une privée
    • divulgation de la clé publique sans risque
    • pas possible de dévrier une clé à partir de l'autre
    • plus pratique : signer message, elimine transfert de clef
    • RSA
      • message : clair $M$, chiffré $C$
      • mod : $n=pq$$p$ et $q$ deux grands nombres premiers
      • e : $e$ pas de dénominateur commun avec $(p-1)(q-1)$
      • d : $ed-1$ est multiple de $(p-1)(q-1)$
      • clef publique : $(e,n)$
      • clef privée : $(d,n)$
      • chiffrer : $C=M^e\mod n$
      • déchiffrer : $M=C^d\mod n$
      • aucune méthode efficace pour inverser le chiffrement (logarithme discret) : nécessite $p$ ou $q$, si $n$ assez grand factorisation trop difficle
      • longueur clé : uniquement nombres premiers, 512bits (équivalent 56bits) $120 en 30h (Amazon), 768bit crackés en 2.5 ans (EPFL), 2048bits (équivalent 128bits)
  • signature de messages : signer en chiffrant (hash) avec clé privée, déchiffrement avec clé publique prouver que seul le détenteur de la clé privé a pu créer la signature
  • qualité du chiffrement : sûr si brute force unique moyen, algo publics plus sûr que propriétaire
    • symétriques : DES (56), triple-DES (112/168), Blowfish, Camelia (128/192/256), AES (128/192/256)
    • asymétriques : RSA, ElGamal
  • échange de clefs : pour utiliser clef symetrique
    • via RSA : chiffre avec clef publique du partenaire clef générée (besoin clef publique)
    • via Diffie-Hellman : génère clef symetrique sans transmission (logarithmes discrets)
      • générateur : $g$
      • modulo : $p$
      • choix : chiffre $a$ et $b$ de part et d'autres
      • échange : $A=g^a\mod p$ et $B=g^b\mod p$
      • clef : $K=B^a\mod p=g^{ba}\mod p=A^{b}\mod p$
  • chiffrement hybride : efficacé symétrique et avantages asymétrique

PGP/S-Mime, PKI

  • certificats : certifie qu'une clef appartient bien à qui de droit, signé par un tiers dont on connait la clef publique (recursion)
    • distribution des clefs publiques sujette à intermédiaire (man in the middle)
    • contient au moins informtions suivantes : identité (nom/email), clef publique, date d'expiration, signature du certificat
    • Pretty Good Privacy (PGP) : anarchique, contient plusieurs identités et signatures, photo, révocation
      • clefs spéciales : designated revoker (droit de révoquer, plus courant de générer un certificat de révocation signé par votre clef)
      • protection clef privée : non mémorisable (2048bits)
        • sur disque dur chiffré avec mot de passe : une fois déchiffrée dans la mémoire (dangereux)
        • sur carte à puce : carte protégée par mot de passe, la clef ne quitte jamais la carte (données qui y transitent)
      • serveurs de clefs : contient clefs utilisateurs de PGP qui publie leur clef
        • si une clef a la confiance de quelqu'un, il peut la signer avec sa clef et la resoumettre aux serveurs
        • web of Trust : confiance en chaine
          • éviter la lecture de mail par tout le monde
          • detecter man-in-the-middle
        • avant de signer une clef, comparer empreinte avec celle de son propriétaire (hash de 160bits) pour éviter man-in-the-middle
          • key signing parties : rencontre IRL (IETF)
            • clef publique de chaque participant publiée
            • présentation avec passport et lit empreinte de clef à haute voix
            • chacun signe les clefs des autres
        • 3'100'000 clefs PGP : 52'000 ensemble fortement connexe, chemin entre chaque paire de 5.95 signatures
        • révocation de clef : retier la clef du serveur pas suffisant, publication certificat de révocation (nécessite avoir accès à sa clef privée et phrase secrète)
      • 1991, SHA-1, SHA-256, 3DES, AES, CAST5, RSA, ElGamal, DSA, ECC, ZIP
      • basé sur formats ascii (base64)
    • X.509 : infrastructure à clef publique PKI
      • authorités d'enregistrement (RA) : authentification physique
      • authorités de certification (CA) : crée et signe certificats après RA, privée (entreprise) ou publique, hierarchique (chaine de confiance)
        • chaque participant peut communiquer avec autres certifiées par la même CA
        • fournit sa propre clé publique au participant
        • dépôt de certificats : annuaire des clefs publiques
        • certificate revocation list (CRL) : aussi dans le dépôt (en cas de vol)
        • CA d'entreprise à usage définit : clef de signature (employés responsable de leur signature), clef de chiffrement (conservée par l'entreprise en cas de soucis)
        • certification practice statement (CPS) : quel authentification, validité, responsabilité (en Suisse, Swisscom, la poste, confédération et Quo Vadis)
      • authorités de dépôt (respository) : stockent certificats
      • authorités de séquestre de clef (key escrow) : dans certains cas, garde copie clefs privées
  • messagerie chiffrée bout-en-bout : garantir confidentialité, chiffre avec clé publique destinaire, signe avec clef privée
    • format multipurpose internet mail extensios (MIME) : décrit attachements avec deux entêtes (Mime-Version: et Content-type: text/plain; charset="utf8")
      • PGP/Mime traite attachements de manière standard
      • S/Mime (X.509) : signature et chiffre Mime, recursif (transmettre un mail)

Authentification

  • authentifier
    • à l'aide de quelque chose qu'il sait : mot de passe
    • à l'aide de quelque chose qu'il possède : tokens
    • à l'aide de quelque chose qu'il est : biométrie
  • modèle classique
    • stockage de mot de passe jamais en clair : utiliser hash
    • authentification unix : hash = chaine vide chiffré 25 fois avec le mot de passe comme clé (DES 56bits, caractère au-delà du 8e sont ignorés, grain de sel ajouté, ne devrait pas être utilisé)
    • ubuntu Wiley Werewolf : sha512, 5000 itérations, 48bits de sel
      • avant : nom et hash dans /etc/passwd
      • maintenant : nom dans /etc/passwd et hash dans /etc/shadow lisible que par l'administrateur (accès via LiveCD ou obtenir les droits admin)
    • OSX Mountain Lion : sha512, nombre variable d'itérations (0.1s), 256bits de sel
    • login réseau : envoyés via SSL/TLS au LDAP
    • Windows : deux hashs
      • LM hash (ancien) : passe coupé en 2 blocs de 7 caractères majuscules utilisés comme clé DES pour chiffer une chaine constante sans sel (toutes les solutions en 3h sur un PC normal)
      • NTLM hash : MD4 (128bits)
      • stocke en mémoire mots de passe non-haché des utilisateurs connectés
    • MD5 : 48bits de sel, 1 ronde de hachage, empreinte de 128bits
    • blowfish : rondes paramétrable
    • SHA-256/512 : 96bits de sel, rondes param., empreinte 256/512bits
  • protocole challenge réponse
    • client contacte serveur
    • serveur envoie un message aléatoire (challenge) au client
    • client chiffre le challenge et renvoie le résultat (response) au serveur
    • il utilise l'empreinte du mot de passe comme clef de chiffrement
    • le serveur effectue le même chiffrement et compare les résultats
    • vulnérable : man-in-the-middle
  • réseau avec active directory : protocole Kerberos
    • authentifie utilisateur (hash NT) et serveur (clef connue) : évite man-in-the-middle
    • ticket d'accès : plus besoin de s'authentifier chaque fois
    • pas de faille connue
    • fichier qui contient les hash vérrouillé dès le démarrage du système
    • droit administrateur requis pour utiliser les outils et voler les hashs : dump possible via disque dur à l'arrêt
  • cassage de mots de passe
    • se procurer copie des empreintes
    • impossible à inverser, imaginer tous les mots de passes possibles et comparer les empreintes
    • dictionnaire : langue, nom propres (lieux, environnement professionnel), < 100'000 mots en quelques secondes
    • heuristiques : on génère mots de passes probables avec des déviations (inspiré des leaks, du disctionnaire)
    • exhaustive : systématiquement toutes combinaisons, très vite complexe dès 8 caractères comptant caractères spéciaux
    • outils : plusieurs milions de hash à la seconde pour PC puissant
      • mdp windows : ophcrack
      • général : hashcat (GPU)
    • compromis temps-mémoire : si pas salées, peuvent être calculées à l'avance, mais beaucoup de mémoire (5K To 8 caractères avec majuscules et chiffres)
    • rainbow tables : compromis temps-mémoire, stocke qu'une frace des hash
      • fonction de hash $H$
      • fonction de réduction $R$ : génère mot de passe arbitraire à partir d'une empreinte
      • chaine : $p_0\H h_0\R p_2\H h_2\R p_3\H h_3\R p_9$
      • stocke uniquement la fin : possiblité de parcourir en arrière mais plus si on a le début, on peut tout reconstruire
      • fusion : deux chaines contiennent le même mot de passe, inefficace, plus de risque si la table est grande
      • rainbow : utilise une fonction de réduction différente pour chacune des colonnes (collision uniquement dans la même colonne)
  • bon mot de passe : > 9 caractères, casse mixte, chiffres et caractères spéciaux (première syllable d'une chanson séparé par une virgule), changer régulière, utliser un gestionnaire de mots de passe
  • authentification forte (à deux facteurs) : token, biométrique en plus du mot de passe
    • token : grille de chiffres, one time password (change chaque minute, event connu du serveur et compteur), calculette, téléphone portable, dongle
    • openauthentification (oath) : standard décrivant comment mot de passe générés, quel format les secrets des tokens peuvent être importés dans le serveur
    • signature des transaction : en fonction des montants, canal indépendant (SMS), n'évite pas man-in-the-middle
    • biométrie : morphologie (empreinte digital, DNA) ou comportement (voix, dynamique de la signature), difficle de créer un système parfait
      • empreinte digital : scanné, points intéressants (minuties) en coordonnées x,y envoyées à un serveur
      • jamais indentique
      • risque de vol : pas changeable

Transport : IPSec, PPTP, SSL/TLS, SSH

  • VPN : étendre un réseau privé à travers un réseau public
    • encapsulation des paquets pour voyage
    • chiffrement des données pour garantir confidentialité
    • point to point tunneling PPTP (Microsoft) : historique, peu sûr
    • layer 2 tunneling protocol L2TP (IETF) : fusion de Cisco L2F et de Microsoft PPTP, permet de transporter d'autres protocoles que IP
    • IPsec IETF : sécuriser IP uniquement, protocol standard VPN, ouvert, extensible
      • transport : ne protège que les payloads des paquets transmis, ip non protégée
      • tunnel : paquet entier est encaspulé dans un nouveau paquet, ip protégée
      • internet key exchange (IKE) : protocole d'échange de clé
        • négocie une SA pour protégéer les négociations
        • définir SA nécessaires aux flux ESP ou AH
        • utilise Diffie-Hellman
        • confidentialité persistance (perfect forward secrecy DH) : aucun lien entre nouvelles clefs si renouvelemenet (régulier)
      • encapsulated security payload (ESP) : protocole chiffrement avec header (SPI, numéro de séquence, vecteur d'initialisation), payload (donnée chiffrées, AES), trailer (padding, type de l'en-tête suivante), données d'authentification (optionnel, HMAC-SHA-96)
      • authentification header (AH) : protocole authentification avec SPI, numéro de séquence (replay protection), information d'authentification (HMAC-SHA), type de l'en-tête suivant (TCP, UDP)
      • sécurité association (SA) : mémorise algos, clés, durée de validité des clés, no de séquence et identité des partenaires
        • une par flux unidirectionnel
        • identifié par un index (SPI) : envoyé sur tous les paquets
      • IPSec et NAT : packet protegé mais NAT change adresses source et checksum (inclus ip), ajout différence checksum requis
      • sûr, flexible, ouvert, compliqué, inclus dans les OSs, IPv6
    • OpenVPN : alternative à IPSec, crée une interface virtuelle sur client et serveur avec SSL/TLS, UPS préféré à TCP (performance)
    • SSL VPN : alternative à IPSec via client Java/ActiveX obtenu via HTTPS, rédirige de manière plus ou moins sûr le trafic
  • secure socket layer SSL/transport layer security TLS : sécurisé n'importe quel service basé sur TCP (VPN pour réseau, TLS pour service)
    • couche intermédiaire entre TCP et l'application
    • authentification forte avec certificat X.509, chiffrement, compression, négociation des algos, gestion de clés de session
    • deux couches
      • record layer : fragmentation, compression, authentification, chiffrement
      • handshake protocol : négocier version, algos, client propose, serveur choisit
      • change cipher spec protocol : définit à quel moment on change d'algo (fin handshake)
      • alert protocol : erreurs ou avertissements concernant la session
      • data protocol : passe les données d'une application de manière transparente
    • SMTP accepté sans certificat valide : pas besoin du certificat du serveur
    • session peut être mémorisée pour prochaine connexion (web, beaucoup de connexion)
    • application TLS : nouveau protocole existant (support TLS requis, HTTP port 80 => HTTPS port 443, imaps port 993), étend protocole pour négocier SSL/TLS (SMTP => ESMTP)
    • conseil de configuration
      • désactiver SSLv3 : poodle attack
      • désactiver algo mode CBC : beast attack
      • désactiver algo RC4
      • désactiver compression : breach attack
      • désactiver chiffrement clé < 128bits
      • utiliser modes avec perfect forward secrecy : Diffie Hellman
      • activer TLS_FALLBACK_SCSV : éviter MITM force l'utilisation d'une version inférieur
      • vérifier ssllabs.com/ssltest pour tester la configuration d'un site
    • padding oracle attack sur CBC : erreur de padding + MAC prend plus de temps que juste padding, on troncque (par ex. deuxième bloc) jusqu'à trouver le bon MAC, résolus par temps constant
  • secure shell SSH : TCP sur port 22, peut transporter autre protocol (violation des couches)
    • établissement connexion : négociation, Diffie-Hellman, authentification
    • authentification du serveur (trust on first use, TOFU) : enregistré première connexion, alert si clé change
    • clé public client : préalablement copier sur le server, attention au vol de clé privée (devrait être protéger par mot de passe)
    • port forwarding : SSH forward un port vers une destination donnée, peut-être inversé
    • scp : secure copy
    • sftp : secure FTP
  • Wi-Fi
    • WEP : mauvais, proscrit par norme des cartes de crédit
    • WPA (wifi protected access)
      • en urgence pour éliminer les failles de WEP
      • compteur de éviter un rejeu de paquets
      • vecteur d'initialisation de 48bits au lieu de 12bits
      • utilisation d'un MAC (AES) au lieu somme contrôle linéaire
      • utilisation de clefs longues, aléatoires et changées régulièrement
      • WPA utilise RC4 comme WEP, WPA2 chiffre avec AES
      • WPA attaqué en 2014 : non sécure
      • 2 modes
        • personnel : point d'accès authentifie directement clients via secret partagé (PSK, pre-shared-key), PMK derivée du mot de passe
        • entreprise : point d'accès utilise un serveur d'authentification (EAP via TLS, extendisble authentication protocol), PMK aléatoire
        • authentifcation fournit à chaque client via une pairwise master key (PMK)
        • confidentialité persistante (forward secrecy) : via challenge
        • TTLS (tunneled TLS) : TLS entre client et server entreprise, moins sûr, plus facile, puis le serveur l'envoit au point d'accès
      • attaque par dictionnaire : en observant challenge-response, on peut retrouver la PMK (personnel) mais lent (4096 itérations dans la dérivation de PMK, compromis temps-mémoire)
      • recommandation : WPA2 uniquement, mot de passe long et nom de réseau original
  • Kerberos : système pour gérer droits d'accès des systèmes
    • utilise exclusivement clés symétriques
    • ticket
      • contient
        • $c$ : identitié du client
        • $a$ : adresse IP
        • $v$ : début et fin validité
        • $K_{C,S}$ : clé de session symétrique à utiliser entre client et serveur
      • authentification : ticket granting ticket (TGT) auprès authentification server (AS)
      • droits : ticket de service (TS) avec TGT auprès ticket granting server (TGS)
      • ticket pour server $s$ : $T={c,a,v,K_{C,S}}_{K_S}$
      • authentificateur : $A={c,t}{K{C,S}}$
    • demande ticket de service : client envoie ticket avec authentificateur au TGS, qui connait les autorisations
    • nécessite intégration aux services, délègue l'authentification, en cas de panne ne paralélise pas les services, man-in-the-middle pas possible (ticket contiennent IP)

Gestion de la sécurité

Politiques de sécurité, standards, audits

  • appéricaition des risques
    • $V$ : inventaire des valeurs
    • $M$ : inventaire des menaces
    • estimation de probabilité de chaque menace
    • risque résiduel : $R_t=\sum P_{M_i}V_i$ doit être acceptable
  • politique de sécurité : bible de la sécurité
    • inventaire du système d'information
    • classification de l'information
    • identification des domaines de sécurité
    • aspects physiques et organisationnels
    • règles du jeux
  • mesures de sécurité
    • service sécurité avec mission et compétences définies
    • choix technologiques : firewalls, filtres, anti-virus, chiffrement, signatures électroniques, authentification, contrôle d'accès
    • règlement : configuration, backup, anti-virus
    • plans de secours : mesures techniques, légales, relations publiques, avant (backup, plan de reprise)/pendant (restauration)/après (documentation, actions légales) sinistre
      • plan de reprise des activités (PRA) : mesures pour rétablir la situation normale
      • plan de continuation des activités (PDCA) : mesure qui visent é offrir les services critiques pendant le rétablissement
  • validation
    • validation automatique à l'aide de scanners de vulnérabilité
    • audit manuel
    • test de pénétration
  • documents clés
  • réglement d'utilisation acceptable : politique dédiée aux utilisateurs, motivation (dangers, coûts, responsabilité), devoirs, utilisation privée, surveillance, environnement de travail (mot de passe), internet, messagerie, abus, fondement juridiques
  • organigrammes : responsable sécurité doit dépendre directement de la direction, personne responsable sécurité ne doit pas être responsable d'exploitation
    • responsble de la sécurité des systèmes d'information RSSI (CISO) : maintenant le niveau de sécurité, crée politique de sécurité, valide règlements, crée plan de formation, suit évolution des risques/besoins/normes, gère incidents, collabore avec auditeurs
  • ISO2700X : guide pour la gestion de la sécurité
    • ISO27001 : systèmes de management de la sécurité de l'information SMSI, exigences, exploitation, amélioration, certification
    • ISO27002 : codes pratiques pour la gestion de la sécurité de l'information, référence, gamme complète de contrôles, recommandations uniquement
    • modèle PDCA
  • IT Grundschutz-Kataloge : catalogue des mesures de sécurité du gouvernement Allemand, fournir de manière systématique un niveau de sécurité de base
    • technique, bien pour réglement et audition, pas fait pour développer une politique de sécurité, pas à jour
  • Common Criteria (ISO15408) : critères d'évaluation de produits, international
    • exigences fonctionnelles : fonctions de sécurité (authentification forte)
    • exigences d'assurance : confiance dans l'implémentation des fonctions (correcte et efficacité)
      • EAL4 : SUSE Linux, Red Hat, Microsoft SQL Server, Windows 2000 (if no internet, no software)
      • EAL5 : microcontroller ATMEL, Boeing secure network server
      • EAL6 : crypto library
      • spécifie critères pour produits sûr, base de comparaison
    • profiles de protection (PP) : ensemble d'objects de sécurité pour une classe de produit (firewall)

Exemples

  • mars 2011
    • RSA fabriquant de systèmes d'authenfication forte
    • feuilles excel malicieuses par email (recruitment plan)
    • contenant 0-day flash player
    • installation de backdoor (poison-ivy)
    • trouver une façon de contourner authentifcation des produits
    • mai 2011
      • Lookheed-Martin (armement américain) detecte une intrusion sur ces systèmes RSA
      • bloqué à distance et remplacer 45'000 token RSA
    • RSA a perdu $66m
  • mars 2011
    • iranien pirate système Comodo, authorité de certification
    • interception de traffic https de mail.google.com
  • Sony 2011
    • porte plainte contre hacker qui déprotéger PS3
    • DDOS du Play Station Network
    • indisponible du 20 avril au 15 mai
    • 77m de compte PSN, 24m de compte abonné au Sony Entertainment Network, 12'700 numéros de carte de crédit volé
    • perte de $171m
  • Lulzsec 2011
    • piraté pendant 50 jours Sony pictures, Fox.com, senate.gov, etc.
    • DDOS contre minecraft, league of legends, CIA
    • pirate pour le défi/plaisir
    • 5 membres arrêtés
  • Ashley Madison : bases de données publiées (nom, adresses, email, cartes de crédit)
  • site piraté du jour : http://www.zone-h.org/archive
  • XcodeGhost
  • statistique Spamhaus
    • 90% du mail est du spam
    • 80% du spam est dû à une centaine de gagns de 1-5 personnes