技術系

kali linuxでセキュリティ学習 green bone を使ってMetasploitable2にスキャンを行い脆弱性を分析する

セキュリティの学習を進めるうえでオープンソースの脆弱性診断ツールである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 USERNAMEGMPサービスのユーザー名
--gmp-password PASSWORDGMPサービスのパスワード
-V, --versionバージョン情報を表示
--protocol {GMP,OSP}使用するプロトコル(GMP または OSP

接続方式(CONNECTION_TYPE)

接続方式説明
sshSSH経由で接続
tlsTLSを使用した接続
socketUNIXドメインソケットを使用

よく使われる 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_versionGMPのバージョンを取得なし

コマンドについては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 XMLGMP(Greenbone Management Protocol)のリクエスト(XML形式)を送信
-r, --raw返されるXMLを加工せずそのまま出力
--prettyXMLを整形(見やすく)して出力
--durationコマンドの実行時間を測定
infileXMLコマンドをファイルから読み込んで実行

socket は プロセス間通信(IPC: Inter-Process Communication) のための仕組みの一つで、ネットワークやローカルのプロセス同士がデータをやり取りする際に使われる。

sudo runuser -u _gvm -- gvm-cli socket --xml "<get_scanners/>"

上記のコマンドはgvm-cli が UNIX ドメインソケットを使って gvmd(Greenbone Vulnerability Manager Daemon)と通信する ことを意味している。

ソケットには 2種類 ある

  1. ネットワークソケット(TCP/IP などを使う → リモート通信向け)
  2. UNIX ドメインソケット(ファイルシステムを経由する → ローカル通信向け)

ここで使われている UNIX ドメインソケット は、同じマシン上のプロセス同士が高速にデータをやり取りする手段 である。

gvmd(Greenbone Vulnerability Manager Daemon)は、コマンドを受け取ってスキャンを管理するデーモンプロセスだ。
この gmvd と通信する方法には 3つの選択肢 がある。

接続方法説明
socketUNIX ドメインソケットを使い、ローカルで通信(最も高速
tlsTLS(SSL)を使ってリモートの gvmd と通信
sshSSH 経由でリモートの 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 fastdaba56c8-73ec-11df-a475-002264764ceaほとんどのNVT(脆弱性テスト)を使用し、事前収集情報を最適化してスキャンする 標準的なスキャン設定
Discovery8715c877-47a0-438d-98a3-27c7a6ab2196ネットワーク上のホストを発見するための ネットワークディスカバリースキャン(脆弱性診断なし)。
Based21f6c81-2b88-4ac1-b7b4-a2a9f2ad4663必要最小限のNVTのみを使用する 基本的なスキャン設定
Empty085569ce-73ed-11df-83c3-002264764cea空の設定(NVTを一切含まない)。カスタムスキャンを作成する際のテンプレートとして使用可能。
EulerOS Linux Security Configuration0362e8f6-d7cc-4a12-8768-5f2406713860HuaweiのEulerOS(Linuxディストリビューション)の セキュリティコンプライアンスチェック を行う。
GaussDB 100 V300R001C00 Security Hardening Guide (Standalone)61327f09-8a54-4854-9e1c-16798285fb28HuaweiのGaussDB(データベース)の セキュリティハードニングチェック を行う。
GaussDB Kernel V500R001C00 Security Hardening Guide2eec8313-fee4-442a-b3c4-fa0d5dc83d61HuaweiのGaussDBカーネルセキュリティハードニングチェック を行う。
Host Discovery2d3f051c-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においてほとんど変わらなさそうだ。

-技術系