[Forensic] Linux - Artefacts
Introduction
De nombreux artefacts sont consultables sur les systèmes Linux pour effectuer une analyse forensique.
Artefacts
Liste d'artefacts
Artefacts | Descriptions |
/etc/*-release | Informations sur l'OS et les numéros de version |
/etc/issue | Informations sur l'OS et les numéros de version |
/etc/issue.net | Informations sur l'OS et les numéros de version |
/etc/timezone | Fuseau horaire |
/etc/localtime | Fuseau horaire |
/etc/passwd | Comptes utilisateurs |
/etc/group | Groupes et membres |
/etc/shadow | Mots de passe hashés des comptes utilisateurs |
/etc/sudoers | /etc/sudoers.d | Politiques sudo |
/etc/fstab | Points de montages automatiques |
/etc/hostname | Nom d'hôte de la machine |
/etc/hosts | Résolution des noms de domaine |
/etc/network/interfaces | Configuration réseau |
/etc/resolv.conf | Configuration DNS |
/var/lib/networkmanager/internal | Dernière IP attribuée au système |
/var/lib/networkmanager/NetworkManager.state | Etat actuel du réseau, du wifi et de l'accès à internet sur le système |
/var/lib/networkmanager/seen-bssids | Enregistre les BSSID wifi vus, mais pas nécessairement connectés |
/var/lib/networkmanager/timestamps | Enregistre les baux DHCP |
/var/lib/dpkg/status | Journaux d'évènements du gestionnaire de paquets DPKG (Debian / Ubuntu) |
/var/lib/dpkg/status | Journaux d'évènements du gestionnaire de paquets RPM (Redhat) |
/var/lib/pacman/local | Journaux d'évènements du gestionnaire de paquets PACMAN (Arch Linux) |
/var/log/apt/history.log | Journaux d'évènements de ce qui a été installé avec le gestionnaire de paquets APT (Debian / Ubuntu) |
/var/log/apt/term.log | Enregistre les sorties de terminal des commandes d'installations avec APT (Debian / Ubuntu) |
/var/log/yum.log* | Contient les dates d'installation des paquets (Redhat) |
/var/log/dnf.log* | Contient les dates d'installation des paquets dans un format difficile à lire (Redhat) |
/var/log/dpkg.log* | Journaux d'évènements pour les paquets installés manuellement avec le gestionnaire de paquets DPKG (Debian / Ubuntu) |
/var/log/auth.log | Connexions utilisateurs. |
/var/log/btmp | Connexions échouées des utilisateurs. |
/var/log/faillog | Connexions échouées des utilisateurs. |
/var/log/dmesg | Périphériques matériels détectés par le kernel au démarrage. |
/var/log/journal/* | Logs systèmes et services (remplaçant de syslog) |
/var/log/lastlog | Dernières connexions pour chaque utilisateur. |
/var/log/syslog | Logs systèmes et services. |
/var/log/wtmp | /var/log/utmp | Connexions réussies des utilisateurs. |
Date d'installation du système
La méthode la plus sûre est de chercher la date de création du système de fichiers, en utilisant la commande suivante pour EXT4 :
tune2fs –l /dev/sdb2 | grep -i "created"
Et la commande suivante pour BTRFS :
btrfs subvol show /mnt/evidence/| grep -i "creation time"
Dernières extinctions
last -f /var/log/wtmp | grep shutdown
$PATH
Le $PATH contient les chemins vers tous les binaires exécutables. Vous pouvez afficher les chemins (chroot requis) :
echo $PATH
Vous pouvez aussi récupérer tous les binaires (applications), avec la commande suivante (chroot requis) :
for i in $(echo $PATH | tr -s ":" "\n"); do find $i/ -type f; done > apps.txt
Démarrages automatiques
Systemd
Vous pouvez consulter tous les fichiers .service ou .target ou .socket contenus dans les répertoires suivants :
- /etc/systemd/system/
- /usr/lib/systemd/system
- /lib/systemd/system/
Vous pouvez consulter les logs systemd dans le fichier /var/log/syslog .
Init
Sur les vieux systèmes, init était utilisé à la place de systemd. Les scripts exécutés au démarrage avec init sont situés dans /etc/init.d .
Cron
Les tâches crontab peuvent être vérifiées dans les répertoires suivants :
- /etc/crontab/
- /var/spool/cron/crontabs/
De plus, les tâches propres aux utilisateurs peuvent être consultées avec la commande suivante (chroot requis) :
crontab -l
Profils shells
Ces fichiers de profil sont en réalité des scripts bash qui s'exécutent au démarrage de la session de l'utilisateur, ils sont exécutés dans l'ordre suivant :
- /etc/profile
- ~/.bash_profile
- ~/.bash_login
- ~/.profile
GUI Startup Manager
Sur les environnements de bureau traditionnels (Gnome, KDE, XFCE), il est possible de configurer des applications de démarrage :
Vous pouvez les retrouver à l'emplacement ~/.config/autostart/ .
Logrotate
La configuration de Logrotate est disponible via le fichier /etc/logrotate.conf ou dans le dossier /etc/logrotate.d/ . Voici la configuration par défaut :
- weekly : rotation hebdomadaire.
- rotate 4 : conserve 4 cycle de rotation.
- create : un nouveau fichier vide après chaque rotation.
Voici un schéma explicatif du fonctionnement de Logrotate :
Une tâche cron exécute quotidiennement logrotate, celle-ci est disponible à cet emplacement /etc/cron.daily/logrotate .
Les status et horodatages des rotations sont disponible à cet emplacement /var/lib/logrotate/status .
Journaux d'évènements
Les logs au format texte sont en train d'être remplacés par des fichiers de base de données sur les systèmes Linux, ce qui les rend plus difficile à consulter.
Vous pouvez afficher les logins réussis avec l'horodatage pour les utilisateurs du système avec la commande suivante :
lastlog |pr -2 -t -s | column -t
Vous pouvez afficher les dernières connexions de l'utilisateur courant avec la commande suivante :
last -F
Vous pouvez consulter les logs d'un système distant avec journalctl :
journalctl --directory=/mnt/evidence/var/log/journal
Voici quelques options pour journalctl :
Commandes | Descriptions |
journalctl -o short | Affichage de l'horodatage par défaut [ex: Aug 03 02:43:12] |
journalctl -o short-full |
Affichage de l'horodatage au format ANSI [ex: Wed 2022-08-03 02:43:12] |
journalctl -o short-iso |
Affichage de l'horodatage au format ISO [ex:2022-08-03T02:43:12-0700] |
journalctl -o short-unix |
Affichage de l'horodatage au format Integer [ex: 1659519792.935000] |
journalctl -o verbose | Affiche le détail complets des champs |
journalctl --no-hostname | Enlève le champ du nom d'hôte pour améliorer la lisibilité |
journalctl -a | Affiche l'ensemble des champs des journaux |
journalctl -r | Affiche les logs en sens inverse |
journalctl --list-boots | Liste les démarrages |
journalctl -u <SERVICE>.service | Information sur un service |
journalctl _UID=<UID> | Informations sur l'utilisateur (avec son id) |
journalctl -k | grep -i USB | Informations kernel sur les périphériques USB |