WO2016093182A1 - 特定装置、特定方法および特定プログラム - Google Patents

特定装置、特定方法および特定プログラム Download PDF

Info

Publication number
WO2016093182A1
WO2016093182A1 PCT/JP2015/084215 JP2015084215W WO2016093182A1 WO 2016093182 A1 WO2016093182 A1 WO 2016093182A1 JP 2015084215 W JP2015084215 W JP 2015084215W WO 2016093182 A1 WO2016093182 A1 WO 2016093182A1
Authority
WO
WIPO (PCT)
Prior art keywords
malware
executed
data
branch
tag
Prior art date
Application number
PCT/JP2015/084215
Other languages
English (en)
French (fr)
Inventor
知範 幾世
一史 青木
剛男 針生
Original Assignee
日本電信電話株式会社
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 日本電信電話株式会社 filed Critical 日本電信電話株式会社
Priority to EP15867444.0A priority Critical patent/EP3232359B1/en
Priority to JP2016563663A priority patent/JP6122562B2/ja
Priority to CN201580066814.8A priority patent/CN107004088B/zh
Priority to US15/528,875 priority patent/US10853483B2/en
Publication of WO2016093182A1 publication Critical patent/WO2016093182A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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
    • G06F21/53Monitoring 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 by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/12Detection or prevention of fraud
    • H04W12/128Anti-malware arrangements, e.g. protection against SMS fraud or mobile malware

Definitions

  • malware that poses threats such as information leaks and unauthorized access has been rampant. When taking measures against such malware, it is ideal to prevent infection itself.
  • methods for infecting malware are becoming increasingly sophisticated and diversified, and it is difficult to prevent all malware infections. Therefore, not only measures to prevent infection by malware but also measures to minimize damage after infection are required.
  • the present invention has been made to solve the above-described problems of the prior art, and a specifying device that can specify a command server even when only one type of command that affects only a branch command is received,
  • An object is to provide a specific method and a specific program.
  • FIG. 1 is a configuration diagram illustrating an overview of the command server specifying device according to the first embodiment.
  • the command server specifying device 10 includes a malware execution environment unit 11, an identification information DB (Data Base) 12, an execution trace DB 13, a memory dump DB 14, an unexecuted region analysis unit 15, and a command server specifying unit 16.
  • DB Data Base
  • the command server specifying device 10 includes a malware execution environment unit 11, an identification information DB (Data Base) 12, an execution trace DB 13, a memory dump DB 14, an unexecuted region analysis unit 15, and a command server specifying unit 16.
  • the malware execution environment unit 11 includes a malware 11a, a guest OS (Operating System) 11b, and a virtual machine monitor 11c, and analyzes the malware while actually operating.
  • the malware 11a is an unauthorized program that causes threats such as information leakage and unauthorized access, and is executed on the guest OS 11b as a program to be analyzed.
  • the guest OS 11b is an environment for dynamically analyzing the malware 11a.
  • the taint analysis technique is one of the methods for automating data flow analysis.
  • a tag is set for the data and the tag is propagated according to the propagation rule to track the propagation of the data in the analysis system.
  • a tag is attribute information given to data, and the origin and type of data are set.
  • the propagation rule is a condition for propagating a tag, and generally, data copy or calculation is set as a propagation condition.
  • the data propagation tracking unit 111 sets a tag that can uniquely identify a transmission source for data received by the malware 11a, and sets an IP (Internet Protocol) address, A tag corresponding to the identification information indicating the data transmission source such as FQDN (Fully Qualified Domain Name) and URL (Uniform Resource Locator) is recorded in the identification information DB 12, and the propagation of the data on the virtual machine monitor 11c is traced. Do. In addition, when new data is generated by receiving data from a plurality of transmission sources, the data propagation tracking unit 111 generates a new tag that can uniquely identify the identification information of the plurality of transmission sources to generate data.
  • IP Internet Protocol
  • the instruction monitoring unit 112 calls a branch instruction or API call that refers to data with a tag indicating that the data is received by the malware 11a among the branch instructions executed by the program code of the malware 11a, and calls these Are recorded in the execution trace DB 13 as a log.
  • the instruction monitoring unit 112 receives API calls and system calls issued by the malware 11a, branch instructions such as a jmp instruction, jcc instruction, call instruction, and ret instruction, a call stack at the time of instruction execution, and a branch instruction.
  • the tag of the referenced data is acquired and recorded in the execution trace DB 13. That is, the instruction monitoring unit 112 acquires a tag of data referred to by the branch instruction executed by the malware 11a and records it in the execution trace DB 13.
  • the identification information DB 12 stores the identification information of communication generated during execution of malware and the tags set for the received data from the communication destination indicated by the identification information in association with each other.
  • FIG. 2 is a diagram illustrating an example of information held in the identification information DB according to the first embodiment. As illustrated in FIG. 2, the identification information DB 12 stores the identification information and a tag attached to the reception data received from the communication destination indicated by the identification information in association with each other.
  • the tag registered in the identification information DB 12 is set by, for example, the data propagation tracking unit 111.
  • the granularity for setting such a tag is arbitrary depending on the granularity of the identification information of the command server to be finally specified. May be set.
  • the data propagation tracking unit 111 may change the tag corresponding to the received data for each FQDN or URL, and may change the tag for each session in consideration of the port number.
  • the data propagation tracking unit 111 sets a tag that can uniquely identify the communication destination.
  • the instruction server specifying unit 16 acquires the communication destination that has affected the branch instruction by acquiring the communication destination corresponding to the tag from the identification information DB 12 for each branch destination, and sets the communication destination common between the branch destinations. It is determined as a command server. That is, the command server specifying unit 16 specifies the command server by performing dynamic analysis of the malware 11a, statically analyzes the branch destination that the malware 11a did not execute for each branch instruction, and performs static analysis. As a result, when a predetermined API or API string is called, it is determined that the transmission source of the data that has affected the branch instruction to be processed is the instruction server.
  • the instruction server specifying device 10 can specify the instruction server by paying attention to the received data that has influenced the branch instruction, its acquisition source, and the API or API sequence that is called at the branch destination. Confirming the API string increases its accuracy. That is, since the command server specifying device 10 also analyzes the branch destination of the unexecuted area, it is possible to specify the command server even when only one type of command that instructs only switching of the program code to be executed is sent. Become.
  • the command server specifying unit 16 acquires an execution log from the execution trace DB 13 (step S201). Subsequently, the command server specifying unit 16 acquires an analysis result from the unexecuted region analysis unit 15 (step S202). Then, the command server specifying unit 16 acquires from the execution trace DB 13 a branch instruction whose received data has influenced the determination of the branch destination (step S203).
  • the command server identification device 10 analyzes the control structure of the branch destination that has not been executed by the malware, thereby specifying the junction point between the branch destination that has been executed by the malware and the branch destination that has not been executed by the malware. Based on the analysis result of the information related to the command from the command to the junction, the identification information of the command server that issues a command to the malware is specified. For this reason, the command server specifying device 10 can specify the command server of the malware 11a with high accuracy.
  • the instruction server specifying device 10 acquires the contents of the memory at the time of execution of the malware 11a, and uses the acquired contents of the memory to obtain information on the branch destination instruction that the malware 11a did not execute after the branch instruction. Perform static analysis. For this reason, the instruction server specifying device 10 does not need to execute the malware 11a many times in order to analyze the branch destination, and thus can reduce the processing load of the analysis.
  • the command server specifying device 10 statically analyzes the non-executed area, and specifies the command server based on the API or system call called in the non-executed area.
  • the embodiment is not limited to this.
  • the command server identification device 10 may analyze the API called in the unexecuted area, the system call, and the control structure of the unexecuted area by dynamically analyzing the unexecuted area.
  • the command server specifying apparatus 10 can branch even in situations where it is difficult to analyze only by static analysis, such as when the call destination is dynamically determined in the course of executing the instruction. APIs, system calls, and control structures present in
  • the runtime state recording unit 113 of the virtual machine monitor 11e records a snapshot of the virtual machine when the malware is executed.
  • the runtime state recording unit 113 acquires a snapshot of the virtual machine that executes the malware 11a, records the acquired snapshot as the runtime state recording file 18, and sets the acquisition location of the snapshot to the runtime state DB 17. To record.
  • the unexecuted area analysis unit 15a notifies the command server specifying unit 16 of the API call, system call, and control structure acquired so far when the error ends.
  • the unexecuted region analysis unit 15a may generate input data based on the constraint condition on the input value obtained by symbolic execution and reanalyze the malware in order to match the context information.
  • the command server specifying device 10a can specify the command server that cannot be specified only by the contents of the memory dump. There is a case. As a result, the command server specifying device 10a can specify the command server with high accuracy. Since the command server specifying device 10a uses a snapshot of a virtual machine, the storage capacity for holding various databases and the processing load of analysis are increased compared to the command server specifying device 10.
  • a program described in a language that can be executed by a computer can be created for the processing executed by the command server specifying devices 10 and 10a described in the above embodiment.
  • a specific program described in a language that can be executed by a computer can be created for the processing executed by the command server specifying device 10 according to the first embodiment.
  • the same effect as the above-described embodiment can be obtained by the computer executing the specific program.
  • the specific program is recorded on a computer-readable recording medium, and the processing similar to that in the first embodiment is realized by recording the specific program on the recording medium and causing the computer to read and execute the specific program. May be.
  • command server specific device 10 shown in FIG. 1 is demonstrated.
  • the memory 1010 includes a ROM (Read Only Memory) 1011 and a RAM (Random Access Memory) 1012 as illustrated in FIG.
  • the ROM 1011 stores a boot program such as BIOS (Basic Input Output System).
  • BIOS Basic Input Output System
  • the hard disk drive interface 1030 is connected to the hard disk drive 1090 as illustrated in FIG.
  • the disk drive interface 1040 is connected to the disk drive 1041 as illustrated in FIG.
  • a removable storage medium such as a magnetic disk or an optical disk is inserted into the disk drive.
  • the serial port interface 1050 is connected to, for example, a mouse 1110 and a keyboard 1120 as illustrated in FIG.
  • the video adapter 1060 is connected to a display 1130, for example, as illustrated in FIG.
  • various data described in the above embodiment is stored as program data in, for example, the memory 1010 or the hard disk drive 1090.
  • the CPU 1020 reads the program module 1093 and program data 1094 stored in the memory 1010 and the hard disk drive 1090 to the RAM 1012 as necessary, and executes a tracking step, an analysis step, and a specific step.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

 指令サーバ特定装置(10)は、マルウェア(11a)の実行時に、マルウェア(11a)が受信したデータに対して、データの送信元の識別情報を一意に特定できるタグを付与し、タグが付与されたデータの伝搬を追跡する。また、指令サーバ特定装置(10)は、追跡されたデータのうち、マルウェア(11a)が実行した分岐命令により参照されたデータのタグを取得する。また、指令サーバ特定装置(10)は、分岐命令の後にマルウェア(11a)が実行しなかった分岐先の命令に関する情報を解析する。そして、指令サーバ特定装置(10)は、解析結果に基づいて、取得されたタグに対応する送信元の識別情報からマルウェア(11a)に指令を発する指令サーバの識別情報を特定する。

