Nozomi Networks の顧客にとって最も人気のあるテクニカル サポート リソースの 1 つは、サンプル クエリを提供するナレッジベースの記事です。このブログでは、クエリライブラリの構築とNozomi Networksシステムが提供する価値の向上に役立つ20個のクエリを厳選してご紹介します。これらのクエリは、Nozomiネットワーククエリ言語で何ができるかを示す例としてだけでなく、実用的なアプリケーションとして選択されました。各クエリは変更可能で、用途を拡張したり、環境に合わせて最適化したりすることで、クエリの理解と適用に費やす時間から最大限の利益を得ることができます。
Query 1:What are my top 10 alerts?
このクエリはどういった場面で活用されるのでしょうか?
このクエリは短くシンプルです。このようなクエリは、新しいユーザーがクエリ言語に慣れ、迅速に結果を生成するのに役立ちます。このクエリは、幅広いデータセットを対象とした、より複雑なクエリの基盤となることができます。
このクエリで何が取得できるでしょうか?
このクエリは結果を円グラフで返します。他の表示形式を返すように変更することもできます。
このクエリはいつ使用すればよいですか?
定期的なレポート用に、迅速でシンプルな高レベルの結果セットを作成します。
このクエリはどこで実行できますか?
これはGuardian、CMC、またはVantageで実行できます。
形式:alerts | group_by type_id | sort count desc | head | pie type_id count
実行結果例:
Query 2:What traffic exists between these two zones?
このクエリはどういった場面で活用されるのでしょうか?
このクエリは、ゾーン間のリンクを監視するために使用できます。既存のリンクを監視したり、新しいリンクを識別したりするために使用できます。
このクエリで何が取得できるでしょうか?
出力は、クエリで識別された 2 つのゾーン間で発生したリンクの詳細を含むテーブルになります。
このクエリはいつ使用すればよいですか?
このクエリは、セキュリティ対策の初期段階、つまりネットワークを理解し始めた段階で使用できます。また、将来的に発生する新たなリンクを特定するのにも役立ちます。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:links | join nodes to ip | join nodes from ip | select from joined_node_from_ip.label->from_label joined_node_from_ip.zone->from_zone to joined_node_to_ip.label->to_label joined_node_to_ip.zone->to_zone protocol tcp_connection_attempts.total tcp_handshaked_connections.total last_activity_time | sort last_activity_time desc | where from_zone include? Corp | where to_zone include? Prod
実行結果例:
Query 3:Do I have traffic to the public internet?
このクエリはどういった場面で活用されるのでしょうか?
望ましくない公共インターネット通信を特定し、その影響を軽減することは、セキュリティ向上に向けた大きな一歩となります。将来、設定ミスが発生した場合、このアクティビティを監視して報告することで、潜在的な問題が悪用される前に特定することができます。
このクエリで何が取得できるでしょうか?
出力は、パブリックIPアドレスとの通信を試みているアセットの詳細を含むテーブルになります。
このクエリは、本番環境外のIP範囲に焦点を絞るように変更できます。
このクエリはいつ使用すればよいですか?
このクエリは、セキュリティ対策の初期段階でネットワークを理解し始める際に活用できます。また、将来的に、資産がパブリックインターネットへの新たな通信を試みているかどうかを特定する上でも役立ちます。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:links | join nodes to ip | where joined_node_to_ip.is_public | select from to joined_node_to_ip.label protocol tcp_connection_attempts.total tcp_handshaked_connections.total | select from to tcp_connection_attempts_total | group_by from | head 25 | sort count desc | column from count
実行結果例:
Query 4:Do I have VNC and RDP traffic?
このクエリはどういった場面で活用されるのでしょうか?
リモートアクセスは、あらゆる環境にとって最大のリスクの一つとなり得ます。このアクティビティを監視し、レポートすることで、潜在的な問題を事前に特定し、悪用される前に対処することができます。
このクエリで何が取得できるでしょうか?
このクエリは、トラフィック スループットの高い順に並べ替えられた縦棒グラフを出力します。
このクエリはいつ使用すればよいですか?
このクエリは、セキュリティ対策の初期段階でネットワークを理解し始める際にも役立ちます。
ロードマップのさらに先では、想定されるものも想定外のものも含め、リモートアクセス接続を特定するのにも役立ちます。このクエリは簡単に変更できるため、ほぼすべてのプロトコルで動作します。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:links | where protocol == vnc OR protocol == rdp | join nodes to ip | select from to joined_node_to_ip.label protocol transferred.bytes | join nodes from ip | select coalesce(joined_node_from_ip.label,from)->from coalesce(joined_node_to_ip_label,to)->to protocol transferred_bytes | group_by to sum transferred_bytes | select to sum->dst_transferred_bytes | sort dst_transferred_bytes desc | head 25 | column to dst_transferred_bytes
実行結果例:
Query 5:How big is my traffic to the internet?
このクエリはどういった場面で活用されるのでしょうか?
インターネット トラフィックが業務の一部である場合、トラフィック量を監視することはリスク管理業務の有用な部分となる可能性があります。
このクエリで何が取得できるでしょうか?
このクエリは、リンクを強調表示し、トラフィック スループットの高い順に並べ替えた縦棒グラフを出力します。
このクエリはいつ使用すればよいですか?
インターネットへのトラフィックが予想される環境、サブネット、ゾーンがある場合 (クラウド ベースの IoT または IIoT デバイスなど)、このトラフィックは管理可能かつ許容可能なリスクであると考えられます。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:links | where is_to_public = true | select concat(from,"-",to)->my_link transferred.bytes | group_by my_link sum transferred_bytes | select my_link sum->transferred_bytes | sort transferred_bytes desc | head | column my_link transferred_bytes
実行結果例:
Query 6:What CVEs are unresolved on this asset?
このクエリはどういった場面で活用されるのでしょうか?
このクエリは、脆弱性管理プログラムにおいて有用な要素となります。このクエリを変更することで、単一のノードではなく、ゾーンやサブネット単位でレポートすることもできます。
このクエリで何が取得できるでしょうか?
このクエリは、リスクの降順でソートされた情報の表を出力します。このクエリは、公開されている脆弱性を返します。
このクエリはいつ使用すればよいですか?
このクエリは、資産の脆弱性データを提供します。
このデータを使用して、最もリスクの高いデバイスを最適なタイミングでターゲットにするためのワークロードを計画できます。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:node_cves | where node_id == 192.168.20.100 | where resolved == false | where cve_is_kev = true | select cve cve_is_kev cve_score cve_summary | sort cve_score desc
実行結果例:
Query 7:What are the most used protocols in my network?
このクエリはどういった場面で活用されるのでしょうか?
インターネット トラフィックが業務の一部である場合、トラフィック量を監視することはリスク管理業務の有用な部分となる可能性があります。
このクエリで何が取得できるでしょうか?
このクエリは、リンクを強調表示し、トラフィック スループットの高い順に並べ替えた縦棒グラフを出力します。
このクエリはいつ使用すればよいですか?
インターネットへのトラフィックが予想される環境、サブネット、ゾーンがあり (クラウドベースの IoT または IIoT デバイスなど)、このトラフィックが管理可能で許容可能なリスクであると考えられる場合。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:links | group_by protocol sum transferred.bytes | sort sum desc | select protocol sum->transferred_bytes | head 15 | column protocol transferred_bytes
実行結果例:
Query 8:How are my vulnerabilities trending?
このクエリはどういった場面で活用されるのでしょうか?
このクエリは、「バケット」と「履歴」機能を利用して、時間の経過に伴う数量の推移を示す折れ線グラフを表示します。同様の方法で他の指標の測定にも応用できます。
このクエリで何が取得できるでしょうか?
このクエリから出力される折れ線グラフは非常に分かりやすく、時間単位(バケット)を時間、日、週などに変更することで、レポート期間に合わせて調整できます。この場合、折れ線グラフが上昇傾向にある場合、脆弱性が増加していることを示します。下降傾向にある場合、脆弱性は軽減または管理されています。なお、上流のCMCまたはVantageで脆弱性評価が実行されている場合、このクエリは空の結果を返します。
このクエリはいつ使用すればよいですか?
長期的な傾向の監視は、適切なレポート作成に不可欠です。脆弱性の傾向は、経営幹部への報告において、セキュリティプログラムの全体的なパフォーマンスを追跡するのに役立つ指標の一つとなります。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:node_cves | where resolved = false | bucket record_created_at 604800000 | sort record_created_at | where record_created_at != 0 | history count record_created_at
実行結果例:
Query 9:What are my greatest MITRE ATT&CK tactic risks?
このクエリはどういった場面で活用されるのでしょうか?
このクエリは、リスク評価で MITRE 戦術が使用される環境、または IT チームと OT チーム間の共通言語として役立ちます。
このクエリで何が取得できるでしょうか?
このクエリは、特定の攻撃戦術の影響を受ける可能性のある資産の数を示す棒グラフを出力します。この情報により、共通の改善策が最も大きな変化をもたらす箇所が明らかになります。
このクエリはいつ使用すればよいですか?
検出された MITRE ATT&CK 戦術を評価すると、ネットワークの領域における弱点のパターンを認識したり、より大きなリスク軽減や費やした労力に対する ROI をもたらすワークストリームを開発したりできるようになります。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:alerts | where is_empty(mitre_attack_tactics) == false | group_by concat(mitre_attack_tactics,"-",mitre_attack_techniques)->tech | sort tech asc | column_colored_by_label tech count
実行結果例:
Query 10:Is this protocol/function used in my network?
このクエリはどういった場面で活用されるのでしょうか?
このクエリは、Wireshark などの他のツールよりも速く情報を返す可能性があります。
この種のトラフィックを特定することは、独自の OT ツールでは不可能な場合があるため、このクエリはトラフィックをより深く調査するための手段となります。
このクエリで何が取得できるでしょうか?
このクエリは、プロトコル/関数が検出されたリンクと最後に検出された時刻を示すテーブルを出力します。
このクエリはいつ使用すればよいですか?
このクエリは、特定のプロトコル関数が本番環境で使用されているかどうかを迅速かつ簡単に特定するのに役立ちます。これにより、トラフィック内で特定の関数コードが検出された場合のアラート通知も可能となり、保護レイヤーが強化されます。調査対象のプロトコルのみを指定することで、クエリを絞り込むことができます。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:links | expand function_codes | select from to expanded_function_codes.name last_activity_time transferred.bytes
実行結果例:
Query 11:What alerts happened on this day?
このクエリはどういった場面で活用されるのでしょうか?
このクエリは、エポックタイムスタンプを使用してミリ秒単位までカスタマイズできます。最小限の変更で、特定のアラートタイプ、ネットワークゾーン、またはサブネットにクエリを絞り込むことができます。
このクエリで何が取得できるでしょうか?
このクエリが出力するテーブルは、ニーズに応じてさまざまな情報を提供するように構成できます。
このクエリはいつ使用すればよいですか?
このクエリは、一般的なセキュリティ操作、フォレンジック活動、脅威ハンティング中に役立つ場合があります。
このクエリはどこで実行できますか?
これはGuardian、CMC、またはVantageで実行できます。
形式:alerts |select type_id->alert_type id->alert_id created_time->time ip_src->source ip_dst->destination | sort created_time | where created_time >= 1699920000000 | where created_time <= 1700006399000
実行結果例:
Query 12:What assets appeared in the last 7 days?
このクエリはどういった場面で活用されるのでしょうか?
特に複雑なクエリではありませんが、このクエリの出力は毎週のチーム会議中に議論する良いポイントとなり、セキュリティ チームと OT チームの間で議論を始めるきっかけになります。
このクエリで何が取得できるでしょうか?
このクエリによって生成されるテーブルと情報は、環境のニーズや返される情報をどのように実装するかに合わせてカスタマイズするための良い出発点となります。まずはこのテーブルと情報を基に、ニーズに合わせて拡張してください。
このクエリはいつ使用すればよいですか?
このクエリは、定期的な監視とレポート作成の一部に組み込む必要があります。定期的なアラートにより、ネットワーク上の新しい資産がハイライト表示されるため、このクエリはそのアクティビティの要約となります。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:assets | where days_ago(created_at) <= 7 | select name ip mac_address mac_vendor protocols created_at->appearance_time | sort appearance_time asc
実行結果例:
Query 13:Do I have open CVEs more than a month old?
このクエリはどういった場面で活用されるのでしょうか?
このクエリは、単一の資産に焦点を当てていない点で、前述のクエリ「この資産で未解決のCVEは何ですか?」とは異なります。
このクエリは、「is_kev」フラグを使用して、公開されている脆弱性のみを抽出するように変更できます。
このクエリで何が取得できるでしょうか?
このクエリによって生成されるテーブルは、CVEスコアでソートされます。その後、「record_created_at」フィールドに特に注意を払い、この情報を活用して修復作業を計画する必要があります。
このクエリはいつ使用すればよいですか?
プログラムが成熟し、脆弱性管理を習得していくにつれて、このクエリは、常に先手を打つための助けとなります。
また、レポート期間を調整することも役立つ場合があります。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:node_cves | join nodes node_id id | where joined_node_node_id_id.is_public == false | where days_ago(cve_creation_time) > 30 | where resolved == false | select cve coalesce(node_label,node_id)->asset_label cve_score cwe_name record_created_at matching_cpes | sort cve_score desc ssets | where days_ago(created_at) <= 7 | select name ip mac_address mac_vendor protocols created_at->appearance_time | sort appearance_time asc
実行結果例:
Query 14:What traffic is being blocked by my firewall?
このクエリはどういった場面で活用されるのでしょうか?
このクエリは、TCPハンドシェイクが正常に完了しなかったリンク試行を抽出します。
これにより、ハンドシェイクがファイアウォールによってブロックされたと推測できます。
Guardianセンサーのファイアウォール統合と組み合わせると、これは有用なテストになる可能性があります。
このクエリで何が取得できるでしょうか?
このクエリは、ハンドシェイクが完了しなかったリンク接続試行のテーブルを出力します。このクエリは、ファイアウォールのブロックによるものではないイベントも取得する場合があります。
この情報自体は、ネットワークパフォーマンスの最適化に役立つ場合があります。
このクエリはいつ使用すればよいですか?
このクエリは、ファイアウォール ルールの動作をテストまたは確認するときに役立つ場合があります。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:links | expand transport_protocols | where tcp_connection_attempts.total >= 1 | where tcp_handshaked_connections.total == 0 | select from to
実行結果例:
Query 15:What traffic is crossing Purdue levels?
このクエリはどういった場面で活用されるのでしょうか?
このクエリは、レベル間のトラフィックの増減を確認するための定期的なトラフィックレビューの一部として使用できます。このクエリは、新しいリンクをアサートしてアラートを出すように簡単に変更できます。
このクエリで何が取得できるでしょうか?
このクエリは、Purdue モデルに基づく起点レイヤーと終点レイヤーを示すリンクテーブルを出力します。レイヤーが割り当てられていないリンク、およびレイヤー間の距離が 1 より大きいリンクには注意してください。このクエリで最適な結果を得るには、各アセットに Purdue レベルを割り当てるか、検出された Purdue レベルを確認しておく必要があります。
このクエリはいつ使用すればよいですか?
Purdueモデル自体はOT/ICSセキュリティ問題の万能薬ではありませんが、トラフィックがPurdueモデルで規定された運用レベルを適切な場所と時間にのみ通過することを受け入れることは、セキュリティ対策を迅速に講じるための賢明なアプローチです。このクエリはアクティブなリンクをハイライト表示し、それらをトリアージして不要なリスクを軽減します。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:links | where from_zone != $to_zone | where to != 0.0.0.0 | where to exclude? "224.0.0" | where to exclude? "255.255.255.255" | join nodes from ip | join nodes to ip | select from to protocol joined_node_from_ip.level->src_level joined_node_to_ip.level->dst_level from_zone to_zone | select from to protocol dst_level src_level dist(dst_level,src_level) from_zone to_zone | where dst_level_src_level_dist > 1 | sort dst_level_src_level_dist desc
実行結果例:
Query 16:Do we have ICMP traffic? Can we alert on that?
このクエリはどういった場面で活用されるのでしょうか?
このクエリは、特に従来のデバイスがこのタイプの攻撃を検出したり防御したりできないネットワーク環境で、通常のネットワーク操作の変更を検出するために使用できます。
このクエリで何が取得できるでしょうか?
このクエリは、Purdueモデルに基づく起点レイヤーと終点レイヤーを示すリンクテーブルを出力します。レイヤーが割り当てられていないリンク、およびレイヤー間の距離が1より大きいリンクには注意が必要です。このクエリを少し変更することで、これらのトラフィックに対してアサート/アラートするように設定できます。
このクエリはいつ使用すればよいですか?
環境ポリシーによっては、ICMPトラフィックが許可される場合と許可されない場合があります。このクエリを使用すると、不正なICMPの使用を検出したり、ICMPトンネリングなどの不適切なICMPの使用を試みたりすることができます。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:sessions | where protocol == icmp | where status == ACTIVE | where transferred.bytes > 1000 | where seconds_ago(last_activity_time) < 10
実行結果例:
Query 17:What vulnerabilities exist on this device?
このクエリはどういった場面で活用されるのでしょうか?
このクエリは、資産インベントリ全体にわたってより詳細なレポートが必要な場合に役立ちます。
クエリを絞り込むことで、同じ詳細レベルを持つ資産、ゾーン、またはサブネットをターゲットにすることができます。
このクエリで何が取得できるでしょうか?
このクエリの結果表には、監査に活用できる多くの情報が含まれています。必要に応じてフィールドを追加または削除することで、結果をさらに絞り込むことができます。
このクエリはいつ使用すればよいですか?
このクエリは、脆弱性に関する以前のクエリよりも詳細な結果を提供することを目的としています。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:node_cves | where node_label != "" | where resolved != true | select node_label->asset_name cve time cwe_id cwe_name matching_cpes likelihood resolved resolution_reason resolved_source installed_on appliance_id appliance_ip appliance_host zone asset_id node_label node_type node_vendor node_product_name node_firmware_version node_os resolution_status minimum_hotfix latest_hotfix cve_summary cve_references cve_score cve_creation_time cve_update_time cve_source | sort asset_name asc
実行結果例:
Query 18:What Nozomi Networks licenses do I have?
このクエリはどういった場面で活用されるのでしょうか?
ライセンスを更新したり、監査の証拠を提供したりする必要がある場合、このクエリはすべてのセンサー (物理、仮想、またはコンテナ) を個別にチェックするよりも効率的です。
このクエリで何が取得できるでしょうか?
このクエリは、クエリが実行されたCMCに接続された各Nozomi Networksセンサーのライセンスステータスを示す情報テーブルを返します。環境全体をキャプチャするには、複数のCMCでこのクエリを実行する必要がある場合があります。
このクエリはいつ使用すればよいですか?
このクエリは、ライセンスステータスの監査時に時間を節約できます。
このクエリはどこで実行できますか?
このクエリは CMC でのみ実行できます。
形式:appliances | select info.host info.license_threat_intelligence info.license_asset_intelligence info.license_base info.license_smart_polling | select info.host->Guardian_HOSTNAME info.license_base.license_machine_id->Machine-ID info.license_base.extra.supported_nodes->Supported_NODES info.license_base.bundle_name->Bundle_NAME info.license_base.extra.expire_date->Base_Expiry_date info.license_threat_intelligence.extra.expire_date->TI_expiry_date info.license_asset_intelligence.extra.expire_date->AI_expiry_date
実行結果例:
Query 19:How can I tell when a multihomed asset is present?
このクエリはどういった場面で活用されるのでしょうか?
このクエリを使用して、マルチホームアセットを検索またはレポートします。
予期しない変更があった場合にアサート/アラートするようにクエリを変更することもできます。
このクエリで何が取得できるでしょうか?
このクエリは、複数のノードが関連付けられているアセットのラベル/名前を示す情報テーブルを返します。これは、マルチホームアセットの適切な指標となります。
このレポートの結果が時間の経過とともに変化する場合は、環境で構成が変更された可能性があります。
このクエリはいつ使用すればよいですか?
このクエリは、セキュリティ成熟度の進捗のどの時点でも、または監査中にレポートを作成するのに役立ちます。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:assets | where size(nodes) > 1 | join nodes ip ip | where seconds_ago(joined_node_ip_ip.first_activity_time) > 30 | select name nodes joined_node_ip_ip.created_at | where joined_node_ip_ip_created_at != never | sort joined_node_node_id_created_at asc | uniq
実行結果例:
Query 20:How many assets are in each of my subnets?
このクエリはどういった場面で活用されるのでしょうか?
このクエリは迅速な回答を提供し、レポートやアラートを提供するように拡張することもできます。
このクエリで何が取得できるでしょうか?
このクエリは、サブネットと各サブネットにある資産の数量をリストした単純なテーブルを返します。
このクエリはいつ使用すればよいですか?
これまでの多くのクエリと同様に、このクエリは、セキュリティ成熟度の過程のどの時点でも、または監査中にレポートを作成するのに役立ちます。
このクエリはどこで実行できますか?
これはGuardian、CMCで実行できます。
形式:nodes | where is_public != true | where is_broadcast != true | where ipv4(ip) != "" | select ip id split(ip,.,0)->first_octet split(ip,.,1)->second_octet split(ip,.,2)->third_octet | select concat(first_octet,".",second_octet,".",third_octet,".0/24")->subnet | group_by subnet | sort count desc
実行結果例:
- カテゴリ:
- Nozomi Networks
- OTセキュリティ
