← Blog

Find — Localización de Ficheros y Binarios SUID

Búsqueda por nombre/contenido con find, detección de binarios SUID/SGID (-perm), ficheros world-writable y directorios escribibles para escalada de privilegios.

1. Operational Scope & Technical Objective

find recorre el árbol de ficheros y selecciona por nombre, tipo, permisos, propietario o tamaño. En post-explotación de Linux es la herramienta que materializa las primeras tres comprobaciones de escalada: binarios con bit SUID/SGID (-perm /4000, /2000, /6000), ficheros world-writable y credenciales en claro embebidas en código fuente. Cada hallazgo se ejecuta con -exec para no perder tiempo con una segunda pasada.

2. High-Impact Syntax & Command Cheatsheet

# Buscar por nombre (con comodín escapado)
find / -name sbd\*                    # cualquier ruta cuyo nombre empiece por 'sbd'

# Buscar texto plano (usuario/contraseña) dentro de código, sin romper con espacios
find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password"   # Joomla
# -print0 / -0: delimitador NUL -> nombres con espacios no rompen el pipeline

# SUID / SGID
find "$DIRECTORY" -perm /4000         # bit SUID
find "$DIRECTORY" -perm /2000         # bit SGID
find "$DIRECTORY" -perm /6000         # SUID o SGID (cualquiera de los dos)
find "$DIRECTORY" -perm /6000 -exec ls -la {} \;   # con listado detallado

# SUID root, solo ficheros (excluye dirs), con ls:
find / -user root -perm -4000 -type f 2>/dev/null -exec ls -ldb {} \;

# World-writable: ficheros y directorios
find / -writable -type d 2>/dev/null -exec ls -ldb {} \;
# Un dir escribible donde corre un servicio = plantación de fichero/script
find / -perm -w ~ -type l -ls 2>/dev/null   # symlinks world-writable (clásico de rootkit)

# Búsquedas básicas
find /root -name imran                 # ficheros/dirs llamados imran bajo /root
find /root/imxx -name *.py             # todos los .py bajo /root/imxx

3. Real-World Offensive/Defensive Scenarios

Escalada vía SUID mal configurado. find / -perm -4000 -type f 2>/dev/null lista binarios con bit SUID. Un binario SUID con -exec en find (p. ej. find invocando cp/cat), o binarios de terceros (custom, viejos) en esa lista, son vectores clásicos hacia root: el bit SUID hereda el UID del propietario (root) del binario al proceso hijo.

Persistencia y pivot de permisos. Los directorios world-writable (-perm -2002 -type d) permiten dejar ficheros en rutas que un cron/root procesa después. Combinar find con -exec ls -ldb da el contexto de propietario y sticky bit (un dir world-writable sin sticky bit admite borrado de ficheros ajenos).

Caza de credenciales en código. find . -name "*.php" -print0 | xargs -0 grep -i -n "password" localiza credenciales en claro en aplicaciones (Joomla, WordPress, configs), la vía habitual de acceso a DBs en entornos web.

Defensa. Monitoriza la aparición de binarios SUID nuevos (-perm -4000 como línea base) y los ficheros world-writable en rutas del sistema; ambos son anomalías que los controles de integridad (AIDE, auditd) deben cubrir.