SNSを横断してユーザ名の検索が可能なCLIツール「Sherlock」を紹介する

### Sherlockとは何か
[Sherlock](https://github.com/sherlock-project/sherlock)はPythonで作られたコマンドラインツールです。
複数のSNS(Twittter,Facebook,Steam等)で同じユーザ名が使われているアカウントが存在するかどうかを確認することができます。

Sherlockを使うとこのように同じuser_idが存在するサービスが一覧表示されます。

```
$python3 sherlock.py --print-found {user_id}

[*] Checking username {user_id} on:
[+] Blogger: https://{user_id}.blogspot.com
[+] Facebook: https://www.facebook.com/{user_id}
[+] Instagram: https://www.instagram.com/{user_id}
[+] Pinterest: https://www.pinterest.com/{user_id}/
[+] Reddit: https://www.reddit.com/user/{user_id}
[+] Spotify: https://open.spotify.com/user/{user_id}
[+] Twitch: https://www.twitch.tv/{user_id}
[+] Twitter: https://www.twitter.com/{user_id}
※ユーザ名を{user_id}として表現しています。
```

### インストール手順
インストール手順は[SherlockのREADME](https://github.com/sherlock-project/sherlock)を参照してください。
Python(3.6以上)およびpip3のインストールが必要になります。

```
# インストール手順
# リポジトリをクローン
$ git clone https://github.com/sherlock-project/sherlock.git

# 対象ディレクトリに移動
$ cd sherlock

# 必要なライブラリのインストール
$ python3 -m pip install -r requirements.txt
```

sherlockを実行してインストールされたか確認してみます。

```
python3 sherlock.py --help
usage: sherlock.py [-h] [--version] [--verbose] [--rank]
                   [--folderoutput FOLDEROUTPUT] [--output OUTPUT] [--tor]
                   [--unique-tor] [--csv] [--site SITE_NAME]
                   [--proxy PROXY_URL] [--json JSON_FILE]
                   [--proxy_list PROXY_LIST] [--check_proxies CHECK_PROXY]
                   [--print-found]
                   USERNAMES [USERNAMES ...]

Sherlock: Find Usernames Across Social Networks (Version 0.9.12)

positional arguments:
  USERNAMES             One or more usernames to check with social networks.

optional arguments:
  -h, --help            show this help message and exit
  --version             Display version information and dependencies.
  --verbose, -v, -d, --debug
                        Display extra debugging information and metrics.
  --rank, -r            Present websites ordered by their Alexa.com global
                        rank in popularity.
  --folderoutput FOLDEROUTPUT, -fo FOLDEROUTPUT
                        If using multiple usernames, the output of the results
                        will be saved to this folder.
  --output OUTPUT, -o OUTPUT
                        If using single username, the output of the result
                        will be saved to this file.
  --tor, -t             Make requests over Tor; increases runtime; requires
                        Tor to be installed and in system path.
  --unique-tor, -u      Make requests over Tor with new Tor circuit after each
                        request; increases runtime; requires Tor to be
                        installed and in system path.
  --csv                 Create Comma-Separated Values (CSV) File.
  --site SITE_NAME      Limit analysis to just the listed sites. Add multiple
                        options to specify more than one site.
  --proxy PROXY_URL, -p PROXY_URL
                        Make requests over a proxy. e.g.
                        socks5://127.0.0.1:1080
  --json JSON_FILE, -j JSON_FILE
                        Load data from a JSON file or an online, valid, JSON
                        file.
  --proxy_list PROXY_LIST, -pl PROXY_LIST
                        Make requests over a proxy randomly chosen from a list
                        generated from a .csv file.
  --check_proxies CHECK_PROXY, -cp CHECK_PROXY
                        To be used with the '--proxy_list' parameter. The
                        script will check if the proxies supplied in the .csv
                        file are working and anonymous.Put 0 for no limit on
                        successfully checked proxies, or another number to
                        institute a limit.
  --print-found         Do not output sites where the username was not found.
```

ご覧の通り様々なオプションが存在しますが、本記事では取りあげません。

### 実際に検索してみる
```
$python3 sherlock.py --print-found {user_id}

[*] Checking username {user_id} on:
[+] Blogger: https://{user_id}.blogspot.com
[+] Facebook: https://www.facebook.com/{user_id}
[+] Instagram: https://www.instagram.com/{user_id}
[+] Pinterest: https://www.pinterest.com/{user_id}/
[+] Reddit: https://www.reddit.com/user/{user_id}
[+] Spotify: https://open.spotify.com/user/{user_id}
[+] Twitch: https://www.twitch.tv/{user_id}
[+] Twitter: https://www.twitter.com/{user_id}
※ユーザ名を{user_id}として表現しています。
```
様々なサービスで同じUserIDが使用されていることが分かります。

### まとめ
OSINTのツールを使うことで、簡単にユーザIDから公開情報を取得することができてしまうことが分かりました。
怖いですね。