Cos'è#
L'Inode (Index Node) è la struttura dati fondamentale dei filesystem Unix-like. Funge da "carta d'identità" del file, contenendo tutti i metadati e i puntatori ai dati fisici, ma ignorando completamente il nome del file.
L'Essenza del Sistema: "Everything is a File"#
In Linux, la massima "tutto è un file" si traduce tecnicamente nel fatto che ogni oggetto (documento, cartella, dispositivo hardware) è rappresentato da un Inode.
A basso livello, nel codice C del Kernel, l'Inode è una struct (una struttura dati complessa) che funge da ponte logico:
- Da una parte riceve il riferimento dal nome che l'utente usa nel terminale.
- Dall'altra punta ai bit scritti fisicamente sui piatti del disco o sulle celle della memoria flash.
Flusso dei Puntatori (ASCII Diagram)#
LIVELLO UTENTE (Nomi) KERNEL (Puntatori Struct) DISCO FISICO (Bit)
+--------------------+ +------------------------+ +-----------------+
| nomi.txt (Hard) | ----> | INODE STRUCT | | [Data Block 1] |
+--------------------+ | -------------------- | | [Data Block 2] |
| - Inode Number | | [Data Block 3] |
+--------------------+ | - UID / GID | ---> | [Data Block 4] |
| cognomi.txt (Hard)| ----> | - Permessi (rwx) | | |
+--------------------+ | - Link Count: 2 | +-----------------+
| - Data Pointers ------+ | (I bit reali) |
+------------------------+ +-----------------+Caratteristiche della Struct Inode#
- Indipendenza dal Nome: L'Inode non contiene il nome del file. L'associazione nome-inode avviene nelle tabelle delle directory (Dentry).
- Metadati Completi: Contiene dimensioni, timestamp (Access, Modify, Change), e i permessi di accesso.
- Contatore Link (Link Count): Tiene traccia di quante directory entry (nomi) puntano a questa specifica struct.
- Puntatori ai Blocchi: Contiene gli indirizzi fisici dei blocchi di dati sul disco.
Struttura Logica (ASCII Diagram)#
(nomi e cognomi sono link simbolici hard, quindi hanno lo stesso inode)
FILENAME (Porta) INODE (Registro) DATA BLOCKS (Stanza)
+--------------+ +--------------------+ +-------------------+
| nomi.txt | -----> | Inode #1573299 | | "Dati reali del |
+--------------+ | ------------------ | | file scritti sul |
| - Proprietario | -----> | piatto del disco"|
+--------------+ | - Permessi | | |
| cognomi.txt | -----> | - Link Count: 2 | +-------------------+
+--------------+ | - Size / Timestamps|
+--------------------+Perché è importante per Blue Team#
- Recupero Dati: Anche se un file viene "cancellato" (unlink), finché l'Inode non viene sovrascritto, i dati sono recuperabili.
- Analisi Forense: Il numero di Inode permette di tracciare file che sono stati rinominati o spostati per nascondere attività malevole.
- Analisi Forense (DFIR): Poiché l'Inode sopravvive alla rimozione del nome (finché il link count non è zero), è possibile recuperare dati "cancellati" analizzando gli Inode non ancora sovrascritti.
- Individuazione Malware: Un attaccante potrebbe creare più Hard Link a un toolkit malevolo in diverse cartelle per garantirsi la persistence anche se uno dei file viene scoperto e rimosso.
- Verifica Integrità: Se due file hanno nomi diversi ma lo stesso numero di Inode, sono lo stesso identico contenuto.
Collegato a#
system — categoria
stats — per vedere l'Inode
link-hard-vs-symbolic — i link sono puntatori a Inode
Collegato a#
bandit-12 — Identificazione file compressi tramite firme e metadati.
TLCL — Capitolo sulla manipolazione dei file e link.
system — categoria
file — categoria
stat — comando per leggere la struct Inode
link-hard-vs-symbolic — spiega i diversi tipi di puntatori
rm-mechanism — spiega l'operazione di unlink sulla struct


