Skip to main content
  1. Blog/

I file erano ancora lì. Solo che non li potevo più leggere.

·4 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

TL;DR
  • CIA Triad: Confidentiality, Integrity, Availability - i tre pilastri che ogni attacco viola
  • Un ransomware li colpisce tutti e tre in sequenza: esfiltra (C), cifra (I), blocca (A)
  • L'ingresso era un bit SUID lasciato su python3 - zero exploit, zero CVE
  • Senza la CIA Triad come mappa, stai guardando i sintomi senza vedere la malattia
$ history
  • find -perm -4000 -type f 2>/dev/null
  • ls -la /etc/shadow
  • diff /backup/etc/passwd /etc/passwd
  • systemctl status ssh
  • stat /usr/bin/python3

Sono le 23:12. Il telefono vibra tre volte di fila - notifiche di monitoring. Mi alzo, apro il portatile.

Il dashboard è rosso.

Non uno o due alert. Rosso ovunque. Processi che non esistevano un'ora fa. I/O di disco a 100% su prod-db-01. Un file che si chiama READ_ME_BITCOIN.txt comparso in /var/www/html/.

Apro una connessione SSH. Il cursore lampeggia.

ls -la /var/www/html/READ_ME_BITCOIN.txt

Esiste. 847 byte. Creato 23 minuti fa.

Non lo apro ancora. Prima guardo cosa sta girando.


La scena
#

Il disco sta ancora scrivendo. Qualcosa cifra i file in tempo reale - li rinomina con estensione .locked. Ho venti secondi prima che arrivi anche alle directory di configurazione.

Isolo il server dalla rete. Stacco il cavo virtuale. Il disco si calma.

Troppo tardi per i file. Non troppo tardi per capire.

Apro il file di testo:

Your files have been encrypted.
Send 0.15 BTC to 1A2B3C... within 72 hours.
Do not contact authorities.

La mappa
#

In quel momento non penso a "ransomware". Penso a tre lettere: C, I, A.

Non la Central Intelligence Agency. La triade che ogni analista di sicurezza ha in testa come bussola.

Confidentiality - chi poteva leggere quei file? Integrity - qualcuno ha modificato qualcosa che non avrebbe dovuto? Availability - i dati sono ancora accessibili?

L'ultima risposta è ovvia. I file non sono più leggibili. Availability violata.

Ma le altre due?


La traccia - Integrity
#

Cerco le modifiche recenti. I log di sistema hanno una lacuna strana - 40 minuti senza righe, poi riprendono come nulla fosse.

diff /backup/etc/passwd /etc/passwd
> svc-backup:x:1003:1003::/home/svc-backup:/bin/bash

Un utente nuovo. Aggiunto durante la lacuna nei log. Integrity violata - i dati di sistema sono stati modificati senza autorizzazione, e la modifica è stata progettata per non essere rilevata.


La traccia - Confidentiality
#

Prima di cifrare, quasi sempre c'è una fase di esfiltrazione. I dati valgono due volte: prima li vendono, poi chiedono il riscatto.

Guardo il traffico di rete delle ultime ore nei log del firewall. C'è una connessione in uscita verso un IP esterno - 847 MB trasferiti tre ore prima della cifratura.

Il database clienti pesa 820 MB.

Confidentiality violata - i dati sono usciti prima che qualcuno se ne accorgesse.


Il punto d'ingresso
#

La domanda che rimane è: come sono entrati? Non c'erano porte esposte, nessun servizio web vulnerabile noto.

find / -perm -4000 -type f 2>/dev/null

La lista scorre. Quasi tutto normale. Poi:

/usr/bin/python3
stat /usr/bin/python3
Access: (4755/-rwsr-xr-x)  Uid: ( 0/ root)

Quattro. Sette. Cinque. SUID root su python3.

Da lì in poi era tutto in discesa. L'account svc-backup - aggiunto via Integrity violation - aveva accesso limitato. Con SUID root su python3, tre righe di codice erano sufficienti per diventare root. Da root, tutto il resto: cifratura, log tampering, utente fantasma.


Dietro le quinte
#

La CIA Triad
#

Tre obiettivi che qualsiasi sistema di sicurezza deve proteggere:

graph TD
    C[Confidentiality\nSolo chi è autorizzato può leggere]
    I[Integrity\nI dati non vengono alterati senza autorizzazione]
    A[Availability\nI dati sono accessibili quando servono]

Un ransomware moderno li viola tutti e tre in sequenza:

FasePilastro violatoCosa succede
EsfiltrazioneConfidentialityI dati escono prima della cifratura
Log tamperingIntegrityLe tracce vengono cancellate
Cifratura fileAvailabilityI dati non sono più accessibili

Come rilevare ogni violazione
#

# Confidentiality - file sensibili esposti?
ls -la /etc/shadow
# deve essere: -rw-r----- root shadow

# Integrity - modifiche non autorizzate?
diff /backup/etc/passwd /etc/passwd

# Availability - servizi attivi?
systemctl status ssh nginx

Il vettore: SUID su python3
#

Come documentato in chmod +s - il bit che dimentichi e l'attaccante trova: SUID root su un interprete è escalation immediata, senza exploit, senza CVE. Un typo in un chmod alle 23:00 può aprire una backdoor root per ore.

IoC
#

TipoValorePilastroMITRE ATT&CK
FileREAD_ME_BITCOIN.txtAvailabilityT1486
Utentesvc-backup aggiuntoIntegrityT1136.001
Traffico847 MB verso IP esternoConfidentialityT1041
Binariopython3 con SUID root-T1548.001
Lacuna log40 min di silenzioIntegrityT1070.002

exit 0
#

La CIA Triad non è un framework accademico da imparare e dimenticare. È una lista di controllo da avere in testa durante un incidente: cosa hanno violato? In quale ordine? Cosa manca ancora da trovare?

Quella notte, senza quella mappa, avrei visto solo i file cifrati. Con quella mappa, ho trovato l'esfiltrazione, l'utente fantasma, e il bit SUID che aveva reso possibile tutto.

La Triade CIA - i pilastri della sicurezza informatica


Concetti correlati: iam · linux permissions

Approfondimento tecnico: Il bit s - capire il SUID · chmod +s in produzione

Related