Voltar às atualizações
New releaseSep 1, 2026

puncia v0.36

Panthera(P.)uncia - Utilitário CLI oficial para Subdomain Center e Exploit Observer.

Compartilhar

Panthera(P.)uncia

Utilitário oficial de CLI para o Subdomain Center & Exploit Observer

Downloads GitHub stars

Puncia é o cliente oficial de linha de comando para duas APIs de inteligência da A.R.P. Syndicate — aponte-o para um domínio, uma marca ou um ID de vulnerabilidade e receba JSON estruturado em segundos, sem precisar de navegador:

  • 🕸️ Subdomain Center — enumeração de subdomínios, detecção de subdomain takeover, descoberta de shadow IT e detecção de falsificação de marca / domínios semelhantes (typosquat) em escala de internet.
  • 💥 Exploit Observer — inteligência de exploits e vulnerabilidades em mais de 150 esquemas de identificadores (CVE, GHSA, EDB, MSF, ZDI, feeds de atores estatais e mais), com enriquecimento de CVE/GHSA (pontuação de maturidade EPSS + VEDAS) e varredura de SBOM.
$ puncia subdomain arpsyndicate.io
╭──────────────────────────────────────────────────────────────────────╮
│ Panthera(P.)uncia v0.38                                              │
│ subdomain recon · brand impersonation · exploit intel · sbom analysis│
│ A.R.P. Syndicate — https://www.arpsyndicate.io                       │
╰──────────────────────────────────────────────────────────────────────╯
[
  "advisories.arpsyndicate.io",
  "asm.arpsyndicate.io",
  "blog.arpsyndicate.io",
  ...
]

$ puncia sbom bom.json ./out
puncia ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% (128/128) 0:00:41

Observe que, embora esses resultados às vezes possam ser bastante imprecisos e não confiáveis, eles podem variar bastante de tempos em tempos devido às suas capacidades de autoaperfeiçoamento.

Limites de taxa agressivos podem ser evitados com uma chave de API: https://www.arpsyndicate.io/pricing.html

Aplicações Práticas

  1. Detecção de Falsificação de Marca e Domínios de Phishing
    Descubra domínios réplica, semelhantes e typosquat que se aproveitam da sua marca antes que sejam usados contra você ou seus clientes.
  2. Descoberta de Shadow IT e Superfície de Ataque Externa
    Identifique e monitore subdomínios expostos e infraestrutura criada fora dos canais oficiais.
  3. Reconhecimento de Subdomain Takeover
    Enumere toda a pegada de subdomínios de um alvo, um primeiro passo essencial para identificar registros pendentes/propensos a takeover.
  4. Pesquisa e Monitoramento Avançado de Vulnerabilidades
    Descubra e acompanhe ameaças conhecidas e emergentes, incluindo vulnerabilidades obscuras ou não listadas.
  5. Enriquecimento Contextual de Dados de CVE/GHSA
    Adicione profundidade e inteligência acionável (pontuações de maturidade EPSS + VEDAS) a vulnerabilidades conhecidas para melhor priorização.
  6. Detecção de Vulnerabilidades em Software Bill of Materials (SBOM)
    Analise componentes de software em busca de exploits conhecidos e problemas de segurança usando dados estruturados de SBOM.
  7. Integração Perfeita com CI/CD e Fluxos de Trabalho de Threat Intel
    Automatize a coleta de inteligência e verificações de vulnerabilidades dentro de pipelines de desenvolvimento ou segurança.
  8. Monitoramento de Tendências de Exploits de Atores Estatais
    Mantenha-se à frente das ameaças acompanhando vulnerabilidades sinalizadas por atores estrangeiros, mas ainda não reconhecidas por bancos de dados convencionais.
  9. Descoberta de Subdomínios Baseada em Palavras-chave
    Descubra hosts que carregam uma determinada palavra-chave em toda a internet, independentemente de um domínio pai específico.
  10. Processamento em Massa de Threat Intelligence
    Execute consultas em lote (domínios, vulnerabilidades, etc.) para análise escalável em grandes conjuntos de dados ou inventários de ativos corporativos.
  11. Reconhecimento Passivo para Red Teams
    Realize reconhecimento furtivo usando fontes de dados passivas (sem interação direta com os alvos).
  12. Coleta de Open Source Intelligence (OSINT)
    Combine inteligência de subdomínios e exploits para aprimorar investigações de OSINT.
  13. Suporte a Conformidade e Gestão de Riscos
    Enriqueça dados de vulnerabilidades para apoiar auditorias de conformidade (por exemplo, ISO 27001, SOC 2) com contexto mais profundo.

