Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
supply-chain-monitor — Monitor automatizado de seguridad en la cadena de suministro que consulta los registros PyPI y npm, compara las nuevas versiones con las anteriores y utiliza análisis mediante LLM para detectar cambios de código maliciosos con alertas en Slack. | Kitploit
Herramientas/GitHubGitHub/elastic/supply-chain-monitor
Análisis de VulnerabilidadesAnálisis de CódigoAnálisis de MalwareInteligencia de AmenazasSeguridad de Cadena de SuministroRespuesta a Incidentes
GitHubelastic/supply-chain-monitor

supply-chain-monitor

Monitor automatizado de seguridad en la cadena de suministro que consulta los registros PyPI y npm, compara las nuevas versiones con las anteriores y utiliza análisis mediante LLM para detectar cambios de código maliciosos con alertas en Slack.

Ver Repositorio
5296157hace 6 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Monitor de Cadena de Suministro

License: MIT

Monitoreo automatizado de los paquetes principales de PyPI y npm para detectar compromisos en la cadena de suministro. Consulta ambos registros en busca de nuevas versiones, compara cada versión con su predecesora y utiliza un LLM (a través de Cursor Agent CLI) para clasificar las diferencias como benignas o maliciosas. Los hallazgos maliciosos activan una alerta en Slack.

Ambos ecosistemas se monitorean de forma predeterminada. Use --no-pypi o --no-npm para desactivar uno.

Cómo Funciona

Cada ecosistema ejecuta su propio hilo de consulta, pero comparte la canalización de análisis y alertas.

         ┌─── PyPI ──────────────────────┐   ┌─── npm ───────────────────────┐
         │                               │   │                               │
         │ changelog_since_serial()      │   │ CouchDB _changes feed         │
         │       │                       │   │       │                       │
         │       ▼                       │   │       ▼                       │
         │  ┌────────────┐               │   │  ┌────────────┐               │
         │  │ All PyPI   │─┐             │   │  │ All npm    │─┐             │
         │  │ events     │ │             │   │  │ changes    │ │             │
         │  └────────────┘ ▼             │   │  └────────────┘ ▼             │
         │ hugovk ──► Watchlist          │   │ download-counts ─► Watchlist  │
         │       │                       │   │       │                       │
         │ "new release" events only     │   │ new versions since last epoch │
         └───────────────┬───────────────┘   └───────────────┬───────────────┘
                         │                                   │
                         ▼                                   ▼
               ┌───────────────────┐               ┌───────────────────┐
               │ Download old + new│               │ Download old + new│
               │ (sdist + wheel)   │               │ (tarball)         │
               └───────────────────┘               └───────────────────┘
                         │                                   │
                         └─────────────────┬─────────────────┘
                                           ▼
                                   ┌───────────────┐
                                   │ Unified diff  │
                                   │ report (.md)  │
                                   └───────┬───────┘
                                           ▼
                                   ┌───────────────┐  ◄── LLM analysis
                                   │ Cursor Agent  │      (read-only)
                                   │ CLI (ask mode)│
                                   └───────┬───────┘
                                           │
                                       verdict?
                                           │
                                 malicious │
                                           ▼
                                   ┌───────────────┐
                                   │ Slack alert   │
                                   └───────────────┘

Objetivos de Detección

Se solicita al análisis del LLM buscar:

  • Código ofuscado (base64, exec, eval, XOR, cadenas codificadas)
  • Llamadas de red a hosts inesperados
  • Escrituras en el sistema de archivos en ubicaciones de inicio/persistencia
  • Creación de procesos y comandos de shell
  • Esteganografía u ocultación de datos en archivos multimedia
  • Exfiltración de credenciales y tokens
  • Indicadores de typosquatting

Prerrequisitos

  • Python 3.9+ — instale las dependencias de ejecución con pip install -r requirements.txt (la stdlib cubre la mayor parte de la herramienta; requests se usa para las subidas a Slack)
  • Cursor Agent CLI — el binario independiente agent, no el IDE

