theHarvester: OSINTによる情報収集ツール徹底解説

theHarvesterは、サイバーセキュリティの分野で広く利用されているオープンソースインテリジェンス(OSINT)ツールの一つです。主にペネトレーションテスト(侵入テスト)やレッドチーム演習の初期段階である偵察フェーズで使用され、ターゲットとなるドメインに関する公開情報を効率的に収集することを目的としています。🕵️‍♂️

このツールは、メールアドレス、サブドメイン、ホスト名、関連する人物名、IPアドレス、オープンポート、バナー情報など、様々な種類の情報を複数の公開データソース(検索エンジン、PGPキーサーバー、Shodanなど)から収集する能力を持っています。収集された情報は、攻撃対象領域(アタックサーフェス)の理解を深め、潜在的な脆弱性や侵入経路を特定するための重要な手がかりとなります。

⚠️ 注意: theHarvesterは強力な情報収集ツールですが、その使用は倫理的かつ法的な範囲内に留める必要があります。ターゲットとする組織やドメインに対して、明示的な許可なくスキャンや情報収集を行うことは、法律に違反し、深刻な法的結果を招く可能性があります。必ず許可された範囲内で、責任を持って使用してください。

theHarvesterのインストール方法はいくつかありますが、最も一般的なのはKali Linuxを使用する方法です。Kali Linuxには多くの場合、theHarvesterがプリインストールされています。

Kali Linuxでの利用

Kali Linuxを使用している場合、ターミナルを開いて以下のコマンドを実行することで、theHarvesterがインストールされているか確認し、起動できます。

theharvester -h

または

theHarvester -h

これにより、ヘルプメニューが表示されれば、インストール済みです。もしインストールされていない場合や、最新版にアップデートしたい場合は、以下のコマンドを使用します。

sudo apt update
sudo apt install theharvester

ソースからのインストール (pipを使用)

他のLinuxディストリビューションや、手動で最新版をインストールしたい場合は、GitHubリポジトリからソースコードをクローンしてインストールする方法があります。事前にPython3とpipがインストールされている必要があります。

  1. リポジトリのクローン:
    git clone https://github.com/laramies/theHarvester.git
  2. ディレクトリの移動:
    cd theHarvester
  3. 必要なライブラリのインストール:
    sudo apt install python3-pip  # pipが未インストールの場合
    python3 -m pip install -r requirements/base.txt

    (開発版の機能も試したい場合は `requirements/dev.txt` を使うこともあります)

  4. 実行:
    python3 theHarvester.py -h

他にもDockerを使用する方法などもあります。詳細は公式のGitHubリポジトリを参照してください。 https://github.com/laramies/theHarvester

theHarvesterの基本的なコマンド構文は以下の通りです。

theHarvester -d <ターゲットドメイン> -b <データソース> [オプション]
  • -d <ターゲットドメイン>: 調査対象のドメイン名(例: example.com)または会社名を指定します。必須のオプションです。
  • -b <データソース>: 情報収集に使用するデータソースを指定します。複数のソースを指定する場合はカンマ区切りにします(例: google,bing)。all を指定すると、APIキーを必要としない全ての利用可能なパッシブソースを使用します。

例えば、example.com というドメインについて、GoogleとBingをデータソースとして情報を収集する場合は、以下のようになります。

theHarvester -d example.com -b google,bing

theHarvesterには様々なオプションがあり、情報収集の範囲や方法を細かく制御できます。以下に主要なオプションをいくつか紹介します。

オプション 説明
-d, --domain <ドメイン> 調査対象のドメインまたは会社名を指定します。 -d example.com
-b, --source <ソース> 使用するデータソースを指定します。カンマ区切りで複数指定可能。
(例: baidu, bing, crtsh, dnsdumpster, duckduckgo, github-code, google, hunter, intelx, linkedin, netlas, otx, securityTrails, shodan, virustotal, yahoo, all など)
-b google,bing,crtsh
-b all
-l, --limit <数値> 各データソースから収集する結果の最大数を制限します。 -l 500
-f, --filename <ファイル名> 結果を指定されたファイル名で保存します。拡張子によってフォーマット(HTML, XML, JSON)が決まります。 -f results.html
-f results.json
-s, --start <数値> 指定した番号から結果の処理を開始します (デフォルト: 0)。 -s 100
-g, --google-dork Google Dorksを使用した追加検索を有効にします。(注意: 短時間に多数のリクエストを送るとGoogleからブロックされる可能性があります) -g
-n, --dns-server <IPアドレス> DNS解決に使用するカスタムDNSサーバーを指定します。 -n 8.8.8.8
-v, --virtual-host Bing検索で見つかったIPアドレスに対してバーチャルホスト検索を行います。 -v
--shodan 見つかったホストに対してShodan検索を行い、ポートやバナー情報を取得します。(Shodan APIキーが必要です) --shodan
--screenshot <ディレクトリ> 発見されたサブドメインのスクリーンショットを指定されたディレクトリに保存します。 --screenshot ./screenshots

