現代のデジタル社会では、企業や組織がウェブサイト上で様々な文書(PDF、Word、Excel、PowerPointなど)を公開することが一般的です。これらの文書には、作成者、更新日時、使用されたソフトウェアなどの「メタデータ」が含まれていることが多く、意図せず内部情報が漏洩してしまう可能性があります。😱 Metagoofilは、このような公開文書を自動的に収集し、メタデータを抽出・分析するための強力なオープンソース・インテリジェンス(OSINT)ツールです。 この記事では、Metagoofilの概要から具体的な使い方、そして活用する上での注意点まで、詳しく解説していきます。
Metagoofilとは? 🤔
Metagoofilは、特定のドメイン(ウェブサイト)を対象として、公開されている文書ファイル(pdf, doc, xls, ppt, docx, pptx, xlsxなど)をGoogle検索エンジンを利用して探し出し、ローカルにダウンロードするツールです。元々はダウンロードしたファイルからメタデータを抽出する機能も持っていましたが、現在のバージョン(opsdiskによるフォーク版)では、メタデータ分析機能は削除され、ExifToolなどの他の専用ツールにその役割を委ねています。
主な目的は、OSINT(Open Source Intelligence)活動やペネトレーションテスト(侵入テスト)の情報収集フェーズにおいて、ターゲット組織が意図せず公開してしまっているファイルを発見し、潜在的な情報漏洩のリスクを評価することにあります。
Metagoofilは元々Christian Martorella氏によって開発され、Edge-Security Groupから提供されていましたが、現在はopsdiskによってメンテナンスされているフォーク版が主流となっており、Kali Linuxにもデフォルトでインストールされています(ただし、状況によっては別途インストールが必要な場合もあります)。
注意: Metagoofilの旧バージョンやドキュメントでは、メタデータ抽出機能について言及されている場合がありますが、現在のKali Linuxに搭載されているバージョンでは、ファイルの検索とダウンロードに特化しています。メタデータの分析には別途ExifToolなどを使用する必要があります。
Metagoofilの主な機能と利用シナリオ ✨
Metagoofilは、主に以下の機能を提供します。
- 特定ドメイン内の公開文書検索: Google検索を利用して、指定したドメイン内で公開されている特定のファイルタイプ(PDF, DOCX, XLSXなど)の文書を検索します。
- 文書の自動ダウンロード: 検索で見つかった文書ファイルをローカル環境に自動でダウンロードします。
- 検索結果の保存: 見つかった文書のURLリストなどをファイルに保存する機能も備えています。
これらの機能により、以下のようなシナリオでMetagoofilは活用されます。
- OSINT (オープンソース・インテリジェンス): ターゲット組織に関する公開情報を収集し、組織構造、利用技術、従業員情報などの手がかりを得ます。
- ペネトレーションテストの情報収集: 攻撃対象のシステムや組織に関する情報を集め、攻撃計画の立案に役立てます。特に、文書メタデータから得られるユーザー名やソフトウェアバージョンは、パスワード推測攻撃や既知の脆弱性を利用した攻撃の糸口となる可能性があります。
- 情報漏洩リスクの評価: 自組織のウェブサイトを対象にMetagoofilを実行し、意図せず機密情報を含むファイルや、不要なメタデータが含まれたファイルが公開されていないかを確認します。
- デジタルフォレンジック調査: 特定のドメインに関連する公開文書を収集し、事件調査の手がかりを探します。
ダウンロードされたファイルに含まれるメタデータ(作成者、ソフトウェアバージョン、ファイルパス、メールアドレス、時にはMACアドレスなど)は、それ自体が貴重な情報源となり得ます。例えば、ユーザー名はパスワードリスト攻撃の候補となり、ソフトウェアバージョンは既知の脆弱性を突くための情報となります。ファイルパス情報からは、内部のネットワーク構成やサーバー名を推測できる可能性もあります。
インストール方法 💻
Metagoofilは多くの場合、Kali Linuxにプリインストールされています。ターミナルを開いて以下のコマンドを実行し、ヘルプメッセージが表示されればインストール済みです。
metagoofil -h
もしインストールされていない場合や、他のLinuxディストリビューションで使用する場合は、以下の手順でインストールできます。
Kali Linux / Debian / Ubuntu の場合 (aptを使用)
aptパッケージマネージャを使用して簡単にインストールできます。
sudo apt update
sudo apt install metagoofil
依存関係のあるパッケージ (python3, python3-googlesearch, python3-requests など) も自動的にインストールされます。
GitHubからソースをクローンしてインストールする場合
最新版を利用したい場合や、他の環境で利用したい場合は、GitHubリポジトリから直接クローンしてセットアップします。
# リポジトリをクローン
git clone https://github.com/opsdisk/metagoofil.git
# ディレクトリを移動
cd metagoofil
# (任意) Python仮想環境を作成して有効化
virtualenv -p python3 .venv
source .venv/bin/activate
# 必要なPythonライブラリをインストール
pip install -r requirements.txt
# 実行権限を付与 (必要であれば)
chmod +x metagoofil.py
# ヘルプを表示して確認
./metagoofil.py -h
Dockerを利用することも可能です。詳細はopsdisk/metagoofil GitHubリポジトリを参照してください。
Metagoofilの使い方 🚀
Metagoofilの基本的な使い方は非常にシンプルです。ターミナルから `metagoofil` コマンド(またはGitHubからクローンした場合は `python3 metagoofil.py` や `./metagoofil.py`)に続けてオプションと引数を指定します。
metagoofil -d [ターゲットドメイン] -t [ファイルタイプ] [その他のオプション]
主要なオプション解説
以下によく使われるオプションとその意味を解説します。
オプション | 説明 | デフォルト値 | 例 |
---|---|---|---|
-d DOMAIN |
検索対象のドメイン名を指定します。(必須) | なし | -d example.com |
-t FILE_TYPES |
検索・ダウンロードするファイルの拡張子をカンマ区切りで指定します。(必須) 一般的な形式: pdf, doc, xls, ppt, odp, ods, docx, xlsx, pptx “ALL”を指定すると、理論上17,576種類の3文字拡張子を検索します(非推奨)。 |
なし | -t pdf,docx,xlsx |
-l SEARCH_MAX |
Google検索で取得する最大結果数を指定します。 | 100 | -l 200 |
-n DOWNLOAD_FILE_LIMIT |
ファイルタイプごとにダウンロードするファイルの最大数を指定します。 | 100 | -n 50 |
-o SAVE_DIRECTORY |
ダウンロードしたファイルを保存するディレクトリを指定します。指定しない場合はカレントディレクトリに保存されます。 | “.” (カレントディレクトリ) | -o downloaded_files |
-f [SAVE_FILE] |
見つかったファイルのHTMLリンクをファイルに保存します。ファイル名を指定しない場合は `html_links_<TIMESTAMP>.html` という名前で保存されます。このオプションを指定しない場合、リンクは保存されません。 | 指定なし (保存しない) | -f results.html -f (自動命名) |
-w |
このオプションを指定すると、検索結果のファイル(-nで指定した数まで)を実際にダウンロードします。指定しない場合は検索結果のURLを表示するのみです。 | 指定なし (ダウンロードしない) | -w |
-e DELAY |
Google検索間の遅延時間(秒)を指定します。短すぎるとGoogleにブロックされる可能性があります。 | 30.0 | -e 60 |
-r NUMBER_OF_THREADS |
ファイルのダウンロードに使用するスレッド数を指定します。 | 8 | -r 4 |
-i URL_TIMEOUT |
ファイルのダウンロード試行時のタイムアウト時間(秒)を指定します。 | 15 | -i 30 |
-u [USER_AGENT] |
ファイルのダウンロード時に使用するユーザーエージェントを指定します。 指定なし: GooglebotのUA -u のみ: ランダムなUA-u "カスタムUA" : 指定したUA |
“Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)” | -u "MyCustomScanner/1.0" -u |
-h, --help |
ヘルプメッセージを表示して終了します。 | なし | -h |
実行例
例として、`example.com` ドメインからPDFとDOCXファイルを探し、最大200件の検索結果からそれぞれ50ファイルまでをダウンロードし、`example_files` ディレクトリに保存、結果のリンクを `example_results.html` に出力する場合のコマンドは以下のようになります。
metagoofil -d example.com -t pdf,docx -l 200 -n 50 -o example_files -f example_results.html -w
このコマンドを実行すると、MetagoofilはGoogleで `site:example.com filetype:pdf` や `site:example.com filetype:docx` といった検索クエリを実行し、見つかったファイルのURLを取得します。そして `-w` オプションが指定されているため、各ファイルタイプについて `-n 50` で指定された最大50ファイルまでを `-o example_files` で指定されたディレクトリにダウンロードします。同時に、見つかった全てのファイルのリンクが `-f example_results.html` で指定されたファイルにHTML形式で保存されます。
結果の分析と活用 📊
Metagoofilの実行が完了すると、指定したディレクトリ(-oオプション)にダウンロードされたファイル群と、指定したファイル(-fオプション)にHTML形式のリンク一覧が出力されます。
現在のMetagoofil自体はメタデータ分析を行わないため、ダウンロードしたファイルから情報を抽出するには、ExifTool などのメタデータ分析ツールが別途必要になります。ExifToolは非常に多くのファイル形式に対応しており、詳細なメタデータを抽出・表示できる強力なツールです。
例えば、ダウンロードしたファイルが保存されているディレクトリ(例: `example_files`)に移動し、ExifToolを使ってPDFファイルとDOCXファイルのメタデータを抽出するには、以下のようなコマンドを実行します。
cd example_files
exiftool *.pdf *.docx
特定の情報(作成者、ソフトウェア、メールアドレスなど)だけを抽出したい場合は、`grep` や ExifTool のオプションを組み合わせて使用します。
# 作成者(Author), 作成者(Creator), メール(Email), 生成ソフト(Producer), テンプレート(Template) を含む行を抽出
exiftool -r *.pdf *.docx | egrep -i "Author|Creator|Email|Producer|Template" | sort -u
抽出されたメタデータからは、以下のような情報が得られる可能性があります。
- ユーザー名/作成者名: 組織の従業員名やアカウント名。パスワードリスト攻撃やソーシャルエンジニアリングに利用される可能性があります。
- ソフトウェア名とバージョン: 文書作成に使用されたソフトウェアとそのバージョン。特定のバージョンのソフトウェアに存在する既知の脆弱性を悪用されるリスクがあります。
- ファイルパス/フォルダ構造: 文書が保存されていたサーバー上のパス情報。内部ネットワークの構成や命名規則、共有フォルダ名などを推測する手がかりになることがあります。
- メールアドレス: 文書内やメタデータに含まれるメールアドレス。フィッシング攻撃の標的リスト作成などに悪用される可能性があります。
- プリンター名/サーバー名: ネットワーク機器やサーバーの名称。ネットワーク構成の把握に繋がることがあります。
- OS情報: 文書作成時のOS情報が含まれている場合、ターゲットシステム環境の推測に役立ちます。
- MACアドレス: Microsoft Office文書などには、作成に使用したPCのMACアドレスが含まれることがあります。これはハードウェア情報の特定に繋がる可能性があります。
これらの情報は単体では小さな断片かもしれませんが、他のOSINT情報と組み合わせることで、組織の内部状況、技術スタック、セキュリティ体制などについて、より詳細な像を描き出すことが可能になります。🔍
利用上の注意点と倫理的配慮 ⚠️
Metagoofilは非常に強力な情報収集ツールですが、その利用には十分な注意と倫理的な配慮が必要です。
- 法的・倫理的制約: Metagoofilを含むOSINTツールを使用する際は、対象とする国や地域の法律(不正アクセス禁止法、個人情報保護法など)を遵守する必要があります。許可なく他者のシステムやデータを探索・収集することは、違法行為となる可能性があります。必ず、テストを行う許可を得ているドメインに対してのみ使用してください。倫理的な観点からも、個人のプライバシーを侵害するような情報の収集は避けるべきです。
-
Googleによるブロック:
MetagoofilはGoogle検索を頻繁に利用するため、短時間に大量のリクエストを送ると、Googleによってボットと判断され、IPアドレスが一時的にブロックされる可能性があります(HTTP 429エラー)。これを避けるためには、
-e
オプションで検索間の遅延時間を適切に設定する(デフォルトは30秒)ことが推奨されます。また、大量の検索を行う場合は、ProxyChainsなどのツールと複数のプロキシサーバーを組み合わせて、リクエスト元IPアドレスを分散させる方法も考えられます。 - 目的の明確化: OSINT活動全般に言えることですが、収集する情報の目的を明確にしておくことが重要です。目的が曖昧なままツールを使用すると、膨大な情報の中に埋もれてしまい、本当に重要な情報を見逃したり、情報収集自体が目的化してしまったりする可能性があります。
-
ダウンロードファイルのリスク:
-w
オプションでファイルをダウンロードする場合、ダウンロードしたファイルにマルウェアが含まれている可能性もゼロではありません。ダウンロードしたファイルを開く際は、隔離された安全な環境(サンドボックスや分析用VMなど)で行うことを強く推奨します。メインの作業環境で不用意にファイルを開かないように注意してください。
免責事項: この記事で提供される情報は教育目的のみを目的としており、ツールの使用は自己責任で行ってください。不正な目的でのツールの使用は法律で禁止されています。ツールの使用によって生じたいかなる損害についても、筆者は責任を負いません。
まとめ 📝
Metagoofilは、特定のドメインから公開されている文書ファイルを効率的に検索し、ダウンロードするための便利なOSINTツールです。ペネトレーションテストの情報収集フェーズや、自組織の情報漏洩リスク評価において、その真価を発揮します。
現在のバージョンではメタデータ抽出機能は他のツール(ExifToolなど)に譲っていますが、公開ファイルの発見と収集という重要なステップを自動化できる点は依然として大きなメリットです。
ただし、その強力さゆえに、利用には法規制の遵守と倫理的な配慮が不可欠です。常に許可された範囲内で、責任を持ってツールを使用するようにしましょう。👍
この記事が、Metagoofilを理解し、適切に活用するための一助となれば幸いです。😊
コメント