TL;DR. Sì. Una voce ShimCache persiste nel registro indipendentemente dal fatto che il file esista ancora su disco. Eliminare il binario non elimina la sua voce ShimCache — ecco perché l'artefatto è così prezioso per catturare gli strumenti che un attaccante ha rilasciato, usato e cancellato.
«Lo ShimCache mostra ancora un file dopo che è stato eliminato?» è una delle domande più frequenti nella forense di esecuzione dei programmi — e la risposta è la ragione stessa per recuperare l'artefatto.
Risposta breve: sì
Lo ShimCache memorizza un percorso + marca di ultima modifica dentro un valore di registro. Quel record non ha alcun collegamento di ritorno al file system. Quando l'eseguibile viene eliminato, NTFS libera il file — ma il valore di registro resta intatto. La voce rimane finché non viene sfrattata da voci più recenti (la cache contiene fino a 1.024) o il valore stesso viene cancellato.
Così un binario che un attaccante ha rilasciato in C:\Users\Public\, eseguito ed eliminato dieci minuti dopo può ancora lasciare una voce ShimCache pulita e leggibile che mostra il percorso completo che occupava.
Perché è potente in forense
Le voci di file eliminati sono spesso l'unica prova superstite degli strumenti dell'attaccante:
- Un
mimikatz.exerinominato eliminato dopo il furto di credenziali. - Un archivio di staging rimosso dopo l'esfiltrazione.
- Un dropper che si è auto-eliminato dopo aver installato un payload.
In ogni caso il file è sparito, ma il percorso ShimCache ti dice che è esistito, dove, e (tramite la marca di ultima modifica) lo lega a un build. È l'ossatura della caccia al malware con lo ShimCache e delle indagini sul ransomware, dove gli attaccanti cancellano sistematicamente i loro strumenti.
Quanto sopravvive una voce di file eliminato?
Si applicano due limiti:
- Sfratto. La cache è limitata (fino a 1.024 voci). Su un host carico, una forte attività di eseguibili può espellere le voci vecchie. Su un server tranquillo può sopravvivere per mesi.
- Momento del flush. Le nuove voci persistono nella hive solo allo spegnimento pulito. Se l'host non è stato spento dall'eliminazione, la voce superstite potrebbe essere ancora solo in memoria — recuperala da un'immagine di memoria (come). Il modello di archiviazione/flush è trattato in dove è memorizzato lo ShimCache.
Cosa non prova
Una voce di file eliminato prova che il file è esistito ed è stato esaminato su quell'host. Non prova di per sé che sia stato eseguito, e non ti dice quando è stato eliminato (la marca è il mtime del file, non una data di eliminazione). Trattala come un forte testimone di esistenza e conferma l'esecuzione con Prefetch/AmCache — vedi lo ShimCache prova l'esecuzione.
Per verificare quali voci di una hive puntano a file che non esistono più, analizzala con lo Shimcache Parser e incrocia i percorsi — tutto viene eseguito localmente nel tuo browser.
Approfondimenti
- Mandiant: leveraging the ShimCache — la tesi dello ShimCache come testimone di strumenti eliminati.
- SANS DFIR: artefatti di esecuzione dei programmi — dove si colloca lo ShimCache tra le prove di esecuzione.