OSINT について
OSINTは、セキュリティ調査担当者やサイト運営者向けの、ドメイン、IP、Webサイト調査用MCPサーバーです。公開記録、インフラ比較、範囲を限定した直接確認をまとめ、証拠と未実施の確認項目も示します。
主な機能
- 01単一・複数ドメインの調査
- 02ドメイン間の共有インフラ比較
- 03サイト情報と証拠シグナルの確認
- 04DNS、RDAP、TLS、メールセキュリティの照会
- 05証明書とアーカイブ履歴の確認
活用シーン
- 01不審なサイトの初期調査
- 02複数ドメインのインフラ比較
- 03ドメインのセキュリティ設定確認
- 04証明書と過去のスナップショットの確認
MCP 対応
調査ツールと証拠をまとめたレポート機能をMCPクライアントに公開します。個別の照会に加え、ドメインやサイトのレポートで複数の確認を実行できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
15掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| domain | string | はい | ドメイン名。例:“example.com”。完全なURLも使用できますが、ホスト名のみが使われます。 |
| include_active | boolean | いいえ | HTTPヘッダー、TLS、MTA-STSポリシーを取得するため、サイトにも接続します。falseにすると、公開APIとDNSのみを使用します。 |
| include_subdomains | boolean | いいえ | 証明書の透明性ログ(crt.sh)でサブドメインを検索します。最も時間がかかる処理です。falseにすると、最大1分ではなく数秒で完了します。 |
詳細
osint-mcp
ドメイン、IP、ウェブサイトを調査するための MCP ツールです。公開情報を検索したり、インフラを比較したり、複数のドメインを一度に確認したり、不審なサイトの背後にある詳細情報を収集したりできます。API キーは不要です。
ドメインを調べる際に、whois、crt.sh、Wayback Machine、Shodan のタブを行き来するのにうんざりしたので、モデルに調査と結果の取りまとめを任せられるようにしました。
ツール
| ツール | 機能 | 情報源 |
|---|---|---|
recon_domain | ドメインの概要、主な情報、各チェックのカバレッジ | RDAP、DNS、メール、CT ログ、HTTP、TLS、RIPEstat、InternetDB |
recon_batch | 最大 10 件のドメインレポートを生成します。一度に 3 件を実行し、情報源のエラーも各レポートに記録します | 公開 API + DNS。直接チェックはオプションです |
compare_domains | 共通する IP、ネームサーバー、メールサーバー、レジストラーと、一致の根拠となるレコード | DNS + RDAP |
investigate_site | ページの詳細、表示されている企業 ID、法的情報/連絡先ページ、登録情報、アーカイブの取得記録、HTTP、TLS。具体的なシグナルと未実施のチェックも表示します | ウェブサイト + 公開情報源 |
certificate_history | 証明書の発行者、有効期間、関連する名前、CT エントリへのリンク | crt.sh |
domain_whois | レジストラー、作成日/有効期限、ネームサーバー、不正利用に関する連絡先 | RDAP(rdap.org) |
ip_whois | ネットワークの所有者、CIDR、国、不正利用に関する連絡先、PTR | RDAP +逆引き DNS |
dns_lookup | A、AAAA、CNAME、MX、NS、TXT、SOA、CAA(または任意のレコードを指定) | 使用中のリゾルバーまたはカスタムリゾルバー |
subdomains | 証明書透明性ログで見つかったサブドメイン | crt.sh |
wayback | URL のアーカイブ済みスナップショット。example.com/* に対応 | Wayback CDX API |
http_headers | ステータス、リダイレクトチェーン、ヘッダー、不足しているセキュリティヘッダー | 直接リクエスト |
shodan_internetdb | オープンポート、ホスト名、CPE、既知の CVE | Shodan InternetDB(無料) |
email_security | SPF、DMARC、MTA-STS、TLS-RPT、DKIM。A~F で評価 | DNS |
tls_certificate | 発行者、有効期限、SAN、TLS バージョン、証明書が無効な理由 | 直接接続 |
asn_lookup | IP をアナウンスしている AS、その所有者、すべてのプレフィックス | RIPEstat |
http_headers、tls_certificate、investigate_site はサイトに直接接続します。email_security は MTA-STS ポリシーを取得する場合があります。recon_domain ではこれらの直接チェックがデフォルトで含まれます。HTTP、TLS、MTA-STS ポリシーの取得をスキップするには、include_active=false を設定してください。
recon_batch では、直接チェックはデフォルトで無効です。compare_domains は公開 API と DNS のみを使用します。DNS ルックアップでは引き続きリゾルバーが使われ、ドメインの権威ネームサーバーに到達することがあります。ポートスキャン、ディレクトリへのブルートフォース、フォーム送信、ブラウザースクリプトは行いません。
調査
単一のドメインを調べる場合は、まず recon_domain を使います。coverage フィールドには、各チェックが成功したか、失敗したか、部分的なデータを返したか、スキップされたかが示されます。ソースの一つに問題があっても、そのセクションにエラーが残るだけで、ほかの結果が消えることはありません。IPv4 と IPv6 のアドレスをどちらも対象とし、詳細を返すのは最大3つのアドレスです。
ポートフォリオや複数のドメインを調べる場合は、recon_batch を使います。最大10件を受け付け、重複するホスト名を取り除き、一度に処理するドメインを3つまでに制限します。各ドメインの制限時間は90秒です。incomplete_domains を使うと、失敗したドメインを簡単に見つけられます。サブドメイン履歴と直接接続は、どちらもデフォルトで無効です。
サイト間の関連性を調べる場合は、compare_domains を使います。共通のインフラを報告しますが、共通所有者かどうかは判定しません。CDN のアドレス、Google のメールサーバー、広く利用されているレジストラーは、無関係な数千ものドメインに共通して現れることがあります。DNS や RDAP のチェックに失敗した場合も、問題のない結果として扱わず、そのまま表示されます。
確認が必要なウェブサイトやショップには、investigate_site を使います。指定されたページを読み取り、必要に応じて、同じオリジンにあるリンク先の連絡先ページや法的情報ページを最大3つ読み取ります。タイトル、説明、表示されている会社識別情報、フォームの送信先、リンク先のドメインを抽出し、それらの情報を公開情報の照会結果と組み合わせます。HTML はテキストとして読み取ります。スクリプト、フォーム、リンク先のアセットが実行されることはありません。
レポートには、根拠を示す signals と、利用できなかった項目のリスト unavailable が含まれます。assessment は signals_collected または incomplete のいずれかです。どちらも、そのサイトが安全であることを意味しません。配送、レビュー、商品、会社番号の所有権は確認できません。フッターに記載された番号は、観察された主張にすぎず、登録済みであることが確認されたわけではありません。
オプションの reference_domain を指定すると、信頼できることがすでに分かっているドメインと表記を比較できます。github.io のようなプライベートサフィックスを含むパブリックサフィックスは、ダウンロードせずにパッケージ同梱のリストから取得されます。表記が似ている場合は URL を確認する理由になりますが、なりすましの証明にはなりません。
certificate_history は crt.sh から発行記録を読み取り、重複 ID とデータの切り詰めを報告します。現在どの証明書が提供されているかは分かりません。その確認には tls_certificate を使います。
ソースと鮮度
MCP の結果には、checked_at、evidence リスト、外部のテキストは信頼できないデータであることを示す注意書きが含まれます。エビデンスの記録には、ソースの URL、応答ステータス、取得時刻、応答がキャッシュから取得されたかどうかが含まれます。DNS のエビデンスには、照会した名前とリゾルバーの種類が記録されます。
checked_at はレポートの生成時刻です。fetched_at はこのツールがソースの応答を取得した時刻であり、プロバイダーが基盤データを最後に更新した時刻ではありません。キャッシュされた応答には、以前の取得時刻と有効期限が保持されます。0.3.0 より前に作成されたキャッシュエントリーは、再取得されるまで取得時刻が不明です。
レコード、ページタイトル、その他の外部文字列には、誤解を招くテキストや指示が含まれている可能性があります。これらは調査すべきエビデンスであり、接続先のエージェントへの指示ではありません。最終的な解釈は、引き続き調査担当者が行います。
直接リクエストでアクセスできるのは、パブリックな HTTP/HTTPS の宛先のみです。リダイレクト先を含め、プライベート、ローカル、マルチキャスト、予約済みのアドレスはブロックされます。接続には検証済みの DNS アドレスを使い、HTTP と TLS ではホスト名を保持します。HTTP ヘッダーは読み取りますが、最終ページの本文はダウンロードしません。JSON 応答の上限は 8 MiB、サイトページは 512 KiB、MTA-STS ポリシーは 64 KiB です。法的情報ページのリダイレクト先は、元のオリジンを越えることができません。環境プロキシは使用されません。
インストール
Python 3.10 以降が必要です。
pip install osint-mcp-server
または、uv を使う場合はインストール不要です。クライアントで uvx を指定するだけです(下記参照)。
Claude Desktop
claude_desktop_config.json に以下を追加します。
{
"mcpServers": {
"osint": {
"command": "uvx",
"args": ["osint-mcp-server"]
}
}
}
pip でインストールした場合は、引数なしで "command": "osint-mcp-server" を指定しても動作します。
Claude Code
claude mcp add osint -- uvx osint-mcp-server
Cursor、Windsurf などでも、Claude Desktop と同じ JSON を使用します。
更新
pip でインストールした場合:
python -m pip install --upgrade osint-mcp-server
uvx を起動するクライアントでは、uv に最新パッケージを確認させたい場合は args に osint-mcp-server@latest を指定してください。このリリースに固定するには [email protected] を指定します。更新後は MCP サーバーを再起動してください。既存の pip インストールは自動更新されません。
ツールのタイムアウトを設定できるクライアントでは、個別の調査に少なくとも 120 秒、バッチ全体に 360 秒を確保してください。再試行後、crt.sh と Wayback はさらに時間がかかることがあります。回答を 1 つだけ得たい場合は、小規模なツールを使用してください。
プロンプトの例
- 「example.com を偵察して、目立つ点を教えてください」
- 「ドメインになりすましてメールを送信できますか?まず何を修正すべきですか?」
- 「この 20 個のドメインのうち、今月証明書の有効期限が切れるものはどれですか?」
- 「AS13335 がアナウンスしている IP 範囲はどれですか?」
- 「この 5 つのサイトのセキュリティヘッダーを確認して、最も問題があるものを教えてください」
- 「example.com のサブドメインのうち、オープンポートのある対象に名前解決されるものはどれですか?」
- 「2015 年の example.com/about はどのような見た目でしたか?」
- 「この 3 つのショップを比較してください。ホスティング、メールサーバー、レジストラを共有していますか?実際に一致した項目を示してください」
- 「このショップの URL を調査し、問い合わせページも含めて、完了できなかったチェックを教えてください」
- 「examp1e.com は example.com に似ていますか?詐欺だと決めつけずに、根拠を集めてください」
- 「ウェブサイトには接続せずに、この 10 個のドメインを偵察してください」
- 「このドメインの直近 20 件の証明書エントリーと、それぞれに含まれる名前を表示してください」
キャッシュ
API の応答(RDAP、crt.sh、Wayback、RIPEstat、InternetDB)は sqlite に 6 時間キャッシュされます。主な目的は crt.sh への過剰なアクセスを防ぐことです。DNS、TLS、HTTP のチェックは常にリアルタイムで実行されます。
OSINT_MCP_CACHE=off # disable
OSINT_MCP_CACHE_TTL=3600 # seconds
OSINT_MCP_CACHE_PATH=/tmp/x.db
注意事項
- crt.sh と Wayback CDX API は低速で、502/503 を返すこともよくあります。サーバーは数回再試行します。再試行後、個々のリクエストに最大 3 分かかることがあります。ドメインのバッチは代わりに 90 秒で停止します。
- InternetDB はリアルタイムではなく、Shodan が実際にスキャンした IP のみを対象とします。
- DKIM セレクターを列挙することはできないため、
email_securityは一般的なセレクターを試します。使用しているセレクターがわかっている場合は、dkim_selectorsを渡してください。 - 一部の TLD では、rdap.org 経由で RDAP データが返されません。応答がないからといって、そのドメインが未登録だとは限りません。
- サイトチェックでは、サーバーがレンダリングした HTML を読み取ります。JavaScript でのみ読み込まれるコンテンツは表示されません。このツールはボットブロックを回避したり、ログインしたりしません。
開発
git clone https://github.com/robyroro/osint-mcp
cd osint-mcp
pip install -e . pytest ruff build
ruff check src tests
pytest
python -m build
テストでは合成データとモック化されたネットワーク応答を使用します。実際の MCP stdio ハンドシェイク、ソースの障害、キャッシュの移行、上限付きバッチ、ブロックされたネットワーク宛先が含まれます。CI では Linux と Windows 上で Python 3.10、3.12、3.14 を実行します。
公開ワークフローは v* タグで実行されます。バージョンを確認し、テストを実行して、パッケージをビルドし、PyPI に公開した後、公式 MCP Registry を更新します。GitHub にプッシュしただけでは、インストール済みパッケージやディレクトリの説明は更新されません。
MCP inspector で試すには:
npx @modelcontextprotocol/inspector osint-mcp
節度を守ってください
このツールが取得するのは公開データのみですが、利用は自分の対象、スコープ内のバグバウンティ対象、または研究目的に限ってください。他人を狙うために使用しないでください。
ライセンス
MIT © Robert Vind-Gardoș (@robyroro)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。