Description

特定装置、特定方法および特定プログラム
 本発明は、特定装置、特定方法および特定プログラムに関する。
 近年、情報漏えいや不正アクセスといった脅威をもたらすマルウェアが猛威を振るっている。このようなマルウェアへの対策を行う場合、感染そのものを防ぐことが理想である。しかしながら、マルウェアに感染させる手法は高度化・多様化の一途を辿っており、全てのマルウェア感染を未然に防ぐことは困難な状況にある。そのため、マルウェアへの感染を防止する対策だけでなく、感染後の被害を最小限に抑制する対策が求められている。
 このような感染後の対策への需要を背景に、ブラックリストを用いた感染端末検知や通信遮断などの対策が講じられている。例えば、マルウェアの多くは、感染後に、攻撃者の命令を送信してマルウェアの動作を決定する指令サーバと通信する特徴を持っており、指令サーバからの命令に応じて情報漏えいやさらなる感染活動を行う。このため、指令サーバをあらかじめブラックリスト化しておくことができれば、指令サーバとの通信の検知による感染端末発見や、指令サーバとの通信の遮断による感染端末の無害化が実現できる。しかしながら、この対策はブラックリストをあらかじめ生成しておかなければならない。
 一般に、ブラックリストに掲載すべき通信先はマルウェアを解析することで抽出できるため、マルウェア解析によるブラックリスト生成が行われている。しかし、マルウェアは指令サーバだけでなく解析妨害などの目的のために正規サイトとも通信をするため、正規サイトを含む複数の通信先の中から指令サーバのみを抽出することが求められている。このため、非特許文献1や非特許文献2のように指令サーバがマルウェアを制御する方法に着目した手法の研究が行われている。
 ここで、指令サーバがマルウェアを制御する方法は大きく分けて2つある。1つは、マルウェアが実行するプログラムコードに加えてシステムコールやAPI(Application Programming Interface)の引数を指定する方法である。もう1つは、マルウェアが実行するプログラムコードのみを指定する方法である。
 そこで、非特許文献1では、マルウェアのプログラムコード内の分岐命令と分岐先で実行されるAPI呼出列に着目し、同一の通信先からの受信データによって各分岐先で所定のAPIが呼び出された場合に、かかる通信先を指令サーバとして特定する。また、非特許文献2では、マルウェアの送受信データに関連して発行されたシステムコール間のデータの受け渡し関係に着目し、システムコールやAPIの引数が指定された場合に、指令サーバを特定する。
幾世知範,青木一史,針生剛男「制御フローと通信の関連性分析に基づくC&Cサーバ特定手法の提案」信学技報 ICSS2013-81 G. Jacob, R. Hund, C. Kruegel, and T. Holz, 「Jackstraws: Picking Command and Control Connections from Bot Traffic,」 In Proceedings of the 20th USENIX Conference on Security
 しかしながら、上述した従来の技術では、マルウェアが実行するプログラムコードを指定する命令等、分岐命令にのみ影響を与える指令を1種類のみ受信しただけでは、指令サーバの特定が困難であるという課題があった。
 例えば、実行するプログラムコードのみを指定する制御方法では、指令サーバから受信されるデータは、分岐命令にのみ影響を与え、システムコールやAPIの引数として利用されない。このため、非特許文献2に記載の方法では、マルウェアが実行するプログラムコードのみが指定された場合に、指令サーバを見逃してしまう恐れがある。一方、非特許文献1に記載の方法では、分岐命令に着目するため、いずれの制御方法であっても対処可能であるが、正規サイトも分岐命令に影響を与える場合があるため、指令サーバを精度良く検知するためには、分岐命令にのみ影響を与える指令を2種類以上受信する必要がある。
 本発明は、上述した従来技術の課題を解決するためになされたものであり、分岐命令にのみ影響を与える指令を1種類のみ受信した場合にも、指令サーバを特定することができる特定装置、特定方法および特定プログラムを提供することを目的とする。
 上述した課題を解決し、目的を達成するため、特定装置は、マルウェアの実行時に、該マルウェアが受信したデータに対して、該データの送信元の識別情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する追跡部と、前記追跡部によって追跡されたデータのうち、マルウェアが実行した分岐命令により参照されたデータのタグを取得する監視部と、前記分岐命令の後に前記マルウェアが実行しなかった分岐先の命令に関する情報を解析する解析部と、前記解析部の解析結果に基づいて、前記監視部によって取得されたタグに対応する送信元の識別情報から前記マルウェアに指令を発する指令サーバの識別情報を特定する特定部と、を有することを特徴とする。
 また、特定方法は、特定装置が実行する特定方法であって、マルウェアの実行時に、該マルウェアが受信したデータに対して、該データの送信元の識別情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する追跡工程と、前記追跡工程によって追跡されたデータのうち、マルウェアが実行した分岐命令により参照されたデータのタグを取得する監視工程と、前記分岐命令の後に前記マルウェアが実行しなかった分岐先の命令に関する情報を解析する解析工程と、前記解析工程の解析結果に基づいて、前記監視工程によって取得されたタグに対応する送信元の識別情報から前記マルウェアに指令を発する指令サーバの識別情報を特定する特定工程と、を含んだことを特徴とする。
 また、特定プログラムは、マルウェアの実行時に、該マルウェアが受信したデータに対して、該データの送信元の識別情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する追跡ステップと、前記追跡ステップによって追跡されたデータのうち、マルウェアが実行した分岐命令により参照されたデータのタグを取得する監視ステップと、前記分岐命令の後に前記マルウェアが実行しなかった分岐先の命令に関する情報を解析する解析ステップと、前記解析ステップの解析結果に基づいて、前記監視ステップによって取得されたタグに対応する送信元の識別情報から前記マルウェアに指令を発する指令サーバの識別情報を特定する特定ステップと、をコンピュータに実行させることを特徴とする。
 本願に開示する特定装置、特定方法および特定プログラムは、分岐命令にのみ影響を与える指令を1種類のみ受信した場合にも、指令サーバを特定することができる。
