Volver al inicio

Determinación de Distribuciones Linux por Paquetes vía API KUMA

El artículo describe un método para determinar automáticamente distribuciones Linux basado en el análisis de paquetes instalados utilizando la API de la plataforma KUMA. Se presenta un algoritmo con un sistema de ponderación para la identificación precisa de SO en infraestructuras grandes.

Automatización Linux: Cómo Determinar Distribución por Paquetes
Advertisement 728x90

Automatización de detección de distribuciones Linux por paquetes con API de KUMA

Un analista de SOC se enfrentó al reto de inventariar sistemas operativos en una gran empresa. En lugar de revisar manualmente 18.000 dispositivos, creó un script en Python que extrae datos de software instalado mediante la API de la plataforma KUMA y analiza paquetes para identificar con precisión las distribuciones Linux. La solución usa un sistema de puntuación ponderada que considera paquetes únicos del sistema, gestores de paquetes y sufijos de versión.

Trabajo con la API de KUMA y procesamiento de JSON

KUMA (Kaspersky Unified Monitoring and Analysis Platform) ofrece datos de activos a través de su API, aunque con limitaciones, como la ausencia de filtros directos de activos en la interfaz web. La autenticación se realiza con un token, evitando credenciales hardcodeadas. Aquí va un ejemplo de código para hacer una petición:

token = "my_token"
url = "my_api_url"
api_header={
  "Content-Type": "application/json",
  "Authorization": f"Bearer {token}"
}
req = request.get(url, headers=api_header)
data = req.json()

La estructura de la respuesta JSON incluye campos para el SO y el software instalado. Para extraer datos anidados como listas de paquetes, se usa una función recursiva:

Google AdInline article slot
def recursive_extract(data, result=None):
    result = []
    if isinstance(data, dict):
        for key, value in data.items():
            if key == "software":
                result.append(value)
            recursive_extract(value, result)
    return result

Versionado de paquetes en Linux

Entender las versiones de paquetes es clave para el análisis. El versionado semántico estándar sigue MAJOR.MINOR.PATCH, como 2.36.105. Las distros añaden sus sufijos propios:

  • Ubuntu: .ubuntu o +ubuntu
  • Debian: .deb o +deb
  • ALT Linux: .alt o +alt
  • Astra Linux: .astra o astra

Un ejemplo complejo: 2.2.6-2+deb10u9+ci1+astra1, donde deb10 indica Debian 10, u9 es la novena actualización y astra señala la adaptación de Astra Linux.

Algoritmo de detección de distribuciones Linux

El algoritmo examina los paquetes instalados para identificar el tipo de SO, la distro específica, la versión y el nivel de confianza. Emplea un sistema de puntuación ponderada:

Google AdInline article slot
  • 150 puntos: paquetes únicos del sistema (p. ej., ubuntu-release)
  • 20 puntos: gestores de paquetes (apt, yum, rpm)
  • 15 puntos: sufijos de versión (.ubuntu, .alt)
  • 10 puntos: paquetes específicos de la distro
  • 5 puntos: indicadores indirectos

Soporta distros como Ubuntu, Debian, ALT Linux, Astra Linux, Fedora y más. La lógica fluye así:

  • Escanear paquetes y sumar puntuaciones por distro.
  • Totalizar puntuaciones y seleccionar la más alta.
  • Desempatar priorizando paquetes del sistema.
  • Extraer versión de paquetes del sistema o sufijos.

Niveles de confianza: Alto (≥150 puntos), Medio (20–49 puntos) o Bajo (<20 puntos).

Características clave de la implementación

  • Salida flexible: Soporta CSV o JSON, con filtrado opcional por nivel de confianza.
  • Manejo de datos incompletos: Funciona aunque falte info del SO (os: null) o el array de software esté vacío.
  • Jerarquía de prioridad: Paquetes únicos del sistema tienen mayor peso para mayor precisión.
  • Diseño escalable: Fácil de extender añadiendo nuevas distros e indicadores.

Lecciones clave

  • Automatizar el inventario de SO vía API de KUMA ahorra horas en miles de dispositivos.
  • La puntuación ponderada identifica distros Linux con precisión a partir de datos de paquetes.
  • Cubre distros principales, incluidas rusas como ALT Linux y Astra Linux.
  • Flexibilidad de salida CSV/JSON se integra sin problemas con otras herramientas.
  • Robusta ante datos incompletos, ideal para escenarios reales.

— Editorial Team

Google AdInline article slot
Advertisement 728x90

Leer después