Sécurité OS et logiciels Flashcards

1
Q

Donnez quelques types de vulnérabilités du système

A
  • Défaut (bug, programme ne fait pas ce qu’on lui demande de faire)
  • Défaillance (fait ce qu’il à été spécifié, mais conséquence non prévues)
  • Défaut de sécurité ( programme à un défaut qui à des conséquences du point de vue de la sécurité)
  • Défaillance de sécurité ( programme fait ce qu’il est spécifié mais modèe de sécurité inexistant ou fait défaut)
  • le programme est bien construit, mais il a un comportment non prévu qui a des conséquence en terme de sécurité (mal conçu)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quel est la dichotomie d’une attaque par exploitation?

A

1) Le système ciblé fourni un service avec une interface accessible à l’attaquant. (accès physique, 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é (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é 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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Qu’est qu’une attaque de débordement sur les variables ( buffer overflow)?

A

Une variable “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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

où sont stocker les variables local?

A

la pile (stack)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Qu’est-ce qu’une attaque par débordement de la pile ( stack-based buffer overflow)

A
  • Après le retour de la fonction, les variables locales ne sont pas éffacées.
  • le code machine est inséré dans le tampon est 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 retourn et continue l’exécution à l’endroit indiqué
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quels sont les fonctions vulnérables en c/c++?

A
  • fgets
  • gets
  • getws
  • memcpy
  • memmove
  • scanf
  • sprintf
  • strcat
  • strcpy
  • array à allocation dynamique
  • pointeurs
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Cmment trouver les vulnérabilités de débordements?

A

Force brute:
- obtenir programme compilé puis déborder l’input du programme jusqu’à le faire crasher (“input cramming”)(nombre variable de A, observer le coredump en cherchant des A, capable de get la distance à la pile)
puis récupérer les différents éléments de la piles

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Quel code insérer pour réaliser une exploitation?

A
  • Doit être court
  • 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 et lancer/arrêter un service.
    Par contre, limité par les droits d’accès du programme original
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Où faire pointer le pointeur de retour du code d’exploitation?

A
  • La distance entre le début du tampon et le pointeur de retour n’est pas nécessairement connue
  • solution utiliser traineaux de NOPs (“NOP sleds”)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qu’est-ce qu’un NOP sled?

A

une séquence d’instruction NOP ( no-operation) pour “slider” l’instruction du CPU à sa fin.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Comment éviter la détection automatique de code?

A

Polymorphisme du code et traîneaux de NOP

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

qu’est-ce qu’est le return oriented programming (ROP)

A

(attaque avancés)

  • Rechercher des gadgets tel que des petits bouts de code dans le processus suivi d’une instruction de retour
  • En enchaînant ces derniers, on créé notre “payload” malveillant et l’on peut effectuer une attaque sans insérer du coder à exécuter
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Quels sont les contre-mesure contre les débordements de tampon?

A
  • vérifier le remplissage des tampons(éviter utilisation de fonctions vulnérables, faire remplissage cractère par caractère (getchar(), condition frontière) dans tous les langages
  • Utilisations des ids (traineaux de NOP, paquets excessivement longs, chaines dans la charges payantes (payloads) typiques tel que “/bin/sh”
  • Compilateurs et OS ( connu et disponible: stocker les pointeurs de retour en dehors de la pile, espace mémoire non exécutable(ROM),
    possible, pas développé : changer la direction de remplissage de la pile, effacer le contenue de la pile dans le retour de fonction)
  • Outils automatisé : analyse syntactique de code source, “vulnerability scanners”
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Quels sont les contre mesures contre le débordements de tampon de Windows?

A

DEP: Data execution Prevention, marque le stack comme non exécutable, contournmenent avec attaques ROP
ASLR : Adress Space layout Randomization, Modifie de façon aléatoire les adresses de librairies et fonctions, ASLR et DEP doivent être combinés afin d’obtenir une protection adéquate

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Qu’est-ce qu’une attaque par fuit de mémoire (memory leak)?

A
  • Une variable sensible est allouée en mémoire ( ex. 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Comment prévenir les memory leaks?

A

Utilisateur des destructeurs, free etc

17
Q

Donnez un exemple d’une attaques par fuite de mémoire

A

Heartbleed : faille important de sécurité dans la librairie OpenSSL, utilisée dans l’implémentation de TLS (connexion par https)
Requête au serveur avec une longueur supérieur à la ressource -> permet de recevoir de l’information en mémoir du serveur

18
Q

Qu’est-ce que le format string vulnerabilities?

A

Utilise la fonction printf de c/c+, insérer dans le tampon accessible à l’utilisateur une “format string” tel que %n

19
Q

Quels sont les contre mesures contre les format string vulnerabilities?

A

Toujours inclure une chaîne de formatage dans les invocations de printf, éviter d’utiliser printf( pls vraiment nécessaire aujourdhui)