sherlock — 400以上のSNSから同一ユーザー名を横断探索するOSINTツール
sherlock-project/sherlock
★ 107,394 ・ Python ・ MIT
概要
「sherlock」は、指定したユーザー名を手がかりに、400を超えるソーシャルネットワークやWebサービス上に存在する同一のアカウントを一括検索できるPython製のオープンソースCLIツールです。セキュリティ分野におけるOSINT(オープンソース・インテリジェンス:一般に公開されている情報源からの情報収集)や、ペネトレーションテストにおける情報収集(Reconnaissance)フェーズで広く利用されています。
複数のWebサイトで同一または類似のユーザー名を使い回しているユーザーのアカウント網羅的な調査や、自社ブランド名・組織名が各種プラットフォームで意図せず取得されていないかの確認など、インフォセック担当者や調査員、システム管理者に向いているツールです。
主な特徴
- 400以上のプラットフォームに対応: 主要なSNSをはじめとする400以上のWebサービスを対象に、指定したユーザー名の登録状況を自動で確認します。
- 複数ユーザー名やワイルドカードによる柔軟な検索: 1つのユーザー名だけでなく複数のユーザー名を同時に指定できます。また、
{?}というプレースホルダーを用いて「_」「-」「.」といった記号の置き換えパターンを網羅する検索にも対応しています。 - 多彩な出力形式をサポート: 調査結果は標準のテキストファイル(
.txt)のほか、CSV形式(--csv)やMicrosoft Excel形式(--xlsx)での保存が可能です。 - プロキシおよび詳細なネットワーク設定:
--proxyオプションによりSOCKS5などのプロキシサーバー経由でのリクエスト発行が可能なほか、タイムアウト値の調整やHTTPレスポンスのダンプ機能も備えています。 - NSFWサイトの検索オプション: デフォルトでは除外されている成人向けサイト(NSFW)も、
--nsfwフラグを付与することで検索対象に含められます。
使い方
インストール方法
推奨されるインストール手段として、Python環境の隔離ツールである pipx やコンテナ仮想化ツールである Docker などが案内されています。
pipx または pip / uv を利用する場合:
pipx install sherlock-project
pipx の代わりに pip や uv を使ってインストールすることも可能です。
Dockerを利用する場合:
コンテナイメージが提供されており、以下のコマンドで直接実行できます。
docker run -it --rm sherlock/sherlock
パッケージマネージャーを利用する場合:
Fedora系ディストリビューション向けには dnf からインストールできます。
dnf install sherlock-project
このほか、コミュニティによりメンテナンスされているパッケージとして Debian (>= 13)、Ubuntu (>= 22.10)、Homebrew、Kali Linux、BlackArch 向けのパッケージも存在します。
基本的な実行方法
単一のユーザー名を調査する場合、コマンドに調査対象の文字列を渡します。
sherlock user123
複数のユーザー名を一度に調査したい場合は、スペース区切りで並べて実行します。
sherlock user1 user2 user3
実行が完了すると、発見されたアカウント情報の一覧がユーザー名に対応したテキストファイル(例: user123.txt)として出力されます。
便利なオプション指定
Sherlockには豊富なコマンドラインオプションが用意されています。
- 調査対象サイトを限定する(
--site): 特定のサービスのみをピンポイントで確認したい場合に使用します。sherlock --site twitter --site github user123 - ブラウザで一括表示する(
--browse/-b): 発見されたアカウントのURLを、システムのデフォルトブラウザで一気に開きます。 - 出力先や形式の指定:
単一ユーザー名の場合は
--output <ファイル名>、複数ユーザー名の場合は--folderoutput <ディレクトリ名>を指定して出力先を制御できます。また、スプレッドシート等で集計したい場合は--csvや--xlsxを追加します。 - プロキシの利用(
--proxy/-p): 通信元を制限・変更したい場合は、プロキシのURL(例:socks5://127.0.0.1:1080)を指定して実行できます。
技術的なポイント
SherlockはPythonで実装されたCLIアプリケーションです。READMEのヘルプ出力(バージョン 0.16.0 時点)などから、以下のような設計が読み取れます。
- JSONデータによるターゲット定義の管理: 検索対象となる各サービスのURL形式や判定ロジックはJSONデータとして管理されており、
--jsonオプションでローカルまたはリモートの定義ファイルを読み込ませることが可能です。READMEには「Upstream PR numbers also accepted(アップストリームのPull Request番号も指定可能)」とあり、開発中のサイト定義を手元で素早く検証できる仕組みが整っています。 - 柔軟な判定制御:
--ignore-exclusionsオプションを指定することで、誤検知防止のために除外されているルールを無視して探索を行うことができます。また、HTTPレスポンスのダンプ(--dump-response)や詳細デバッグ情報の出力(--verbose)など、各Webサイトの仕様変更に追随するための診断機能がCLIに組み込まれています。
注意点
- ライセンス: 本ツールのライセンスは MIT License です。
- 特定環境のサードパーティパッケージに関する警告: READMEには警告として、サードパーティによって管理されている ParrotOS および Ubuntu 24.04 向けのパッケージが破損(broken)している状態であることが記載されています。これらの環境を使用している場合は、システムパッケージではなく
uvやpipx、pip、またはDockerを用いたインストールが推奨されています。 - コミュニティパッケージのサポート範囲: Debian、Ubuntu、Homebrew、Kali、BlackArch 等のパッケージはコミュニティによって維持されており、Sherlockプロジェクト自身が直接サポートやメンテナンスを行っているものではない点に留意する必要があります。
- 利用上の配慮: 多数のWebサービスに対して短時間でHTTPリクエストを送信するツールであるため、過度な並行リクエストによるサービス側への負荷や、利用規約・各種ポリシーに配慮した適切な運用が求められます。
まとめ
sherlockは、400以上のWebサービスを対象に同一ユーザー名のアカウントを素早くリストアップできる強力なOSINTツールです。豊富な出力フォーマットやプロキシ対応など、セキュリティ調査やアカウントのフットプリント把握に必要な実用的な機能を備えています。





