
puncia v0.36
Panthera(P.)uncia - Utilidad CLI oficial para Subdomain Center & Exploit Observer.
Panthera(P.)uncia
Utilidad CLI oficial para Subdomain Center y Exploit Observer
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
- 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. - Descubrimiento de shadow IT y superficie de ataque externa
Identifica y monitoriza subdominios e infraestructura expuestos creados fuera de los canales oficiales. - Reconocimiento de subdomain takeover
Enumera la huella completa de subdominios de un objetivo, un primer paso clave para detectar registros colgantes/propensos a takeover. - Investigación y monitorización avanzada de vulnerabilidades
Descubre y rastrea amenazas conocidas y emergentes, incluidas vulnerabilidades oscuras o no listadas. - 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. - 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. - 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. - 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. - 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. - 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. - Reconocimiento pasivo para Red Teams
Realiza reconocimiento sigiloso utilizando fuentes de datos pasivas (sin interacción directa con los objetivos). - Recopilación de Open Source Intelligence (OSINT)
Combina inteligencia de subdominios y exploits para mejorar las investigaciones OSINT. - 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
- Desde PyPi -
pip3 install puncia - 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.
-
(PAID) Almacenar una clave de API (storekey) -
puncia storekey <api-key>- Se almacena en
~/.punciacon permisos0600.$PUNCIA_API_KEYla sobrescribe, lo cual suele ser lo que quieres en CI.
- Se almacena en
-
(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/keywordrecorren 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:Las solicitudes anónimas ignoranpuncia 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/--offseten 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):
--crawlcomplementa 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énpartial/cooldown/disabled).puncia subdomain bigco.com --crawl
- Paginación (solo autenticado): un resultado autenticado no tiene límite
total. Por defecto,
-
(FREEMIUM) Consultar dominios réplica, agrupados por marca (motor replica /
octopus) -puncia replica <domain> --match <prefix|exact|substring> <output-file> -
(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
- Opcionalmente, limita la palabra clave a un solo dominio con
-
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>
- (FREE) Lista de vigilancia de identificadores de vulnerabilidades y exploits (^WATCHLIST_IDES) -
-
(FREEMIUM) Enriquecer identificadores CVE/GHSA (enrich) -
puncia enrich <cve-id/ghsa-id> <output-file>enrich=truesolo tiene efecto para identificadoresCVE-/GHSA-; fusiona el registro completo del aviso upstream con la puntuación EPSS + VEDAS.
-
(PAID) Identificadores no-CVE por grupo VEDAS (noncve) -
puncia noncve <browser/china/russia/europe/exploitable> <output-file> -
(FREE) Estado del servicio de Subdomain Center (^HEALTH) -
puncia subdomain ^HEALTH <output-file> -
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. - (FREEMIUM) Formato de archivo JSON de entrada masiva -
-
(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
- 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