
セキュリティの学習を進めるうえでオープンソースの脆弱性診断ツールであるGreen Boneを使ってみて、GUIでの操作は何となくわかったので今回CLIを使って操作をしてみた内容をまとめてみました。
結論から言うと、GUIでスキャンしたところ完了までそこそこ時間がかかったので、CLIで実行することで短縮できたらいいなという思いもあったのだが、単一マシンに対してのスキャン時間についてはさほど違いはありませんでした。
ただ、CLIでサクッと実行できるというのは定期的に同じ条件でスキャンするのであれば、バッチなどを作っておいてスクリプトを実行するだけで完結させることができるので、オペレーションミスを減らすという部分においてもよいと思いました。
Green Boneを使われている方の役に立てたら幸いです。
前提条件
Greenboneを仮想マシンとして立ち上げたkali linuxにインストールを行い同じく仮想マシンで立ち上げたターゲットに対してスキャンを実施。
商用環境にスキャンを実施することは違法となるので必ずご自身の環境で実施すること。
Greenboneとは何か、kali linuxにGreenboneをインストールする方法については以下のサイトに記載があるので確認してほしい。
https://whitemarkn.com/penetrationtest/gvm
今回はkali linux上からGreenboneのCLI「gvm-cli」を使ってスキャン設定を実施していく
※Greenboneのバージョンは22.5を使用
gvm-cli
gvm-cli を使うと、GMP(Greenbone Management Protocol)を通じて OpenVAS を制御可能である。
たとえば:
- スキャンの作成 (
<create_task>
) - スキャンの開始 (
<start_task>
) - スキャン結果の取得 (
<get_reports>
) - OpenVAS の設定確認 (
<get_configs>
)
などをコマンド実行で制御可能となる。
CLIで設定変更や実行するとGreenboneのGUI上にも反映される。
gvm cliの基本構文は以下となる。
_gvmユーザーは Greenbone OpenVAS のスキャナ関連プロセスを管理するための専用ユーザーでGreenboneインストール時に自動で作成される。
一般ユーザではアクセス権がないため、指定する。
sudo runuser -u _gvm -- gvm-cli [OPTIONS] CONNECTION_TYPE [COMMAND] [ARGS]
主なオプションは以下となる
オプション | 説明 |
---|---|
-h , --help | ヘルプを表示 |
-c , --config [CONFIG] | 設定ファイルのパスを指定(デフォルト: ~/.config/gvm-tools.conf ) |
--log LEVEL | ログレベル指定(DEBUG , INFO , WARNING , ERROR , CRITICAL ) |
--timeout TIMEOUT | 応答待機時間(デフォルト: 60秒) |
--gmp-username USERNAME | GMPサービスのユーザー名 |
--gmp-password PASSWORD | GMPサービスのパスワード |
-V , --version | バージョン情報を表示 |
--protocol {GMP,OSP} | 使用するプロトコル(GMP または OSP ) |
接続方式(CONNECTION_TYPE)
接続方式 | 説明 |
---|---|
ssh | SSH経由で接続 |
tls | TLSを使用した接続 |
socket | UNIXドメインソケットを使用 |
よく使われる COMMAND 一覧
コマンド | 説明 | 主な ARGS |
---|---|---|
get_tasks | 既存のスキャンタスクを取得 | なし |
create_task | 新しいスキャンタスクを作成 | <name> , <config id> , <target id> |
delete_task | 指定したスキャンタスクを削除 | <task id> |
start_task | スキャンタスクを開始 | <task id> |
stop_task | スキャンタスクを停止 | <task id> |
get_reports | スキャン結果のレポートを取得 | <report id> |
get_targets | 設定済みのターゲットを取得 | なし |
create_target | 新しいスキャンターゲットを作成 | <name> , <hosts> |
delete_target | 既存のターゲットを削除 | <target id> |
get_configs | スキャン設定一覧を取得 | なし |
get_version | GMPのバージョンを取得 | なし |
コマンドについてはGreen Bone公式のAPIリファレンスを確認可能である。
https://docs.greenbone.net/API/GMP/gmp-21.4.html#command_create_task
例えばCreate Taskを実行したい場合にはClientのxmlをコマンドに指定して実行する必要がある。

