Skip to main content

[Forensic] Linux - Artefacts

Introduction

De nombreux artefacts sont consultables sur les systèmes Linux pour effectuer une analyse forensique.

1_i2QTj1JzxDf0BzgfdPJiVA.png

Artefacts

Liste d'artefacts

ArtefactsDescriptions
/etc/*-releaseInformations sur l'OS et les numéros de version
/etc/issueInformations sur l'OS et les numéros de version
/etc/issue.netInformations sur l'OS et les numéros de version
/etc/timezoneFuseau horaire
/etc/localtimeFuseau horaire
/etc/passwdComptes utilisateurs
/etc/groupGroupes et membres
/etc/shadowMots de passe hashés des comptes utilisateurs
/etc/sudoers | /etc/sudoers.dPolitiques sudo
/etc/fstabPoints de montages automatiques
/etc/hostnameNom d'hôte de la machine
/etc/hostsRésolution des noms de domaine
/etc/network/interfacesConfiguration réseau
/etc/resolv.confConfiguration DNS
/var/lib/networkmanager/internalDernière IP attribuée au système
/var/lib/networkmanager/NetworkManager.stateEtat actuel du réseau, du wifi et de l'accès à internet sur le système
/var/lib/networkmanager/seen-bssidsEnregistre les BSSID wifi vus, mais pas nécessairement
connectés
/var/lib/networkmanager/timestampsEnregistre les baux DHCP
/var/lib/dpkg/statusJournaux d'évènements du gestionnaire de paquets DPKG (Debian / Ubuntu)
/var/lib/dpkg/statusJournaux d'évènements du gestionnaire de paquets RPM (Redhat)
/var/lib/pacman/localJournaux d'évènements du gestionnaire de paquets PACMAN (Arch Linux)
/var/log/apt/history.logJournaux d'évènements de ce qui a été installé avec le gestionnaire de paquets APT (Debian / Ubuntu)
/var/log/apt/term.logEnregistre 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.logConnexions utilisateurs.
/var/log/btmpConnexions échouées des utilisateurs.
/var/log/faillogConnexions échouées des utilisateurs.
/var/log/dmesgPé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/lastlogDernières connexions pour chaque utilisateur.
/var/log/syslogLogs systèmes et services.
/var/log/wtmp | /var/log/utmpConnexions 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 :

image.png

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 :

image.png

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 :

CommandesDescriptions
journalctl -o shortAffichage 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 verboseAffiche le détail complets des champs
journalctl --no-hostnameEnlève le champ du nom d'hôte pour améliorer la lisibilité
journalctl -aAffiche l'ensemble des champs des journaux
journalctl -rAffiche les logs en sens inverse
journalctl --list-bootsListe les démarrages
journalctl -u <SERVICE>.serviceInformation sur un service
journalctl _UID=<UID>Informations sur l'utilisateur (avec son id)
journalctl -k | grep -i USBInformations kernel sur les périphériques USB