Imagem de capa do projeto: NEXUS AlienVault OTX EM ANDAMENTO

Resumo técnico

Plugin NEXUS de Threat Intelligence gratuita via AlienVault OTX: busca de IOCs (IP, domínio, hash, URL e CVE) com classificação automática de tipo, sincronização de pulsos subscritos que viram tarefas NEXUS com dedup por pulse_id, enriquecimento de tarefas no Intelligence Hub, cache com TTL configurável e cron de poll com throttle de 15 minutos — 100% sem custo de licença.

Escopo executado

  • Backend backend.php (688 linhas): OTX_API_BASE = https://otx.alienvault.com/api/v1; autenticação por header X-OTX-API-KEY (conta gratuita).
  • Configuração (otx_get_config / otx_settings_save): api_key, enrich_tasks, auto_tasks, default_project (padrão "Geral"), min_severity (low/medium/high), filter_types e cache_ttl (limitado a 60s–30 dias); otx_public_config() nunca expõe a chave (apenas api_configured).
  • Tabelas (criadas por otx_install()): otx_cache (kind, query_key, data, error, status, http_code, task_id; UNIQUE uk_kind_key), otx_history (provider, query_type, query_val, status, task_id; idx_provider) e otx_pulses (pulse_id com UNIQUE uk_pulse, name, description, severity, author, adversary, ioc_count, task_id, raw).
  • Cache: TTL configurável (cache_ttl), upsert por kind+chave (chave em minúsculo); otx_cache_put grava cache e histórico juntos; parâmetro force ignora o cache.
  • HTTP (otx_http_get): connect 5s / timeout 20s; trata 401/403 (chave inválida), 404 como not_found: true (indicador sem pulsos), 429 (rate limit) e erros com detail do JSON.
  • otx_classify — detecção automática: IPv4, IPv6, MD5 (32 hex), SHA1 (40), SHA256 (64), URL (http(s)://), CVE (CVE-\d{4}-\d{4,}) e domínio (regex); entrada não reconhecida retorna erro descritivo.
  • otx_search / otx_indicator_get — GET /indicators/{type}/{indicator}/general; retorna first_seen, last_seen e pulse_info.pulses associados.
  • otx_status — GET /users/me; valida a chave e retorna o perfil (username/login).
  • otx_sync_pulses — GET /pulses/subscribed?limit=100; dedup por pulse_id (pulsos já processados são pulados); filtro de min_severity; cria tarefa NEXUS via task_create com título [OTX] {pulso} — {adversário}, descrição markdown (autor, adversário, TLP, lista de IOCs) e prioridade mapeada (critical 4, high/blocking 3, medium 2, low 1); adiciona comentário system com a contagem de IOCs; registra em otx_pulses.
  • otx_pulse_get — GET /pulses/{id} (cache kind pulse).
  • otx_stats — pulsos processados, consultas hoje, pulsos com task, api_configured e entradas de cache.
  • otx_pulses_list — limit ≤ 200, ordenado por created_at DESC; otx_history — page e limit ≤ 100.
  • Cron (cronjob.json): job otx_poll_pulses — poll de pulsos subscritos com throttle de 15 minutos (otx_cron_check(900) marca last_cron em config; otx_cron_run → otx_sync_pulses).
  • Intelligence Hub: enricher alienvault-otx (prioridade 40, tipos ip, ipv4, ipv6, domain, hostname, url, hash, md5, sha1, sha256, cve) — ativado por enrich_tasks + chave configurada; dedupe por tipo:valor; IOC presente em pulsos → signal severity: 'high', status: 'malicious', summary OTX: IOC presente em N pulso(s) · {nome do primeiro pulso}.
  • API: 11 actions via PluginManager::registerApiAction (otx_settings, otx_settings_save, otx_status, otx_search, otx_indicator_get, otx_pulse_get, otx_sync_pulses, otx_pulses, otx_stats, otx_history, otx_enrich_task).
  • UI Alpine.js (tab.php, 440 linhas): tema âmbar; indicador de status (verde "API Online" com pulso / vermelho "Chave inválida" / âmbar "Não configurado") com link Configurar; 4 cards de stats (Pulsos, Consultas hoje, Com task, Cache); abas Buscar IOC (checkbox "Forçar", badge Cache/Live, first_seen/last_seen, pulsos associados com badge ATTRIBUIÇÃO quando há attack_ids), Pulsos (botão "Sincronizar agora", severidade, task vinculada), Histórico (tipo/valor/status/data) e Configurações (API Key, toggles de auto-tarefa e enriquecimento, severidade mínima, projeto padrão, tipos de IOC).
  • Fastr: 1 comando — /otx <IOC> (query, arg_required=true).
  • Primeiro plugin da série com cronjob.json — poll periódico de pulsos (15 min), além do cache de 7 dias.

Stack e ferramentas

  • PHP 8 (sem framework)
  • MySQL 8 (otx_cache + otx_history + otx_pulses)
  • Alpine.js + Tailwind CSS (premium light, amber ring)
  • Sistema de plugins do NEXUS (PluginManager + cronjob.json)
  • cURL → AlienVault OTX API v1 (otx.alienvault.com)

Tags operacionais

  • Threat Intelligence
  • OTX
  • AlienVault
  • IOC
  • Pulsos de Ameaça
  • OSINT
  • Plugin NEXUS

Resultado operacional

  • Busca de IOC gratuita com classificação automática de tipo (IP, domínio, hash, URL, CVE) e pulsos associados legíveis na própria aba.
  • Pulsos subscritos viram tarefas NEXUS automáticas com dedup por pulse_id — intelligence contínua sem custo e sem duplicação.
  • Enriquecimento automático: IOCs citados em tarefas/comentários viram sinais de severidade alta quando presentes em pulsos do OTX.
  • Monitoramento embutido: stats de pulsos, consultas do dia, tarefas criadas e entradas de cache.
  • Cron de 15 minutos mantém os pulsos frescos sem depender de ação manual.
  • Cache com TTL configurável e histórico auditável de consultas e sincronizações.

Andamento no GitHub (issues)

Painel em tempo real com as issues mais recentes do repositório.

abertas (amostra): -- fechadas (amostra): -- base: -- ultimas issues

carregando andamento...

Resultados reais

Plugin NEXUS de Threat Intelligence gratuita via AlienVault OTX: busca de IOCs (IP, domínio, hash, URL e CVE) com classificação automática, sincronização de pulsos subscritos que viram tarefas NEXUS com dedup por pulse_id, enriquecimento de tarefas no Intelligence Hub, cache com TTL configurável e cron de poll com throttle de 15 minutos.

Arquitetura e organização

Execução e operação

O projeto segue fluxo reprodutível de execução com validação técnica em ambiente de produção/similar.

Screenshots

Falar sobre este projeto

Aplique este modelo no seu ambiente e acelere a entrega com consistência técnica.