
新規登録ドメインをブランドキーワードと照合し、DNSおよびVT検証を実施することで、ドメインスクワッティング、タイポスクワッティング、フィッシングの類似ドメインを検出するOSINTツール。
openSquatは、ブランドやドメインを狙ったサイバースクワッティングの脅威を特定する**オープンソースインテリジェンス(OSINT)**セキュリティツールです:
| 脅威の種類 | 説明 |
|---|---|
| 🎣 フィッシング | ブランドを模倣した不正なドメイン |
| 🔤 タイポスクワッティング | よくあるタイプミスを含むドメイン(例:gooogle.com) |
| 🌐 IDNホモグラフ | 異なるアルファベットの類似文字を使用 |
| 👥 ドッペルゲンガー | ブランド名を含むドメイン |
| 🔀 ビットスクワッティング | ドメイン名の1ビット誤り |
「ブランド保護のための強力なスイスアーミーナイフ」 — WhoisXML APIブログ、2022年8月
「タイポスクワッティングと関連するあらゆる種類のサイバーいたずらと戦うための驚異的なパワーを持つツール。」 — WhoisXML APIブログ、2022年8月
「新しく登録されたドメインに関する情報を収集するための便利なツール。」 — フィッシング検出ツールトップ5にランクイン — SOCRadarブログ、2022年7月
「openSquatは、自動化された監視と検出を通じて、ドメインスクワッティングやフィッシング攻撃に対する必須の保護を提供します。」 — Prince Yadav, TutorialsPoint、2026年3月
「OpenSquatは103個のスクワッティングドメイン、960個のアクティブなフィッシングウェブサイト、53個の疑わしい証明書を持つドメインを特定した。」 — Sharma et al., Journal of Information Security and Cybercrimes Research (JISCR)、Vol. 7, Issue 1, June 2024
openSquatはオープンコアモデルを採用しています:
このモデルにより、透明性とコミュニティコラボレーションを実現しつつ、エンタープライズ利用に必要なスケール、信頼性、運用要件をサポートします。
pip install opensquat
opensquat -k keywords.txt
git clone https://github.com/atenreiro/opensquat
cd opensquat
pip install -r requirements.txt
python3 opensquat.py -k keywords.txt
リポジトリユーザー向け: 以下のすべての例で、
opensquatをpython3 opensquat.pyに置き換えて、クローンしたチェックアウトから実行してください。
confusable_homoglyphs、homoglyphs、colorama、requests、dnspython、beautifulsoup4# デフォルト実行
opensquat
# 全オプションを表示
opensquat -h
# カスタムキーワードファイルを使用
opensquat -k my_keywords.txt
# Quad9によるDNS検証
opensquat --dns
# 証明書透過性ログの確認
opensquat --ct
# オープンポート(80/443)のスキャン
opensquat --portcheck
# フィッシングデータベースの相互参照
opensquat --phishing results.txt
# JSONで保存
opensquat -o results.json -t json
# CSVで保存
opensquat -o results.csv -t csv
| レベル | フラグ | 説明 |
|---|---|---|
| 0 | -c 0 | 非常に高い(結果が少ない、高精度) |
| 1 | -c 1 | 高い(デフォルト) |
| 2 | -c 2 | 中程度 |
| 3 | -c 3 | 低い |
| 4 | -c 4 | 非常に低い(結果が多い、誤検出も多い) |
注: API側(
--api)では、5つの信頼度レベルは4つのファジネス値(exact、low、auto、high)にマッピングされます —-c 3と-c 4はどちらもhighにマッピングされます。完全なマッピングと--api-fuzzinessによる上書きについては、プレミアムモードとAPIモードを参照してください。
openSquatは3つのモードをサポートしています。デフォルト(コミュニティ)は変更されておらず、既存のユーザーはフラグを追加する必要はありません。2つのプレミアムモードは単一のopenSquat APIキーを共有します。より大規模なフィードで同じローカル検出パイプラインを使用したい場合はプレミアムフィードを、ローカルフィードのダウンロードなしでサーバー側の検出を使用したい場合はプレミアムAPIを選択してください。
| モード | フラグ | 動作 |
|---|---|---|
| コミュニティ(デフォルト) | (なし) | 無料のNRDフィード(約10万ドメイン/日)をダウンロードし、ローカルでレーベンシュタイン検出を実行します。 |
| プレミアムフィード | --premium | openSquat APIキーを使用して有料のNRDフィード(nrd-lite、はるかに大規模)をダウンロードし、同じローカルレーベンシュタイン検出を実行します。 |
| プレミアムAPI | --api | ローカルフィードのダウンロードをスキップします。キーワードごとにopenSquat類似ドメインREST APIをクエリし、サーバー側の一致結果を返します。 |
opensquat.comでサインアップしてキーを取得します。同じキーがプレミアムフィード(--premium)とプレミアムAPI(--api)の両方で機能します。
--api-key YOUR_KEYOPENSQUAT_API_KEY 環境変数api_key.txt ファイル(ファイルに1キー、#コメント可)CLIフラグは
ps出力で表示されます。共有環境では環境変数またはキーファイルを推奨します。
# プレミアムフィードモード — 同じローカルパイプライン、より大規模なフィード
export OPENSQUAT_API_KEY=os_xxxxxxxxxxxx
opensquat -k keywords.txt --premium
# プレミアムAPIモード — キーワードごとにサーバー側検出
opensquat -k keywords.txt --api
# プレミアムAPI + 各返されたドメインのDNSレピュテーションチェック
opensquat -k keywords.txt --api --dns
# プレミアムAPI、キーワードごとにグループ化されたJSON出力
opensquat -k keywords.txt --api -t json -o results.json
# プレミアムAPIの検索をチューニング
opensquat -k keywords.txt --api --api-fuzziness high --api-history-days 7 --api-max-results 200
--premium または --api がキーを正常に読み込むと、CLIはマスクされた確認行を表示し、どのキーが選択されたかを漏洩せずに確認できます:
[*] API key loaded: os_gL...L5Mb
プレミアムAPIモードでは、実行サマリーにアクティブモード、APIコール数、残高と使用量の差分(例:4972 (used 4 of 4976 this run))が表示されます。キーワードごとの進行行はキーワードファイルと同じ順序で表示されます(APIコールは並行実行されます)。クオータ枯渇(HTTP 429)は正常に部分結果を返します。認証エラー(401)およびプランエラー(403)は明確なメッセージで中断します。
バックエンドがレート制限をかけた場合(Retry-After ヘッダー付きのHTTP 429)、ツールはクオータ枯渇と区別し、赤色の「クオータ枯渇」メッセージではなく黄色の [!] Rate limit hit (retry in Ns) 警告を表示し、部分結果を返し、サマリーには実際のAPI残高を保持して実際に使用したクレジット数を確認できます。大規模スキャンでのレート制限を避けるには、--api-rate-limit N を渡して全ワーカー間の送信リクエストを毎秒制限します。ほとんどのバックエンドでは 8 が安全な開始値です。
# 全ワーカーで毎秒8リクエストに制限
opensquat -k keywords.txt --api --api-rate-limit 8
プレミアムAPIモードではJSONを推奨します。APIはドメインごとにメタデータ(登録TLD、NRD初回検出日、IDNホモグラフフラグ、ホモグラフのユニコードレンダリング)を返すため、他の形式ではきれいに保持できません。
opensquat -k keywords.txt --api -t json -o results.json
プレミアムAPIモードでのリッチな出力例(一部省略):
[
{
"keyword": "microsoft",
"domains": [
{"domain": "securite-microsoft.fr", "tld": "fr", "date": "09-04-2026", "idn": false},
{"domain": "xn--mirosoft-hw7c.com", "tld": "com", "date": "09-04-2026", "idn": true, "unicode": "miᴄrosoft.com"}
]
}
]
idn フラグと unicode レンダリングにより、xn--mirosoft-hw7c.com が実際には ᴄ(ラテン文字小さい大文字C)で "microsoft" の "c" を偽装していることが一目でわかります。これはプレーンなpunycode文字列では完全に隠されてしまう情報です。
CSV出力もサポートされており、ドメインごとに1行で同じメタデータ列を持ち、Excelやpandasで作業するアナリストに適しています:
opensquat -k keywords.txt --api -t csv -o results.csv
CSVはUTF-8 BOM付きで書き出されるため、WindowsのExcelでユニコードのホモグラフ列が正しく表示されます。
コミュニティモードとプレミアムフィードモードは、モード間の一貫性のために同じJSONトップレベル構造を出力しますが、エントリごとに domain フィールドのみが設定されます(NRDフィードにはホスト型APIのみが持つドメインごとのメタデータが含まれていません):
[
{
"keyword": "microsoft",
"domains": [
{"domain": "mirosoft.com"},
{"domain": "mcrosoft.net"}
]
}
]