JP2017102823A - 解析装置、解析方法および解析プログラム - Google Patents

解析装置、解析方法および解析プログラム Download PDF

Info

Publication number
JP2017102823A
JP2017102823A JP2015237510A JP2015237510A JP2017102823A JP 2017102823 A JP2017102823 A JP 2017102823A JP 2015237510 A JP2015237510 A JP 2015237510A JP 2015237510 A JP2015237510 A JP 2015237510A JP 2017102823 A JP2017102823 A JP 2017102823A
Authority
JP
Japan
Prior art keywords
thread
memory space
data
analysis
malware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015237510A
Other languages
English (en)
Other versions
JP6430922B2 (ja
Inventor
知範 幾世
Tomonori Ikuyo
知範 幾世
利宣 碓井
Toshinori Usui
利宣 碓井
誠 岩村
Makoto Iwamura
誠 岩村
健 矢田
Takeshi Yada
健 矢田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2015237510A priority Critical patent/JP6430922B2/ja
Publication of JP2017102823A publication Critical patent/JP2017102823A/ja
Application granted granted Critical
Publication of JP6430922B2 publication Critical patent/JP6430922B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】マルウェアに解析環境を検知されずに、OSが管理する情報を適切に収集すること。【解決手段】マルウェア解析装置10は、解析対象のマルウェア21が動作するゲストOS20上のスレッドのうち、監視対象のスレッドの動作を監視するスレッド監視部31と、監視対象のスレッドが実行されている場合に、スレッド上のメモリ空間23のデータをVMM30が書き換えることでスレッドに所定の情報を収集する処理を実行させるインジェクション部32とを有する。【選択図】図1

Description

本発明は、解析装置、解析方法および解析プログラムに関する。
近年、情報漏えいなどの被害をもたらす悪性なソフトウェア(マルウェア)が猛威を振るっている。マルウェアへの対策を講じるためには、マルウェアが具備する機能や通信先を把握するマルウェア解析が有効となるが、依然としてマルウェア解析は手動での詳細解析を必要とする部分が大きく、解析自動化への期待が高まっている。
これまでに、実行時のマルウェアの動作を監視することで解析を自動化するサンドボックスが数多く開発されてきた。サンドボックスによる動的解析は外部サーバとの通信によって発生する潜在的な脅威も明らかにできるため、非常に有効な解析手段である。その反面、マルウェアのプログラムコードを実行しているため、マルウェアによってサンドボックスを検知され、解析を回避されてしまう危険性がある。マルウェアと解析モジュールが常に同じ環境に共存している技術(例えば、非特許文献1や非特許文献2参照)では特にこの危険性が高い。
そのため、OSの外側にあたるVMM(Virtual Machine Monitor)からマルウェアを監視する仕組みが検討されている(例えば、非特許文献3参照)。VMMはマルウェアが動作するOSから隔離されているためOS上の特徴から解析システムであると検知される危険性が無い。
Claudio Guarnieri, Jurriaan Bremer, Alessandro Tanasi, "Cuckoo Sandbox," BlackHat USA , 2013, Available: https://media.blackhat.com/us-13/US-13-Bremer-Mo-Malware-Mo-Problems-Cuckoo-Sandbox-Slides.pdf Dawn Song, David Brumley, Heng Yin, Juan Caballero, Ivan Jager, Min Gyung Kang, Zhenkai Liang, James Newsome, Pongsin Poosankam, and Prateek Saxena, "Keynote Invited Paper A high-level overview covering Vine, TEMU, and Rudder," In Proceedings of the 4th International Conference on Information Systems Security, December 2008. Andrew Henderson, Aravind Prakash, Lok Kwong Yan, Xunchao Hu, Xujiewen Wang, Rundong Zhou, and Heng Yin, "Make It Work, Make It Right, Make It Fast: Building a Platform-Neutral Whole-System Dynamic Binary Analysis Platform," In the International Symposium on Software Testing and Analysis (ISSTA'14), July 2014.
しかしながら、上記の従来技術では、OSとVMMの間のセマンティックギャップが原因で、OSが管理する情報を適切に収集することができない場合があるという課題がある。つまり、マルウェアを動的解析する場合、マルウェアによって解析環境を検知されることなく、マルウェアの詳細な情報を収集できることが望ましい。しかし、マルウェアが動作する環境と解析システムが動作する環境を隔離する従来の手法では、解析環境の検知は回避できるが、OSとVMMの間のセマンティックギャップが原因でOSに依存する情報を解析中に得ることが困難という問題がある。
上述した課題を解決し、目的を達成するために、本発明の解析装置は、解析対象のマルウェアが動作するゲストOS上のスレッドのうち、監視対象のスレッドの動作を監視する監視部と、前記監視対象のスレッドが実行されている場合に、前記スレッド上のメモリ空間のデータをVMMが書き換えることで前記スレッドに所定の情報を収集する処理を実行させるインジェクション部とを有することを特徴とする。
また、本発明の解析方法は、解析装置で実行される解析方法であって、解析対象のマルウェアが動作するゲストOS上のスレッドのうち、監視対象のスレッドの動作を監視する監視工程と、前記監視対象のスレッドが実行されている場合に、前記スレッド上のメモリ空間のデータをVMMが書き換えることで前記スレッドに所定の情報を収集する処理を実行させるインジェクション工程とを含んだことを特徴とする。
また、本発明の解析プログラムは、解析対象のマルウェアが動作するゲストOS上のスレッドのうち、監視対象のスレッドの動作を監視する監視ステップと、前記監視対象のスレッドが実行されている場合に、前記スレッド上のメモリ空間のデータをVMMが書き換えることで前記スレッドに所定の情報を収集する処理を実行させるインジェクションステップとをコンピュータに実行させることを特徴とする。
本発明によれば、マルウェアに解析環境を検知されずに、OSが管理する情報を適切に収集することができるという効果を奏する。
図1は、本実施形態に係るマルウェア解析装置の概要を示す構成図である。 図2は、メモリ内容の改ざんによってどのようにスレッドに所定の処理を実施させるかを説明する図である。 図3は、メモリ内容の改ざんによってどのようにスレッドに所定の処理を実施させるかを説明する図である。 図4は、メモリ内容の改ざんによってどのようにスレッドに所定の処理を実施させるかを説明する図である。 図5は、本実施形態に係るマルウェア解析装置におけるスレッド監視部がインジェクション部に改ざんを依頼するまでの処理の流れを示すフローチャートである。 図6は、改ざん依頼を受けたインジェクション部の処理の流れを示すフローチャートである。 図7は、改ざんを実施した後のインジェクション部の処理の流れを示すフローチャートである。 図8は、情報収集などの所定の処理をスレッドに実行させている最中のメモリアクセス制御部の処理の流れを示すフローチャートである。 図9は、解析プログラムを実行するコンピュータを示す図である。
以下に、本願に係る解析装置、解析方法および解析プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態により本願に係る解析装置、解析方法および解析プログラムが限定されるものではない。
[実施形態]
以下の実施形態では、実施形態に係るマルウェア解析装置の構成及び処理の流れを順に説明し、その後、最後に実施形態による効果を説明する。
[マルウェア解析装置の構成]
まず、図1を用いて、マルウェア解析装置10の構成を説明する。図1は、本実施形態に係るマルウェア解析装置の概要を示す構成図である。図1に示すように、マルウェア解析装置10は、仮想的なハードウェアを提供するVMM30とゲストOS20によって構成される。
ゲストOS20上では解析対象となるマルウェア21と、OSに一般的に常駐している標準プロセス22が動作し、各プロセス内では1つ以上のスレッドが動作する。また、VMM30内ではスレッドの動作を監視するスレッド監視部31と、ゲストOS20上のスレッドのメモリ空間23を書き換えるインジェクション部32と、メモリアクセスを制御して仮想的なメモリ空間23を提供するメモリアクセス制御部33とが動作する。
スレッド監視部31は、解析対象のマルウェア21が動作するゲストOS20上のスレッドのうち、監視対象のスレッドの動作を監視する。具体的には、スレッド監視部31では、API(Application Programming Interface)呼び出しを監視し、特定のAPIが呼び出された場合など、所定の動作が観測された場合には、インジェクション部32にメモリ内容の改ざんを依頼する役割を担う。
例えば、スレッド監視部31は、call命令、jmp命令、ret命令に対してDBI(Dynamic Binary Instrumentation)を施すことによりAPI呼び出しおよびAPIからの戻りの監視を行う。API呼び出しの監視では、スレッド監視部31は、call命令やjmp命令の遷移先がAPIのプロローグコードのアドレスであるか否かを確認する。例えばWindows(登録商標) OSではAPIプロローグコードの位置は、DLL(Dynamic Link Library)のIMAGE_EXPORT_DIRECTORYから取得したAPIのオフセット値と、DLLがロードされたベースアドレスを加算することで特定できる。
そして、スレッド監視部31は、API呼び出しであることが確認できた場合には、戻りアドレスと引数をスタックから取得して記録する。また、スレッド監視部31は、APIを呼び出したスレッドのTID(Thread ID)をTIB(Thread Information Block)から取得する。TIBは、スレッドに関する情報を保持する構造体であり、TIDはシステム上でスレッドを一意に特定するためにスレッドに割当てられているIDである。
また、APIからの戻りの監視では、スレッド監視部31は、当該スレッドが戻りアドレスに遷移するタイミングを監視する。そして、スレッド監視部31は、スレッドが戻りアドレスに遷移する際には、APIからの返り値を収集した後、当該戻りアドレスの監視を解除する。
インジェクション部32は、監視対象のスレッドが実行されている場合に、スレッド上のメモリ空間23のデータをVMM30が書き換えることでスレッドに所定の情報を収集する処理を実行させる。また、インジェクション部32は、メモリ空間23のデータを書き換える際に、該メモリ空間23のデータのバックアップデータをVMM30内の退避領域に退避させた後、該メモリ空間23のデータの書き換えを行う。また、インジェクション部32は、所定の情報を収集する処理が終了した後、メモリ空間23のデータを書き換えられる前の状態に復元する。
メモリアクセス制御部33は、インジェクション部32によって書き換えられたメモリ空間23のデータに対する読み出しがあった場合には、仮想的なメモリ空間を提供し、バックアップデータをメモリ参照結果として返信するように制御する。つまり、例えば、メモリアクセス制御部33では、スレッドに所定の処理をさせている間、書き換えたスタックへのアクセスを制御し、他のスレッドからのアクセスの場合には仮想的なメモリ空間を見せてスタックを保護する役割を担う。
ここで、図2〜図4を用いてメモリ内容の改ざんによってどのようにスレッドに所定の処理を実施させるかを説明する。図2の例は、インジェクション前のスタックおよびEIP、ESP、EBPレジスタの様子を表している。これらのレジスタは、CPUアーキテクチャx86に用意されているレジスタであり、EIPレジスタは実行中の命令のアドレスを格納するレジスタ、ESPレジスタはスタックトップを示すレジスタ、EBPレジスタはスタックの基準点を示すレジスタである。
図2の例は、2つの引数を伴うAPI−Aを呼び出した後、呼び出し元に戻るためのret命令を実行している最中の様子である。EIPレジスタは既に戻りアドレスAに書き換わっており、スタックも巻き戻されている。次に、図3では、図2の状態に対して、1つの引数を伴うAPI−Bを実行させるためのインジェクションを行った場合のスタック、EIP、ESP、EBPレジスタの様子を表している。VMM30内の退避領域にバックアップを取得した後、元々API−A用の引数1、引数2が書き込まれていたメモリ領域にAPI−B用の引数1とダミーの戻りアドレスを設定する。ダミーの戻りアドレスへの遷移を監視しておくことで、API−Bからの戻りをフックする。
図4は、API−Bから戻りのフックから通常処理に遷移する際のスタックおよびEIP、ESP、EBPレジスタの様子を表している。API−Bから戻る際には、EIPレジスタを戻りアドレスAに設定し、VMM30内に保存しておいたバックアップを用いて、インジェクションを行う前の状態に復元する。これにより、アクセス可能な範囲にあるインジェクションの痕跡を削除する。
[マルウェア解析装置の処理の一例]
図5は、本実施形態に係るマルウェア解析装置におけるスレッド監視部がインジェクション部に改ざんを依頼するまでの処理の流れを示すフローチャートである。図5に示すように、スレッド監視部31は、現在実行されているスレッドについて、TIBからTIDを取得する(ステップS101)。
そして、スレッド監視部31は、現在実行されているスレッドが書き換えの対象となる監視対象のスレッドであるか否かを判定する(ステップS102)。この結果、現在実行されているスレッドが書き換えの対象となる監視対象のスレッドでなかった場合には(ステップS102否定)、本フローチャートの処理を終了する。
また、現在実行されているスレッドが書き換えの対象となる監視対象のスレッドであった場合(ステップS102肯定)、スレッド監視部31は、実行される命令を取得し(ステップS103)、実行される命令がret命令であるか否かを判定する(ステップS104)。この結果、実行される命令がret命令でない場合には(ステップS104否定)、本フローチャートの処理を終了する。
また、実行される命令がret命令である場合には(ステップS104肯定)、スレッド監視部31は、戻りアドレスを取得する(ステップS105)。そして、スレッド監視部31は、この戻りアドレスが所定のAPI呼び出し時に記録されたアドレスと同じであるか否かを判定する(ステップS106)。この結果、戻りアドレスが所定のAPI呼び出し時に記録されたアドレスと同じでない場合には(ステップS106否定)、本フローチャートの処理を終了する。
また、スレッド監視部31は、戻りアドレスが所定のAPI呼び出し時に記録されたアドレスと同じである場合には(ステップS106肯定)、APIに対する所定の改ざんをインジェクション部32に依頼する。つまり、スレッド監視部31は、当該スレッドに情報収集処理を実施させるように、インジェクション部32に対して改ざんを依頼する(ステップS107)。
図6は、改ざん依頼を受けたインジェクション部の処理の流れを示すフローチャートである。図6に示すように、最初に、インジェクション部32は、スレッドのEIP、ESPレジスタの値を取得する(ステップS201)。続いて、インジェクション部32は、改ざんする範囲のメモリ空間23のバックアップを取得する(ステップS202)。
次に、インジェクション部32は、ESPレジスタが指しているアドレス低位のメモリ空間23に引数とダミーの戻りアドレスを設定し(ステップS203)、改ざんを行う。そして、インジェクション部32は、ダミーの戻りアドレスが設定されたアドレスをESPレジスタに設定し(ステップS204)、所定の処理を行うための命令(プログラムコード)が格納されたアドレスを取得し、EIPレジスタに設定する(ステップS205)。
さらに、メモリアクセス制御部33にTIDとPID、アドレスレンジを通知し、当該スレッドに関する仮想メモリ空間提供の開始を要求する(ステップS206)。以上の処理が行われた後、改ざんを受けたスレッドは所定の処理を行う。最後に、インジェクション部32は所定の処理の実行結果を受け取るため、ダミーの戻りアドレスへの遷移を監視する処理を開始する(ステップS207)。
図7は、改ざんを実施した後のインジェクション部の処理の流れを示すフローチャートである。図7に示すように、インジェクション部32は、最初にTIBからTIDを取得し(ステップS301)、現在実行されているスレッドが書き換えの対象となり得る監視対象のスレッドであるか否かを判定する(ステップS302)。この結果、現在実行されているスレッドが書き換えの対象となり得る監視対象のスレッドでない場合には(ステップS302否定)、本フローチャートの処理を終了する。
また、インジェクション部32は、現在実行されているスレッドが書き換えの対象となり得る監視対象のスレッドである場合には(ステップS302肯定)、実行される命令を取得し(ステップS303)、実行される命令がret命令であるか否かを判定する(ステップS304)。そして、実行される命令がret命令でない場合には(ステップS304否定)、本フローチャートの処理を終了する。また、実行される命令がret命令である場合には(ステップS304肯定)、インジェクション部32は、戻りアドレスを取得する(ステップS305)。
そして、インジェクション部32は、この戻りアドレスがダミーのアドレスであるか否かを判定する(ステップS306)。この結果、インジェクション部32は、この戻りアドレスがダミーのアドレスでない場合には(ステップS306否定)、本フローチャートの処理を終了する。
また、戻りアドレスがダミーのアドレスである場合には(ステップS306肯定)、インジェクション部32は、実施させた処理のログを回収し、バックアップを用いて改ざんしたメモリ内容を復元する(ステップS307)。さらに、インジェクション部32は、メモリアクセス制御部33にTIDを通知して、当該TIDに対応するスレッドに関する仮想メモリ空間の提供の停止を要求する(ステップS308)。
図8は、情報収集などの所定の処理をスレッドに実行させている最中のメモリアクセス制御部の処理の流れを示すフローチャートである。図8に示すように、メモリアクセス制御部33は、スレッド監視部31からアクセス元TIDとアクセス先アドレスレンジ、当該アドレスレンジを管理するPIDもしくは制御レジスタであるCR3レジスタの値を受け取った後、プロセスIDが仮想メモリ空間提供対象として登録されているか否かを判定する(ステップS401)。
CR3レジスタは、CPUアーキテクチャx86などに備わっている制御レジスタであり、Windows(登録商標)やLinux(登録商標)はページディレクトリの物理アドレスを管理するために当該レジスタを利用している。ページディレクトリは、プロセスごとに作成されるため、PID(Process ID)と同様にこの物理アドレスから現在動作しているプロセスを一意に特定できる。
そして、メモリアクセス制御部33は、プロセスIDが仮想メモリ空間提供対象として登録されていない場合には(ステップS401否定)、本フローチャートの処理を終了する。また、メモリアクセス制御部33は、プロセスIDが仮想メモリ空間提供対象として登録されている場合には(ステップS401肯定)、アクセス先アドレスレンジが仮想メモリ空間提供対象として登録されているか否かを判定する(ステップS402)。
この結果、メモリアクセス制御部33は、アクセス先アドレスレンジが仮想メモリ空間提供対象として登録されていない場合には(ステップS402否定)、本フローチャートの処理を終了する。また、メモリアクセス制御部33は、アクセス先アドレスレンジが仮想メモリ空間提供対象として登録されている場合には(ステップS402肯定)、アクセス元TIDと仮想メモリ空間提供対象のTIDが異なる場合には、アクセスの目的がメモリ読み込みであるか否かを判定する(ステップS403)。なお、アクセス元TIDと仮想メモリ空間提供対象のTIDとが同じである場合には、通常通り、そのままアクセスを許可する。
そして、メモリアクセス制御部33は、アクセスの目的がメモリ読み込みでない場合には(ステップS403否定)、つまり、アクセスの目的がメモリ更新等である場合には、バックアップデータの値を更新し(ステップS406)、本フローチャートの処理を終了する。一方、アクセスの目的がメモリ読み込みである場合には(ステップS403肯定)、バックアップデータを取得し(ステップS404)、該バックアップデータに基づいて仮想メモリ空間を提供し、バックアップデータの値をメモリ参照結果として返す(ステップS405)。これにより、書き換えたアドレス空間が他のスレッドによって検査され、解析環境が検知されることを回避することができる。
以上の仕組みを用いることで、例えば、NtCreateProcess関数で得られるハンドラに対応するPIDをGetProcessId関数で調べることが可能となる。また、ROP(Return oriented Programming)のように複数の処理をつなげることで、OSの視点からファイルシステムやメモリから任意の情報を収集することができる。特に、マルウェアのメモリダンプ取得の場合、VMMから行うよりもOSから実施した方が、OSのページング機構を利用できるためメモリ情報の取得が実施しやすいという利点がある。
[実施形態の効果]
このように、マルウェア解析装置10は、解析対象のマルウェア21が動作するゲストOS20上のスレッドのうち、監視対象のスレッドの動作を監視するスレッド監視部31と、監視対象のスレッドが実行されている場合に、スレッド上のメモリ空間23のデータをVMM30が書き換えることでスレッドに所定の情報を収集する処理を実行させるインジェクション部32とを有する。このため、マルウェア解析装置10では、マルウェアに解析環境を検知されずに、OSが管理する情報を適切に収集することが可能である。つまり、マルウェア解析装置10は、マルウェア21による検知を避けながら、OSの視点から情報収集することが可能である。このため、サンドボックスなどのマルウェア21を動作させながら解析するシステムでの利用に適している。
また、マルウェア解析装置10は、所定の情報を収集する処理が終了した後、メモリ空間23のデータを書き換えられる前の状態に復元することで、書き換えた痕跡を削除することが可能である。
また、マルウェア解析装置10は、書き換えられたメモリ空間23のデータに対する読み出しがあった場合には、仮想的なメモリ空間を提供し、バックアップデータをメモリ参照結果として返信するように制御することで、メモリ参照結果を偽装し、所定の情報収集処理を実行しているスレッドのタスクを保護することが可能である。
[経過時間の改ざん]
なお、上述した実施形態では、メモリ空間23のデータを書き換える場合について説明したが、メモリ空間23のデータとともに、所定の処理を開始してから経過した時間を示すデータを書き換えるようにしてもよい。情報収集中にゲストOS20側での時間は経過してしまうため、経過時間に基づいて解析システムが間接的に発見される可能性がある。このため、マルウェア解析装置10のインジェクション部32は、メモリ空間23のデータとともに、所定の処理を開始してから経過した時間を示すデータを書き換える。例えば、インジェクション部32は、rdtsc命令などの時刻を取得する命令の返り値を改ざんする。これにより、経過時間を改ざんすることができ、解析システムが間接的に発見されることを回避することが可能である。
[APIフックの検知]
また、所定の処理の実行に用いるAPIがフックされている場合には、メモリ空間23のデータの書き換えを中止するようにしてもよい。所定の処理の実行に用いるAPIがフックされている場合には、コールスタックの検査によって解析システムを検知される可能性がある。このため、マルウェア解析装置10のインジェクション部32は、所定の処理の実行に用いるAPIがフックされている場合には、メモリ空間23のデータの書き換えを中止する。例えば、所定の処理の実行に用いるAPIがフックされているか否かを検査する処理をインジェクション部32で実施し、APIがフックされている場合には改ざんを止めたり、他のスレッドの改ざんに切り換えたり、APIフックを回避する手法を組み合わせたりしてもよい。
[監視対象のスレッド]
上述した実施形態では、スレッド監視部31において、APIを呼び出したスレッドを監視対象のスレッドとする場合を説明したが、これに限られるものではなく、例えば、システムコールを監視対象にしてもよい。また、上述した実施形態では、主に、ret命令が呼び出されるタイミングで書き換えを行う場合を説明したが、ret命令でなくともcall命令やjmp命令が呼び出されるタイミングで制御フローを書き換えてもよい。
[システム構成等]
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。例えば、スレッド監視部31とインジェクション部32とを統合してもよい。
また、本実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
[プログラム]
また、上記実施形態において説明したマルウェア解析装置10が実行する処理について、コンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、実施形態に係るマルウェア解析装置10が実行する処理について、コンピュータが実行可能な言語で記述した解析プログラムを作成することもできる。この場合、コンピュータが解析プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる解析プログラムをコンピュータが読み取り可能な記録媒体に記録して、この記録媒体に記録された解析プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、図1に示したマルウェア解析装置10と同様の機能を実現する解析プログラムを実行するコンピュータの一例を説明する。
図9は、解析プログラムを実行するコンピュータ1000を示す図である。図9に例示するように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有し、これらの各部はバス1080によって接続される。
メモリ1010は、図9に例示するように、ROM(Read Only Memory)1011及びRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、図9に例示するように、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、図9に例示するように、ディスクドライブ1041に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1041に挿入される。シリアルポートインタフェース1050は、図9に例示するように、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、図9に例示するように、例えばディスプレイ1130に接続される。
ここで、図9に例示するように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、上記の解析プログラムは、コンピュータ1000によって実行される指令が記述されたプログラムモジュール1093として、例えばハードディスクドライブ1090に記憶される。
また、上記実施形態で説明した各種データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出し、実行する。
なお、解析プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1041等を介してCPU1020によって読み出されてもよい。あるいは、解析プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
10 マルウェア解析装置
20 ゲストOS
21 マルウェア
22 標準プロセス
23 メモリ空間
30 VMM
31 スレッド監視部
32 インジェクション部
33 メモリアクセス制御部

Claims (7)

  1. 解析対象のマルウェアが動作するゲストOS上のスレッドのうち、監視対象のスレッドの動作を監視する監視部と、
    前記監視対象のスレッドが実行されている場合に、前記スレッド上のメモリ空間のデータをVMMが書き換えることで前記スレッドに所定の情報を収集する処理を実行させるインジェクション部と
    を有することを特徴とする解析装置。
  2. 前記インジェクション部は、前記所定の情報を収集する処理が終了した後、前記メモリ空間のデータを書き換えられる前の状態に復元することを特徴とする請求項1に記載の解析装置。
  3. 前記インジェクション部は、前記メモリ空間のデータを書き換える際に、該メモリ空間のデータのバックアップデータを前記VMM内の退避領域に退避させた後、該メモリ空間のデータの書き換えを行い、
    前記インジェクション部によって書き換えられたメモリ空間のデータに対する読み出しがあった場合には、仮想的なメモリ空間を提供し、前記バックアップデータをメモリ参照結果として返信するように制御するアクセス制御部をさらに有することを特徴とする請求項1に記載の解析装置。
  4. 前記インジェクション部は、前記メモリ空間のデータとともに、所定の処理を開始してから経過した時間を示すデータを書き換えることを特徴とする請求項1に記載の解析装置。
  5. 前記インジェクション部は、所定の処理の実行に用いるAPIがフックされている場合には、前記メモリ空間のデータの書き換えを中止することを特徴とする請求項1に記載の解析装置。
  6. 解析装置で実行される解析方法であって、
    解析対象のマルウェアが動作するゲストOS上のスレッドのうち、監視対象のスレッドの動作を監視する監視工程と、
    前記監視対象のスレッドが実行されている場合に、前記スレッド上のメモリ空間のデータをVMMが書き換えることで前記スレッドに所定の情報を収集する処理を実行させるインジェクション工程と
    を含んだことを特徴とする解析方法。
  7. 解析対象のマルウェアが動作するゲストOS上のスレッドのうち、監視対象のスレッドの動作を監視する監視ステップと、
    前記監視対象のスレッドが実行されている場合に、前記スレッド上のメモリ空間のデータをVMMが書き換えることで前記スレッドに所定の情報を収集する処理を実行させるインジェクションステップと
    をコンピュータに実行させるための解析プログラム。
JP2015237510A 2015-12-04 2015-12-04 解析装置、解析方法および解析プログラム Active JP6430922B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015237510A JP6430922B2 (ja) 2015-12-04 2015-12-04 解析装置、解析方法および解析プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015237510A JP6430922B2 (ja) 2015-12-04 2015-12-04 解析装置、解析方法および解析プログラム

Publications (2)

Publication Number Publication Date
JP2017102823A true JP2017102823A (ja) 2017-06-08
JP6430922B2 JP6430922B2 (ja) 2018-11-28

Family

ID=59016649

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015237510A Active JP6430922B2 (ja) 2015-12-04 2015-12-04 解析装置、解析方法および解析プログラム

Country Status (1)

Country Link
JP (1) JP6430922B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060143608A1 (en) * 2004-12-28 2006-06-29 Jan Dostert Thread monitoring using shared memory
JP2009031859A (ja) * 2007-07-24 2009-02-12 Nippon Telegr & Teleph Corp <Ntt> 情報収集システムおよび情報収集方法
JP2010026572A (ja) * 2008-07-15 2010-02-04 Hitachi Ltd 仮想計算機の現出方法、この方法を実行するためのプログラム、及びこの方法を実行するサーバ
JP2014516191A (ja) * 2011-06-08 2014-07-07 マカフィー, インコーポレイテッド 仮想パーティションを監視するためのシステムおよび方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060143608A1 (en) * 2004-12-28 2006-06-29 Jan Dostert Thread monitoring using shared memory
JP2009031859A (ja) * 2007-07-24 2009-02-12 Nippon Telegr & Teleph Corp <Ntt> 情報収集システムおよび情報収集方法
JP2010026572A (ja) * 2008-07-15 2010-02-04 Hitachi Ltd 仮想計算機の現出方法、この方法を実行するためのプログラム、及びこの方法を実行するサーバ
JP2014516191A (ja) * 2011-06-08 2014-07-07 マカフィー, インコーポレイテッド 仮想パーティションを監視するためのシステムおよび方法

Also Published As

Publication number Publication date
JP6430922B2 (ja) 2018-11-28

Similar Documents

Publication Publication Date Title
US10324748B2 (en) Augmented tracking of modified memory pages during live migration of virtual machines from/to host computers with graphics processors
KR101475987B1 (ko) 오프라인 가상 환경의 개선 또는 오프라인 가상 환경에 관련된 방법 및 시스템
US9436603B1 (en) Detection and mitigation of timing side-channel attacks
US9811663B2 (en) Generic unpacking of applications for malware detection
US10042744B2 (en) Adopting an existing automation script to a new framework
US10089126B2 (en) Function exit instrumentation for tail-call optimized code
KR20140033169A (ko) 가상 머신 이미지 분석 기법
US20220035905A1 (en) Malware analysis through virtual machine forking
US10089474B2 (en) Virtual machine introspection
Westphal et al. VMI-PL: A monitoring language for virtual platforms using virtual machine introspection
CN104715202A (zh) 一种虚拟机中的隐藏进程检测方法和装置
US10311233B2 (en) Generic unpacking of program binaries
Uroz et al. Characteristics and detectability of Windows auto-start extensibility points in memory forensics
US9785492B1 (en) Technique for hypervisor-based firmware acquisition and analysis
US20180210816A1 (en) Testing a guarded storage facility
JP5437964B2 (ja) 解析方法、解析装置及び解析プログラム
JP6430922B2 (ja) 解析装置、解析方法および解析プログラム
US20100153926A1 (en) Operating system aided code coverage
CN109388948B (zh) 一种基于虚拟化技术的潜在恶意软件分析方法及相关装置
JP6317646B2 (ja) 情報処理装置、不正プログラム実行防止方法、プログラム及び記録媒体
KR101306656B1 (ko) 악성코드 동적 분석정보 제공 장치 및 방법
US10445081B2 (en) Techniques of automatically generating dependencies for applications in embedded systems
Zhan et al. SAVM: A practical secure external approach for automated in‐VM management
CN115686739A (zh) 攻击检测方法及装置
Rootkits JoKER: Trusted Detection of Kernel Rootkits in Android Devices via JTAG Interface

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171215

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180725

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180814

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180928

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181030

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181101

R150 Certificate of patent or registration of utility model

Ref document number: 6430922

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150