Por ejemplo tenemos el siguiente caso de la máquina ICA 1. 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-ncat-A5-B511-_ITM_deregisterTMCloneTable12-__gmon_start__13-_ITM_registerTMCloneTable14-u/UH15-[]A\A]A^A_16:cat/root/system.info# Esta parte nos interesa17-Couldnotcreatesockettoaccesstothesystem.18-Allservicesaredisabled.Accessingtothesystemisallowedonlywithinworkinghours.19-;*3$"20-GCC: (Debian 10.2.1-6) 10.2.1 2021011021-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#whichcat/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::