INF4420: Éléments de Sécurité Informatique



Documents pareils
Introduction aux buffer overflow, CS335

INF4420: Éléments de Sécurité Informatique

Les attaques par corruption de mémoire Synopsis Mickael Deloison 22/10/2008

Table des matières. Avant-propos... Préface... XIII. Remerciements...

Programmation système I Les entrées/sorties

Bases de programmation. Cours 5. Structurer les données

INF8420 Éléments de sécurité informatique Hiver 2008 TRAVAIL PRATIQUE 2 Prof. : José M. Fernandez

Préjudices, failles, vulnérabilités et menaces

Initiation à la sécurité

Les débordements de tampons et les vulnérabilités de chaîne de format 1

Logiciel de base. Première année ENSIMAG

Sécurité Informatique : Metasploit

Les formations. ENI Ecole Informatique

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Le langage C. Séance n 4

Rappels Entrées -Sorties

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

SQL MAP. Etude d un logiciel SQL Injection

3IS - Système d'exploitation linux - Programmation système

Check-list de maintenance du système Instructions impératives pour l'utilisateur du système Dernière mise à jour 09 juin 2011

Les chaînes de caractères

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

GlobalScape Secure FTP Server Buffer Overflow

SECURIDAY 2013 Cyber War

Installation et Réinstallation de Windows XP

Chapitre 2 : Abstraction et Virtualisation

Manuel d'installation

Conventions d écriture et outils de mise au point

Cours Langage C/C++ Programmation modulaire

SQL Parser XML Xquery : Approche de détection des injections SQL

Sécurité informatique Examen final - SOLUTIONS 24 avril 2008 Professeur : José M. Fernandez

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Indicateur et tableau de bord

OWASP Code Review Guide Revue de code. Paris The OWASP Foundation. Victor Vuillard

Analyse de sécurité de logiciels système par typage statique

Les failles Format String

Vulnérabilités logicielles. Jean-Marc Robert

ACTIVITÉ DE PROGRAMMATION

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Java Licence Professionnelle CISII,

Analyse statique de code dans un cycle de développement Web Retour d'expérience

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Cours Programmation Système

Acquisition des données

LA PROTECTION DES DONNÉES

Bibliographie. Gestion des risques

Compromettre son réseau en l auditant?

LINUX - Sécurité. Déroulé de l'action. - 3 jours - Contenu de formation

Gestion des mises à jour logicielles

Cours d initiation à la programmation en C++ Johann Cuenin

Chapitre 1 : La gestion dynamique de la mémoire

Programmation impérative

Sécurité logicielle. École de technologie supérieure (ÉTS) MGR850 Automne 2012 Automne Yosr Jarraya. Chamseddine Talhi.

Principes de la sécurité informatique

Chap III : Les tableaux

Les risques HERVE SCHAUER HSC

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

SYSTÈME DE GESTION DE FICHIERS

Lyon, mardi 10 décembre 2002! "#$%&"'"# &(

CHEF ATELIER CHEF ATELIER

Programmation assembleur : aperçu

Introduction à la Programmation Parallèle: MPI

Initiation à JAVA et à la programmation objet.

Le scan de vulnérabilité

EA D S INNOVA TION W ORKS. Mobilité et sécurité. Nicolas RUFF nicolas.ruff [à] eads.net

Attaques applicatives

Managed VirusScan et renforce ses services

Security Exposed. #1 - Take the red pill. An introduction to hacking & security flaws. ... and follow the white rabbit

Fichiers, dossiers, enregistrer et arborescence

Atelier Pivoting KHOULOUD GATTOUSSI (RT3) ASMA LAHBIB (RT3) KHAOULA BLEL (RT3) KARIMA MAALAOUI (RT3)

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

SECURIDAY 2012 Pro Edition

Sécurité des réseaux Les attaques

FreeNAS Shere. Par THOREZ Nicolas

Génie Logiciel avec Ada. 4 février 2013

College Du Chinchon. Torniké Sidamonidzé 3C. M. Brulé

Aperçu rapide de PC BSD 1.2.

I. Introduction aux fonctions : les fonctions standards

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Dix bonnes raisons de choisir ExpressCluster en environnement virtualisé

Protection des protocoles

Sécurité des Postes Clients

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Expérience d un hébergeur public dans la sécurisation des sites Web, CCK. Hinda Feriani Ghariani Samedi 2 avril 2005 Hammamet

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

Exécutif temps réel Pierre-Yves Duval (cppm)

Master Sécurité des Systèmes Informatiques

