Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
yowie — 外部から観測可能なデータのみを使用して、組織が契約しているSaaSサービスを特定します。シャドーITの発見のために構築されています。 | Kitploit
ツール/GitHubGitHub/joda32/yowie
防御ツールOSINT (オープンソースインテリジェンス)偵察ネットワークマッピング脆弱性分析DNSおよびサブドメイン列挙情報収集ペネトレーションテストサブドメイン列挙レッドチーミングメールセキュリティDNS分析
29214日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
GitHubjoda32/yowie

yowie

外部から観測可能なデータのみを使用して、組織が契約しているSaaSサービスを特定します。シャドーITの発見のために構築されています。

リポジトリを見る

Yowie

     ▄▄▓▓▓▓▓▓▓▓▓▄▄
   ▄▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▄    Yowie  ·  tracking down the SaaS nobody told you about
  ▓▓▒▒░░░░░░░░░░░▒▒▓▓
  ▓▒░░  ●       ●  ░▒▓  Domain      acme.com.au
  ▓▒░░      ▼      ░▒▓  Candidates  acme, acmecorp
  ▓▓▒░░   ╰───╯   ░▒▓▓
   ▀▓▓▒▒░░░░░░░░░▒▒▓▓▀
     ▀▀▓▓▓▓▓▓▓▓▓▓▓▀▀

組織が契約しているSaaSサービスを、外部から観測可能なデータのみを用いて特定します。シャドーITの発見のために作られており、見つける価値のあるサービスとは、誰もあなたに教えてくれなかったサービスのことです。

オーストラリアのブッシュクリプティドにちなんで名付けられました。誰もが「そんなものは存在しない」と言い張る何かを、あなたは追い求めているからです。

Yowieの動作風景

9つの検出器にわたり593のベンダーをカバーする786のシグネチャ、さらに確認待ちの109件が保留中です。検出結果は格付けされ、そのすべてに、それを導き出したレコードまたはレスポンスが付随します。

ビルド

go build -o yowie ./cmd/yowie

Go 1.22 以降が必要です。署名パックはバイナリに埋め込まれているため、単一のファイルをデプロイするだけで済みます。

使用方法

yowie [flags] <domain> [candidate ...]

ドメインは組織のルートドメインです。候補は、ベンダーテナントの名前の由来となり得る短い文字列です — 商号、略称、買収によって引き継がれた旧ブランドなどです。できるだけ多く指定してください。それぞれがテナントを見つける追加の機会となります。何も指定しない場合、ドメインの最初のラベルが使用されます。

yowie acme.com.au acme acmecorp acmegroup
yowie -format html -o report.html acme.com.au acme
yowie -format json acme.com.au | jq '.findings[] | select(.confidence=="high")'
yowie -only dns,spf,dmarc -compact acme.com.au
yowie -signatures ./signatures -validate

検出対象

検出器シグナル
dnsTXT 検証トークン、CNAME、MX、NS レコード
vanity組織名にちなんで命名されたベンダーホスト型テナント(acme.zendesk.com)
httpDNS 上の痕跡を持たないサービスのアプリケーション層フィンガープリント
spfネストされた include とリダイレクトを追跡した、SPF include グラフ全体
dmarcDMARC 集約レポート/フォレンジックレポートの送信先
bimiBIMI ロゴと Verified Mark Certificate のホスティング
mta-stsMTA-STS ポリシーの内容
tenantMicrosoft テナント ID、フェデレーション ID プロバイダー、および関連ドメイン
ctCertificate Transparency ログから取得したサブドメイン(解決および帰属判定済み)

-only または -skip で選択できます。例えば -skip ct,http を指定すると、DNS のみの高速パスになります。

最後の 2 つは特筆に値します。シグネチャリストでは見つけられないものを発見できるからです。

tenant は Microsoft の非認証エンドポイントに、そのドメインが誰に属しているかを問い合わせます。Autodiscover のフェデレーション情報は、同じテナントに紐づくすべてのドメインを返すため、事業部門、買収企業、放棄されたブランドが日常的に浮かび上がります。そのそれぞれが、スキャンする価値のある別のドメインです。

