Imagem de capa do projeto: NEXUS VirusTotal EM ANDAMENTO

Resumo técnico

Plugin do NEXUS que consulta a reputação de hashes, IPs, domínios e URLs na API v3 do VirusTotal, alimentando o Intelligence Hub com sinais de severidade. Suporta múltiplas chaves com rotação circular e failover em rate limit, cache local com TTL e scan manual de anexos físicos da tarefa.

Escopo executado

  • Registro: plugin.json v1.0.0, ícone lucide shield-alert, icon_bg #f8fafc, icon.png próprio (logo da marca) e icon.svg; sem registerTab — a UI vive no Intelligence Hub (sem aba/sidebar solta); registerDoc('virustotal','VirusTotal','shield-alert',doc.md) e registerModal('virustotal-modals',modals.php); sem cronjob.json (plugin sob demanda).
  • Configuração: múltiplas API keys em DB::setConfig('plugin.virustotal.keys'); rotação circular com last_key_index persistido e failover automático em 429/401/403 (tenta a próxima chave até esgotar).
  • API v3 via cURL: virustotal_indicator_endpoint() mapeia files/{hash}, ip_addresses/{ip}, domains/{domínio} e urls/{base64url id}; header x-apikey, timeout de 12s e SSL_VERIFY configurável via constante do Core.
  • Classificação: malicious quando malicious > 0 ou suspicious > 1; clean caso contrário; unknown para 404 (não encontrado na base) — com contagens malicious/suspicious/total e data da última análise.
  • Cache local com TTL: chaves vt_c_<md5> (hash) e vt_<type>_<md5> via DB::setConfig; TTL de 24h para resultados e 12h para unknown (pode ser submetido depois).
  • Scan manual da tarefa: virustotal_scan_task varre anexos físicos (tarefa e comentários, SHA-256 via hash_file) e hashes citados no texto (MD5/SHA-1/SHA-256); force ignora o cache; fallback para cache expirado quando a API falha.
  • Enricher do Intelligence Hub: nx_intel_register_enricher('virustotal', ['hash','ip','domain','url'], 'virustotal_intel_enrich', 53) — sinais com status ok/needs_key/error/skipped; sem chave configurada o sinal é needs_key ("API Key necessária") sem alterar markdown; orçamento slice ≤ min(6, max_live_lookups); severidade min(100, 60 + malicious × 3) para malicioso e 8 para limpo.
  • Fast Responses: /virustotal <valor> (argumento obrigatório) → virustotal_lookup com auto-detecção de tipo (MD5/SHA-1/SHA-256 → hash; IP; URL; senão domínio).
  • API com 5 actions: virustotal_get_config (chaves mascaradas), virustotal_save_config, virustotal_test_key (valida com hash limpo conhecido; 200/404 OK, 401/403 negada, 429 limite), virustotal_scan_task e virustotal_lookup.
  • Modal de configuração: lista de chaves mascaradas (xxxx••••••••xxxx), teste individual por chave com estados (zap → spinner → check/x), adicionar com deduplicação e remover.
  • Modal de detalhes (clique no sinal VT do hub): cards de Status (Sujo/Limpo/Desconhecido), Detecções (X / total) e Tipo de Hash (SHA-256/SHA-1/MD5); descrição contextual da ameaça; hash completo com botão copiar; metadados da consulta; link externo "Ver no VirusTotal" (gui/file/<hash>).
  • CORS: cors.php registra as origens virustotal.com e api.virustotal.com para consultas de escaneamento.
  • Persistência sem tabelas MySQL: tudo via system_settings (DB::getConfig/DB::setConfig); assets/virustotal.js é legado vazio (UI migrada para o hub).

Stack e ferramentas

  • PHP 8 backend (sem framework) + cURL (VirusTotal API v3)
  • Alpine.js + Tailwind CSS (modais de configuração e detalhes)
  • Plugin API interno (actions + enricher + fastr.json + cors.php + system_settings)

Tags

VirusTotal, Threat Intel, Hash, Reputação, OSINT, Intelligence Hub, Plugin NEXUS

Resultado operacional

  • Reputação em um clique: hashes, IPs, domínios e URLs de tarefas/comentários viram sinais do Intelligence Hub com severidade calculada.
  • Rotação de chaves: múltiplas keys gratuitas alternadas automaticamente contornam o rate limit do free tier.
  • Cache com TTL: consultas repetidas respondem do cache local (24h/12h) sem gastar cota.
  • Scan de anexos físicos: SHA-256 de arquivos anexados em tarefas e comentários verificados sem submissão automática.
  • Sem chave? Sem ruído: o hub sinaliza "API Key necessária" sem quebrar o fluxo da tarefa.
  • Verificação externa: modal com link direto para o gui/file do VirusTotal.

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 do NEXUS que consulta a reputação de hashes, IPs, domínios e URLs na API v3 do VirusTotal, alimentando o Intelligence Hub com sinais de severidade. Suporta múltiplas chaves com rotação circular e failover em rate limit, cache local com TTL e scan manual de anexos físicos da tarefa.

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.