これらは一部のオプションです。完全なリストと最新情報については、theHarvester -h コマンドを実行してヘルプメニューを確認してください。

theHarvesterは、多種多様な公開情報源(データソース)を利用して情報を収集します。各ソースは得意とする情報の種類が異なります。以下に代表的なデータソースとその概要を示します。

データソース名 主な収集情報 APIキー 備考
baiduメールアドレス, サブドメイン不要中国の主要検索エンジン
bingメールアドレス, サブドメイン, ホスト名不要 (API版は要)Microsoftの検索エンジン
bingapibingと同様必要API経由でより多くの結果を得られる可能性
bufferoverunサブドメイン, IPアドレス不要Rapid7’s Project Sonar/Project Discoveryのデータを使用
censysサブドメイン, メールアドレス必要証明書情報から検索
certspotterサブドメイン不要Certificate Transparencyログを監視
crtshサブドメイン不要Comodo Certificate Search
dnsdumpsterサブドメイン, DNS情報不要DNS関連情報に特化
duckduckgoメールアドレス, サブドメイン不要プライバシー重視の検索エンジン
github-codeメールアドレス, サブドメイン (コード内)必要GitHubリポジトリ内のコードを検索
googleメールアドレス, サブドメイン不要主要検索エンジン (レート制限に注意)
hunterメールアドレス必要法人メールアドレス検索に特化
intelxメールアドレス, サブドメインなど必要アーカイブされたデータやダークウェブ情報も検索
linkedin関連人物名不要 (Google経由)ビジネスSNSの公開情報
netlasサブドメイン, IPアドレス, Whoisなど必要ネットワークインフラ情報
otxサブドメイン, ホスト名不要AlienVault Open Threat Exchange
projectdiscoveryサブドメイン, ホスト名必要Chaos datasetを利用
securityTrailsサブドメイン, DNS履歴, IPアドレス必要包括的なドメイン・IPインテリジェンス
shodanオープンポート, バナー情報, IPアドレス必要 (--shodan オプションで使用)インターネット接続デバイス検索エンジン
virustotalサブドメイン不要 (APIキーで追加情報)マルウェア分析サイトのドメイン情報
yahooメールアドレス, サブドメイン不要主要検索エンジン
zoomeyeホスト名, ポート情報必要中国発のサイバースペース検索エンジン

APIキーが必要なデータソースを利用する場合、事前に各サービスに登録してAPIキーを取得し、theHarvesterの設定ファイル(通常は api-keys.yaml または環境変数)に設定する必要があります。APIキーを使用することで、より多くの、あるいはより質の高い情報を取得できる場合があります。✨

利用可能なデータソースはtheHarvesterのバージョンアップによって変更されることがあります。最新の情報は theHarvester -h や公式ドキュメントで確認してください。

ここでは、いくつかの具体的なユースケースに基づいたtheHarvesterのコマンド例を示します。(注意: 以下のコマンド例では `example.com` をターゲットドメインとしていますが、実際の調査では許可されたドメインを使用してください。)

1. 特定のソース(Google)で基本情報を収集

ターゲットドメイン `example.com` について、Google検索エンジンのみを使って情報を収集します。結果数の上限は300件とします。

theHarvester -d example.com -l 300 -b google

2. 複数のソースで情報を収集し、結果をHTMLファイルに保存

`example.com` について、Bing、crt.sh、DuckDuckGoの3つのソースを使い、結果を `example_results.html` というファイルに保存します。

theHarvester -d example.com -b bing,crtsh,duckduckgo -f example_results.html

保存されたHTMLファイルを開くと、収集された情報(メールアドレス、ホスト、IPなど)が整理された形式で表示され、レポート作成などに役立ちます。📄

3. 利用可能な全てのパッシブソースで情報を収集

APIキーを必要としない全てのパッシブデータソースを使って、`example.com` の情報を広範囲に収集します。

theHarvester -d example.com -b all

この方法は網羅的ですが、多数のソースにアクセスするため時間がかかる場合があります。⏳

4. Shodanを使ってホストのポート情報を追加収集

まず `all` ソースでホスト情報を収集し、その後、見つかったホストに対してShodan検索を実行してオープンポートやバナー情報を取得します。結果はJSONファイルに保存します。(Shodan APIキーの設定が必要です)

# 事前に api-keys.yaml などにShodanキーを設定しておく
theHarvester -d example.com -b all --shodan -f example_shodan.json

5. Hunterを使ってメールアドレスを重点的に収集

メールアドレス収集に特化したHunter.ioを使って `example.com` に関連するメールアドレスを探します。(Hunter APIキーの設定が必要です)

# 事前に api-keys.yaml などにHunterキーを設定しておく
theHarvester -d example.com -b hunter