ct は発見モデルを逆転させます。他のすべてのチェックは固定リストに対して「この組織はベンダー X を使っているか?」と問うため、誰かがすでにシグネチャを書いたベンダーしか見つけられません。CT は「この組織は実際に自分のサブドメインを何に向けているか?」と問います。ある製品にサインアップして support.acme.com を設定したチームには証明書が発行され、その証明書は公開され、永続的に残ります。どのシグネチャにも一致しないターゲットはリードとして報告され、これによって、探すべきだと知らなかったものを見つけられるのです。

出力の読み方

検出結果にはグレードが付けられ、そのグレードこそが要点です:

  • Confirmed — ベンダーが発行した、ドメインに紐づく指標。使用中とみなします。
  • Probable — 強い根拠はあるものの、共有インフラや、他人が主張している名前空間である可能性もあります。acme.blogspot.com はあなたの acme ではないかもしれません。
  • Leads — 弱い、または帰属不明のもの。既知のベンダーに一致しない送信元やホストを含みます。最もノイズの多いバケットであり、誰も教えてくれなかった何かが含まれている可能性が最も高いバケットです。

2 つの独立した検出器が同じベンダーで一致すると、Probable の検出結果は Confirmed に昇格します。すべての検出結果には、それを引き起こした正確なレコードまたはレスポンスが付随するため、ツールを再実行しなくてもレポートは正当化できます。

この昇格には 1 つの例外があり、それは「このテナントは存在する」と「このテナントはあなたのものだ」の違いです — 精度に関する注記 の名前空間に関する注記を参照してください。

シグナルのみが必要な場合は、-no-unknown で帰属不明のリードを除外できます。

出力フォーマット

-format cli(デフォルト)、json、jsonl、csv、html。-o でファイルに書き出します。HTML レポートは自己完結型(外部アセットなし)なので、メールで送信したり共有ドライブに置いたりしても問題なく動作します。

進捗は stderr に、結果は stdout に出力されるため、yowie -format json acme.com > out.json でもライブの進捗行が表示されます。

シグネチャパック

