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

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

Info

Publication number
JP6122562B2
JP6122562B2 JP2016563663A JP2016563663A JP6122562B2 JP 6122562 B2 JP6122562 B2 JP 6122562B2 JP 2016563663 A JP2016563663 A JP 2016563663A JP 2016563663 A JP2016563663 A JP 2016563663A JP 6122562 B2 JP6122562 B2 JP 6122562B2
Authority
JP
Japan
Prior art keywords
malware
executed
data
branch
tag
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
Application number
JP2016563663A
Other languages
English (en)
Other versions
JPWO2016093182A1 (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 JP6122562B2 publication Critical patent/JP6122562B2/ja
Publication of JPWO2016093182A1 publication Critical patent/JPWO2016093182A1/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
    • 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

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)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

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. マルウェアの実行時に、該マルウェアが受信したデータに対して、該データの送信元の識別情報を一意に特定できるタグを付与し、該タグが付与されたデータの伝搬を追跡する追跡ステップと、
    前記追跡ステップによって追跡されたデータのうち、マルウェアが実行した分岐命令により参照されたデータのタグを取得する監視ステップと、
    前記分岐命令の後に前記マルウェアが実行しなかった分岐先の命令に関する情報を解析する解析ステップと、
    前記解析ステップの解析結果に基づいて、前記監視ステップによって取得されたタグに対応する送信元の識別情報から前記マルウェアに指令を発する指令サーバの識別情報を特定する特定ステップと、
    をコンピュータに実行させるための特定プログラム。
JP2016563663A 2014-12-09 2015-12-04 特定装置、特定方法および特定プログラム Active JP6122562B2 (ja)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
JP6122562B2 true JP6122562B2 (ja) 2017-04-26
JPWO2016093182A1 JPWO2016093182A1 (ja) 2017-04-27

Family

ID=56107367

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016563663A Active JP6122562B2 (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)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109313688A (zh) * 2016-06-16 2019-02-05 三菱电机株式会社 密钥生成源确定装置、密钥生成源确定方法和密钥生成源确定程序
US10176325B1 (en) * 2016-06-21 2019-01-08 Symantec Corporation System and method for dynamic detection of command and control malware
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
RU2637997C1 (ru) 2016-09-08 2017-12-08 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения вредоносного кода в файле
JP6870386B2 (ja) * 2017-02-28 2021-05-12 沖電気工業株式会社 マルウェア不正通信対処システム及び方法
US11176251B1 (en) * 2018-12-21 2021-11-16 Fireeye, Inc. Determining malware via symbolic function hash analysis
US11494216B2 (en) * 2019-08-16 2022-11-08 Google Llc Behavior-based VM resource capture for forensics
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

Family Cites Families (16)

* 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
US9443085B2 (en) * 2011-07-19 2016-09-13 Elwha Llc Intrusion detection using taint accumulation
US9798873B2 (en) * 2011-08-04 2017-10-24 Elwha Llc Processor operable to ensure code integrity
US9298918B2 (en) 2011-11-30 2016-03-29 Elwha Llc Taint injection and tracking
US8677487B2 (en) 2011-10-18 2014-03-18 Mcafee, Inc. System and method for detecting a malicious command and control channel
JP6101631B2 (ja) * 2011-11-30 2017-03-22 日本放送協会 受信装置及びプログラム
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 エヌ・ティ・ティ・コミュニケーションズ株式会社 指令元特定装置、指令元特定方法、及び指令元特定プログラム
CN106133742B (zh) 2014-03-13 2019-05-07 日本电信电话株式会社 确定装置、确定方法以及确定程序

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6122562B2 (ja) 特定装置、特定方法および特定プログラム
JP6088714B2 (ja) 特定装置、特定方法および特定プログラム
US8782791B2 (en) Computer virus detection systems and methods
US10055585B2 (en) Hardware and software execution profiling
Martignoni et al. A layered architecture for detecting malicious behaviors
US10382455B2 (en) Identifying apparatus, identifying method, and identifying program
US11314864B2 (en) Memory layout based monitoring
JPWO2014112185A1 (ja) 攻撃分析システム及び連携装置及び攻撃分析連携方法及びプログラム
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
US11170103B2 (en) Method of detecting malicious files resisting analysis in an isolated environment
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
陳悦庭 et al. Computer Security Symposium 2014 22-24 October 2014

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170105

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: 20170328

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170331

R150 Certificate of patent or registration of utility model

Ref document number: 6122562

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150