Retrouver un mot de passe perdu de Windows

PROJET 1 : BASE DE DONNÉES REPARTIES

Installation de IBM SPSS Modeler Server Adapter

Guide rapide d'installation SUSE Linux Enterprise Server 11 SP1

Préparer la synchronisation d'annuaires

Tutoriel sur Retina Network Security Scanner

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Une introduction à Java

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Tech-Evenings Sécurité des applications Web Sébastien LEBRETON

Test d un système de détection d intrusions réseaux (NIDS)

Auto réparation des postes de travail Comprendre et déployer les mises à jours de TSC avec OfficeScan Corporate 5.5

Transcription:

: Éléments de Module II : Sécurité OS et des logiciels José M. Fernandez M-3109 340-4711 poste 5433

Module II Aperçu Semaine 5 Sécurité dans les systèmes d'exploitation (SE) Contrôle d'accès dans les SE Authentification dans les SE Semaine 6 Sécurité dans les SE (suite) Contrôle d'intégrité Code malicieux Contre-mesures Semaine 7 Sécurité du logiciel Failles typiques et vulnérabilités Techniques d'exploitation Contre-mesures Semaine 8 période de relâche Semaine 9 Sécurité des BD et des applications Web Semaine 10 Contrôle périodique (jusqu'à semaine 7) 2

Plan de ce cours Motivation Types de faille de logiciel Impact sur la sécurité Vulnérabilités Exploitations Vulnérabilités de débordement de tampon Débordement de variables Débordement de pile Contre-mesures Autres vulnérabilités Fuite d information Chaîne de formatage Insertion de SQL 3

Taxonomie des failles des logiciels Génie logiciel (IEEE) Le programme ne fait pas ce qu'on lui a demandé de faire (spécification) Défaut ou "fault" ou "bug" Erreur de conception ou programmation Le programme fait ce qui a été spécifié, mais son exécution des conséquences non prévues (possiblement néfaste) Défaillance ou "Failure" ou "feature" Erreur de spécification Sécurité informatique Le programme a un défaut qui a des conséquences du point de vue de la sécurité Défaut de sécurité Exemple : erreur de programmation dans un programme de login Le programme fait ce qui est spécifié, mais le modèle de sécurité est inexistant ou fait défaut Défaillance de sécurité Erreur de spécification du point de vue de la sécurité Exemple : introduction de contre-mesures inadéquate, p.ex. algo de chiffrement trop facile à casser Le programme est bien conçu et bien construit, mais il a un comportement non prévu qui a des conséquence en terme de sécurité Dans tous les cas on parle de vulnérabilités du système 4

Dissection d'une attaque par exploitation 1. Le système ciblé fourni un service avec une interface accessible à l'attaquant Accès physique (usager légitime) Accès via le réseau 2. L'attaquant fait une reconnaissance du système et identifie le logiciel qui fournit le service ("footprinting" ou "fingerprinting") Identification du SE Identification de la version du logiciel Outils automatisés (nmap, xprobe, etc.) 3. L'attaquant détecte une ou plusieurs vulnérabilités dans ce logiciel Analyse du code source "Cramming the input" Liste de vulnérabilités connues (sites "white hat" et "black hat") 4. L'attaquant construit une méthode d'exploitation de ces ou cette vulnérabilité ("exploit") Méthode artisanale ("Fuzzing the input") Outils automatisés d'exploitation (Metasploit, etc.) 5. L'attaquant utilise cette exploitation pour atteindre ses desseins Accès en mode "root" Installation d un trojan ou backdoor Changement des permissions d'accès 5

Attaques de débordement sur les variables Conditions de base Une variable tampon ("buffer") est accessible à l'usager Le programme ne vérifie pas si les valeurs entrées dépassent la mémoire allouée pour la variable tampon Les variables "cibles" qu'on veut changer ne sont "pas loin" et peuvent être changé par débordement Les variables et paramètres qui sont changés n'auront pas d'effets graves sur le fonctionnement du programme Variable "cible" Variable "victime innocente" Tampon "accessible" 6

Révision À quoi sert la pile Pile ou "stack" Utilisé par la machine de registre pour Stocker les variables de l'environnement local Gérer les appels de fonctions Direction de remplissage de la pile : vers le bas des variables : vers le haut Remplissage de pile Variable locale 1 Variable locale 2 pointeur d'environnement pointeur de retour Environnement fonction originale arguments d'appel de fonction Remplissage de variables Variable locale A Variable locale B Environnement fonction appelée 7

Attaque par débordement de la pile ou "Stack-based Buffer Overflow" Conditions de base Après le retour de la fonction, les variables locales ne sont pas effacées Le code machine est inséré dans le tampon et autre variables qui pourraient suivre La valeur du pointeur de retour est modifié pour pointer vers le code inséré Lors de l'instruction de retour, la machine de registre lit le pointeur de retour et continue l'exécution à l'endroit indiqué Variable locale 1 Variable locale 2 pointeur d'environnement pointeur pointeur de retour de retour modifié arguments d'appel de fonction Code machine inséré execve ("/bin/sh") Variable locale A Tampon accessible (Variable local B) 8

Un example (*) void sample_function (char *string) { char buffer[16]; strcpy{buffer,string} return; } Void main () { char big_buffer[256]; int i; for (i=0; i<255; i++) big_buffer[i]='a'; sample_function(big_buffer); } (*) Tiré de "Counterhack" de Ed Skoudis, Prentice-Hall big_buffer (256) i (2) pointeur d'environnement pointeur de retour *string Buffer (16) Environnement fonction main arguments d'appel de fonction Environnement fonction appelée 9

Comment trouver des vulnérabilités de débordements Analyse du code source Fonction vulnérables en C/C++ fgets gets getws memcpy memmove scanf sprintf strcat strncpy Array à allocation dynamique Pointeurs Force brute 1. Obtenir le programme (compilé) 2. Déborder l'input du programme jusqu'à le faire crasher ("input cramming") Un nombre variable de 'A' Observer le "coredump" en cherchant des 'A' Exemple : EIP = 41414141 (Yeh!!) ESP = 00F4106C Déduction : distance à la pile 3. Repérer les différents éléments de la pile 10

Difficultés de réalisation d'une exploitation Quel code insérer? Doit être court (ne) Doit permettre à l'attaquant de gagner accès au système Solution typique : exécuter une fonction du système pour partir un "shell" créer un usager lancer/arrêter un service Problème : limiter par les droits d'accès du programme original Où faire pointer le pointeur de retour? La distance entre le début du tampon et le pointeur de retour n'est pas nécessairement Solution : traîneau de NOPs ("NOP sleds") Comment éviter la détection automatique? Polymorphisme du code et des traîneaux de NOP 11

Contre-mesures contre les débordements de tampon VÉRIFIER LE REMPLISSAGE DES TAMPONS!!!! Éviter l'utilisation de fonctions vulnérables Faire le remplissage caractère par caractère getchar() condition frontière DANS TOUS LES LANGAGES!! Utilisation de IDS Traîneaux de NOP Paquets excessivement longs Chaînes dans les charges payantes ("payloads") typiques, p.ex. "/bin/sh" Compilateurs et OS Connu et disponible Canaris (StackGuard) Stocker les pointeurs de retour en dehors de la pile (StackShield) Espace mémoire non-executable Solaris HP UX, Rustine pour Linux Win XP SP2 avec certains proceseeurs Possible mais pas développé Changer la direction de remplissage de la pile?? Effacer le contenu de la pile avant le retour de fonction Outils automatisés analyse syntactique de code source "Vulnerability scanners" 12

Attaques par fuite de mémoire Conditions de base Une variable "sensible" est allouée en mémoire (e.g. mot de passe) Lorsque le code est terminée l'espace mémoire n'est pas mis à zéro Lors d'une deuxième invocation ou via un autre programme la valeur de la variable sensible peut être obtenue en examinant la mémoire Exemples d'utilisation Par examen des "page file" résidant sur le disque dur Espace tampon des dispositif de réseau Prévention Utilisation de destructeurs 13

Au delà du débordement de tampon Format String Vulnerabilities Utilise la fonction printf de C/C++ printf ("%s", buffer) bonne utilisation printf (buffer) - mauvaise utilisation La directive printf(" %n ",, &variable) permet d'écrire dans la variable le nombre de caractère imprimé On insère dans le tampon accessible à l'utilisateur une "format string" buffer = " code %n " (addrese stack) Contre-mesures Toujours inclure une chaîne de formatage dans les invocations de printf Éviter d utiliser printf (plus vraiment nécessaire aujourd hui) 14

Protection de la mémoire Problème Éviter que certaines parties de la mémoire soit accédées Il est difficile pour le SE (machine de registre) de savoir ce qui est mémoire légitime en run-time Mesures de protection possibles: Registre "frontière" Registres de base et de limite Mémoire avec étiquettes ("tags") Segmentation Pagination Pagination plus segmentation 15