シグネチャは signatures/*.yaml にあります。バイナリにはこれらが埋め込まれていますが、-signatures <dir> または YOWIE_SIGNATURES=<dir> を指定するとディスクから読み込むため、再ビルドせずに反復作業ができます。

version: 1
pack: dns-txt
description: "Domain-ownership verification tokens published as TXT records."
defaults:
  confidence: high

signatures:
  - id: txt-1password
    vendor: "1Password"
    category: "Identity & Secrets"
    type: txt
    query: "{domain}"
    match:
      contains: "1password-site-verification"

{domain} はルートドメインに、{candidate} は各候補文字列に展開されます。 {candidate} を参照するシグネチャは、候補ごとに1回評価されます。

種類マッチ対象備考
txt、cname、mx、nsquery のレコードに対する match.contains大文字小文字を区別しない
vanity_a、vanity_cnameベースライン比較。match ブロックなしquery には {candidate} を含める必要がある
httpmatch.present、match.absent、または match.status のみ下記のステータス処理を参照
spf_include解決済みの SPF include グラフに対する match.contains
dmarc_ruaDMARC レポート送信先に対する match.contains
cname_targetquery はホスティングのサフィックスのみct で発見されたホストに適用。* は1ラベルにマッチ

disabled: true は、その背後にある調査結果を失うことなくシグネチャを保留状態にします。 notes: はアナリスト向けのガイダンスをレポートまで引き継ぎます。

編集後は yowie -validate を実行してください。検証は厳格です — 未知のキーは エラーとなり、黙って無視されることはありません — またパックは go test でも チェックされるため、タイポが今後のすべてのスキャンで気づかれぬままカバレッジを 損なうことはありません。

パック

パック内容
dns-txt、dns-cname、dns-mx検証トークンと委任されたホスト名。有効。
email-spf、email-dmarc送信者と DMARC プロセッサ。有効。
vanity-tenants、http-endpointsテナントのホスト名とアプリのフィンガープリント。有効。
cname-targetsCT で発見されたサブドメイン向けのホスティングサフィックス。有効。
ai-servicesAI および LLM プラットフォーム。保留中。
file-transferマネージドファイル転送 — MOVEit、GoAnywhere、Egnyte。保留中。
finance-procurement財務、経費、給与、調達。保留中。
security-grcセキュリティツールとコンプライアンス自動化。保留中。
graveyard未検証のエントリ、および運営者を特定できなかったプラットフォーム。保留中。

保留中のシグネチャとその昇格方法

5つのパックは完全に無効化された状態で出荷されます。構造的には完全で検証も 通過しますが、マッチ条件が実際のテナントに対して確認されたことがないため、 スキャン中には評価されません。

これは意図的なものです。誤った contains 値を持つシグネチャは決して発火せず、 エラーも出しません — ただ、実際にはカバーされていないのにベンダーがカバーされて いるように見えるだけです。これらを無効のまま出荷することで、数値を水増しする ことなく調査結果をリポジトリに残しています。

これまでに5つが昇格しており、残りを信頼する前にその記録を知っておく価値が あります。2つは書かれた通りに正しく、1つはドメインが誤っており、2つはドメインは 正しかったもののチャネルが誤っていました — ベンダーはエントリが予測した 顧客ごとのホスト名ではなく、SPF include として現れました。残りの保留中エントリは、 潜在的なカバレッジではなく調査メモとして扱ってください。

-validate はバックログをパック別にグループ化して出力します:

$ ./yowie -validate
786 signatures across 13 packs, covering 593 vendors
...
109 signature(s) parked behind `disabled: true`, awaiting confirmation against a live tenant:

  ai-services.yaml (24)
    txt-fireflies-ai                         Fireflies.ai
    ...

昇格させるには:

  1. その製品を使用していると分かっているドメインを見つけます。
  2. 手作業でメカニズムを確認します:
    dig +short TXT known-customer.com | grep -i <vendor>          # token signatures
    dig +short A acme.egnyte.com                                  # vanity signatures
    dig +short A $(openssl rand -hex 6).egnyte.com                # ...and its baseline
    
    バニティテナントは、ランダムなラベルとは異なる応答を返さなければならない。
  3. 推測した値を実際に観測した値に置き換え、disabled: true を削除し、正直な信頼度を設定する。
  4. notes: を書き換えて、確認した内容を記述する。
  5. ./yowie -signatures ./signatures -validate

あるメカニズムが機能しないことが判明した場合は、無効のままにしておき、否定的な結果を notes: に記録する。これは機能するシグネチャと同様に価値がある。次の担当者が半日かけて再発見するのを防ぐことができるからだ。security-grc にはすでにこうした事例がいくつか含まれており、CrowdStrike、Wiz、Tenable にバニティシグネチャが存在しない理由を説明している。これらのベンダーはすべての顧客を共有コンソール上に配置しているため、顧客ごとに検出できるものが存在しないのだ。

独自のシグネチャ候補を見つける

このツールは自らバックログを生成する。帰属先が特定されていない送信者やホストは、まさにシグネチャを書く価値のあるベンダーであり、多くのスキャンを通じて頻度順にランク付けされる。

for d in $(cat domains.txt); do ./yowie -format json -quiet "$d"; done \
  | jq -r '.findings[] | select(.category|startswith("Unidentified")) | .vendor' \
  | sort | uniq -c | sort -rn | head -40

無関係な組織をまたいで繰り返し現れるものは本物である。これはさらに、確認済みのライブサンプルを無償で生み出す — SPF と DMARC の証拠には実際の送信元ホスト名が含まれており、まさにそれが保留中のエントリに必要なものだからだ。

バニティ検出が誤検知を避ける仕組み

多くのベンダーはテナントゾーンをワイルドカード化しているため、「解決する」ことは何も証明しない。各テンプレートはまず、存在しないテナントに対してベンダーがどう応答するかを知るために、2つのランダムなラベルでプローブされる。候補がカウントされるのは、その応答がベースラインと異なる場合のみである。2つのベースラインが互いに食い違う場合 — ジオDNS、ラウンドロビン — 比較は無意味であり、シグネチャは推測されるのではなく警告付きでスキップされる。

NXDOMAIN のベースラインは Confirmed の検出結果を生む。応答が異なるワイルドカードのベースラインは、シグネチャ自身の信頼度と、なぜそれが弱いのかを説明する注記を生む。

知っておくべきフラグ

ツールをダウンロード