はじめに
ペネトレーションテストやバグバウンティにおいて、資産発見(Asset Discovery)は最も重要な工程の一つです。
近年、多くの組織がクラウド環境やマイクロサービスアーキテクチャを採用するようになり、公開されるサブドメインやサービスは増加し続けています。
従来の資産探索では、以下のようなツールが広く利用されています。
- Subfinder
- Amass
- Assetfinder
- DNS Bruteforce
これらは非常に強力ですが、多くの場合は「既に存在している資産」を発見するための手法です。
一方で、
「今まさに公開されようとしている新規資産」
を検知するには別のアプローチが必要になります。
そこで注目されているのが、Certificate Transparency(CT)ログの監視です。
本記事では、CTログをリアルタイムで監視し、新たに発行された証明書からドメイン情報を抽出する Go 製オープンソースツール「Gungnir」を紹介します。
Certificate Transparency(CT)とは
Certificate Transparency(CT)は、SSL/TLS証明書の発行履歴を公開ログとして記録する仕組みです。
現在、多くの認証局(CA)は証明書発行時にCTログへの登録を行っています。
代表的な認証局:
- Let's Encrypt
- DigiCert
- Sectigo
- GlobalSign
証明書には通常、以下の情報が含まれます。
api.example.com
vpn.example.com
gitlab.example.com
staging.example.com
これらの情報は Subject Alternative Name(SAN)として証明書内に記録されるため、CTログから取得できます。
つまり、
組織が新しいサブドメイン用の証明書を発行した時点で、その情報が公開される可能性がある
ということです。
Gungnirとは
GungnirはCTログストリームを監視し、新たに発行された証明書からドメイン情報を抽出するツールです。
動作イメージ:
証明書発行
│
▼
CT Log登録
│
▼
Gungnir検知
│
▼
ドメイン抽出
例えば開発チームが以下の証明書を発行した場合、
dev-api.example.com
staging.example.com
Gungnirはその情報を数秒〜数分程度で取得できます。
ただし、
- DNSがまだ有効化されていない
- Webサービスが起動していない
といったケースもあるため、
「即座にアクセス可能である」とは限りません。
インストール
GungnirはGoで実装されています。
事前にGo環境を準備します。
go version
インストール:
go install github.com/g0ldencybersec/gungnir/cmd/gungnir@latest
PATH設定:
export PATH=$PATH:$(go env GOPATH)/bin
確認:
which gungnir
基本的な使い方
全CTストリームの監視
gungnir
世界中で発行される証明書情報がリアルタイムで表示されます。
特定ドメインのみ監視
roots.txt
example.com
target.org
実行:
gungnir -r roots.txt
出力例:
api.example.com
dev.example.com
staging.example.com
指定したドメイン配下のみを表示するため、ノイズを大幅に削減できます。
JSON形式で出力
gungnir -r roots.txt -j
出力例:
{
"domain":"dev.example.com",
"issuer":"Let's Encrypt"
}
JSON Lines形式で出力できるため、自動化処理との相性も良好です。
実践的な活用方法
Gungnir単体でも有用ですが、他のReconツールと組み合わせることで効果が高まります。
例:
Gungnir
│
▼
dnsx
│
▼
httpx
│
▼
nuclei
│
▼
notify
各ツールの役割
Gungnir
新しいドメインを検知
dnsx
DNS解決の確認
httpx
Webサービスの生存確認
nuclei
既知脆弱性スキャン
notify
SlackやDiscordへの通知
パイプライン例
gungnir -r roots.txt | \
dnsx -silent | \
httpx -silent | \
nuclei -severity critical,high -silent | \
notify
これにより、
新規ドメイン発見
↓
DNS解決確認
↓
HTTP確認
↓
脆弱性検査
↓
通知
という一連の流れを自動化できます。
Gungnirの限界
Gungnirは強力ですが、万能ではありません。
CTログに現れない資産
以下は検出できない場合があります。
- 証明書未発行のサービス
- 社内限定システム
- IPアドレス直指定サービス
Wildcard証明書
例えば、
*.example.com
のみが証明書に記録されている場合、
api.example.com
vpn.example.com
test.example.com
といった個別サブドメインは判別できません。
DNS未設定のケース
CTログに現れても、
NXDOMAIN
となるケースがあります。
そのため、後続でDNS確認を行うことが重要です。
SubfinderやAmassとの違い
よく誤解されますが、
GungnirはSubfinderやAmassの代替ではありません。
それぞれ役割が異なります。
| ツール | 目的 |
|---|---|
| Subfinder | 既知資産の収集 |
| Amass | 包括的な資産列挙 |
| Gungnir | 新規資産の監視 |
イメージとしては、
Subfinder / Amass
↓
現在の資産を把握
Gungnir
↓
未来の資産変化を監視
という関係になります。
実際の運用では併用するのが一般的です。
ブルーチームでの活用
Gungnirはレッドチームだけでなく、防御側にも有効です。
シャドーITの発見
部門ごとに勝手に公開された
event.example.com
campaign.example.com
test.example.com
を早期に把握できます。
証明書発行の監査
許可されていない認証局からの証明書発行を検出できます。
Attack Surface Management
継続的にCTログを監視することで、組織の公開資産の変化を追跡できます。
まとめ
Gungnirは、Certificate Transparencyログを利用して新たな公開資産を監視するための軽量なReconツールです。
従来の資産列挙ツールが「現在の資産」を調査するのに対し、
Gungnirは
「これから公開される資産の変化」
を追跡できます。
SubfinderやAmassと組み合わせることで、より包括的なAsset Discovery環境を構築できるでしょう。