Quando un server viene violato, nelle prime ore ci si trova spesso con più domande che risposte: non si sa quando sia successo, cosa sia stato sottratto, se gli attaccanti siano ancora attivi. Eppure proprio in quelle ore bisogna cominciare a costruire la prova — per il cliente, per un eventuale procedimento legale, per la notifica al Garante Privacy che il GDPR impone entro 72 ore.
SeizeLOG nasce per questo scenario. Il tempo gioca contro: ogni minuto in cui il server resta in esecuzione è un minuto in cui i log ruotano, i timestamp vengono sovrascritti, le tracce si assottigliano, e — nei casi peggiori — processi malevoli modificano proprio i log che li dovrebbero incriminare. Intervenire subito, con un metodo ripetibile, è l'unico modo per non trovarsi a mani vuote.
Lo scenario tipico
Lunedì mattina, nella casella email arriva la segnalazione: accessi anomali durante il weekend, il sito mostra un avviso di sicurezza, i clienti iniziano a chiamare.
Nelle ore successive, se non si agisce, il provider di hosting riavvierà il servizio, i log saranno ruotati, i file temporanei cancellati, il processo malevolo terminato — e con lui molte delle sue tracce. Qualche mese più tardi, in perizia, arriverà la domanda prevedibile: come si prova che l'attacco sia avvenuto proprio in quel modo? La risposta si costruisce nei primi minuti, non dopo.
Un solo canale: SSH
Nel mondo reale il server compromesso è quasi sempre remoto: in cloud, in data center, dentro un container. Non lo si può spegnere per acquisire il disco, non lo si può riavviare in live CD. L'unico canale disponibile è SSH, e il tempo utile è limitato.
SeizeLOG è un singolo binario Go statico: nessuna installazione, nessuna dipendenza. Si copia sul server, si esegue, si recupera il pacchetto risultante. In output si ottiene una raccolta di evidenze forensi, cifrata e con marca temporale qualificata, pronta da allegare a una perizia.
Come funziona: 4 comandi, 10 minuti
scp seizelog-linux-amd64 root@server:/tmp/ ssh root@server "/tmp/seizelog-linux-amd64 --config /tmp/config.json --apikey TUA" scp root@server:/tmp/seizelog_*/*.enc ./ ssh root@server "rm -rf /tmp/seizelog*"
In questi quattro comandi SeizeLOG ha fatto, al posto tuo:
- Verificato la sincronia dell'orologio via NTP (timestamp difendibile in tribunale)
- Identificato univocamente il server con FQDN e tutti i domini ospitati
- Scoperto tutti i log presenti (discovery a 3 livelli)
- Acquisito log, configurazioni, timeline filesystem con hash SHA-256
- Enumerato processi, porte, connessioni attive con IP remoto
- Analizzato lo stack mail: Postfix, Dovecot, Exim, OpenDKIM
- Correlato tentativi falliti con login riusciti successivi
- Generato report PDF + report.txt timestampato RFC 3161 + 16 pagine HTML
- Cifrato il pacchetto con AES-256-CBC
Tu non hai dovuto pensare a nulla. Hai dovuto solo agire in fretta.
Un report sintetico che il giudice può leggere in 30 secondi
Il cuore di SeizeLOG non è la massa di dati raccolti, ma il Risk Score 0–100 e il Verdict che ti dicono subito quanto è compromesso il server. Ogni modulo ha uno stato — OK, MEDIUM, HIGH, CRITICAL — e un contributo numerico al punteggio complessivo.
In aula, il consulente della controparte cercherà di contestarti ogni cifra. Con SeizeLOG hai la risposta pronta: risk score calcolato da 10 moduli indipendenti, ognuno con la sua metodologia documentata, findings tracciati con riferimenti CIS Benchmarks e MITRE ATT&CK. Nessun numero è arbitrario.
L'Executive Summary mostra lo stato istantaneo del server: chi ha trovato cosa, quanto pesa, cosa fare. È la prima pagina che il giudice leggerà — e in 30 secondi saprà se c'è stato un breach, quanto è grave, quali azioni immediate servono.
Identificazione completa del server, compresi tutti i domini
Un server di hosting professionale ospita spesso decine di domini. SeizeLOG li individua tutti da sei sorgenti indipendenti:
- Hostname di sistema +
hostname -A - Reverse DNS degli IP pubblici
- Directory Let's Encrypt (certificati effettivamente deployati)
- Direttive
server_namedi Nginx - Direttive
ServerName/ServerAliasdi Apache - Postfix
mydestination+virtual_*_domains
Ogni dominio nel report appare con la lista delle sorgenti che lo confermano: esempio.com [nginx, letsencrypt, postfix]. Identificazione forense univoca, multipla, tracciabile. E insieme ai domini: FQDN, hardware, CPU, RAM, IP pubblico, IPv6, gateway, DNS, reverse DNS.
10 moduli di analisi, zero dettagli persi
SeizeLOG non "raccoglie log". Li analizza mentre li raccoglie, producendo 10 risposte concrete su altrettante domande che il perito si farà in tribunale.
C'è stata un'intrusione? Il modulo Compromise Assessment correla sei check diversi: IP pubblici con fallimenti + successi autenticazione, modifiche a file sensibili entro 30 minuti dal login, integrity dei binari di sistema via dpkg --verify, network threats noti (AbuseIPDB), processi orfani, malware hash verificati su MalwareBazaar. Il risultato è un verdetto forense: LIKELY_CLEAN, SUSPICIOUS o COMPROMISED, con confidence score e breakdown delle evidenze raccolte.
Quanti attacchi ha subito? Il modulo Brute Force raggruppa i tentativi falliti per IP e utente, li geolocalizza su una mappa mondiale interattiva, e — con soglia robusta ≥5 tentativi — identifica gli IP che sono poi riusciti ad autenticarsi (compromised IPs). Un typo isolato non è più considerato attacco: l'algoritmo distingue incidenti reali da rumore di fondo.
Chi si è collegato al server e quando? Il modulo Sessions ricostruisce ogni login SSH con timestamp, IP sorgente, paese (GeoIP), metodo di autenticazione (publickey vs password), durata della sessione. In più: parsing di access log Apache/Nginx con supporto per CloudPanel, Plesk, cPanel, DirectAdmin — attack detection per SQL injection, path traversal, XSS, LFI, RCE, scanner. Cross-log correlation fra sessioni SSH e accessi web.
Ci sono tracce di persistenza malevola? Il modulo IOC scandaglia cron persistence (con whitelist per pannelli di controllo noti), systemd backdoor, bashrc manipulations, SSH authorized_keys recenti, binari SUID anomali, webshell PHP con scoring basato su pattern (eval + obfuscation, chr() chain, preg_replace /e, base64 + eval). Nessun falso positivo da cron job legittimi di CloudPanel o cPanel.
Quali vulnerabilità non sono ancora state patchate? Il CVE Scan confronta i pacchetti installati con il database NVD: per ogni servizio in esecuzione elenca le CVE con severity CVSS, stato fixed/unfixed, versione vulnerabile vs versione patchata. Distingue fra CVE su servizi attivi (pesano sul Risk Score) e CVE su pacchetti inattivi (documentati ma non contano).
Il server è configurato correttamente? Il modulo Attack Surface audita la configurazione secondo CIS Benchmarks e MITRE ATT&CK: SSH, sudoers, PAM, open ports con classificazione process-aware, capabilities, Docker exposure, kernel hardening, NFS/SMB, SSL certs, backup esposti nel webroot, world-writable, presenza di compilatori in produzione. Whitelist per configurazioni legittime (PAM standard Debian/Ubuntu/RHEL, file distribuiti con CMS) — zero rumore.
Ci sono cipher deboli o certificati scaduti? Il modulo Recon & TLS esegue probe TLS sui servizi in ascolto: protocollo negoziato, cipher suite, detection di cipher deboli (RC4, 3DES, NULL, MD5). Validazione certificati con whitelist per snakeoil/panel (cloudpanel.clp, .local, cpanel, plesk). HTTP security headers: CSP, HSTS, X-Frame-Options, Referrer-Policy. OSINT + Certificate Transparency lookup.
Stack mail: 26 metriche, nessun falso mittente
Il modulo Mail Services copre Postfix, Dovecot, Exim, Sendmail, OpenDKIM, OpenDMARC, SpamAssassin, ClamAV, Amavis. Parsing avanzato con supporto !include/.include ricorsivo e blocchi nidificati.
Tre livelli di analisi: configurazione (myhostname, mynetworks, TLS, SASL, restrictions, virtual maps), mailbox/utenti virtuali, log analytics con 26+ metriche. Security findings automatici: open relay, TLS disabilitato, cert/key mancanti, banner che rivela versione, Dovecot ssl=no, plaintext auth, OpenDKIM non firmante, chiave privata DKIM con permessi leaky, spoof di domini locali.
Il parsing log distingue rigorosamente mittenti legittimi da spoofing: top senders conta solo messaggi effettivamente accettati dal postfix/qmgr, top recipients solo status=sent. Gli indirizzi from= usati nei reject vengono tracciati separatamente come spoofed senders — mai confusi con mittenti reali. Delivery outcomes (delivered, bounced, deferred, discarded, held, expired), reject categories (relay, RBL, HELO, PTR, greylist, milter), connection events (timeout, rate-limited, too-many-errors), SASL/IMAP/POP3 auth, TLS protocolli per versione, verdetti DKIM/DMARC/SPF.
Il risultato è un'analisi forense completa della posta: sai chi ha cercato di usare il tuo server come relay, da quale IP, con quale dominio spoofato, verso quale destinatario. Tutti i findings con severity e remediation concreta: pubblicare SPF restrittivo (-all), DKIM, DMARC (p=reject), abilitare disable_plaintext_auth, aggiornare TLS a ≥1.2.
Processi, porte e connessioni attive in tempo reale
Nel momento esatto dell'acquisizione, SeizeLOG fotografa tutto ciò che sta girando sul server:
- Ogni processo con PID, user, comando, binario eseguito, flag "deleted" se il binario è stato cancellato dopo l'avvio
- Classificazione automatica: system daemon noto (sshd, nginx, mysqld, ...) vs applicazione utente vs sconosciuto vs sospetto (eseguibile in /tmp, /dev/shm, binario cancellato)
- Ogni porta in ascolto con processo proprietario e scope (loopback vs esposta esternamente)
- Ogni connessione attiva con direzione: inbound (qualcuno che ci attacca in quel momento), outbound (il server che parla con qualcuno — potenzialmente un C2), local
- Findings CRITICAL su processi da directory temporanee (MITRE T1036.005), HIGH su binari cancellati (T1070.004)
Questi dati, raccolti prima che l'amministratore riavvii il server, sono irrecuperabili altrimenti. Una volta riavviato, i processi in memoria non ci sono più, le connessioni ESTAB vengono chiuse, i binari cancellati sparirebbero dal filesystem. SeizeLOG li cattura come snapshot forense, con attribuzione di ogni listener al suo processo proprietario e ogni connessione alla sua direzione.
Esplorare le evidenze: 16 pagine HTML interattive
Oltre a report.txt (autoritativo) e report.pdf (per uso cartaceo), SeizeLOG produce un report HTML navigabile. Ogni pagina ha filtri, tabelle ordinabili, modali di dettaglio. La sidebar persistente consente di passare da un modulo all'altro senza ricaricare.
Log Explorer — naviga i 1220 file di log raccolti, 43 MB compressi, filtrati per categoria (auth, web, database, mail, system, application). Per ogni file: path originale, categoria, dimensione, SHA-256 verificabile con un click.
Timeline filesystem — un calendario visuale mostra l'attività giornaliera sul filesystem. Ogni giorno riporta quanti file sono stati modificati, quanti Auth success/failed, quanti pacchetti installati, quanti file sospetti comparsi. Cliccando un giorno si espande la lista degli eventi cronologici.
Il report.txt e la Remediation Roadmap
Il cuore della perizia non è lo ZIP. Lo ZIP è solo un contenitore. Il documento legalmente autoritativo è report.txt, accompagnato dal token di marca temporale report.txt.tsr.
Al suo interno:
- Header con UUID acquisizione, data UTC, operatore, fascicolo
- Server Identification completa con tutti i domini ospitati
- Executive Summary con Risk Score e stato di ciascun modulo
- Acquisition File Inventory: ogni file del pacchetto con path, size, SHA-256, purpose descrittivo — autosufficiente per verifica integrità
- Chain of Custody dichiarazione
La marca temporale RFC 3161 è applicata direttamente ai byte di report.txt: in tribunale produrrai quel file + il .tsr e dimostrerai con valore legale opponibile a terzi che il contenuto è identico a quello generato dall'acquisizione, in quella precisa data e ora.
La Remediation Roadmap è la risposta operativa alla domanda "e ora cosa faccio?". Ogni finding HIGH o CRITICAL genera una voce con priorità (IMMEDIATE ≤ 24h, SHORT ≤ 1 settimana, MEDIUM ≤ 1 mese), categoria, dettaglio, e — dove possibile — comando concreto da eseguire (es. sudo apt-get install --only-upgrade nginx). Riferimenti CIS Benchmark e MITRE ATT&CK per ciascuna azione.
Open Files: lo snapshot dei descriptor a t0
Quando l'attaccante cancella il binario malevolo dal disco ma il processo resta in esecuzione, l'unica prova rimane nel kernel: il file handle aperto su un inode già rimosso. SeizeLOG cattura questo snapshot via lsof -nP +c 0: ogni file descriptor — file regolari, socket di rete, pipe, dispositivi, librerie mappate — con processo proprietario e flag deleted in evidenza. Tab dedicata "Deleted & held" isola immediatamente questo indicatore di MITRE T1070.004.
Memory Composition: visualizza la pressione di sistema
Pagina dedicata alla composizione della memoria con donut chart inline (zero dipendenze esterne, funziona offline) e indice sticky in cima per saltare a qualsiasi sezione. Stat card RAM, donut chart per RAM e Swap con pressure indicator automatico (OK/MEDIUM/HIGH), Quick figures (Memory pressure, Dirty pages, Anonymous, Mapped, Slab), tabella dettagliata raggruppata per categoria con barra orizzontale per ogni voce di /proc/meminfo. Riconosci a colpo d'occhio se il sistema era sotto pressione di memoria al momento dell'incidente — un indicatore importante in caso di OOM kill o ransomware in esecuzione.
DFIR Artifacts: shell history, SSH, login, persistenza in un solo posto
Pagina consolidata che raccoglie gli artefatti DFIR seguendo le metodologie UAC, Velociraptor e SANS FOR577 — gli stessi standard usati nei team SOC e nei corsi di certificazione internazionali. Cinque tab: Shell history (i comandi reali eseguiti dall'attaccante), SSH artifacts (chi può entrare, da dove), Login history forensic-grade da binari wtmp/btmp, Persistence (cron + autostart + at), Containers (Docker/Podman/k8s). Tutto navigabile, filtrabile, con file collassabili.
Integrity Verification: identifica binari modificati e rootkit
L'output di dpkg --verify su un server reale può contenere decine di migliaia di righe, di cui il 99% rumore (file installer, package cache, locale). Senza filtro è inutilizzabile in perizia. SeizeLOG produce un actionable view filtrato e categorizzato per severity: CRITICAL per binari di sistema (rootkit T1554), HIGH per auth/persistence (sudoers, pam.d, systemd), MEDIUM per config /etc generic, LOW per user-data. Ogni voce è interpretata in linguaggio umano (es. "MD5 checksum mismatch — content modified") con LEGEND completo del formato 9-character. Il raw resta disponibile per la forensic completeness.
Stato runtime del kernel — dmesg, sysctl, lsmod, mounts — utile per audit hardening e detection di moduli kernel sospetti (rootkit kernel-mode T1014). PAM stack full dump per documentare in perizia la configurazione effettiva di autenticazione (T1556). LD_PRELOAD check con alert immediato se non vuoto (rootkit user-space tipico). getcap completo per identificare la privilege escalation surface.
Perché i log "normali" non bastano in perizia
Un scp root@server:/var/log . ti porta a casa dei file. Ma in perizia quei file sono inutilizzabili. Non c'è catena di custodia, non c'è hash di integrità, non c'è marca temporale, non c'è identificazione del server. La controparte farà notare che potresti averli modificati tra l'acquisizione e il deposito. E il giudice le darà ragione.
SeizeLOG non acquisisce dei file. Acquisisce prove digitali forensemente valide. È la differenza tra una fotografia sul telefono e una relazione tecnica giurata.
Manuale vs SeizeLOG: il confronto
| Attività | Raccolta manuale | SeizeLOG |
|---|---|---|
| Tempo operativo su server | 2–6 ore | 5–15 minuti |
| Hash per file | Manuale, spesso omesso | Automatico, ogni file |
| Marca temporale | Da richiedere a parte | RFC 3161 su report.txt |
| Catena di custodia | Da redigere | Generata |
| Identificazione server (FQDN, domini) | Manuale, tediosa | 6 sorgenti aggregate |
| Processi attivi + connessioni | ps/netstat in text dump | Analizzati, classificati, correlati |
| Rilevamento IOC, brute force, CVE | Analisi separata | Automatica, 10 moduli |
| Analisi mail (DKIM/DMARC/SPF, relay, SASL) | Raramente completa | 26+ metriche automatiche |
| Cross-log correlation | Quasi impossibile | Automatica |
| Report PDF forense + HTML navigabile | Da scrivere | Generati |
| Conformità ISO 27037/27042 | Dipende dal perito | Garantita dal processo |
Paghi solo quando sblocchi — zero rischio
- 1 MB di pacchetto compresso = 1 slot (minimo 1 slot)
- Marca temporale InfoCert qualificata = +2 slot aggiuntivi
- Gli slot vengono scalati solo al momento dello sblocco, non al momento dell'acquisizione
- Dry-run disponibile per stima preventiva del costo
Questo significa che puoi acquisire quante volte vuoi, stimare il costo prima e decidere dopo se quella specifica acquisizione vale lo sblocco. Se il cliente non procede, non paghi.
GDPR art. 33: 72 ore per notificare
Quando il Titolare del Trattamento scopre un data breach, il Regolamento gli impone di notificare al Garante entro 72 ore. SeizeLOG ti permette di chiudere la raccolta evidenze entro la prima ora dalla scoperta. Il resto delle 72 ore resta libero per analisi, perizia e notifica.
Domande frequenti
SeizeLOG modifica il server target?
No. Copia il binario in /tmp, legge, produce output. Non scrive in /etc, non tocca i log sorgente, non installa pacchetti. Alla fine rimuovi binario e output, il server torna esattamente com'era.
Funziona anche senza essere root?
Sì. Con --notroot acquisisce tutto ciò che è accessibile all'utente e documenta esplicitamente cosa non ha potuto raccogliere.
Quali distribuzioni Linux supporta?
Debian, Ubuntu, RHEL, CentOS, Rocky, Alma, Fedora, Amazon Linux, Oracle Linux, Alpine, SUSE, Gentoo. Rilevamento automatico via /etc/os-release.
E il mio IP amministrativo? Non voglio che SeizeLOG mi sospetti.
Aggiungi admin_ips nel config JSON. Gli IP pubblici da cui ti colleghi vengono automaticamente esclusi dall'heuristic "suspicious login from public IP".
I dati restano in chiaro sul server?
No. Con escrow il pacchetto finale viene cifrato con AES-256-CBC con chiave generata dal server. Il chiaro viene eliminato automaticamente. Nemmeno l'operatore ha accesso ai dati prima dello sblocco.
Posso usarlo per GDPR compliance / ISO 27001 audit?
Sì. Il report identifica tutti i servizi attivi, le configurazioni, i domini ospitati, le autenticazioni, i log di accesso — tutto quanto un auditor richiede, con evidenze forensi verificabili.
Inizia oggi: la prossima violazione non ti avviserà
Gli incidenti informatici non ti avvisano in anticipo. Quando arrivano, il tempo stringe e le scelte fatte nelle prime ore determinano l'esito della perizia. Avere SeizeLOG pronto non è paranoia. È professionalità.
SeizeLOG — Quando scoprirai l'attacco, avrai le prove.
Quanto costa
SeizeLOG è gratuito da installare e provare in modalità --dry-run. Paghi solo al momento dello sblocco di ogni acquisizione, in base alla dimensione del pacchetto compresso:
- 1 MB di pacchetto compresso = 1 slot (minimo 1 slot)
- Marca temporale InfoCert qualificata eIDAS: +2 slot
- Gli slot vengono scalati solo al momento dello sblocco, non al momento dell'acquisizione
- Dry-run preventivo per stima costi prima di acquisire
Un'acquisizione tipica su server hosting con 1200 file di log compressi in 43 MB costa circa 43 slot + 2 slot per la marca temporale qualificata: con il pacchetto Start (100 slot a €29) copri 2 acquisizioni complete con InfoCert.