INGI 2591 : Détection d’intrusion David Dal Zot (INFO23) Benjamin Gigot (INFO23) Xavier Lerot (INFO23) Benjamin Tillier (INFO23) RACE CONDITION.

Slides:



Advertisements
Présentations similaires
Didacticiel Mon EBSCOhost
Advertisements

La boucle for : init7.c et init71.c
Module 5 : Implémentation de l'impression
Formation universitaire à .NET: Introduction à C#
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
Mémoire & Processus Cours SE - SRC
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Initiation au système d’information et aux bases de données
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Les bases de l’Algorithmique
CPI/BTS 2 Programmation Web Introduction au PHP
To Tune or not to Tune? To Tune or not to Tune? A Lightweight Physical Design Alerter Costa Jean-Denis Le Yaouanc Aurélie Mécanismes de SGBD 2007.
Etude des Technologies du Web services
Structures de données linéaires
Recherche avancée multi-champs EBSCOhost
Algorithmique et Programmation
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
Course Critique Race Condition
28 novembre 2012 Grégory Petit
Introduction à la structuration des documents: les techniques M2: Gestion des connaissances.
Introduction à la programmation (Java)
Le langage ASP Les formulaires avec Request. Les formulaires sont employés pour transmettre des informations saisies par un client à une application Web.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Module 2 : Préparation de l'analyse des performances du serveur
- GRAPHES - Composantes et types
8PRO107 Éléments de programmation
Sémantique dénotationnelle
Duel gardien de but / tireur
D1 - 09/06/2014 Le présent document contient des informations qui sont la propriété de France Télécom. L'acceptation de ce document par son destinataire.
RE161 IDS : Intrusion Detection System Le trafic habituel qui entre dans votre réseau sert à : Résoudre des requêtes DNS Accéder à des pages web La messagerie.
Pour le chemin le plus court pour tous les couples
IDS / IPS Réalisée par : Aissa Marwa Allouche Awatef Filali Sameh
Utilisation avancée de linux
Projet Télédétection Vidéo Surveillance Deovan Thipphavanh – Mokrani Abdeslam – Naoui Saïd Master 2 Pro SIS / 2006.
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Exploration de la programmation android Formation Assurer par: Club FreeWays Réalisé par: BOUHJJA Lamia.
Denial of Service and Distributed Denial of Service
PHP 5° PARTIE : LES COOKIES
JavaScript.
GESTION ET TRAITEMENT DES ERREURS
Scripts shell intro Un script bash est un fichier contenant une suite de commandes shell, exécutables par l'interpréteur (ici le programme /bin/bash),
Argc et argv Utilisation des paramètres de la ligne de commande.
Créer des packages.
 Objet window, la fenêtre du navigateur
Séminaire INGI 2591 Attaques Web Accardo Nicolas Blerot Olivier Couvreur Pascal Depry Fabian.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Système d’exploitation 2 Unix User
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Back Orifice Scénario en 3 étapes - Préparation & envoi - Infection & Installation - Prise de contrôle - Détections Possibles - Net-Based - Host-Based.
Utilisation avancée de linux Réseau Démarrage et arrêt.
Auvray Vincent Blanchy François Bonmariage Nicolas Mélon Laurent
INGI 2591 : Détection d’intrusion RACE CONDITION.
Les sockets.
Méthodes et outils de conception Introduction à la programmation Paramètre de retour Appel d’une fonction Portée des variables Définition Pourquoi les.
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
Groupe 7: Remote Buffer Overflow. Attaque sur lpd, démon de l’imprimante. Berteletti Elia, ELEC23 Bodart Jerome, INFO 23 Depoterre Jean-Charles, INFO23.
Cours LCS N°4 Présenté par Mr: LALLALI
Algorithmique et programmation en
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Séminaire INGI 2591 Attaques Web Accardo Nicolas INFO 22 Blerot Olivier INFO 22 Couvreur Pascal INFO 22 Depry Fabian INFO 23.
 Formulaires HTML : traiter les entrées utilisateur
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
FORMATION Unix/Linux CHAPITRE 5 : Gestion des Droits.
Scripts et fonctions Instructions de contrôle
Exemple d’utilisation de l’outil de profilage prof La commande prof de Unix.
Exception Handling "Unfortunately, it's almost accepted practice to ignore error conditions, as if we're in a state of denial about errors." Bruce Eckel.
Comment choisir son MCU (ou autre DSP, FPGA …) ?
Chapitre 9 Configuration de Microsoft Windows XP Professionnel pour fonctionner sur des réseaux Microsoft Module S41.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
Transcription de la présentation:

