OpenVas Cli で完全自動スキャンは可能なのか? 実際に動作検証してみた
初投稿になります。
目的
プラットフォームの脆弱性検査を行います。
検査ではOpenVasというスキャンツールを使うので、インストール〜動作検証する。
ローカルのMac端末上で実施します。
手順
OpenVasのインストール
以下のコマンドを実行します。
$ docker run -d -p
1234
:
443
--name openvas mikesplain/openvas
上記コマンドは、DockerHubで提供されているイメージをダウンロードして起動しています。
https://github.com/mikesplain/openvas-docker
次にOpenVasのWeb画面にアクセスします。
初期設定でアカウント、パスワードはともに「admin」に設定されていますので、入力するとログインできます。
Web画面の操作方法は以下の記事を参考にするとわかりやすいと思います。
脆弱性スキャナ「OpenVAS」でのセキュリティチェック | さくらのナレッジ
OpenVas Cliを利用する
Web画面で操作する場合、検査対象が多い場合、設定項目が多い場合、などに大変な思いをするので、それらをコマンドラインから行えないか確認します。
先程のOpenVasイメージにコマンドラインツールが既にインストールされているので、
起動中のOpenVasのDockerコンテナの中へアクセスして使ってみます。
OpenVasのコンテナIDを確認します。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9558a88e4faf mikesplain/openvas "/bin/sh -c /start" 3 minutes ago Up 3 minutes 9390/tcp, 0.0.0.0:1234->443/tcp openvas
OpenVasのコンテナIDを指定してbashへアクセスします。
$ docker exec -it 9558a88e4faf bash
ompというコマンドがコマンドラインツールです。
以下を実行するとヘルプを表示してみます。
$ omp --help
ヘルプの内容をみると、スキャンを実行するためには
-C, --create-task Create a task.
-M, --modify-task Modify a task.
を実行すれば良さそうだとわかります。
また、--create-task と一緒に以下のパラメータを指定すれば良さそうです。
-n, --name=<name> Name for create-task.
-m, --comment=<name> Comment for create-task.
-c, --config=<config> Config for create-task.
-t, --target=<target> Target for create-task.
ここで疑問に思いました。
config、targetを作成するオプションが用意されていません。
じつは、config、target、port-list、等を作成するには以下のようなコマンドを実行すればできました。
$ omp -u admin -w admin --config-file=.ompconfig --xml '<create_target><name>test</name><hosts>192.168.99.1,192.168.99.2</hosts></create_target>'
参考:OpenVAS command line target creation
上記コマンドは、targetをコマンドライン上から新規作成します。
xmlの記述方法はどうやって調べればいいかというと、
以下のページから「OpenVas Manager」のソースをダウンロードして解凍して、
OpenVAS - Install OpenVAS from Source Code
解凍したフォルダ → src → schema_formats → XML
とフォルダを辿ったあとに、「OMP.xml.in」というファイルを開くと書いてあります。
ぱっと見た感じだと、なが~い記述のためわかりにくいのですが、
「create_target」で検索すると、<command><name>create_target</name> ....みたいな文字列が見つかります。
そのcommandタグの中にある<ele>タグに先程のxml記述方法が書いてあるので、
参考にすれば他のコマンドも自由に発行できます。
結果としてOpenVasのWeb画面から設定する事はすべてCliからも実行できそうだとわかったので、Bashスクリプトでも用意すれば、Dockerコンテナの起動から検査まで、全て自動化できそうだと見通しがつきました。