
puncia v0.36
Panthera(P.)uncia - Subdomain Center および Exploit Observer 向けの公式 CLI ユーティリティ。
Panthera(P.)uncia
Subdomain Center & Exploit Observer の公式 CLI ユーティリティ
Puncia は、2つの A.R.P. Syndicate インテリジェンス API の公式コマンドラインクライアントです。ドメイン、ブランド、または脆弱性 ID を指定するだけで、ブラウザ不要で数秒以内に構造化された JSON が返されます。
- 🕸️ Subdomain Center — インターネット規模でのサブドメイン列挙、サブドメインテイクオーバーの検出、シャドー IT の発見、およびブランドなりすまし / 類似ドメイン (タイポスクワット) の検出。
- 💥 Exploit Observer — 150以上の識別子スキーム (CVE、GHSA、EDB、MSF、ZDI、国家主体のフィードなど) にわたるエクスプロイトおよび脆弱性インテリジェンス。CVE/GHSA のエンリッチメント (EPSS + VEDAS 成熟度スコアリング) と 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
これらの結果は時にかなり不正確で信頼できない場合がありますが、自己改善機能により、時期によって大きく異なる可能性があることにご注意ください。
API キーを使用することで、厳しいレート制限を回避できます: https://www.arpsyndicate.io/pricing.html
実用的な用途
- ブランドなりすましとフィッシングドメインの検出
あなたや顧客に対して悪用される前に、あなたのブランドを騙るレプリカ、類似、タイポスクワットドメインを表面化します。 - シャドー IT と外部攻撃対象領域の発見
公式チャネル外で立ち上げられた露出サブドメインやインフラストラクチャを特定し、監視します。 - サブドメインテイクオーバーの偵察
ターゲットの完全なサブドメイン範囲を列挙します。これは、ぶら下がった/テイクオーバーされやすいレコードを発見するための重要な第一歩です。 - 高度な脆弱性リサーチと監視
未知または未登録の脆弱性を含む、既知および新たに出現する脅威を発見し、追跡します。 - CVE/GHSA データの文脈的なエンリッチメント
既知の脆弱性に深みと実用的なインテリジェンス (EPSS + VEDAS 成熟度スコア) を追加し、優先順位付けを改善します。 - ソフトウェア部品表 (SBOM) における脆弱性検出
構造化された SBOM データを使用して、ソフトウェアコンポーネントの既知のエクスプロイトとセキュリティ問題を分析します。 - CI/CD および脅威インテリジェンスワークフローとのシームレスな統合
開発またはセキュリティパイプライン内でインテリジェンス収集と脆弱性チェックを自動化します。 - 国家主体のエクスプロイト動向の監視
主流のデータベースではまだ認識されていないが、外国のアクターによってフラグが立てられた脆弱性を追跡することで、脅威に先んじます。 - キーワードベースのサブドメイン発見
特定の親ドメインに依存せず、インターネット全体で指定されたキーワードを含むホストを表面化します。 - バルク脅威インテリジェンス処理
大規模なデータセットやエンタープライズ資産インベントリ全体でスケーラブルな分析を行うために、バッチクエリ (ドメイン、脆弱性など) を実行します。 - レッドチーム向けのパッシブ偵察
パッシブデータソース (ターゲットとの直接的なやり取りなし) を使用して、ステルスな偵察を実施します。 - オープンソースインテリジェンス (OSINT) の収集
サブドメインとエクスプロイトインテリジェンスを組み合わせて、OSINT 調査を強化します。 - コンプライアンスとリスク管理のサポート
脆弱性データをエンリッチメントし、より深い文脈でコンプライアンス監査 (ISO 27001、SOC 2 など) をサポートします。
インストール
- PyPi から -
pip3 install puncia - ソースから -
pip3 install .
30秒クイックスタート
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
使用方法
puncia <mode> <query> [output] [--match M] [--domain D] [--limit N] [--offset N]
[--crawl] [--api-key K] [--concurrency N]
[--timeout S] [--retries N] [--quiet]
完全なリファレンスについては puncia --help を実行してください。結果は stdout に出力されます。バナー、プログレスバー、警告、エラーはすべて stderr に出力されるため、puncia subdomain example.com > out.json は常にクリーンで有効な JSON を生成します。
終了コード: 0 成功 · 1 リクエストまたは入力エラー · 2 使用法エラー。
-
(有料) API キーを保存 (storekey) -
puncia storekey <api-key>~/.punciaに0600パーミッションで保存されます。$PUNCIA_API_KEYがこれを上書きします。これは通常、CI で必要な動作です。
-
(フリーミアム) ドメインのクエリ、ドメインごとにクラスタリング (subdomain /
cuttlefishエンジン) -puncia subdomain <domain> <output-file>- ページネーション (認証済みのみ): 認証済みの結果には合計上限がありません。デフォルトでは
subdomain/replica/keywordはすべてのページを走査してマージします。代わりに--offset(--limitの有無を問わず) を渡すと、再開可能またはストリーミングの走査のために、生の1ページを自分で正確に取得できます:匿名リクエストはサーバー側で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--limit/--offsetを無視します (常に最大500行のシャッフルされたサンプル)。puncia は何かを行ったふりをせず、警告を出します。 - ライブクロール (認証済みのみ):
--crawlは保存された結果をライブ発見パスで補完します。特定のドメインが実際に再クロールされるのは約6時間に1回だけです。そのウィンドウ内のリクエストは、キャッシュされたクロール結果を即座に取得します。Puncia は結果を stderr に報告します:crawl: fresh, 12 newly discovered name(s)(partial/cooldown/disabledも同様)。puncia subdomain bigco.com --crawl
- ページネーション (認証済みのみ): 認証済みの結果には合計上限がありません。デフォルトでは
-
(フリーミアム) レプリカドメインのクエリ、ブランドごとにクラスタリング (replica /
octopusエンジン) -puncia replica <domain> --match <prefix|exact|substring> <output-file> -
(フリーミアム) キーワードによるクエリ、キーワードごとにクラスタリング (keyword /
ammonitesエンジン) -puncia keyword <keyword> --match <exact|prefix> <output-file>- オプションで
--domainを使用してキーワードを単一のドメインにスコープできます:puncia keyword blog --domain bandcamp.com
- オプションで
-
エクスプロイトおよび脆弱性識別子のクエリ (exploit)
- (無料) 脆弱性およびエクスプロイト識別子ウォッチリスト (^WATCHLIST_IDES) -
puncia exploit ^WATCHLIST_IDES <output-file> - (無料) 説明付き脆弱性およびエクスプロイト識別子ウォッチリスト (^WATCHLIST_INFO) -
puncia exploit ^WATCHLIST_INFO <output-file> - (無料) 脆弱なテクノロジーウォッチリスト (^WATCHLIST_TECH) -
puncia exploit ^WATCHLIST_TECH <output-file> - (無料) 脆弱性/エクスプロイト統計の集計 (^STATS) -
puncia exploit ^STATS <output-file> - (無料) サービスヘルス (^HEALTH) -
puncia exploit ^HEALTH <output-file> - (フリーミアム) サポートされている脆弱性識別子 -
puncia exploit <eoidentifier> --match <substring|prefix|exact> <output-file>
- (無料) 脆弱性およびエクスプロイト識別子ウォッチリスト (^WATCHLIST_IDES) -
-
(フリーミアム) CVE/GHSA 識別子のエンリッチメント (enrich) -
puncia enrich <cve-id/ghsa-id> <output-file>enrich=trueはCVE-/GHSA-識別子に対してのみ有効です。完全な上流のアドバイザリレコードを EPSS + VEDAS スコアリングとマージします。
-
(有料) VEDAS グループ別の非 CVE 識別子 (noncve) -
puncia noncve <browser/china/russia/europe/exploitable> <output-file> -
(無料) Subdomain Center サービスヘルス (^HEALTH) -
puncia subdomain ^HEALTH <output-file> -
複数クエリ (bulk/sbom)
- (フリーミアム) バルク入力 JSON ファイル形式 -
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" ] } - (フリーミアム) SBOM 入力 JSON ファイル形式 -
puncia sbom <json-file> <output-directory>
バルクおよび SBOM の実行はクエリを重複排除し、並列処理を
--concurrency(デフォルト 10) に制限し、API キーが存在しない場合は、無料枠の予算内に収まるようにリクエストのペースを自動的に調整します。 - (フリーミアム) バルク入力 JSON ファイル形式 -
-
(フリーミアム) 外部インポート
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())
失敗は puncia.PunciaError を発生させます。空の結果 ({} / []) はエラーとして扱われず、そのまま返されます。process_bulk() が行うのとまったく同じように、session= と共有の limiter= を渡すことで、多数のクエリにわたって1つのセッションを再利用できます。
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}")
開発
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
テストスイートは完全にオフラインです。ネットワークに触れることなく、URL 構築、出力パスの封じ込め、SBOM 解析、バルク計画、レートリミッターのタイミングをカバーしているため、どの環境でも安全に実行できます。
CVE エンリッチメント
GHSA エンリッチメント
注目の言及
- 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