Imagem de capa do projeto: NEXUS BeVigil EM ANDAMENTO

Resumo técnico

Integração do NEXUS com a BeVigil OSINT API para descoberta de ativos em aplicativos Android: lookup por package_id (com.example.app) ou domínio, expondo hosts, S3 buckets, REST paths, IPs, e-mails, apps indexados e subdomínios — com score de exposição 0–100, cache local de 7 dias, comparador de superfícies, histórico paginado e exportação JSON.

Escopo executado

  • plugin.json: v1.0.0, categoria "Intelligence", website bevigil.com.
  • Backend backend.php (742 linhas) — integração com a BeVigil OSINT API (https://osint.bevigil.com, header X-Access-Token, Accept: application/json; connect timeout 5s, timeout total 25s, SSL_VERIFYPEER => true — verificação de certificado ativa, diferentemente de outros plugins da série).
  • Tabela bevigil_scans (criada por bevigil_install(), cache de 7 dias): query_hash varchar(32) UNIQUE (md5('package:…') ou md5('domain:…')), query_type, query_value, hosts_count, s3_count, apps_count, urls_count, assets_summary JSON, report_json JSON, score, raw_json JSON, task_id, cached, scanned_at; índices idx_query_type, idx_scanned_at, idx_score.
  • bevigil_detect_query_type — regex para distinguir package (com.foo.bar) de domínio; bevigil_lookup roteia para a função correta (ou retorna erro com instrução).
  • bevigil_lookup_package — 4 chamadas (/api/{pkg}/hosts, /S3-buckets, /all-assets, /report); extrai do bloco all-assets IPs (IP Address disclosure), AWS URLs, rest_api e e-mails; assets_summary com slices (hosts 80, s3 40, rest 40, ips 40, aws 40, emails 20).
  • bevigil_lookup_domain — normaliza (remove http(s)://, path e ponto final), chama /api/{domain}/apps, /subdomains e /urls; summary com packages 50, subdomains 60, urls 40.
  • Score 0–100 (menor = mais exposição): prefere campos explícitos do report (score, risk_score, riskScore, security_score, app_score; aninhados em summary/meta/app); na ausência, heurística — package: max(5, 100 − min(90, hosts*0.4 + s3*8 + ips*2 + aws*6)); domain: max(5, 100 − min(90, apps*3 + urls*0.2 + subs*0.3)).
  • Cache — consulta reusa registro por query_hash com scanned_at > NOW() − 7 dias; force=1 ignora; grava/atualiza com ON DUPLICATE KEY UPDATE e flag cached (badge "cache" na UI).
  • bevigil_stats — total, packages, domains, consultas de hoje, score médio, críticos (score < 40), api_configured, api_online, auto_enrich.
  • bevigil_history — paginação (page, limit ≤ 50), ORDER BY scanned_at DESC; retorna items/page/pages/total.
  • bevigil_compare — duas consultas (a, b) com delta B−A de score, hosts, s3, apps e urls.
  • bevigil_test_connection — smoke contra /api/com.whatsapp/hosts: 401/402 = erro, 200/404 = conexão OK (404 ainda prova a autenticação).
  • bevigil_export — payload JSON da consulta com format: 'json' e filename: 'bevigil-{query}.json'.
  • Erros mapeados: 401 key inválida, 402 créditos insuficientes, 404 não encontrado, timeout/erro de conexão.
  • Intelligence Hub: enricher SIGNAL (com severidade) bevigil_intel_enrich (prioridade 41, tipos domain, url, _text) — domain/url → superfície no domínio; _text → extração de packages com filtro de false positives (java., javax., kotlin., android., androidx., org.w3c., org.xml., com.google.android., com.android.); até 4 packages + 4 domains; budget de lookups (NX_INTEL_MAX_LIVE_LOOKUPS, default 12); severity = 100 − score (30 se sem score); status ok/error/needs_key (sem API key)/skipped (orçamento); flag cached; respeita auto_enrich.
  • Config (bevigil_settings / bevigil_settings_save) — api_key (com keep_key para não sobrescrever) + auto_enrich via DB::setConfig('bevigil_settings'); bevigil_public_config expõe apenas api_configured/auto_enrich (nunca a key).
  • UI Alpine.js (tab.php, 374 linhas) — tema esmeralda, ícone smartphone, aba em Segurança; 4 sub-abas (Lookup, Histórico, Comparar, Configurações); 5 KPI cards (Consultas, Packages, Domínios, Score médio, Críticos); badge API Key OK / Configurar key com atalho; scoreClass (rose < 40, amber < 70, emerald ≥ 70); header do resultado muda de cor conforme score (rose/emerald) + badge "cache"; chips de hosts, S3 em vermelho, REST paths em <pre>, apps com nome; Export JSON client-side (Blob + download); histórico clicável (re-consulta); comparador com delta (A / Delta B−A / B); configurações com guia "Como obter a API Key" + botão Testar conexão.
  • Fastr: /bevigil <package_id|domínio> → bevigil_lookup (argumento obrigatório).
  • Sem cron (on-demand — consultas só ocorrem quando acionadas; cache evita gastar créditos repetidamente).
  • Nota de API: a documentação pública usa osint.bevigil.com (lookup por package/domínio); upload de APK não é suportado pela API pública — fica no produto web/Enterprise; para scan estático de APK no CI, use MobSF/QARK com BeVigil como camada OSINT complementar.

Stack e ferramentas

  • PHP 8 (sem framework)
  • MySQL 8 (bevigil_scans — cache 7 dias)
  • Alpine.js + Tailwind CSS (premium light, emerald)
  • BeVigil OSINT API (osint.bevigil.com, X-Access-Token)
  • cURL com SSL verify ON (5s connect / 25s timeout)
  • Sistema de plugins do NEXUS (PluginManager + Intel Hub enricher)

Tags operacionais

  • BeVigil
  • OSINT
  • Mobile Security
  • Android
  • Asset Discovery
  • Intelligence Hub
  • Plugin NEXUS

Resultado operacional

  • Lookup de package Android ou domínio com score de exposição 0–100 (menor = mais exposição) e cor de destaque na UI (vermelho < 40).
  • Superfície de ativos consolidada: hosts, S3 buckets, REST paths, IPs, AWS URLs, e-mails, apps indexados e subdomínios.
  • Cache local de 7 dias por query — evita gastar créditos BeVigil em consultas repetidas.
  • Comparador de duas superfícies (ex.: versões de app) com delta B−A.
  • Auto-enrich no Intelligence Hub: menção a domínio/URL/texto com package → sinal com severity.
  • Sem cron: on-demand, sem custo oculto.

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

Módulo de inteligência de ameaças (OSINT) focado em aplicações móveis através da API BeVigil. Analisa pacotes Android (APK) e domínios para identificar endpoints internos expostos, chaves de API vazadas, credenciais AWS e buckets S3 desprotegidos, calculando um índice de risco de segurança.

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.