Japan

関連リンク

関連リンク

関連リンク

関連リンク

サイト内の現在位置

サイバー攻撃リスクを自動診断するための技術

NECセキュリティブログ

2021年11月26日

NECサイバーセキュリティ戦略本部セキュリティ技術センターの井ノ口です。今週のセキュリティブログでは、サイバー攻撃のリスク診断を自動化するための技術について解説したいと思います。弊社が提供するサイバー攻撃ルート診断サービス[1]で利用している技術になります。

サイバー攻撃リスク自動診断

サイバー攻撃リスクの診断は、一般的に専門家によって人手で実施されます。これを自動的に行うことができれば、”短時間”で、”網羅的”に、”属人性の低い”診断を実現できます。リスク分析の手法にはいくつかありますが、今回はIPAが発行している制御システムのセキュリティリスク分析ガイド[new window2]に記載されている事業被害ベースでのリスク分析を実施することを考えます。なお、ガイドラインのタイトルには”制御システムの”とありますが、リスク分析の手法自体は通常の情報システムでも共通です。事業被害ベースでのリスク分析は以下の6ステップに分けて実施されます。

  1. 事業被害の定義、事業被害レベルの評価
  2. 事業被害を引き起こす攻撃シナリオの検討
  3. 攻撃シナリオを実現する攻撃ツリーの構成
  4. 攻撃ツリーが発生する可能性の評価
  5. 攻撃ツリーが攻撃を受容する可能性の評価
  6. 攻撃ツリーのリスク値の算定

この中でもステップ3の攻撃ツリーの構成では、最終的な攻撃の実行に向けた一連の攻撃のステップを洗い出す必要があり、診断者のスキルに依存して抜け漏れが発生しやすい作業です。そのことから今回は特に攻撃ツリーを構成する部分に焦点を当てたいと思います。
サイバー攻撃リスクを診断するためにはまず診断対象のシステムの情報を得る必要があります。システム情報の収集は様々なツールが開発されており、例えばOSやソフトウェア情報を収集するOpenAudIT[new window3]、脆弱性スキャナのNessus[new window4]、OpenVas[new window5]などがあります。ツールで取得できない情報は、システム運用の担当者などに聞き取り調査を行います。
サイバー攻撃リスク自動診断のイメージは、図 1のようなツールで収集したシステム情報や聞き取り調査の結果を入力し、図 2に示すような侵入口から攻撃目標までの攻撃ルートを得ることです。抽出した複数の攻撃ルートについて共通する部分をマージして並べたものが、事業被害ベースでのリスク分析における攻撃ツリーに相当します。

図 1 ツールで収集した情報の例(一部)
図 2 出力する攻撃ルートの例

サイバー攻撃リスク自動診断を実現するための構成は以下の図 3のようになります。システムに内在する脆弱性の影響を分析するための情報(脆弱性情報)や、どのような攻撃がどのような条件で実施可能で、どのような結果をもたらすのかの情報(攻撃ナレッジ)を予め収集・蓄積しておきます。診断時には、診断対象システムの構成情報を入力し、脆弱性情報や攻撃ナレッジを用いてシステム内で実施可能な攻撃(攻撃ステップ)を明らかにします。最後に、個別の攻撃ステップをつないで侵入口から攻撃目標までの攻撃ルートを抽出します。

図 3 サイバー攻撃リスク自動診断概要

脆弱性情報の収集

脆弱性情報はNational Vulnerability Database (NVD) [new window6]から得ることができます。NVDでは以下の図 4のようにCVE番号ごとに当該脆弱性の説明が記載されています。

図 4 NVD上の脆弱性情報の記載例

CVE情報の詳細はCurrent Descriptionに記載されています。この脆弱性の場合、リモートからコード実行が可能であることなどが分かります。脆弱性の特性はVectorの部分にも記載されており、こちらから情報を得ることもできます。例えばAttack Vector(AV)がNetworkならばリモートから攻撃可能であることが分かります。Confidentiality(C)、Integrity(I)、Availability(A)はそれぞれ脆弱性が与えうる影響を表しています。例えば、ConfidentialityがHighであることから情報が窃取される可能性があることが分かります。
また、各脆弱性情報にはハードウェア、ソフトウェアなどを識別するための共通の名称基準であるCPEの情報が図 5のように記載されています。診断対象システムの脆弱性情報が得られない場合には、ソフトウェア情報とCPEを比較することで診断対象システムが持つ脆弱性を推測することができます。

