Bash History Forensics
forensicsDéfinition
Le fichier .bash_history contient l'historique des commandes shell exécutées par un utilisateur dans bash. Malgré ses limites (facilement effaçable, désactivable, incomplet), il reste une source forensique précieuse qui peut révéler des actions malveillantes, des tentatives d'intrusion, ou des commandes administratives suspectes. Bash enregistre par défaut les commandes dans le fichier ~/.bash_history à la fermeture de la session. La variable HISTFILESIZE détermine le nombre maximum de commandes conservées (par défaut 2000 sur la plupart des distributions). La variable HISTCONTROL peut être configurée pour ne pas enregistrer les doublons (ignoredups) ou les commandes commençant par un espace (ignorespace), permettant à un utilisateur averti d'éviter l'enregistrement de commandes sensibles en les préfixant d'un espace. Les attaquants connaissent ces mécanismes et les exploitent : 'unset HISTFILE' désactive l'enregistrement, 'history -c' efface l'historique en mémoire, 'rm ~/.bash_history' supprime le fichier, ou 'export HISTSIZE=0' désactive l'historique pour la session. Ces actions de suppression sont elles-mêmes forensiquement révélatrices si d'autres artefacts les tracent (par exemple, les commandes SSH journalisées avant la suppression). Des configurations de sécurité renforcées permettent d'améliorer la valeur forensique de l'historique bash : HISTTIMEFORMAT='%F %T ' ajoute des timestamps à chaque commande, PROMPT_COMMAND='history -a' force l'écriture immédiate après chaque commande (au lieu d'attendre la fermeture de session), et HISTAPPEND=true accumule l'historique de plusieurs sessions parallèles. Pour une investigation forensique complète, au-delà de .bash_history, examiner également : les fichiers .zsh_history, .fish_history ou équivalents selon le shell utilisé ; les logs auditd (si configuré) qui journalisent les appels système et peuvent reconstituer l'activité shell même sans historique ; les logs syslog des connexions SSH (montrant quand une session a été ouverte) ; et les sorties de commandes dans les fichiers temporaires /tmp.
Fonctionnement
Bash écrit dans ~/.bash_history à la fermeture de la session (ou en temps réel si PROMPT_COMMAND=history -a est configuré). Le fichier est un texte brut, une commande par ligne. Avec HISTTIMEFORMAT défini, les timestamps précèdent chaque commande. Plusieurs sessions parallèles peuvent écraser l'historique si HISTAPPEND n'est pas activé.
Application DFIR
Analyser .bash_history pour tous les utilisateurs du système (/root/.bash_history, /home/*/.bash_history). Chercher : wget/curl vers des IPs suspectes, chmod +x sur des fichiers temporaires, ajout de clés SSH (echo >> authorized_keys), commandes de reconnaissance (ifconfig, ss -antp, id, whoami), et outils d'attaque (nc, ncat, python -c, perl -e).
Outils
cat/grep/awk (analyse textuelle), auditd + ausearch (historique système complet), bash_history_forensics scripts SANS, Plaso/log2timeline (intègre l'historique bash dans la timeline). Pour les systèmes sans historique : /proc/[pid]/cmdline pour les processus actifs, auditd type=EXECVE pour l'historique des exécutions.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h