Enumeración automatizada con LinPEAS

LinuxBeginner
Practicar Ahora

Introducción

La escalada de privilegios es una fase crítica en las pruebas de penetración y el hacking ético. Una vez que un atacante obtiene acceso inicial con pocos privilegios a un sistema, su siguiente objetivo suele ser elevar sus privilegios a administrador o usuario root. Una escalada de privilegios exitosa depende en gran medida de una enumeración meticulosa del sistema: recopilar tanta información como sea posible sobre la configuración del sistema objetivo, los procesos en ejecución, los permisos de archivos y el software instalado.

Este módulo debe reforzar una regla fundamental: la enumeración precede a la explotación. La mayoría de las escaladas de privilegios exitosas no son magia; se trata de notar una configuración errónea o una relación que ya existía.

Para agilizar este tedioso proceso, los profesionales de la seguridad utilizan scripts de enumeración automatizados. Una de las herramientas más populares y estándar de la industria es LinPEAS (Linux Privilege Escalation Awesome Script). LinPEAS busca automáticamente posibles rutas para escalar privilegios en hosts Linux/Unix/macOS y resalta los hallazgos utilizando un sistema codificado por colores para indicar la probabilidad de una explotación exitosa.

La automatización ayuda porque los sistemas modernos tienen demasiadas partes móviles para inspeccionarlas completamente a mano en cada compromiso. Sin embargo, los resultados del script aún requieren interpretación humana.

En este laboratorio, simularás un escenario de post-explotación. Actuarás como un evaluador de penetración que necesita transferir el script LinPEAS desde su máquina "atacante" a una máquina "objetivo", ejecutarlo y analizar los resultados para identificar vectores de escalada de alta probabilidad.

Iniciar un servidor web local para la transferencia

En este paso, aprenderás cómo alojar archivos para que puedan ser transferidos a una máquina objetivo. Durante una prueba de penetración, a menudo tienes un script útil (como LinPEAS) en tu máquina local, pero necesitas una forma de llevarlo al servidor objetivo comprometido.

Una forma rápida e integrada de alojar archivos en Linux es utilizando el módulo de servidor HTTP de Python. Esto te permite convertir cualquier directorio en un servidor web ligero al instante.

Para este laboratorio, hemos simulado dos entornos dentro de tu espacio de trabajo. El directorio ~/project/attacker representa tu máquina local que contiene el script linpeas.sh. El directorio ~/project/target representa el servidor comprometido donde necesitas descargar el script.

Primero, navega al directorio del atacante donde se encuentra el script:

cd ~/project/attacker

Lista el contenido del directorio para verificar que el script esté allí:

ls -l

Deberías ver linpeas.sh en la salida. Ahora, inicia un servidor HTTP de Python en el puerto 8080. Usaremos el símbolo & al final del comando para ejecutar el servidor en segundo plano, lo que te permitirá seguir usando la misma ventana de terminal:

python3 -m http.server 8080 &

Verás una salida similar a esta, indicando que el servidor está en ejecución:

Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...

Presiona Enter una vez para recuperar el prompt de tu terminal. Tu servidor web local ahora está alojando activamente el archivo linpeas.sh.

Descargar LinPEAS al objetivo

En este paso, actuarás como la máquina objetivo comprometida y descargarás el script desde el servidor web del atacante.

Los sistemas Linux suelen tener utilidades de descarga de línea de comandos instaladas por defecto, como wget o curl. Estas herramientas son invaluables para extraer scripts y exploits hacia un sistema objetivo.

Primero, navega al directorio del objetivo simulado:

cd ~/project/target

Ahora, usa el comando wget para descargar el script linpeas.sh desde el servidor web local que iniciaste en el paso anterior. Dado que el servidor se está ejecutando en el mismo entorno para este laboratorio, usarás localhost como dirección:

wget http://localhost:8080/linpeas.sh

Verás una salida que muestra el progreso de la descarga:

--2026-10-25 10:00:00--  http://localhost:8080/linpeas.sh
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 645 [text/x-sh]
Saving to: ‘linpeas.sh’

linpeas.sh          100%[===================>]     645  --.-KB/s    in 0s

2026-10-25 10:00:00 (15.4 MB/s) - ‘linpeas.sh’ saved [645/645]

Verifica que el archivo se haya descargado correctamente listando el contenido del directorio:

ls -l

Ahora deberías ver linpeas.sh en tu directorio ~/project/target.

Ejecutar el script

En este paso, prepararás y ejecutarás el script LinPEAS.

Ejecutar la herramienta es solo el comienzo. El valor real proviene de reconocer qué hallazgos son ruido normal y cuáles se traducen en rutas de escalada prácticas.

