Cómo ralentizar la ejecución del programa

7

Tengo un simple binario ejecutable. Toma como entrada una cadena suministrada por el usuario y la compara con una cadena privada usando strcmp . ¿Cómo puedo ralentizar la ejecución de este programa para poder lanzar un ataque de tiempo estadístico en la comparación de cadenas? Actualmente, la naturaleza de salida temprana de strcmp es demasiado leve para detectar.

Supongamos que tengo privilegios locales, el binario es propiedad de otro usuario y el sistema está ulimit protegido contra bombas de bifurcación.

Aunque entiendo que podría usar el comando de cadenas o la ingeniería inversa para obtener la cadena privada, esto está pensado como un POC para la posibilidad de cronometrar ataques en programas compilados en sistemas modernos.

    
pregunta robertkin 04.06.2015 - 04:45
fuente

2 respuestas

3

Mientras el binario esté vinculado dinámicamente, deberías poder LD_PRELOAD con una implementación de strcmp personalizada que puedas hackear para ser más "cooperativo" con el ataque de tiempo.

Si el binario está vinculado de forma estática, tendrá que usar una medición de tiempo más precisa. ¿Quizás utilice HPET de alguna manera?

    
respondido por el mikky 04.06.2015 - 14:06
fuente
1

Simplemente recorre el strcmp () para, por ejemplo, 1.000.000 veces.

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

Esto debería aumentar el delta entre las comparaciones en un factor de un millón.

Y ... asegúrate de que tu compilador no optimice eso ;-)

    
respondido por el fr00tyl00p 04.06.2015 - 11:09
fuente

Lea otras preguntas en las etiquetas