Volver a actualizaciones
Nuevo releaseSep 1, 2026

puncia v0.36

Panthera(P.)uncia - Utilidad CLI oficial para Subdomain Center & Exploit Observer.

Compartir

Panthera(P.)uncia

Utilidad CLI oficial para Subdomain Center y Exploit Observer

Downloads GitHub stars

Puncia es el cliente oficial de línea de comandos para dos APIs de inteligencia de A.R.P. Syndicate — apúntalo a un dominio, una marca o un ID de vulnerabilidad y obtén JSON estructurado en segundos, sin necesidad de navegador:

  • 🕸️ Subdomain Center — enumeración de subdominios, detección de subdomain takeover, descubrimiento de shadow IT y detección de suplantación de marca / dominios similares (typosquat) a escala de internet.
  • 💥 Exploit Observer — inteligencia de exploits y vulnerabilidades en más de 150 esquemas de identificadores (CVE, GHSA, EDB, MSF, ZDI, feeds de actores estatales y más), con enriquecimiento de CVE/GHSA (puntuación de madurez EPSS + VEDAS) y escaneo 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

Ten en cuenta que, aunque estos resultados a veces pueden ser bastante imprecisos y poco fiables, pueden variar enormemente de un momento a otro debido a sus capacidades de auto-mejora.

Los límites de tasa agresivos se pueden evitar con una clave de API: https://www.arpsyndicate.io/pricing.html

Aplicaciones prácticas

  1. Detección de suplantación de marca y dominios de phishing
    Detecta dominios réplica, similares y typosquat que se aprovechan de tu marca antes de que se usen contra ti o tus clientes.
  2. Descubrimiento de shadow IT y superficie de ataque externa
    Identifica y monitoriza subdominios e infraestructura expuestos creados fuera de los canales oficiales.
  3. Reconocimiento de subdomain takeover
    Enumera la huella completa de subdominios de un objetivo, un primer paso clave para detectar registros colgantes/propensos a takeover.
  4. Investigación y monitorización avanzada de vulnerabilidades
    Descubre y rastrea amenazas conocidas y emergentes, incluidas vulnerabilidades oscuras o no listadas.
  5. Enriquecimiento contextual de datos CVE/GHSA
    Añade profundidad e inteligencia accionable (puntuaciones de madurez EPSS + VEDAS) a vulnerabilidades conocidas para una mejor priorización.
  6. Detección de vulnerabilidades en Software Bill of Materials (SBOM)
    Analiza componentes de software en busca de exploits y problemas de seguridad conocidos usando datos SBOM estructurados.
  7. Integración perfecta con flujos de trabajo de CI/CD e inteligencia de amenazas
    Automatiza la recopilación de inteligencia y las comprobaciones de vulnerabilidades dentro de pipelines de desarrollo o seguridad.
  8. Monitorización de tendencias de exploits de actores estatales
    Mantente por delante de las amenazas rastreando vulnerabilidades señaladas por actores extranjeros pero aún no reconocidas por las bases de datos convencionales.
  9. Descubrimiento de subdominios basado en palabras clave
    Detecta hosts que contienen una palabra clave dada en todo internet, independientemente de un dominio padre específico.
  10. Procesamiento masivo de inteligencia de amenazas
    Ejecuta consultas por lotes (dominios, vulnerabilidades, etc.) para un análisis escalable en grandes conjuntos de datos o inventarios de activos empresariales.
  11. Reconocimiento pasivo para Red Teams
    Realiza reconocimiento sigiloso utilizando fuentes de datos pasivas (sin interacción directa con los objetivos).
  12. Recopilación de Open Source Intelligence (OSINT)
    Combina inteligencia de subdominios y exploits para mejorar las investigaciones OSINT.
  13. Soporte de cumplimiento y gestión de riesgos
    Enriquece los datos de vulnerabilidades para respaldar auditorías de cumplimiento (p. ej., ISO 27001, SOC 2) con un contexto más profundo.

Instalación

  1. Desde PyPi - pip3 install puncia
  2. Desde el código fuente - pip3 install .

Inicio rápido en 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]

Ejecuta puncia --help para la referencia completa. Los resultados se imprimen en stdout; el banner, las barras de progreso, las advertencias y los errores van todos a stderr, por lo que puncia subdomain example.com > out.json siempre produce JSON limpio y válido.

