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) のハードウェア、仮想アプライアンス等を販売しています。
今回やりたいこと
今回は RedHat 系 OS (今回は Rocky Linux minimal install) に GVM/GSA をインストールし、リモートにある古い Windows に対してスキャンを試みます。
構成は以下の通り。
Rocky Linux へのインストール手順
まず SELinux を無効化します。これは gvm-setup コマンドの要件です。Permissive はええやろ、と思ったのですが、Permissive もダメだそうです。Permissive はええやろ。。。
[root@rocky ~]# sed -i -e "s/^SELINUX=enforcing$/SELINUX=disabled/g" /etc/selinux/config [root@rocky ~]# reboot
次に必要なパッケージ wget と epel-release をインストールします。また、epel-release については powertools リポジトリも有効化します。
[root@rocky ~]# dnf install -y wget epel-release [root@rocky ~]# dnf config-manager --set-enabled powertools
次に atomicorp のリポジトリをインストールします。curl でできないか頑張ってみましたができませんでした。wget で実行。
[root@rocky ~]# wget -q -O - https://updates.atomicorp.com/installers/atomic | sudo sh
そして GVM をインストール。
[root@rocky ~]# dnf install -y gvm
そして GVM setup コマンド。最後のほうでログイン時の admin のパスワードを入力します。
[root@rocky ~]# gvm-setup ~~~ GVMD startup: Done Set the GSAD admin users password. The admin user is used to configure accounts, Update NVT's manually, and manage roles. Enter Administrator Password: ******** Verify Administrator Password: ******** Created symlink /etc/systemd/system/multi-user.target.wants/ospd-openvas.service → /usr/lib/systemd/system/ospd-openvas.service. Created symlink /etc/systemd/system/openvas-manager.service → /usr/lib/systemd/system/gvmd.service. Created symlink /etc/systemd/system/multi-user.target.wants/gvmd.service → /usr/lib/systemd/system/gvmd.service. Created symlink /etc/systemd/system/greenbone-security-assistant.service → /usr/lib/systemd/system/gsad.service. Created symlink /etc/systemd/system/multi-user.target.wants/gsad.service → /usr/lib/systemd/system/gsad.service. success success ##################################### Setup complete Log in to GSAD at https://localhost #####################################
状態確認とログイン
gvmd と gsad が起動しているか、443/tcp が Listen になっているかを確認します。
[root@rocky ~]# systemctl status gvmd gsad [root@rocky ~]# ss -nltup ~~~ tcp LISTEN 0 128 *:443 *:* users:(("gsad",pid=3554,fd=9))
また、セットアップ時に firewalld の設定も勝手に追加されています。甘やかしな気がしますが、そんなことよりせめて Permissive でもインストーラが動くようにしてほしい。サービスで https が開いていることを確認します。
[root@rocky ~]# firewall-cmd --list-all
~~~
services: https ssh
~~~
ブラウザで https アクセスしてみます。以下の画面が表示されますので、ID=admin, PW=[先ほど入力したパスワード] でログインしましょう。
リモートの 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 サービスが起動していない (systemctl status redis)
その他トラブルシュート
/var/log/gvm 配下のログを確認。
コメント