Instalação

  1. Do PyPi - pip3 install puncia
  2. Do Código-fonte - pip3 install .

Início Rápido em 30 segundos

pip3 install puncia

# subdomain footprint of a target (shadow IT / attack surface / takeover recon)
puncia subdomain example.com

# lookalike / typosquat / brand-impersonation domains
puncia replica example.com

# what's known about a CVE
puncia exploit CVE-2021-44228

Uso

puncia <mode> <query> [output] [--match M] [--domain D] [--limit N] [--offset N]
                               [--crawl] [--api-key K] [--concurrency N]
                               [--timeout S] [--retries N] [--quiet]

Execute puncia --help para a referência completa. Os resultados são impressos em stdout; o banner, barras de progresso, avisos e erros vão todos para stderr, então puncia subdomain example.com > out.json sempre produz JSON limpo e válido.

Códigos de saída: 0 sucesso · 1 erro de requisição ou entrada · 2 erro de uso.

  1. (PAGO) Armazene uma chave de API (storekey) - puncia storekey <api-key>

    • Armazenada em ~/.puncia com permissões 0600. $PUNCIA_API_KEY a substitui, o que geralmente é o que você quer em CI.
  2. (FREEMIUM) Consultar Domínios, agrupados por domínio (motor subdomain / cuttlefish) - puncia subdomain <domain> <output-file>

    • Paginação (somente autenticado): um resultado autenticado não tem limite total. Por padrão, subdomain/replica/keyword percorrem todas as páginas e as mesclam para você. Passe --offset (com ou sem --limit) para buscar exatamente uma página bruta você mesmo, por exemplo, para uma varredura retomável ou em streaming:
      puncia subdomain bigco.com --limit 50000 --offset 0
      # stderr prints: note: more results available — continue with --offset 50000
      puncia subdomain bigco.com --limit 50000 --offset 50000
      
      Requisições anônimas ignoram --limit/--offset no lado do servidor (sempre uma amostra embaralhada de até 500 linhas); o puncia avisa em vez de fingir que eles fizeram algo.
    • Crawl ao vivo (somente autenticado): --crawl complementa os resultados armazenados com uma passagem de descoberta ao vivo. Um determinado domínio só é realmente rastreado novamente uma vez a cada ~6h — requisições dentro dessa janela recebem o resultado de crawl em cache instantaneamente. O Puncia relata o resultado em stderr: crawl: fresh, 12 newly discovered name(s) (também partial / cooldown / disabled).
      puncia subdomain bigco.com --crawl
      
  3. (FREEMIUM) Consultar Domínios Réplica, agrupados por marca (motor replica / octopus) - puncia replica <domain> --match <prefix|exact|substring> <output-file>

  4. (FREEMIUM) Consultar por Palavra-chave, agrupados por palavra-chave (motor keyword / ammonites) - puncia keyword <keyword> --match <exact|prefix> <output-file>

    • Opcionalmente, limite a palavra-chave a um único domínio com --domain: puncia keyword blog --domain bandcamp.com
  5. Consultar Identificadores de Exploit e Vulnerabilidade (exploit)

    • (GRÁTIS) Lista de Identificadores de Vulnerabilidade e Exploit (^WATCHLIST_IDES) - puncia exploit ^WATCHLIST_IDES <output-file>
    • (GRÁTIS) Lista de Identificadores de Vulnerabilidade e Exploit com Descrições (^WATCHLIST_INFO) - puncia exploit ^WATCHLIST_INFO <output-file>
    • (GRÁTIS) Lista de Tecnologias Vulneráveis (^WATCHLIST_TECH) - puncia exploit ^WATCHLIST_TECH <output-file>
    • (GRÁTIS) Estatísticas agregadas de vulnerabilidade/exploit (^STATS) - puncia exploit ^STATS <output-file>
    • (GRÁTIS) Saúde do serviço (^HEALTH) - puncia exploit ^HEALTH <output-file>
    • (FREEMIUM) Identificadores de Vulnerabilidade Suportados - puncia exploit <eoidentifier> --match <substring|prefix|exact> <output-file>
  6. (FREEMIUM) Enriquecer Identificadores CVE/GHSA (enrich) - puncia enrich <cve-id/ghsa-id> <output-file>

    • enrich=true só tem efeito para identificadores CVE-/GHSA-; ele mescla o registro completo do aviso upstream com pontuação EPSS + VEDAS.
  7. (PAGO) Identificadores Não-CVE por grupo VEDAS (noncve) - puncia noncve <browser/china/russia/europe/exploitable> <output-file>

  8. (GRÁTIS) Saúde do serviço Subdomain Center (^HEALTH) - puncia subdomain ^HEALTH <output-file>

  9. Múltiplas Consultas (bulk/sbom)

    • (FREEMIUM) Formato de Arquivo JSON de Entrada em Massa - puncia bulk <json-file> <output-directory>
      {
          "subdomain": [
              "domainA.com",
              "domainB.com"
          ],
          "replica": [
              "domainA.com",
              "domainB.com"
          ],
          "keyword": [
              "keywordA",
              "keywordB"
          ],
          "exploit": [
              "eoidentifierA",
              "eoidentifierB"
          ],
          "enrich": [
              "eoidentifierA",
              "eoidentifierB"
          ]
      }
      
    • (FREEMIUM) Formato de Arquivo JSON de Entrada SBOM - puncia sbom <json-file> <output-directory>

    Execuções em massa e de SBOM desduplicam consultas, limitam o paralelismo a --concurrency (padrão 10) e — quando não há chave de API presente — ajustam o ritmo das requisições para permanecer dentro do orçamento do nível gratuito automaticamente.

  10. (FREEMIUM) Importação Externa

