OpenVAS/GVM の概要
OpenVAS スキャナは nessus 派生の脆弱性スキャナです。OpenVAS という名前のプロジェクトで作られた OpenVAS スキャナは GVM (Greenbone Vulnerability Management) というフレームワークに内包されており、OpenVAS スキャナでスキャンした脆弱性情報を管理します。
また、GSA (Greenbone Security Assistant) は GVM が管理している情報を WebUI で提供します。
GVM (OpenVAS)/GSA は現在 Greenbone Networks 社が開発しており、この 2 つは Open Source となっています。
Greenbone Networks 社は独自 OS の Greenbone OS の上にこれらやさらなる付加価値のあるソフトウェアを含めた製品 GSM (Greenbone Security Manager) のハードウェア、仮想アプライアンス等を販売しています。
今回やりたいこと
今回は Kali Linux (2021.4a) に GVM/GSA をインストールし、リモートにある古い Windows に対してスキャンを試みます。
構成は以下の通り。
Kali Linux へのインストール手順
Kali Linux の初期セットアップは以下を参照。
まずはパッケージインストール。
$ sudo -s # apt install -y gvm
次に setup コマンド
# gvm-setup
めっちゃ時間かかりますが、最後に以下のように admin user のパスワードが表示されます。
[+] Done [*] Please note the password for the admin user [*] User created with password '53382cd0-06fd-43be-b59b-d4231f9618e6'. [>] You can now run gvm-check-setup to make sure everything is correctly configured
そして gvm を起動します。
# gvm-start
これで Kali linux 上のブラウザで https://127.0.0.1:9392 へアクセスし、上記 admin でログインできます。以下は Kali Linux 上のブラウザでのログイン後の画面です。
GSA へのリモートアクセス
デフォルト設定ではリモートからのブラウザアクセスできません。何故かというと、Listen アドレスが 127.0.0.1 になっているからです。
# ss -nltup
~~~
tcp LISTEN 0 4096 127.0.0.1:9392 0.0.0.0:* users:(("gsad",pid=1826,fd=10))
~~~
gsad (Greenbone Security Assistant Daemon) というプロセスが 127.0.0.1:9392 を Listen していますが、これを 0.0.0.0 (所有する全 IP で Listen) に変えます。変更するためには systemd の設定を変更します。
# cp -p /lib/systemd/system/greenbone-security-assistant.service /etc/systemd/system/ # vi /etc/systemd/system/greenbone-security-assistant.service (以下の行を) ExecStart=/usr/sbin/gsad --listen=127.0.0.1 --port=9392 (以下に変更) ExecStart=/usr/sbin/gsad --listen=0.0.0.0 --port=9392
特定のインタフェースのみ Listen したい場合はそのインタフェースの IP を指定すれば OK です。
そしてサービスをリスタートし、再び ss -nltup で確認しましょう。
# systemctl daemon-reload # systemctl restart greenbone-security-assistant.service # systemctl status greenbone-security-assistant.service # ss -nltup
これで 0.0.0.0:9392 が表示されれば、リモート機器のブラウザからアクセスできるようになります。(ufw を有効にしている場合は穴あけを忘れずに)
リモートの Windows Server 2019 をスキャンする手順
GSA にログインし、以下の手順で Windows Server 2019 をスキャンします。
- Configuration ⇒ Credentials にて SMB ユーザの ID/PW 情報を登録
- Configuration ⇒ Targets にて Windows Server 2019 のホスト情報を登録
- Scans ⇒ Tasks にて Scan 内容を作成
Credentials では SSH や SMB, SNMP 等の認証が必要なプロトコルの認証情報を登録します。今回は Windows の主要プロトコル SMB についても検査を行います。
Targets ではスキャン対象として IP やホスト名、ポートスキャンの対象ポート、Credentials の情報などを登録します。
そして最後、Tasks ではスキャンの実行情報を登録します。
手順は以下のスライドショーをご参照下さい。
スキャン結果
今回は Windows Server 2019 Datacenter Edition を、以下の 3 パターンにセットしてそれぞれスキャンを行いました。パターン 3 は2021.12.31 時点で Windows Update を当てた build です。
- version 1809 build 17763.1158 , Windows Firewall を有効化 (public)
- version 1809 build 17763.1158 , Windows Firewall を無効化
- version 1809 build 17763.2366 , Windows Firewall を無効化
結果は以下の通りです。上記 3 パターンごとに、脆弱性のリスクの度合い HIGH, MEDIUM, LOW, LOG ごとに脆弱性の件数を挙げています。
HIGH | MEDIUM | LOW | |
---|---|---|---|
パターン1 | 0 | 0 | 0 |
パターン2 | 21 | 2 | 0 |
パターン3 | 1 | 2 | 0 |
Windows Firewall を有効にしていると脆弱性は何も検知されませんでした。
ちなみに、パターン 2 のレポートは以下のように出力されます。
さらに参考で、パターン 2 をスキャンしたときのパケットキャプチャファイル (openvas.pcap) を以下からダウンロードできます。(Kali Linux 上で tcpdump を実行したもの)
トラブルシュート
スキャン実行時に「Interrupted at 0 %」と表示されたら
個人的に以下のパターンで引っかかりました。もし表示されたら確認してみてください。
- grub で IPv6 を disable にしている
- redis-server サービスが起動していない (systemctl status redis-server@openvas.service)
その他トラブルシュート
/var/log/gvm 配下のログを確認。
コメント