JP6023317B2 - 情報処理装置、および、情報処理方法 - Google Patents
情報処理装置、および、情報処理方法 Download PDFInfo
- Publication number
- JP6023317B2 JP6023317B2 JP2015516986A JP2015516986A JP6023317B2 JP 6023317 B2 JP6023317 B2 JP 6023317B2 JP 2015516986 A JP2015516986 A JP 2015516986A JP 2015516986 A JP2015516986 A JP 2015516986A JP 6023317 B2 JP6023317 B2 JP 6023317B2
- Authority
- JP
- Japan
- Prior art keywords
- library function
- log
- data
- information processing
- program
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1425—Traffic logging, e.g. anomaly detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2101—Auditing as a secondary aspect
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
Description
本発明は、情報処理装置、および、情報処理方法に関する。
マルウェア等の解析対象の実行ファイルの挙動を解析するために、その実行ファイルを解析環境において実際に動作させ、その挙動ログを取得する動的解析が利用される。動的解析には、マルウェアが外部へ送信するパケットを監視するネットワーク挙動解析型の動的解析がある(特許文献1参照)。
これらネットワーク挙動解析型の動的解析では、マルウェアが行う通信先、ポート番号、プロトコル、ペイロードの情報等が取得できる。場合によっては、マルウェアの挙動を理解するための重要な情報がペイロード部分に観測されることもある。例えば、マシン名やユーザ情報、機密ファイルの中身の情報等がそのままペイロード部分に記載されていた場合、そのマルウェアが感染端末の機密情報を外部に送信する挙動を持っていると判断できる。
しかしながら、近年のマルウェアの多くは、通信データに暗号化、圧縮等の難読化が施されている場合が多い。このような場合、ネットワーク挙動解析型の動的解析で観測できるパケットのペイロード部分からは、送信されているデータの内容を知ることができないので、マルウェアの挙動を理解できなくなってしまう。
このような場合、マルウェアの実行ファイルを静的解析し、送信しているデータの内容を特定する方法がある。この方法は、解析者が手動でマルウェアの実行ファイルを逆アセンブルし、命令を読み解くことでマルウェアの挙動を把握する方法である。しかしながら、マルウェアの静的解析は非常にコストが高く、大量の実行ファイルを解析するのには向いていない。
上記のように、マルウェアの動的解析において、マルウェアがデータを難読化し、解析環境マシンの外部に出力している場合、その出力されたデータを見ても、そのデータの本来の意味を特定することができない。また、一方で解析者が手動で静的解析すれば、理論的には難読化されているデータの内容を把握することはできるが、静的解析には解析者に特別なスキルが必要なだけではなく、解析にかなりの時間を要する等、コストの高い作業になってしまう。
そこで、本発明は、前記した問題を解決し、マルウェア等のプログラムによりデータが難読化されて外部に出力される場合でも、そのデータの元情報を、動的解析で特定することを課題とする。
前記した課題を解決するため、本発明の情報処理装置は、出力データを生成するために呼び出されたライブラリ関数を特定する情報処理装置であって、監視対象のプログラムの解析ログを生成する際、前記監視対象のプログラムが呼び出すライブラリ関数を捕捉し、前記ライブラリ関数の呼び出しごとに、前記ライブラリ関数の呼び出しを一意に識別するためのタグを、前記ライブラリ関数からの出力データに設定するライブラリ関数実行監視部と、前記ライブラリ関数からの出力データを含む解析ログを記憶するログ記憶部と、前記ログ記憶部に記憶された解析ログに設定されたタグをキーとして、当該情報処理装置からの出力データを生成するために呼び出されたライブラリ関数を特定するログ探索部とを備える。
本発明によれば、マルウェア等のプログラムによりデータが難読化されて外部に出力される場合でも、そのデータの元情報を、動的解析で特定することができる。
[第1の実施形態]
[全体構成]
以下、本発明を実施するための形態(実施形態)について説明する。図1は、情報処理装置の全体構成を示す図である。図1に示すように、情報処理装置は、ハードウェア1、ホストOS2、仮想マシンソフトウェア3、仮想マシン10を有する。
[全体構成]
以下、本発明を実施するための形態(実施形態)について説明する。図1は、情報処理装置の全体構成を示す図である。図1に示すように、情報処理装置は、ハードウェア1、ホストOS2、仮想マシンソフトウェア3、仮想マシン10を有する。
ハードウェア1は、情報処理装置を構成する電子回路や周辺機器であり、例えば、メモリ、CPU(Central Processing Unit)等である。ホストOS2は、仮想マシンを動作させる基盤となるOSであり、ハードウェア1を用いて実行される。仮想マシンソフトウェア3は、ハードウェア1を用いて仮想マシンを提供するソフトウェアであり、ここでは、仮想マシン10を動作させる。例えば、仮想マシンソフトウェア3は、仮想ディスク、仮想物理メモリ、仮想CPU等をゲストOSに割当てて、仮想マシンを動作させる。
仮想マシン10は、例えば、エミュレータ型の仮想マシンであり、仮想マシンソフトウェア3から提供された仮想ディスク、仮想物理メモリ、仮想CPU等を用いてゲストOSを動作させて、各種処理を実行する仮想的な情報処理装置である。
この情報処理装置の処理の概要を、図2を用いて説明する。図2は、情報処理装置の処理の概要を示す図である。情報処理装置は、仮想マシン10内で、挙動の解析対象となるプログラム(マルウェア)を監視する。そして、情報処理装置は、プログラムの挙動を監視し、このプログラムにより呼び出されるライブラリ関数の入力および出力に関するログを生成し、出力する。
ライブラリ関数は、プログラムの実行にあたり呼び出される関数であり、例えば、API(Application Programming Interface)、システムコール、ローカル関数等である。このライブラリ関数は、ゲストOS内に含まれる。また、以下の説明において、ライブラリ関数は、Win32APIである場合を例に説明するが、これに限定されない。
また、情報処理装置により生成されるログは、例えば、ライブラリ関数(例えば、ライブラリ関数A,B,C,…,N)、そのライブラリ関数への入力データ、そのライブラリ関数からの出力データ等、を示す情報である。ここで、情報処理装置は、ログ生成時、ライブラリ関数からの出力データに、このライブラリ関数の呼び出しを一意に識別するためのテイントタグ(タグ)を設定する。
一方で、情報処理装置は、挙動の解析対象となるプログラムを動作させ、テイント解析を行う。すなわち、情報処理装置は、挙動の解析対象となるプログラムを動作させることにより、テイントタグが設定されたデータが仮想CPUで実行する命令にオペランドとして渡された場合、この命令の実行結果のデータにテイントタグを伝播させる。これにより、情報処理装置は、プログラムから呼び出されたライブラリ関数への入力データにも、情報処理装置により設定されたテイントタグが設定されることになる。
このような解析環境下で、情報処理装置は、所定期間、挙動の解析対象となるプログラムを動作させ、ライブラリ関数の入力および出力に関するログの生成および出力を行い、ログを蓄積していく。
その後、情報処理装置が、何らかの難読化されたデータ(難読化データ)を出力した場合、このデータに設定されたテイントタグと、前記したログに含まれるテイントタグとを参照することで、ライブラリ関数間で利用されているデータの依存関係を辿り、難読化データを生成したライブラリ関数(例えば、ライブラリ関数A)を特定する。このようにライブラリ関数が特定できれば、情報処理装置のユーザは、そのライブラリ関数の特性等から、難読化データの生成にあたり、どのような種類の情報が元情報となっているかを特定することができる。
なお、本実施形態における、データの出力とは、例えば、解析対象のプログラムを動作させているマシン(仮想マシン10)からネットワークを介して外部へ出力する場合や、ハードディスク、半導体メモリ、DVD、CD−ROM等の記録媒体への書き込みにより外部へ出力する場合も含む。
[仮想マシンの構成]
次に、図1に示した仮想マシンの構成を説明する。なお、ハードウェア1、ホストOS2、仮想マシンソフトウェア3については、一般的な構成と同様の構成を有するので、詳細な説明は省略する。なお、以下の説明において監視対象のプログラムは、予め仮想ディスク11aに格納され、テイントタグが設定されているものとする。
次に、図1に示した仮想マシンの構成を説明する。なお、ハードウェア1、ホストOS2、仮想マシンソフトウェア3については、一般的な構成と同様の構成を有するので、詳細な説明は省略する。なお、以下の説明において監視対象のプログラムは、予め仮想ディスク11aに格納され、テイントタグが設定されているものとする。
図3は、仮想マシンの機能構成を示す図である。図3に示すように、仮想マシン10は、仮想物理メモリ10a、シャドウメモリ10b、仮想ディスク11a、シャドウディスク11b、仮想CPU12、仮想HWコントローラ18を有する。
仮想物理メモリ10aは、情報処理装置が有する物理メモリにおける所定領域を仮想マシン10で動作するゲストOSが使用するメモリとして割り当てることで実現された仮想的なメモリである。例えば、仮想物理メモリ10aは、仮想CPU12によって仮想ディスク11aから読み出されたプログラムやデータを記憶する。
シャドウメモリ10bは、仮想物理メモリ10a上の値に対して設定されたテイントタグの値を保持するデータ構造体である。
ここで、シャドウメモリ10bの一例を説明する。図4は、シャドウメモリに記憶される情報の例を示す図である。図4に示すように、シャドウメモリ10bは、「仮想物理メモリのアドレス」と「テイントタグ」とを対応付けて記憶する。「仮想物理メモリのアドレス」は、仮想物理メモリ10a上の格納位置を示す位置情報であり、「テイントタグ」は、各ライブラリ関数の実行の結果出力されたデータに対して設定された識別子である。
図4の場合、仮想物理メモリ10aのアドレス「0000〜0200」に格納されている監視対象のプログラムコードに対して、テイントタグ「11」が付与されていることを示す。また、仮想物理メモリ10aのアドレス「0310〜0350」に格納されている監視対象のデータに対して、テイントタグ「05」が付与されていることを示す。なお、図4に示した数値等は、あくまで例示であり、値等を限定するものではない。
仮想ディスク11aは、情報処理装置が有する物理ディスクにおける所定領域を仮想マシン10で動作するゲストOSが使用する領域として割り当てることで実現された仮想的なディスクである。例えば、仮想ディスク11aは、仮想CPU12が実行対象とするプログラムや、プログラムの処理対象となるデータ等を記憶する。この仮想ディスク11aは、前記したライブラリ関数の入力および出力に関するログを記憶するログ記憶部110を所定領域に備える。
シャドウディスク11bは、仮想ディスク11a上の値に対して設定されたテイントタグの値を保持するデータ構造体である。
ここで、シャドウディスク11bの一例を説明する。図5は、シャドウディスクに記憶される情報の例を示す図である。図5に示すように、シャドウディスク11bは、「仮想ディスクのアドレス」と「テイントタグ」とを対応付けて記憶する。「仮想ディスクのアドレス」は、仮想ディスク11a上の格納位置を示す位置情報であり、「テイントタグ」は、監視対象であることを識別する識別子である。また、ここでは、「テイントタグ」の2ビット情報が「1」である場合には、監視対象のデータがプログラムのコードであることを示す。
図3の仮想CPU12は、情報処理装置が有する物理CPUにおける所定処理能力を仮想マシン10で動作するゲストOSが使用するCPUとして割り当てることで実現された仮想的なCPUである。この仮想CPU12は、この仮想CPU12が保持しているテイントタグを保持するシャドウレジスタを備える。この仮想CPU12は、プログラム実行部13、判定部14、ライブラリ関数実行監視部15、および、テイント解析部17を有し、これらによって各種処理を実行する。
プログラム実行部13は、仮想ディスク11aに記憶されるプログラムを実行する。例えば、プログラム実行部13は、仮想ディスク11aから、実行対象のプログラムを読み出して仮想物理メモリ10aに展開し、実行する。
判定部14は、実行されたプログラムが監視対象か否かを判定する。実行されたプログラムが監視対象であるか否かを判定する手法は、公知の様々な手法を用いることができる。例えば、予め監視対象のプログラム名等を指定しておき、仮想物理メモリ10aに展開されたプログラムが予め指定したプログラムと一致するか否かによって、監視対象か否かを判定することもできる。また、プログラム内を走査し、監視対象として指定される命令を含んでいる場合に、監視対象と判定することもできる。
仮想HWコントローラ18は、仮想ディスク11aと仮想物理メモリ10aとの間、シャドウディスク11bとシャドウメモリ10bとの間のデータ送受信を制御する。例えば、仮想HWコントローラ18は、プログラム実行部13が仮想ディスク11aから読み出したプログラムを仮想物理メモリ10aに格納する。また、仮想HWコントローラ18は、プログラム等によって仮想物理メモリ10aから読み出されたデータを仮想ディスク11aに格納する。このような仮想HWコントローラ18は、テイントタグの伝搬を実行するテイント情報伝搬部18aを有する。
テイント解析部17は、テイントタグが設定されたデータが仮想CPU12(具体的にはプログラム実行部13)で実行する命令に渡された際、テイントタグの伝搬ルールに基づいてテイントタグを命令の実行結果に伝搬させる。プログラム実行部13で実行する命令にテイントタグが設定されたデータが渡されるとは、具体的には、命令のオペランドで渡された値がテイントタグを保持している場合である。
テイント情報伝搬部18aは、仮想ディスク11aと仮想物理メモリ10aとの間でのデータの読み書きに伴い、シャドウディスク11bとシャドウメモリ10bとの間でテイントタグを伝搬させる。例えば、仮想HWコントローラ18が、監視対象のプログラムによって仮想物理メモリ10aから読み出されたデータを仮想ディスク11aに格納するとき、これに伴い、シャドウメモリ10b上の当該読み出されたデータのテイントタグをシャドウディスク11b上に格納する。
なお、テイントタグを伝搬させるときのルールとしては、仮想CPU12において機械語命令が実行される際、1つ以上のオペランドを伴う算術演算命令、論理演算命令、データ移動命令、データコピー命令の実行の際に、オペランドの1つにテイントタグを持った値が渡された場合、その命令実行結果を保存する箇所にもテイントタグを設定する。このルールは実装により異なるが、命令実行の結果が、読み込まれた値に依存している場合、テイントタグを伝搬させるといった基本的なルールにより構成され、仮想CPU12の命令のうち何かしらの形でデータを扱うものに関してはテイントタグの伝搬を伴う動作が行われるものとする。
ライブラリ関数実行監視部15は、監視対象のプログラムが呼び出すライブラリ関数の実行を捕捉し、このライブラリ関数への入力および出力に関するログ(以下、適宜「ログ」と略す)を生成し、出力する。また、ライブラリ関数実行監視部15は、ログの生成にあたりライブラリ関数からの出力データには、このライブラリ関数の呼び出しを一意に識別するためのテイントタグを設定する。なお、このライブラリ関数の実行の捕捉は、解析対象のプログラムの命令からライブラリ関数が呼ばれた時と、ライブラリ関数が呼ばれた後、プログラムの命令へ復帰する時の2回行われる。
ここで、監視対象のプログラムにより実行されるライブラリ関数の実行を捕えるためには、次の点を考慮する必要がある。
(1)監視対象のプログラムをどのように判断するか。
(2)ライブラリ関数が実行されたということをどのように捕えるか。
(3)ライブラリ関数から監視対象のマルウェアのコードに復帰したということをどのように捕えるか。
(1)監視対象のプログラムをどのように判断するか。
(2)ライブラリ関数が実行されたということをどのように捕えるか。
(3)ライブラリ関数から監視対象のマルウェアのコードに復帰したということをどのように捕えるか。
(1)に関しては、プロセスID、スレッドID、メモリアドレスの範囲等を用いる方法等が考えられる。(2)に関してはバイナリを直接書き換えてフックやブレークポイントを配置する方法や、ハードウェアブレークポイントを利用する方法が考えられる。また、バイナリ変換を利用し、読み込んだ命令の仮想アドレスが予め把握しているライブラリ関数が配置されるべきアドレスと一致しているかを比較することで、ライブラリ関数の命令の実行を捕える方法等が考えられる。
(3)に関しては、(2)でライブラリ関数の実行を捕えたときに、スタックに積まれているリターンアドレス、特定のレジスタに格納されているリターンアドレス、を見ることで復帰するアドレスが把握できる。また、ライブラリ関数を呼び出した命令を見つけ出し、その命令の次の命令を復帰するアドレスだとすることも可能である。復帰するアドレスが把握できた場合、そのアドレスに対して、上記で述べた手法と同様の方法で、フックやブレークポイント、アドレス比較のための登録を行うことで、その復帰されるアドレスの命令が実行されたことを捕える。
ライブラリ関数実行監視部15は、監視対象のプログラムからライブラリ関数の実行を捕捉した場合、そのライブラリ関数の引数情報に基づいて、ライブラリ関数に入力される引数を把握し、ライブラリ関数に引数として入力されるデータと、そのデータに設定されているテイントタグとを取得し、これらを対応付けた情報をログ(プログラムの解析ログ)として出力する。
なお、ライブラリ関数の引数情報は、例えば、そのライブラリ関数のプロトタイプ宣言が記載されているものから取得される。例えば、ライブラリ関数のソースコード、SDK(ソフトウエア開発キット)で提供されているヘッダファイル、ライブラリ関数のドキュメント等から取得される。
また、ライブラリ関数実行監視部15は、ライブラリ関数が呼び出された後、プログラムへの復帰を捕捉したとき、以下の処理を行う。まず、ライブラリ関数実行監視部15は、呼び出されたライブラリ関数の引数情報に基づいて、ライブラリ関数から出力される引数を区別し、ライブラリ関数から出力されるデータに対し、テイントタグを設定する。そして、ライブラリ関数実行監視部15は、出力されるデータと、そのデータに設定したテイントタグとを対応付けた情報をログとして出力する。
[ログの例]
ここで、図6Aおよび図6Bを用いて、ライブラリ関数実行監視部15が出力するログの例を説明する。図6Aは、各ライブラリ関数間でテイントタグが伝搬される場合のログを例示した図である。図6Bは、ライブラリ関数ごとに新しいテイントタグを設定する場合のログを例示した図である。なお、図6Aおよび図6Bにおいてログは、時系列順に並べられ、下に行くに従い新しいログとなっている。
ここで、図6Aおよび図6Bを用いて、ライブラリ関数実行監視部15が出力するログの例を説明する。図6Aは、各ライブラリ関数間でテイントタグが伝搬される場合のログを例示した図である。図6Bは、ライブラリ関数ごとに新しいテイントタグを設定する場合のログを例示した図である。なお、図6Aおよび図6Bにおいてログは、時系列順に並べられ、下に行くに従い新しいログとなっている。
ログは、図6Aおよび図6Bに示すように、呼び出されたライブラリ関数への入力時に関するログ([prev])か出力時に関するログ([post])かを示す情報と、そのライブラリ関数の関数名と、そのライブラリ関数への引数が入力(IN)か出力(OUT)かを示す情報と、その引数のデータと、そのデータに設定されたテイントタグの値とが示される。なお、図6Aおよび図6Bにおいて図示を省略しているが、各ログはどのような順で呼び出されたかを示す時系列情報を持つ。
なお、このログには、そのライブラリ関数の呼び出しの付随情報として、ライブラリ関数名、そのライブラリ関数を含むモジュール名、PID、TID、呼び出し元アドレス、リターンアドレス、時間情報、命令ポインタが指しているアドレス(EIP)等を含めてもよい。
このログは、ログ探索部16が、難読化データを生成したライブラリ関数を特定する際に参照される。ログ探索部16が、図6Aおよび図6Bに例示したログを用い、難読化データを生成したライブラリ関数を特定する手順の例については、後記する。
なお、図3に示すように、ホストOS2は、仮想マシン10外に、ログ探索部16およびログ記憶部110を備える。このように、ホストOS2が、ログ探索部16およびログ記憶部110を、仮想マシン10外に保持するのは、仮想マシン10内で動く監視対象のプログラムから、ログや、ログの探索処理が見えてしまうことを防止するためである。ログ探索部16は、仮想マシン10からの出力データ(難読化データ)に設定されたテイントタグと、ログ記憶部110に蓄積されたログとを参照し、ライブラリ関数間で入出力されるデータの依存関係を辿り、仮想マシン10からの出力データを生成したライブラリ関数を特定する。このログ探索部16の詳細は、後記する。
ログ記憶部110は、ライブラリ関数実行監視部15により出力されたログ(図6Aおよび図6B参照)を記憶する。なお、ログ記憶部110における、ライブラリ関数の呼び出し時に出力したログと、ライブラリ関数からの復帰時に出力したログとの対応付けは、呼び出されたライブラリ関数の関数名、ログの時系列情報、各ライブラリ関数がどのような順で呼び出されたかを示す情報等により行われるものとする。また、ここでの対応付けは、ライブラリ関数を呼び出したアドレスと復帰したアドレスの関係性や、PID、TID等を用いてもよい。
[仮想マシンの処理手順]
[ログの蓄積手順]
次に、図7を用いて仮想マシン10の処理手順を説明する。まず、仮想マシン10がライブラリ関数への入力および出力に関するログを蓄積する手順を説明する。図7は、仮想マシンがライブラリ関数への入力および出力に関するログを蓄積する手順を示すフローチャートである。
[ログの蓄積手順]
次に、図7を用いて仮想マシン10の処理手順を説明する。まず、仮想マシン10がライブラリ関数への入力および出力に関するログを蓄積する手順を説明する。図7は、仮想マシンがライブラリ関数への入力および出力に関するログを蓄積する手順を示すフローチャートである。
仮想マシン10のプログラム実行部13は、実行対象のプログラムを仮想ディスク11aから仮想物理メモリ10aにロードする(S11)。
そして、判定部14は、ロードされたプログラムが監視対象のプログラムか否かを判定する(S12)。なお、判定部14は、ロードされたプログラムが監視対象のプログラムではないと判定した場合(S12のNo)、処理を終了する。
一方、判定部14は、ロードされたプログラムが監視対象のプログラムであると判定した場合(S12のYes)、ライブラリ関数実行監視部15は、そのプログラムによりライブラリ関数の呼び出しがあるか否かを判定する(S13)。
そして、ライブラリ関数実行監視部15が、当該プログラムによりライブラリ関数の呼び出しがあったと判定したとき(S13のYes)、呼び出されたライブラリ関数と、そのライブラリ関数に引数として入力されるデータと、そのデータに設定されているテイントタグとを取得し、これらを対応付けた情報をログとして、ログ記憶部110へ出力する(S14)。一方、ライブラリ関数実行監視部15がライブラリ関数の呼び出しがないと判定したときは(S13のNo)、S13へ戻る。
S14の後、ライブラリ関数実行監視部15は、呼び出されたライブラリ関数から当該プログラムへ復帰したと判定すると(S15のYes)、そのライブラリ関数から出力されるデータにテイントタグを設定する(S16)。つまり、ライブラリ関数実行監視部15は、呼び出されたライブラリ関数の引数情報に基づいて、そのライブラリ関数から出力される引数を区別し、ライブラリ関数から出力されるデータに対してテイントタグを設定する。
S16の後、ライブラリ関数実行監視部15は、呼び出されたライブラリ関数と、そのライブラリ関数から出力されるデータと、そのデータに設定したテイントタグとを取得し、これらを対応付けた情報を、ログとして、ログ記憶部110へ出力する(S17)。
そして、ライブラリ関数実行監視部15は、プログラム実行部13によるプログラムの実行が終了したと判定すると(S18のYes)、処理を終了する。一方、まだプログラムが終了していなければ(S18のNo)、S13へ戻る。
このようにして、仮想マシン10は、監視対象のプログラムによりライブラリ関数の呼び出しを捕捉し、そのライブラリ関数へのデータ入力およびそのライブラリ関数からのデータ出力に関するログを蓄積する。
[ライブラリ関数の特定手順]
次に、図8を用いて、ホストOS2のログ探索部16が、ログ記憶部110に蓄積されたログを探索し、難読化データを生成したライブラリ関数を特定する手順を説明する。図8は、ホストOSのログ探索部が、難読化データを生成したライブラリ関数を特定する手順を示すフローチャートである。
次に、図8を用いて、ホストOS2のログ探索部16が、ログ記憶部110に蓄積されたログを探索し、難読化データを生成したライブラリ関数を特定する手順を説明する。図8は、ホストOSのログ探索部が、難読化データを生成したライブラリ関数を特定する手順を示すフローチャートである。
まず、ログ探索部16は、ログ記憶部110に蓄積されたログを参照して、仮想マシン10の外部へ出力されたデータ(難読化データ)について、当該データを外部へ出力したライブラリ関数を見つける(S21)。例えば、ログ探索部16は、出力された難読化データを設定されたテイントタグを元に、ログ記憶部110に蓄積されたログを時系列の逆向きに辿って、当該データを出力したライブラリ関数を見つける。
S21の後、ログ探索部16は、ログ記憶部110に蓄積されたログを参照して、S21で見つけたライブラリ関数に渡された(入力された)データが存在し(S22のYes)、かつ、渡されたデータにテイントタグが設定されていれば(S23のYes)、当該データのテイントタグを取得する(S24)。
S24の後、ログ探索部16は、ログ記憶部110に蓄積されたログを探索し、S24で取得したテイントタグが設定されたデータを生成したライブラリ関数を特定する(S25)。例えば、ログ探索部16は、ログ記憶部110に蓄積されたログのうち、S21で見つけたライブラリ関数より時系的に前にあるライブラリ関数のログの中から、S24で取得したテイントタグが設定されたデータを生成したライブラリ関数を特定する。そして、ログ探索部16は、S25で特定したライブラリ関数に対し、S22以降の処理を実行する。
一方、ログ探索部16は、ログ記憶部110に蓄積されたログを参照して、S21で見つけたライブラリ関数に渡された(入力された)データが存在しない場合(S22のNo)、または、渡されたデータにテイントタグが設定されていない場合(S23のNo)、S26へ進む。そして、ログ探索部16は、当該ライブラリ関数を、難読化データを生成した関数として特定する(S26)。
このようにして、情報処理装置は、難読化データを生成したライブラリ関数を特定する。そして、ライブラリ関数が特定できれば、情報処理装置のユーザは、そのライブラリ関数の特性から、難読化データの元情報のデータを推定することができる。
例えば、難読化データを生成したライブラリ関数が、あるファイルの中身を読み取るライブラリ関数であると特定できた場合、そのファイルのファイル名、ファイルパス、所有者情報、そのファイルにつけられた属性情報等から、そのライブラリ関数で読み取られたデータ(元情報)がどのような種類のデータかを推定することができる。他にも、例えば、ライブラリ関数が、レジストリの内容を読み取る関数であると特定できた場合、そのレジストリのレジストリキーやサブキーの情報、そのレジストリのファイルやレジストリキーを作成した、または登録したプロセスを特定することで、元情報の種類を推定することができる。このように元情報の種類を推定することで、情報処理装置のユーザは、マルウェアによりどのような情報が外部に漏洩したかを推定しやすくなる。
また、このような情報処理装置によれば、難読化データを生成したライブラリ関数の特定を行う際、プログラムの動的解析にて得られるログを元に特定を行うので、静的解析のようなコストはかからない。つまり、情報処理装置のユーザは、大きなコストをかけることなく、外部に出力された難読化データの元情報がどのような種類のデータかを推定することができる。なお、前記した元情報のデータの推定は、情報処理装置の備える推定部により行ってもよい。
なお、情報処理装置は、難読化データが外部に出力された際、その出力先(通信先)に関する情報を取得しておいてもよい。例えば、難読化データがシステム内の機密情報に関する情報であると推定される場合、情報処理装置において、そのデータの送信先を情報漏洩データの送信先としてラベル付けし、監視するようにしてもよい。
[ライブラリ関数の特定の例]
ここで、ログ探索部16が、ログ記憶部110に蓄積されたログを用い、難読化データを生成したライブラリ関数を特定する手順の例について説明する。ここでは、図6Aに示したログを用いる場合を例に説明する。
ここで、ログ探索部16が、ログ記憶部110に蓄積されたログを用い、難読化データを生成したライブラリ関数を特定する手順の例について説明する。ここでは、図6Aに示したログを用いる場合を例に説明する。
例えば、ログ探索部16は、図6Aに示すログのうち、send(…,引数2:IN:’yamada’:tag=0x1,…)を起点として、tag=0x1を生成したライブラリ関数を探すと、[post]GetComputerNameが見つかる。これにより、ログ探索部16は、sendで送られたデータを生成したライブラリ関数は、GetComputerNameであると特定でき、仮想マシン10のユーザは、sendで送られたデータは、コンピュータ名であると推測することができる。
一方、ログ探索部16が、図6Bに示したような、ライブラリ関数ごとにテイントタグの値が異なるログを用いてライブラリ関数を特定する場合は以下のようにして行う。
例えば、ログ探索部16は、図6Bに示すログのうち、send(…,引数2:IN:’yamada’:tag=0x2,…)を起点として、tag=0x2を生成したライブラリ関数を探すと、[post]memcpyが見つかる。次にログ探索部16は、[post]memcpy の入力時のログを見ると、[prev] memcpy,引数1:OUT, 引数2:IN:’yamada’:tag=0x1であるので、tag=0x1を生成したライブラリ関数を探すと、[post]GetComputerNameが見つかる。これにより、ログ探索部16は、sendで送られたデータを生成したライブラリ関数はGetComputerNameであると特定する。
なお、ログ探索部16が特定するライブラリ関数は、難読化データの元情報を処理したライブラリ関数(例えば、図6Aおよび図6BにおけるGetComputerName)であってもよいし、その難読化データを出力するまでに呼び出されたライブラリ関数すべて(例えば、図6Aおよび図6BにおけるGetComputerName,memcpy,send)であってもよい。また、ログ探索部16は、その難読化データを出力するまでに呼び出されたライブラリ関数同士の依存関係を示す情報(例えば、send←memcpy←GetComputerName)や、各ライブラリ関数で用いられたデータ等を併せて出力するようにしてもよい。このようにすることで、仮想マシン10のユーザは、難読化データの元情報がどのようなデータであるかを推定しやすくなる。
[第2の実施形態]
また、前記した実施形態においてライブラリ関数実行監視部15は、プログラムにおいてライブラリ関数からの復帰時に、このライブラリ関数が出力したデータにテイントタグが設定されていなかった場合、当該データにテイントタグを設定してもよい。そして、ライブラリ関数実行監視部15は、このライブラリ関数からの出力データと、テイントタグとをログとして、ログ記憶部110に出力するようにしてもよい。
また、前記した実施形態においてライブラリ関数実行監視部15は、プログラムにおいてライブラリ関数からの復帰時に、このライブラリ関数が出力したデータにテイントタグが設定されていなかった場合、当該データにテイントタグを設定してもよい。そして、ライブラリ関数実行監視部15は、このライブラリ関数からの出力データと、テイントタグとをログとして、ログ記憶部110に出力するようにしてもよい。
つまり、ライブラリ関数実行監視部15は、呼び出されたライブラリ関数からの出力データにテイントタグが設定されている場合、ログ生成にあたり、このライブラリ関数からの出力データに設定されるタグをログに出力する。一方、ライブラリ関数実行監視部15は、ライブラリ関数からの出力データにテイントタグが設定されていない場合、ログ生成にあたり、このライブラリ関数の呼び出しを一意に識別するためのタグを設定し、ログに出力する。
このようにすることで、例えば、ライブラリ関数が、暗号化や難読化の処理を行う関数であった場合、このようなライブラリ関数による処理により、このライブラリ関数へ入力されたデータに設定されていたテイントタグが消滅してしまったときでも、次に処理を行うライブラリ関数への入力データにテイントタグを伝播させることができる。これにより、ログ探索部16は、ログのテイントタグを辿ることで、難読化データの元情報を生成したライブラリ関数を特定することができる。
[その他の実施形態]
また、ライブラリ関数実行監視部15は、ライブラリ関数から解析対象のプログラムへ復帰する際にその実行を捉え、このライブラリ関数からの出力データにテイントタグを設定する場合について説明したがこれに限定されない。例えば、ライブラリ関数実行監視部15がライブラリ関数内の命令の仮想物理メモリ10aへの書き込みの動作を見張り、書き込みが発生するごとにテイントタグを設定してもよい。つまり、ライブラリ関数実行監視部15は、ライブラリ関数からの復帰時に一括して、ライブラリ関数からの出力データに対してテイントタグを設定してもよいし、ライブラリ関数内で仮想物理メモリ10aに対する書き込みが発生するごとにテイントタグを設定してもよい。
また、ライブラリ関数実行監視部15は、ライブラリ関数から解析対象のプログラムへ復帰する際にその実行を捉え、このライブラリ関数からの出力データにテイントタグを設定する場合について説明したがこれに限定されない。例えば、ライブラリ関数実行監視部15がライブラリ関数内の命令の仮想物理メモリ10aへの書き込みの動作を見張り、書き込みが発生するごとにテイントタグを設定してもよい。つまり、ライブラリ関数実行監視部15は、ライブラリ関数からの復帰時に一括して、ライブラリ関数からの出力データに対してテイントタグを設定してもよいし、ライブラリ関数内で仮想物理メモリ10aに対する書き込みが発生するごとにテイントタグを設定してもよい。
なお、仮想マシン10は、Binary Instrumentationを利用し特定のプロセスのみを仮想化するプロセス型の仮想マシンを利用してもよいし、アプリケーションとして動作する仮想マシンモニタではなく、XenやKVM(Kernel-based Virtual Machine)のようにホストOSと仮想マシンモニタを同じ層に実装するような仮想化を利用してもよい。また、仮想化実装のため、Intel(登録商標)-VT(Virtualization Technology)のようなHW(ハードウェア)サポートを利用してもよい。
また、ログ探索部16が、図8のS25におけるログの探索において、ライブラリ関数の宣言やプロトタイプ情報を元に、どの引数のテイントタグを用いて探索するかを予め決めておいてもよい。このようにすることで、ログ探索部16は、例えば、ライブラリ関数に複数の引数が入力値(入力データ)として与えられた場合でも、ログの探索を効率的に行うことができ、また、ライブラリ関数を特定する際の特定の精度を向上させることができる。なお、この探索対象の引数は、ライブラリ関数ごとに指定してもよいし、ライブラリ関数の出力引数に応じて、どの入力引数を辿るかを指定しておいてもよい。
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[プログラム]
また、情報処理装置が実行する処理をコンピュータが実行可能な言語で記述した監視プログラムを作成することもできる。この場合、コンピュータが監視プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる監視プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された監視プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、図1等に示した情報処理装置と同様の機能を実現する監視プログラムを実行するコンピュータの一例を説明する。
また、情報処理装置が実行する処理をコンピュータが実行可能な言語で記述した監視プログラムを作成することもできる。この場合、コンピュータが監視プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる監視プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された監視プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、図1等に示した情報処理装置と同様の機能を実現する監視プログラムを実行するコンピュータの一例を説明する。
図9は、監視プログラムを実行するコンピュータを示す図である。図9に示すように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有する。これらの各部は、バス1080によって接続される。
メモリ1010は、ROM(Read Only Memory)1011およびRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。ディスクドライブ1100には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース1050には、例えば、マウス1110およびキーボード1120が接続される。ビデオアダプタ1060には、例えば、ディスプレイ1130が接続される。
ここで、図9に示すように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093およびプログラムデータ1094を記憶する。上記実施形態で説明した監視対象のプログラムは、例えばハードディスクドライブ1090やメモリ1010に記憶される。
また、監視プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えば、ハードディスクドライブ1090に記憶される。具体的には、プログラム実行部13、判定部14、ライブラリ関数実行監視部15およびログ探索部16によって実行される指令が記述されたプログラムモジュールが、ハードディスクドライブ1090に記憶される。
また、監視プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュールやプログラムデータを必要に応じてRAM1012に読み出して、上述した各手順を実行する。
なお、監視プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、監視プログラムに係るプログラムモジュールやプログラムデータは、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
1 ハードウェア
3 仮想マシンソフトウェア
10 仮想マシン
10a 仮想物理メモリ
10b シャドウメモリ
11a 仮想ディスク
11b シャドウディスク
12 仮想CPU
13 プログラム実行部
14 判定部
15 ライブラリ関数実行監視部
16 ログ探索部
18 仮想HWコントローラ
18a テイント情報伝搬部
110 ログ記憶部
3 仮想マシンソフトウェア
10 仮想マシン
10a 仮想物理メモリ
10b シャドウメモリ
11a 仮想ディスク
11b シャドウディスク
12 仮想CPU
13 プログラム実行部
14 判定部
15 ライブラリ関数実行監視部
16 ログ探索部
18 仮想HWコントローラ
18a テイント情報伝搬部
110 ログ記憶部
Claims (4)
- 出力データを生成するために呼び出されたライブラリ関数を特定する情報処理装置であって、
監視対象のプログラムの解析ログを生成する際、前記監視対象のプログラムが呼び出すライブラリ関数を捕捉し、前記ライブラリ関数の呼び出しごとに、前記ライブラリ関数の呼び出しを一意に識別するためのタグを、前記ライブラリ関数からの出力データに設定するライブラリ関数実行監視部と、
前記ライブラリ関数からの出力データを含む前記解析ログを記憶するログ記憶部と、
前記ログ記憶部に記憶された解析ログに設定されたタグをキーとして、当該情報処理装置からの出力データを生成するために呼び出されたライブラリ関数を特定するログ探索部と、
前記特定したライブラリ関数の特性から、前記監視対象のプログラムへの入力データを推定する推定部とを備えることを特徴とする情報処理装置。 - 前記監視対象のプログラムへの入力データは、前記入力データを一意に識別するためのタグが設定されており、
前記情報処理装置は、さらに、
前記プログラムによる実行結果のデータに、前記入力データに設定されたタグを伝播させるテイント情報伝搬部を備え、
前記ライブラリ関数実行監視部は、さらに、
前記ライブラリ関数からの出力データに前記タグが設定されている場合、前記監視対象のプログラムの解析ログを生成する際に、前記ライブラリ関数からの出力データに設定されるタグを、前記ライブラリ関数からの出力データのタグとして伝搬させ、
前記ライブラリ関数からの出力データに前記タグが設定されていない場合、前記監視対象のプログラムの解析ログを生成する際に、前記ライブラリ関数の呼び出しを一意に識別するためのタグを、前記ライブラリ関数からの出力データに設定することを特徴とする請求項1に記載の情報処理装置。 - 前記ログ探索部は、
前記ログ記憶部に記憶された解析ログに設定されたタグのうち、予め決定された引数のタグをキーとして、当該情報処理装置からの出力データを生成するために呼び出されたライブラリ関数を特定することを特徴とする請求項1または2に記載の情報処理装置。 - 情報処理装置が、
監視対象のプログラムの解析ログを生成する際、前記監視対象のプログラムが呼び出すライブラリ関数を捕捉し、前記ライブラリ関数の呼び出しごとに、前記ライブラリ関数の呼び出しを一意に識別するためのタグを、前記ライブラリ関数からの出力データに設定するライブラリ関数実行監視ステップと、
前記ライブラリ関数からの出力データを含む前記解析ログに設定されたタグをキーとして、当該情報処理装置からの出力データを生成するために呼び出されたライブラリ関数を特定するログ探索ステップと、
特定したライブラリ関数の特性から、前記監視対象のプログラムへの入力データを推定する推定ステップとを実行することを特徴とする情報処理方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013104481 | 2013-05-16 | ||
JP2013104481 | 2013-05-16 | ||
PCT/JP2014/058952 WO2014185165A1 (ja) | 2013-05-16 | 2014-03-27 | 情報処理装置、および、情報処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6023317B2 true JP6023317B2 (ja) | 2016-11-09 |
JPWO2014185165A1 JPWO2014185165A1 (ja) | 2017-02-23 |
Family
ID=51898149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015516986A Active JP6023317B2 (ja) | 2013-05-16 | 2014-03-27 | 情報処理装置、および、情報処理方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10129275B2 (ja) |
EP (1) | EP2988242B1 (ja) |
JP (1) | JP6023317B2 (ja) |
CN (1) | CN105210077B (ja) |
WO (1) | WO2014185165A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5965059B2 (ja) * | 2013-05-20 | 2016-08-03 | 日本電信電話株式会社 | 情報処理装置及び特定方法 |
JP6677677B2 (ja) * | 2017-06-21 | 2020-04-08 | 株式会社東芝 | 情報処理装置、情報処理システム、情報処理方法およびプログラム |
US11016874B2 (en) * | 2018-09-19 | 2021-05-25 | International Business Machines Corporation | Updating taint tags based on runtime behavior profiles |
DE112018008070T5 (de) * | 2018-11-16 | 2021-08-12 | Mitsubishi Electric Corporation | Informationsverarbeitungsvorrichtung, informationsverarbeitungsverfahrenund informationsverarbeitungsprogramm |
WO2022195739A1 (ja) * | 2021-03-16 | 2022-09-22 | 日本電信電話株式会社 | 活動痕跡抽出装置、活動痕跡抽出方法および活動痕跡抽出プログラム |
WO2023067801A1 (ja) * | 2021-10-22 | 2023-04-27 | 日本電気株式会社 | データ処理装置、データ処理方法、および記録媒体 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010134325A1 (ja) * | 2009-05-20 | 2010-11-25 | 日本電気株式会社 | 動的データフロー追跡方法、動的データフロー追跡プログラム、動的データフロー追跡装置 |
US20110145918A1 (en) * | 2009-12-15 | 2011-06-16 | Jaeyeon Jung | Sensitive data tracking using dynamic taint analysis |
CN102521543A (zh) * | 2011-12-23 | 2012-06-27 | 中国人民解放军国防科学技术大学 | 一种基于动态污点分析进行消息语义解析的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2008026238A1 (ja) * | 2006-08-28 | 2010-01-14 | 三菱電機株式会社 | データ処理システム及びデータ処理方法及びプログラム |
JP4755658B2 (ja) | 2008-01-30 | 2011-08-24 | 日本電信電話株式会社 | 解析システム、解析方法および解析プログラム |
CN102054149B (zh) | 2009-11-06 | 2013-02-13 | 中国科学院研究生院 | 一种恶意代码行为特征提取方法 |
US8769516B2 (en) | 2010-08-19 | 2014-07-01 | International Business Machines Corporation | Systems and methods for automated support for repairing input model errors |
US8739280B2 (en) * | 2011-09-29 | 2014-05-27 | Hewlett-Packard Development Company, L.P. | Context-sensitive taint analysis |
US9519781B2 (en) | 2011-11-03 | 2016-12-13 | Cyphort Inc. | Systems and methods for virtualization and emulation assisted malware detection |
-
2014
- 2014-03-27 EP EP14797772.2A patent/EP2988242B1/en active Active
- 2014-03-27 CN CN201480028447.8A patent/CN105210077B/zh active Active
- 2014-03-27 WO PCT/JP2014/058952 patent/WO2014185165A1/ja active Application Filing
- 2014-03-27 US US14/891,588 patent/US10129275B2/en active Active
- 2014-03-27 JP JP2015516986A patent/JP6023317B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010134325A1 (ja) * | 2009-05-20 | 2010-11-25 | 日本電気株式会社 | 動的データフロー追跡方法、動的データフロー追跡プログラム、動的データフロー追跡装置 |
US20110145918A1 (en) * | 2009-12-15 | 2011-06-16 | Jaeyeon Jung | Sensitive data tracking using dynamic taint analysis |
CN102521543A (zh) * | 2011-12-23 | 2012-06-27 | 中国人民解放军国防科学技术大学 | 一种基于动态污点分析进行消息语义解析的方法 |
Non-Patent Citations (1)
Title |
---|
JPN6014026977; Clemens KOLBITSCH et al.: 'Effective and Efficient Malware Detection at the End Host' 18th USENIX SECURITY SYMPOSIUM , 200908 * |
Also Published As
Publication number | Publication date |
---|---|
US10129275B2 (en) | 2018-11-13 |
CN105210077B (zh) | 2018-04-13 |
EP2988242B1 (en) | 2019-02-27 |
JPWO2014185165A1 (ja) | 2017-02-23 |
EP2988242A4 (en) | 2016-11-23 |
US20160088007A1 (en) | 2016-03-24 |
WO2014185165A1 (ja) | 2014-11-20 |
CN105210077A (zh) | 2015-12-30 |
EP2988242A1 (en) | 2016-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6023317B2 (ja) | 情報処理装置、および、情報処理方法 | |
Yin et al. | Temu: Binary code analysis via whole-system layered annotative execution | |
US8978141B2 (en) | System and method for detecting malicious software using malware trigger scenarios | |
Xue et al. | NDroid: Toward tracking information flows across multiple Android contexts | |
Henderson et al. | Decaf: A platform-neutral whole-system dynamic binary analysis platform | |
JPWO2010134325A1 (ja) | 動的データフロー追跡方法、動的データフロー追跡プログラム、動的データフロー追跡装置 | |
JP6734481B2 (ja) | コールスタック取得装置、コールスタック取得方法、および、コールスタック取得プログラム | |
US20170103206A1 (en) | Method and apparatus for capturing operation in a container-based virtualization system | |
JP2012079130A (ja) | デバッグ支援プログラム、デバッグ支援装置、及びデバッグ支援方法 | |
US9087137B2 (en) | Detection of custom parameters in a request URL | |
US10997055B2 (en) | Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior | |
US20180189167A1 (en) | Methods, circuits, apparatus, systems and associated software modules for evaluating code behavior | |
JP2018508883A (ja) | 汚染されているデータをトラッキングするためのメカニズム | |
Zeng et al. | Towards automatic inference of kernel object semantics from binary code | |
US11361077B2 (en) | Kernel-based proactive engine for malware detection | |
JP5766650B2 (ja) | 情報処理装置、監視方法および監視プログラム | |
US20220335135A1 (en) | Vulnerability analysis and reporting for embedded systems | |
JP5952218B2 (ja) | 情報処理装置および情報処理方法 | |
Kargén et al. | Inputtracer: A data-flow analysis tool for manual program comprehension of x86 binaries | |
Zhao et al. | Automatic extraction of secrets from malware | |
EP2819055B1 (en) | System and method for detecting malicious software using malware trigger scenarios | |
JP5989599B2 (ja) | 情報処理装置、および、情報処理方法 | |
KR101583306B1 (ko) | 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치 | |
KR101225577B1 (ko) | 어셈블리 언어 코드의 분석 장치 및 방법 | |
JP2015114786A (ja) | 情報処理システム及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160915 |
|
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: 20161004 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161006 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6023317 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |