[OSINT]Shodanを使ってFileZenを探せ その2(データ収集テクニック)

はじめに

 先日公開をさせていただきました、[OSINT]Shodanを使ってFileZenを探せ その1の後半記事になります。その1ではFileZenのホストの特定をWebブラウザから行い、200以上のホストを見つける事ができました。
 その200以上のホストの情報について、どのようにして効率的に情報を取得すれば最も効率的なのか?その2ではその手法について簡単にご紹介したいと思います。

1章 Shodan Web UIの限界

 一般的には、WebUIから検索結果を見て行けばいいのでは?と考えると思います。しかし、数百件の情報を見ていくのは、気が遠くなる話です(私は飽きてしまいます)。

画像1

 shodanは1ページ10件ですので、上の例ですとすべての検索結果を見るためには最低でも23回、ページを遷移する必要があります。もう少し検索条件を絞る事で対象を減らす事は可能ではありますが、それがページを遷移しないことに対する解決策になるとは個人的にはあまり思えません。ではどうしたらいいのでしょうか?そのことについて次章から考えて行きます。

2章 検索結果をDownload(クレジットを消費します)

 実は課金ユーザには検索結果をダウンロードする機能があります。検索窓下にある[Download Results]がその機能です。

画像2

 実際にクリックをしてみました。クリックをすると以下のポップアップ画面が表示されます。

画像4

 Shodanでは10,000件の検索結果を1creditとしてExportすることができます。私はBlack Friday Saleでライセンスを購入していたので、20Creditを所有していました(現在3creditを消費しています)。このCreditですが、1度消費すると恐らく、戻ってこない(追加で購入できるのか、私のライセンスだと不明です(調べていません))ものです。大切に使いましょう。兎にも角にも、Download Report機能を使用することで、検索結果のダウンロードは可能です。ただ、Creditの消費が発生することもあり、個人的には結果が1000件を満たない少数なのであれば、Download機能を使う事はあまりお勧めしませんし、私ももったいないので使いません。

3章 Shodan Command-Line Interface

  shodanにはCommand-Line Interfaceが存在することをご存知でしょうか?そう、実はshodanにはCLIで検索できるという便利な機能が備わっています。shodan CLIはPythonのライブラリとして存在しています。

Shodan Command-Line Interface

画像4

  インストールの前にあらかじめ自身のAPIキーを取得しておきましょう。APIキーは[My Account]から取得できます。
 インストールは非常にかんたんです。

pip3 install shodan

以上です。インストール後、APIキーを登録します

shodan init [YOUR_API_KEY]

これをやらないと使えませんので気を付けてください。インストールが完了しましたら"shodan"とコマンドを入力して実行します。ヘルプが以下のように表示されるはずです。

$ shodan
Usage: shodan [OPTIONS] COMMAND [ARGS]...

Options:
 -h, --help  Show this message and exit.

Commands:
 alert       Manage the network alerts for your account
 convert     Convert the given input data file into a different format.
 count       Returns the number of results for a search
 data        Bulk data access to Shodan
 domain      View all available information for a domain
 download    Download search results and save them in a compressed JSON...
 honeyscore  Check whether the IP is a honeypot or not.
 host        View all available information for an IP address
 info        Shows general information about your account
 init        Initialize the Shodan command-line
 myip        Print your external IP address
 org         Manage your organization's access to Shodan
 parse       Extract information out of compressed JSON files.
 radar       Real-Time Map of some results as Shodan finds them.
 scan        Scan an IP/ netblock using Shodan.
 search      Search the Shodan database
 stats       Provide summary information about a search query
 stream      Stream data in real-time.
 version     Print version of this tool.

 色々な機能があることがおわかりいただけるかと思います(すみません、私も全てを使って検証をした事はありません)。今回は検索した結果を取得する事を目的として使いますので"shodan search"コマンドを使っていきます。オプションは以下のようになっています。それでは4章では、今回のFileZenを題材として実際に検索をしていきましょう。

$shodan search -h
Usage: shodan search [OPTIONS] <search query>

 Search the Shodan database

Options:
 --color / --no-color
 --fields TEXT         List of properties to show in the search results.
 --limit INTEGER       The number of search results that should be returned.
                       Maximum: 1000

 --separator TEXT      The separator between the properties of the search
                       results.

 -h, --help            Show this message and exit.

4章 shodan cliを使ってsearchする

 まずは何も考えないで検索をしてみます。

shodan search --color http.favicon.hash:-1338145819

 下図のような検索結果が返ってきます。

画像5

 これだけだと、個人的には欲しい情報がすべて含まれているわけではありません。個人的に欲しいのは下のようなraw dataに含まれるもっと詳細の情報です。例えば組織の特定に繋がるSSLの証明書に設定されているCNやO

画像6

バージョン情報の特定につながる可能性があるLast-Modified

画像7

等です。shodan searchコマンドでは、raw dataの
Property Nameを--fieldsオプションを使ってカンマ区切りで指定することで、Valueを出力させることが可能です。また、結果についてセパレータ(delimiter)を指定することも可能です。また、出力するデータについては上限値を設ける事も可能です。それでは実際にやってみたいと思います。コマンドは以下のようになります。

$ shodan search --color http.favicon.hash:-1338145819 --fields ip_str,http.host,hostnames,domains,ssl.cert.subject.CN,data --separator , --limit 1000

結果は以下のようになります。

画像8

 今回はセパレータに","を指定しましたのでCSV形式で処理する事が可能になっています。このように出力させれば、分析はもっと効率的にできるのではないかと思いますがいかがでしょうか?。ちなみに、CLIで検索をした場合もCreditを消費します。

$shodan info
Query credits available: 77
Scan credits available: 100

 月単位で最大100件までQueryを発行できます。今月はあと77件残っています(今月、Ondemand Scanはまだ1回もやってないのか…はやく使い切ろう)。このCreditは月がかわると(日付までは確認をしていません)また元の100に戻ります。ここがDownload Resultsとは異なる点です。なお、検索結果については画面に結果が流れるだけになります。結果を保存する場合は必ず、リダイレクタ(>)を使って標準出力の結果を保存するようにしてください。

まとめ

 その2ではその1でやったshodanの検索結果を、効率的に分析するための出力テクニックについてご紹介をしました。shodanにはこのほかにも様々な機能があり、使いこなす事でBlueTeam側にも、RedTeam側にも使える優秀な武器になります。
 今回はshodanを使った検索テクニックについてご紹介をしましたが、他にも似たようなサービスが沢山あり、それぞれの特徴を知り、生かして検索、調査することで新しい発見が得られる事が沢山あります。
 ぜひ、これらのツールを生かして、Happy OSINT Lifeをすごしてください。
 あ、そうだ、検索クエリについてですが、shodanでは[Explorer]というもので保存して共有することができるようになっています。

画像9

 このFilezen…関係者の皆様ごめんなさい🙇、これは僕の仕業です。

参考

Shodan (https://www.shodan.io/)
Shodan Command-Line Interface(https://cli.shodan.io/)
Shodan search 101(https://ninoseki.github.io/2020/04/01/shodan-101.html)


この記事が気に入ったらサポートをしてみませんか?