コマンド例としては以下となる。
デフォルトのスキャナーを利用する場合にはscanner idは省略可能だ。
sudo runuser -u _gvm -- gvm-cli socket --xml "<create_task><name>Scan Webserver</name><comment>Hourly scan of the webserver</comment><config id='daba56c8-73ec-11df-a475-002264764cea'/><target id='b493b7a8-7489-11df-a3ec-002264764cea'/><scanner id='15348381-3180-213f-4eec-123591912388'/></create_task>"
gvm-cli socketのオプション一覧
オプション | 説明 |
---|---|
-h, --help | ヘルプを表示 |
--sockpath [SOCKETPATH] | 非推奨、代わりに --socketpath を使用 |
--socketpath [SOCKETPATH] | 使用するソケットのパスを指定(デフォルト: /run/gvmd/gvmd.sock ) |
-X, --xml XML | GMP(Greenbone Management Protocol)のリクエスト(XML形式)を送信 |
-r, --raw | 返されるXMLを加工せずそのまま出力 |
--pretty | XMLを整形(見やすく)して出力 |
--duration | コマンドの実行時間を測定 |
infile | XMLコマンドをファイルから読み込んで実行 |
socket は プロセス間通信(IPC: Inter-Process Communication) のための仕組みの一つで、ネットワークやローカルのプロセス同士がデータをやり取りする際に使われる。
sudo runuser -u _gvm -- gvm-cli socket --xml "<get_scanners/>"
上記のコマンドはgvm-cli が UNIX ドメインソケットを使って gvmd(Greenbone Vulnerability Manager Daemon)と通信する ことを意味している。
ソケットには 2種類 ある
- ネットワークソケット(TCP/IP などを使う → リモート通信向け)
- UNIX ドメインソケット(ファイルシステムを経由する → ローカル通信向け)
ここで使われている UNIX ドメインソケット は、同じマシン上のプロセス同士が高速にデータをやり取りする手段 である。
gvmd(Greenbone Vulnerability Manager Daemon)は、コマンドを受け取ってスキャンを管理するデーモンプロセスだ。
この gmvd と通信する方法には 3つの選択肢 がある。
接続方法 | 説明 |
---|---|
socket | UNIX ドメインソケットを使い、ローカルで通信(最も高速) |
tls | TLS(SSL)を使ってリモートの gvmd と通信 |
ssh | SSH 経由でリモートの gvmd と通信 |
socket を使うメリットは以下となる。
- 同じマシン上で動作する
gvmd
に最適 - ネットワークのオーバーヘッドなし → 高速
- 認証情報(パスワードなど)を送らずに済む場合がある
socket を使う際の注意点は以下となる。
gvmd
が UNIX ドメインソケットをリッスンしている必要がある- 適切な権限(例:_gvm ユーザー)がないとアクセスできない
- リモートからは接続できない(ローカル限定)
デフォルトでは以下のUNIXドメインソケットを利用する。
/run/gvmd/gvmd.sock
例えばスキャナーの一覧を取得する場合以下のコマンドをとなるが
gvm-cli は /run/gvmd/gvmd.sock を通じて gvmd に XML コマンドを送信 し、gvmd からの XML 応答を受け取る ことが可能となる。
sudo runuser -u _gvm -- gvm-cli socket --xml "<get_scanners/>"
socket のオプション確認
socketのオプションの確認は以下のコマンドで実行する。
- ソケットの詳細ヘルプ:
sudo runuser -u _gvm -- gvm-cli socket --help
- SSH の詳細ヘルプ:
sudo runuser -u _gvm -- gvm-cli ssh --help
- TLS の詳細ヘルプ:
sudo runuser -u _gvm -- gvm-cli tls --help
gvm cliを利用してスキャンを実行
基本構文を使ってGreen Boneのスキャンをコマンドで実行していく。
ターゲットIDの取得
green boneのGUI上で対象ホスト「ターゲット」を作成していた場合はまずターゲットID(UUID)を取得する。
sudo runuser -u _gvm -- gvm-cli --gmp-username=<adminユーザー名> --gmp-password=<パスワード> socket --xml "<get_targets/>"
上記実行結果が以下となった。
<get_targets_response status="200" status_text="OK">
<target id="941116a2-9e8e-4f36-8996-fe20616a124d">
<owner>
<name>admin</name>
</owner>
<name>test</name>
<comment></comment>
<creation_time>2025-02-28T05:59:23Z</creation_time>
<modification_time>2025-02-28T05:59:23Z</modification_time>
<writable>1</writable>
<in_use>1</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<hosts>192.168.218.131</hosts>
<exclude_hosts></exclude_hosts>
<max_hosts>1</max_hosts>
<port_list id="33d0cd82-57c6-11e1-8ed1-406186ea4fc5">
<name>All IANA assigned TCP</name>
<trash>0</trash>
</port_list>
<ssh_credential id="">
<name></name>
<port></port>
<trash>0</trash>
</ssh_credential>
<smb_credential id="">
<name></name>
<trash>0</trash>
</smb_credential>
<esxi_credential id="">
<name></name>
<trash>0</trash>
</esxi_credential>
<snmp_credential id="">
<name></name>
<trash>0</trash>
</snmp_credential>
<ssh_elevate_credential id="">
<name></name>
<trash>0</trash>
</ssh_elevate_credential>
<reverse_lookup_only>0</reverse_lookup_only>
<reverse_lookup_unify>0</reverse_lookup_unify>
<alive_tests>Scan Config Default</alive_tests>
<allow_simultaneous_ips>1</allow_simultaneous_ips>
</target>
<target id="7df3616e-2595-428f-8132-3859e71da31e">
<owner>
<name>admin</name>
</owner>
<name>test2</name>
<comment></comment>
<creation_time>2025-02-28T07:57:40Z</creation_time>
<modification_time>2025-02-28T07:57:40Z</modification_time>
<writable>1</writable>
<in_use>1</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<hosts>183.181.84.98</hosts>
<exclude_hosts></exclude_hosts>
<max_hosts>1</max_hosts>
<port_list id="33d0cd82-57c6-11e1-8ed1-406186ea4fc5">
<name>All IANA assigned TCP</name>
<trash>0</trash>
</port_list>
<ssh_credential id="">
<name></name>
<port></port>
<trash>0</trash>
</ssh_credential>
<smb_credential id="">
<name></name>
<trash>0</trash>
</smb_credential>
<esxi_credential id="">
<name></name>
<trash>0</trash>
</esxi_credential>
<snmp_credential id="">
<name></name>
<trash>0</trash>
</snmp_credential>
<ssh_elevate_credential id="">
<name></name>
<trash>0</trash>
</ssh_elevate_credential>
<reverse_lookup_only>0</reverse_lookup_only>
<reverse_lookup_unify>0</reverse_lookup_unify>
<alive_tests>Scan Config Default</alive_tests>
<allow_simultaneous_ips>1</allow_simultaneous_ips>
</target>
<filters id="">
<term>first=1 rows=10 sort=name</term>
<keywords>
<keyword>
<column>first</column>
<relation>=</relation>
<value>1</value>
</keyword>
<keyword>
<column>rows</column>
<relation>=</relation>
<value>10</value>
</keyword>
<keyword>
<column>sort</column>
<relation>=</relation>
<value>name</value>
</keyword>
</keywords>
</filters>
<sort>
<field>name</field>
<order>ascending</order>
</sort>
<targets start="1" max="1000"/>
<target_count>
<total>2</total>
<filtered>2</filtered>
<page>2</page>
</target_count>
</get_targets_response>
<target id="941116a2-9e8e-4f36-8996-fe20616a124d">の取得が完了した。
xmlからスキャン対象のIPアドレスや使用ポートリストが確認できる。
ターゲットを作成する場合にはリファレンスを確認したところ以下の記載があるので
<Client>
<create_target>
<name>All GNU/Linux machines</name>
<hosts>192.168.1.0/24</hosts>
</create_target>
</Client>
<Manager>
<create_target_response status="201"
status_text="OK, resource created"
id="254cd3ef-bbe1-4d58-859d-21b8d0c046c6"/>
</Manager>
以下のコマンドを実行した。
sudo runuser -u _gvm -- gvm-cli --gmp-username="<adminユーザー名>" --gmp-password="<パスワード>" socket --xml "<create_target><name>All GNU/Linux machines</name><hosts>192.168.1.0/24</hosts></create_target>"
しかし上記のコマンドを実行したところ以下のエラーが返ってきた。
sudo runuser -u _gvm -- gvm-cli --gmp-username=admin --gmp-password=kali socket --xml "<create_target><name>All GNU/Linux machines</name><hosts>192.168.1.0/24</hosts><port_list id='c7b9fcb0-3a28-11e2-8c32-406186ea4fc5'/></create_target>"
どうやらリファレンスには記載がないもののPORT_LIST か PORT_RANGEの指定が必要ということのようだ。
以下のコマンドでPORT_LISTを取得する。
sudo runuser -u _gvm -- gvm-cli socket --xml "<get_port_lists/>"
実行結果
<get_port_lists_response status="200" status_text="OK">
<port_list id="33d0cd82-57c6-11e1-8ed1-406186ea4fc5">
<owner>
<name>admin</name>
</owner>
<name>All IANA assigned TCP</name>
<comment>Version 20200827.</comment>
<creation_time>2025-02-28T05:47:24Z</creation_time>
<modification_time>2025-02-28T05:47:24Z</modification_time>
<writable>0</writable>
<in_use>1</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<port_count>
<all>5836</all>
<tcp>5836</tcp>
<udp>0</udp>
</port_count>
<predefined>1</predefined>
</port_list>
<port_list id="4a4717fe-57d2-11e1-9a26-406186ea4fc5">
<owner>
<name>admin</name>
</owner>
<name>All IANA assigned TCP and UDP</name>
<comment>Version 20200827.</comment>
<creation_time>2025-02-28T05:47:23Z</creation_time>
<modification_time>2025-02-28T05:47:23Z</modification_time>
<writable>1</writable>
<in_use>0</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<port_count>
<all>11318</all>
<tcp>5836</tcp>
<udp>5482</udp>
</port_count>
<predefined>1</predefined>
</port_list>
<port_list id="730ef368-57e2-11e1-a90f-406186ea4fc5">
<owner>
<name>admin</name>
</owner>
<name>All TCP and Nmap top 100 UDP</name>
<comment>Version 20200827.</comment>
<creation_time>2025-02-28T05:47:23Z</creation_time>
<modification_time>2025-02-28T05:47:23Z</modification_time>
<writable>1</writable>
<in_use>0</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<port_count>
<all>65635</all>
<tcp>65535</tcp>
<udp>100</udp>
</port_count>
<predefined>1</predefined>
</port_list>
<filters id="">
<term>first=1 rows=10 sort=name</term>
<keywords>
<keyword>
<column>first</column>
<relation>=</relation>
<value>1</value>
</keyword>
<keyword>
<column>rows</column>
<relation>=</relation>
<value>10</value>
</keyword>
<keyword>
<column>sort</column>
<relation>=</relation>
<value>name</value>
</keyword>
</keywords>
</filters>
<sort>
<field>name<order>ascending</order></field>
</sort>
<port_lists start="1" max="1000"/>
<port_list_count>3<filtered>3</filtered>
<page>3</page>
</get_port_lists_response>
All IANA assigned TCPのポートport_listのID「33d0cd82-57c6-11e1-8ed1-406186ea4fc5」を取得して以下のコマンドに変更して実施したところ成功した。
sudo runuser -u _gvm -- gvm-cli socket --xml "<create_target>
<name>All GNU/Linux machines</name>
<hosts>192.168.1.0/24</hosts>
<port_list id='33d0cd82-57c6-11e1-8ed1-406186ea4fc5'/>
</create_target>"

