
uno strumento progettato per aiutare a eseguire e visualizzare attacchi cache basati su tracce contro il software nel mondo sicuro dei core ARMv8 con TrustZone abilitato.
Cachegrab è uno strumento progettato per aiutare a eseguire e visualizzare attacchi cache basati su trace contro il software nel mondo sicuro dei core ARMv8 con supporto TrustZone. Per una panoramica su come funziona Cachegrab internamente, vedi the Cachegrab release announcement.
È possibile usare Cachegrab su un dispositivo Android. Poiché le versioni moderne di Android non consentono i moduli del kernel, le opzioni del kernel CONFIG_MODULES e CONFIG_MODULE_UNLOAD dovrebbero essere abilitate, il kernel ricompilato e flashato sul dispositivo. Compila il modulo del kernel di Cachegrab contro il sorgente del kernel e usa insmod per inserirlo nel kernel in esecuzione del dispositivo di destinazione.
Successivamente, compila il server Cachegrab e la libreria shim e copiali entrambi in /data/local/tmp. Avvia il server. Infine, usa adb forward tcp:8000 tcp:8000 per associare la porta TCP locale 8000 a quella del dispositivo.
Avvertenza: Il server consente all'attaccante di specificare comandi shell arbitrari per invocare il codice vittima. Questi comandi sono specificati via HTTP e vengono eseguiti con privilegi di root, quindi è fondamentale che il dispositivo di test che esegue Cachegrab si trovi su una rete attendibile.
Infine, carica la GUI di Cachegrab e connettiti a localhost:8000.
Il client Cachegrab è strutturato attorno all'idea di una pipeline, che elabora i campioni contenenti i dati dell'attacco. Le pipeline sono costituite da una sorgente di campioni, un elenco di filtri e un analizzatore. La sorgente di campioni può essere una posizione nel filesystem, un dispositivo che esegue il server Cachegrab o qualcosa di personalizzato. La pipeline raccoglie i campioni dalla sorgente e li fa passare attraverso ciascuno dei filtri della pipeline, che sono in grado di modificare i dati nel campione. Infine, i campioni filtrati vengono passati all'analizzatore, che esegue l'elaborazione finale dei dati dell'attacco.
Gran parte del client può essere gestita tramite la GUI, che fornisce un modo semplice per gestire un paio di pipeline utili. La prima pipeline raccoglie i campioni dal server Cachegrab configurato nel pannello "Scope". Fa passare questi campioni attraverso una serie di filtri e memorizza i campioni filtrati risultanti in un dataset. I dataset possono essere importati o esportati tramite la GUI, consentendo un facile trasferimento dei dati dei campioni. La seconda pipeline prende i campioni da un dataset, li fa passare attraverso un'altra serie di filtri e traccia i trace filtrati nella finestra.

Il modulo Python del client Cachegrab può anche essere usato direttamente per creare uno script di raccolta o analisi. Il seguente script prende un dataset esportato dalla GUI, esegue alcune elaborazioni sui trace in ogni campione e stampa i dati risultanti.
from cachegrab import Pipeline
from cachegrab.data import Dataset, Trace
from cachegrab.sources import DatasetSource
from cachegrab.filters import Filter
from cachegrab.sinks import AnalysisSink
class SampleFilter(Filter):
def filter(self, sample):
for t in sample.get_trace_names():
data = sample.get_trace(t).data
sample.set_trace(t, Trace(data - data.mean()))
return sample
class SampleAnalysis(AnalysisSink):
def analyze_once(self, sample):
for t in sample.get_trace_names():
print sample.get_trace(t).data
dataset = Dataset().load("exported_dataset_location")
pipeline = Pipeline(DatasetSource(dataset), SampleAnalysis())
pipeline.add_filter(SampleFilter())
pipeline.run()