Reconnaître ce qui ne devrait pas être là
Un processus est un programme en cours d’exécution, et un fichier suspect est un fichier qui n’a rien à faire à cet endroit. Pour les repérer, on compare ce que l’on voit avec ce que contient une machine saine.
Chez une comptable à Lille, le ventilateur tourne à fond sans raison. Un programme inconnu consomme tout. Il faut le trouver sans rien casser.
À la fin de cette leçon
Remarque
Je peux repérer un fichier ou un processus suspect.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Processus | un programme en cours d’exécution | |
| PID | le numéro d’identité d’un processus | 2210 |
| Processus parent | le processus qui en a lancé un autre | |
| Signature de fichier | les premiers octets d’un fichier, qui disent son type | |
| Extension | les lettres après le point dans un nom de fichier | .jpg |
| Récupération par signature | retrouver un fichier en cherchant son début et sa fin |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Lire un processus : numéro, parent, chemin
Chaque processus a un PID. Il a aussi un processus parent : celui qui l’a lancé. La liste des processus donne enfin le compte qui le fait tourner et la commande.
Un programme système connu vit dans un dossier système. Un programme qui se cache dans un dossier temporaire mérite un regard.
Exemple travaillé : une liste de processus
| PID | Parent | Compte | Commande | Verdict |
|---|---|---|---|---|
| 1 | 0 | root | /sbin/init | Normal : le premier processus |
| 412 | 1 | root | /usr/sbin/sshd | Normal : le service de connexion |
| 1380 | 1 | lea | /usr/bin/bash | Normal : un terminal |
| 2210 | 1 | lea | /tmp/sshd | Suspect : même nom, mauvais dossier |
| 2305 | 1 | www-data | /usr/sbin/nginx | Normal : le serveur web |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Le nom du premier processus de la machine
ps -o comm= -p 1Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Les premiers octets disent le vrai type
Un fichier commence presque toujours par quelques octets fixes : sa signature. Une image PNG commence par 89 50 4e 47. Un PDF commence par 25 50 44 46.
L’extension n’est qu’un morceau du nom. Quelqu’un la change en une seconde. La signature, elle, est dans le contenu.
Exemple travaillé : cinq signatures courantes
| Type | Premiers octets (hexadécimal) | Extension attendue |
|---|---|---|
| Image PNG | 89 50 4e 47 | .png |
| Image JPEG | ff d8 ff | .jpg |
| Document PDF | 25 50 44 46 | |
| Archive ZIP | 50 4b 03 04 | .zip |
| Programme Linux | 7f 45 4c 46 | aucune en général |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Fabriquer un faux jpg qui est un PNG
printf '\211PNG\r\n\032\n' > /tmp/photo.jpgAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lire les quatre premiers octets de ce fichier
head -c 4 /tmp/photo.jpg | od -An -tx1Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Erreur fréquente
Attention
Beaucoup de gens pensent qu’un fichier nommé photo.jpg est forcément une image JPEG. L’extension se change à volonté. Regardez les premiers octets : ils disent le vrai type.
Retrouver un fichier effacé par sa signature
Quand on supprime un fichier, ses octets restent souvent sur le disque jusqu’à ce qu’on les écrase. On peut les retrouver sans le nom : c’est la récupération par signature (carving en anglais).
On cherche la signature de début, puis la marque de fin. Tout ce qui est entre les deux, bornes comprises, est le fichier.
Exemple travaillé : découper une image JPEG
| Étape | Octets lus | Ce qu’on fait |
|---|---|---|
| 1 | 61 62 63 | Du bruit avant : on ignore |
| 2 | ff d8 ff | Signature de début : on commence ici |
| 3 | 78 79 7a | Le contenu de l’image |
| 4 | ff d9 | Marque de fin : on s’arrête après |
| 5 | 64 65 66 | Du bruit après : on ignore |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Voir ces octets sur un exemple
printf 'abc\377\330\377xyz\377\331def' | od -An -tx1Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.