Archeologie expérimentale, installer une debian 1.3

aryliin

26 novembre 2019

Sur les traces des géants : Pour suivre les traces d'Aleph One, nous installons un système de l'époque, une debian 1.3, dans une machine virtuelle.

L’autre jour, je me suis demandée comment configurer une machine pour mes étudiants afin qu’ils puissent suivre pas à pas l’article Smashing the Stack for Fun and Profit, sans se prendre la tête. Le but étant de comprendre la base des buffer overflows, toutes les protections existantes de nos jours sur nos OS modernes ne font que rajouter du bruit.

Une des solutions que j’ai envisagé était d’installer un vieil OS dans une machine virtuelle. Comme à l’époque, en 1996… J’aurais pu installer une Debian 1.1 Buzz ou une Slackware 3.1. J’ai préféré prendre la Debian 1.3 Bo, sortie peu de temps après (juin 1997), mais dont il est possible de trouver un iso sur internet.

Logo debian de 1997

Logo debian de 1997

Sur le papier, c’est bien, mais dans la réalité, on fait comment ?

Dans cet article, nous allons installer debian 1.3 sur Virtualbox 6.0. On considère que vous savez créer des VM et installer des systèmes habituels. On va donc se concentrer sur les subtilités.

Gestion des disques durs

debian 1.3 ne disposant pas de drivers pour les disques durs SATA (ils ont été inventés en 2003), il faut commencer par créer un disque dur IDE spécialement pour recevoir l’installation.

Dans la configuration de votre VM, menu Stockage. Cliquez droit sur Contrôleur: IDE. Cliquez sur Ajouter un disque dur.

Virtualbox

Virtualbox

Cliquez ensuite sur Créer un nouveau disque.

Choix de la sorte de disque à créer

Choix de la sorte de disque à créer

Comme nous avions choisi IDE lors du clic-droit, la suite ne change pas par rapport à la création d’un disque dur classique dans VirtualBox… Choisissez type de fichier VDI (par défaut), appuyez sur Suivant.

Type de fichier

Type de fichier

Nous choisissons de faire un disque dynamiquement alloué, pour que l’espace ne se remplisse qu’au fur et à mesure de l’utilisation du disque. Appuyez sur Suivant.

Forme de stockage

Forme de stockage

Maintenant, il faut choisir la taille du disque dur. debian, dans sa version 1.3, requiert 40MB de disque dur ! 😅 Vous pouvez vous amuser à réduire la taille, ou laisser celle par défaut, et appuyer sur Créer.

Emplacement et taille du disque

Emplacement et taille du disque

Vous avez à présent votre disque dur IDE. Si votre VM a déjà un disque dur SATA, faites un clic droit sur ce disque, et cliquez sur supprimer le périphérique.

liste des périphériques

liste des périphériques

Création d’une disquette

Parce que le gestionnaire de boot de l’époque, lilo, est tatillon sur la taille des cylindres du disque dur et que VirtualBox n’a pas l’air de le gérer, on va utiliser, comme à l’époque, une disquette de boot. Techniquement, nous allons créé ici le lecteur et sa disquette, le côté boot sera fait à l’installation.

Dans les paramètres de votre machine, menu Stockage. Faites un clic droit dans la zone blanche, sous Contrôleur : SATA, et cliquez sur Ajouter un contrôleur de disquette. Un nouveau contrôleur apparait dans l’interface, nommé Contrôleur : Floppy.

Ajout de disquette

Ajout de disquette

Appuyez sur le petit + a côté du Contrôleur : Floppy.

On vous demandera alors si vous voulez choisir une disquette ou laisser le lecteur vide. Cliquez sur Choisir un disque.

Choix de la disquette

Choix de la disquette

Vous arriverez dans une interface de gestion de disques. Créer une nouvelle disquette en cliquant sur Créer.

Création de disquette

Création de disquette

Pour créer une disquette vierge, laisser le tout tel quelle et cliquez sur Create.

Création de disquette vierge

Création de disquette vierge

Maintenant qu’elle est créée, on va l’insérer dans le lecteur. Sélectionnez-la et cliquez sur choisir.