図1は、第1の実施の形態に係る指令サーバ特定装置の概要を示す構成図である。 図2は、第1の実施の形態に係る識別情報DBが保持する情報の一例を示す図である。 図3は、第1の実施の形態に係る実行トレースDBが保持する情報の一例を示す図である。 図4は、第1の実施の形態に係るメモリダンプDBが保持する情報の一例を示す図である。 図5は、第1の実施の形態に係る未実行領域解析部が解析する制御構造の一例を示す図である。 図6は、第1の実施の形態に係る指令サーバ特定装置による未実行領域を静的解析する処理の流れを示すフローチャートである。 図7は、第1の実施の形態に係る指令サーバ特定装置による指令サーバの特定処理の流れを示すフローチャートである。 図8は、第2の実施の形態に係る指令サーバ特定装置の概要を示す構成図である。 図9は、第2の実施の形態に係る実行時状態DBが保持する情報の一例を示す図である。 図10は、第2の実施の形態に係る指令サーバ特定装置による未実行領域を動的解析する処理の流れを示すフローチャートである。 図11は、特定プログラムを実行するコンピュータを示す図である。
 以下の実施の形態では、第1の実施の形態に係る指令サーバ特定装置の構成および処理の流れを順に説明し、その後、最後に第1の実施の形態による効果を説明する。
