Skip to main content
  1. Concetti/

FIM - File Integrity Monitoring

·5 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

Mappa Globale
#

Cosa fa
#

FIM (File Integrity Monitoring) calcola l'hash crittografico di ogni file critico del sistema e salva un database di riferimento (baseline). A intervalli regolari (o in real-time) ricalcola gli hash e confronta con la baseline: qualsiasi differenza genera un alert. Rileva modifiche non autorizzate a binari, configurazioni e file di sistema.

TL;DR
#

FIM e' come git diff ma per il filesystem di produzione. Qualsiasi modifica non autorizzata - un rootkit che sostituisce /usr/bin/ls, un attaccante che aggiunge una riga a /etc/sudoers, un malware che modifica il cron - viene rilevata confrontando l'hash attuale con l'hash salvato nella baseline.


Come Funziona
#

Il principio e' semplice: un file non modificato ha sempre lo stesso hash crittografico. Se l'hash cambia, il file e' cambiato. Punto.

flowchart TD
  INST[Installazione sistema
  stato pulito e verificato]
  BASE[Creazione Baseline
  SHA-256 di ogni file monitorato
  Salva in database protetto]
  MON[Monitoraggio continuo
  Ricalcola hash a intervalli
  o su evento filesystem]
  CMP{Confronto
  Hash cambiato?}
  OK[Nessun alert
  File integro]
  ALT[ALERT
  File modificato
  Creato / Cancellato]
  INV[Investigation
  SOC analista
  verifica causa]

  INST --> BASE --> MON --> CMP
  CMP -->|No| OK
  CMP -->|Si'| ALT --> INV
  OK --> MON

Cosa viene registrato per ogni file nella baseline:

  • Hash SHA-256 del contenuto
  • Dimensione file
  • Data creazione / modifica / accesso (timestamps)
  • Permessi Unix (octal) o ACL Windows
  • Owner (uid/gid) e gruppo
  • Per file di testo: hash riga per riga (alcuni tool)

File Critici Monitorati
#

Linux
#

I file piu' importanti da monitorare su sistemi Linux:

PercorsoPerche' monitoratoAttacco che lo colpisce
/etc/passwdAggiunta utenti non autorizzatiPrivilege escalation, backdoor account
/etc/shadowHash password degli utentiEsfiltrazione hash per offline cracking
/etc/sudoersChi puo' eseguire comandi come rootPrivilege escalation diretta
/usr/bin/, /usr/sbin/Binari di sistemaRootkit che sostituiscono ls, ps, netstat
/etc/cron.d/, /etc/cron.daily/Script eseguiti automaticamentePersistence via cron job nascosto
/etc/ssh/sshd_configConfigurazione SSHAttivare PermitRootLogin, backdoor
/boot/Kernel, bootloaderBootkit, rootkit a livello kernel
/etc/ld.so.preloadLibrary preloadingRootkit tramite LD_PRELOAD injection

Windows
#

PercorsoPerche' monitorato
C:\Windows\System32\Binari OS critici
Registry: HKLM\SAM, HKLM\SYSTEMDatabase account e configurazione OS
C:\Windows\System32\drivers\Driver di sistema - vettore rootkit
Chiavi Run/RunOnce del registryPersistence startup

Tool Principali
#

Tripwire
#

Tripwire e' il tool di riferimento per FIM enterprise. Esiste in versione open source (Tripwire Open Source) e enterprise (Tripwire Enterprise).

# Inizializzare il database baseline (da fare su sistema pulito)
tripwire --init

# Eseguire un check manuale
tripwire --check

# Output tipico di un alert:
# Modified: /etc/passwd
#   SHA512:  baseline=abc123... current=def456...
#   Size:    baseline=2048    current=2100

AIDE (Advanced Intrusion Detection Environment)
#

AIDE e' la versione open source alternativa a Tripwire, comune su distribuzioni Linux enterprise.

# Creare baseline iniziale
aide --init
mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

# Check manuale
aide --check

# Tipicamente schedulato in cron
0 3 * * * /usr/bin/aide --check | mail -s "AIDE Check" soc@company.com

Wazuh FIM
#

