TL;DR. No. Una voce nello ShimCache prova che Windows ha esaminato il file — di solito, ma non sempre, per l'esecuzione. Windows 10/11 ha rimosso del tutto il flag di esecuzione nella cache. Conferma con Prefetch, AmCache o eventi di creazione processo (Security 4688 / Sysmon 1).
«Lo ShimCache mostra che è stato eseguito» è una delle scorciatoie più frequenti nell'incident response — ed è abbastanza spesso errata da mettere in difficoltà gli investigatori in tribunale. Ecco una risposta accurata alla domanda «una voce dello ShimCache prova che un programma è stato eseguito?», e cosa fare invece.
Cosa registra davvero lo ShimCache
Lo ShimCache (tecnicamente l'Application Compatibility Cache, o AppCompatCache) memorizza voci per gli eseguibili che Windows ha esaminato, di norma per decidere se applicare uno shim di compatibilità. Esaminare non è la stessa cosa che eseguire. Windows può esaminare un file quando:
- l'utente vi fa doppio clic (spesso, ma non sempre, porta all'esecuzione),
- l'Esplora risorse enumera una directory e ispeziona un binario,
- uno strumento scansiona il file system (AV, indicizzatori, agenti di sicurezza),
- il file viene aperto tramite tasto destro «Proprietà» o flussi shell simili.
La maggior parte di questi motivi coincide con l'esecuzione, ma il legame è statistico, non logico. Un binario rilasciato e cancellato da un attaccante senza eseguirlo può comunque comparire nello ShimCache perché qualcosa sul sistema lo ha toccato.
Il cambiamento Windows 10 / 11 che conta
Nelle versioni precedenti di Windows, le voci dello ShimCache portavano un flag Executed impostato quando il binario veniva eseguito. Questo flag era ampiamente usato come segnale grossolano di «è stato eseguito?».
In Windows 10 e 11 questo flag è stato rimosso. Lo ShimCache moderno non ha alcun marcatore interno che dica che è avvenuta un'esecuzione. Quindi, anche se ti fidassi del flag legacy, devi smettere appena entri in Windows moderno.
Per vedere esattamente quali campi espone una voce moderna dello ShimCache, il riferimento del formato binario descrive ogni offset.
Come confermare l'esecuzione
Considera un hit nello ShimCache come ipotesi, poi corrobora con artefatti che registrano effettivamente l'esecuzione:
- Prefetch (
C:\Windows\Prefetch\*.pf) — scritto all'avvio del processo e persiste tra i riavvii. Un file Prefetch corrispondente è prova forte di esecuzione. - AmCache (
Amcache.hve) — hive di registro separata che registra programmi eseguiti e installati, con hash SHA-1 per identificazione univoca. (Perché entrambi? Vedi ShimCache vs AmCache.) - Log Security e Sysmon — gli eventi di creazione processo (4688, Sysmon 1) sono la prova di esecuzione di massima fedeltà disponibile.
- UserAssist, BAM/DAM, RecentApps — segnali di esecuzione aggiuntivi basati sul registro.
Il riferimento agli artefatti di esecuzione riassume cosa cattura ciascuno e quanto è affidabile nella pratica.
In sintesi
Una voce dello ShimCache ti dice che Windows ha guardato un certo file in un certo momento. È un pivot ad alto segnale per provare l'esistenza, non l'esecuzione. Per affermare che un programma è stato eseguito, combina lo ShimCache con Prefetch, AmCache o log di creazione processo — e scrivi la conclusione in un linguaggio che corrisponda alle prove effettivamente disponibili.
Per analizzare lo ShimCache di una hive SYSTEM subito, trascinala nello Shimcache Parser. Tutto avviene nel tuo browser; il file non lascia mai la pagina.
Approfondimenti
Windows.Registry.AppCompatCachedi Velociraptor — include note sulla storia del flag di esecuzione.- AppCompatCache deep dive Windows 10/11 (Ø Security) — copre il flag rimosso nei dettagli.
- ShimCache & AmCache forensic analysis (Mehrnoush) — walkthrough pratico basato su casi.