Selection de la disquette

Selection de la disquette

Fermez la configuration en cliquant sur OK.

Installation

Un iso de debian 1.3 est disponible sur archive.org. Téléchargez-le et booter dessus.

Logo actuel (2019)

Logo actuel (2019)

Au démarrage, debian vous souhaite la bienvenue. Appuyez sur la touche Entrée.

Démarrage

Démarrage

En 1997, tout le monde ne disposait pas forcement d’un écran couleur. Celui-ci était d’ailleurs cathodique… Et c’était pris en compte par l’installeur ! Il vous propose donc de choisir entre couleur et noir et blanc avant de continuer. Appuyez sur C car vous avez surement un écran couleur, puis sur Entrée.

Choix de la couleur

Choix de la couleur

Et vous arrivez au (pré) vingt-et-unième siècle… Vérifiez que vous êtes bien sur Next et appuyez sur Entrée.

En couleur

En couleur

Appuyez sur Entrée.

Release Notes

Release Notes

Vous arrivez dans l‘installeur. Appuyez sur Entrée pour configurer votre clavier.

Configuration

Configuration

Nous sommes en France, nous utilisons un clavier français. Il faut descendre avec les flèches jusqu’à la ligne fr-latin1 et appuyer sur Entrée.

Choix du clavier

Choix du clavier

Retour à l’écran de l’installeur. La prochaine étape est le partitionnement du disque. Appuyez sur Entrée.

Configuration

Configuration

Le disque dur que vous avez précédemment créé est sélectionné, puisque c’est le seul disque dur du système. Il s’agit de /dev/hda. Appuyez sur Entrée.

Sélection du disque dur

Sélection du disque dur

Les exigences minimales du système préconisent l’utilisation de 4Mo de RAM, avec 40Mo de disque dur, 300Mo si l’on compte installer l’intégralité des paquets disponibles. Je suppose que c’est largement bon pour vous 😜.

Nous allons donc suivre ces recommandations, en créant une partition Linux de 500Mo, et une SWAP de 8Mo.

Le logiciel de partitionnement cfdisk est tout récent. La version 0.8 n’a que 5 ans. 22 ans après, on s’en sert encore.

Celui-ci vous permet de partitionner le disque dur. Déplacez avec les flèches directionnel le curseur sur [New] et appuyez sur Entrée.

interface de cfdisk

interface de cfdisk

On commence par créer une partition primaire [Primary]. Pour cela, il suffit d’appuyer sur Entrée.

Primary

Primary

Entrez 500 (à l’époque, c’était évidement des Mo) et appuyez sur Entrée.

Taille de la partition

Taille de la partition

Mettre la partition en début de l’espace disponible, pour cela, le curseur doit se trouver sur [Beginning], et appuyez sur Entrée.

Choix de l’emplacement

Choix de l’emplacement

Pour créer la SWAP, on va procéder de la même manière que précédemment. On se place sur l’espace libre en utilisant les flèches, puis on sélectionne [New], et on appuie sur Entrée.

Nouvelle swap

Nouvelle swap

Toujours partition Primaire, en sélectionnant [Primary] et en appuyant sur Entrée.

Partition primaire

Partition primaire

On met la taille : 8 (toujours des Mo 😉), et on appuie sur Entrée.

Taille de la swap

Taille de la swap

Et on demande que la partition soit placée à la suite de l’autre, au début de la partie libre, en sélectionnant [Beginning]. Appuyez sur Entrée.

Partition en début de zone libre

Partition en début de zone libre

Cette partition est différente de la partition précédente, il s’agit d’une SWAP. Il faut donc déplacer le curseur sur Type et appuyer sur Entrée afin de définir son type.

Liste des partitions

Liste des partitions

Pour renseignez Linux Swap, renseignez 82, et appuyez sur Entrée.

SWAP type

SWAP type

Maintenant que les deux partitions sont faites, décalez le curseur sur [Write], et appuyez sur Entrée afin de valider la création de la partition.

Création de la partition

Création de la partition

On vous informe que vous êtes sur le point de réécrire la table des partitions et que cela peut effacer des données sur le disque dur. Comme notre disque est vierge, aucun soucis. Tapez yes et appuyez sur Entrée.

