La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "INGI 2591 : Détection d’intrusion David Dal Zot (INFO23) Benjamin Gigot (INFO23) Xavier Lerot (INFO23) Benjamin Tillier (INFO23) RACE CONDITION."— Transcription de la présentation:

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

2 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

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

4 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

5 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

6 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.

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

8 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.

9 INGI 2591 : Détection d’intrusion Reconnaissance du mail envoyé par SUIDPERL (2) Corps du mail User 5000 tried to run dev 770 ino 14479 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 14479 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.

10 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.

11 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 --> d.dupond@domain.com - 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 --> d.dupond@domain.com - varie d’un système à l’autre

12 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 14479 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 14479 in place of dev 770 ino 20935! (Filename of set-id script was./cbnqiugzadfbli, uid 5000 gid 5000.) Sincerely, Perl

13 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" ;)

14 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 ».

15 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

16 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"

17 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.

18 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.

19 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

20 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.


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

Présentations similaires


Annonces Google