INGI 2591 : Détection d’intrusion David Dal Zot (INFO23) Benjamin Gigot (INFO23) Xavier Lerot (INFO23) Benjamin Tillier (INFO23) RACE CONDITION

INGI 2591 : Détection d’intrusion Détection de l’attaque Stratégie 1 : Détection sur le réseau : Surveillance des mails voyageant sur le réseau Stratégie 2 : Détection Locale : Détection d’un comportement suspect du système Conclusion Détection de l’attaque Stratégie 1 : Détection sur le réseau : Surveillance des mails voyageant sur le réseau Stratégie 2 : Détection Locale : Détection d’un comportement suspect du système Conclusion

INGI 2591 : Détection d’intrusion Première idée User 5000 tried to run dev 770 ino in place of dev 770 ino ! (Filename of set-id script was./cbnqiugzadfbli, uid 5000 gid 5000.) Sincerely, Perl Première idée User 5000 tried to run dev 770 ino in place of dev 770 ino ! (Filename of set-id script was./cbnqiugzadfbli, uid 5000 gid 5000.) Sincerely, Perl

INGI 2591 : Détection d’intrusion Caractéristiques de l’attaque (1) SUIDPERL Possède les droits suid root Détecte le changement de fichier Envoie un mail au root comportant le nom du fichier fautif PASSWD Possède les droits suid root N’importe quel programme suid root peut convient Script Perl Simple script perl Caractéristiques de l’attaque (1) SUIDPERL Possède les droits suid root Détecte le changement de fichier Envoie un mail au root comportant le nom du fichier fautif PASSWD Possède les droits suid root N’importe quel programme suid root peut convient Script Perl Simple script perl

Caractéristiques de l’attaque (2) /bin/mail Parse le mail exécute les commandes précédées par ~! Envoie le mail Bighole et Sush Nous permettent de lancer un terminal root Doivent obtenir les droits root Caractéristiques de l’attaque (2) /bin/mail Parse le mail exécute les commandes précédées par ~! Envoie le mail Bighole et Sush Nous permettent de lancer un terminal root Doivent obtenir les droits root INGI 2591 : Détection d’intrusion

Surveillance de la correspondance de SUIDPERL Nous essayerons donc d’intercepter les mails passant sur le réseau avec l’aide de Snort (qui se base sur la détection de chaînes de caractères bien précises) afin de détecter une éventuelle attaque. Surveillance de la correspondance de SUIDPERL Nous essayerons donc d’intercepter les mails passant sur le réseau avec l’aide de Snort (qui se base sur la détection de chaînes de caractères bien précises) afin de détecter une éventuelle attaque.

INGI 2591 : Détection d’intrusion Reconnaissance du mail envoyé par SUIDPERL User 5000 tried to run dev 770 ino in place of dev 770 ino 24935! (Filename of set-id script was./cbnqiugzadfbli, uid 5000 gid 5000.) Sincerely, Perl Reconnaissance du mail envoyé par SUIDPERL User 5000 tried to run dev 770 ino in place of dev 770 ino 24935! (Filename of set-id script was./cbnqiugzadfbli, uid 5000 gid 5000.) Sincerely, Perl

INGI 2591 : Détection d’intrusion Reconnaissance du mail envoyé par SUIDPERL (1) En-tete du mail Détection de l’expéditeur de du destinataire : difficilement faisable car peut varier d’un système à l’autre. Reconnaissance du mail envoyé par SUIDPERL (1) En-tete du mail Détection de l’expéditeur de du destinataire : difficilement faisable car peut varier d’un système à l’autre.

INGI 2591 : Détection d’intrusion Reconnaissance du mail envoyé par SUIDPERL (2) Corps du mail User 5000 tried to run dev 770 ino in place of dev 770 ino 20935! (Filename of set-id script was./cbnqiugzadfbli, uid 5000 gid 5000.) Sincerely, Perl 1. Toutes les chaînes de caractères en gras doivent se trouver dans le mail, 2. Dans le bon ordre, 3. Excepté un certain nombre d’entiers, et le nom du fichier, le mail ne contient rien d’autre. Reconnaissance du mail envoyé par SUIDPERL (2) Corps du mail User 5000 tried to run dev 770 ino in place of dev 770 ino 20935! (Filename of set-id script was./cbnqiugzadfbli, uid 5000 gid 5000.) Sincerely, Perl 1. Toutes les chaînes de caractères en gras doivent se trouver dans le mail, 2. Dans le bon ordre, 3. Excepté un certain nombre d’entiers, et le nom du fichier, le mail ne contient rien d’autre.