Cuando descargas un script de Internet o lo transfieres a través de un servidor web, Linux elimina su permiso de "ejecución" por razones de seguridad. Si intentas ejecutarlo inmediatamente, recibirás un error de "Permission denied".

Para solucionar esto, debes usar el comando chmod (change mode) para agregar el permiso de ejecución (+x) al archivo.

Ejecuta el siguiente comando para hacer que el script sea ejecutable:

chmod +x linpeas.sh

Si ejecutas ls -l de nuevo, notarás que los permisos del archivo han cambiado (normalmente mostrando rwx para el usuario), y el nombre del archivo podría aparecer en un color diferente en tu terminal, indicando que ahora es un programa ejecutable.

Ahora, ejecuta el script. En Linux, para ejecutar un archivo ejecutable ubicado en tu directorio actual, debes anteponer ./. Esto le indica al sistema exactamente dónde encontrar el programa:

./linpeas.sh

Verás que el script se ejecuta y muestra varias comprobaciones del sistema. En un escenario del mundo real, LinPEAS genera miles de líneas de información. Para este laboratorio, estamos utilizando una versión simulada simplificada que destaca los conceptos básicos.

[+] LinPEAS - Linux Privilege Escalation Awesome Script (Mock Version)
========================================================================
[?] Basic System Information
Linux labex-vm 5.15.0-1040-aws #45-Ubuntu SMP ...

[!] HIGH PROBABILITY PRIVILEGE Escalation VECTORS
[+] SUID files:
-rwsr-xr-x 1 root root 43K /usr/bin/sudo
-rwsr-xr-x 1 root root 32K /usr/bin/su
-rwsr-xr-x 1 root root 15K /usr/bin/custom_backup (Unknown SUID)

[?] Checking sudo permissions
User labex may run the following commands on this host:
(ALL : ALL) ALL

[+] Enumeration Completed.

Tómate un momento para observar la salida. Nota cómo categoriza la información en secciones como "Basic System Information" y "SUID files".

Analizar vectores de alta probabilidad

En este paso, aprenderás cómo gestionar y analizar los resultados generados por los scripts de enumeración.

Debido a que los scripts de enumeración reales producen una cantidad abrumadora de texto, los evaluadores de penetración rara vez lo leen directamente desde la pantalla de la terminal. En su lugar, redirigen la salida a un archivo de texto para poder buscar en él más tarde utilizando herramientas como grep.

Ejecutemos el script de nuevo, pero esta vez usaremos el operador > para redirigir la salida a un archivo llamado results.txt:

./linpeas.sh > results.txt

Nota que esta vez no se imprimió nada en la pantalla. Todo el texto se envió directamente a results.txt.

Ahora, analicemos los resultados. LinPEAS es famoso por su codificación de colores, donde el texto en ROJO/AMARILLO indica una probabilidad del 99% de un vector de escalada de privilegios. En nuestra salida, marcó un archivo "Unknown SUID".

SUID (Set owner User ID up on execution) es un tipo especial de permiso de archivo otorgado a un archivo. Cuando se ejecuta un archivo con SUID, se ejecuta con los privilegios del propietario del archivo (a menudo root), en lugar del usuario que lo ejecutó. Si un binario personalizado o vulnerable tiene el bit SUID establecido, los atacantes pueden explotarlo para obtener una shell de root.

Usa el comando grep para buscar específicamente la palabra clave SUID en el archivo results.txt:

grep "SUID" results.txt

Deberías ver la siguiente salida:

[+] SUID files:
-rwsr-xr-x 1 root root 15K /usr/bin/custom_backup (Unknown SUID)

Al filtrar la salida, has identificado con éxito un archivo altamente sospechoso (/usr/bin/custom_backup). En una prueba de penetración real, tu siguiente paso sería investigar este binario específico para ver si puede ser explotado para otorgarte acceso root.

Resumen

En este laboratorio, experimentaste el proceso crítico de la enumeración automatizada del sistema para la escalada de privilegios. Aprendiste cómo alojar archivos localmente utilizando el módulo de servidor HTTP integrado de Python. También aprendiste cómo transferir archivos a una máquina objetivo utilizando herramientas de línea de comandos como wget. Además, practicaste la modificación de permisos de archivos para hacer que los scripts sean ejecutables y cómo ejecutarlos. Finalmente, aprendiste cómo redirigir la salida del script a un archivo y usar grep para analizar los datos en busca de vectores de escalada de alta probabilidad, como binarios SUID mal configurados.

Estas habilidades fundamentales son esenciales para cualquier profesional de la seguridad o evaluador de penetración al evaluar la postura de seguridad interna de un sistema Linux.