import asyncio
import puncia

async def main():
   # Without an API key (ratelimited)
   print(await puncia.query_api("exploit", "CVE-2021-3450"))
   print(await puncia.query_api("subdomain", "arpsyndicate.io"))

   # With an API key
   await puncia.store_key("ARPS-xxxxxxxxxx")
   api_key = await puncia.read_key()
   print(await puncia.query_api("subdomain", "arpsyndicate.io", apikey=api_key))
   print(await puncia.query_api("replica", "arpsyndicate.io", match="exact", apikey=api_key))
   print(await puncia.query_api("enrich", "CVE-2021-3450", apikey=api_key))
   print(await puncia.query_api("noncve", "exploitable", apikey=api_key))

   # Static endpoints (unauthenticated, unlimited)
   print(await puncia.query_api("subdomain", "^HEALTH"))
   print(await puncia.query_api("exploit", "^STATS"))

   # Live crawl, with the outcome surfaced via a callback
   await puncia.query_api(
       "subdomain", "bigco.com", apikey=api_key, crawl=True,
       on_crawl=lambda h: print("crawl status:", h.get("X-Crawl-Status")),
   )

   # Write straight to disk
   await puncia.query_api("subdomain", "arpsyndicate.io", "out.json", apikey=api_key)

asyncio.run(main())

Falhas geram puncia.PunciaError; um resultado vazio ({} / []) é retornado como está, em vez de ser tratado como erro. Reutilize uma sessão em várias consultas passando session= e um limiter= compartilhado, exatamente como process_bulk() faz.

from puncia import PunciaError, query_api

try:
    data = await query_api("exploit", "CVE-2021-3450", apikey=api_key)
except PunciaError as exc:
    print(f"lookup failed: {exc}")

Desenvolvimento

git clone https://github.com/ARPSyndicate/puncia && cd puncia
pip install --upgrade pip     # editable installs need pip >= 21.3
pip install -e ".[dev]"
pytest                        # 42 offline tests, no API calls or network access

A suíte de testes é totalmente offline — ela cobre construção de URL, contenção de caminho de saída, análise de SBOM, planejamento em massa e temporização do ratelimiter sem tocar na rede, então é seguro executá-la em qualquer ambiente.

Enriquecimento de CVE


Enriquecimento de GHSA


Menções Notáveis

Categorias