Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
supply-chain-monitor — Monitor automatizado de segurança da cadeia de suprimentos que consulta os registros PyPI e npm, compara novas versões com as anteriores e utiliza análise de LLM para detectar alterações maliciosas de código, com alertas no Slack. | Kitploit
Ferramentas/GitHubGitHub/elastic/supply-chain-monitor
Análise de VulnerabilidadesAnálise de CódigoAnálise de MalwareInteligência de AmeaçasSegurança da Cadeia de SuprimentosResposta a Incidentes
GitHubelastic/supply-chain-monitor

supply-chain-monitor

Monitor automatizado de segurança da cadeia de suprimentos que consulta os registros PyPI e npm, compara novas versões com as anteriores e utiliza análise de LLM para detectar alterações maliciosas de código, com alertas no Slack.

Ver Repositório
5296157há 6 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Supply Chain Monitor

License: MIT

Monitoramento automatizado dos principais pacotes PyPI e npm para comprometimento da cadeia de suprimentos. Consulta ambos os registros em busca de novos lançamentos, faz diff de cada lançamento em relação ao seu predecessor e usa um LLM (via Cursor Agent CLI) para classificar os diffs como benignos ou maliciosos. Descobertas maliciosas disparam um alerta no Slack.

Ambos ecossistemas são monitorados por padrão. Use --no-pypi ou --no-npm para desabilitar um.

Como Funciona

Cada ecossistema executa sua própria thread de consulta, mas compartilha o pipeline de análise e alerta.

         ┌─── 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   │
                                   └───────────────┘

Alvos de Detecção

A análise do LLM é instruída a procurar por:

  • Código ofuscado (base64, exec, eval, XOR, strings codificadas)
  • Chamadas de rede para hosts inesperados
  • Escritas no sistema de arquivos em locais de inicialização/persistência
  • Criação de processos e comandos de shell
  • Esteganografia ou ocultação de dados em arquivos de mídia
  • Exfiltração de credenciais e tokens
  • Indicadores de typosquatting

Pré-requisitos

  • Python 3.9+ — instale as dependências de tempo de execução com pip install -r requirements.txt (a stdlib cobre a maior parte da ferramenta; requests é usado para uploads no Slack)
  • Cursor Agent CLI — o binário autônomo agent, não o IDE

Instalando o Cursor Agent CLI

Windows (PowerShell):

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

macOS / Linux:

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

Verifique com:

agent --version

Você deve estar autenticado com o Cursor (agent login ou definir CURSOR_API_KEY).

Configuração do Slack

Coloque seu token do bot do Slack em etc/slack.json:

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

O bot precisa do escopo chat:write no canal de destino. O campo channel é o ID do canal do Slack onde os alertas são postados.

Início Rápido

# Única execução: analisa lançamentos dos últimos ~10 minutos
python monitor.py --once

# Contínuo: monitora os 1000 principais pacotes (ambos ecossistemas), consulta a cada 5 minutos
python monitor.py --top 1000 --interval 300

# Produção: monitora os 15000 principais, alerta para o Slack
python monitor.py --top 15000 --interval 300 --slack

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

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

Visão Geral dos Arquivos

ArquivoFinalidade
monitor.pyOrquestrador principal — consulta PyPI + npm, diff, analisa, alerta (threads paralelas)
pypi_monitor.pyConsultor PyPI autônomo (usado para exploração)
package_diff.pyBaixa e compara duas versões de qualquer pacote PyPI ou npm
analyze_diff.pyEnvia um diff para o Cursor Agent CLI, analisa veredito
top_pypi_packages.pyBusca e lista os N principais pacotes PyPI por contagem de downloads
slack.pyCliente da API do Slack (SendMessage, PostFile)
etc/slack.jsonCredenciais do bot do Slack
last_serial.yamlEstado de consulta persistido (serial PyPI + sequência/época npm)
logs/Arquivos de log diários (monitor_YYYYMMDD.log)

Detalhes de Uso

monitor.py — Orquestrador Principal

python monitor.py [OPÇÕES]

Opções:
  --top N          Número de pacotes principais a observar por ecossistema (padrão: 15000)
  --interval SECS  Intervalo de consulta em segundos (padrão: 300)
  --once           Única passagem sobre eventos recentes, depois sai
  --slack          Habilita alertas do Slack para descobertas maliciosas
  --model MODEL    Substitui o modelo LLM (padrão: composer-2-fast)
  --debug          Habilita log DEBUG (inclui saída bruta do agent)

Opções PyPI:
  --no-pypi        Desabilita monitoramento PyPI
  --serial N       Serial do changelog PyPI para iniciar

Opções npm:
  --no-npm         Desabilita monitoramento npm
  --npm-top N      Top N pacotes npm a observar (padrão: igual a --top)
  --npm-seq N      Sequência de replicação npm para iniciar

PyPI e npm cada um executa em sua própria thread de consulta. O estado da consulta (serial PyPI, sequência + época npm) é persistido em last_serial.yaml para que o monitor retome de onde parou após uma reinicialização.

Pipeline PyPI:

  1. Carrega os N principais pacotes do conjunto de dados hugovk/top-pypi-packages como uma lista de observação
  2. Conecta-se à API XML-RPC do PyPI e obtém o número de serial atual
  3. A cada --interval segundos, chama changelog_since_serial() — uma única chamada de API que retorna todos os eventos desde a última verificação
  4. Filtra os eventos "new release" que correspondem à lista de observação
  5. Para cada novo lançamento: baixa versões antiga + nova (sdist e wheel quando ambos existem), faz diff, analisa via LLM e alerta o Slack se malicioso
Baixar ferramenta