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がインストールされている必要があります。
-
リポジトリのクローン:
git clone https://github.com/laramies/theHarvester.git
-
ディレクトリの移動:
cd theHarvester
-
必要なライブラリのインストール:
sudo apt install python3-pip # pipが未インストールの場合 python3 -m pip install -r requirements/base.txt
(開発版の機能も試したい場合は `requirements/dev.txt` を使うこともあります)
-
実行:
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の検索エンジン |
bingapi | bingと同様 | 必要 | API経由でより多くの結果を得られる可能性 |
bufferoverun | サブドメイン, IPアドレス | 不要 | Rapid7’s Project Sonar/Project Discoveryのデータを使用 |
censys | サブドメイン, メールアドレス | 必要 | 証明書情報から検索 |
certspotter | サブドメイン | 不要 | Certificate Transparencyログを監視 |
crtsh | サブドメイン | 不要 | Comodo Certificate Search |
dnsdumpster | サブドメイン, DNS情報 | 不要 | DNS関連情報に特化 |
duckduckgo | メールアドレス, サブドメイン | 不要 | プライバシー重視の検索エンジン |
github-code | メールアドレス, サブドメイン (コード内) | 必要 | GitHubリポジトリ内のコードを検索 |
メールアドレス, サブドメイン | 不要 | 主要検索エンジン (レート制限に注意) | |
hunter | メールアドレス | 必要 | 法人メールアドレス検索に特化 |
intelx | メールアドレス, サブドメインなど | 必要 | アーカイブされたデータやダークウェブ情報も検索 |
関連人物名 | 不要 (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)! 😉
参考情報
-
theHarvester 公式GitHubリポジトリ:
https://github.com/laramies/theHarvester
最新のコード、イシュー、ドキュメントなど。
-
Kali Linux Tools – theharvester:
https://www.kali.org/tools/theharvester/
Kali LinuxにおけるtheHarvesterの概要説明。
コメント