JPWO2014188780A1 - 情報処理装置及び特定方法 - Google Patents

情報処理装置及び特定方法 Download PDF

Info

Publication number
JPWO2014188780A1
JPWO2014188780A1 JP2015518136A JP2015518136A JPWO2014188780A1 JP WO2014188780 A1 JPWO2014188780 A1 JP WO2014188780A1 JP 2015518136 A JP2015518136 A JP 2015518136A JP 2015518136 A JP2015518136 A JP 2015518136A JP WO2014188780 A1 JPWO2014188780 A1 JP WO2014188780A1
Authority
JP
Japan
Prior art keywords
communication destination
program
tag
information
activation
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
JP2015518136A
Other languages
English (en)
Other versions
JP5965059B2 (ja
Inventor
誠 岩村
誠 岩村
裕平 川古谷
裕平 川古谷
剛男 針生
剛男 針生
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
Application granted granted Critical
Publication of JP5965059B2 publication Critical patent/JP5965059B2/ja
Publication of JPWO2014188780A1 publication Critical patent/JPWO2014188780A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • 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
    • G06F21/562Static detection
    • 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
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本願の開示する情報処理装置(10)は、付与部(45b)と、特定部(45d)とを有する。付与部(45b)は、解析対象であるプログラムによって通信先装置から受信されたデータに、当該通信先装置を識別可能なタグを付与する。特定部(45d)は、新たなプログラムの起動又は起動予約を検出したときに、当該新たなプログラムが実行するデータに前記タグが付与されている場合、当該タグにより識別される通信先装置を特定する。

Description

本発明は、情報処理装置及び特定方法に関する。
従来、マルウェアの解析手法には、大別して静的解析と動的解析とがある。静的解析は、マルウェアのプログラムコードを解析することでマルウェアが備える機能を把握する手法である。ただし、静的解析は、マルウェアが備える機能を網羅的に解析するので、多くの人手による作業が伴う。一方、動的解析は、マルウェアの振る舞いを記録する環境を用意し、この環境内でマルウェアを動作させることで、マルウェアの機能を解析する手法である。動的解析は、マルウェアの振る舞いを抽出する解析であるので、静的解析と比較して自動化が容易である。
こうしたマルウェアの動的解析の1つとして、動的テイント解析がある。動的テイント解析では、例えば仮想マシンにおいて、仮想CPU(Central Processing Unit)が、仮想メモリや仮想ディスク等でマルウェアが読み書きするデータの流れを追跡する。より具体的には、動的テイント解析は、テイントタグの付与、テイントタグの伝搬、テイントタグの検出という3つのフェーズから構成される。
例えば、マルウェアによる機密情報の漏洩を検出する場合、仮想CPUは、以下の処理を実行する。まず、第1のフェーズでは、仮想CPUは、マルウェアを動作させる。そして、仮想CPUは、機密情報を含むファイルがメモリに読み込まれる段階で、機密情報を含むファイルのメモリにおける格納位置に対応付けて、機密情報を意味するテイントタグを付与する。通常、このテイントタグは、OS(Operating System)が管理する物理メモリとは別に用意された領域(「シャドウメモリ」とも呼ばれる)に格納される。この領域は、OSやアプリケーション(マルウェアを含む)からはアクセスできないように実装される。
その後、第2のフェーズでは、仮想CPUは、レジスタとメモリ領域との間の転送命令等を監視することで、機密情報のコピーに応じてテイントタグが伝搬する。そして、第3のフェーズでは、仮想CPUは、ネットワークインタフェースから出力されるデータに、機密情報を意味するテイントタグが付与されているかを確認する。仮想CPUは、出力されるデータにテイントタグが付与されている場合、機密情報が外部へ出力されようとしたことを検出する。
また、動的テイント解析を応用した例として、デバッガにおけるブレークポイントをテイントタグにより実現する技術がある。この技術では、利用者が、プログラムを中断させたい箇所(「ブレークポイント」を設定する箇所)に対して、テイントタグを事前に割り当てる。そして、仮想CPUは、実行する命令に対応付けてテイントタグが付与されているかを検査し、テイントタグが付与されている場合にプログラムを中断する。
特開2012−83798号公報
しかしながら、上記の従来技術では、マルウェアの配布先を特定することができないという問題がある。
例えば、マルウェアによる通信をネットワークで遮断することは、マルウェアによる被害を抑制する効果を期待できる。一方、動的解析において得られるマルウェアの通信先には、端末内の情報を漏洩させる先以外にも、様々なホストが含まれる。例えば、新たなマルウェアを配布するサイト(「マルウェア配布サイト」という)や、マルウェア自身がネットワークに接続されていることを確認するためのサイトなどがある。マルウェア自身がネットワークに接続されていることを確認するためのサイトは、一般的な検索エンジンなどの正規サイトであることが多い。
このため、マルウェアの通信先の全てを一般ユーザがアクセスすべきでない通信先として扱う場合、一般ユーザは、例えば検索エンジンなどの正規サイトへもアクセスできなくなる。すなわち、マルウェアの通信先をネットワークでのマルウェア対策に活用することは困難である。このようなことから、マルウェア配布サイトを特定する手法が望まれる。
開示の技術は、上述に鑑みてなされたものであって、マルウェアの配布先を特定することを目的とする。
本願の開示する情報処理装置は、付与部と、特定部とを有する。付与部は、解析対象であるプログラムによって通信先装置から受信されたデータに、当該通信先装置を識別可能なタグを付与する。特定部は、新たなプログラムの起動又は起動予約を検出したときに、当該新たなプログラムが実行するデータに前記タグが付与されている場合、当該タグにより識別される通信先装置を特定する。
開示する情報処理装置の一つの態様によれば、マルウェアの配布先を特定することができるという効果を奏する。
図1は、情報処理装置の構成例を示す図である。 図2は、仮想ハードウェアの構成を示す機能ブロック図である。 図3は、通信先情報テーブルが記憶する情報の一例を示す図である。 図4は、付与部による処理動作を説明するための図である。 図5は、付与部によるテイントタグを付与する処理の手順を示すフローチャートである。 図6は、特定部によるマルウェア配布サイトを特定する処理の手順を示すフローチャートである。 図7は、コンピュータシステムによる処理を実行するための特定プログラムによる情報処理がコンピュータを用いて具体的に実現されることを示す図である。
以下に、開示する情報処理装置及び特定方法の実施形態について、図面に基づいて詳細に説明する。なお、本実施形態により開示する発明が限定されるものではない。
(第1の実施形態)
図1は、情報処理装置10の構成例を示す図である。図1に示すように、情報処理装置10は、物理マシン20と、仮想マシン30とを有する。物理マシン20は、ハードウェア21と、ホストOS(Operating System)22と、仮想マシンソフトウェア23とを有する。
ハードウェア21は、情報処理装置10を構成する電子回路や周辺機器であり、例えば、メモリ、CPU(Central Processing Unit)などである。また、ハードウェア21は、後述する解析対象プログラム33とその解析を行うための環境を格納したディスクのイメージファイルを記憶する。つまり、ハードウェア21は、仮想マシン30上で起動させるゲストOS32のイメージを記憶する。なお、ゲストOS32については、後述する。
ホストOS22は、仮想マシン30を動作させる基盤となるOSであり、ハードウェア21を用いて実行される。仮想マシンソフトウェア23は、ハードウェア21を用いて仮想マシン30を提供するソフトウェアであり、ここでは、仮想マシン30を動作させる。例えば、仮想マシンソフトウェア23は、仮想ディスク、仮想メモリ、仮想CPUなどを含んだ仮想ハードウェア31をゲストOS32に割り当てて、仮想マシン30を動作させる。
仮想マシン30は、例えば、仮想ハードウェア31と、ゲストOS32と、解析対象プログラム33とを有する。仮想ハードウェア31は、仮想マシンソフトウェア23から提供された仮想ディスク、仮想物理メモリ、仮想CPUなどを用いてゲストOS32を動作させて、各種処理を実行する仮想的な情報処理装置である。ゲストOS32は、解析対象プログラム33を動作させる。解析対象プログラム33は、情報処理装置10において解析対象であるプログラムやアプリケーションであり、例えばマルウェアである。
また、図1に示す例では、情報処理装置10は、任意のネットワーク5を介して、複数の通信先装置2a〜2cと接続する。ここでは、通信先装置2aは、マルウェア配布サイトであり、通信先装置2bは、検索サイトであり、通信先装置2cは、機密情報漏洩先サイトであるものとする。マルウェア配布サイトは、マルウェアに対してデータを送信する装置である。検索サイトは、例えば、検索エンジンを含んだ装置であり、マルウェアによって通信の接続を確認するのに利用される。機密情報漏洩先サイトは、マルウェアが取得した例えば機密情報を受信する装置である。なお、マルウェア配布サイトと機密情報漏洩先サイトとが同一であってもよい。また、以下では、通信先装置2a〜2cを区別することなしに一般化して呼ぶ場合には、通信先装置2と記載する。なお、情報処理装置10が接続する通信先装置2の数は、図1に図示した数に限定されるものではない。
このような構成において、情報処理装置10の仮想マシン30は、解析対象プログラム33によって通信先装置2から受信されたデータに、当該通信先装置2を識別可能なテイントタグを付与する。そして、仮想マシン30は、新たなプログラムの起動又は起動予約を検出したときに、当該新たなプログラムが実行するデータにテイントタグが付与されている場合、当該テイントタグにより識別される通信先装置2をマルウェア配布サイトとして特定する。
次に、図2を用いて、図1に示した仮想ハードウェア31の機能構成を説明する。図2は、仮想ハードウェア31の構成を示す機能ブロック図である。仮想ハードウェア31は、ゲストOS32を動作させて、各種処理を実行する仮想的な情報処理装置であり、仮想メモリ41a、シャドウメモリ41b、仮想ディスク42a、シャドウディスク42b、仮想NIC(Network Interface Card)43、通信先情報テーブル44、及び仮想CPU45を有する。なお、仮想メモリ41a、シャドウメモリ41b、仮想ディスク42a、シャドウディスク42b、仮想NIC43、通信先情報テーブル44、及び仮想CPU45などは、仮想マシンソフトウェア23から提供される。
仮想メモリ41aは、情報処理装置10が有する物理メモリにおける所定領域を仮想マシン30で動作するゲストOS32が使用するメモリとして割り当てることで実現された仮想的なメモリである。例えば、仮想メモリ41aは、仮想CPU45によって仮想ディスク42aから読み出されたプログラムやデータを記憶する。
シャドウメモリ41bは、データが記憶される仮想メモリ41a上の格納位置を特定する情報と、データが監視対象であることを示すテイントタグとを対応付けた位置情報を記憶するデータ構造体である。例えば、シャドウメモリ41bの構造としては、単純な配列構造でもよいし、ツリー構造としてテイントタグを保持してもよい。また、格納する情報としては、テイントタグとしての値を持たせてもよいし、テイント情報を保持させたデータ構造体へのポインタとして持たせてもよい。
また、シャドウメモリ41bは、APIやシステムコールが記憶される仮想メモリ41a上の格納位置を特定する情報と、ブレークポイント情報とを対応付けて記憶するデータ構造体である。ここで言う「ブレークポイント情報」とは、解析対象プログラム33により生成されたプロセスを停止させて、解析用の処理を実行することを示す情報である。具体的には、ブレークポイント情報には、APIやシステムコールが通信用であることを示す通信用情報や、APIやシステムコールが新たなプログラムの起動用又はプログラムの起動予約用であることを示す起動用情報が含まれる。なお、これらのブレークポイント情報は、利用者によって事前に設定される。
また、シャドウメモリ41bが記憶するAPIやシステムコールには、ネットワーク通信用の標準API、新たなプログラムの起動や起動予約をするシステムコールや標準API等が含まれる。より具体的には、例えば、OSがWindows(登録商標)である場合、新たなプログラムの起動や起動予約を実行するシステムコールには、NtCreateProcessが含まれ、新たなプログラムの起動や起動予約を実行する標準APIには、CreateProcess/WinExec/CreateServiceが含まれる。また、例えば、OSがLinux(登録商標)である場合、新たなプログラムの起動や起動予約を実行するシステムコールには、execveが含まれ、新たなプログラムの起動や起動予約を実行する標準APIには、system/execlが含まれる。
また、OSがWindows(登録商標)である場合、OS起動時に実行されるスタートアップフォルダや特定のレジストリへの書き込みも、新たなプログラムの起動予約に使われる。このため、シャドウメモリ41bは、OS起動時に実行されるスタートアップフォルダや特定のレジストリへ書き込むシステムコールや標準APIが記憶される仮想メモリ41a上の格納位置を示す情報と、起動用情報(ブレークポイント情報)とを対応付けて記憶する。
また、新たなプログラムが動的リンクライブラリの形態をとる場合もある。この動的リンクライブラリを読み込む標準APIには、LoadLibrary(Windows(登録商標)の標準API)が含まれる。このため、シャドウメモリ41bは、LoadLibraryなどの動的リンクライブラリを読み込むシステムコールや標準APIが記憶される仮想メモリ41a上の格納位置を示す情報と、起動用情報(ブレークポイント情報)とを対応付けて記憶する。なお、以下では、システムコールや標準APIのことを「監視対象命令」と言う場合がある。
仮想ディスク42aは、情報処理装置10が有する物理ディスクにおける所定領域を仮想マシン30で動作するゲストOS32が使用する領域として割り当てることで実現された仮想的なディスクである。例えば、仮想ディスク42aは、仮想CPU45が実行対象とするプログラムや、プログラムの処理対象となるデータ等を記憶する。
シャドウディスク42bは、データが記憶される仮想ディスク42a上の格納位置を特定する情報と、データが監視対象であることを示すテイントタグとを対応付けた位置情報を記憶するデータ構造体である。例えば、シャドウディスク42bの構造としては、単純な配列構造でもよいし、ツリー構造としてテイントタグを保持してもよい。また、格納する情報としては、テイントタグとしての値を持たせてもよいし、テイント情報を保持させたデータ構造体へのポインタとして持たせてもよい。
また、シャドウディスク42bは、APIやシステムコールが記憶される仮想メモリ41a上の格納位置を特定する情報と、ブレークポイント情報とを対応付けて記憶するデータ構造体である。なお、シャドウディスク42bが記憶するAPIやシステムコール及びブレークポイント情報は、シャドウメモリ41bが記憶するAPIやシステムコール及びブレークポイント情報と同様であるので、詳細な説明は省略する。
仮想NIC43は、ゲストOS32からNICとして認識され、物理CPUで動作するソフトウェアとして実現される。また仮想NIC43が物理NICを制御することで、ゲストOS32は物理NICを通じて通信先装置2と通信することができる。
通信先情報テーブル44は、テイントタグが付与されたデータの送信元の通信先装置2を示す情報を記憶する。言い換えると、通信先情報テーブル44は、テイントタグと通信先情報とを関連付けて管理する。図3は、通信先情報テーブル44が記憶する情報の一例を示す図である。図3に示すように、通信先情報テーブル44は、「テイントタグ」、「IP(Internet Protocol)バージョン」、「送信元アドレス」、「宛先アドレス」、「IPプロトコル」、「送信元ポート番号」、及び「宛先ポート番号」を対応付けた情報を記憶する。
ここで、通信先情報テーブル44が記憶する「テイントタグ」は、テイントタグの識別子を示す。例えば、「テイントタグ」には、「1」、「2」等のデータ値が格納される。また、通信先情報テーブル44が記憶する「IPバージョン」は、IPプロトコルのバージョンを示す。例えば、「IPバージョン」には、IPv4であることを示す「4」等のデータ値が格納される。また、通信先情報テーブル44が記憶する「送信元アドレス」は、パケットの送信元装置のアドレスを示す。例えば、「送信元アドレス」には、「192.168.0.1」、「172.16.0.1」等のデータ値が格納される。また、通信先情報テーブル44が記憶する「宛先アドレス」は、パケットの受信装置のアドレスを示す。言い換えると、「宛先アドレス」は、情報処理装置10に割り当てられたアドレスを示す。例えば、「宛先アドレス」には、「10.0.0.1」が格納される。また、通信先情報テーブル44が記憶する「IPプロトコル」は、プロトコル番号を示す。例えば、「IPプロトコル」には、TCP(Transmission Control Protocol)であることを示す「6」、UDP(User Datagram Protocol)であることを示す「17」等のデータ値が格納される。また、通信先情報テーブル44が記憶する「送信元ポート番号」は、送信元のプログラムを特定するポート番号を示す。例えば、「送信元ポート番号」には、「80」、「20000」等のデータ値が格納される。また、通信先情報テーブル44が記憶する「宛先ポート番号」は、受信元のプログラムを特定するポート番号を示す。例えば、「宛先ポート番号」には、「10000」、「10001」等のデータ値が格納される。
一例をあげると、図3に示す通信先情報テーブル44は、テイントタグ「1」が付与されたデータは、送信元アドレスが「192.168.0.1」である装置からIPv4のプロトコルでTCP層による通信によって受信したことを示す。なお、「送信元ポート番号」と「宛先ポート番号」に関しては、IPプロトコルが6か17の場合のみ取得される。
仮想CPU45は、情報処理装置10が有する物理CPUにおける所定処理能力を仮想マシン30で動作するゲストOS32が使用するCPUとして割り当てることで実現された仮想的なCPUである。仮想CPU45は、例えば、プログラム実行部45aと、付与部45bと、更新部45cと、特定部45dとを有する。
また、仮想CPU45は、図示しない仮想レジスタとシャドウレジスタとを有する。仮想レジスタは、情報処理装置10が有する物理レジスタ・物理メモリ・物理ディスクにおける所定領域を仮想マシン30で動作するゲストOS32が使用する領域として割り当てることで実現された仮想的なレジスタである。例えば、仮想レジスタは、仮想CPU45によって仮想メモリ41aから読み出されたプログラムやデータを記憶する。また、シャドウレジスタは、データが記憶される仮想レジスタ上の格納位置を特定する情報と、データが監視対象であることを示すテイントタグとを対応付けた位置情報を記憶するデータ構造体である。
また、シャドウレジスタは、APIやシステムコールが記憶される仮想レジスタ上の格納位置を特定する情報と、ブレークポイント情報とを対応付けて記憶するデータ構造体である。なお、シャドウレジスタが記憶するAPIやシステムコール及びブレークポイント情報は、シャドウメモリ41bが記憶するAPIやシステムコール及びブレークポイント情報と同様であるので、詳細な説明は省略する。
プログラム実行部45aは、仮想ディスク42aに記憶されるプログラムを実行する処理部である。例えば、プログラム実行部45aは、仮想ディスク42aからプログラムを読み出して仮想メモリ41aに展開する。つまり、プログラム実行部45aは、実行対象のプログラムを仮想ディスク42aから読み出して仮想メモリ41aに格納した後、仮想メモリ41aに記憶させた実行対象のプログラムを実行する。
付与部45bは、解析対象プログラム33によって通信先装置2から受信されたデータに、当該通信先装置2を識別可能なタグを付与する。例えば、付与部45bは、仮想NIC43がパケットを受信したことを検出すると、当該パケット内から通信先情報を取得し、通信先情報テーブル44内に存在しないテイントタグを生成する。そして、付与部45bは、通信先情報とテイントタグとを関連付けた状態で、通信先情報テーブル44に格納する。また、付与部45bは、受信したパケットに含まれるデータが抽出され、仮想メモリ41aにコピーされる際に、テイントタグを書き込み先の仮想メモリ41aと対応するシャドウメモリ41bに格納する。ここで、パケットから抽出されたデータには、プログラム及びプログラムが参照するデータが含まれる。なお、以下では、プログラム及びプログラムが参照するデータのことを単に「データ」と呼ぶ。
図4を用いて、付与部45bによる処理動作を説明する。図4は、付与部45bによる処理動作を説明するための図である。図4に示す例では、図3に示した通信先情報テーブル44に、新たな通信先情報を格納する場合を説明する。付与部45bは、通信先情報を取得し、テイントタグを生成する。ここで、付与部45bは、図3に示した例では、テイントタグとして1から5までが使用されていたので、新たなテイントタグとして「6」を生成する。なお、付与部45bは、通信先情報テーブル44内で同じ通信先情報のレコードが存在する場合、このレコードのテイントタグをここで利用するテイントタグとしてもよい。
そして、付与部45bは、通信先情報(ここではIPバージョン・送信元アドレス・宛先アドレス・IPプロトコル・送信元ポート番号・宛先ポート番号)とテイントタグ(ここでは「6」)とを関連付けた状態で、通信先情報テーブル44に格納する。図4に示す例では、付与部45bは、テイントタグ「6」に対応付けて、IPバージョンが「4」、送信元アドレスが「192.168.3.1」、宛先アドレスが「10.0.0.1」、IPプロトコルが「6」、送信元ポート番号が「80」、宛先ポート番号が「10003」を通信先情報として通信先情報テーブル44に格納する。
更新部45cは、データのフローに応じて、データの格納位置を示す情報と、タグとを対応付けた位置情報を更新する。例えば、更新部45cは、プログラム実行部45aが解析対象プログラム33を実行している間、データがコピーされて他の記憶領域に格納されたり、他の記憶領域に移動されたりすると、コピー先や移動先となる記憶領域の格納位置に関連付けて、テイントタグを格納する。なお、ここで言う「記憶領域」には、仮想レジスタ、仮想メモリ41a及び仮想ディスク42aが含まれる。
より具体的には、更新部45cは、解析対象プログラム33を実行している最中に生じる仮想レジスタと仮想メモリ41a間及び仮想メモリ41aと仮想ディスク42a間のデータのコピーや、演算命令が生じた場合、データのコピー先や移動先となる記憶領域の格納位置に関連付けて、各記憶領域に対応するシャドウレジスタ、シャドウメモリ41b及びシャドウディスク42bにテイントタグを格納する。言い換えると、更新部45cは、コピー先や移動先となる記憶領域の格納位置に対して、テイントタグを伝搬させる。なお、以下では、シャドウレジスタ、シャドウメモリ41b及びシャドウディスク42bをあわせてシャドウ領域と呼ぶ場合がある。
また、更新部45cは、解析対象プログラム33を実行している最中にAPIやシステムコールのコピーや移動が生じた場合、APIやシステムコールのコピー先や移動先となる記憶領域の格納位置に関連付けて、各記憶領域に対応するシャドウ領域にブレークポイント情報を格納する。言い換えると、更新部45cは、コピー先や移動先となる記憶領域の格納位置に対して、ブレークポイント情報を伝搬させる。
特定部45dは、新たなプログラムの起動又は起動予約を検出したときに、当該新たなプログラムが実行するデータにテイントタグが付与されているか否かを判断し、テイントタグが付与されている場合に、当該テイントタグにより識別される通信先装置2を特定する。例えば、特定部45dは、プログラム実行部45aが解析対象プログラム33を実行している間、新たなプログラムの起動や起動予約の実施を常に監視する。新たなプログラムの起動や起動予約は、ゲストOS32が提供するシステムコールや標準APIを介して実施される場合がある。このため、特定部45dは、例えば、解析対象プログラム33によって呼び出されたシステムコールや標準APIの格納位置に対応付けて起動用情報(ブレークポイント情報)が設定されているか否かを判定する。ここで、特定部45dは、システムコールや標準APIの格納位置に対応付けて起動用情報(ブレークポイント情報)が設定されている場合、新たなプログラムの起動や起動予約の実施を検出する。
また、特定部45dは、新たなプログラムの起動や起動予約の実施を検出した場合、新たに実行又は実行予約されるプログラムの格納領域に対応するシャドウ領域から、対応するテイントタグが存在するか否かを判定する。なお、ここでいうプログラムの格納領域とは、仮想ディスク42aに格納されたファイルを意味する。例えば、Windows(登録商標)の標準APIであるWinExecには、その引数として、コマンドラインへのポインタが指定される。また、特定部45dは、プログラムの起動を検出した場合は、プログラムの格納領域に対応するシャドウ領域に、テイントタグが存在するか否かを判定し、プログラムの起動予約を検出した場合は、プログラム及びプログラムが参照するデータの格納領域に対応するシャドウ領域に、テイントタグが存在するか否かを判定する。
特定部45dは、新たに実行又は実行予約されるプログラムの格納領域に対応するシャドウ領域に、テイントタグが存在すると判定した場合、このテイントタグを取得する。そして、特定部45dは、当該テイントタグに対応する通信先情報を通信先情報テーブル44から取得し、取得した通信先情報をマルウェア配布サイトの通信先情報に特定する。
一例をあげると、特定部45dは、通信先情報テーブル44が図3に示した情報を記憶する場合であり、シャドウ領域から取得したテイントタグを「4」とすると、テイントタグ「4」に対応する通信先情報を特定する。すなわち、特定部45dは、アドレスが「192.168.1.1」、プロトコルが「6」、ポート番号が「80」である通信先装置2を特定する。そして、特定部45dは、特定した通信先装置2をマルウェア配布サイトに関する情報として利用者に提供する。なお、特定部45dは、テイントタグが存在しないと判定した場合、引き続きプログラムの実行を続ける。
また、解析対象プログラム33によって、システムコールや標準API(監視対象命令)を介さずに、メモリ上に新たに展開されたプログラムが直接実行される場合がある。このため特定部45dは、システムコールや標準APIが実行されることを検出したとき以外にも、実行する機械語命令の格納位置に対応付けてテイントタグが付与されているか否かを判定する。ここで、特定部45dは、機械語命令の格納位置に対応付けてテイントタグが付与されていると判定した場合、テイントタグに対応する通信先情報を通信先情報テーブル44から取得し、取得した通信先情報をマルウェア配布サイトの通信先情報に特定する。
次に、図5及び図6を用いて、仮想CPU45による処理の手順を説明する。図5は、付与部45bによるテイントタグを付与する処理の手順を示すフローチャートである。図5に示すように、付与部45bは、パケットを受信したか否かを判定する(ステップS101)。ここで、付与部45bは、パケットを受信したと判定した場合(ステップS101、Yes)、受信したパケットから通信先情報を抽出する(ステップS102)。なお、付与部45bは、パケットを受信しなかったと判定した場合(ステップS101、No)、ステップS101の判定処理を繰り返す。
付与部45bは、ステップS102の処理の後、テイントタグを生成する(ステップS103)。そして、付与部45bは、通信先情報とテイントタグとを対応付けて、通信先情報テーブル44に格納する(ステップS104)。また、付与部45bは、受信したデータを仮想メモリ41aに格納し(ステップS105)、テイントタグをシャドウメモリ41bに格納する(ステップS106)。
図6は、特定部45dによるマルウェア配布サイトを特定する処理の手順を示すフローチャートである。図6に示すように、特定部45dは、新たなプログラムの起動又は起動予約の実施を検出したか否かを判定する(ステップS201)。ここで、特定部45dは、新たなプログラムの起動又は起動予約の実施を検出したと判定した場合(ステップS201、Yes)、プログラムの格納領域を特定する(ステップS202)。なお、特定部45dは、新たなプログラムの起動又は起動予約の実施を検出しなかったと判定した場合(ステップS201、No)、ステップS201の判定処理を繰り返す。
特定部45dは、ステップS202の処理の後、シャドウ領域にテイントタグが存在するか否かを判定する(ステップS203)。ここで、特定部45dは、シャドウ領域にテイントタグが存在すると判定した場合(ステップS203、Yes)、テイントタグを取得する(ステップS204)。なお、特定部45dは、シャドウ領域にテイントタグが存在しないと判定した場合(ステップS203、No)、処理を終了する。
特定部45dは、ステップS204の処理の後、通信先情報テーブル44を参照してテイントタグに対応する通信先情報を取得する(ステップS205)。そして、特定部45dは、マルウェア配布サイトを特定する(ステップS206)。
上述したように、第1の実施形態に係る情報処理装置10において、仮想CPU45は、解析対象であるプログラムによって通信先装置から受信されたデータに、当該通信先装置を識別可能なテイントタグを付与する。そして、仮想CPU45は、新たなプログラムの起動又は起動予約を検出したときに、当該新たなプログラムが実行するデータにテイントタグが付与されている場合、当該テイントタグにより識別される通信先装置2を特定する。
ここで、マルウェアの中には、機能追加やバグ修正のために、新たなマルウェアをダウンロードし実行するものがある。一方、マルウェアの通信先は多種多様であり、新たなマルウェアのダウンロード元だけでなく、ほかにも情報漏洩先や攻撃者からの指令を配信しているサーバなどもある。第1の実施形態によれば、解析対象プログラム33がネットワーク経由で新たなプログラムをダウンロードした際に、そのプログラムのダウンロード元である通信先装置2を特定する。すなわち、第1の実施形態によれば、マルウェアを解析することで、新たなマルウェアを配布しているホストを特定することができる。
また、仮想NIC43で取得可能な通信先情報は、一般的にレイヤ2(Ethernet(登録商標)等)の情報に限られる。レイヤ2から得られる情報では、URL(Uniform Resource Locator)を復元することが難しい場合がある。一方、例えば、HTTP(HyperText Transfer Protocol)通信時に利用されるURLは、まずホスト名部分に関して名前解決を行った後に、IPアドレスを用いて通信が行われる。このようなことから、HTTP通信のAPIを監視することで、通信先情報としてURLを取得することが可能になる。すなわち、通信用APIで取得される通信先情報が仮想NIC43で取得可能な通信先情報よりも好ましい場合もある。このため上述した実施形態では、付与部45bが、仮想NIC43がパケットを受信した際に、通信先情報を取得する場合を説明したが、OS等が提供するネットワーク通信用の標準APIが呼び出された直後に、当該APIに応じた通信先情報を取得してもよい。
かかる場合、付与部45bは、解析対象プログラム33によってAPIが呼び出された場合、呼び出されたAPIの格納位置に対応付けて、通信用情報(ブレークポイント情報)が記憶されているか否かを判定する。ここで付与部45bは、呼び出されたAPIの格納位置に対応付けて、通信用情報(ブレークポイント情報)が記憶されている場合、通信用APIの呼び出しを検出する。そして、付与部45bは、通信用APIから通信先情報を取得する。また、付与部45bは、取得した通信先情報を、通信先情報テーブル44に格納する。
(第2の実施形態)
さて、これまで本発明の実施形態について説明したが、本発明は上述した実施形態以外にも、その他の実施形態にて実施されてもよい。そこで、以下では、その他の実施形態を示す。
(システム構成)
また、本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部又は一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部又は一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については(例えば、図1〜図6)、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
(プログラム)
また、上記実施例1に係る情報処理装置が実行する処理をコンピュータが実行可能な言語で記述した特定プログラムを作成することもできる。この場合、コンピュータが特定プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。更に、かかる特定プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録された特定プログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、図1等に示した情報処理装置10と同様の機能を実現する特定プログラムを実行するコンピュータの一例を説明する。
図7は、特定プログラムを実行するコンピュータ1000を示す図である。図7に示すように、コンピュータ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が接続される。
ここで、図7に示すように、ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093及びプログラムデータ1094を記憶する。上記実施形態で説明した特定プログラムは、例えばハードディスクドライブ1090やメモリ1010に記憶される。
また、特定プログラムは、例えば、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1090に記憶される。具体的には、上記実施形態で説明した付与部45bと同様の情報処理を実行する付与手順と、特定部45dと同様の情報処理を実行する特定手順とが記述されたプログラムモジュールが、ハードディスクドライブ1090に記憶される。
また、特定プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ1090に記憶される。そして、CPU1020が、ハードディスクドライブ1090に記憶されたプログラムモジュールやプログラムデータを必要に応じてRAM1012に読み出して、上述した各手順を実行する。
なお、特定プログラムに係るプログラムモジュールやプログラムデータは、ハードディスクドライブ1090に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、特定プログラムに係るプログラムモジュールやプログラムデータは、LAN(Local Area Network)やWAN(Wide Area Network)等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
(その他)
なお、本実施形態で説明した特定プログラムは、インターネットなどのネットワークを介して配布することができる。また、特定プログラムは、ハードディスク、フレキシブルディスク(FD)、CD−ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
10 情報処理装置
20 物理マシン
21 ハードウェア
22 ホストOS
23 仮想マシンソフトウェア
30 仮想マシン
31 仮想ハードウェア
32 ゲストOS
33 解析対象プログラム
41a 仮想メモリ
41b シャドウメモリ
42a 仮想ディスク
42b シャドウディスク
43 仮想NIC
44 通信先情報テーブル
45 仮想CPU
45a プログラム実行部
45b 付与部
45c 更新部
45d 特定部
1000 コンピュータ
1010 メモリ
1011 ROM
1012 RAM
1020 CPU
1030 ハードディスクドライブインタフェース
1040 ディスクドライブインタフェース
1050 シリアルポートインタフェース
1060 ビデオアダプタ
1070 ネットワークインタフェース
1080 バス
1090 ハードディスクドライブ
1091 OS
1092 アプリケーションプログラム
1093 プログラムモジュール
1094 プログラムデータ
1100 ディスクドライブ
1110 マウス
1120 キーボード
1130 ディスプレイ

Claims (8)

  1. 解析対象であるプログラムによって通信先装置から受信したデータに、当該通信先装置を識別可能なタグを付与する付与部と、
    新たなプログラムの起動又は起動予約を検出したときに、当該新たなプログラムが実行するデータに前記タグが付与されているか否かを判断し、前記タグが付与されている場合に、当該タグにより識別される通信先装置を特定する特定部と
    を有することを特徴とする情報処理装置。
  2. 前記付与部は、前記タグと、前記通信先装置の識別子とを対応付けた通信先情報を生成するとともに、前記データの記憶領域における格納位置を示す情報と、前記タグとを対応付けた位置情報を生成することを特徴とする請求項1に記載の情報処理装置。
  3. 前記付与部は、前記通信先装置から受信したデータを含むパケットから前記通信先装置の識別子を抽出することを特徴とする請求項2に記載の情報処理装置。
  4. 前記付与部は、監視対象命令が呼び出された際に、当該監視対象命令の記憶領域における格納位置に対応付けて当該監視対象命令が通信用であることを示す通信情報が記憶されている場合、当該監視対象命令から前記通信先装置の識別子を抽出することを特徴とする請求項2又は3に記載の情報処理装置。
  5. 前記データのフローに応じて、前記位置情報を更新する更新部を更に有することを特徴とする請求項2又は3に記載の情報処理装置。
  6. 前記特定部は、監視対象命令が呼び出された際に、当該監視対象命令の記憶領域における格納位置に対応付けてプログラムの起動用又はプログラムの起動予約用であることを示す起動情報が記憶されている場合、プログラムの起動又は起動予約を検出することを特徴とする請求項1に記載の情報処理装置。
  7. 前記特定部は、実行する機械語命令の記憶領域における格納位置に対応付けて前記タグが付与されている場合、当該タグにより識別される通信先装置を特定することを特徴とする請求項1に記載の情報処理装置。
  8. コンピュータが、
    解析対象であるプログラムによって通信先装置から受信されたデータに、当該通信先装置を識別可能なタグを付与する付与工程と、
    新たなプログラムの起動又は起動予約を検出したときに、当該新たなプログラムが実行するデータに前記タグが付与されている場合、当該タグにより識別される通信先装置を特定する特定工程と
    を含んだことを特徴とする特定方法。
JP2015518136A 2013-05-20 2014-03-26 情報処理装置及び特定方法 Active JP5965059B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2013106088 2013-05-20
JP2013106088 2013-05-20
PCT/JP2014/058692 WO2014188780A1 (ja) 2013-05-20 2014-03-26 情報処理装置及び特定方法

Publications (2)

Publication Number Publication Date
JP5965059B2 JP5965059B2 (ja) 2016-08-03
JPWO2014188780A1 true JPWO2014188780A1 (ja) 2017-02-23

Family

ID=51933346

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015518136A Active JP5965059B2 (ja) 2013-05-20 2014-03-26 情報処理装置及び特定方法

Country Status (5)

Country Link
US (1) US10097567B2 (ja)
EP (1) EP2985716B1 (ja)
JP (1) JP5965059B2 (ja)
CN (1) CN105247533B (ja)
WO (1) WO2014188780A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106663170B (zh) 2014-06-17 2019-06-25 日本电信电话株式会社 信息处理***、控制方法
JP6258189B2 (ja) * 2014-12-24 2018-01-10 日本電信電話株式会社 特定装置、特定方法および特定プログラム
EP3232360B1 (en) * 2015-01-28 2020-01-15 Nippon Telegraph and Telephone Corporation Malware analysis system, malware analysis method, and malware analysis program
US10051059B2 (en) * 2015-06-05 2018-08-14 Fisher-Rosemount Systems, Inc. Methods and apparatus to control communications of endpoints in an industrial enterprise system based on integrity
US11016874B2 (en) * 2018-09-19 2021-05-25 International Business Machines Corporation Updating taint tags based on runtime behavior profiles
JP7183904B2 (ja) * 2019-03-26 2022-12-06 日本電信電話株式会社 評価装置、評価方法、および、評価プログラム
WO2022195739A1 (ja) * 2021-03-16 2022-09-22 日本電信電話株式会社 活動痕跡抽出装置、活動痕跡抽出方法および活動痕跡抽出プログラム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8584239B2 (en) * 2004-04-01 2013-11-12 Fireeye, Inc. Virtual machine with dynamic data flow analysis
US8204984B1 (en) * 2004-04-01 2012-06-19 Fireeye, Inc. Systems and methods for detecting encrypted bot command and control communication channels
US8539582B1 (en) 2004-04-01 2013-09-17 Fireeye, Inc. Malware containment and security analysis on connection
US8528086B1 (en) 2004-04-01 2013-09-03 Fireeye, Inc. System and method of detecting computer worms
US8566946B1 (en) 2006-04-20 2013-10-22 Fireeye, Inc. Malware containment on connection
US8561177B1 (en) 2004-04-01 2013-10-15 Fireeye, Inc. Systems and methods for detecting communication channels of bots
US7870610B1 (en) * 2007-03-16 2011-01-11 The Board Of Directors Of The Leland Stanford Junior University Detection of malicious programs
US8468310B2 (en) * 2007-07-31 2013-06-18 Vmware, Inc. Method and system for tracking data correspondences
US8074281B2 (en) * 2008-01-14 2011-12-06 Microsoft Corporation Malware detection with taint tracking
US8893280B2 (en) * 2009-12-15 2014-11-18 Intel Corporation Sensitive data tracking using dynamic taint analysis
JP5389739B2 (ja) 2010-06-08 2014-01-15 日本電信電話株式会社 解析システム、解析装置、解析方法及び解析プログラム
JP5437964B2 (ja) 2010-10-06 2014-03-12 日本電信電話株式会社 解析方法、解析装置及び解析プログラム
KR20120124638A (ko) * 2011-05-04 2012-11-14 엔에이치엔비즈니스플랫폼 주식회사 행위 기반의 악성코드 탐지 시스템 및 악성코드 탐지 방법
US9298918B2 (en) * 2011-11-30 2016-03-29 Elwha Llc Taint injection and tracking
US9111092B2 (en) * 2011-08-29 2015-08-18 Novell, Inc. Security event management apparatus, systems, and methods
US9053319B2 (en) * 2011-09-29 2015-06-09 Hewlett-Packard Development Company, L.P. Context-sensitive taint processing for application security
US9519781B2 (en) * 2011-11-03 2016-12-13 Cyphort Inc. Systems and methods for virtualization and emulation assisted malware detection
US9792430B2 (en) * 2011-11-03 2017-10-17 Cyphort Inc. Systems and methods for virtualized malware detection
US9176843B1 (en) * 2013-02-23 2015-11-03 Fireeye, Inc. Framework for efficient security coverage of mobile software applications
WO2014185165A1 (ja) * 2013-05-16 2014-11-20 日本電信電話株式会社 情報処理装置、および、情報処理方法
TWI553503B (zh) * 2014-02-27 2016-10-11 國立交通大學 產生候選鈎點以偵測惡意程式之方法及其系統

Also Published As

Publication number Publication date
CN105247533A (zh) 2016-01-13
EP2985716B1 (en) 2020-08-12
WO2014188780A1 (ja) 2014-11-27
JP5965059B2 (ja) 2016-08-03
US10097567B2 (en) 2018-10-09
EP2985716A1 (en) 2016-02-17
EP2985716A4 (en) 2016-12-21
CN105247533B (zh) 2017-12-12
US20160127396A1 (en) 2016-05-05

Similar Documents

Publication Publication Date Title
JP5965059B2 (ja) 情報処理装置及び特定方法
US7444621B2 (en) Method and system for providing a common operating system
US10397261B2 (en) Identifying device, identifying method and identifying program
CN114207586A (zh) 用于容器部署的动态映像合成
JP5832954B2 (ja) タグ付与装置及びタグ付与方法
US20090100448A1 (en) Remote Auto Provisioning and Publication of Applications
US11068281B2 (en) Isolating applications at the edge
JP6734481B2 (ja) コールスタック取得装置、コールスタック取得方法、および、コールスタック取得プログラム
US10129275B2 (en) Information processing system and information processing method
US20110252403A1 (en) Component relinking in migrations
US9898389B2 (en) Debugging a transaction in a replica execution environment
JP6018346B2 (ja) 情報処理システム、制御方法及び制御プログラム
CN106796644B (zh) 访问控制***及访问控制方法
JP5766650B2 (ja) 情報処理装置、監視方法および監視プログラム
JP6736927B2 (ja) 配備装置、配備方法および配備プログラム
JP2019125243A (ja) マルウェア検知システムおよびマルウェア検知方法
JP2019168945A (ja) 管理システム、端末装置、管理装置、管理方法、およびプログラム
JP5710547B2 (ja) 情報処理装置、監視方法および監視プログラム
JP4681669B2 (ja) 要求内容抽出プログラム、要求内容抽出方法および要求内容抽出装置
JP2010204936A (ja) Http要求処理システム

Legal Events

Date Code Title Description
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: 20160628

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160630

R150 Certificate of patent or registration of utility model

Ref document number: 5965059

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150