theHarvesterを実行すると、以下のような種類の情報が収集・表示されます。

  • IP Addresses: ターゲットドメインに関連付けられたIPアドレス。
  • Emails: ターゲットドメインに関連するメールアドレス。従業員や組織のメールアドレスが含まれることがあります。
  • Hosts: ターゲットドメインに関連するホスト名やサブドメイン。www.example.com, mail.example.com, dev.example.com など。
  • People: LinkedInなどのソースから見つかった、ターゲット組織に関連する可能性のある人物名。
  • Ports: (--shodan オプション使用時など) 発見されたホストで開いている可能性のあるTCP/UDPポート番号とそのバナー情報。

これらの情報は、攻撃対象領域のマッピング、潜在的な標的(メールアドレスやサブドメイン)の特定、さらなるスキャンや脆弱性分析の起点として利用されます。例えば、発見されたサブドメインが開発環境やテスト環境であり、本番環境よりもセキュリティ対策が甘い場合、そこが侵入の足がかりになる可能性があります。また、収集されたメールアドレスは、フィッシング攻撃などのソーシャルエンジニアリングのターゲットリストとして悪用されるリスクもあります。🎣

結果は標準出力に表示されるほか、-f オプションで指定したファイル(HTML, XML, JSON)にも保存されるため、他のツールとの連携や分析、レポート作成に活用できます。

  • APIキーの活用: 前述の通り、多くのデータソース(Hunter, Shodan, SecurityTrails, GitHubなど)はAPIキーを提供しています。無料枠があるサービスも多いですが、有料プランを利用するとより多くの情報を、より速く収集できる場合があります。api-keys.yaml ファイルを適切に設定し、APIキーを活用しましょう。🔑
  • レート制限への対応: 特にGoogleなどの無料検索エンジンを多用すると、短時間に大量のリクエストを送った場合に一時的にブロックされる(レート制限を受ける)ことがあります。theHarvesterにはリクエスト間の遅延を設定する機能(古いバージョン)や、APIを利用することで、この問題を回避・軽減できる場合があります。
  • 他のツールとの連携: theHarvesterで収集したサブドメインリストやIPアドレスリストを、Nmap(ポートスキャン)、Subfinder(サブドメイン列挙)、httpx(HTTP/HTTPSサーバー検出)などの他のツールに入力として渡し、さらに詳細な調査を行うことが一般的です。
  • 結果のフィルタリングと分析: 大規模な組織を対象にすると、膨大な量の情報が収集されることがあります。JSON形式で出力し、jq コマンドなどを使って必要な情報だけを抽出したり、他の分析ツールに取り込んだりすると効率的です。
  • アクティブスキャン機能: theHarvesterにはDNSブルートフォース(辞書攻撃によるサブドメイン列挙)やDNSリバースルックアップ、TLD(トップレベルドメイン)展開などのアクティブな情報収集機能も含まれていますが、これらはターゲットシステムに直接的な問い合わせを行うため、検知される可能性が高まります。使用にはより慎重な判断が必要です。

重要:責任ある使用

theHarvesterは、ペネトレーションテストやセキュリティ評価を目的として設計されたツールですが、その能力は悪用される可能性も秘めています。以下の点を必ず遵守してください。

  • 許可の取得: 自身が所有または管理していないドメインやシステムに対してtheHarvesterを使用する場合は、必ず事前に書面による明確な許可を得てください。許可なく情報収集を行うことは、多くの国や地域で違法行為とみなされます。
  • 法律と規制の遵守: お住まいの地域やターゲットが存在する地域の法律、規制、利用規約を遵守してください。プライバシーに関する法律(GDPRなど)にも注意が必要です。
  • 影響の考慮: 大量のクエリを送信すると、ターゲットのサービスや情報提供元のサービスに負荷をかける可能性があります。-l オプションで結果数を制限するなど、影響を最小限に抑えるよう努めてください。
  • 目的の明確化: 収集した情報は、許可されたセキュリティ評価や研究目的のみに使用してください。不正アクセス、スパム送信、その他の悪意のある活動に利用してはなりません。

倫理的なハッカーやセキュリティ専門家は、技術的なスキルだけでなく、高い倫理観と法的知識を持つことが求められます。ツールの力を正しく理解し、責任を持って使用することが不可欠です。🛡️

theHarvesterは、OSINT(オープンソースインテリジェンス)活動、特にペネトレーションテストの偵察フェーズにおいて非常に強力で便利なツールです。様々な公開情報源からターゲットに関する情報を自動的に収集し、攻撃対象領域の把握や潜在的な脆弱性の発見に貢献します。🛠️

基本的な使い方から、各種オプションの活用、APIキーの設定、他のツールとの連携まで、その機能を深く理解することで、より効果的な情報収集が可能になります。しかし、その強力さゆえに、常に倫理的な観点と法的な規制を念頭に置き、許可された範囲内で責任を持って使用することが最も重要です。

このブログ記事が、theHarvesterを安全かつ効果的に活用するための一助となれば幸いです。Happy Hacking (ethically)! 😉

参考情報

コメント

タイトルとURLをコピーしました