user-policePATH/Binary Hijacking

Por ejemplo tenemos el siguiente caso de la máquina ICA 1arrow-up-right. Luego de hacer una búsqueda de binarios cuyo permiso sea uid, aparece un archivo /opt/get_access. Si indagamos con strings el contenido legible de este archivo, tenemos:

Salida de strings
root@debian:/root# strings /opt/get_access | grep -n cat -A 5 -B 5 
11-_ITM_deregisterTMCloneTable
12-__gmon_start__
13-_ITM_registerTMCloneTable
14-u/UH
15-[]A\A]A^A_

16:cat /root/system.info # Esta parte nos interesa

17-Could not create socket to access to the system.
18-All services are disabled. Accessing to the system is allowed only within working hours.
19-;*3$"
20-GCC: (Debian 10.2.1-6) 10.2.1 20210110
21-crtstuff.c

Esa línea indica que el binario cat se invoca de forma relativa (es decir, sin ruta absoluta), lo que permite secuestrar la ejecución colocando un binario con ese nombre en una ruta previa en PATH. ¿Cómo hacerlo?

Preparar: verificar la ruta absoluta de cat

Comprobamos la ruta absoluta del cat real:

which cat
root@debian:/root# which cat
/usr/bin/cat

Esto nos muestra que el cat legítimo está en /usr/bin/cat.

Crear un ejecutable malicioso en /tmp

Creamos en /tmp un fichero llamado cat con el comportamiento que queramos (por ejemplo ejecutar id para validar información):

Ahora /tmp/cat es ejecutable.

Anteponer /tmp al PATH

Hacemos que el sistema busque primero en /tmp al resolver comandos:

Con esto, cada vez que se invoque cat (sin ruta absoluta) se ejecutará /tmp/cat en lugar de /usr/bin/cat.

Revertir cambios (opcional)

Para volver a la normalidad, restablece la variable PATH eliminando /tmp: de su inicio, por ejemplo reasignando la cadena original sin /tmp::

Last updated