INGI 2591 : Détection d’intrusion Probabilité de fausses alertes Le bon sens nous pousse à croire que les critères ci-dessus sont suffisamment précis pour identifier de manière pratiquemment infaillible un mail qui nous intéresse. Probabilité de fausses alertes Le bon sens nous pousse à croire que les critères ci-dessus sont suffisamment précis pour identifier de manière pratiquemment infaillible un mail qui nous intéresse.

INGI 2591 : Détection Réseau Mise en œuvre de la détection Critère {1} : l ’en-tête du mail : - règles de réécritures : root --> - varie d’un système à l’autre Mise en œuvre de la détection Critère {1} : l ’en-tête du mail : - règles de réécritures : root --> - varie d’un système à l’autre

INGI 2591 : Détection Réseau Mise en œuvre de la détection Critère {2} à {4} : Corps du mail User 5000 tried to run dev 770 ino in place of dev 770 ino 20935! (Filename of set-id script was./cbnqiugzadfbli, uid 5000 gid 5000.) Sincerely, Perl Mise en œuvre de la détection Critère {2} à {4} : Corps du mail User 5000 tried to run dev 770 ino in place of dev 770 ino 20935! (Filename of set-id script was./cbnqiugzadfbli, uid 5000 gid 5000.) Sincerely, Perl

INGI 2591 : Détection Réseau Mise en œuvre de la détection Critère {2} à {4} : dans snort : alert tcp any any <> $HOME_NET any (msg: "RC DETECT-SUIDPERL "; content:"User"; content:"tried to run" ; content:"ino"; content:"in place of dev"; content:"ino" ; content:" !" ; content:"(Filename of set-id script was./" ; content: "uid" ; content: "gid" ; content: ".)" ; content: "Sincerly,"; content "Perl" ;) Mise en œuvre de la détection Critère {2} à {4} : dans snort : alert tcp any any <> $HOME_NET any (msg: "RC DETECT-SUIDPERL "; content:"User"; content:"tried to run" ; content:"ino"; content:"in place of dev"; content:"ino" ; content:" !" ; content:"(Filename of set-id script was./" ; content: "uid" ; content: "gid" ; content: ".)" ; content: "Sincerly,"; content "Perl" ;)

INGI 2591 : Détection Réseau Mise en œuvre de la détection Critère {2} : OK Critère {3} : Respecté car mise en série des contents = AND dans le bon ordre Critère {4} : Non respecté (ne pas accepter de chaînes contenant d ’autres chaînes que la sus-citée) car méthode lourde et pas « temps-réel ». Mise en œuvre de la détection Critère {2} : OK Critère {3} : Respecté car mise en série des contents = AND dans le bon ordre Critère {4} : Non respecté (ne pas accepter de chaînes contenant d ’autres chaînes que la sus-citée) car méthode lourde et pas « temps-réel ».

INGI 2591 : Détection Réseau Analyse - Détection de l ’attaque : OK ( critères {2} et {3} ) - Non respect de {4} implique fausses alarmes (rares) - Non détection si mail ne passe pas sur le reseau Analyse - Détection de l ’attaque : OK ( critères {2} et {3} ) - Non respect de {4} implique fausses alarmes (rares) - Non détection si mail ne passe pas sur le reseau