Wazuh include un modulo FIM integrato nel proprio agente. Il vantaggio: gli alert FIM convergono direttamente nel SIEM Wazuh, correlati con altri eventi di sicurezza.

Configurazione in /var/ossec/etc/ossec.conf:

# File di configurazione Wazuh - sezione FIM
# <syscheck>
#   <directories realtime="yes" check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
#   <directories check_all="yes">/bin,/sbin</directories>
# </syscheck>

Windows SFC (System File Checker)
#

Windows include un tool built-in per verificare i file di sistema:

# Verifica e ripristina file di sistema Windows (richiede admin)
sfc /scannow

# Output in C:\Windows\Logs\CBS\CBS.log
# Trovera' file corrotti e li ripristinera' dalla cache WinSxS

SFC e' un tool reattivo (verifica su richiesta), non un sistema di monitoring continuo come Tripwire/AIDE/Wazuh.


Casi d'Uso Security
#

Rilevamento Rootkit
#

I rootkit sostituiscono binari di sistema con versioni modificate che nascondono la loro presenza. Un rootkit classico modifica /usr/bin/ps per non mostrare il proprio processo, e /usr/bin/ls per non mostrare i propri file.

FIM rivela questa sostituzione: l'hash di /usr/bin/ps nella baseline non corrisponde all'hash attuale. Anche se il rootkit nasconde il file al filesystem, l'hash del file su disco cambia.

Important

FIM deve essere eseguito da un sistema separato o da un agente con filesystem montato in read-only. Un rootkit avanzato puo' compromettere anche il tool FIM stesso se gira sullo stesso sistema che monitora.

Compliance
#

FIM e' richiesto da diversi framework di compliance:

FrameworkRequisito
PCI DSSRequirement 11.5: monitorare i file critici e alertare su modifiche non autorizzate
HIPAARichiede audit log delle modifiche a sistemi che trattano PHI
CIS BenchmarksFIM raccomandato per i file di sistema in tutti i livelli
NIST SP 800-53SI-7 (Software, Firmware, and Information Integrity)

Dev parallel: Come git log che registra ogni commit e chi l'ha fatto - FIM e' il git blame del filesystem di produzione. Ogni modifica ha un "commit" con timestamp, cosa e' cambiato, e l'hash prima/dopo. La baseline e' come il branch main protetto: nessuna modifica accettata senza verifica.


FIM in Ambienti Container
#

Nei container Docker/Kubernetes il concetto di FIM e' meno rilevante per design: i container sono immutabili. Il filesystem del container e' definito dall'immagine; qualsiasi modifica e' temporanea e viene persa al riavvio.

La security nei container si concentra su:

  • Image scanning (vulnerabilita' nei layer dell'immagine) - tool: Trivy, Grype
  • Runtime security (syscall anomali, mount non previsti) - tool: Falco
  • Protezione del volume montato dall'host (quello non e' immutabile!)

Se un container scrive su un volume persistente (bind mount), quel volume puo' e deve essere monitorato con FIM tradizionale.


Scenario Reale
#

Un server Linux di produzione mostra comportamento anomalo: comandi ps e netstat non mostrano tutti i processi, ma tcpdump rivela traffico verso un IP sospetto. Il team SOC esegue un check AIDE: l'hash di /usr/bin/ps, /usr/bin/netstat e /usr/bin/ss sono tutti diversi dalla baseline. Hash baseline: a3f4b2..., hash attuale: 9c7e1d.... Conferma rootkit. Azione: isolare il server, montare il disco su un sistema pulito, analizzare i binari modificati con strings e strace, recuperare dalla baseline pulita o reinstallare l'OS.


Collegato a
#

  • rootkit - FIM e' la principale difesa contro rootkit che modificano binari
  • wazuh-architecture - Wazuh FIM e' integrato nel modulo syscheck di Wazuh
  • hashing - SHA-256 e' l'algoritmo di hash usato per le baseline FIM
  • edr - EDR moderni includono FIM come componente di behavioral detection
  • linux-filesystem-hierarchy - conoscere la struttura filesystem aiuta a configurare i path corretti

Related