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 headerX-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_typesecache_ttl(limitado a 60s–30 dias);otx_public_config()nunca expõe a chave (apenasapi_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) eotx_pulses(pulse_id comUNIQUE 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_putgrava cache e histórico juntos; parâmetroforceignora o cache. - HTTP (
otx_http_get): connect 5s / timeout 20s; trata 401/403 (chave inválida), 404 comonot_found: true(indicador sem pulsos), 429 (rate limit) e erros comdetaildo 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; retornafirst_seen,last_seenepulse_info.pulsesassociados.otx_status— GET/users/me; valida a chave e retorna o perfil (username/login).otx_sync_pulses— GET/pulses/subscribed?limit=100; dedup porpulse_id(pulsos já processados são pulados); filtro demin_severity; cria tarefa NEXUS viatask_createcom 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áriosystemcom a contagem de IOCs; registra emotx_pulses.otx_pulse_get— GET/pulses/{id}(cache kindpulse).otx_stats— pulsos processados, consultas hoje, pulsos com task,api_configurede entradas de cache.otx_pulses_list— limit ≤ 200, ordenado porcreated_at DESC;otx_history— page e limit ≤ 100.- Cron (
cronjob.json): jobotx_poll_pulses— poll de pulsos subscritos com throttle de 15 minutos (otx_cron_check(900)marcalast_cronem config;otx_cron_run→otx_sync_pulses). - Intelligence Hub: enricher
alienvault-otx(prioridade 40, tiposip,ipv4,ipv6,domain,hostname,url,hash,md5,sha1,sha256,cve) — ativado porenrich_tasks+ chave configurada; dedupe portipo:valor; IOC presente em pulsos → signalseverity: 'high',status: 'malicious', summaryOTX: 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.
live feed
abrir issues no githubcarregando andamento...
não foi possivel carregar as issues agora. abra no github pelo link acima.
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
- PHP 8
- MySQL 8
- 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.