図 5 CPEの記載例

攻撃ナレッジの構築

ここで指す攻撃ナレッジとは「どのような攻撃がどのような条件で実施可能で、どのような結果をもたらすか」の情報です。例えば、「CVE2017-0143の脆弱性を持つソフトウェアが存在し、当該マシンにリモートアクセス可能な時に、当該マシン上で任意のコードを実行可能」というのも一つの攻撃ナレッジと言えます。ここでは攻撃ナレッジを構築する手順について説明したいと思います。
攻撃ナレッジを構築するには、まずどのような攻撃をリスク診断で取り扱うかを定める必要があります。MITRE ATT&CK[new window7] をみると、様々な攻撃手法がその目的ごとにTacticsとして14種類(2021年11月現在)に分類されています。まずはこの粒度で分析対象とする攻撃を絞り込みます。今回の場合は侵入口から攻撃目標に至るまでの攻撃ルートを抽出することが目的なので、”Execution”、”Privilege Escalation”、”Credential Access”、”Lateral Movement”、”Impact”を分析対象としました。
攻撃ナレッジを構築するにあたり、複数の攻撃からなる攻撃ルートを抽出するためには、ある攻撃の結果が次の攻撃につながるようにする必要があります。そのため個別の攻撃をモデル化する前に攻撃者が経由する中間状態を定義し、中間状態をつなぐように個別の攻撃を当てはめていきます。攻撃ナレッジのイメージを図にすると以下の図 6のようになります。楕円が中間状態に相当するもので、矢印の部分がモデル化する攻撃に相当します。矢印の左側が攻撃を実施するために必要な条件でシステム構成と攻撃者の中間状態を含みます。矢印の右側が攻撃の結果到達する状態です。攻撃ナレッジとは攻撃条件と攻撃の結果の組と言えます。

図 6 攻撃ナレッジのイメージ

MITRE ATT&CKやCAPEC[new window8] 等の情報源を参照しながら矢印に相当する攻撃について攻撃ナレッジを構築していきます。分析対象の全ての攻撃は非常に多いので、いくつかの例を示したいと思います。MITRE ATT&CKのLateral MovementというTacticsを見ると上の図の攻撃αに相当するような攻撃手法が記載されています。例えば、リモートから攻撃可能な脆弱性をつく攻撃はExploitation of Remote Services(T1210)というTechniqueに分類されます。この場合は表 1のような攻撃ナレッジを構成することができます。

表1. 攻撃ナレッジの例(リモートから脆弱性を攻撃)
攻撃条件 攻撃結果
状態 システム構成
マシンAからマシンBにリモートアクセス可能
  • マシンBに脆弱性Xを持つプロセスYが存在する
  • 脆弱性Xがリモートから攻撃可能で任意のコード実行を可能とするような脆弱性である
  • プロセスYが起動して通信を待ち受けている
マシンBで任意のコードを実行可能

同様に、MITRE ATT&CKのCredential AccessというTacticsをみると攻撃βに相当する攻撃手法が記載されています。例えば、OS Credential Dumping(T1003)はクレデンシャルを窃取する手法でMimikatzのようなツールを使って実現することができます。これを攻撃ナレッジに落とし込むと以下の表 2のようになります。

表2. 攻撃ナレッジの例(クレデンシャル窃取)
攻撃条件 攻撃結果
状態 システム構成
マシンAで任意のコードを実行可能 マシンAにマシンBのクレデンシャルが格納されている マシンBのクレデンシャル情報を保持

このようにして様々な攻撃について攻撃ナレッジを構築していきます。分析時には構成情報を参照して、攻撃ナレッジ上のマシンA、マシンB、脆弱性X、プロセスYに相当する箇所が揃うなら、当該攻撃を実施可能であると判断することができます。言い換えると、どのマシンからどのマシンにどのような攻撃が可能かの情報(攻撃ステップ)を得ることができます。

出力する攻撃ルートの抽出

システム内で実施可能な攻撃ステップ(攻撃元、攻撃先、攻撃内容)が分かると、侵入口から攻撃目標までそれらの攻撃をつなぐことで攻撃ルートを構成することができます。ただし、単純にすべての攻撃ルートを列挙すると、脆弱性をはじめとした攻撃可能な要素が数多く存在する環境では、攻撃目標に至るまでの経由するマシンや使用する攻撃手法の組み合わせが膨大な数となってしまいます。例えば、以下の図 7のような5台のマシンが接続されたシンプルな環境でも、脆弱性を用いる攻撃や中間者攻撃など何種類かの攻撃が可能な場合、Office-PC3からServer1に至るすべての攻撃ルートを列挙すると数百通りに上ります。脆弱性や暗号化されていない通信をいくつか入力して実際に攻撃ルートを抽出し攻撃ツリーを構成すると、図 8のように全部で846行になりました。これではとてもすべてを確認することはできません。

図 7 構成例
図 8 攻撃ルートを全て列挙した場合の出力

このため、攻撃ルートは適切なものを抜粋して出力する必要があります。侵入口から攻撃目標に至るまでに実施され得る攻撃を把握するという意味では、すべての組み合わせで攻撃ルートを出力する必要はありません。実施され得る攻撃がいずれかの攻撃ルートに含まれるように攻撃ルートを抜粋してやれば、出力される攻撃ルート数を抑制することができます。
例えば以下の図 9ではM1~M6の6台のマシンが存在する環境で、マシン間でA~Lまでの攻撃が実施可能な場合を考えます。実施可能な攻撃を単純に繋ぐと全16通りになります。一方A~Lまでの各攻撃について当該攻撃を利用する攻撃ルートを適宜抽出した場合、重複を除くと8通りになります。この方法で攻撃ルートを抜粋すると、抽出される攻撃ルート数は多くても実施可能な攻撃の数で抑えられるので、組み合わせ爆発がおきる心配がありません。

図 9 攻撃ルートの抜粋

先ほどの例で攻撃ルートを抜粋し攻撃ツリーを構成した場合は、図 10のように全部で55行に収まりました。

図 10 攻撃ルートを抜粋した場合の出力

診断結果の活用

出力として得られる攻撃ツリーを参照することで、リスクを把握し対策を講じるために必要な情報を得ることができます。図 11のように攻撃目標に至るまでに経由するマシン(1)や、攻撃の内容の情報(2)が含まれているので、対策を講じるマシンや対策内容を決めることができます。また、途中で分岐する攻撃ルート (3) では共通する攻撃ステップが分かるので、複数の攻撃ルートを同時に対策できる攻撃ステップを把握することができます。

図 11 攻撃ツリーに含まれる情報

おわりに

今回の記事ではサイバー攻撃リスク診断を自動的に行うための技術について説明しました。リスク診断を自動化することで、攻撃ルートを短時間で網羅的に把握することが可能となります。一方、個々の攻撃が実際に可能かはシステム設定等に依存するため、このような方法で分かるのは「攻撃されるかもしれないルート」であり、「実際に攻撃が可能なルート」とは限りません。実際に攻撃可能かを確かめるには、今回抽出されたルートに対しペネトレーションテストを実施する必要があります。過去のセキュリティブログではペネトレーションテストに用いるいくつかのツールの解説もしていますので、興味がある方はそちらもご覧ください。

おまけ

先日発表された第 69 回 電気科学技術奨励賞で、弊社から応募した「サイバー攻撃リスクを洗い出す自動診断技術の開発と実用化」が奨励賞をいただきました。

参考文献

執筆者プロフィール

井ノ口 真樹(いのくち まさき)
セキュリティ技術センター デジタルシャドウ活用チーム

サイバー攻撃リスクを診断する技術の研究開発に従事。
第69回電気科学技術奨励賞、2020年度山下記念研究賞を受賞。
情報処理安全確保支援士(2021年11月現在)。

執筆者の他の記事を読む

Escキーで閉じる 閉じる