3. CPU
Unité de contôle: Charger et décoder les instructions, charger
et stocker les données.
Unité de traitement: l'endroit d'exécution des instructions.
Les registres: cases mémoires internes au processeur.
Les flags : indicateur d'une panoplie d'évènement lors de
l'éxcution.
4. C'est quoi un
Buffer Overflow ?
Buffer : un buffer est un espace de donnée
temporaire dans la mémoire.
Buffer Overflow : un buffer overflow ou
dépassement du tampon survient lorsque la
taille de la donnée stockée dans le buffer
dépasse l'espace du buffer lui-même.
Ce phénomème agit sur les cases mémoires
adjacentes.
5. Les registres
EIP (Instruction Pointer): C'est un pointeur
contenant l'offset de la prochaine instruction à
exécuter.
ESP (Stack Pointer): Pointeur sur le sommet de
la pile.
EBP (Base Pointer): Sert à pointer sur une
donnée dans la pile.
6. Mémoire virtuelle
Chaque processus est aménagé dans le même
espace de mémoire virtuelle indépendamment
de l'emplacemnt de mémoire physique.
Chaque processus estime qu'il est seul dans le
système ; qu'il jouit de toute la mémoire et
qu'aucun autre processus n'existe.
L'OS et le CPU maintiennent cette abstraction.
11. Comment se protéger ?
Bon sens: Ecrire un code sécurisé en controlant la taille
des arguments que le programme accepte.
NX(Non Executable Memory): Les instructions contenues
dans la mémoire ne peuvent pas être exécutée.
ASLR(Address Space Layout Randomize) : A chaque
exécution, les zones mémoires allouées pour le
programme changent d'une façon aléatoire.
Stack Canaries: placer un int avant l'adresse RET ainsi
pour changer le RET(EIP) on doit changer la valeur de ce
int, une fois cette valeur est changée, le programme
s'arrétera.
12. Prochainement
Partie pratique : Remote Buffer Overflow.
Exploiter une faille buffer Overflow pour
contrôler un système complét.
____________________________ A suivre ...