[第1の実施の形態]
 まず、図1を用いて、指令サーバ特定装置10の構成を説明する。図1は、第1の実施の形態に係る指令サーバ特定装置の概要を示す構成図である。図1に示すように、指令サーバ特定装置10は、マルウェア実行環境部11、識別情報DB(Data Base)12、実行トレースDB13、メモリダンプDB14、未実行領域解析部15、および指令サーバ特定部16を有する。以下にこれらの各部の処理を説明する。
 マルウェア実行環境部11は、マルウェア11a、ゲストOS(Operating System)11bと仮想マシンモニタ11cとから構成され、マルウェアを実際に動作させながら解析する。マルウェア11aは、情報漏洩や不正アクセス等の脅威をもたらす不正プログラムであり、解析対象のプログラムとして、ゲストOS11b上で実行される。ゲストOS11bは、マルウェア11aを動的解析するための環境である。
 仮想マシンモニタ11cは、メモリダンプ取得部110と、データ伝搬追跡部111および命令監視部112によって構成され、マルウェア実行時の動作を監視する。例えば、仮想マシンモニタ11cは、ゲストOS11b上に、仮想CPU(Central Processing Unit)や仮想メモリ等を有する仮想マシンを構築し、マルウェア11aを仮想マシンに実行させ、その動作を監視する。
 メモリダンプ取得部110は、マルウェア11aの動作を監視するため、メモリダンプを取得して、メモリダンプDB14に登録する。例えば、メモリダンプ取得部110は、仮想マシンがマルウェア11aを実行する際における仮想マシンが有する仮想メモリの内容を取得して、取得した内容をメモリダンプDB14に記録する。
 データ伝搬追跡部111は、マルウェア11aが受信したデータに対して送信元および何番目の受信データであるかを一意に特定できるタグを設定し、テイント解析によってマルウェア11aの実行時のデータの伝搬を追跡する。
 ここで、テイント解析技術とは、データフロー解析を自動化する手法の1つであり、データに対してタグを設定し、伝搬ルールに従ってタグを伝搬させることで解析システム内のデータの伝搬を追跡する技術である。また、タグとは、データに対して付与される属性情報であり、データの出自や種類が設定される。また、伝搬ルールとは、タグを伝搬させる条件であり、一般にデータのコピーや演算が伝搬の条件として設定される。
 例えば、データ伝搬追跡部111は、受信データの利用用途を解析する場合には、受信データに対して取得元を一意に特定可能なタグを設定し、データのコピーや演算に応じてタグを伝搬させる。この結果、指令サーバ特定装置10は、APIの引数として渡されたデータにタグが設定されていることを確認することで、受信データがAPIの引数として利用されるデータであることが解析できる。なお、テイント解析技術では、仮想計算機技術を用いて実現されることが一般的であり、データとは異なる専用の記録領域にタグをデータと対応が取れるように保持する。
 データ伝搬追跡部111が実行する処理の一例を説明すると、データ伝搬追跡部111は、マルウェア11aが受信したデータに対して送信元を一意に特定できるタグを設定し、IP(Internet Protocol)アドレスやFQDN(Fully Qualified Domain Name)、URL(Uniform Resource Locator)といったデータの送信元を示す識別情報と対応するタグを識別情報DB12に記録した上で、仮想マシンモニタ11c上でのデータの伝搬の追跡を行う。また、データ伝搬追跡部111は、複数の送信元からデータを受信して新たなデータが生成された場合には、複数の送信元の識別情報を一意に特定できる新たなタグを生成してデータに付与し、該タグが付与されたデータの伝搬を追跡する。また、データ伝搬追跡部111は、関数内で受信データが参照された場合には、関数の戻り値に対してタグを付与し、該タグが付与されたデータの伝搬を追跡する。
 命令監視部112は、マルウェア11aのプログラムコードが実行した分岐命令のうち、マルウェア11aが受信したデータであることを示すタグの付いたデータを参照した分岐命令やAPI呼び出し、およびこれらを呼び出した際のコールスタック等をログとして実行トレースDB13に記録する。具体的には、命令監視部112は、マルウェア11aが実行したAPI呼び出しやシステムコールの発行、jmp命令、jcc命令、call命令、ret命令などの分岐命令、命令実行時のコールスタック、分岐命令が参照したデータのタグを取得し、実行トレースDB13に記録する。すなわち、命令監視部112は、マルウェア11aが実行した分岐命令により参照されたデータのタグを取得し、実行トレースDB13に記録する。
 識別情報DB12は、マルウェア実行時に発生した通信の識別情報と当該識別情報が示す通信先からの受信データに対して設定したタグを対応付けて記憶する。例えば、図2は、第1の実施の形態に係る識別情報DBが保持する情報の一例を示す図である。図2に示すように、識別情報DB12は、識別情報と、識別情報が示す通信先から受信した受信データに付与されたタグとを対応付けて記憶する。
 例えば、図2に示す例では、識別情報であるIPアドレス「192.168.2.150」に対応するタグは「1」であり、識別情報であるIPアドレス「192.168.5.140」に対応するタグは「2」である。このように、識別情報DB12は、通信先とタグを関連付けて記憶しておくことで、データに設定されているタグの確認によって取得元を把握する。
 なお、識別情報DB12に登録されるタグは、例えば、データ伝搬追跡部111によって設定されるが、かかるタグを設定する粒度は、最終的に特定したい指令サーバの識別情報の粒度に応じて、任意の設定を行ってもよい。例えば、データ伝搬追跡部111は、FQDNやURLごとに受信データに対応するタグを変更してもよく、ポート番号も考慮した上でセッションごとにタグを変更してもよい。ただし、データ伝搬追跡部111は、図2に示す例のように、通信先を一意に特定可能なタグを設定する。
 図1に戻り、実行トレースDB13は、命令監視部112によって取得されたログを記憶する。例えば、図3は、第1の実施の形態に係る実行トレースDBが保持する情報の一例を示す図である。実行トレースDB13には、ログを特定するためのID(IDentifier)、マルウェアが解析中に実行した分岐命令、分岐命令を実行した実行アドレス、実行時のコールスタック、実行された分岐先、実行されなかった分岐先、分岐先決定に影響を与えたタグ、API名が記録される。ここで、API名は、分岐先がAPIであった場合に記録される情報である。また、分岐先決定に影響を与えたタグ、および実行されなかった分岐先は、これらが存在した場合にのみ記録される情報である。
 図1に戻り、メモリダンプDB14は、メモリダンプ取得部110がマルウェア11aの実行時に取得したメモリダンプを記録する。例えば、図4は、第1の実施の形態に係るメモリダンプDBが保持する情報の一例を示す図である。図4に示す例では、メモリダンプDB14は、メモリダンプを特定するためのID、実行ログID、およびダンプ内容を対応付けて記録する。ここで、実行ログIDとは、メモリダンプを取得した場所を示す情報として実行トレースDB13に登録されたログのIDである。また、ダンプ内容とは、メモリダンプ取得部110が取得したメモリダンプである。これにより、メモリダンプDB14には、未実行領域解析時に解析の対象となるメモリダンプが特定可能となる。
 図1に戻り、未実行領域解析部15は、マルウェア11aが実行した分岐命令の後に、マルウェア11aが実行しなかった分岐先の命令に関する情報を解析する。具体的には、未実行領域解析部15は、識別情報DB12と、実行トレースDB13と、メモリダンプDB14とに格納された情報に基づいて、マルウェア11aが未実行の分岐先のプログラムコードを静的解析する。また、未実行領域解析部15は、マルウェア11aが実行しなかった分岐先における命令や処理の構造である制御構造を解析することで、マルウェア11aが実行した分岐先と、マルウェア11aが実行しなかった分岐先との合流点を特定する。
 ここで、図5は、第1の実施の形態に係る未実行領域解析部15が解析する制御構造の一例を示す図である。図5に示す例では、外部のサーバから受信したデータにより分岐先が変化する分岐命令によって、マルウェア11aが実行する処理が分岐先Aと分岐先Bとに分岐した後、合流点Cで各分岐が合流する場合の制御構造を示した。図5に示す場合、未実行領域解析部15は、マルウェアを動的解析している際に分岐先Aのみが実行された場合、マルウェア11aによって実行されなかった分岐先Bと分岐先Aとの合流点Cを特定することで、マルウェア11aによって実行された分岐先Bの範囲を特定する。
 続いて、未実行領域解析部15が実行する処理を具体的に説明する。例えば、未実行領域解析部15は、実行トレースDB13を参照し、受信データが分岐先の決定に影響を与えた分岐命令を特定し、特定した分岐命令の各分岐先をマルウェア11aが実行したか否かを判定する。このとき、各分岐命令は、コールスタックと実行アドレスの値(命令ポインタレジスタの値)を考慮して識別される。そして、未実行領域解析部15は、実行トレースDB13から特定した分岐命令について、各分岐先を実行した際のログである実行ログが確認できた場合には、未実行領域は存在しないものとして、特定した分岐命令に対する処理を終了する。
 一方、未実行領域解析部15は、未実行の分岐先が存在した場合、マルウェア11aの実行時に記録されたメモリダンプを用いて、未実行の分岐先で呼び出されるAPIおよび分岐先の制御構造を静的解析する。例えば、未実行領域解析部15は、メモリダンプのデータを逆アセンブルする静的解析を行う。ここで、逆アセンブルの具体的なアルゴリズムとしては、公知のリニアスイープアルゴリズムや再帰的アルゴリズムが用いられる。
 また、未実行領域解析部15は、未実行の分岐先で呼び出されるAPIを、マルウェア11aが実行した分岐先の動的解析中にロードされたモジュールおよびそのエクスポートアドレステーブル、呼び先のアドレス、解析対象のインポートアドレステーブルの情報を照らし合わせることで特定する。なお、未実行領域解析部15は、テイント解析を応用して解析妨害への耐性を持たせた公知のAPI読出し監視手法を用いて、未実行領域を監視してもよい。その後、未実行領域解析部15は、解析結果として、特定したAPIや制御構造を指令サーバ特定部16に通知する。
 なお、本形態では、未実行領域解析部15は、静的解析を用いるため、呼び先のアドレスを動的に決定する場合など、呼び先を特定できない場合は、特定できたAPI呼び出しのみを分岐先で実行されるAPIとして特定し、指令サーバ特定部16に通知する。また、未実行領域解析部15は、制御構造についても分岐先が不明な命令は、考慮しない。
 指令サーバ特定部16は、未実行領域解析部15の解析結果と、実行トレースDB13および識別情報DB12に格納された情報に基づいて、指令サーバを特定する。具体的には、指令サーバ特定部16は、未実行領域解析部15の解析結果に基づいて、命令監視部112によって取得されたタグに対応する送信元の識別情報から、マルウェア11aに指令を発する指令サーバの識別情報を特定する。
 例えば、指令サーバ特定部16は、未実行領域解析部15から、マルウェア11aが未実行の分岐先である未実行領域で呼び出されるAPIおよび未実行領域の制御構造を受信する。また、指令サーバ特定部16は、実行トレースDB13が保持する実行ログと、識別情報DB12が保持する情報とを読み込む。その後、指令サーバ特定部16は、受信データによって分岐先の決定に影響を受けた全分岐命令について、次の条件に当てはまるか否かを確認する。すなわち、指令サーバ特定部16は、分岐命令の各分岐の先に合流点が存在する場合には分岐点と合流点の間で呼び出されているAPI、合流点が存在しない場合には終点までの間で呼び出されているAPIを特定し、特定したAPIに所定のAPIまたは所定のAPI列が含まれているか否かを判定する。
 また、指令サーバ特定部16は、特定したAPIに所定のAPIないしは所定のAPI列が含まれている場合は、分岐する際に参照されたデータのタグを実行トレースDB13から取得した後、タグに紐づいた通信先を識別情報DB12から取得することで、指令サーバを特定する。すなわち、指令サーバ特定部16は、ある分岐命令の分岐先のうち、マルウェア11aが実行していない分岐先で所定のAPIまたはAPI列が呼びされている場合は、かかる分岐命令に影響を与えたデータの送信元を指令サーバと判定する。
 なお、上述した所定のAPIとは、一般的にマルウェアが好んで呼び出す等、マルウェア解析において着目すべきAPIであり、別途リストとして用意し、リストと照らし合わせることで所定のAPIであるか否かを確認できる。また、所定のAPI列とは、マルウェアが指令サーバからの指令を受信した後に実行する、マルウェア解析において着目すべきAPIの順番である。
 ここで、所定のAPI列には、例えば、指令サーバからファイル読出し命令がくる場合を想定し、端末内のファイルを開くAPI、ファイル内データを読み込むAPI、読み込んだデータを外部サーバに送信するAPIといった順番のAPI列が設定される。また、所定のAPI列には、例えば、指令サーバからファイル書込み命令がくる場合を想定し、端末内のファイルを開くAPI、ファイル内データを検索するAPI、ファイル内にデータを書き込むAPI、ファイルを閉じるAPIといった順番のAPI列が設定される。
 これら所定のAPIおよびAPI列は、事前のマルウェア解析によって調査し、リスト化することができる。なお、確認するAPIおよびAPI列は、APIが操作する計算資源に応じて制限してもよいし、事前に解析したマルウェア11aが呼び出したAPIで制限してもよい。また、検知精度向上のため、指令サーバと判定する際に動的解析時に呼び出されたAPIおよびAPI呼び出し列のみを検知の対象としてもよい。
 また、指令サーバ特定部16は、未実行領域で呼び出されるシステムコールに所定のシステムコールが含まれる場合や、所定のシステムコールが所定の順番で呼び出される場合は、分岐命令により参照されたデータのタグに対応する送信元を指令サーバと判定してもよい。また、指令サーバ特定部16は、呼び出されたAPIとシステムコールとの両方に基づいて、指令サーバの判定を行ってもよい。
 なお、指令サーバ特定部16は、上述した処理に加えて、マルウェア11aが実行した分岐先で呼び出したAPIやシステムコール等に基づいて、指令サーバの特定を行う。例えば、指令サーバ特定部16は、複数の分岐先でAPI呼び出しまたはシステムコールの発行が行われた分岐命令について、分岐する際に参照されたデータのタグに対応する識別情報が複数の分岐先において共通する場合には、該識別情報を指令サーバの識別情報として特定する。
 例えば、指令サーバ特定部16は、実行トレースDB13が保持するマルウェア11aが実行したAPI呼び出しやシステムコールの発行、分岐命令およびコールスタックの情報を分析することで、複数の分岐先でAPI呼び出しやシステムコールの発行が行われた分岐命令を抽出し、API呼び出しやシステムコールの発行が行われた分岐先に分岐する際に参照したデータのタグを実行トレースDB13から取得する。
 さらに、指令サーバ特定部16は、識別情報DB12からタグに対応する通信先を取得することで分岐命令に影響を与えた通信先を分岐先ごとに取得し、分岐先間に共通する通信先を指令サーバと判定する。すなわち、指令サーバ特定部16は、マルウェア11aの動的解析を行うことで、指令サーバを特定するとともに、分岐命令ごとに、マルウェア11aが実行しなかった分岐先を静的解析し、静的解析の結果、所定のAPIやAPI列が呼びされている場合は、処理対象となる分岐命令に影響を与えたデータの送信元を指令サーバであると判定する。
 また、未実行領域を解析することで、分岐の合流点が明らかとなり、結果として動的解析中に実行された側にのみ所定のAPI列が呼び出されている場合も考えられる。かかる場合にも、指令サーバ特定部16は、マルウェア11aが呼び出すAPI列に基づいて、指令サーバを特定することができる。
 なお、指令サーバ特定部16は、マルウェア11aが実行した分岐先から、他の公知の手法を用いて、指令サーバの特定を行ってもよい。例えば、指令サーバ特定部16は、マルウェア11aが実行した分岐先で、所定のAPIまたはシステムコールが呼びされていた場合等には、処理対象となる分岐命令に影響を与えたデータの送信元を指令サーバであると判定してもよい。
 このように、指令サーバ特定装置10は、マルウェア11aの実行時の受信データにタグを付与した上で伝搬を追跡し、マルウェア11aが実行したAPI呼び出し、分岐命令、命令実行時のコールスタックおよび分岐命令で参照したデータに設定されていたタグを監視し、取得する。そして、指令サーバ特定装置10は、受信データによって分岐先を決定された分岐命令において、マルウェア11aにより実行されなかった分岐先で呼び出されるAPIもしくはAPI列、および制御構造に基づいて、指令サーバを特定する。
 ここで、指令サーバがマルウェア11aを制御する場合は、プログラムコードに加えてシステムコールやAPIの引数を指定する方法と、実行するプログラムコードのみを指定する方法とのいずれの指令においても、分岐命令に影響を与えることで実行するプログラムコードの指定が行われる。このため、指令サーバ特定装置10は、呼びされるAPIまたはAPI列等を確認することで、実際に通信先がマルウェアを操作し得るのか否かを判断できるため、通信先は指令サーバであると特定できる。
 また、指令サーバ特定装置10は、分岐命令に影響を与えた受信データとその取得元、および分岐先で呼び出されるAPIもしくはAPI列に着目することで指令サーバを特定でき、複数の分岐先において当該API列を確認することでその確度は高くなる。つまり指令サーバ特定装置10は、未実行領域の分岐先も分析を行うので、実行するプログラムコードの切り換えのみを指示する指令が1種類のみ送られてきた場合においても、指令サーバの特定が可能となる。
 なお、指令サーバ特定装置10により特定された指令サーバは、既知の悪性なIPアドレスやURL等を掲載した指令サーバのブラックリストに登録される。指令サーバのIPアドレス等の識別情報をブラックリストに登録することで、指令サーバとの通信を遮断したり、感染端末の発見・隔離を行うことが可能である。
