← Volver al listado de tecnologías
Leviathan Nivel 1 - Análisis con ltrace
Leviathan Nivel 1 - Análisis con ltrace
Objetivo
Hay un binario check en el directorio home. Descubre cómo usarlo.
Exploración
ls -la
file check
El binario es SUID (se ejecuta con permisos del propietario).
./check
Pide una contraseña.
Teoría: ltrace
¿Qué es ltrace?
ltrace intercepta y muestra las llamadas a funciones de librerías que hace un programa.
Uso Básico
ltrace ./programa
Información que Revela
- Llamadas a
strcmp(),strncmp()(comparaciones) - Llamadas a
fopen(),fread()(archivos) - Llamadas a
malloc(),free()(memoria) - Argumentos pasados a funciones
Solución
ltrace ./check
Cuando pida la contraseña, escribe cualquier cosa. Verás algo como:
strcmp("tu_input", "PASSWORD_REAL") = ...
Ahora ejecuta check con la contraseña correcta:
./check
# Ingresa la contraseña encontrada
Obtendrás un shell como leviathan2. Lee la contraseña:
cat /etc/leviathan_pass/leviathan2
Teoría: Binarios SUID
¿Qué es SUID?
Set User ID - El programa se ejecuta con los permisos del propietario, no del usuario que lo ejecuta.
ls -la check
-r-sr-x--- 1 leviathan2 leviathan1 ...
La s indica SUID.
Implicaciones de Seguridad
- Si
checkes propiedad de leviathan2 y es SUID - Cuando leviathan1 lo ejecuta, corre como leviathan2
- Si el programa abre un shell, será shell de leviathan2
Encontrar Binarios SUID
find / -perm -4000 -type f 2>/dev/null
ltrace vs strace
| Herramienta | Intercepta |
|---|---|
ltrace | Llamadas a librerías (strcmp, printf) |
strace | Llamadas al sistema (open, read, write) |
Comandos Aprendidos
| Comando | Uso |
|---|---|
ltrace | Interceptar llamadas a librerías |
file | Identificar tipo de archivo |
find -perm | Buscar por permisos |
Siguiente Nivel
- Usuario: leviathan2