GUI上でもターゲットの作成が行われていることが確認できた。

スキャン設定の取得
スキャン設定のIDを取得する。
sudo runuser -u _gvm -- gvm-cli --gmp-username=<adminユーザー名> --gmp-password=<パスワード> socket --xml "<get_configs/>"
実行結果は以下
<get_configs_response status="200" status_text="OK">
<config id="d21f6c81-2b88-4ac1-b7b4-a2a9f2ad4663">
<owner>
<name>admin</name>
</owner>
<name>Base</name>
<comment>Basic configuration template with a minimum set of NVTs required for a scan. Version 20200827.</comment>
<creation_time>2025-02-28T06:28:49Z</creation_time>
<modification_time>2025-02-28T06:28:49Z</modification_time>
<writable>0</writable>
<in_use>0</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<family_count>2</family_count>
<nvt_count>3</nvt_count>
<type>0</type>
<usage_type>scan</usage_type>
<predefined>0</predefined>
</config>
<config id="8715c877-47a0-438d-98a3-27c7a6ab2196">
<owner>
<name>admin</name>
</owner>
<name>Discovery</name>
<comment>Network Discovery scan configuration. Version 20201215.</comment>
<creation_time>2025-02-28T06:28:39Z</creation_time>
<modification_time>2025-02-28T06:28:39Z</modification_time>
<writable>0</writable>
<in_use>0</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<family_count>10</family_count>
<nvt_count>3264</nvt_count>
<type>0</type>
<usage_type>scan</usage_type>
<predefined>0</predefined>
</config>
<config id="085569ce-73ed-11df-83c3-002264764cea">
<owner>
<name>admin</name>
</owner>
<name>empty</name>
<comment>Empty and static configuration template. Version 20201215.</comment>
<creation_time>2025-02-28T06:28:49Z</creation_time>
<modification_time>2025-02-28T06:28:49Z</modification_time>
<writable>0</writable>
<in_use>0</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<family_count>0</family_count>
<nvt_count>0</nvt_count>
<type>0</type>
<usage_type>scan</usage_type>
<predefined>0</predefined>
</config>
<config id="0362e8f6-d7cc-4a12-8768-5f2406713860">
<owner>
<name>admin</name>
</owner>
<name>EulerOS Linux Security Configuration</name>
<comment>Check compliance status of EulerOS 2.0 SP3/SP5/SP8 installation against above named Policy as distributed by Huawei. Version 20201215.</comment>
<creation_time>2025-02-28T06:28:45Z</creation_time>
<modification_time>2025-02-28T06:28:45Z</modification_time>
<writable>0</writable>
<in_use>0</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<family_count>5</family_count>
<nvt_count>157</nvt_count>
<type>0</type>
<usage_type>policy</usage_type>
<predefined>0</predefined>
</config>
<config id="daba56c8-73ec-11df-a475-002264764cea">
<owner>
<name>admin</name>
</owner>
<name>Full and fast</name>
<comment>Most NVT's; optimized by using previously collected information. Version 20201215.</comment>
<creation_time>2025-02-28T06:28:46Z</creation_time>
<modification_time>2025-02-28T06:28:46Z</modification_time>
<writable>0</writable>
<in_use>1</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<family_count>59</family_count>
<nvt_count>154352</nvt_count>
<type>0</type>
<usage_type>scan</usage_type>
<predefined>0</predefined>
</config>
<config id="61327f09-8a54-4854-9e1c-16798285fb28">
<owner>
<name>admin</name>
</owner>
<name>GaussDB 100 V300R001C00 Security Hardening Guide (Standalone)</name>
<comment>Check compliance status of GaussDB installation against above named Policy as distributed by Huawei (based on Issue 5). Version 20201215.</comment>
<creation_time>2025-02-28T06:28:47Z</creation_time>
<modification_time>2025-02-28T06:28:47Z</modification_time>
<writable>0</writable>
<in_use>0</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<family_count>5</family_count>
<nvt_count>57</nvt_count>
<type>0</type>
<usage_type>policy</usage_type>
<predefined>0</predefined>
</config>
<config id="2eec8313-fee4-442a-b3c4-fa0d5dc83d61">
<owner>
<name>admin</name>
</owner>
<name>GaussDB Kernel V500R001C00 Security Hardening Guide</name>
<comment>Check compliance status against mentioned policy (based on Issue 01 from 2020-07-21). Version 20201222.</comment>
<creation_time>2025-02-28T06:28:43Z</creation_time>
<modification_time>2025-02-28T06:28:43Z</modification_time>
<writable>0</writable>
<in_use>0</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<family_count>4</family_count>
<nvt_count>105</nvt_count>
<type>0</type>
<usage_type>policy</usage_type>
<predefined>0</predefined>
</config>
<config id="2d3f051c-55ba-11e3-bf43-406186ea4fc5">
<owner>
<name>admin</name>
</owner>
<name>Host Discovery</name>
<comment>Network Host Discovery scan configuration. Version 20201215.</comment>
<creation_time>2025-02-28T06:28:50Z</creation_time>
<modification_time>2025-02-28T06:28:50Z</modification_time>
<writable>0</writable>
<in_use>0</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<family_count>0</family_count>
<nvt_count>0</nvt_count>
<type>0</type>
<usage_type>scan</usage_type>
<predefined>0</predefined>
</config>
</get_configs_response>
スキャン設定は「Full and fast」で今回実行するためスキャンid「daba56c8-73ec-11df-a475-002264764cea」を控えておく
その他のスキャン設定の一覧は以下
Config Name(スキャン名) | Config ID | 説明 |
---|---|---|
Full and fast | daba56c8-73ec-11df-a475-002264764cea | ほとんどのNVT(脆弱性テスト)を使用し、事前収集情報を最適化してスキャンする 標準的なスキャン設定。 |
Discovery | 8715c877-47a0-438d-98a3-27c7a6ab2196 | ネットワーク上のホストを発見するための ネットワークディスカバリースキャン(脆弱性診断なし)。 |
Base | d21f6c81-2b88-4ac1-b7b4-a2a9f2ad4663 | 必要最小限のNVTのみを使用する 基本的なスキャン設定。 |
Empty | 085569ce-73ed-11df-83c3-002264764cea | 空の設定(NVTを一切含まない)。カスタムスキャンを作成する際のテンプレートとして使用可能。 |
EulerOS Linux Security Configuration | 0362e8f6-d7cc-4a12-8768-5f2406713860 | HuaweiのEulerOS(Linuxディストリビューション)の セキュリティコンプライアンスチェック を行う。 |
GaussDB 100 V300R001C00 Security Hardening Guide (Standalone) | 61327f09-8a54-4854-9e1c-16798285fb28 | HuaweiのGaussDB(データベース)の セキュリティハードニングチェック を行う。 |
GaussDB Kernel V500R001C00 Security Hardening Guide | 2eec8313-fee4-442a-b3c4-fa0d5dc83d61 | HuaweiのGaussDBカーネルの セキュリティハードニングチェック を行う。 |
Host Discovery | 2d3f051c-55ba-11e3-bf43-406186ea4fc5 | ホストの発見のみを行うスキャン(ポートスキャンや基本的な情報収集を実施)。 |
green boneタスクの作成
タスク作成されていない場合にはタスクを作成する。
target idはスキャンしたいターゲットのIDを指定しconfig idはスキャンオプションのID(今回はFull and fast)を指定する。
取得方法についてはこのページに記載しているため参照してほしい。
任意のタスク名を以下のタグの中に記載する。
<name>MyScan</name>
タスクの実行コマンドと結果は以下となる。
sudo runuser -u _gvm -- gvm-cli --gmp-username=<adminユーザ名> --gmp-password=<adminパスワード> socket --xml "<create_task><name>MyScan</name><config id='daba56c8-73ec-11df-a475-002264764cea'/><target id='941116a2-9e8e-4f36-8996-fe20616a124d'/></create_task>"
タスクIDの確認
grenn boneのタスクの実行のためにIDを確認する。
sudo runuser -u _gvm -- gvm-cli --gmp-username=<adminユーザ名> --gmp-password=<adminパスワード名> socket --xml "<get_tasks/>"
実行結果は以下
<tasks>
<task id="3ceccafd-fb7c-4a8c-9af1-02c39d5b1925">
<owner>
<name>admin</name>
</owner>
<name>MyScan</name>
<comment></comment>
<creation_time>2025-03-03T02:21:17Z</creation_time>
<modification_time>2025-03-03T02:21:17Z</modification_time>
<writable>1</writable>
<in_use>0</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<alterable>0</alterable>
<usage_type>scan</usage_type>
<config id="daba56c8-73ec-11df-a475-002264764cea">
<name>Full and fast</name>
<trash>0</trash>
</config>
<target id="941116a2-9e8e-4f36-8996-fe20616a124d">
<name>test</name>
<trash>0</trash>
</target>
<hosts_ordering></hosts_ordering>
<scanner id="08b69003-5fc2-4037-a479-93b440211c73">
<name>OpenVAS Default</name>
<type>2</type>
<trash>0</trash>
</scanner>
<status>New</status>
<progress>-1</progress>
<report_count>0</report_count>
<finished>0</finished>
<trend></trend>
<schedule id="">
<name></name>
<trash>0</trash>
</schedule>
<schedule_periods>0</schedule_periods>
<observers></observers>
<preferences>
<preference>
<name>Maximum concurrently executed NVTs per host</name>
<scanner_name>max_checks</scanner_name>
<value>4</value>
</preference>
<preference>
<name>Maximum concurrently scanned hosts</name>
<scanner_name>max_hosts</scanner_name>
<value>20</value>
</preference>
<preference>
<name>Add results to Asset Management</name>
<scanner_name>in_assets</scanner_name>
<value>yes</value>
</preference>
<preference>
<name>Apply Overrides when adding Assets</name>
<scanner_name>assets_apply_overrides</scanner_name>
<value>yes</value>
</preference>
<preference>
<name>Min QOD when adding Assets</name>
<scanner_name>assets_min_qod</scanner_name>
<value>70</value>
</preference>
<preference>
<name>Auto Delete Reports</name>
<scanner_name>auto_delete</scanner_name>
<value>0</value>
</preference>
<preference>
<name>Auto Delete Reports Data</name>
<scanner_name>auto_delete_data</scanner_name>
<value>0</value>
</preference>
</preferences>
</task>
<task id="f8d49c5f-a374-4680-a502-005431b56e2f">
<owner>
<name>admin</name>
</owner>
<name>test</name>
<comment></comment>
<creation_time>2025-02-28T06:31:01Z</creation_time>
<modification_time>2025-02-28T06:31:01Z</modification_time>
<writable>1</writable>
<in_use>0</in_use>
<permissions>
<permission>
<name>Everything</name>
</permission>
</permissions>
<alterable>0</alterable>
<usage_type>scan</usage_type>
<config id="daba56c8-73ec-11df-a475-002264764cea">
<name>Full and fast</name>
<trash>0</trash>
</config>
<target id="941116a2-9e8e-4f36-8996-fe20616a124d">
<name>test</name>
<trash>0</trash>
</target>
<hosts_ordering>sequential</hosts_ordering>
<scanner id="08b69003-5fc2-4037-a479-93b440211c73">
<name>OpenVAS Default</name>
<type>2</type>
<trash>0</trash>
</scanner>
<status>Done</status>
<progress>-1</progress>
<report_count>1</report_count>
<finished>1</finished>
<trend></trend>
<schedule id="">
<name></name>
<trash>0</trash>
</schedule>
<schedule_periods>0</schedule_periods>
<last_report>
<report id="83e44899-ca11-4c1d-82ec-b01621179b0b">
<timestamp>2025-02-28T06:31:11Z</timestamp>
<scan_start>2025-02-28T06:31:54Z</scan_start>
<scan_end>2025-02-28T07:33:10Z</scan_end>
<result_count>
<hole>20</hole>
<info>6</info>
<log>88</log>
<warning>40</warning>
<false_positive>0</false_positive>
</result_count>
<severity>10.0</severity>
</report>
</last_report>
<observers></observers>
<preferences>
<preference>
<name>Maximum concurrently executed NVTs per host</name>
<scanner_name>max_checks</scanner_name>
<value>4</value>
</preference>
<preference>
<name>Maximum concurrently scanned hosts</name>
<scanner_name>max_hosts</scanner_name>
<value>20</value>
</preference>
<preference>
<name>Add results to Asset Management</name>
<scanner_name>in_assets</scanner_name>
<value>yes</value>
</preference>
<preference>
<name>Apply Overrides when adding Assets</name>
<scanner_name>assets_apply_overrides</scanner_name>
<value>yes</value>
</preference>
<preference>
<name>Min QOD when adding Assets</name>
<scanner_name>assets_min_qod</scanner_name>
<value>70</value>
</preference>
<preference>
<name>Auto Delete Reports</name>
<scanner_name>auto_delete</scanner_name>
<value>no</value>
</preference>
<preference>
<name>Auto Delete Reports Data</name>
<scanner_name>auto_delete_data</scanner_name>
<value>5</value>
</preference>
</preferences>
</task>
</tasks>
すでにいくつかスキャンタスクを作っていた場合にはそれらも表示される。
スキャン実行するスキャンタスクのIDを控える。
今回は「3ceccafd-fb7c-4a8c-9af1-02c39d5b1925」のMyScanのタスクIDを指定して実行する。
タスク実行
タスクの実行は以下のコマンドで実行する。
※'3ceccafd-fb7c-4a8c-9af1-02c39d5b1925'の部分は各自の環境に合わせること。
sudo runuser -u _gvm -- gvm-cli --gmp-username=<adminユーザ名> --gmp-password=<adminパスワード> socket --xml "<start_task task_id='3ceccafd-fb7c-4a8c-9af1-02c39d5b1925'/>"
実行結果
sudo runuser -u _gvm -- gvm-cli --gmp-username=<adminユーザ名> --gmp-password=<adminパスワード> socket --xml "<start_task task_id='3ceccafd-fb7c-4a8c-9af1-02c39d5b1925'/>"
[sudo] kali のパスワード:
<start_task_response status="202" status_text="OK, request submitted">
<report_id>4af5a6eb-81e4-46c1-96a8-6594e2797566</report_id>
</start_task_response>
green boneのGUI上でも「MyScan」のタスクがキックされたことが確認できる。

タスクの中身を確認してみる。

ターゲットの設定とスキャン設定が想定通りの設定がされていることが確認できる。
CLIの実行結果が以下

GUIの実行結果が以下となる

以下のコマンドでレポート一覧の取得が可能である。
sudo runuser -u _gvm -- gvmd --get-reports --format XML
レポートのダウンロードは以下
sudo runuser -u _gvm -- gvmd --get-report --report-id <レポートID> --format <フォーマット>
- <レポートID> には、先程確認したレポートのIDを指定。
- <フォーマット> には、XML や PDF など、希望するフォーマットを指定。
スキャン速度についてはGUIとCLIにおいてほとんど変わらなさそうだ。