GNU General Public License v3.0 licensed. Source available on github.com/zifeo/EPFL.
Fall 2015: Sécurité des Réseaux
[TOC]
- 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
- é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
- 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 si1.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
- filtres anti-spam
- relais ouverts (open relay)
-
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
- Sony : distribue un logiciel DRM avec rootkit, tous les fichiers commençant par
- 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
- classification
-
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
)
- écoute réseau (sniffing)
-
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
- pile (stack)
- défenses poreuses
- intéractions peu sures entre composants : injection de commandes système, paramètre utilisé lors de l'execution
-
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
- detection :
- 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
- applets Java
- 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
- 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
- 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
- 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é
- principe de bases
- 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
- 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
- analyse statique de code : difficle si compressé ou chiffré, fonctionne avec heuristique, halting-problem
- mise à jour automatique et contrôlé régulièrement
- centralisation des mises à jour
- detection
- 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
- 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$ où$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)
- message : clair
- 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$
- générateur :
- chiffrement hybride : efficacé symétrique et avantages asymétrique
- 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
- key signing parties : rencontre IRL (IETF)
- 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:
etContent-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)
- format multipurpose internet mail extensios (MIME) : décrit attachements avec deux entêtes (
-
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)
- avant : nom et hash dans
- 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
- 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)
- fonction de hash
- 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
-
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}}$
- contient
- 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)
- appéricaition des risques
-
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
- 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
- ISO2700X : guide pour la gestion de la sécurité
- 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
-
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)
- 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