
puncia v0.36
Panthera(P.)uncia - Utilità CLI ufficiale per Subdomain Center & Exploit Observer.
Panthera(P.)uncia
Utility CLI ufficiale per Subdomain Center & Exploit Observer
Puncia è il client ufficiale da riga di comando per due API di intelligence di A.R.P. Syndicate — puntalo su un dominio, un brand o un ID di vulnerabilità e ottieni JSON strutturato in pochi secondi, senza bisogno di un browser:
- 🕸️ Subdomain Center — enumerazione di sottodomini, emersione di subdomain takeover, scoperta di shadow IT e rilevamento di impersonificazione di brand / domini simili (typosquat) su scala internet.
- 💥 Exploit Observer — intelligence su exploit e vulnerabilità attraverso oltre 150 schemi di identificatori (CVE, GHSA, EDB, MSF, ZDI, feed di attori statali e altro), con arricchimento CVE/GHSA (punteggi di maturità EPSS + VEDAS) e scansione 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
Si prega di notare che, sebbene questi risultati possano talvolta essere piuttosto imprecisi e inaffidabili, possono variare notevolmente di volta in volta a causa delle loro capacità di auto-miglioramento.
I rate-limit aggressivi possono essere evitati con una API key: https://www.arpsyndicate.io/pricing.html
Applicazioni Pratiche
- Rilevamento di Impersonificazione di Brand e Domini di Phishing
Fai emergere domini replica, simili e typosquat che cavalcano il tuo brand prima che vengano usati contro di te o i tuoi clienti. - Scoperta di Shadow IT e Superficie di Attacco Esterna
Identifica e monitora sottodomini e infrastrutture esposte create al di fuori dei canali ufficiali. - Ricognizione per Subdomain Takeover
Enumera l'intera impronta di sottodomini di un target, un primo passo chiave per individuare record dangling/soggetti a takeover. - Ricerca e Monitoraggio Avanzato delle Vulnerabilità
Scopri e traccia minacce note ed emergenti, incluse vulnerabilità oscure o non elencate. - Arricchimento Contestuale dei Dati CVE/GHSA
Aggiungi profondità e intelligence azionabile (punteggi di maturità EPSS + VEDAS) alle vulnerabilità note per una migliore prioritizzazione. - Rilevamento di Vulnerabilità in Software Bill of Materials (SBOM)
Analizza i componenti software alla ricerca di exploit noti e problemi di sicurezza usando dati SBOM strutturati. - Integrazione Trasparente con CI/CD e Flussi di Threat Intel
Automatizza la raccolta di intelligence e i controlli di vulnerabilità all'interno di pipeline di sviluppo o sicurezza. - Monitoraggio delle Tendenze di Exploit di Attori Statali
Rimani in vantaggio sulle minacce tracciando vulnerabilità segnalate da attori stranieri ma non ancora riconosciute dai database mainstream. - Scoperta di Sottodomini Basata su Parole Chiave
Fai emergere host che contengono una determinata parola chiave su internet, indipendentemente da uno specifico dominio padre. - Elaborazione in Blocco di Threat Intelligence
Esegui query in batch (domini, vulnerabilità, ecc.) per un'analisi scalabile su grandi dataset o inventari di asset aziendali. - Ricognizione Passiva per Red Team
Conduci ricognizione stealth utilizzando fonti di dati passive (nessuna interazione diretta con i target). - Raccolta di Open Source Intelligence (OSINT)
Combina intelligence su sottodomini ed exploit per migliorare le indagini OSINT. - Supporto a Compliance e Gestione del Rischio
Arricchisci i dati sulle vulnerabilità per supportare audit di conformità (es. ISO 27001, SOC 2) con un contesto più approfondito.
Installazione
- Da PyPi -
pip3 install puncia - Da Sorgente -
pip3 install .
Quickstart in 30 secondi
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
Utilizzo
puncia <mode> <query> [output] [--match M] [--domain D] [--limit N] [--offset N]
[--crawl] [--api-key K] [--concurrency N]
[--timeout S] [--retries N] [--quiet]
Esegui puncia --help per il riferimento completo. I risultati vengono stampati su stdout; il
banner, le barre di avanzamento, gli avvisi e gli errori vanno tutti su stderr, quindi
puncia subdomain example.com > out.json produce sempre JSON pulito e valido.
Codici di uscita: 0 successo · 1 errore di richiesta o input · 2 errore di utilizzo.
-
(A PAGAMENTO) Memorizza una API key (storekey) -
puncia storekey <api-key>- Memorizzata in
~/.punciacon permessi0600.$PUNCIA_API_KEYla sovrascrive, il che è di solito ciò che vuoi in CI.
- Memorizzata in
-
(FREEMIUM) Interroga Domini, raggruppati per dominio (motore subdomain /
cuttlefish) -puncia subdomain <domain> <output-file>- Paginazione (solo autenticati): un risultato autenticato non ha un limite
totale. Per impostazione predefinita
subdomain/replica/keywordpercorrono ogni pagina e le uniscono per te. Passa--offset(con o senza--limit) per recuperare esattamente una pagina grezza da solo, ad esempio per una scansione ripristinabile o in streaming:Le richieste anonime ignoranopuncia 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/--offsetlato server (sempre un campione mescolato di massimo 500 righe); puncia avvisa invece di fingere che abbiano fatto qualcosa. - Crawl live (solo autenticati):
--crawlintegra i risultati memorizzati con una passata di scoperta live. Un determinato dominio viene effettivamente ri-scansionato solo una volta ogni ~6h — le richieste all'interno di quella finestra ricevono il risultato del crawl in cache istantaneamente. Puncia riporta l'esito su stderr:crawl: fresh, 12 newly discovered name(s)(anchepartial/cooldown/disabled).puncia subdomain bigco.com --crawl
- Paginazione (solo autenticati): un risultato autenticato non ha un limite
totale. Per impostazione predefinita
-
(FREEMIUM) Interroga Domini Replica, raggruppati per brand (motore replica /
octopus) -puncia replica <domain> --match <prefix|exact|substring> <output-file> -
(FREEMIUM) Interroga per Parola Chiave, raggruppati per parola chiave (motore keyword /
ammonites) -puncia keyword <keyword> --match <exact|prefix> <output-file>- Facoltativamente limita la parola chiave a un singolo dominio con
--domain:puncia keyword blog --domain bandcamp.com
- Facoltativamente limita la parola chiave a un singolo dominio con
-
Interroga Identificatori di Exploit e Vulnerabilità (exploit)
- (GRATUITO) Watchlist di Identificatori di Vulnerabilità ed Exploit (^WATCHLIST_IDES) -
puncia exploit ^WATCHLIST_IDES <output-file> - (GRATUITO) Watchlist di Identificatori di Vulnerabilità ed Exploit con Descrizioni (^WATCHLIST_INFO) -
puncia exploit ^WATCHLIST_INFO <output-file> - (GRATUITO) Watchlist di Tecnologie Vulnerabili (^WATCHLIST_TECH) -
puncia exploit ^WATCHLIST_TECH <output-file> - (GRATUITO) Statistiche aggregate di vulnerabilità/exploit (^STATS) -
puncia exploit ^STATS <output-file> - (GRATUITO) Stato del servizio (^HEALTH) -
puncia exploit ^HEALTH <output-file> - (FREEMIUM) Identificatori di Vulnerabilità Supportati -
puncia exploit <eoidentifier> --match <substring|prefix|exact> <output-file>
- (GRATUITO) Watchlist di Identificatori di Vulnerabilità ed Exploit (^WATCHLIST_IDES) -
-
(FREEMIUM) Arricchisci Identificatori CVE/GHSA (enrich) -
puncia enrich <cve-id/ghsa-id> <output-file>enrich=trueha effetto solo per gli identificatoriCVE-/GHSA-; unisce il record completo dell'advisory upstream con i punteggi EPSS + VEDAS.
-
(A PAGAMENTO) Identificatori Non-CVE per gruppo VEDAS (noncve) -
puncia noncve <browser/china/russia/europe/exploitable> <output-file> -
(GRATUITO) Stato del servizio Subdomain Center (^HEALTH) -
puncia subdomain ^HEALTH <output-file> -
Query Multiple (bulk/sbom)
- (FREEMIUM) Formato File JSON di Input in Blocco -
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 File JSON di Input SBOM -
puncia sbom <json-file> <output-directory>
Le esecuzioni Bulk e SBOM de-duplicano le query, limitano il parallelismo a
--concurrency(predefinito 10) e — quando non è presente una API key — cadenzano le richieste per rimanere automaticamente entro il budget del piano gratuito. - (FREEMIUM) Formato File JSON di Input in Blocco -
-
(FREEMIUM) Importazione Esterna
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())
I fallimenti sollevano puncia.PunciaError; un risultato vuoto ({} / []) viene restituito
così com'è invece di essere trattato come un errore. Riusa una singola sessione attraverso molte
query passando session= e un limiter= condiviso, esattamente come
fa 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}")
Sviluppo
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 di test è completamente offline — copre la costruzione degli URL, il contenimento dei percorsi di output, il parsing SBOM, la pianificazione bulk e la temporizzazione del ratelimiter senza toccare la rete, quindi è sicuro eseguirla in qualsiasi ambiente.
Arricchimento CVE
Arricchimento GHSA
Menzioni Notevoli
- 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