Lab Setup
1 | git clone [https://github.com/leonjza/frida-boot](https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqazAzUlppU0M4TmtUNEZmYXJGM09TREVHa0lDd3xBQ3Jtc0trQlNhUDZHMVYzSFUzSFp1eWhnV3FYR2JhbkI2dzJNYlpTMVZFQUEzNXdpREt5LWtvT2RURWdlUjRsR3JNS1EyeGZGZVFlSmFBN2ZLUGw2VWV5LW1TWk5sVDVGMEVXM284SG1LUFVzNmpqRGpaT1ZNMA&q=https%3A%2F%2Fgithub.com%2Fleonjza%2Ffrida-boot) |
- Para abrir varias sesiones podemos usar:
1 | tmux |
Parte 1
Copiar pew.c a carpeta code
1 | cp software/pew.c code/ |
Compilarlo
1 | gcc pew.c -o pew |
LD_PRELOAD
Lista addicional, específica de usuario, objectos compartidos de tipo ELF que se cargan antes que otros.
Esta característica se usa para hacer override a funciones de otros objetos compartidos
Librerías compartidas en pew.c, cada vez que lo ejecutamos cambian las direcciones dado que son dinámicas.
Librerías compartidas en un binario estático:
1 | gcc -static pew.c -o pew-static |
Nuestro programa pew, usa librerías estandar libc
1 | sleep(); |
Crearemos un sleep falso basado en la librería real de Unix, y luego lo compilaremos y crearemos una librería compartida:
1 | gcc -fPIC -shared fake_sleep.c -o fake_sleep.so |
Correr pew con nuestra implementación de librerías compartida, como podemos observar nunca funciona el sleeping
1 | LD_PRELOAD=./fake_sleep.so ./pew |
sleep() proxy:
Compilaremos el fake_sleep 2, buscamos unir ld-linux para dlsym:
1 | gcc -fPIC -shared fake_sleep.c -p fake_sleep.so -ldl |
Conclusiones:
Las librerías compartidas pueden sobreescribir funciones.
Sobreescribir funciones puede ser interesante para alterar el resultado.