サイバーセキュリティの世界において、攻撃対象領域(アタックサーフェス)の把握は防御の第一歩となります。
しかし、手動で公開情報を収集するOSINT(オープンソース・インテリジェンス)作業は、膨大な時間と労力を必要とするのが実情です。
こうした課題を解決するために注目されているのが、多機能OSINTツールである「SpiderFoot」を用いた自動化手法です。
本記事では、SpiderFootを活用して効率的な情報収集フローを構築するための実践的なテクニックについて詳しく解説します。
OSINT自動化の重要性とSpiderFootの立ち位置
現代の企業ネットワークはクラウドサービスやリモートワークの普及により、その境界が極めて曖昧になっています。
情報漏洩や設定不備を未然に防ぐためには、攻撃者の視点で自社の資産がどのように見えているかを把握しなければなりません。
手動のOSINTでは、Google検索やWhois情報の確認、SNSの調査などを個別に行う必要があり、情報の見落としが発生するリスクがあります。
そこで、数百種類のデータソースを一括でスキャンできるSpiderFootのようなツールの活用が不可欠となります。
SpiderFootは、ドメイン名、IPアドレス、メールアドレスなどの最小限のターゲット情報を入力するだけで、関連する情報を自動的に芋づる式で引き出します。
これにより、セキュリティ担当者はデータの収集作業から解放され、収集されたデータの分析やリスク評価という本来の業務に注力できるようになります。
SpiderFootの主要な機能とサポートされるモジュール
SpiderFootが強力なツールとされる最大の理由は、その拡張性の高いモジュール構造にあります。
オープンソース版であっても200以上のモジュールが搭載されており、多角的なデータ収集が可能です。
インフラストラクチャ情報の収集
ネットワーク層の調査において、SpiderFootはDNSレコード、サブドメイン、IP範囲の特定を自動で行います。
特にサブドメインの列挙機能は強力で、開発環境や古い管理画面など、意図せず公開されている資産の発見に役立ちます。
また、ShodanやCensysといった外部サービスと連携することで、ターゲットが使用しているサーバーのOSや稼働しているサービス、既知の脆弱性情報まで収集できます。
漏洩情報とアカウント情報の特定
SpiderFootは、過去に発生したデータ漏洩事件のデータベースに照会をかけるモジュールを備えています。
Have I Been PwnedなどのAPIを利用することで、社内のメールアドレスが流出していないか、漏洩したパスワードが公開されていないかを自動的にチェックします。
また、SNSのプロフィール情報や、GitHubなどのコード共有サイトから機密情報が公開されていないかを確認することも可能です。
このように多岐にわたるデータを一箇所に集約できる点が、SpiderFootの大きな強みと言えます。
SpiderFootの導入手順と環境構築
SpiderFootはPythonベースで開発されており、クロスプラットフォームで動作します。
最も手軽に導入する方法は、公式のリポジトリからソースコードを取得するか、Dockerを利用する方法です。
Python環境でのインストール
Pythonがインストールされている環境であれば、pipコマンドを用いて必要な依存パッケージを導入できます。
以下のコードは、SpiderFootをGitHubからクローンし、セットアップを行う際の一例です。
# リポジトリのクローン
git clone https://github.com/smicallef/spiderfoot.git
cd spiderfoot
# 依存パッケージのインストール
pip install -r requirements.txt
# サーバーの起動
python3 ./sf.py -l 127.0.0.1:5001
実行結果として、ローカルホストの5001番ポートでWebブラウザベースの管理画面が起動します。
*************************************************************
* SpiderFoot 4.0: OSINT Automation Tool
* http://www.spiderfoot.net
*************************************************************
[14:30:22] INFO: Starting SpiderFoot Web Server on 127.0.0.1:5001...
[14:30:23] INFO: SpiderFoot Server is running. Access it at http://127.0.0.1:5001/
Dockerを利用したクイックスタート
環境を汚さずに利用したい場合は、Dockerイメージを利用するのが最適です。
公式のDockerイメージを使用すれば、複雑な依存関係の解決をスキップして即座に調査を開始できます。
docker runコマンドを実行するだけで、安定した解析環境を構築できるため、検証用途にも適しています。
自動化された情報収集フローの構築
SpiderFootを起動したら、まずは「New Scan」から新しい調査フローを作成します。
自動化のメリットを最大限に活かすためには、調査目的に応じた適切な設定が重要となります。
ターゲットの選定とスキャン設定
調査の起点となる「Seed Target」には、ドメイン名やIPアドレス、あるいは人名などを設定します。
スキャンの設定では、情報の網羅性を重視する「Investigate」モードや、特定の項目に絞った「Footprint」モードなどが選択可能です。
広範囲なスキャンは時間がかかるため、最初は調査範囲を絞り込み、必要に応じてステップアップしていくのが効率的です。
モジュール選択の最適化
デフォルトですべてのモジュールを有効にすると、大量のノイズが発生し、分析に時間がかかってしまいます。
例えば、ネットワーク資産の調査が目的であれば、WHOISやDNS関連のモジュールを優先し、SNS調査系をオフにするといったカスタマイズが推奨されます。
特定の目的に合わせてモジュールのオン・オフを切り替えることで、スキャン時間の短縮と精度の向上を両立できます。
API連携による収集能力の最大化
SpiderFootの真価を発揮させるには、外部サービスのAPIキーを登録することが不可欠です。
無料で利用できる範囲のOSINTでは限界がありますが、APIを連携させることで有料級のデータソースにアクセス可能となります。
| サービス名 | 収集可能な情報の種類 | 連携のメリット |
|---|---|---|
| Shodan | デバイス、ポート、脆弱性 | 公開サーバーのポート開放状況を自動特定 |
| VirusTotal | ドメイン・IPの評判、マルウェア | 不審な通信先やマルウェアの紐付けを確認 |
| Have I Been Pwned | アカウント漏洩情報 | 従業員のメールアドレス流出リスクを把握 |
| SecurityTrails | DNS履歴、サブドメイン | 過去のDNS設定から隠れた資産を発見 |
これらのAPIキーをSpiderFootの「Settings」メニューから一括登録しておくことで、スキャン実行時に自動的に各サービスへクエリを飛ばしてくれます。
特にShodanのようなインフラ系サービスとの連携は、脆弱性管理を自動化する上で非常に重要です。
APIをフル活用することで、手動では数日かかる調査を数分で完了させることが可能になります。
実践的な収集テクニックと高度なフィルタリング
膨大なスキャン結果が得られた後は、そこから「意味のある情報」を抽出するフェーズに移行します。
SpiderFootのグラフ表示機能(Graph View)を利用すると、データ同士の相関関係を視覚的に把握できます。
例えば、あるIPアドレスから派生して見つかった複数のドメイン名が、同じ証明書を使用しているといった繋がりを容易に発見できます。
また、結果のフィルタリング機能を使い、「High Risk」や「Medium Risk」と判定された項目のみを抽出することで、優先的に対処すべき課題を特定できます。
ノイズとなる「False Positive(誤検知)」を減らすためには、スキャン後のデータの精査フローをあらかじめ定めておくことが実務上のポイントです。
コマンドライン(CLI)による自動化
Web UIは直感的で使いやすい反面、定期的な実行や他のシステムとの連携には不向きです。
SpiderFootのCLIツールを活用すれば、シェルスクリプトやCronと組み合わせてOSINTを完全に自動化できます。
# CLIを使用したスキャンの実行例
python3 ./sf.py -m sfp_shodan,sfp_dns -s example.com -f -o json
上記のコマンドでは、ShodanとDNSモジュールに絞って example.com をスキャンし、結果をJSON形式で出力します。
JSON形式で出力することで、収集したデータをSIEM(Security Information and Event Management)に流し込んだり、独自の通知システムに連携させたりすることが容易になります。
「毎週月曜日の朝に自社ドメインのスキャンを行い、新しいサブドメインが見つかったらSlackで通知する」といったワークフローも構築可能です。
セキュリティ業務での活用シーンと倫理
SpiderFootは強力なツールであるがゆえに、その利用方法には細心の注意が必要です。
企業内での脆弱性診断やアタックサーフェス管理(ASM)として利用する場合は、対象の所有者から適切な許可を得ていることが大前提となります。
また、過度なリクエスト送信はターゲットとなるサーバーに負荷をかけるだけでなく、セキュリティ製品によってスキャン元のIPアドレスがブロックされる原因にもなります。
OSINTはあくまで「公開情報の収集」ですが、APIを通じて有料データベースを叩く行為や、アクティブなポートスキャンを伴うモジュールの使用は慎重に行うべきです。
倫理的なガイドラインを遵守しつつ、正当な防御目的で活用することが、プロフェッショナルなセキュリティ担当者に求められる姿勢です。
まとめ
SpiderFootを用いたOSINTの自動化は、サイバーセキュリティの効率を劇的に向上させる強力な手法です。
多種多様なモジュールとAPI連携を駆使することで、手動では困難だった広範囲の資産調査とリスク特定を短時間で実現できます。
また、CLIを活用したワークフローの構築により、継続的なモニタリング体制を整えることも可能です。
まずは重要な資産のドメインやIPをターゲットに、小さなスキャンから始めてみることをお勧めします。
ツールによる自動化と専門家による分析を組み合わせることで、より強固なセキュリティ基盤を築き上げることができるでしょう。
