はじめに
情報収集と補助モジュール(Auxiliary Modules)の実験へようこそ!
多くの人は Metasploit Framework と聞くと、脆弱なシステムを攻撃するためのペイロードを実行する「エクスプロイト」を連想します。しかし、Metasploit はペネトレーションテストにおける偵察や情報収集フェーズにおいても非常に強力なツールです。
Metasploit には「補助モジュール(Auxiliary modules)」と呼ばれるカテゴリが存在します。エクスプロイトモジュールとは異なり、補助モジュールはターゲットシステム上でペイロードを実行しません。その代わり、ポートスキャン、サービスの特定、ファジング、脆弱性スキャンといったタスクを実行するように設計されています。
この区別は重要です。なぜなら、エクスプロイトは攻撃プロセスの一段階に過ぎないからです。優れた攻撃的アプローチは、構造化された偵察、列挙(Enumeration)、および検証に依存しています。
この実験では、Metasploit コンソールの操作方法、特定の補助モジュールの検索、パラメータの設定、ローカルターゲットに対するネットワークスキャンの実行、そして Metasploit のデータベースに自動保存された結果の確認方法を学びます。
補助モジュールの検索
このステップでは、Metasploit Framework コンソールを起動し、補助モジュールを検索する方法を学びます。
Metasploit には数千ものモジュールが含まれています。必要なものを見つけるには、組み込みの search コマンドを使用します。このコマンドを使うと、モジュールのタイプ、名前、プラットフォームなどでフィルタリングが可能です。
まず、ターミナルを開いて Metasploit コンソールを起動します。-q フラグを使用して「静音(quiet)」モードで起動することで、大きな ASCII アートのバナーをスキップし、コンソールを素早く起動できます。
効率的な検索は Metasploit における実用的なスキルです。フレームワークは非常に巨大で毎回手動で探すことは不可能なため、モジュールセットを絞り込む方法は効果的な利用に不可欠です。
ターミナルで以下のコマンドを入力してください:
msfconsole -q
msf6 > のような Metasploit のプロンプトが表示されます。これは Metasploit の対話型シェルに入ったことを示しています。現在の環境で初めて Metasploit を起動した場合、新しいデータベースをセットアップするかどうか尋ねられることがあります。yes と答えて初期化が完了するのを待ってください。
次に、基本的な TCP ポートスキャンを実行できるモジュールを検索します。単純なキーワード検索は、複数の検索フィルタを使用するよりも Metasploit のバージョン間で安定して動作します。
Metasploit コンソール内で以下のコマンドを実行してください:
search portscan
以下のような出力が表示されるはずです:
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 auxiliary/scanner/portscan/ack normal No TCP ACK Firewall Scanner
1 auxiliary/scanner/portscan/ftpbounce normal No FTP Bounce Port Scanner
2 auxiliary/scanner/portscan/syn normal No TCP SYN Port Scanner
3 auxiliary/scanner/portscan/tcp normal No TCP Port Scanner
4 auxiliary/scanner/portscan/xmas normal No TCP "XMas" Port Scanner
検索結果には一致するモジュールの一覧が表示されます。各モジュールには特定のパス(例:auxiliary/scanner/portscan/tcp)、ランク、および簡単な説明があります。次のステップでは、これらのモジュールから 1 つを選択して使用します。
ターゲットパラメータの設定 (RHOSTS)
このステップでは、特定のポートスキャンモジュールを選択し、その設定を行います。
使用したいモジュールを Metasploit に指示するには、use コマンドの後にモジュールのパスを指定します。ここでは標準的な TCP ポートスキャナーを使用します。
Metasploit コンソールで以下のコマンドを実行してください:
use auxiliary/scanner/portscan/tcp
プロンプトが msf6 auxiliary(scanner/portscan/tcp) > に変わったことに注目してください。これはモジュールがアクティブになったことを示しています。
モジュールを実行する前に、パラメータを設定する必要があります。現在のモジュールで使用可能なすべてのパラメータは show options コマンドで確認できます:
show options
出力にはオプションの表が表示されます。Required(必須)列に注目してください。yes とマークされているオプションは、モジュールを実行する前に値を設定する必要があります。
Module options (auxiliary/scanner/portscan/tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
CONCURRENCY 10 yes The number of concurrent ports to check per host
DELAY 0 yes The delay between connections, per thread, in milliseconds
JITTER 0 yes The delay jitter factor (maximum value by which to +/- DELAY) in milliseconds.
PORTS 1-10000 yes Ports to scan (e.g. 22-25,80,110-900)
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
THREADS 1 yes The number of concurrent threads (max one per host)
TIMEOUT 1000 yes The socket connect timeout in milliseconds
最も重要な設定は RHOSTS(リモートホスト)で、ターゲットの IP アドレスまたはネットワーク範囲を指定します。この実験では、いくつかのサービスが稼働しているローカルマシン自身をスキャンします。
set コマンドを使用して、ターゲット IP アドレスを 127.0.0.1(localhost)に設定します:
set RHOSTS 127.0.0.1
デフォルトでは、このモジュールは 1 から 10000 までのポートをスキャンします。スキャンを素早く完了させるため、この実験環境で稼働していることがわかっている特定のポート(FTP の 21、HTTP の 80、PostgreSQL の 5432)のみにスキャンを制限しましょう。
PORTS オプションを以下のように設定します:
set PORTS 21,80,5432
再度 show options を実行して、設定が正しく適用されたか確認できます。
スキャンの実行と結果の保存
このステップでは、設定したポートスキャンを実行します。
Metasploit でスキャンを実行すると、単に結果が表示されるだけでなく、その発見事項がデータベースの一部となり、後のモジュールや判断材料として活用できるようになります。
情報収集に Metasploit を使用する最大の利点の一つは、組み込みのデータベース統合です。データベースが接続されている場合、Metasploit はスキャン結果を自動的に保存し、偵察データを整理された状態で保持します。
まず、Metasploit が PostgreSQL データベースに接続されているか確認します。以下のコマンドを実行してください:
db_status
以下のように接続を確認する出力が表示されるはずです:
[*] Connected to msf. Connection type: postgresql.
データベースがアクティブでモジュールオプションの設定が完了したので、スキャンを開始します。run または exploit と入力することでモジュールを開始できます。補助モジュールの場合、run を使用するのが標準的な慣習です。
スキャンを実行します:
run
Metasploit はターゲット IP アドレスの指定されたポートへの接続を試みます。3 つのポートに限定したため、ほぼ瞬時に完了するはずです。
以下のように、どのポートが開いているかを示す出力が表示されます:
[+] 127.0.0.1 - 127.0.0.1:21 - TCP OPEN
[+] 127.0.0.1 - 127.0.0.1:80 - TCP OPEN
[+] 127.0.0.1 - 127.0.0.1:5432 - TCP OPEN
[*] 127.0.0.1: - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
[+] 記号は成功した発見(開いているポート)を示します。裏側では、Metasploit はこの情報を直接データベースに保存しています。
データベース内のホストとサービスの確認
最後のステップでは、スキャン中に Metasploit が自動的にデータベースへ保存した情報を取得・確認する方法を学びます。
大規模なペネトレーションテストを行う場合、数十のネットワークや数百のホストをスキャンすることになります。すべての開いているポートを記憶することは不可能なため、データベースコマンドは非常に有用です。
Metasploit が発見して保存したすべてのターゲットシステムの一覧を表示するには、hosts コマンドを使用します:
hosts
出力には既知のホストの表が表示されます。先ほどスキャンした localhost の IP アドレスが表示されているはずです:
Hosts
=====
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
127.0.0.1 Unknown device
それらのホストで発見された特定のオープンポートやサービスを確認するには、services コマンドを使用します:
services
このコマンドはデータベースにクエリを投げ、スキャン中に見つかったすべてのオープンポートをリストアップします:
Services
========
host port proto name state info resource parents
---- ---- ----- ---- ----- ---- -------- -------
127.0.0.1 21 tcp open {}
127.0.0.1 80 tcp open {}
127.0.0.1 5432 tcp open {}
この段階では、基本的な TCP ポートスキャナーはポートが開いていることを記録しますが、詳細なサービス名やバージョン情報までは埋められない場合があります。後ほどより高度な補助モジュールを実行すると、この表は追加の詳細情報で充実していきます。
これで実験の目的をすべて達成しました!Metasploit コンソールを終了して通常の Linux ターミナルに戻るには、以下を入力します:
exit
まとめ
おめでとうございます!「情報収集と補助モジュール」の実験を無事に完了しました。
この実験を通じて、Metasploit が単なる攻撃ツールを超えた多機能なフレームワークであることを学びました。Metasploit コンソールの操作、特定の補助モジュールの検索、RHOSTS や PORTS といった重要なパラメータの設定を練習しました。さらに、ネットワークポートスキャンを実行し、Metasploit の強力なデータベース統合を活用して、hosts および services コマンドで偵察データを自動的に保存・確認する方法を習得しました。
これらの基礎スキルは、あらゆるセキュリティ評価の情報収集フェーズにおいて、ワークフローを整理するために不可欠です。



