Article 007 · Artifacts

Where Evidence Hides: User & System Artifacts

Evidence on a Linux system is scattered across dozens of predictable locations. This article is a map. The power of a directory listing is that you know what should be there — anything that doesn't belong is your lead.

Inside /home — the goldmine

ArtifactForensic value
.bash_historyCommands executed — the closest thing to a user's timeline
.ssh/authorized_keys, known_hostsBackdoor keys; hosts they've connected to
~/.local/share/recently-used.xbelRecently opened documents
Browser profilesHistory, downloads, cookies, saved passwords (SQLite/LevelDB)
.thumbnails / .cache/thumbnailsPreview images of files that may be deleted
~/.TrashFiles "deleted" via file managers
Editor backups & swapvim .swp files, nano .save, old content
Mail / chat clientsConversations, contacts

Shell history

# in order with timestamps (HISTTIMEFORMAT only affects future entries)
cat /home/bob/.bash_history

# other shells keep their own
cat /home/bob/.zsh_history   # zsh, with timestamps by default
cat /home/bob/.ash_history   # busybox/ash

# deleted history may be recoverable from RAM
# (see linux.bash plugin in the Volatility guide)
History is fragile Bash only writes history on clean exit, and only the last HISTSIZE lines are kept. A killed shell or a cleared history destroys it. Always collect memory too if history matters.

Inside /etc — configuration as evidence

Config files record intent: what the administrator set up and when.

# units not tied to an installed package are suspicious
ls -la /etc/systemd/system/
systemctl list-unit-files --type=service --state=enabled

Inside /var & /tmp

# common webshell signatures
grep -rEl "eval\(|base64_decode|system\(|passthru|shell_exec" /evidence/var/www --include="*.php"
find /evidence/var/www -name "*.php" -newermt "2026-08-10" | head

Application-level artifacts

Persistence & anti-forensics

Attackers who gain a foothold want it to survive reboots. The checklist above is the persistence checklist: cron, systemd units, rc.local, ssh keys, PAM, package repos. Also watch for anti-forensics:

Where to look first

A sensible priority for a first pass:

  1. /home/*/.* dotfiles (history, ssh, trash, thumbnails).
  2. Authentication logs + successful login times.
  3. Cron and systemd unit lists.
  4. authorized_keys files across all users and root.
  5. Recently modified files: find / -newermt "date" -type f on the mounted image.
  6. Writable temp dirs and web roots.

For the tools to pull these artifacts off an image, see The Sleuth Kit guide.


← Previous: Timeline Analysis  ·  Back to home →