Find Files and Directories - Linux Fundamentals

linux
htb
security
Autor/a

statick88

Fecha de publicación

20 de febrero de 2026

Objetivo

Dominar las herramientas de búsqueda de archivos en Linux: which, find y locate. Aprender a filtrar resultados por nombre, tamaño, fecha, permisos y propietario.

Introducción

En auditorías de seguridad, la capacidad de encontrar archivos específicos es fundamental. Ya sea buscando archivos de configuración, backups, scripts o binarios, conocer las herramientas de búsqueda adecuadas puede ahorrar horas de trabajo manual.

Escenario

Estás realizando una auditoría en un servidor Linux. Necesitas encontrar: 1. Archivos de configuración modificados recientemente 2. Backups que puedan contener información sensible 3. Binarios específicos disponibles en el sistema

Ejercicios Prácticos

Ejercicio 1: Búsqueda Avanzada con Filtros

Objetivo: Encontrar archivo .conf creado después de 2020-03-03 con tamaño entre 25k y 28k.

find / -type f -name "*.conf" -newermt 2020-03-03 -size +25k -size -28k 2>/dev/null

Resultado:

/usr/share/drirc.d/00-mesa-defaults.conf

Respuesta: 00-mesa-defaults.conf

Explicación de filtros:

Filtro Significado
-type f Solo archivos
-name "*.conf" Extensión .conf
-newermt 2020-03-03 Modificado después de fecha
-size +25k Mayor a 25KB
-size -28k Menor a 28KB

Ejercicio 2: Contar Archivos por Extensión

Objetivo: Determinar cuántos archivos .bak existen en el sistema.

find / -type f -name "*.bak" 2>/dev/null | wc -l

Resultado:

4

Respuesta: 4

Ejercicio 3: Ubicar Binary

Objetivo: Encontrar la ruta completa del binary xxd.

which xxd

Resultado:

/usr/bin/xxd

Respuesta: /usr/bin/xxd

Conceptos Teóricos

Herramientas de Búsqueda

Comando Propósito Velocidad Uso típico
which Binarios en PATH Instantáneo Verificar si comando existe
find Búsqueda con filtros Lento Búsquedas complejas
locate Búsqueda en DB Rápido Búsquedas por nombre
whereis Binarios + man + source Rápido Documentación
type Tipo de comando Instantáneo Aliases y funciones

Opciones de find Más Usadas

# Por tipo
-type f          # Archivos
-type d          # Directorios
-type l          # Symlinks

# Por nombre
-name "*.conf"   # Exacto (case sensitive)
-iname "*.CONF"  # Case insensitive

# Por tamaño
-size +100M      # Mayor a 100MB
-size -1k        # Menor a 1KB
-size +25k -size -28k  # Entre 25KB y 28KB

# Por tiempo
-mtime -7        # Modificado en últimos 7 días
-mtime +30       # Modificado hace más de 30 días
-newermt DATE    # Más nuevo que fecha

# Por permisos
-perm 777        # Permisos exactos
-perm -4000      # Tiene SUID
-perm -o+w       # Escribible por otros

# Por propietario
-user root       # Propietario root
-group sudo      # Grupo sudo
-nouser          # Sin propietario

Operadores de Tamaño

Sufijo Valor
c Bytes
k Kilobytes (1024)
M Megabytes
G Gigabytes

Ejecutar Comandos en Resultados

# Ejecutar ls -l en cada resultado
find / -name "*.conf" -exec ls -l {} \;

# Buscar contenido dentro de archivos
find / -name "*.log" -exec grep -l "error" {} \;

# Contar resultados
find / -name "*.bak" -exec echo . \; | wc -c

Búsquedas Útiles para Pentesting

Archivos SUID/SGID

find / -perm -4000 2>/dev/null      # SUID
find / -perm -2000 2>/dev/null      # SGID
find / -perm -6000 2>/dev/null      # Ambos

Archivos Escribibles

find / -writable 2>/dev/null        # Escribibles por usuario actual
find / -perm -o+w 2>/dev/null       # Escribibles por otros
find /etc -writable 2>/dev/null     # Configs escribibles

Archivos Sensibles

find / -name "password*" 2>/dev/null
find / -name "*backup*" 2>/dev/null
find / -name "*.key" 2>/dev/null
find / -name "id_rsa" 2>/dev/null

Archivos Recientes

find / -mtime -1 2>/dev/null        # Modificados hoy
find / -mmin -60 2>/dev/null        # Última hora
find / -newermt 2024-01-01 2>/dev/null

Diferencias: find vs locate

Aspecto find locate
Velocidad Lento (escanea FS) Rápido (usa DB)
Precisión Tiempo real Puede estar desactualizado
Filtros Múltiples Limitados
Uso Búsquedas complejas Búsquedas rápidas
Actualización Siempre actual Requiere updatedb
# Actualizar base de datos de locate
sudo updatedb

# Búsqueda rápida con locate
locate "*.conf"

¿Qué Aprendimos?

  1. find es versátil: Combina múltiples filtros para búsquedas precisas
  2. Redirección de errores: 2>/dev/null oculta errores de permisos
  3. Rangos de tamaño: Usar dos opciones -size para crear rangos
  4. locate para velocidad: Ideal cuando la DB está actualizada
  5. which para binarios: Verifica rápidamente si un comando existe

Autoevaluación

  1. ¿Cuál es la diferencia entre -name e -iname?
  2. ¿Cómo buscarías archivos modificados en las últimas 24 horas?
  3. ¿Qué hace -perm -4000?
  4. ¿Por qué es importante 2>/dev/null en búsquedas?
  5. ¿Cuándo usarías locate en lugar de find?

Referencias