[指令サーバ特定装置による処理]
 次に、図6、図7を用いて、第1の実施形態に係る指令サーバ特定装置10による処理を説明する。図6は、第1の実施の形態に係る指令サーバ特定装置による未実行領域を静的解析する処理の流れを示すフローチャートである。図7は、第1の実施の形態に係る指令サーバ特定装置による指令サーバの特定処理の流れを示すフローチャートである。
 まず、図6を用いて、第1の実施の形態に係る指令サーバ特定装置10の未実行領域解析部15による未実行領域の解析処理の流れについて説明する。図6に示すように、未実行領域解析部15は、実行トレースDB13から受信データが分岐先の決定に影響を与えた分岐命令を取得する(ステップS101)。続いて、未実行領域解析部15は、取得した分岐命令をすべて確認したか否かを判定し(ステップS102)、確認していない場合は(ステップS102:No)、全分岐先が実行されたか否かを判定する(ステップS103)。
 ここで、未実行領域解析部15は、全分岐先が実行されていない場合(ステップS103:No)、すなわち、未実行領域が存在する場合は、未実行領域を静的解析する(ステップS104)。続いて、未実行領域解析部15は、静的解析した結果、特定した制御構造と未実行領域で呼び出されるAPIを指令サーバ特定部16に通知し(ステップS105)、再度ステップS102を実行する。一方、未実行領域解析部15は、全分岐先が実行されていた場合は(ステップS103:Yes)、再度、ステップS102を実行する。そして、未実行領域解析部15は、取得した分岐命令をすべて確認した場合は(ステップS102:Yes)、処理を終了する。
 次に、図7を用いて、第1の実施の形態に係る指令サーバ特定装置10による指令サーバの特定処理の流れについて説明する。図7に示すように、指令サーバ特定部16は、実行トレースDB13から実行ログを取得する(ステップS201)。続いて、指令サーバ特定部16は、未実行領域解析部15から、解析結果を取得する(ステップS202)。そして、指令サーバ特定部16は、実行トレースDB13から、受信データが分岐先の決定に影響を与えた分岐命令を取得する(ステップS203)。
 そして、指令サーバ特定部16は、取得した分岐命令をすべて確認したか否かを判定し(ステップS204)、確認していない場合は(ステップS204:No)、確認していない分岐命令について、以下の処理を実行する。すなわち、指令サーバ特定部16は、分岐点から合流点ないしはプログラムによって実行される処理の終点までに呼び出されるAPI、すなわち、未実行領域で呼びされるAPIを取得する(ステップS205)。そして、指令サーバ特定部16は、取得したAPIに所定のAPIないしはAPI列が呼び出されているか否かを判定し(ステップS206)、呼び出されている場合は(ステップS206:Yes)、処理対象とした分岐命令で参照されたデータのタグに紐づく識別情報を識別情報DB12から取得する(ステップS207)。
 その後、指令サーバ特定部16は、取得した識別情報が示す通信先を指令サーバと判定し(ステップS208)、再度ステップS204を実行する。一方、指令サーバ特定部16は、取得したAPIに所定のAPIないしはAPI列が呼び出されていない場合は(ステップS206:No)、再度ステップS204を実行する。また、指令サーバ特定部16は、取得した分岐命令をすべて確認した場合は(ステップS204:Yes)、処理を終了する。
[第1の実施の形態の効果]
 上述してきたように、指令サーバ特定装置10は、マルウェア11aの実行時に、マルウェア11aが受信したデータに対して、データの送信元の識別情報を一意に特定できるタグを付与し、タグが付与されたデータの伝搬を追跡する。また、指令サーバ特定装置10は、追跡されたデータのうち、マルウェア11aが実行した分岐命令により参照されたデータのタグを取得する。また、指令サーバ特定装置10は、分岐命令の後にマルウェア11aが実行しなかった分岐先の命令に関する情報を解析し、解析結果に基づいて、取得されたタグに対応する送信元の識別情報からマルウェア11aに指令を発する指令サーバの識別情報を特定する。
 このため、指令サーバ特定装置10は、分岐命令にのみ影響を与える指令を1種類のみ受信した場合にも、指令サーバを特定することができる。また、指令サーバ特定装置10は、マルウェアの通信内容が難読化・暗号化されている場合において指令サーバを自動で特定することができる。
 また、指令サーバ特定装置10は、分岐命令の後にマルウェア11aが実行しなかった分岐先で、マルウェア11aが呼び出すAPIまたはシステムコールの少なくとも一方を解析する。そして、指令サーバ特定装置10は、分岐命令の後にマルウェア11aが実行しなかった分岐先で所定のAPIが呼び出される場合、または、所定のシステムコールが呼び出される場合は、分岐命令により参照されたデータのタグに対応する送信元の識別情報を、指令サーバの識別情報とする。このため、指令サーバ特定装置10は、所定のAPIやシステムコールを呼び出すマルウェア11aの指令サーバを特定することができる。
 また、指令サーバ特定装置10は、分岐命令の後にマルウェア11aが実行しなかった分岐先で所定のAPIが所定の順番で呼び出される場合、または、所定のシステムコールが所定の順番で呼び出される場合は、分岐命令により参照されたデータのタグに対応する送信元の識別情報を、指令サーバの識別情報とする。このため、指令サーバ特定装置10は、所定のAPIやシステムコールを所定の順番で呼び出すマルウェア11aの指令サーバを特定することができる。
 また、指令サーバ特定装置10は、マルウェアが実行しなかった分岐先の制御構造を解析することで、マルウェアが実行した分岐先とマルウェアが実行しなかった分岐先との合流点を特定し、分岐命令から合流点までの命令に関する情報の解析結果に基づいて、マルウェアに指令を発する指令サーバの識別情報を特定する。このため、指令サーバ特定装置10は、精度良く、マルウェア11aの指令サーバを特定することができる。
 また、指令サーバ特定装置10は、マルウェア11aの実行時におけるメモリの内容を取得し、取得されたメモリの内容を用いて、分岐命令の後にマルウェア11aが実行しなかった分岐先の命令に関する情報を静的解析する。このため、指令サーバ特定装置10は、分岐先を解析するために何度もマルウェア11aを実行させずとも良いので、解析の処理負荷を軽減することができる。
