現代のサイバーセキュリティにおいて、公開情報を活用して対象の情報を収集するOSINT(Open Source Intelligence)の重要性は日々高まっています。
攻撃者がターゲットを絞り込む際に最初に行うのがこのOSINTであり、防御側にとっても自組織の情報がどのように露出しているかを知ることは不可欠です。
数あるOSINTツールの中でも、コマンドラインベースで動作し、高い拡張性を持つフレームワークとして知られているのが「Recon-ng」です。
この記事では、Recon-ngの基本的な概念から、効率的な調査を行うための実践的なテクニックまでを詳しく解説していきます。
プロフェッショナルなセキュリティエンジニアを目指す方にとって、このツールの習得は調査の自動化と精度向上に大きく寄与するはずです。
Recon-ngとは:コマンドラインOSINTの強力な味方
Recon-ngは、Pythonで記述されたオープンソースのOSINTフレームワークであり、その操作感は有名なペネトレーションテストツールである「Metasploit Framework」に非常に似ています。
多くの単体ツールを個別に実行するのではなく、一つの環境内で複数のモジュールを組み合わせて使用できる点が最大の特徴です。
偵察活動に必要な機能が一つに集約されており、情報の収集、整理、分析を一貫して行うことが可能です。
Recon-ngは完全にモジュール形式を採用しており、必要に応じて新しい機能をマーケットプレイスから追加できる柔軟性を備えています。
インタラクティブなシェルを提供しているため、コマンドラインに慣れているユーザーであれば直感的に操作を進めることができるでしょう。
また、収集したデータはバックエンドのデータベースに自動的に保存されるため、後の工程での再利用が非常に容易です。
Recon-ngのインストールと環境構築
Recon-ngを使用するためには、まず適切なPython環境を整える必要があります。
Kali Linuxなどのペネトレーションテスト向けディストリビューションには標準で含まれていることが多いですが、最新版を利用するためにソースからインストールすることをお勧めします。
ソースコードからのセットアップ手順
公式のGitHubリポジトリからクローンを作成し、必要なライブラリをインストールする手順は以下の通りです。
# リポジトリのクローン
git clone https://github.com/lanmaster53/recon-ng.git
# ディレクトリへ移動
cd recon-ng
# 依存関係のインストール
pip install -r REQUIREMENTS
インストールが完了したら、./recon-ngを実行することでフレームワークを起動できます。
./recon-ng
[_]
[ ] _ _ ___ __ __ _ _ _ _ __
[_] ( ( (__ ( ) ( )( ( ( ( ( )
[ ] ) ) ___) (__ )( ) ) ) ) )(_
[_] (_)(_)(___)(___)(__)(_)(_)(_(_)(___)
[v5.1.2] [Tim Tomes (@lanmaster53)]
[recon-ng][default] >
このようにアスキーアートが表示され、プロンプトが変われば正常に起動しています。
ワークスペースによるプロジェクト管理
Recon-ngには「ワークスペース」という概念があり、調査対象ごとにデータを独立させて管理することができます。
デフォルトの状態では「default」というワークスペースが使用されますが、実際の業務ではクライアントごと、あるいはプロジェクトごとに分けるのが一般的です。
ワークスペースを分けることで、異なる調査対象のデータが混ざり合うリスクを回避できます。
新しいワークスペースを作成するには、以下のコマンドを使用します。
workspaces create target_company
既存のワークスペースを確認したり、切り替えたりする場合も workspaces コマンドから行えます。
これにより、データベースに蓄積されるホスト名、IPアドレス、連絡先情報などがプロジェクト単位で整理されます。
マーケットプレイスの仕組みとモジュール管理
バージョン5以降、Recon-ngはモジュールを「マーケットプレイス」から個別に取得する方式に変更されました。
初期状態ではモジュールがインストールされていないため、自分の目的に合ったものを探して追加する必要があります。
モジュールの検索と導入
マーケットプレイスには、情報の入手先や手法に応じて数百種類のモジュールが存在します。
例えば、ドメインに関連する情報を探したい場合は、以下のコマンドで検索を行います。
marketplace search domains
検索結果には、モジュールのパス、現在のバージョン、インストール済みかどうかが表示されます。
特定のモジュールをインストールするには marketplace install [パス] を実行します。
すべてのモジュールを一括でインストールしたい場合は、 marketplace install all を実行するのが便利です。
主要なモジュールカテゴリ
Recon-ngのモジュールは、その役割に応じていくつかのカテゴリに分類されています。
| カテゴリ | 主な役割 |
|---|---|
| Recon | 外部リソースから情報を収集し、データベースに登録します。 |
| Reporting | 収集したデータをHTMLやCSVなどの形式で出力します。 |
| Import | 外部ファイルからリストなどをデータベースに取り込みます。 |
| Discovery | 収集済みデータをもとに、さらなる派生情報を探索します。 |
これらのカテゴリを理解することで、調査のワークフローを組み立てやすくなります。
実践的なOSINT調査のステップ
それでは、具体的にRecon-ngを使ってどのように調査を進めるか、一般的な流れを見ていきましょう。
まずは調査対象となるドメインをデータベースに登録することから始めます。
ドメイン情報の登録とサブドメイン探索
最初に、ターゲットとなるドメインを domains テーブルに追加します。
db insert domains
対話形式でドメイン名(例:example.com)を入力すると、データベースに記録されます。
次に、そのドメインに関連するサブドメインを探索するモジュールを使用します。
例えば、Googleの検索インデックスを利用してホストを探す recon/domains-hosts/google_site_web などのモジュールが有効です。
モジュールを読み込んだら、 run コマンドで実行します。
見つかったサブドメインは、自動的に hosts テーブルに保存されます。
連絡先情報の抽出
ターゲット組織の従業員メールアドレスや氏名を収集することも、OSINTの重要なステップです。
recon/domains-contacts/whois_pocs モジュールを使用すると、WHOIS情報から担当者の連絡先を取得できます。
また、LinkedInなどのSNS情報を活用するモジュールを組み合わせることで、組織図に近いレベルの情報収集が可能になります。
収集された氏名や役職は contacts テーブルに整理されます。
APIキーの登録と外部サービスの連携
Recon-ngの真価を発揮させるには、外部のOSINTサービスが提供するAPIとの連携が欠かせません。
ShodanやCensys、Hunter.io、Virustotalなどのサービスは、非常に強力なデータソースとなります。
多くのモジュールはこれらのAPIキーが設定されていることを前提として動作します。
APIキーを登録するには、 keys add コマンドを使用します。
keys add shodan_api your_api_key_here
登録されたキーは、それを利用するすべてのモジュールで共有されます。
APIを活用することで、手動では不可能な膨大な量のスキャンデータに一瞬でアクセスできるようになります。
ただし、APIには利用制限やクォータがあるため、実行頻度には注意が必要です。
データベース構造の理解とデータ活用
Recon-ngの内部では、SQLiteがデータベースとして機能しています。
収集したデータを確認するためには、 show コマンドを利用します。
show hosts
show contacts
これにより、これまでの調査で得られた結果が一覧表示されます。
データが蓄積されていくにつれ、それぞれの情報が繋がりを持ち始めます。
例えば、特定のIPアドレスから稼働しているサービスを特定し、そこから脆弱性のあるバージョンを見つけ出すといった連携が可能になります。
必要であれば、 db query コマンドを使って直接SQL文を発行し、複雑な条件でデータを抽出することもできます。
自動化のためのリソースファイル活用
毎回同じコマンドを順番に入力するのは非効率的です。
Recon-ngでは、実行したいコマンドを記述した「リソースファイル」を読み込むことで、一連の操作を自動化できます。
# script.rc の内容例
workspaces select my_project
marketplace install all
modules load recon/domains-hosts/brute_hosts
options set SOURCE example.com
run
exit
このファイルを recon-ng -r script.rc として実行すれば、定型的な調査タスクをワンコマンドで完了させられます。
定期的な資産モニタリングなどにおいて、この自動化機能は非常に強力な武器となります。
OSINT調査における倫理と法的境界線
Recon-ngのような強力なツールを使用する際には、常に倫理的な観点を忘れてはなりません。
OSINTはあくまで「公開情報」を対象とするものですが、短時間に大量のリクエストを特定のサイトに送る行為は、DoS攻撃とみなされる可能性があります。
また、規約でスクレイピングが禁止されているサイトから情報を取得する行為も避けるべきです。
調査によって得られた情報は慎重に取り扱い、悪用や情報の漏洩がないよう厳重に管理する必要があります。
法的・倫理的なガイドラインを遵守してこそ、プロフェッショナルなセキュリティエンジニアと言えます。
まとめ
Recon-ngは、コマンドラインベースでOSINT調査を劇的に効率化する優れたフレームワークです。
Metasploitに近い操作体系、モジュールによる拡張性、そして強固なデータベース管理機能は、他のツールにはない大きな魅力です。
本記事で紹介したワークスペースの活用や、API連携による自動化の手法を習得することで、調査のスピードと精度は格段に向上するでしょう。
まずは自身の管理するドメインなどを対象に、どのような情報が収集可能かを試してみることから始めてみてください。
正しく使いこなすことで、Recon-ngはサイバー脅威から組織を守るための強力な盾となるはずです。