Códigos de salida: 0 éxito · 1 error de solicitud o entrada · 2 error de uso.

  1. (PAID) Almacenar una clave de API (storekey) - puncia storekey <api-key>

    • Se almacena en ~/.puncia con permisos 0600. $PUNCIA_API_KEY la sobrescribe, lo cual suele ser lo que quieres en CI.
  2. (FREEMIUM) Consultar dominios, agrupados por dominio (motor subdomain / cuttlefish) - puncia subdomain <domain> <output-file>

    • Paginación (solo autenticado): un resultado autenticado no tiene límite total. Por defecto, subdomain/replica/keyword recorren todas las páginas y las fusionan por ti. Pasa --offset (con o sin --limit) para obtener exactamente una página sin procesar tú mismo, por ejemplo, para un recorrido reanudable o en 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
      
      Las solicitudes anónimas ignoran --limit/--offset en el lado del servidor (siempre una muestra aleatoria de hasta 500 filas); puncia advierte en lugar de pretender que hicieron algo.
    • Crawl en vivo (solo autenticado): --crawl complementa los resultados almacenados con una pasada de descubrimiento en vivo. Un dominio dado solo se vuelve a rastrear realmente una vez cada ~6h — las solicitudes dentro de esa ventana obtienen el resultado del crawl en caché al instante. Puncia informa el resultado en stderr: crawl: fresh, 12 newly discovered name(s) (también partial / cooldown / disabled).
      puncia subdomain bigco.com --crawl
      
  3. (FREEMIUM) Consultar dominios réplica, agrupados por marca (motor replica / octopus) - puncia replica <domain> --match <prefix|exact|substring> <output-file>

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

    • Opcionalmente, limita la palabra clave a un solo dominio con --domain: puncia keyword blog --domain bandcamp.com
  5. Consultar identificadores de exploits y vulnerabilidades (exploit)

    • (FREE) Lista de vigilancia de identificadores de vulnerabilidades y exploits (^WATCHLIST_IDES) - puncia exploit ^WATCHLIST_IDES <output-file>
    • (FREE) Lista de vigilancia de identificadores de vulnerabilidades y exploits con descripciones (^WATCHLIST_INFO) - puncia exploit ^WATCHLIST_INFO <output-file>
    • (FREE) Lista de vigilancia de tecnologías vulnerables (^WATCHLIST_TECH) - puncia exploit ^WATCHLIST_TECH <output-file>
    • (FREE) Estadísticas agregadas de vulnerabilidades/exploits (^STATS) - puncia exploit ^STATS <output-file>
    • (FREE) Estado del servicio (^HEALTH) - puncia exploit ^HEALTH <output-file>
    • (FREEMIUM) Identificadores de vulnerabilidades compatibles - 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 solo tiene efecto para identificadores CVE-/GHSA-; fusiona el registro completo del aviso upstream con la puntuación EPSS + VEDAS.
  7. (PAID) Identificadores no-CVE por grupo VEDAS (noncve) - puncia noncve <browser/china/russia/europe/exploitable> <output-file>

  8. (FREE) Estado del servicio de Subdomain Center (^HEALTH) - puncia subdomain ^HEALTH <output-file>

  9. Consultas múltiples (bulk/sbom)

    • (FREEMIUM) Formato de archivo JSON de entrada masiva - 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 archivo JSON de entrada SBOM - puncia sbom <json-file> <output-directory>

    Las ejecuciones bulk y SBOM deduplican consultas, limitan el paralelismo a --concurrency (por defecto 10) y — cuando no hay una clave de API presente — regulan las solicitudes para mantenerse dentro del presupuesto del nivel gratuito automáticamente.

  10. (FREEMIUM) Importación 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())

Los fallos lanzan puncia.PunciaError; un resultado vacío ({} / []) se devuelve tal cual en lugar de tratarse como un error. Reutiliza una sesión en muchas consultas pasando session= y un limiter= compartido, exactamente como lo hace process_bulk().

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}")

Desarrollo

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

La suite de pruebas es completamente offline — cubre la construcción de URLs, la contención de rutas de salida, el análisis de SBOM, la planificación de bulk y la temporización del ratelimiter sin tocar la red, por lo que es seguro ejecutarla en cualquier entorno.

Enriquecimiento de CVE


Enriquecimiento de GHSA


Menciones destacadas

Categorías