[第2の実施の形態]
 上述した第1の実施の形態では、指令サーバ特定装置10が未実行領域を静的解析し、未実行領域で呼びされるAPIやシステムコールに基づいて、指令サーバを特定した。しかしながら、実施の形態は、これに限定されるものではない。例えば、指令サーバ特定装置10は、未実行領域を動的解析することによって、未実行領域で呼びされるAPI、システムコール、および未実行領域の制御構造を解析してもよい。かかる処理を実行した場合、指令サーバ特定装置10は、命令を実行する過程で動的にcall命令での呼び先が決定される場合など、静的解析だけでは解析が困難な状況においても分岐先に存在するAPI、システムコール、および制御構造を解析することができる。
 以下、図を用いて、第2の実施の形態にかかる指令サーバ特定装置10aについて説明する。なお、以下の説明では、第1の実施の形態と同様の処理を実行するものについては、同一の符号を付し、以下の説明を省略する。
 まず、図8を用いて、指令サーバ特定装置10aの構成を説明する。図8は、第2の実施の形態に係る指令サーバ特定装置の概要を示す構成図である。図8に示す例では、指令サーバ特定装置10aは、マルウェア実行環境部11d、識別情報DB12、実行トレースDB13、実行時状態DB17、実行時状態記録ファイル18、未実行領域解析部15a、および指令サーバ特定部16を有する。
 また、マルウェア実行環境部11dは、マルウェア11a、ゲストOS11b、仮想マシンモニタ11eを有し、マルウェア実行環境部11と同様に、マルウェア11aを実際に動作させながら解析する。
 仮想マシンモニタ11eは、データ伝搬追跡部111、命令監視部112、実行時状態記録部113を有し、仮想マシンモニタ11cと同様に、ゲストOS11b上で動作する仮想マシンが実行するマルウェア11aの実行時の動作を監視する。
 ここで、仮想マシンモニタ11eが有する実行時状態記録部113は、マルウェア実行時における仮想マシンのスナップショットを記録する。例えば、実行時状態記録部113は、マルウェア11aを実行する仮想マシンのスナップショットを取得し、取得したスナップショットを実行時状態記録ファイル18として記録するとともに、スナップショットの取得場所を実行時状態DB17に記録する。
 なお、実行時状態記録部113がスナップショットを取得する処理は、仮想マシンモニタ11eが一般的に具備するスナップショット機能を利用することで取得できる。ただし、データを追跡するためにデータ伝搬追跡部111がデータに付与したタグに関わる情報を記録する機能は一般的には存在しない。このため、実行時状態記録部113は、スナップショット取得時に、タグが保存されているメモリ領域内のデータ全てを実行時状態記録ファイル18にスナップショットと合わせて保存する。一般に、スナップショットは、メモリ内容を含む仮想マシンの全ての状態の差分を記録できるので、メモリダンプを用いて仮想マシンの状態を記録するよりもよりも、多くの情報を取得できる。なお、以下の説明では、データ伝搬追跡部111が取得した仮想マシンのスナップショットと、タグが保存されているメモリ領域内のデータとを合わせてスナップショットと記載する。
 実行時状態DB17は、実行時状態記録部113が取得したスナップショットを取得した場所を記録する。例えば、図9は、第2の実施の形態にかかる実行時状態DBが保持する情報の一例を示す図である。図9に示すように、実行時状態DB17は、スナップショットのIDと、スナップショットを取得した際に実行される命令に対応する実行ログの実行ログIDと、ファイル名とを対応付けて記憶する。ここで、ファイル名とは、実行時状態記録ファイル18に記録されたスナップショットのバイナリデータに付与される名称であり、例えば、スナップショットの取得日時等である。
 図8に戻り、実行時状態記録ファイル18とは、実行時状態記録部113が取得したスナップショットのバイナリデータである。なお、実行時状態記録ファイル18は、指令サーバ特定装置10aが有する所定の記憶装置もしくは外部装置が有する所定の記憶装置に記録される。
 未実行領域解析部15aは、マルウェア11aが実行していない未実行領域で呼びされるAPI、システムコール、および制御構造を動的解析する。具体的には、未実行領域解析部15aは、実行トレースDB13から受信データが分岐先の決定に影響を与えた分岐命令を取得し、各分岐先が実行されたか否かを判定する。
 そして、未実行領域解析部15aは、未実行の分岐先が存在した場合、実行時状態DB17に記録されたスナップショットを用いて、分岐命令実行時の状態を復元し、復元した箇所から未実行の分岐先を強制的に実行し、未実行の分岐先で呼びされるAPI、システムコール、および制御構造を動的解析する。例えば、未実行領域解析部15aは、復元した箇所から、単純に命令ポインタレジスタを強制的に分岐先のアドレスに書き換える強制実行か、分岐条件をシンボル化して実行するシンボリック実行によって未実行の分岐先を強制的に実行する。そして、未実行領域解析部15aは、分岐先で呼び出されるAPIやシステムコール、および制御構造を動的に解析する。
 なお、いずれの場合も強制的な実行であるため、コンテキスト情報が一致せず、途中で解析対象プログラムがエラー終了してしまう可能性がある。このため、未実行領域解析部15aは、エラー終了した場合、それまでに取得されたAPI呼び出し、システムコール、および制御構造に関する情報を指令サーバ特定部16に通達する。なお、未実行領域解析部15aは、コンテキスト情報を一致させるため、シンボリック実行によって得た入力値に対する制約条件に基づいて入力データを生成し、マルウェアを解析し直してもよい。
 上述した処理の結果、指令サーバ特定部16は、未実行領域解析部15aが動的解析した未実行領域で呼び出されるAPI、システムコール、および制御構造に基づいて、指令サーバの特定を行う。例えば、指令サーバ特定部16は、未実行領域で所定のAPIやシステムコール、若しくは所定のAPI列等が呼び出されている場合は、処理対象となる分岐命令に影響を与えたデータの送信元を指令サーバと判定する。
[未実行領域解析部による処理]
 次に、図10を用いて、第2の実施形態に係る指令サーバ特定装置10aによる処理を説明する。図10は、第2の実施の形態に係る指令サーバ特定装置による未実行領域を動的解析する処理の流れを示すフローチャートである。図10に示すように、未実行領域解析部15aは、実行トレースDB13から受信データが分岐先の決定に影響を与えた分岐命令を取得する(ステップS301)。続いて、未実行領域解析部15aは、取得した分岐命令をすべて確認したか否かを判定し(ステップS302)、確認していない場合は(ステップS302:No)、全分岐先が実行されたか否かを判定する(ステップS303)。
 ここで、未実行領域解析部15aは、全分岐先が実行されていない場合(ステップS303:No)、すなわち、未実行領域が存在する場合は、以下の処理を実行する。まず、未実行領域解析部15aは、実行時状態DB17を参照し、処理対象となる分岐命令実行時のスナップショットを特定し、実行時状態記録ファイル18から特定したスナップショットを取得して復元する(ステップS304)。そして、未実行領域解析部15aは、未実行領域を強制的に実行して動的解析する(ステップS305)。その後、未実行領域解析部15aは、特定した制御構造と未実行領域で呼び出されるAPIを指令サーバ特定部16に通知し(ステップS306)、再度ステップS302を実行する。一方、未実行領域解析部15aは、全分岐先が実行されていた場合は(ステップS303:Yes)、再度、ステップS302を実行する。そして、未実行領域解析部15aは、取得した分岐命令をすべて確認した場合は(ステップS302:Yes)、処理を終了する。
[第2の実施の形態の効果]
 上述したように、指令サーバ特定装置10aは、マルウェア11aを実行した仮想マシンのスナップショットを記録する。そして、指令サーバ特定装置10aは、スナップショットを用いて、分岐命令の後にマルウェア11aが実行しなかった分岐先を強制的に実行させ、分岐先の命令に関する情報を動的解析する。
 すなわち、指令サーバ特定装置10aは、仮想マシンのスナップショットを用いて、マルウェア11aが実行しなかった分岐先を動的解析するので、メモリダンプの内容だけでは特定できない指令サーバを特定することができる場合がある。この結果、指令サーバ特定装置10aは、指令サーバを精度良く特定することができる。なお、指令サーバ特定装置10aは、仮想マシンのスナップショットを用いるため、指令サーバ特定装置10と比較して、各種データベースを保持するための記憶容量や解析の処理負担が増大する。
[他の実施の形態]
 これまで第1の実施の形態および第2の実施の形態について説明したが、開示する発明は上述した実施の形態以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では他の実施の形態について説明する。
[メモリダンプの保持方法について]
 上述した指令サーバ特定装置10は、取得したメモリダンプをメモリダンプDB14にDB形式で保存した。しかしながら、実施の形態は、これに限定されるものではない。例えば、指令サーバ特定装置10は、取得したメモリダンプをバイナリ形式のファイルで保存するとともに、メモリダンプのIDやメモリダンプを取得した日時をファイル名に設定してもよい。すなわち、指令サーバ特定装置10は、メモリダンプを任意の方式で記録することができる。
[テイント解析について]
 上述した指令サーバ特定装置10、10aは、テイント解析を用いて、データの伝搬を追跡した。ここで、一般にデータ伝搬の追跡に利用されるテイント解析技術には、タグの伝搬途切れという問題が存在する。この問題を緩和するため、指令サーバ特定装置10、10aは、関数の引数から戻り値にタグを伝搬させる手法や、特定のタグを読み込んだ関数では関数の戻り値および関数内での書き込み内容に対してタグを伝搬させる手法といった強制伝搬の仕組みを用いてもよい。
[システム構成等]
 また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
 一例を挙げると、データ伝搬追跡部111と命令監視部112とを一つの部として統合してもよく、仮想マシンモニタ11cを仮想マインと仮想マシンを監視する監視部とに分離してもよい。また、識別情報DB12、実行トレースDB13、メモリダンプDB14は、指令サーバ特定装置10の外部装置が保持し、指令サーバ特定装置10とネットワーク経由で接続するようにしてもよい。また、未実行領域解析部15と指令サーバ特定部16とを別の装置がそれぞれ有し、ネットワークに接続されて協働することで、上記した指令サーバ特定装置10の機能を実現するようにしてもよい。
 さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
 また、本実施の形態において説明した各処理のうち、自動的に行なわれるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
[プログラム]
 また、上記実施形態において説明した指令サーバ特定装置10、10aが実行する処理について、コンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、第1の実施の形態に係る指令サーバ特定装置10が実行する処理について、コンピュータが実行可能な言語で記述した特定プログラムを作成することもできる。この場合、コンピュータが特定プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる特定プログラムをコンピュータで読み取り可能な記録媒体に記録して、この記録媒体に記録され特定プログラムをコンピュータに読み込ませて実行することにより上記第1の実施の形態と同様の処理を実現してもよい。以下に、図1に示した指令サーバ特定装置10と同様の機能を実現する特定プログラムを実行するコンピュータの一例を説明する。
 図11は、特定プログラムを実行するコンピュータを示す図である。図11に例示するように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070とを有し、これらの各部はバス1080によって接続される。
 メモリ1010は、図11に例示するように、ROM(Read Only Memory)1011及びRAM(Random Access Memory)1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、図11に例示するように、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、図11に例示するように、ディスクドライブ1041に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブに挿入される。シリアルポートインタフェース1050は、図11に例示するように、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、図11に例示するように、例えばディスプレイ1130に接続される。
 ここで、図11に例示するように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、上記の特定プログラムは、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。
 また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出し、追跡ステップ、解析ステップ、特定ステップを実行する。
 なお、特定プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してCPU1020によって読み出されてもよい。あるいは、特定プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
 これまでいくつかの実施の形態を説明したが、本願が開示する技術はこれらの実施の形態に限定されるものではない。すなわち、これらの実施の形態は、その他の様々な形態で実施されることが可能であり、種々の省略、置き換え、変更を行うことができる。
 これらの実施例やその変形は、本願が開示する技術に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
 10、10a 指令サーバ特定装置
 11、11d マルウェア実行環境部
 11a マルウェア
 11b ゲストOS
 11c、11e 仮想マシンモニタ
 110 メモリダンプ取得部
 111 データ伝搬追跡部
 112 命令監視部
 113 実行時状態記録部
 12 識別情報DB
 13 実行トレースDB
 14 メモリダンプDB
 15、15a 未実行領域解析部
 16 指令サーバ特定部
 17 実行時状態DB
 18 実行時状態記録ファイル

Claims (8)

  1.  マルウェアの実行時に、該マルウェアが受信したデータに対して、該データの送信元を識別する識別情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する追跡部と、
     前記追跡部によって追跡されたデータのうち、マルウェアが実行した分岐命令により参照されたデータのタグを取得する監視部と、
     前記分岐命令の後に前記マルウェアが実行しなかった分岐先の命令に関する情報を解析する解析部と、
     前記解析部の解析結果に基づいて、前記監視部によって取得されたタグに対応する送信元の識別情報から前記マルウェアに指令を発する指令サーバの識別情報を特定する特定部と、
     を有することを特徴とする特定装置。
  2.  前記解析部は、前記分岐命令の後に前記マルウェアが実行しなかった分岐先で、当該マルウェアが呼び出すAPIまたはシステムコールの少なくとも一方を解析し、
     前記特定部は、前記分岐命令の後に前記マルウェアが実行しなかった分岐先で所定のAPIが呼び出される場合、または、所定のシステムコールが呼び出される場合は、該分岐命令により参照されたデータのタグに対応する送信元の識別情報を、前記指令サーバの識別情報とすることを特徴とする請求項1に記載の特定装置。
  3.  前記特定部は、前記分岐命令の後に前記マルウェアが実行しなかった分岐先で所定のAPIが所定の順番で呼び出される場合、または、所定のシステムコールが所定の順番で呼び出される場合は、該分岐命令により参照されたデータのタグに対応する送信元の識別情報を、前記指令サーバの識別情報とすることを特徴とする請求項2に記載の特定装置。
  4.  前記解析部はさらに、前記マルウェアが実行しなかった分岐先の制御構造を解析することで、前記マルウェアが実行した分岐先と前記マルウェアが実行しなかった分岐先との合流点を特定し、
     前記特定部は、前記分岐命令から前記合流点までの命令に関する情報の解析結果に基づいて、前記マルウェアに指令を発する指令サーバの識別情報を特定することを特徴とする請求項1に記載の特定装置。
  5.  前記マルウェアの実行時におけるメモリの内容を取得する取得部を有し、
     前記解析部は、前記取得部が取得したメモリの内容を用いて、前記分岐命令の後に前記マルウェアが実行しなかった分岐先の命令に関する情報を静的解析することを特徴とする請求項1に記載の特定装置。
  6.  前記マルウェアを実行した仮想マシンのスナップショットを記録する記録部を有し、
     前記解析部は、前記記録部が記録したスナップショットを用いて、前記分岐命令の後に前記マルウェアが実行しなかった分岐先を強制的に実行させ、当該分岐先の命令に関する情報を動的解析することを特徴とする請求項1に記載の特定装置。
  7.  特定装置が実行する特定方法であって、
     マルウェアの実行時に、該マルウェアが受信したデータに対して、該データの送信元の識別情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する追跡工程と、
     前記追跡工程によって追跡されたデータのうち、マルウェアが実行した分岐命令により参照されたデータのタグを取得する監視工程と、
     前記分岐命令の後に前記マルウェアが実行しなかった分岐先の命令に関する情報を解析する解析工程と、
     前記解析工程の解析結果に基づいて、前記監視工程によって取得されたタグに対応する送信元の識別情報から前記マルウェアに指令を発する指令サーバの識別情報を特定する特定工程と、
     を含んだことを特徴とする特定方法。
  8.  マルウェアの実行時に、該マルウェアが受信したデータに対して、該データの送信元の識別情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する追跡ステップと、
     前記追跡ステップによって追跡されたデータのうち、マルウェアが実行した分岐命令により参照されたデータのタグを取得する監視ステップと、
     前記分岐命令の後に前記マルウェアが実行しなかった分岐先の命令に関する情報を解析する解析ステップと、
     前記解析ステップの解析結果に基づいて、前記監視ステップによって取得されたタグに対応する送信元の識別情報から前記マルウェアに指令を発する指令サーバの識別情報を特定する特定ステップと、
     をコンピュータに実行させるための特定プログラム。
