IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 日本電信電話株式会社の特許一覧

<>
  • 特許-生成装置、生成方法及び生成プログラム 図1
  • 特許-生成装置、生成方法及び生成プログラム 図2
  • 特許-生成装置、生成方法及び生成プログラム 図3
  • 特許-生成装置、生成方法及び生成プログラム 図4
  • 特許-生成装置、生成方法及び生成プログラム 図5
  • 特許-生成装置、生成方法及び生成プログラム 図6
  • 特許-生成装置、生成方法及び生成プログラム 図7
  • 特許-生成装置、生成方法及び生成プログラム 図8
  • 特許-生成装置、生成方法及び生成プログラム 図9
  • 特許-生成装置、生成方法及び生成プログラム 図10
  • 特許-生成装置、生成方法及び生成プログラム 図11
  • 特許-生成装置、生成方法及び生成プログラム 図12
  • 特許-生成装置、生成方法及び生成プログラム 図13
  • 特許-生成装置、生成方法及び生成プログラム 図14
  • 特許-生成装置、生成方法及び生成プログラム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-30
(45)【発行日】2024-10-08
(54)【発明の名称】生成装置、生成方法及び生成プログラム
(51)【国際特許分類】
   G06F 21/56 20130101AFI20241001BHJP
【FI】
G06F21/56 380
G06F21/56 360
【請求項の数】 6
(21)【出願番号】P 2023526811
(86)(22)【出願日】2021-06-11
(86)【国際出願番号】 JP2021022320
(87)【国際公開番号】W WO2022259528
(87)【国際公開日】2022-12-15
【審査請求日】2023-09-27
(73)【特許権者】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】幾世 知範
(72)【発明者】
【氏名】碓井 利宣
(72)【発明者】
【氏名】川古谷 裕平
(72)【発明者】
【氏名】岩村 誠
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2016-192139(JP,A)
【文献】米国特許出願公開第2019/0108339(US,A1)
【文献】国際公開第2015/186483(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/56
(57)【特許請求の範囲】
【請求項1】
実行環境から情報を取得するマルウェアの命令が返す値を書き換えながら前記マルウェアを複数回実行することで、前記マルウェアから、前記実行環境に依存して一意に定まる活動痕跡を抽出する抽出部と、
前記抽出部が抽出した活動痕跡の生成に関わる処理を再現するプログラムコードを前記マルウェアのプログラムコードを用いて作成する作成部と、
前記プログラムコードを実行することで、監視対象の端末の痕跡情報を生成する生成部と
を有することを特徴とする生成装置。
【請求項2】
前記抽出部は、実行環境を取得するAPI(Application Programming Interface)、システムコールまたは前記システムコール以外の命令が返す値を書き換えながらマルウェアを複数回実行することで、前記活動痕跡を抽出することを特徴とする請求項1に記載の生成装置。
【請求項3】
前記抽出部は、前記マルウェアを複数回実行し、前記マルウェアに関する複数の活動痕跡のうち、前記値を変更しない場合に変化せず、かつ、前記値を変更した場合に変化する活動痕跡を抽出することを特徴とする請求項1に記載の生成装置。
【請求項4】
仮想環境を設定し、前記マルウェアの命令をエミュレートした結果を前記仮想環境に反映し、前記エミュレートに伴うデータの読み書きのログを記録する解析部を更に有し、前記抽出部は、前記ログを基にして、前記マルウェアの命令をエミュレートする直前の仮想環境の状態を復元し、活動痕跡が観測された位置まで、前記マルウェアを実行することを特徴とする請求項3に記載の生成装置。
【請求項5】
実行環境から情報を取得するマルウェアの命令が返す値を書き換えながら前記マルウェアを複数回実行することで、前記マルウェアから、前記実行環境に依存して一意に定まる活動痕跡を抽出する抽出工程と、
前記抽出工程で抽出した活動痕跡の生成に関わる処理を再現するプログラムコードを前記マルウェアのプログラムコードを用いて作成する作成工程と、
前記プログラムコードを実行することで、監視対象の端末の痕跡情報を生成する生成工程と
コンピュータが実行することを特徴とする生成方法。
【請求項6】
実行環境から情報を取得するマルウェアの命令が返す値を書き換えながら前記マルウェアを複数回実行することで、前記マルウェアから、前記実行環境に依存して一意に定まる活動痕跡を抽出する抽出ステップと、
前記抽出ステップで抽出した活動痕跡の生成に関わる処理を再現するプログラムコードを前記マルウェアのプログラムコードを用いて作成する作成ステップと、
前記プログラムコードを実行することで、監視対象の端末の痕跡情報を生成する生成ステップと
をコンピュータに実行させるための生成プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、生成装置、生成方法及び生成プログラムに関する。
【背景技術】
【0002】
サイバー攻撃の高度化・巧妙化に伴い、ファイルハッシュ値やシグネチャに基づいた従来型のアンチウイルスソフトでマルウェアへの感染を検知することは困難となってきている。同様に、既知の悪性通信先や通信内容に基づいた従来のネットワーク監視でマルウェア感染を検知することも困難となってきている。
【0003】
このため、プログラムのふるまいを監視するEDR(Endpoint Detection and Response)の普及が進んでいる。EDRは、マルウェアに感染したことを高い確度で示す痕跡情報(IoC: Indicator of Compromise)と監視しているプログラムのふるまいを照らし合わせることでマルウェアへの感染を検知する機能を持つ。この機能により、未知のファイルハッシュ値を持つマルウェアや正規サイトと通信するマルウェアであっても、作成したファイルのパスや起動したプロセスのコマンドライン引数といったプログラムの活動痕跡に特徴があり、IoCと合致すればEDRはプログラムをマルウェアだと判定することができる。
【0004】
IoCのカバレッジや精度がEDRとしての検知能力を左右する。このため、IoCの作成にあたっては、正規ソフトウェアを検知しないよう注意を払いつつ、マッチングに使用できる限られた計算リソースの中でより多くのマルウェアを捉えられるようにIoCを作成することが求められる。これまでに、解析システム上で観測したマルウェアの活動痕跡からIoCを自動生成する技術として非特許文献1や非特許文献2が提案されている。これらの技術では、観測された活動痕跡をクラスタリングし、正規表現を用いて集約することで、クラスタ内の活動痕跡を捉える汎用的なIoCを生成している。
【先行技術文献】
【非特許文献】
【0005】
【文献】Roberto Paleari, Lorenzo Martignoni, Emanuele Passerini, Drew Davidson, Matt Fredrikson, Jon Giffin, and Somesh Jha, "Automatic Generation of Remediation Procedures for Malware Infections", In Proceedings of the 19th USENIX Conference on Security, 2010
【文献】Yuma Kurogome, Yuto Otsuki, Yuhei Kawakoya, Makoto Iwamura, Syogo Hayashi, Tatsuya Mori, and Koushik Sen, "EIGER: Automated IOC Generation for Accurate and Interpretable Endpoint Malware Detection", In Proceedings of the 35th Annual Computer Security Applications Conference, 2019
【発明の概要】
【発明が解決しようとする課題】
【0006】
マルウェアの活動痕跡は、実行環境に依存して一意に定まるものと、実行環境に依存して一意に定まらないものに分類できる。前者については、監視対象の端末ごとに作成することで、最小限の正規表現しか用いない簡潔なIoCにすることが可能である。しかしながら、非特許文献は活動痕跡の特徴を考慮していないため、実行環境に依存して一意に定まる活動痕跡に対しても、正規表現を用いた抽象化に起因する過検知が発生する上、マッチングに時間がかかるという問題があった。
【0007】
実行環境に依存して一意に定まる活動痕跡を検知するIoCを監視対象端末ごとに作成するには、マルウェアの活動痕跡が実行環境に依存して一意に定まるものであることを特定した上で、当該活動痕跡を生成する処理が監視対象端末上で行われた場合に観測される活動痕跡を、監視対象端末を感染させることなく調査する必要がある。
【0008】
本発明は、上記に鑑みてなされたものであって、仕様書の作成元となる検討資料の抽出精度を向上させることができる生成装置、生成方法及び生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決し、目的を達成するために、本発明に係る生成装置は、実行環境から情報を取得するマルウェアの命令が返す値を書き換えながら前記マルウェアを複数回実行することで、前記マルウェアから、前記実行環境に依存して一意に定まる活動痕跡を抽出する抽出部と、前記抽出部が抽出した活動痕跡の生成に関わる処理を再現するプログラムコードを前記マルウェアのプログラムコードを用いて作成する作成部と、前記プログラムコードを実行することで、監視対象の端末の痕跡情報を生成する生成部とを備える。
【発明の効果】
【0010】
実行環境に依存して一意に定まる活動痕跡を検知する監視対象端末専用のIoCを作成することができるため、一意に定まる活動痕跡が正規ソフトウェアの活動痕跡と重複しなければ、マッチングの段階における見逃しや過検知を無くした上で高速にマッチングすることが可能となる。
【図面の簡単な説明】
【0011】
図1図1は、本実施例に係る痕跡情報生成システムの一例を示す図である。
図2図2は、本実施例に係る痕跡情報生成装置の構成を示す機能ブロック図である。
図3図3は、マルウェアDBのデータ構造の一例を示す図である。
図4図4は、解析ログDBの管理テーブルのデータ構造の一例を示す図である。
図5図5は、解析ログDBのログテーブルのデータ構造の一例を示す図である。
図6図6は、環境依存痕跡DBのデータ構造の一例を示す図である。
図7図7は、解析部の処理手順を示すフローチャート(1)である。
図8図8は、解析部の処理手順を示すフローチャート(2)である。
図9図9は、抽出部の処理手順を示すフローチャート(1)である。
図10図10は、抽出部の処理手順を示すフローチャート(2)である。
図11図11は、作成部の処理手順を示すフローチャートである。
図12図12は、痕跡情報生成装置の生成部と監視対象端末のエージェントの処理手順を示すフローチャートである。
図13図13は、生成部が生成するIoCの一例を示す図である。
図14図14は、本実施例に係る痕跡情報生成装置の処理手順を示すフローチャートである。
図15図15は、痕跡情報生成プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【0012】
以下に、本願の開示する生成装置、生成方法及び生成プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例
【0013】
図1は、本実施例に係る痕跡情報生成システムの一例を示す図である。図1に示すように、この痕跡情報生成システムは、痕跡情報生成装置100と、監視対象端末50a,50b,50cとを有する。痕跡情報生成装置100と、監視対象端末50a,50b,50cとは、ネットワーク30を介して相互に接続される。痕跡情報生成装置100は、生成装置の一例である。
【0014】
本実施例では一例として、監視対象端末50a,50b,50cを示すが、痕跡情報生成システムには、他の監視対象端末が含まれていてもよい。監視対象端末50a~50cをまとめて、監視対象端末50と表記する。
【0015】
痕跡情報生成装置100は、実行環境の情報を取得するAPI(Application Programming Interface)やシステムコールが返す値を書き換えながら複数回マルウェアを実行することで、マルウェアの活動痕跡が実行環境に依存して一意に定まる痕跡であることを特定した上で、活動痕跡の生成に関わる処理のみを再現するプログラムコードを、マルウェアのプログラムコードを用いて生成する。痕跡情報生成装置100は、生成したプログラムコードを、監視対象端末50にて実行することで、監視対象端末50がマルウェアに感染した場合の活動痕跡を事前に明らかにし、監視対象端末50専用のIoCを生成する。
【0016】
図1に示した痕跡情報生成装置100の構成の一例について説明する。図2は、本実施例に係る痕跡情報生成装置の構成を示す機能ブロック図である。図2に示すように、痕跡情報生成装置100は、通信部110、入力部120、表示部130、記憶部140、制御部150を有する。
【0017】
通信部110は、ネットワーク30等を介して接続された監視対象端末50との間で、各種情報を送受信する通信インタフェースである。通信部110は、NIC(Network Interface Card)等で実現され、LAN(Local Area Network)やインターネットなどの電気通信回線を介した監視対象端末50と制御部150との間の通信を行う。
【0018】
入力部120は、痕跡情報生成装置100の操作者からの各種操作を受け付ける入力インタフェースである。例えば、キーボードやマウス等の入力デバイスによって構成される。
【0019】
表示部130は、制御部150から取得した情報を出力する出力デバイスであり、液晶ディスプレイなどの表示装置、プリンター等の印刷装置等によって実現される。
【0020】
記憶部140は、マルウェアDB141、解析ログDB142、環境依存痕跡DB143、生成プログラムDB144を有する。記憶部140は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。
【0021】
マルウェアDB141は、マルウェアに関する情報を記録するDBである。図3は、マルウェアDBのデータ構造の一例を示す図である。図3に示すように、マルウェアDB141は、マルウェアIDと、プログラムコードと、ファイルタイプと、解析済みフラグとを有する。
【0022】
マルウェアIDは、解析対象のマルウェアを識別する識別子である。プログラムコードは、マルウェアのプログラムコード本体である。ファイルタイプは、マルウェアのプログラムコードのファイルタイプを示す。解析済みフラグは、該当するマルウェアが解析済みか否かを示すフラグ値である。解析済みの場合には「on」が設定され、解析済みでない場合には「off」となる。
【0023】
解析ログDB142は、マルウェアをエミュレートして解析した結果を記録するDBである。管理テーブル142aと、ログテーブル142bとを有する。
【0024】
図4は、解析ログDBの管理テーブルのデータ構造の一例を示す図である。図4に示すように、この管理テーブル142aは、解析ID、マルウェアID、設定ファイルを有する。解析IDは、解析タスクの識別子である。マルウェアIDは、マルウェアDB141に設定されるマルウェアIDに対応するマルウェアの識別子である。設定ファイルは、解析に使用される設定ファイルを示す。
【0025】
図5は、解析ログDBのログテーブルのデータ構造の一例を示す図である。図5に示すように、ログテーブル142bは、解析ID、ログID、PID、TID、命令タイプ、操作タイプ、アドレス、命令、レジスタ(ID、値)、メモリ(アドレス、サイズ、値)を有する。
【0026】
解析IDは、解析タスクの識別子である。ログIDは、解析タスク内におけるログの識別子である。PIDは、プロセスの識別子である。TIDは、スレッドの識別子である。命令タイプは、アセンブリ命令、API、システムコールのいずれかを示す情報である。
【0027】
操作タイプは、レジスタもしくはメモリに対して、読み書きのどちらを実行したのかを示す情報である。アドレスは、実行アドレスを示す。命令には、アセンブリ命令であれば逆アセンブリした結果、APIであればAPI名が記載される。
【0028】
命令がレジスタの操作に関するものである場合には、レジスタを識別するIDと、値が記録される。命令がメモリの操作に関するものである場合には、メモリのアドレス、サイズ、値が記録される。
【0029】
環境依存痕跡DB143は、実行環境に依存して一意に定まるマルウェアの活動痕跡の情報を記録するDBである。図6は、環境依存痕跡DBのデータ構造の一例を示す図である。図6に示すように、環境依存痕跡DB143は、痕跡ID、マルウェアID、解析ID、ログID、痕跡タイプ、環境依存痕跡、依存関係命令を有する。依存関係命令には、ログID、タイプ、命令名、引数、型が含まれる。
【0030】
痕跡IDは、抽出された活動痕跡の識別子である。マルウェアIDは、マルウェアの識別子である。解析IDは、解析タスクの識別子である。ログIDは、解析タスクにおけるログの識別子である。たとえば、ログIDには、活動痕跡に対応するログのうち、先頭のログを識別するログIDが設定される。環境依存痕跡は、解析ログから抽出した活動痕跡の具体値である。
【0031】
ここで、依存関係命令には、ログID、タイプ、命令名、引数、型が含まれる。依存関係命令に含まれるログIDは、解析タスクにおけるログの識別子であり、該当する命令が実行されたログIDを示す。タイプは、APIやシステムコールといった命令の種別を示す。命令名は、命令の名称を示し、APIの場合は、API名が設定される。引数は、何番目の引数が活動痕跡に影響のある戻り値を保持するのかを示す。型は、引数の型情報を示す。
【0032】
たとえば、図6の環境依存痕跡DB143では、痕跡ID「E1」の活動痕跡の痕跡タイプは「ファイルパス」であり、命令名「GetVolumeInformationW」の第「4」引数が指し示す先のデータによって、値が変わることが示されている。
【0033】
生成プログラムDB144は、活動痕跡生成プログラムを記録するDBである。活動痕跡生成プログラムは、後述する作成部153によって作成されるプログラムである。
【0034】
図2の説明に戻る。制御部150は、解析部151、抽出部152、作成部153、生成部154を有する。制御部150は、CPU(Central Processing Unit)等を用いて実現される。
【0035】
解析部151は、マルウェアDB141に記録されたマルウェアを動的に解析し、解析結果を解析ログDB142に記録する。解析部151は、プロセス単位の仮想化を行い、OS(Operating System)やハードウェアが提供する機能をエミュレートしながら解析を行う。解析部151は、図7図8を用いて、解析部151の処理を説明する。
【0036】
図7および図8は、解析部の処理手順を示すフローチャートである。図7に示すように、痕跡情報生成装置100の解析部151は、設定ファイルに従って仮想環境を初期化する(ステップS101)。解析部151が実行する初期化では、マルウェアを仮想メモリの所定のアドレスに展開するとともに、命令ポインタの設定といった仮想CPUの初期値設定、仮想ファイルシステムに設置するファイルや仮想OS上に存在させるプロセスなどの仮想オブジェクトの初期化を行う。
【0037】
解析部151は、プログラムコードの実行開始位置を設定する(ステップS102)。解析部151は、命令ポインタの指し示すアドレスから命令をフェッチする(ステップS103)。
【0038】
解析部151は、フェッチした命令が有効な命令であるか否かを判定する(ステップS104)。解析部151は、フェッチした命令が有効な命令でない場合には(ステップS104,No)、図8のステップS113に移行する。
【0039】
一方、解析部151は、フェッチした命令が有効な命令である場合には(ステップS104,Yes)、命令がシステムコールであるか否かを判定する(ステップS105)。解析部151は、命令がシステムコールでない場合には(ステップS105,No)、ステップS110に移行する。
【0040】
一方、解析部151は、命令がシステムコールである場合には(ステップS105,Yes)、システムコールをエミュレートして仮想環境に結果を反映する(ステップS106)。解析部151は、読み書きした結果をログとして、解析ログDB142に記録する(ステップS107)。
【0041】
解析部151は、実行を終了するシステムコールであるか否かを判定する(ステップS108)。解析部151は、実行を終了しないシステムコールの場合には(ステップS108,No)、ステップS112に移行する。
【0042】
一方、解析部151は、実行を終了するシステムコールの場合には(ステップS108,Yes)、プロセス/スレッドが他にもあるか否かを判定する(ステップS109)。解析部151は、プロセス/スレッドが他にない場合には(ステップS109,No)、処理を終了する。解析部151は、プロセス/スレッドが他ある場合には(ステップS109,Yes)、ステップS112に移行する。
【0043】
ステップS110の処理について説明する。解析部151は、仮想CPUで命令をエミュレートして仮想環境に結果を反映する(ステップS110)。解析部151は、読み書きした結果をログとして、解析ログDB142に記録する(ステップS111)。解析部151は、次に実行する位置を呼び元の次の命令に設定し(ステップS112)、ステップS103に移行する。
【0044】
図8のステップS113の説明に移行する。解析部151は、実行位置がAPIの開始位置であるか否かを判定する(ステップS113)。解析部151は、実行位置がAPIの開始位置でない場合には(ステップS113,No)、処理を終了する。
【0045】
解析部151は、実行位置がAPIの開始位置である場合には(ステップS113,Yes)、APIをエミュレートして仮想環境に結果を反映する(ステップS114)。
【0046】
解析部151は、読み書きしたログを、解析ログDB142に記録する(ステップS115)。解析部151は、実行を終了するAPIであるか否かを判定する(ステップS116)。解析部151は、実行を終了するAPIである場合には(ステップS116,Yes)、図7のステップS109に移行する。解析部151は、実行を終了するAPIでない場合には(ステップS116,No)、図7のステップS112に移行する。
【0047】
ここで、解析部151は、ステップS106、S110、S114において、システムコール、システムコール以外の命令またはAPIをエミュレートする場合、エミュレート開始時点での仮想環境の状態や、設定ファイル(管理テーブル142aの設定ファイル)の内容に基づいて、処理を行う。
【0048】
たとえば、解析部151は、「システムコール」、「アセンブリ命令」または「API」をエミュレートし、仮想レジスタAに値10が入った状態で、仮想レジスタAの値を読み取ろうとした場合には、値10を返す。解析部151は、設定ファイルにて仮想ファイルシステムのファイルパスAにファイルAを置く指定があった場合、該当ファイルが削除されていなければ該当ファイルを開く。解析部151が、APIのエミュレートを行う場合、該当ファイルのハンドルを返し、既にファイルが消されている場合には新しいファイルへのハンドルを返す。
【0049】
解析部151は、ステップS107、S111、S115において、解析ログDBにログを記録する場合には、ログIDを割り当て、PID、TID、命令タイプ、操作タイプ、アドレス、命令、レジスタ、メモリの情報を、解析ログDB142のログテーブル142bに登録する。
【0050】
図示を省略するが、解析部151は、ログIDと対応付けて、活動痕跡の情報を、解析ログDB142に登録する。ここで、「活動痕跡」とは、マルウェアを実行することで解析時に仮想環境に加えられた変更である。たとえば、活動痕跡として、書き込みをしたファイルのファイルパス、作成したレジストリのレジストリパス、起動したプロセスのプロセスコマンドラインが該当する。
【0051】
続いて、抽出部152について説明する。抽出部152は、解析ログDB142に記録されたマルウェアの解析ログを取得し、ログから活動痕跡を取得し、図9および図10に示す処理を実行することで、活動痕跡が環境依存の活動痕跡であるか否かを判定する。抽出部152は、環境依存の活動痕跡について、該当する活動痕跡が載ったログ、依存関係にある命令/API/システムコールのログを、環境依存痕跡DB143に記録する。
【0052】
図9および図10は、抽出部の処理手順を示すフローチャートである。図9に示すように、痕跡情報生成装置100の抽出部152は、解析ログDB142から1つのマルウェアの解析ログを取得する(ステップS201)。抽出部152は、解析ログから活動痕跡を取得する(ステップS202)。
【0053】
抽出部152は、活動痕跡が1つ以上存在するか否かを判定する(ステップS203)。抽出部152は、活動痕跡が1つ以上存在しない場合には(ステップS203,No)、処理を終了する。
【0054】
一方、抽出部152は、活動痕跡が1つ以上存在する場合には(ステップS203,Yes)、未処理の活動痕跡が存在するか否かを判定する(ステップS204)。抽出部152は、未処理の活動痕跡が存在しない場合には(ステップS204,No)、処理を終了する。
【0055】
一方、抽出部152は、未処理の活動痕跡が存在する場合には(ステップS204,Yes)、未処理の活動痕跡を1つ選択する(ステップS205)。抽出部152は、活動痕跡が載ったログを遡り探索の起点に設定する(ステップS206)。
【0056】
抽出部152は、遡れるログがまだあるか否かを判定する(ステップS207)。抽出部152は、遡れるログがない場合には(ステップS207,No)、ステップS204に移行する。
【0057】
一方、抽出部152は、遡れるログがまだある場合には(ステップS207,Yes)、図10のステップS208に移行する。
【0058】
図10の説明に移行する。抽出部152は、1つ前のログを遡って取得する(ステップS208)。抽出部152は、取得したログが、環境の情報を取得する命令/API/システムコールのログであるか否かを判定する(ステップS209)。抽出部152は、取得したログが、環境の情報を取得する命令/API/システムコールのログでない場合には(ステップS209,No)、図9のステップS207に移行する。
【0059】
一方、抽出部152は、取得したログが、環境の情報を取得する命令/API/システムコールのログである場合には(ステップS209,Yes)、抽出部152は、当該ログが記録されたエミュレートの直前の仮想環境の状態を復元する(ステップS210)。
【0060】
抽出部152は、「エミュレートの結果として返す値を変更する場合」と、「エミュレートの結果として返す値を変更しない場合」とをそれぞれ1回ずつ(合計2回以上)実行し、活動痕跡が観測された位置まで、マルウェアのプログラムコードを実行する(ステップS211)。
【0061】
抽出部152は、活動痕跡が観測された位置まで実行できたか否かを判定する(ステップS212)。抽出部152は、活動痕跡が観測された位置まで実行できない場合には(ステップS212,No)、図9のステップS207に移行する。
【0062】
一方、抽出部152は、活動痕跡が観測された位置まで実行できた場合には(ステップS212,Yes)、返す値を変更した場合にのみ活動痕跡に変化が見られたか否かを判定する(ステップS213)。抽出部152は、返す値を変更した場合にのみ活動痕跡に変化が見られない場合には(ステップS213,No)、図9のステップS207に移行する。
【0063】
抽出部152は、返す値を変更した場合にのみ活動痕跡に変化が見られた場合には(ステップS213,Yes)、選択中の活動痕跡を環境依存の活動痕跡として特定する(ステップS214)。抽出部152は、環境依存であることが判明した活動痕跡について、当該活動痕跡が載ったログを環境依存痕跡DBに記録し(ステップS215)、図9のステップS207に移行する。
【0064】
上記の図9図10で説明したように、抽出部152は、活動痕跡の取得元であるログを起点にログを1つずつ遡り、実行環境から情報を取得する命令やAPI、システムコールのログに到達した場合、当該命令やAPI、システムコールに依存して活動痕跡の値が変わるかを確認する。確認するため、当該命令やAPI、システムコールをエミュレーションする直前の仮想環境の状態を解析ログの情報から復元し、活動痕跡が観測された位置までマルウェアのプログラムコードを実行する。
【0065】
抽出部152は、活動痕跡が環境依存であるか否かを判定するため、確認する対象となる命令やAPI、システムコールが返す値を変更する場合と変更しない場合をそれぞれN回実行する。抽出部152は、少なくとも、確認する対象となる命令やAPI、システムコールが返す値を変更する場合と変更しない場合を1回ずつ(計2回)実行すればよい。
【0066】
抽出部152は、返す値を変更しない場合に観測される活動痕跡に変化が無く、返す値を変更した場合に観測される活動痕跡に変化があった場合には、該当する活動痕跡は環境依存の活動痕跡であり、活動痕跡は当該命令やAPI、システムコールに依存していると判定する。
【0067】
抽出部152は、環境に依存する活動痕跡の情報を、環境依存痕跡DB143に記録する。たとえば、抽出部152は、痕跡ID、マルウェアID、解析ID、ログID(活動痕跡に対応するログのうち、先頭のログのログID)、痕跡タイプ、環境依存痕跡、依存関係命令の情報を、環境依存痕跡DB143に記録する。
【0068】
続いて、作成部153について説明する。作成部153は、マルウェアDB141、解析ログDB142、環境依存痕跡DB143を基にして、環境依存の活動痕跡を生成するプログラムコードを作成する。
【0069】
図11は、作成部の処理手順を示すフローチャートである。図11に示すように、痕跡情報生成装置100の作成部153は、環境依存痕跡DB143から、環境依存した活動痕跡の情報に関するエントリを取得する(ステップS301)。
【0070】
作成部153は、取得したエントリに関連する解析ログを解析ログDB142から取得する(ステップS302)。作成部153は、取得したエントリに関連するマルウェアをマルウェアDB141から取得する(ステップS303)。
【0071】
作成部153は、活動痕跡が載ったログを起点に、後方プログラムスライスを実施し、活動痕跡の生成に関連するコードのみを抽出する(ステップS304)。作成部153は、返す値の変更により活動痕跡が変更になることが判明している命令/API/システムコールをシンボル化して、活動痕跡が観測されたログと同じ位置までシンボリック実行をする(ステップS305)。
【0072】
作成部153は、スライス結果の実行開始地点における仮想メモリ、仮想CPUの状態を復元する(ステップS306)。作成部153は、活動痕跡が観測された位置に至る経路に含まれておらず、スライス結果に含まれないコードを何もしない命令(NOP)に変更する(ステップS307)。作成部153は、仮想メモリ、仮想CPUの状態を活動痕跡生成プログラムとして、生成プログラムDB144に記録する(ステップS308)。
【0073】
続いて、生成部154について説明する。生成部154は、生成プログラムDB144に記録された活動痕跡生成プログラムを、監視対象端末50に送信し、監視対象端末50のエージェントに、活動痕跡生成プログラムを実行させる。生成部154は、エージェントが活動痕跡生成プログラムを実行した結果生成される活動痕跡を収集し、IoCを生成する。
【0074】
図12は、痕跡情報生成装置の生成部と監視対象端末のエージェントの処理手順を示すフローチャートである。図12に示す例では、監視対象端末50aのエージェントを用いて説明を行う。図12に示すように、痕跡情報生成装置100の生成部154は、生成プログラムDB144から活動痕跡生成プログラムを取得する(ステップS401)。
【0075】
生成部154は、活動痕跡生成プログラムを監視対象端末50aのエージェントに送信する(ステップS402)。監視対象端末50aのエージェントは、活動痕跡生成プログラムを受信する(ステップS403)。
【0076】
監視対象端末50aのエージェントは、仮想環境上に活動痕跡生成プログラムを展開する(ステップS404)。監視対象端末50aのエージェントは、活動痕跡生成プログラムを実行する(ステップS405)。
【0077】
監視対象端末50aのエージェントは、活動痕跡生成プログラムの実行結果となる活動痕跡を生成部154に送信する(ステップS406)。生成部154は、活動痕跡を受信する(ステップS407)。生成部154は、IoCを生成する(ステップS408)。
【0078】
なお、監視対象端末50aのエージェントが、活動痕跡生成プログラムを実行する場合、仮想OSや仮想ハードウェアから情報を取得する命令/API/システムコールについては、監視対象端末50aの実データを読み取るが、監視対象端末の記憶部に書き込む場合には、仮想環境に閉じた処理を実行させる。
【0079】
図12で説明した処理では、生成部154は、監視対象端末50aのエージェントを用いて説明を行ったが、同様にして、監視対象端末50bのエージェント、監視対象端末50cのエージェントを用いて、IoCを生成する。
【0080】
図13は、生成部が生成するIoCの一例を示す図である。IoC-aは、監視対象端末50aのエージェントに、活動痕跡生成プログラムを実行させた結果を基にして生成されたIoCである。IoC-bは、監視対象端末50bのエージェントに、活動痕跡生成プログラムを実行させた結果を基にして生成されたIoCである。IoC-cは、監視対象端末50cのエージェントに、活動痕跡生成プログラムを実行させた結果を基にして生成されたIoCである。
【0081】
図13に示すIoCは、監視対象端末50上でマルウェアが実行された場合の活動痕跡を特定し、それぞれOpenIOCフォーマットに則ったIoCとして出力した場合の例を示している。IndicatorItem conditionタグが検査時の比較方法、Contentタグが検査に用いる具体的な条件である。
【0082】
なお、上記の説明では、生成部154が、活動痕跡生成プログラムを監視対象端末50のエージェントに送信して、監視対象端末50から活動痕跡を取得していたがこれに限定されるものではない。生成部154が痕跡情報生成装置100上で、活動痕跡生成プログラムを実行して、疑似的に監視対象端末50の活動痕跡を取得してもよい。この場合、活動痕跡生成プログラムは、端末対象装置50には送信されない。
【0083】
上記のように、活動痕跡生成プログラム(プログラムコード)を監視対象端末50で実行させるのは、活動痕跡生成プログラム中に含まれる環境情報を取得する命令(APIやシステムコールも含む)が、各監視対象端末50でどういう結果を返すのかが分からないからである。このため、監視対象端末50がどういう結果を返すのかが事前に判明している場合については、活動痕跡生成プログラムを監視対象端末50に配布しなくてもよい。この場合、生成部154が、活動痕跡生成プログラムを実行して、監視対象端末50で返すと想定される情報を返すことで代用可能である。
【0084】
監視対象端末50で返すと想定される情報の具体例としては、NICのMACアドレス、HDDのGUIDを取得するAPIやシステムコールが該当する。監視対象端末50ごと(監視対象端末50に備わっているハードウェアごと)に、一意に定まるため、作成部153で作成した活動痕跡生成プログラムにこれらの情報を取得するAPIやシステムコールしか含まれておらず、各監視対象端末50についてどのAPIに対してどの値を返せばよいかのDBを有していれば、その活動痕跡生成プログラムは監視対象端末50で実行することなく、生成部154で処理(活動痕跡を取得する処理)を完結させることができる。
【0085】
次に、本実施例に係る痕跡情報生成装置100の処理手順の一例について説明する。図14は、本実施例に係る痕跡情報生成装置の処理手順を示すフローチャートである。図14に示すように、痕跡情報生成装置100の解析部151は、マルウェアDBに記録されたマルウェアを動的に解析する(ステップS501)。ステップS501の具体的な処理手順は、図7図8で説明した処理手順に対応する。
【0086】
痕跡情報生成装置100の抽出部152は、マルウェアの解析ログを基にして、環境依存の活動痕跡を抽出する(ステップS502)。ステップS502の具体的な処理手順は、図9図10で説明した処理手順に対応する。
【0087】
痕跡情報生成装置100の作成部153は、環境依存の活動痕跡を生成する活動痕跡生成プログラムを作成する(ステップS503)。ステップS503の具体的な処理手順は、図11で説明した処理手順に対応する。
【0088】
痕跡情報生成装置100の生成部154は、監視対象端末で、活動痕跡生成プログラムを実行させ、IoCを生成する(ステップS504)。ステップS504の具体的な処理手順を、図12で説明した処理手順に対応する。
【0089】
次に、本実施例に係る痕跡情報生成装置100の効果について説明する。痕跡情報生成装置100は、実行環境の情報を取得するAPIやシステムコールが返す値を書き換えながら複数回マルウェアを実行することで、マルウェアの活動痕跡が実行環境に依存して一意に定まる痕跡であることを特定した上で、活動痕跡の生成に関わる処理のみを再現するプログラムコードを、マルウェアのプログラムコードを用いて生成する。痕跡情報生成装置100は、生成したプログラムコードを、監視対象端末50にて実行することで、監視対象端末50がマルウェアに感染した場合の活動痕跡を事前に明らかにし、監視対象端末50専用のIoCを生成する。これによって、実行環境に依存して一意に定まる活動痕跡を検知する監視対象端末専用のIoCを作成することができるため、一意に定まる活動痕跡が正規ソフトウェアの活動痕跡と重複しなければ、マッチングの段階における見逃しや過検知を無くした上で高速にマッチングすることが可能となる。
【0090】
痕跡情報生成装置100は、マルウェアを複数回実行し、マルウェアに関する複数の活動痕跡のうち、返す値を変更しない場合に変化せず、かつ、返す値を変更した場合に変化する活動痕跡を抽出することで、環境依存の活動痕跡を抽出することができる。
【0091】
痕跡情報生成装置100は、マルウェアの命令(命令/API/システムコール)をエミュレートした結果を仮想環境に反映し、エミュレートに伴うデータの読み書きのログを記録し、記録されたログを基にして、マルウェアの命令をエミュレートする直前の仮想環境の状態を復元し、活動痕跡が観測された位置まで、マルウェアを実行する。これによって、マルウェアを複数回実行しても、返す値を変更しない場合に変化せず、かつ、返す値を変更した場合に変化する活動痕跡を特定して、特定した活動痕跡を抽出することができる。
【0092】
図15は、痕跡情報生成プログラムを実行するコンピュータの一例を示す図である。コンピュータ1000は、たとえば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
【0093】
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、たとえば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1041に接続される。ディスクドライブ1041には、たとえば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、たとえば、マウス1051およびキーボード1052が接続される。ビデオアダプタ1060には、たとえば、ディスプレイ1061が接続される。
【0094】
ここで、ハードディスクドライブ1031は、たとえば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した各情報は、たとえばハードディスクドライブ1031やメモリ1010に記憶される。
【0095】
また、痕跡情報生成プログラムは、たとえば、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、ハードディスクドライブ1031に記憶される。具体的には、上記実施形態で説明した痕跡情報生成装置100が実行する各処理が記述されたプログラムモジュール1093が、ハードディスクドライブ1031に記憶される。
【0096】
また、痕跡情報生成プログラムによる情報処理に用いられるデータは、プログラムデータ1094として、たとえば、ハードディスクドライブ1031に記憶される。そして、CPU1020が、ハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して、上述した各手順を実行する。
【0097】
なお、痕跡情報生成プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、たとえば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、痕跡情報生成プログラムに係るプログラムモジュール1093やプログラムデータ1094は、LANやWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0098】
以上、本発明者によってなされた発明を適用した実施形態について説明したが、本実施形態による本発明の開示の一部をなす記述および図面により本発明は限定されることはない。すなわち、本実施形態に基づいて当業者等によりなされる他の実施形態、実施例および運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【0099】
100 痕跡情報生成装置
140 記憶部
141 マルウェアDB
142 解析ログDB
143 環境依存痕跡DB
144 生成プログラムDB
150 制御部
151 解析部
152 抽出部
153 作成部
154 生成部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15