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.jsonv1.0.0, ícone lucideshield-alert,icon_bg #f8fafc,icon.pngpróprio (logo da marca) eicon.svg; semregisterTab— a UI vive no Intelligence Hub (sem aba/sidebar solta);registerDoc('virustotal','VirusTotal','shield-alert',doc.md)eregisterModal('virustotal-modals',modals.php); semcronjob.json(plugin sob demanda). - Configuração: múltiplas API keys em
DB::setConfig('plugin.virustotal.keys'); rotação circular comlast_key_indexpersistido e failover automático em 429/401/403 (tenta a próxima chave até esgotar). - API v3 via cURL:
virustotal_indicator_endpoint()mapeiafiles/{hash},ip_addresses/{ip},domains/{domínio}eurls/{base64url id}; headerx-apikey, timeout de 12s eSSL_VERIFYconfigurável via constante do Core. - Classificação:
maliciousquandomalicious > 0oususpicious > 1;cleancaso contrário;unknownpara 404 (não encontrado na base) — com contagensmalicious/suspicious/totale data da última análise. - Cache local com TTL: chaves
vt_c_<md5>(hash) evt_<type>_<md5>viaDB::setConfig; TTL de 24h para resultados e 12h paraunknown(pode ser submetido depois). - Scan manual da tarefa:
virustotal_scan_taskvarre anexos físicos (tarefa e comentários, SHA-256 viahash_file) e hashes citados no texto (MD5/SHA-1/SHA-256);forceignora 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 statusok/needs_key/error/skipped; sem chave configurada o sinal éneeds_key("API Key necessária") sem alterar markdown; orçamentoslice ≤ min(6, max_live_lookups); severidademin(100, 60 + malicious × 3)para malicioso e8para limpo. - Fast Responses:
/virustotal <valor>(argumento obrigatório) →virustotal_lookupcom 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_taskevirustotal_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.phpregistra as origensvirustotal.comeapi.virustotal.compara 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/filedo VirusTotal.
Andamento no GitHub (issues)
Painel em tempo real com as issues mais recentes do repositório.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
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
- PHP 8
- cURL
- VirusTotal API v3
- Alpine.js
- Tailwind CSS
- Plugin NEXUS
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.