Message d’avertissement

Message d’avertissement

Votre table de partition est désormais écrite, vous pouvez quitter cfdisk, pour cela, déplacez le curseur sur Quit et appuyez sur Entrée.

Quitter cfdisk

Quitter cfdisk

Maintenant que vos partitions sont faites, il s’agit de définir le système de fichier et les points de montages. Appuyez sur Entrée.

Initialisation des partitions linux

Initialisation des partitions linux

Le système de fichier de l’époque est ext2 (ext3 arrivera en 2001). Sélectionnez votre partition /dev/hda1, et appuyez sur Entrée.

ext2

ext2

L’installeur propose de parcourir le disque à la recherche de secteurs défectueux (les badblocks). On va le laisser faire, vu la taille de la partition, ça ne sera pas long. Sélectionnez Yes et appuyez sur Entrée.

Recherche de badblocks

Recherche de badblocks

Le système vous prévient alors que formater la partition en ext2 va effacer les données présentes dessus. Laissez sur Yes et appuyez sur Entrée.

Confirmation

Confirmation

Il va falloir attendre un petit moment… Vous allez ensuite configurer le point de montage racine. Comme vous n’avez qu’une seule partition, vous n’avez rien à choisir. Appuyez sur Entrée.

root Filesystem

root Filesystem

Nous allons ensuite initialiser la SWAP.

Initialisation de la swap

Initialisation de la swap

Cela se passe de la même manière que précédemment ; sélection de /dev/hda2, recherche de badblocks, avertissement d’effacement de données.

Maintenant que votre système de fichiers est en place, l’installation du noyau peut commencer. Appuyez sur Entrée.

Menu - copie

Menu - copie

Vous devez sélectionner le périphérique contenant les fichiers. Sélectionnez cdrom et appuyez sur Entrée.

choix cdrom

choix cdrom

Il faut ensuite choisir périphérique correspondant au cdrom. Contrairement à ce que VirtualBox vous affiche ; second disque du premier contrôleur, on est en fait sur le premier disque du second contrôleur. On choisit /dev/hdc on appuie sur Entrée.

Choix de l’interface

Choix de l’interface

On vous demande ensuite d’insérer le cdrom, ce qui est déjà fait, appuyez sur Entrée.

Insérer le cdrom

Insérer le cdrom

Ensuite, il faut choisir le répertoire contenant les fichiers permettant d’installer le noyau et ses modules. On garde ce qui est sélectionné par défaut, default et on appuie sur Entrée.

Selection dépot

Selection dépot

L’installation du noyau et des modules faites, il faut ensuite sélectionner les drivers. Appuyez sur Entrée.

drivers

drivers

Nous n’installerons rien, après tout, nous ne voulons que faire un buffer overflow. Sélectionnez Exit et appuyez sur Entrée.

Sélection des catégories

Sélection des catégories

Nous allons maintenant installer le système de base. Sélectionnez Install the Base System et appuyez sur Entrée.

Installation de la base

Installation de la base

Sélectionnez le cdrom et appuyez sur Entrée.

choix du média

choix du média

Sélectionné le périphérique correspondant à votre cd-rom, /dev/hdc et appuyez sur Entrée.

choix du périphérique

choix du périphérique

L’installeur vous demande d’insérer le disque, ce qui est déjà fait. Appuyez sur Entrée.

Inserez le disque

Inserez le disque

Il vous demande ensuite où se situe le fichier base1_3.tgz. Il se situe dans le répertoire default. Appuyez sur Entrée.

Default

Default

Nous allons ensuite configurer la localisation. Sélectionnez Configure the Base System et appuyez sur Entrée.

Configuration du système

Configuration du système

Il faut définir le fuseau horaire. Nous sommes en France, donc tapez Europe et appuyez sur Entrée.

timezone 1

timezone 1

Tapez ensuite Paris et appuyez sur Entrée.

Timezone2

Timezone2

Le système vous demandera si l’horloge interne est GMT ou locale, et donc s’il doit appliquer un delta pour connaître l’heure. Tapez n et appuyez sur Entrée.

