
puncia v0.36
Panthera(P.)uncia - Utilitário CLI oficial para Subdomain Center e Exploit Observer.
Panthera(P.)uncia
Utilitário oficial de CLI para o Subdomain Center & Exploit Observer
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
- 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. - Descoberta de Shadow IT e Superfície de Ataque Externa
Identifique e monitore subdomínios expostos e infraestrutura criada fora dos canais oficiais. - 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. - Pesquisa e Monitoramento Avançado de Vulnerabilidades
Descubra e acompanhe ameaças conhecidas e emergentes, incluindo vulnerabilidades obscuras ou não listadas. - 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. - 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. - 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. - 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. - 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. - 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. - Reconhecimento Passivo para Red Teams
Realize reconhecimento furtivo usando fontes de dados passivas (sem interação direta com os alvos). - Coleta de Open Source Intelligence (OSINT)
Combine inteligência de subdomínios e exploits para aprimorar investigações de OSINT. - 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
- Do PyPi -
pip3 install puncia - 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.
-
(PAGO) Armazene uma chave de API (storekey) -
puncia storekey <api-key>- Armazenada em
~/.punciacom permissões0600.$PUNCIA_API_KEYa substitui, o que geralmente é o que você quer em CI.
- Armazenada em
-
(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/keywordpercorrem 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:Requisições anônimas ignorampuncia 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--limit/--offsetno 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):
--crawlcomplementa 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émpartial/cooldown/disabled).puncia subdomain bigco.com --crawl
- Paginação (somente autenticado): um resultado autenticado não tem limite
total. Por padrão,
-
(FREEMIUM) Consultar Domínios Réplica, agrupados por marca (motor replica /
octopus) -puncia replica <domain> --match <prefix|exact|substring> <output-file> -
(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
- Opcionalmente, limite a palavra-chave a um único domínio com
-
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>
- (GRÁTIS) Lista de Identificadores de Vulnerabilidade e Exploit (^WATCHLIST_IDES) -
-
(FREEMIUM) Enriquecer Identificadores CVE/GHSA (enrich) -
puncia enrich <cve-id/ghsa-id> <output-file>enrich=truesó tem efeito para identificadoresCVE-/GHSA-; ele mescla o registro completo do aviso upstream com pontuação EPSS + VEDAS.
-
(PAGO) Identificadores Não-CVE por grupo VEDAS (noncve) -
puncia noncve <browser/china/russia/europe/exploitable> <output-file> -
(GRÁTIS) Saúde do serviço Subdomain Center (^HEALTH) -
puncia subdomain ^HEALTH <output-file> -
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. - (FREEMIUM) Formato de Arquivo JSON de Entrada em Massa -
-
(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
- Passive Subdomain Enumeration: Uncovering More Subdomains than Subfinder & Amass
- Around 1000 exploitable cybersecurity vulnerabilities that MITRE & NIST ‘might’ have missed but China or Russia didn’t.
- Utilizing GitHub Actions for gathering Subdomain & Exploit Intelligence
- Introducing Exploit Observer — More than Shodan Exploits, Less than Vulners
- PUNCIA — The Panthera(P.)uncia of Cybersecurity
- Subdomain Enumeration Tool Face-off - 2023 Edition