PCT/JP2015/084215 2014-12-09 2015-12-04 特定装置、特定方法および特定プログラム WO2016093182A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP15867444.0A EP3232359B1 (en) 2014-12-09 2015-12-04 Identification device, identification method, and identification program
JP2016563663A JP6122562B2 (ja) 2014-12-09 2015-12-04 特定装置、特定方法および特定プログラム
CN201580066814.8A CN107004088B (zh) 2014-12-09 2015-12-04 确定装置、确定方法及记录介质
US15/528,875 US10853483B2 (en) 2014-12-09 2015-12-04 Identification device, identification method, and identification program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2014-249119 2014-12-09
JP2014249119 2014-12-09

Publications (1)

Publication Number Publication Date
WO2016093182A1 true WO2016093182A1 (ja) 2016-06-16

Family

ID=56107367

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/084215 WO2016093182A1 (ja) 2014-12-09 2015-12-04 特定装置、特定方法および特定プログラム

Country Status (5)

Country Link
US (1) US10853483B2 (ja)
EP (1) EP3232359B1 (ja)
JP (1) JP6122562B2 (ja)
CN (1) CN107004088B (ja)
WO (1) WO2016093182A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017216924A1 (ja) * 2016-06-16 2017-12-21 三菱電機株式会社 鍵生成源特定装置、鍵生成源特定方法及び鍵生成源特定プログラム
EP3293660A1 (en) * 2016-09-08 2018-03-14 Kaspersky Lab AO System and method of detecting malicious code in files
JP2018142927A (ja) * 2017-02-28 2018-09-13 沖電気工業株式会社 マルウェア不正通信対処システム及び方法
JP2019527877A (ja) * 2016-06-24 2019-10-03 シーメンス アクティエンゲゼルシャフト Plcの仮想的なパッチおよびセキュリティコンテキストの自動配信
US10460099B2 (en) 2016-09-08 2019-10-29 AO Kaspersky Lab System and method of detecting malicious code in files
JP2022537079A (ja) * 2019-08-16 2022-08-23 グーグル エルエルシー フォレンジクスのための動作ベースのvmリソースキャプチャ

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10176325B1 (en) * 2016-06-21 2019-01-08 Symantec Corporation System and method for dynamic detection of command and control malware
US11176251B1 (en) * 2018-12-21 2021-11-16 Fireeye, Inc. Determining malware via symbolic function hash analysis
US11403392B2 (en) * 2020-01-06 2022-08-02 International Business Machines Corporation Security handling during application code branching
US20210344690A1 (en) * 2020-05-01 2021-11-04 Amazon Technologies, Inc. Distributed threat sensor analysis and correlation

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015137235A1 (ja) * 2014-03-13 2015-09-17 日本電信電話株式会社 特定装置、特定方法および特定プログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409719B2 (en) * 2004-12-21 2008-08-05 Microsoft Corporation Computer security management, such as in a virtual machine or hardened operating system
US8621607B2 (en) * 2006-05-18 2013-12-31 Vmware, Inc. Computational system including mechanisms for tracking taint
US8510827B1 (en) 2006-05-18 2013-08-13 Vmware, Inc. Taint tracking mechanism for computer security
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
US7870610B1 (en) * 2007-03-16 2011-01-11 The Board Of Directors Of The Leland Stanford Junior University Detection of malicious programs
US20090007100A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Suspending a Running Operating System to Enable Security Scanning
US9298918B2 (en) * 2011-11-30 2016-03-29 Elwha Llc Taint injection and tracking
US9798873B2 (en) 2011-08-04 2017-10-24 Elwha Llc Processor operable to ensure code integrity
US9443085B2 (en) * 2011-07-19 2016-09-13 Elwha Llc Intrusion detection using taint accumulation
US8677487B2 (en) 2011-10-18 2014-03-18 Mcafee, Inc. System and method for detecting a malicious command and control channel
EP2787725A4 (en) * 2011-11-30 2015-07-01 Japan Broadcasting Corp RECEIVING DEVICE, PROGRAM AND RECEPTION PROCEDURES
CN103795679A (zh) 2012-10-26 2014-05-14 珠海市君天电子科技有限公司 一种钓鱼网站的快速检测方法及系统
US9600665B2 (en) 2012-12-21 2017-03-21 Nippon Telegraph And Telephone Corporation Monitoring device and monitoring method
CN103914652B (zh) 2013-01-09 2018-05-22 腾讯科技(深圳)有限公司 恶意程序控制指令识别方法及装置
JP6063340B2 (ja) 2013-05-01 2017-01-18 エヌ・ティ・ティ・コミュニケーションズ株式会社 指令元特定装置、指令元特定方法、及び指令元特定プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015137235A1 (ja) * 2014-03-13 2015-09-17 日本電信電話株式会社 特定装置、特定方法および特定プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TOMONORI IKUSE ET AL.: "Identifying C&C Server by Analyzing Relation between Control Flow and Communications", IEICE TECHNICAL REPORT, vol. 113, no. 502, 20 March 2014 (2014-03-20), pages 137 - 142, XP055250109 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017216924A1 (ja) * 2016-06-16 2017-12-21 三菱電機株式会社 鍵生成源特定装置、鍵生成源特定方法及び鍵生成源特定プログラム
JP6395986B2 (ja) * 2016-06-16 2018-09-26 三菱電機株式会社 鍵生成源特定装置、鍵生成源特定方法及び鍵生成源特定プログラム
JPWO2017216924A1 (ja) * 2016-06-16 2018-10-11 三菱電機株式会社 鍵生成源特定装置、鍵生成源特定方法及び鍵生成源特定プログラム
JP2019527877A (ja) * 2016-06-24 2019-10-03 シーメンス アクティエンゲゼルシャフト Plcの仮想的なパッチおよびセキュリティコンテキストの自動配信
US11022949B2 (en) 2016-06-24 2021-06-01 Siemens Aktiengesellschaft PLC virtual patching and automated distribution of security context
EP3293660A1 (en) * 2016-09-08 2018-03-14 Kaspersky Lab AO System and method of detecting malicious code in files
US10460099B2 (en) 2016-09-08 2019-10-29 AO Kaspersky Lab System and method of detecting malicious code in files
JP2018142927A (ja) * 2017-02-28 2018-09-13 沖電気工業株式会社 マルウェア不正通信対処システム及び方法
JP2022537079A (ja) * 2019-08-16 2022-08-23 グーグル エルエルシー フォレンジクスのための動作ベースのvmリソースキャプチャ
JP7144642B2 (ja) 2019-08-16 2022-09-29 グーグル エルエルシー フォレンジクスのための動作ベースのvmリソースキャプチャ

Also Published As

Publication number Publication date
JPWO2016093182A1 (ja) 2017-04-27
US10853483B2 (en) 2020-12-01
EP3232359B1 (en) 2019-05-01
CN107004088B (zh) 2020-03-31
EP3232359A1 (en) 2017-10-18
CN107004088A (zh) 2017-08-01
JP6122562B2 (ja) 2017-04-26
US20170329962A1 (en) 2017-11-16
EP3232359A4 (en) 2018-05-02

Similar Documents

Publication Publication Date Title
JP6122562B2 (ja) 特定装置、特定方法および特定プログラム
JP6088714B2 (ja) 特定装置、特定方法および特定プログラム
US10055585B2 (en) Hardware and software execution profiling
US8782791B2 (en) Computer virus detection systems and methods
US10382455B2 (en) Identifying apparatus, identifying method, and identifying program
US8474039B2 (en) System and method for proactive detection and repair of malware memory infection via a remote memory reputation system
US11314864B2 (en) Memory layout based monitoring
US20150302191A1 (en) Program execution apparatus and program analysis apparatus
US10645099B1 (en) Malware detection facilitated by copying a memory range from an emulator for analysis and signature generation
US10412101B2 (en) Detection device, detection method, and detection program
US10893090B2 (en) Monitoring a process on an IoT device
Yin et al. Automatic malware analysis: an emulator based approach
WO2023067665A1 (ja) 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム
US11599637B1 (en) Systems and methods for blocking malicious script execution
JPWO2019049478A1 (ja) コールスタック取得装置、コールスタック取得方法およびコールスタック取得プログラム
US20240028719A1 (en) System and method for detecting malicious code by an interpreter in a computing device
US20240241953A1 (en) System and method for detecting malicious code by an interpreter in a computing device
Wang et al. VMCloak: Toward a stealthy in-VM agent execution
陳悦庭 et al. Computer Security Symposium 2014 22-24 October 2014

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15867444

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016563663

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15528875

Country of ref document: US

REEP Request for entry into the european phase

Ref document number: 2015867444

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE