特許第5656136号(P5656136)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ シマンテック コーポレーションの特許一覧

特許5656136クラスタリングを使用した行動シグネチャの生成
<>
  • 特許5656136-クラスタリングを使用した行動シグネチャの生成 図000002
  • 特許5656136-クラスタリングを使用した行動シグネチャの生成 図000003
  • 特許5656136-クラスタリングを使用した行動シグネチャの生成 図000004
  • 特許5656136-クラスタリングを使用した行動シグネチャの生成 図000005
  • 特許5656136-クラスタリングを使用した行動シグネチャの生成 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5656136
(24)【登録日】2014年12月5日
(45)【発行日】2015年1月21日
(54)【発明の名称】クラスタリングを使用した行動シグネチャの生成
(51)【国際特許分類】
   G06F 21/56 20130101AFI20141225BHJP
【FI】
   G06F21/00 156G
【請求項の数】20
【全頁数】19
(21)【出願番号】特願2013-508131(P2013-508131)
(86)(22)【出願日】2011年4月25日
(65)【公表番号】特表2013-529335(P2013-529335A)
(43)【公表日】2013年7月18日
(86)【国際出願番号】US2011033829
(87)【国際公開番号】WO2011137083
(87)【国際公開日】20111103
【審査請求日】2014年4月16日
(31)【優先権主張番号】12/769,262
(32)【優先日】2010年4月28日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】501113353
【氏名又は名称】シマンテック コーポレーション
【氏名又は名称原語表記】Symantec Corporation
(74)【代理人】
【識別番号】100107456
【弁理士】
【氏名又は名称】池田 成人
(74)【代理人】
【識別番号】100148596
【弁理士】
【氏名又は名称】山口 和弘
(74)【代理人】
【識別番号】100123995
【弁理士】
【氏名又は名称】野田 雅一
(72)【発明者】
【氏名】サティッシュ・ソーラブ
(72)【発明者】
【氏名】ペレイラ・シェーン
【審査官】 木村 励
(56)【参考文献】
【文献】 米国特許出願公開第2007/0136455(US,A1)
【文献】 欧州特許出願公開第02128798(EP,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/00 − 21/88
(57)【特許請求の範囲】
【請求項1】
悪意のあるソフトウェア(マルウェア)を検出するために行動シグネチャを生成するコンピュータ実装方法であって、
コンピュータを使用して、マルウェアデータセットにマルウェアのマルウェア挙動トレースを収集する工程であり、前記マルウェア挙動トレースは、前記マルウェアによって実行された連続挙動について説明する、工程と、
コンピュータを使用して、グッドウェアデータセットにグッドウェアのグッドウェア挙動トレースを収集する工程であり、前記グッドウェア挙動トレースは、前記グッドウェアによって実行された連続挙動について説明する、工程と、
前記マルウェアに対する前記マルウェア挙動トレースを正規化してマルウェア挙動シーケンスを生成する工程と、
前記グッドウェアに対する前記グッドウェア挙動トレースを正規化してグッドウェア挙動シーケンスを生成する工程と、
同様のマルウェア挙動シーケンス及びグッドウェア挙動シーケンスをクラスタにまとめてクラスタリングする工程であり、前記クラスタ内の前記マルウェア挙動シーケンスは、マルウェアファミリの挙動について説明し、前記マルウェアファミリは、関連付けられる一連のマルウェアを含む、工程と、
前記クラスタを分析して前記マルウェアファミリのみに共通の挙動サブシーケンスを特定する工程と、
前記マルウェアファミリのみに共通の前記挙動サブシーケンスを使用して前記マルウェアファミリに対する行動シグネチャを作成する工程と
を含む、方法。
【請求項2】
前記行動シグネチャを作成する工程の後に、
以前は前記マルウェアデータセットのメンバーではない、新しいマルウェアを特定する工程と、
前記新しいマルウェアを前記マルウェアデータセットに追加する工程と、
前記新しいマルウェアの挙動トレースを収集する工程と、
前記新しいマルウェアに対する前記挙動トレースを正規化して前記新しいマルウェアに対する挙動シーケンスを生成する工程と、
前記新しいマルウェアに対する前記挙動シーケンスがマルウェア挙動シーケンス及びグッドウェア挙動シーケンスのクラスタと整合するかどうか判断する工程と、
前記クラスタと整合する前記新しいマルウェアに対する前記挙動シーケンスに応じて、前記クラスタを分析して、前記クラスタ内の前記マルウェア挙動シーケンスおよび前記新しいマルウェアに対する前記挙動シーケンスのみに共通の新しい挙動サブシーケンスを特定する工程と、
前記新しい挙動サブシーケンスを使用して前記マルウェアファミリに対する新しい行動シグネチャを作成する工程と
をさらに含む、請求項1に記載の方法。
【請求項3】
前記マルウェア挙動トレース及びグッドウェア挙動トレースは、実行されたアプリケーションプログラミングインターフェース(API)呼び出しについて説明する、請求項1に記載の方法。
【請求項4】
前記マルウェアに対する前記挙動トレースを正規化してマルウェア挙動シーケンスを生成する工程は、
マルウェア挙動トレース内の関連連続挙動をまとめて分類してオペレーションを形成する工程を含み、マルウェア挙動シーケンスは、1つまたは複数の連続挙動および1つまたは複数のオペレーションを含む、請求項1に記載の方法。
【請求項5】
同様のマルウェア挙動シーケンス及びグッドウェア挙動シーケンスをクラスタにまとめてクラスタリングする工程は、
前記マルウェア挙動シーケンス及びグッドウェア挙動シーケンスの間で編集距離を決定する工程と、
前記決定された編集距離に応じて前記マルウェア挙動シーケンス及びグッドウェア挙動シーケンスをクラスタリングする工程と
を含む、請求項1に記載の方法。
【請求項6】
前記クラスタを分析して前記マルウェアファミリのみに共通の挙動サブシーケンスを特定する工程は、
前記クラスタ内の前記マルウェア挙動シーケンスのみに共通の複数の候補サブシーケンスを特定する工程と、
前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかを特定する工程と、
前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかに応じて、前記候補サブシーケンスの中から前記挙動サブシーケンスを選択する工程と
を含む、請求項1に記載の方法。
【請求項7】
前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかに応じて、前記候補サブシーケンスの中から前記挙動サブシーケンスを選択する工程は、
他の候補サブシーケンスより早期に前記マルウェア挙動シーケンスに現れた前記挙動サブシーケンスに応じて前記挙動サブシーケンスを選択する工程を含む、請求項6に記載の方法。
【請求項8】
クライアントのセキュリティモジュールに前記行動シグネチャを分配する工程をさらに含み、前記セキュリティモジュールは、前記行動シグネチャを使用して前記クライアント側に存在するマルウェアを検出するよう適合される、請求項1に記載の方法。
【請求項9】
悪意のあるソフトウェア(マルウェア)を検出するために行動シグネチャを生成するコンピュータシステムであって、
マルウェアデータセットにマルウェアのマルウェア挙動トレースを収集する工程であり、前記マルウェア挙動トレースは、前記マルウェアによって実行された連続挙動について説明する、工程と、
グッドウェアデータセットにグッドウェアのグッドウェア挙動トレースを収集する工程であり、前記グッドウェア挙動トレースは、前記グッドウェアによって実行された連続挙動について説明する、工程と、
前記マルウェアに対する前記マルウェア挙動トレースを正規化してマルウェア挙動シーケンスを生成する工程と、
前記グッドウェアに対する前記グッドウェア挙動トレースを正規化してグッドウェア挙動シーケンスを生成する工程と、
同様のマルウェア挙動シーケンス及びグッドウェア挙動シーケンスをクラスタにまとめてクラスタリングする工程であり、前記クラスタ内の前記マルウェア挙動シーケンスは、マルウェアファミリの挙動について説明し、前記マルウェアファミリは、関連付けられる一連のマルウェアを含む、工程と、
前記クラスタを分析して前記マルウェアファミリのみに共通の挙動サブシーケンスを特定する工程と、
前記マルウェアファミリのみに共通の前記挙動サブシーケンスを使用して前記マルウェアファミリに対する行動シグネチャを作成する工程と
を含む工程を実行するために実行可能なコンピュータプログラムモジュールを格納する非一時的なコンピュータ可読記憶媒体と、
前記コンピュータプログラムモジュールを実行するためのコンピュータプロセッサと
を備える、コンピュータシステム。
【請求項10】
前記工程は、
前記行動シグネチャを作成する工程の後に、
以前は前記マルウェアデータセットのメンバーではない、新しいマルウェアを特定する工程と、
前記新しいマルウェアを前記マルウェアデータセットに追加する工程と、
前記新しいマルウェアの挙動トレースを収集する工程と、
前記新しいマルウェアに対する前記挙動トレースを正規化して前記新しいマルウェアに対する挙動シーケンスを生成する工程と、
前記新しいマルウェアに対する前記挙動シーケンスがマルウェア挙動シーケンス及びグッドウェア挙動シーケンスのクラスタと整合するかどうか判断する工程と、
前記クラスタと整合する前記新しいマルウェアに対する前記挙動シーケンスに応じて、前記クラスタを分析して、前記クラスタ内の前記マルウェア挙動シーケンスおよび前記新しいマルウェアに対する前記挙動シーケンスのみに共通の新しい挙動サブシーケンスを特定する工程と、
前記新しい挙動サブシーケンスを使用して前記マルウェアファミリに対する新しい行動シグネチャを作成する工程と
をさらに含む、請求項9に記載のコンピュータシステム。
【請求項11】
前記マルウェアに対する前記挙動トレースを正規化してマルウェア挙動シーケンスを生成する工程は、
マルウェア挙動トレース内の関連連続挙動をまとめて分類してオペレーションを形成する工程を含み、マルウェア挙動シーケンスは、1つまたは複数の連続挙動および1つまたは複数のオペレーションを含む、請求項9に記載のコンピュータシステム。
【請求項12】
前記クラスタを分析して前記マルウェアファミリのみに共通の挙動サブシーケンスを特定する工程は、
前記クラスタ内の前記マルウェア挙動シーケンスのみに共通の複数の候補サブシーケンスを特定する工程と、
前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかを特定する工程と、
前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかに応じて、前記候補サブシーケンスの中から前記挙動サブシーケンスを選択する工程と
を含む、請求項9に記載のコンピュータシステム。
【請求項13】
前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかに応じて、前記候補サブシーケンスの中から前記挙動サブシーケンスを選択する工程は、
他の候補サブシーケンスより早期に前記マルウェア挙動シーケンスに現れた前記挙動サブシーケンスに応じて前記挙動サブシーケンスを選択する工程を含む、請求項12に記載のコンピュータシステム。
【請求項14】
悪意のあるソフトウェア(マルウェア)を検出するために行動シグネチャを生成するための実行可能なコンピュータプログラムであって、
コンピュータに、
マルウェアデータセットにマルウェアのマルウェア挙動トレースを収集するための機能であり、前記マルウェア挙動トレースは、前記マルウェアによって実行された連続挙動について説明する、機能と、
グッドウェアデータセットにグッドウェアのグッドウェア挙動トレースを収集するための機能であり、前記グッドウェア挙動トレースは、前記グッドウェアによって実行された連続挙動について説明する、機能と、
前記マルウェアに対する前記マルウェア挙動トレースを正規化してマルウェア挙動シーケンスを生成するための機能と、
前記グッドウェアに対する前記グッドウェア挙動トレースを正規化してグッドウェア挙動シーケンスを生成するための機能と、
同様のマルウェア挙動シーケンス及びグッドウェア挙動シーケンスをクラスタにまとめてクラスタリングするための機能であり、前記クラスタ内の前記マルウェア挙動シーケンスは、マルウェアファミリの挙動について説明し、前記マルウェアファミリは、関連付けられる一連のマルウェアを含む、機能と、
前記クラスタを分析して前記マルウェアファミリのみに共通の挙動サブシーケンスを特定するための機能と、
前記マルウェアファミリのみに共通の前記挙動サブシーケンスを使用して前記マルウェアファミリに対する行動シグネチャを作成するための機能と
を実現させる、コンピュータプログラム。
【請求項15】
前記行動シグネチャの作成の後に、
以前は前記マルウェアデータセットのメンバーではない、新しいマルウェアを特定する機能と、
前記新しいマルウェアを前記マルウェアデータセットに追加する機能と、
前記新しいマルウェアの挙動トレースを収集する機能と、
前記新しいマルウェアに対する前記挙動トレースを正規化して前記新しいマルウェアに対する挙動シーケンスを生成するための機能と、
前記新しいマルウェアに対する前記挙動シーケンスがマルウェア挙動シーケンス及びグッドウェア挙動シーケンスのクラスタと整合するかどうか判断するための機能と、
前記クラスタと整合する前記新しいマルウェアに対する前記挙動シーケンスに応じて、前記クラスタを分析して、前記クラスタ内の前記マルウェア挙動シーケンスおよび前記新しいマルウェアに対する前記挙動シーケンスのみに共通の新しい挙動サブシーケンスを特定するための機能と、
前記新しい挙動サブシーケンスを使用して前記マルウェアファミリに対する新しい行動シグネチャを作成するための機能と
をさらに実現させる、請求項14に記載のコンピュータプログラム。
【請求項16】
前記マルウェアに対する前記挙動トレースを正規化してマルウェア挙動シーケンスを生成する機能は、
マルウェア挙動トレース内の関連連続挙動をまとめて分類してオペレーションを形成する機能を含み、マルウェア挙動シーケンスは、1つまたは複数の連続挙動および1つまたは複数のオペレーションを含む、請求項14に記載のコンピュータプログラム。
【請求項17】
前記クラスタを分析して前記マルウェアファミリのみに共通の挙動サブシーケンスを特定する機能は、
前記クラスタ内の前記マルウェア挙動シーケンスのみに共通の複数の候補サブシーケンスを特定する機能と、
前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかを特定する機能と、
前記マルウェア挙動シーケンス内のどこで前記候補サブシーケンスが現れるかに応じて、前記候補サブシーケンスの中から前記挙動サブシーケンスを選択する機能と
を含む、請求項14に記載のコンピュータプログラム。
【請求項18】
コンピュータを使用して、前記マルウェア挙動トレースを収集する工程は、
仮想コンピューティング環境で前記マルウェアの実行をエミュレートする工程と、
前記マルウェアによって行われる、オペレーティングシステムへのアプリケーションプログラミングインターフェース(API)呼び出しのシーケンスを記録するために、エミュレートされた前記マルウェアの実行をモニタする工程と、
を含む、請求項1に記載の方法。
【請求項19】
前記マルウェア挙動トレースを収集する工程は、
仮想コンピューティング環境で前記マルウェアの実行をエミュレートする工程と、
前記マルウェアによって行われる、オペレーティングシステムへのアプリケーションプログラミングインターフェース(API)呼び出しのシーケンスを記録するために、エミュレートされた前記マルウェアの実行をモニタする工程と、
を含む、請求項9に記載のコンピュータシステム。
【請求項20】
前記マルウェア挙動トレースを収集する機能は、
仮想コンピューティング環境で前記マルウェアの実行をエミュレートする機能と、
前記マルウェアによって行われる、オペレーティングシステムへのアプリケーションプログラミングインターフェース(API)呼び出しのシーケンスを記録するために、エミュレートされた前記マルウェアの実行をモニタする機能と、
を含む、請求項14に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、コンピュータセキュリティに関し、具体的には、悪意のあるソフトウェアを検出するための行動シグネチャの生成に関する。
【背景技術】
【0002】
最新のコンピュータを攻撃することができる多種多様の悪意のあるソフトウェア(マルウェア)が存在する。マルウェアの脅威は、コンピュータウイルス、ワーム、トロイの木馬プログラム、スパイウェア、アドウェア、クライムウェアおよびフィッシング詐欺ウェブサイトを含む。マルウェアは、例えば、ログイン、パスワード、銀行口座名およびクレジットカード番号などの重要な情報をひそかに取得することができる。同様に、マルウェアは、危殆化したコンピュータに対する攻撃者のアクセスおよび制御を可能にする隠しインターフェースを提供することができる。
【0003】
最近のマルウェアは、相対的に少数のコンピュータのみを標的として配信される場合が多い。例えば、トロイの木馬プログラムは、特定企業の特定部門のコンピュータを標的とするよう設計され得る。そのようなマルウェアは、同じマルウェアの例があまり存在しないため、セキュリティソフトウェアが検出することは難しく、セキュリティソフトウェアは、それを認識するように構成されていない恐れがある。さらに、マルウェアは検出を回避するよう設計されたポリモーフィズムを含むことができるため、大量に分配されたマルウェアの検出でさえ難しくなりつつある。
【発明の概要】
【発明が解決しようとする課題】
【0004】
マルウェアの検出が困難となるのに応じて、セキュリティソフトウェアは、ヒューリスティックベースの検出へ向けて発展している。このタイプの検出は、悪意のある挙動を示す挙動について説明する行動シグネチャなどの一連のヒューリスティックを使用してマルウェアを特定する。しかし、膨大な量の異なるマルウェアは、マルウェアに対する行動シグネチャの維持を困難にする。多くの行動シグネチャを有することにより、シグネチャの維持および使用が複雑化する。例えば、1つのソフトウェアが悪意のあるものであるかどうかを判断するために使用される分析は、より複雑性を増し、この判断を下すために消費される計算リソースは、行動シグネチャの数の増加に伴い増加する。
【課題を解決するための手段】
【0005】
上記のおよび他の問題は、マルウェアを検出するための行動シグネチャを生成するための方法、コンピュータシステムおよびコンピュータ可読記憶媒体によって対処される。本方法の実施形態は、コンピュータを使用して、マルウェアデータセットにマルウェアの挙動トレースを収集する工程を含む。挙動トレースは、マルウェアによって実行された連続挙動について説明する。本方法は、マルウェアに対する挙動トレースを正規化してマルウェア挙動シーケンスを生成する工程と、同様のマルウェア挙動シーケンスをクラスタにまとめてクラスタリングする工程とをさらに含む。クラスタ内のマルウェア挙動シーケンスは、マルウェアファミリの挙動について説明する。それに加えて、本方法は、クラスタを分析してマルウェアファミリに共通の挙動サブシーケンスを特定する工程と、挙動サブシーケンスを使用してマルウェアファミリに対する行動シグネチャを作成する工程とを含む。
【0006】
コンピュータシステムの実施形態は、工程を実行するための実行可能なコンピュータプログラムモジュールを格納する非一時的なコンピュータ可読記憶媒体を備える。工程は、マルウェアデータセットにマルウェアの挙動トレースを収集する工程を含む。挙動トレースは、マルウェアによって実行された連続挙動について説明する。工程は、マルウェアに対する挙動トレースを正規化してマルウェア挙動シーケンスを生成する工程と、同様のマルウェア挙動シーケンスをクラスタにまとめてクラスタリングする工程とをさらに含む。クラスタ内のマルウェア挙動シーケンスは、マルウェアファミリの挙動について説明する。それに加えて、工程は、クラスタを分析してマルウェアファミリに共通の挙動サブシーケンスを特定する工程と、挙動サブシーケンスを使用してマルウェアファミリに対する行動シグネチャを作成する工程とを含む。また、コンピュータシステムは、コンピュータプログラムモジュールを実行するためのコンピュータプロセッサも備える。
【0007】
媒体の実施形態は、マルウェアデータセットにマルウェアの挙動トレースを収集するための実行可能なコンピュータプログラムモジュールを格納する非一時的なコンピュータ可読記憶媒体を備える。挙動トレースは、マルウェアによって実行された連続挙動について説明する。また、モジュールは、マルウェアに対する挙動トレースを正規化してマルウェア挙動シーケンスを生成し、同様のマルウェア挙動シーケンスをクラスタにまとめてクラスタリングする。クラスタ内のマルウェア挙動シーケンスは、マルウェアファミリの挙動について説明する。それに加えて、モジュールは、クラスタを分析してマルウェアファミリに共通の挙動サブシーケンスを特定し、挙動サブシーケンスを使用してマルウェアファミリに対する行動シグネチャを作成する。
【図面の簡単な説明】
【0008】
図1】一実施形態によるコンピューティング環境の高レベルのブロック図である。
図2】セキュリティサーバまたはクライアントとして使用するための典型的なコンピュータを示す高レベルのブロック図である。
図3】一実施形態によるセキュリティサーバのシグネチャ生成モジュールの詳細な概観を示す高レベルのブロック図である。
図4】行動シグネチャを生成および分配するために、セキュリティサーバの一実施形態によって実行される工程を示すフローチャートである。
図5】新しいマルウェアサンプルを検出するための更新された行動シグネチャを生成および分配するために、セキュリティサーバの一実施形態によって実行される工程を示すフローチャートである。
【0009】
図面は、単なる例示を目的として一実施形態を描写する。当業者であれば、本明細書で示される構造および方法の代替の実施形態を、本明細書に記載される原理から逸脱することなく使用できることが以下の説明から容易に理解されよう。
【発明を実施するための形態】
【0010】
図1は、一実施形態によるコンピューティング環境100の高レベルのブロック図である。図1は、ネットワーク114によって接続されたセキュリティサーバ110および3つのクライアント112を示す。説明を簡素かつ明確にするため、図1では3つのクライアント112のみが示される。コンピューティング環境100の実施形態は、数千または数百万ものクライアント112を有することができる。また、いくつかの実施形態は、複数のセキュリティサーバ110も有する。
【0011】
クライアント112は、悪意のあるソフトウェアをホストすることができる電子デバイスである。一実施形態では、クライアント112は、例えば、Microsoft Windows互換オペレーティングシステム(OS)、Apple OS Xおよび/またはLinuxの分配を実行する従来のコンピュータシステムである。また、クライアント112は、携帯情報端末(PDA)、携帯電話、テレビゲームシステムなどのコンピュータ機能性を有する別のデバイスでもあり得る。クライアント112は、通常、悪意のあるソフトウェアをホストすることができる多数のコンピュータファイルを格納する。
【0012】
「マルウェア」と呼ばれる場合がある悪意のあるソフトウェアは、一般に、クライアント112上でひそかに実行するソフトウェアまたは何らかの秘密の機能性を有するソフトウェアとして定義される。マルウェアは、多くの形態を取ることができ、正当なファイルに添付される寄生ウイルス、コンピュータを感染して他のコンピュータに広げるためにコンピュータのセキュリティの弱点を突くワーム、正当に見えるが実際は悪意のある隠しコードを含むトロイの木馬プログラム、ならびに、機密情報の取得もしくは広告の表示のためにキーストロークおよび/またはコンピュータ上の他の動作をモニタするスパイウェアなどが挙げられる。
【0013】
クライアント112は、クライアント上のマルウェアの存在を検出するためのセキュリティモジュール116を実行する。セキュリティモジュール116は、例えば、クライアント112のOSに組み込んでも、別々の包括的なセキュリティパッケージの一部であってもよい。一実施形態では、セキュリティモジュール116は、セキュリティサーバ110を動作する同じ実体によって提供される。セキュリティモジュール116は、ネットワーク114を介してセキュリティサーバ110と通信し、クライアント112側でマルウェアを検出するための検出データを入手する。
【0014】
セキュリティモジュール116によって入手された検出データは、行動シグネチャを含む。行動シグネチャは、マルウェアの特徴を示す挙動のシーケンスについて説明する。セキュリティモジュール116は、クライアント側で実行するソフトウェアの挙動を観察してその挙動が行動シグネチャのいずれかと一致するかどうか判断することによって、クライアント112側でマルウェアを検出する。
【0015】
また、検出データは、クライアント112側でマルウェアを検出する他の方法について説明するデータも含むことができる。例えば、検出データは、マルウェアの特徴を示す、コンピュータファイル内で見出されたデータのシーケンスを特定するシグネチャ文字列、ある所定のソフトウェアが悪意のあるものかどうか評価するためにセキュリティモジュール116が使用できるレピュテーション、および/または、マルウェア攻撃を示す可能性があるクライアント112の状態を特定するヒューリスティックを含むことができる。
【0016】
一実施形態では、セキュリティモジュール116は、検出データを使用してクライアント112をモニタし、マルウェアを検出した場合にレポートを生成する。レポートは、検出されたマルウェアについて、クライアント112のユーザおよび/またはクライアント112の管理者などの別の実体に通知する。また、セキュリティモジュール116は、悪意のある挙動を阻止する、マルウェアを隔離する、マルウェアを除去するなど、1つまたは複数の動作を実行してマルウェアを修復することもできる。
【0017】
セキュリティサーバ110は、検出データを生成してクライアント112に分配するよう構成されたハードウェアデバイスおよび/またはソフトウェアモジュールである。セキュリティサーバ110の一例としては、セキュリティソフトウェアおよびサービスをクライアント112のセキュリティモジュール116に提供するウェブベースのシステムが挙げられる。実施形態に応じて、セキュリティサーバ110の機能の1つまたは複数を、クラウドコンピューティング環境によって提供することができる。本明細書で使用される場合、「クラウドコンピューティング」は、ネットワーク114上のサービスとして、動的に拡張可能であり仮想化される場合が多いリソースが提供されるコンピューティングのスタイルを指す。クライアント112およびセキュリティモジュール116に属する機能もまた、クラウドコンピューティング環境によって提供することができる。
【0018】
セキュリティサーバ110の一実施形態は、セキュリティモジュール116がマルウェアの検出に使用する行動シグネチャを生成するためのシグネチャ生成モジュール118を含む。シグネチャ生成モジュール118は、同様の挙動を実行するソフトウェアのクラスタを特定する。所定のクラスタに対して、シグネチャ生成モジュール118は、クラスタ内でマルウェアを検出するために使用できる行動シグネチャを特定する。さらに、新しいマルウェアが特定されると、シグネチャ生成モジュール118は、可能であれば、新しいマルウェアを既存のクラスタに割り当てる。新しいマルウェアが割り当てられたクラスタに対する既存のシグネチャを使用して新しいマルウェアを検出できない場合は、シグネチャ生成モジュール118は、新しいマルウェアを含む、クラスタ内でマルウェアを検出するために使用できる新しい行動シグネチャを生成する。セキュリティサーバ110の動作は、一実施形態では自動化され、これにより、手動操作なしで行動シグネチャを生成することが可能になる。
【0019】
分配モジュール120は、クライアント112のセキュリティモジュール116に行動シグネチャおよび他の検出データを分配する。一実施形態では、分配モジュール120は、新しいシグネチャが作成されるとローリングベースで行動シグネチャを分配する。別の実施形態では、行動シグネチャは、既定のスケジュールでおよび/またはセキュリティモジュール116による要求と同時に提供される。
【0020】
セキュリティサーバ110によって実行されたクラスタリングベースのシグネチャ生成技法は、こうして個別の行動シグネチャを効果的に使用して、複数のマルウェアサンプルを検出する。その結果、セキュリティサーバ110は、それぞれのシグネチャが単一のマルウェアサンプルに特有である場合に必要とされるよりも少ない行動シグネチャをセキュリティモジュール116に分配する。さらに、マルウェアを検出するためにセキュリティモジュール116によって使用される行動シグネチャのセットのサイズは、従来の技法と比べて低減される。この効率は、新しく発見されたマルウェアに対して行動シグネチャが生成される場合でさえ、維持される。したがって、シグネチャ生成技法は、効果的で高性能のマルウェア検出を実現する。
【0021】
ネットワーク114は、ネットワーク上のセキュリティサーバ110と、クライアント112と、他の任意の実体との間の通信経路を表す。一実施形態では、ネットワーク114は、インターネットであり、標準の通信技術および/またはプロトコルを使用する。したがって、ネットワーク114は、イーサネット802.11、マイクロ波アクセスのための世界規模の相互運用(WiMAX)、3G、デジタル加入者線(DSL)、非同期転送モード(ATM)、InfiniBand、PCI Express Advanced Switchingなどの技術を使用してリンクを含むことができる。同様に、ネットワーク114上で使用されるネットワークプロトコルは、マルチプロトコルラベルスイッチング(MPLS)、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル(UDP)、ハイパーテキスト転送プロトコル(HTTP)、簡易メール転送プロトコル(SMTP)、ファイル転送プロトコル(FTP)などを含むことができる。ネットワーク114上で交換されるデータは、ハイパーテキストマークアップ言語(HTML)、拡張可能マークアップ言語(XML)などを含む技術および/または形式を使用して表すことができる。それに加えて、セキュアソケット層(SSL)、トランスポート層セキュリティ(TLS)、仮想プライベートネットワーク(VPN)、インターネットプロトコルセキュリティ(IPsec)などの従来の暗号化技術を使用して、リンクのすべてまたは一部を暗号化することができる。他の実施形態では、実体は、上記で説明されるものの代わりにまたはそれに加えて、カスタムおよび/または専用のデータ通信技術を使用する。
【0022】
図2は、セキュリティサーバ110またはクライアント112として使用するための典型的なコンピュータ200を示す高レベルのブロック図である。チップセット204と結合されたプロセッサ202が示される。また、チップセット204には、メモリ206と、記憶装置208と、キーボード210と、グラフィックスアダプタ212と、ポインティングデバイス214と、ネットワークアダプタ216も結合される。ディスプレイ218は、グラフィックスアダプタ212と結合される。一実施形態では、チップセット204の機能性は、メモリコントローラハブ220およびI/Oコントローラハブ222によって提供される。別の実施形態では、メモリ206は、チップセット204の代わりにプロセッサ202と直接結合される。
【0023】
記憶装置208は、ハードドライブ、コンパクトディスク読み取り専用メモリ(CD−ROM)、DVDまたはソリッドステートメモリデバイスなどの非一時的なコンピュータ可読記憶媒体である。メモリ206は、プロセッサ202によって使用される命令およびデータを保持する。ポインティングデバイス214は、マウス、トラックボールまたは他のタイプのポインティングデバイスであり、キーボード210と組み合わせて使用して、コンピュータシステム200にデータを入力する。グラフィックスアダプタ212は、ディスプレイ218上にイメージおよび他の情報を表示する。ネットワークアダプタ216は、ネットワーク116とコンピュータシステム200を結合する。
【0024】
当技術分野で公知の通り、コンピュータ200は、図2に示されるものとは異なるコンポーネントおよび/またはそれ以外のコンポーネントを有することができる。それに加えて、コンピュータ200は、示されるある特定のコンポーネントを欠くことがある。一実施形態では、セキュリティサーバとして機能するコンピュータ200は、複数のブレードコンピュータから形成され、キーボード210、ポインティングデバイス214、グラフィックスアダプタ212および/またはディスプレイ218を欠く。さらに、記憶装置208は、コンピュータ200からローカルおよび/またはリモート操作することができる(ストレージエリアネットワーク(SAN)内で具体化されるなど)。
【0025】
この説明では、指定の機能性を提供するためのコンピュータプログラム論理について言及する際に用語「モジュール」を使用する。モジュールは、ハードウェア、ファームウェアおよび/またはソフトウェアで実装することができる。モジュールは、通常、記憶装置208などのコンピュータ可読記憶媒体上に格納され、メモリ206にロードされ、プロセッサ202によって実行される。
【0026】
図3は、一実施形態によるセキュリティサーバ110のシグネチャ生成モジュール118の詳細な概観を示す高レベルのブロック図である。図3に示されるように、シグネチャ生成モジュール118自体が複数のモジュールを含む。いくつかの実施形態では、機能は、本明細書に記載されるものとは異なる様式でこれらのモジュールに分配される。
【0027】
格納モジュール310は、シグネチャ生成モジュール118によって使用されるデータを格納する。そのようなデータの例には、評価中のソフトウェア、シグネチャ生成プロセス中に作成され使用される中間データおよび作成された行動シグネチャが含まれる。データ格納モジュール310は、リレーショナルデータベースまたは別のタイプのデータベースを含み得る。
【0028】
図3に示されるように、格納モジュール310の実施形態は、異なるクラスのソフトウェアを保持するデータセットを格納する。マルウェアデータセット312は、既知のマルウェアのサンプルを格納する。データセット312内のマルウェアは、クライアント112からおよび/または他のソースから入手することができる。それに加えて、格納モジュール310は、既知のグッドウェアのサンプルを格納するグッドウェアデータセット314を格納する。グッドウェアは、悪意のない(すなわち、正当な)ものとして知られているソフトウェアである。グッドウェアは、クライアント112上に存在する場合が多い、ありふれたおよび/または一般のソフトウェアプログラムを含むことができる。データセット内のマルウェア312およびグッドウェア314は、まとめて「ソフトウェア」と呼ばれる。
【0029】
挙動収集モジュール316は、データセット312、314にソフトウェアに挙動トレースを収集する。ソフトウェアのサンプルに対する「挙動トレース」は、ソフトウェアが実行される際に行う挙動のシーケンスである。一実施形態では、挙動収集モジュール316は、データセット312、314内の各ソフトウェアサンプルを適切な環境で実行する。環境は、実際のものでもシミュレートされたものでもよい。例えば、特定のソフトウェアサンプルが、Microsoft Windows OSを改変したものを有するコンピュータ上で実行することを目的としたものであれば、挙動収集モジュール316は、Windowsベースのコンピュータをシミュレートする仮想コンピューティング環境でソフトウェアをエミュレートすることができる。
【0030】
挙動収集モジュール316は、ソフトウェアによって実行される挙動のシーケンスを観察するのに十分長い時間、ソフトウェアを実行できるようにする。実行の長さは、例えば、実行される命令の数または実行時間の長さによって指定することができる。挙動収集モジュール316は、環境内で指定の実行量を実行するためにソフトウェアが必要とするいかなるパラメータおよび/または環境リソースもソフトウェアに提供する。
【0031】
挙動収集モジュール316は、実行する挙動のシーケンスを収集する(記録する)ため、実行しているソフトウェアをモニタする。一実施形態では、挙動収集モジュール316は、実行しているソフトウェアによって行われる、OSへのアプリケーションプログラミングインターフェース(API)呼び出しを特にモニタし、したがって、ソフトウェアに対する挙動トレースは、そのAPI呼び出しシーケンスである。挙動収集モジュール316の他の実施形態は、モニタして、挙動トレースに異なるおよび/または追加のデータを含める。
【0032】
トレース正規化モジュール318は、実行されたソフトウェアの挙動トレースを正規化する。正規化により、異なるトレースを比較できるように挙動トレースを標準的な表現にする。一実施形態では、トレース正規化モジュール318は、API呼び出しで参照されるファイル経路、ドライブ名およびフォルダ位置などの異なる実行インスタンスにおいて異なり得るパラメータの標準的な表現によって挙動トレースを正規化する。例えば、パラメータは、挙動トレースから取り除く、および/または、ワイルドカードシンボルに置き換えることができる。正規化された挙動トレースは、「挙動シーケンス」と呼ばれる。
【0033】
また、トレース正規化モジュール318は、挙動トレース内の挙動を正規化の一環としてオペレーションに分類することもできる。「オペレーション」は、一緒に分類される一連の関連連続挙動である。例えば、ファイルからデータを入手するソフトウェアは、「ファイルを開く」というAPI呼び出しに続いて「ファイルを読む」という呼び出しを行う場合が多い。トレース正規化モジュール318は、これらの2つの呼び出しを「ファイルへアクセスする」という単一のオペレーションに組み合わせることができる。この様式でオペレーションを使用することにより、その中に含まれる情報内容を実質的に変更することなく、シーケンスのサイズを低減し、したがって、後段の分析の効率を高める。正規化モジュール318によって実行される正規化のタイプは実施形態ごとに異なり得、および/または、異なる実施形態では省略され得る。
【0034】
クラスタリングモジュール320は、同様の挙動シーケンスがまとめてクラスタリングされるように、ソフトウェアの挙動シーケンスをクラスタリングする。クラスタリングモジュール320は、各挙動シーケンスを他の挙動シーケンスと比較して、一連のクラスタを識別し、各クラスタは一連の同様の挙動シーケンスを含む。行動シーケンスはマルウェア312とグッドウェア314の両方から得られるため、結果として得られるクラスタは、単一のクラス(例えば、すべてマルウェア)のシーケンスからなるものでも、両方のクラスの組合せを含んでもよい。
【0035】
一実施形態では、クラスタリングモジュール320は、類似性の尺度として編集距離を使用して(すなわち、距離測定)、編集の閾値数値内の同一の挙動シーケンスをまとめてクラスタリングする。実施形態に応じて編集距離閾値は異なり得る。それに加えて、クラスタリングモジュール320の異なる実施形態は、異なるおよび/または追加のクラスタリング技法および類似性の尺度を使用して、挙動シーケンスをクラスタリングする。
【0036】
クラスタ分析モジュール322は、挙動シーケンスのクラスタを分析し、マルウェアに対する行動シグネチャとして使用することができるサブシーケンスを特定する。一実施形態では、クラスタ分析モジュール322は、各クラスタを分析し、クラスタ内の挙動シーケンスに代表されるソフトウェアのクラスを決定する。上記のように、クラスタは、マルウェア、グッドウェアまたは2つのクラスの組合せからのシーケンスを含むことができる。
【0037】
一実施形態では、クラスタ分析モジュール322は、大部分がソフトウェアの一クラスから得られたシーケンスを含むクラスタを特定する。例えば、モジュール322は、独占的にソフトウェアの一クラスから得られたシーケンスを含むクラスタおよび/またはソフトウェアの一クラスから得られた閾値量(例えば、95%)を超えるシーケンスを含むクラスタを特定することができる。
【0038】
通常、関連ソフトウェアから得られた挙動シーケンスは、まとめてクラスタリングされる傾向にある。同じグッドウェアの異なるバージョン(例えば、異なるパッチレベル)は、実質的に同じ挙動を実行する場合が多く、したがって、異なるバージョンから得られたシーケンスは、まとめてクラスタリングされる傾向にあることになる。同様に、ポリモーフィックマルウェアファミリの異なるインスタンスから得られたシーケンスは、ポリモーフィズムにもかかわらずマルウェアの挙動が一貫した状態で維持されるため、まとめてクラスタリングされる傾向にある。したがって、大部分がマルウェアから得られたシーケンスを含むクラスタ(「マルウェアクラスタ」と呼ばれる)は、単一のマルウェアファミリ、例えば、ポリモーフィズム、共通のコードベースまたは別の関係性を通じて関連付けられる一連のマルウェアの挙動を説明するものと推定される。
【0039】
クラスタ分析モジュール322は、マルウェアクラスタを分析し、クラスタに代理されるファミリ内のマルウェアの検出に有用な挙動サブシーケンスを特定する。クラスタに代理されるマルウェアファミリに対するそのようなサブシーケンスを見出すため、モジュール322は、そのクラスタ内の挙動シーケンスのすべてに共通の1つまたは複数のサブシーケンスを特定する。言い換えれば、モジュール322は、クラスタ内の挙動シーケンスのすべてにおいて見出される挙動シーケンスの1つまたは複数の部分を特定する。あるいは、クラスタがマルウェアとグッドウェアの両方を含む実施形態では、クラスタ分析モジュール322は、クラスタ内のマルウェア挙動シーケンスのみに共通の1つまたは複数の挙動サブシーケンスを特定する。クラスタ内の挙動シーケンスに共通の挙動サブシーケンスは、行動シグネチャを作成できる候補対象を代表するため、本明細書では「候補シーケンス」と呼ばれる。
【0040】
一実施形態では、クラスタ析モジュール322は、サブシーケンスが閾値長さより長い場合にのみ、サブシーケンスを候補対象として特定する。例えば、モジュール322は、10を超える挙動を含む候補シーケンスを特定することができ、ここでの「挙動」はAPI呼び出しまたはオペレーションである。この方法では、クラスタ析モジュール322は、候補対象がマルウェアファミリに限ったことではないため、短過ぎて誤判定のマルウェア検出をもたらす可能性がある候補シーケンスを除外する。
【0041】
複数の候補シーケンスが存在する場合は、クラスタ分析モジュール322の実施形態は、候補対象を評価し、クラスタ内の挙動シーケンスの中で最も早期に起こる候補対象を特定する。異なる候補対象は、挙動シーケンスの異なる場所で起こり得る。ある候補対象がクラスタ内の挙動シーケンスの終了間近で起こる傾向にあり得る一方で、別の候補対象は挙動シーケンスの開始間近で起こる傾向にあり得る。この状況では、クラスタ分析モジュール322は、より早期に現れた候補シーケンスを、ファミリ内のマルウェアの検出に使用するシーケンスとして選択する。より早期のシーケンスを使用することは、クライアント116側でのマルウェアの早期検出を可能にするため、有利である。他の実施形態は、追加のおよび/または異なる基準を使用して、複数の候補シーケンスの中からシーケンスを選択する。
【0042】
シグネチャ作成モジュール324は、クラスタ分析モジュール322によって選択された候補シーケンスに基づいて行動シグネチャを作成する。所定のクラスタに対して選択された候補シーケンスの場合、シグネチャ作成モジュール324は、候補シーケンスをその挙動トレース形式に変換し返す。この変換は、場合によりパラメータの正規化を維持する一方で、候補シーケンス内の任意のオペレーションを拡大して、元の挙動シーケンスに戻す工程を伴う。シグネチャ作成モジュール324は、変換された候補シーケンスから行動シグネチャを生成する。行動シグネチャは、対応するクラスタに代表されるマルウェアファミリによって実行された挙動のシーケンスについて説明する。したがって、クライアント112のセキュリティモジュール116でシグネチャを使用して、クライアント側でマルウェアファミリのインスタンスを検出することができる。この様式では、シグネチャ作成モジュール324の実施形態は、マルウェアクラスタのすべてまたは選択されたサブセットに対応するシグネチャを作成する。
【0043】
シグネチャ更新モジュール326は、マルウェアデータセット312に追加された新しいマルウェアサンプルの観点から行動シグネチャを更新する。一実施形態では、シグネチャ更新モジュール326は、シグネチャ生成モジュール118の他のモジュールを使用して、新しいマルウェアをカバーするシグネチャを効果的に生成する。新しいマルウェアサンプルがマルウェアデータセット312に追加されると、シグネチャ更新モジュール326は、挙動収集モジュール316およびトレース正規化モジュール318を使用して、新しいマルウェアサンプルに対する挙動シーケンスを生成する。また、シグネチャ更新モジュール326は、クラスタリングモジュール320を使用して、新しい挙動シーケンスが既存のクラスタの1つと整合する(クラスタリングする)かどうか判断する。
【0044】
新しい挙動シーケンスが既存のクラスタと整合する場合、シグネチャ更新モジュール326は、クラスタ分析モジュール322モジュールを使用して、新しく追加された挙動シーケンスの観点からクラスタを分析し、必要ならば、新しい候補シーケンスを生成する。一実施形態では、この分析は、現行の選択された候補シーケンス(すなわち、クラスタに対する行動シグネチャが生成された候補シーケンス)が、新しいマルウェアサンプルに対する挙動シーケンスについても説明するかどうか判断する工程を伴う。説明する場合は、クラスタに対する既存の行動シグネチャを使用して新しいマルウェアを検出することができ、クラスタに対するシグネチャを更新する必要はない。
【0045】
現行の選択された候補シーケンスが新しい挙動シーケンスについて説明しない場合は、シグネチャ更新モジュール326は、クラスタ分析モジュール322を使用して、クラスタに対する新しい候補シーケンスを生成する。新しい候補シーケンスは、新しいマルウェアサンプルの挙動シーケンスおよび既にクラスタ内に存在していた挙動シーケンスに共通である。次いで、シグネチャ更新モジュール326は、クラスタ分析モジュール322を使用して、新しい候補シーケンスの中から選択し、シグネチャ作成モジュール324を使用して、選択された候補シーケンスに基づいてクラスタに対する新しい行動シグネチャを生成する。シグネチャ生成モジュール118は、クライアント112のセキュリティモジュール116にこの新しい行動シグネチャを分配する。
【0046】
新しい挙動シーケンスが既存のクラスタと整合しない場合、シグネチャ更新モジュール326の実施形態は、クラスタリングモジュール320を使用して挙動シーケンスに対する新しいクラスタを作成する。シグネチャ更新モジュール326は、クラスタ分析322およびシグネチャ作成324モジュールを使用して、新しいクラスタに対する候補シーケンスを特定し、候補対象の中から選択されたシーケンスに対する新しい行動シグネチャを作成する。シグネチャ生成モジュール118は、クライアント112のセキュリティモジュール116に新しいクラスタに対する行動シグネチャを分配する。
【0047】
一実施形態では、新しいマルウェアサンプルの挙動シーケンスを既存のクラスタとクラスタリングすることを試みるよりむしろ、シグネチャ更新モジュール326は、データセット312、314内のソフトウェアのすべての挙動シーケンス(新しいマルウェアに対する挙動シーケンスを含む)を再クラスタリングする。再クラスタリングは、カレンダーベースのスケジュールで、指定量の新しいマルウェアが特定されるとき(例えば、最後のクラスタリング以降、50個の新しいマルウェアサンプルが特定されるとき)および/またはそれ以外のとき、新しいマルウェアが特定されるごとに実行することができる。それに加えて、シグネチャ更新技法を使用して、新しいグッドウェアの観点からおよび/またはマルウェア312もしくはグッドウェア314のデータセットからソフトウェアが取り除かれる際、更新されたシグネチャを生成することもできる。
【0048】
図4は、行動シグネチャを生成および分配するために、セキュリティサーバ110の一実施形態によって実行される工程を示すフローチャートである。他の実施形態は、異なるおよび/または追加の工程を実行することができる。さらに、他の実施形態は、異なる順番で工程を実行することができる。その上、セキュリティサーバ110以外の実体によって工程の一部またはすべてを実行することができる。
【0049】
初めに、ソフトウェアデータセットを確立する(410)。ソフトウェアデータセットは、マルウェアデータセット312およびグッドウェアデータセット314を含む。セキュリティサーバ110は、例えば、エミュレーション環境でソフトウェアを実行することによって、データセットにソフトウェアに対する挙動トレースを収集する(412)。セキュリティサーバ110は、トレースを標準的な表現にすることによって、ソフトウェアの挙動トレースを正規化する(414)。また、正規化の一環として、セキュリティサーバ110は、トレース内の関連連続挙動をオペレーションに分類して挙動シーケンスを形成する(414)。
【0050】
セキュリティサーバ110は、例えば、類似性の尺度として編集距離を使用して、同様の挙動シーケンスをまとめてクラスタリングする(416)。セキュリティモジュール110は、マルウェアの特定に使用できる挙動の候補シーケンスを特定するため、大部分がマルウェアから得られたシーケンスを含むクラスタを分析する(418)。セキュリティモジュール110は、マルウェアクラスタに対する候補シーケンスの中から選択し、選択された候補シーケンスを使用してクラスタに代表されるマルウェアファミリに対する行動シグネチャを生成する(418)。セキュリティサーバ110は、クライアント112のセキュリティモジュール116にマルウェアクラスタに対して生成されたシグネチャを分配する(420)。
【0051】
図5は、新しいマルウェアサンプルを検出するための更新された行動シグネチャを生成および分配するために、セキュリティサーバ110の一実施形態によって実行される工程を示すフローチャートである。図5に示される工程と同様に、他の実施形態は、異なるおよび/または追加の工程を実行することができ、工程は、異なる順番でまたは異なる実体によって実行することができる。
【0052】
初めに、新しいマルウェアサンプルを特定し、マルウェアデータセット312に追加する(510)。セキュリティサーバ110は、新しいマルウェアに対する挙動トレースを収集し、挙動トレースを正規化して挙動シーケンスを生成する(512)。セキュリティサーバ110は、可能であれば、この挙動シーケンスを既存のクラスタと整合させる(514)。挙動トレースはクラスタと整合することを想定すると、セキュリティサーバ110は、クラスタを分析し、新しいマルウェアサンプルおよび必要であればクラスタ内に既に存在していた他のマルウェアを包含するクラスタに対するシグネチャを再生成する(516)。セキュリティサーバ110は、クライアント112のセキュリティモジュール116に生成されたシグネチャを分配する(518)。新しいシグネチャは、クラスタに対する以前のシグネチャの代用として分配することができる。
【0053】
したがって、本明細書に記載される技法により、マルウェアのファミリを検出できる行動シグネチャの小さく有効なセットの自動生成が可能になる。さらに、本技法は新しいマルウェアおよびマルウェア亜種が発見されると、新しいシグネチャを効果的に生成する。
【0054】
上記の説明は、ある特定の実施形態の動作を示すために含まれるものであり、本発明の範囲を限定するためのものではない。本発明の範囲は、以下の特許請求の範囲によってのみ限定されるものとする。上記の論考から、当業者には、本発明の精神および範囲によってさらに包含されるであろう多くの変形形態が明らかになるであろう。
図1
図2
図3
図4
図5