Aller au contenu principal
own2pwn
C'est quoi un OS, vraiment ?

C'est quoi un OS, vraiment ?

Architecture generale d'un OS : role du kernel, espaces utilisateur et noyau, types de kernels (monolithique, micro, hybride) et notion de modules systemes charges a chaud.

Maxime J5 min de lecture

Un doute sur votre exposition ?

On audite votre surface d'attaque externe et on vous dit ce qui est exploitable.

Parler à un pentester

Prerequis

  • Comprehension basique de Linux
    • Shell
  • Programmation en C

Hello o/

L'Architecture Generale d'un OS

Imaginez un OS (Operating System) comme une grande ville. Les system calls (comme write(2) et ptrace(2)) sont les routes principales qui permettent aux utilisateurs d'interagir avec le systeme. Ces appels sont les portes d'entree vers les fonctionnalites du kernel.

Le Kernel : Le Programme Privilegie

Le kernel est le programme qui s'execute en premier sur votre machine. Il a tous les droits, accedant directement au hardware. Son binaire se trouve dans /vmlinuz ou /boot/vmlinuz.

Lors du demarrage, le kernel initialise le systeme et cree le premier processus : sur UNIX, c'est init, sur Linux, c'est systemd. Voici un petit extrait de code pour illustrer un syscall simple :

c
#include <unistd.h>

int main() {
    const char *msg = "Hello, OS!\n";
    write(1, msg, 13); // 1 est le file descriptor pour stdout
    return 0;
}

Gestion de la Memoire : Les Adresses Virtuelles

L'OS gere la memoire avec des adresses virtuelles. Pensez-y comme une bibliotheque ou chaque livre (processus) a sa propre etagere (espace virtuel). Le MMU (Memory Management Unit) et la TLB (Translation Lookaside Buffer) sont les bibliothecaires qui traduisent les demandes d'un livre en une adresse physique.

La gestion de la memoire se divise en deux : pagination et segmentation. La pagination decoupe la memoire en blocs, reduisant la fragmentation externe, tandis que la segmentation isole des parties d'un processus en segments distincts.

virtual-memory.txt
La MMU et la TLB traduisent les adresses virtuelles vers la memoire physique.

Securite et Privileges : Espace Kernel et Espace Utilisateur

L'espace kernel et l'espace utilisateur sont separes. L'utilisateur n'a acces a la memoire kernel que par des syscalls. Le kernel a tous les droits, tandis que l'utilisateur doit se contenter de permissions limitees. Par exemple, une fonction simple comme printf passe par write(2) :

c
#include <stdio.h>

int main() {
    printf("Hello, Kernel!\n"); // Appel indirect a write(2)
    return 0;
}
kernel-user-space.txt
L'espace utilisateur et l'espace kernel sont separes : les syscalls sont le seul pont.

Types de Kernels : Monolithique, Micro, Hybride

Voici les types principaux de kernels :

TypePrincipeExemple
MonolithicUn seul programme gere tout (drivers, FS, reseau...). Rapide, mais une faille dans un driver peut compromettre tout le kernel.Linux, BSD
MicroFonctionnalites minimales dans le kernel. Les autres services tournent en espace utilisateur. Plus sur, moins performant.Minix, QNX
HybrideSeparation entre services, mais tous accedent au kernel space. Compromis entre performance et isolation.Windows NT, macOS (XNU)

Pourquoi c'est important pour la securite ?

Un kernel monolithique comme Linux est plus expose : une vulnerabilite dans un driver (ex. un driver reseau bugue) peut donner acces a l'integralite du kernel. Dans un micro-kernel, la meme faille resterait confinee en espace utilisateur.

Modules Systeme : Chargement a Chaud

Le concept de modules systeme vient de Mach. Chaque couche / fonction / driver de l'OS est ecrit independamment, comme des briques dans un mur. Les modules Linux sont des file objects qui peuvent etre lies dynamiquement au runtime, que ce soit pendant le boot ou sur demande.

Pour charger un module a la volee :

bash
sudo modprobe nom_du_module

Pour lister les modules actuellement charges :

bash
lsmod
kernel-modules.txt
Les modules s'empilent sur le kernel de base et peuvent etre charges/decharges a chaud.

Conclusion

Voila, vous avez maintenant un apercu de l'architecture d'un OS. Les prochains articles iront plus loin sur la securite et la technique.

Merci pour votre lecture !

Veille sécurité

La suite, une fois par mois

Ce qui bouge vraiment sur la surface d'attaque externe, NIS2 et la sécurité applicative, écrit par le pentester qui signe ces articles. Un envoi par mois, désinscription en un clic.

Votre adresse ne sert qu'à cet envoi. Voir la politique de confidentialité.