Instalación de Cursor Agent CLI

Windows (PowerShell):

irm 'https://cursor.com/install?win32=true' | iex

macOS / Linux:

curl https://cursor.com/install -fsS | bash

Verifique con:

agent --version

Debe estar autenticado con Cursor (agent login o establecer CURSOR_API_KEY).

Configuración de Slack

Coloque su token de bot de Slack en etc/slack.json:

{
    "url": "https://hooks.slack.com/services/...",
    "bot_token": "xoxb-...",
    "channel": "C01XXXXXXXX"
}

El bot necesita el ámbito chat:write en el canal de destino. El campo channel es el ID del canal de Slack donde se publican las alertas.

Inicio Rápido

# Una sola ejecución: analizar versiones de los últimos ~10 minutos
python monitor.py --once

# Continuo: monitorear los 1000 paquetes principales (ambos ecosistemas), consultar cada 5 min
python monitor.py --top 1000 --interval 300

# Producción: monitorear los 15000 principales, alertar a Slack
python monitor.py --top 15000 --interval 300 --slack

# Solo npm, top 5000
python monitor.py --no-pypi --npm-top 5000

# Solo PyPI
python monitor.py --no-npm

Resumen de Archivos

ArchivoPropósito
monitor.pyOrquestador principal — consulta PyPI + npm, diff, analiza, alerta (hilos paralelos)
pypi_monitor.pyConsultor independiente de changelog de PyPI (usado para exploración)
package_diff.pyDescargar y comparar dos versiones de cualquier paquete de PyPI o npm
analyze_diff.pyEnviar un diff a Cursor Agent CLI, analizar el veredicto
top_pypi_packages.pyObtener y listar los N paquetes principales de PyPI por descargas
slack.pyCliente de API de Slack (SendMessage, PostFile)
etc/slack.jsonCredenciales del bot de Slack
last_serial.yamlEstado de consulta persistido (serial de PyPI + secuencia/época de npm)
logs/Archivos de registro diarios (monitor_YYYYMMDD.log)

Detalles de Uso

monitor.py — Orquestador Principal

python monitor.py [OPCIONES]

Opciones:
  --top N          Número de paquetes principales a monitorear por ecosistema (predeterminado: 15000)
  --interval SECS  Intervalo de consulta en segundos (predeterminado: 300)
  --once           Una sola pasada sobre eventos recientes, luego salir
  --slack          Habilitar alertas de Slack para hallazgos maliciosos
  --model MODEL    Sobrescribir el modelo LLM (predeterminado: composer-2-fast)
  --debug          Habilitar registro DEBUG (incluye salida raw del agente)

Opciones de PyPI:
  --no-pypi        Deshabilitar monitoreo de PyPI
  --serial N       Serial del changelog de PyPI desde el que comenzar

Opciones de npm:
  --no-npm         Deshabilitar monitoreo de npm
  --npm-top N      N principales paquetes npm a monitorear (predeterminado: igual que --top)
  --npm-seq N      Secuencia de replicación npm desde la que comenzar

PyPI y npm se ejecutan cada uno en su propio hilo de consulta. El estado de consulta (serial de PyPI, secuencia + época de npm) se persiste en last_serial.yaml para que el monitor se reanude donde lo dejó después de un reinicio.

Canalización de PyPI:

  1. Carga los N paquetes principales del conjunto de datos hugovk/top-pypi-packages como lista de seguimiento
  2. Se conecta a la API XML-RPC de PyPI y obtiene el número de serial actual
  3. Cada --interval segundos, llama a changelog_since_serial() — una única llamada API que devuelve todos los eventos desde la última comprobación
  4. Filtra los eventos de "new release" que coinciden con la lista de seguimiento
  5. Para cada nueva versión: descarga las versiones antigua + nueva (sdist y wheel cuando ambas existen), diff, analiza a través del LLM y alerta a Slack si es malicioso
Descargar herramienta