GMT ?

GMT ?

Enfin, la dernière étape est de rendre le tout bootable.

Comme on vous l’avait annoncé, Lilo, le gestionnaire de boot de l’époque est très capricieux… Nous n’allons donc pas l’installer sur le disque dur, mais créer une disquette de boot qui nous permettra de démarrer, et qui sera beaucoup plus simple.

Sélectionnez de Make a Boot Floppy et appuyez sur Entrée.

Création de disquette

Création de disquette

On vous demandera d’insérer la disquette, ce qui est déjà fait. Appuyez sur Entrée.

Inserer la diquette

Inserer la diquette

Attendez que la disquette soit faite.

Création de la disquette

Création de la disquette

Pour finir, il faut rebooter le système, en sélectionnant Reboot The System et en appuyant sur Entrée.

Reboot

Reboot

Un message vous indique que vous devez avoir un média bootable pour pouvoir démarrer le système. Appuyez sur Entrée.

Reboot

Reboot

Premier boot

Afin de démarrez sur la disquette, lors du démarrage, appuyez sur f12 pour configurer l’amorçage.

Démarrage de Virtualbox

Démarrage de Virtualbox

Appuyez sur f pour sélectionner la disquette.

Démarrage sur disquette

Démarrage sur disquette

Après quelques secondes de démarrage, le système vous demandera un nouveau mot de passe root.

Mot de passe root

Mot de passe root

Puis le nom du nouvel utilisateur.

User

User

Ainsi que son mot de passe.

mot de passe

mot de passe

Enfin, toutes les informations relatives à cet utilisateur.

User info

User info

Le système vous demandera ensuite s’il faut sécuriser les mots de passe via shadow.

À l’époque, la tradition est encore forte de tout stocker dans /etc/passwd. Or, ce fichier est lisible par pas mal de programme, dont le serveur web, d’où les attaques par directory traversal pour aller lire ce fichier (encore aujourd’hui, les auditeurs cherchent à l’afficher).

Pour protéger les mots de passes, l’idée révolutionnaire est alors de les stocker dans un autre fichier, /etc/shadow, qui, lui, n’est pas lisible par tout le monde. C’est toujours le cas aujourd’hui.

Appuyez sur Entrée.

Shadow Password

Shadow Password

Ensuite, le système vous préviendra qu’il installera dselect, un logiciel permettant de choisir des paquets debian à installer sur le système (apt n’arrivera qu’en 1998). Appuyez sur Entrée.

installation de deselect

installation de deselect

Je vous laisse parcourir les paquets afin de déterminer lesquels vous avez besoin. Dans mon cas, j’ai juste sélectionné [Q]uit et appuyé sur entrée.

Quitter dselect

Quitter dselect

Et, après tant d’efforts, vous pouvez (enfin) vous connecter sur votre système tout beau et (presque) tout neuf !

Premier login

Premier login

Comme vous pourrez le voir, votre linux est quasi vide. N’hésitez pas à utiliser dselect pour ajouter ce qu’il vous manque (emacs et vim existent déjà, eux). Par contre, il faudra, à chaque fois, lui rappeler d’utiliser le cdrom comme source de paquet (à moins d’avoir un dépôt FTP d’époque…).

Pour aller plus loin

Les arsouyes à l’INSA

30 octobre 2019 Après une semaine en famille à Bourges où nous avons donné un cours sur la sécurité des applications, voici nos supports de cours.

Cloner un disque dur sous Ubuntu

4 novembre 2019 Que ce soit suite à l'achat d'un nouveau disque, dans le but de faire une sauvegarde, ou pour tout autre raison, vous souhaitez copier à l'identique le contenu d'un disque dur ou d'une clef USB. Mais, comme on n'est jamais trop prudent, le mieux est de s'assurer de ne rien toucher à l'original. On vous montre comment faire avec Ubuntu.

Smashing the Stack for Fun and Profit

Traduction de Slash du texte mythique, présente de manière pédagogique la création d’un shellcode.

Smashing the Stack for Fun and Profit

Traduction de Bidibulle du texte mythique, présente de manière pédagogique la création d’un shellcode.