Come rallentare l'esecuzione del programma

7

Ho un semplice binario eseguibile. Prende come input una stringa fornita dall'utente e la confronta con una stringa privata utilizzando strcmp . Come posso rallentare l'esecuzione di questo programma in modo tale da poter avviare un attacco di temporizzazione statistica sul confronto delle stringhe? Attualmente la natura di uscita anticipata di strcmp è troppo piccola per essere rilevata.

Supponiamo di avere privilegi locali, il binario è di proprietà di un altro utente e il sistema è ulimit protetto da fork bomb.

Mentre capisco che potrei usare il comando stringhe o il reverse engineering per ottenere la stringa privata, questo è inteso come un POC per la fattibilità degli attacchi temporali sui programmi compilati sui sistemi moderni.

    
posta robertkin 04.06.2015 - 04:45
fonte

2 risposte

3

Finché il binario è collegato in modo dinamico, dovresti essere in grado di LD_PRELOAD con un'implementazione strcmp personalizzata che puoi modificare per essere più "cooperativo" con l'attacco di timing.

Se il binario è collegato staticamente, dovrai utilizzare una misurazione del tempo più precisa - forse in qualche modo utilizzare HPET?

    
risposta data 04.06.2015 - 14:06
fonte
1

Esegui semplicemente il loop su strcmp () per es. 1.000.000 di volte.

for(i = 0; i < 1000000; i++) strcmp(a, b);

Questo dovrebbe aumentare il delta tra i confronti di un fattore di un milione.

E ... assicurati che il tuo compilatore non lo ottimizzi; -)

    
risposta data 04.06.2015 - 11:09
fonte

Leggi altre domande sui tag