Comportement caractéristique de notre attaque Boucle principale : ( ln -f -s $SUIDBIN "$FILENAME"; usleep $RANDOM; nice -n +20 $SUIDPERL./"$FILENAME" /dev/null & ( usleep $RANDOM; ln -f -s /dev/stdin "$FILENAME" ) &>/dev/null & Lancement en parallèle de 2 types de processus (composés eux- mêmes de 2 ou 3 processus séquenciels) : Comportement caractéristique de notre attaque Boucle principale : ( ln -f -s $SUIDBIN "$FILENAME"; usleep $RANDOM; nice -n +20 $SUIDPERL./"$FILENAME" /dev/null & ( usleep $RANDOM; ln -f -s /dev/stdin "$FILENAME" ) &>/dev/null & Lancement en parallèle de 2 types de processus (composés eux- mêmes de 2 ou 3 processus séquenciels) : INGI 2591 : Détection locale ln -f -s /bin/passwd "lien" suidperl "lien" usleep ln -f -s scriptperl "lien"

INGI 2591 : Détection locale Stratégie de détection On essayera donc de détecter un grand nombre de processus ln et suidperl ayant lieux dans un court laps de temps. Généralité de notre méthode Les attaques de type Race Condition on souvent la caractéristique commune d’appeler une grande quantité de processus ln. Notre système de détection sera donc en mesure de détecter ces attaques. Notre système ne détectera cependant pas les appels systèmes link. Stratégie de détection On essayera donc de détecter un grand nombre de processus ln et suidperl ayant lieux dans un court laps de temps. Généralité de notre méthode Les attaques de type Race Condition on souvent la caractéristique commune d’appeler une grande quantité de processus ln. Notre système de détection sera donc en mesure de détecter ces attaques. Notre système ne détectera cependant pas les appels systèmes link.

INGI 2591 : Détection locale Détection des processus en cours sur le système Première tentative avec ps, mais la durée de ln est trop courte donc difficilement détectable. De plus il faut en permanence aller détecter ‘regarder’ les processus en cours  Occupe beaucoup de ressources. Seconde tentative (et solution choisie) avec l’accounting : Service offert par unix A chaque fois qu’un processus se termine, une entrée est ajoutée au fichier de comptabilité spécifié. Cette solution permet un processus de détection plus léger et qui ne rate aucun processus. Mais elle ne permet pas de connaître les arguments et ne détecte les processus que lorsqu’ils sont terminés. Détection des processus en cours sur le système Première tentative avec ps, mais la durée de ln est trop courte donc difficilement détectable. De plus il faut en permanence aller détecter ‘regarder’ les processus en cours  Occupe beaucoup de ressources. Seconde tentative (et solution choisie) avec l’accounting : Service offert par unix A chaque fois qu’un processus se termine, une entrée est ajoutée au fichier de comptabilité spécifié. Cette solution permet un processus de détection plus léger et qui ne rate aucun processus. Mais elle ne permet pas de connaître les arguments et ne détecte les processus que lorsqu’ils sont terminés.

INGI 2591 : Détection locale Algorithme du programme de détection Création du fichier de comptabilité acct.log; Appel de la fonction acct avec l’argument acct.log; Ouverture de acct.log en lecture; do true -> s’endort pour une seconde; Lecture dans acct.log du nombre de ln (nbln) et SUIDPERL (nbSP) qui se sont terminés durant la dernière seconde; if (nbln > LN_MAX) -> if (nbSP > SP_MAX) -> Print(ALERTE : DETECTION ATTAQUE SUIDPERL); (nbSP Print(ALERTE : DETECTION ATTAQUE RACE CONDITION); fi od Algorithme du programme de détection Création du fichier de comptabilité acct.log; Appel de la fonction acct avec l’argument acct.log; Ouverture de acct.log en lecture; do true -> s’endort pour une seconde; Lecture dans acct.log du nombre de ln (nbln) et SUIDPERL (nbSP) qui se sont terminés durant la dernière seconde; if (nbln > LN_MAX) -> if (nbSP > SP_MAX) -> Print(ALERTE : DETECTION ATTAQUE SUIDPERL); (nbSP Print(ALERTE : DETECTION ATTAQUE RACE CONDITION); fi od

INGI 2591 : Détection locale Ajustement de la sensibilité Cela se fait au moyen de constantes LN_MAX et SP_MAX. Au plus la valeur sera grande au plus on risque de rater une attaque, au plus la valeur sera petite au plus on risque de détecter une fausse attaque. Il convient donc de trouver un juste milieu. Typiquement Le nombre de proc. ln varie entre 120 et 3000 (600 en moyenne). Pour suidperl cela varie entre 60 et 1500 (300 en moyenne). On atteint en général 50 ln par seconde (en salle) et la moitié de suidperl. Nous avons fixé LN_MAX à 30 et SP_MAX à 15. Ajustement de la sensibilité Cela se fait au moyen de constantes LN_MAX et SP_MAX. Au plus la valeur sera grande au plus on risque de rater une attaque, au plus la valeur sera petite au plus on risque de détecter une fausse attaque. Il convient donc de trouver un juste milieu. Typiquement Le nombre de proc. ln varie entre 120 et 3000 (600 en moyenne). Pour suidperl cela varie entre 60 et 1500 (300 en moyenne). On atteint en général 50 ln par seconde (en salle) et la moitié de suidperl. Nous avons fixé LN_MAX à 30 et SP_MAX à 15.