JP6246377B2 - プロセス解析装置、プロセス解析方法、及びプロセス解析プログラム - Google Patents

プロセス解析装置、プロセス解析方法、及びプロセス解析プログラム Download PDF

Info

Publication number
JP6246377B2
JP6246377B2 JP2016545089A JP2016545089A JP6246377B2 JP 6246377 B2 JP6246377 B2 JP 6246377B2 JP 2016545089 A JP2016545089 A JP 2016545089A JP 2016545089 A JP2016545089 A JP 2016545089A JP 6246377 B2 JP6246377 B2 JP 6246377B2
Authority
JP
Japan
Prior art keywords
block
information
input
output
unit
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.)
Expired - Fee Related
Application number
JP2016545089A
Other languages
English (en)
Other versions
JPWO2016030927A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2016030927A1 publication Critical patent/JPWO2016030927A1/ja
Application granted granted Critical
Publication of JP6246377B2 publication Critical patent/JP6246377B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/567Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、情報処理装置で実行されるプロセスを解析して、プロセスの中で利用されている暗号関数や復号関数などの暗号ロジックを抽出するプロセス解析装置に関する。
近年、新しいセキュリティ脅威として、特定の組織をねらい、執拗に攻撃を行なうAdvanced Persistent Threat (APT)と呼ばれる「標的型攻撃」が顕在化している。APTでは、メールによって標的とする組織の端末にマルウェアを感染させ、感染したマルウェアが外部の攻撃者のサーバと通信を行ない、新しい攻撃プログラムのダウンロードや組織システム内の機密情報の送信を行なう。このようなセキュリティインシデントの発生を早期に検出し被害の拡大を防ぐために、ネットワーク機器の様々なログを監視し不審な兆候の検出を行なうSecurity Operation Center (SOC)サービスが必要とされる。一方、インシデントの発生が判明した場合、組織は、インシデントの原因や被害の調査、対応策の検討、サービスの復旧、再発防止策の実施などのインシデントレスポンスを行なわなければならない。さらに、組織の顧客やビジネスパートナーによっては、組織は、機密情報の何が漏えいし、何が漏えいしなかったのかを、明確にする必要がある。
組織がインシデントの原因や被害の調査を行なうにあたり、パソコン、サーバ、ネットワーク機器などが生成したログやネットワーク上で記録されたパケットを解析し、マルウェアの侵入経路、感染端末、アクセスした情報、攻撃者からの命令、外部に送信した情報などを調査するネットワークフォレンジックが重要な役割を担う。ところが、昨今のマルウェアは、暗号技術を活用して通信を秘匿する。そのため、組織がネットワークフォレンジックを行なったとしても、攻撃者から送られる命令が何であり、どのような情報が外部に送信されたのかを追跡することが困難となっている。
この問題に対応するためには、マルウェアが通信の秘匿に利用した暗号ロジックと鍵を見つけ、暗号化された通信を復号する必要がある。一般に、この作業はマルウェアのプログラムのバイナリを解析する必要がある。従来の暗号ロジック抽出手法の多くは、例えば、特許文献1に開示されているマルウェア解析システムのように、マルウェアを実行した際の実行トレースから、暗号ロジックによく見られる特徴を探すことで、暗号ロジックと鍵の特定を行なう。また、マルウェアのプログラムのバイナリを解析する技術としては、非特許文献1〜9に開示されている技術が知られている。
特開2013-114637号公報
Noe Lutz, Towards Revealing Attacker's Intent by Automatically Decrypting Network Traffic, Master Thesis MA-2008-08. Zhi Wang, Xuxian Jiang, Weidong Cui, Xinyuan Wang and Mike Grace, ReFormat: automatic reverse engineering of encrypted messages, Proceedings of the 14th European Conference on Research in Computer Security. Felix Matenaar, Andre Wichmann, Felix Leder and Elmar Gerhards-Padilla, CIS: The Crypto Intelligence System for Automatic Detection and Localization of Cryptographic Functions in Current Malware, Proceedings of the 7th and Unwanted Software (Malware 2012). Xin Li, Xinyuan WaInternational Conference on Malicious ng, Wentao Chang, CipherXRay: Exposing Cryptographic Operations and Transient Secrets from Monitored Binary Execution, IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING (preprint) 2012. Felix Grobert, Carsten Willems, and Thorsten Holz, Automated Identification of Cryptographic Primitives in Binary Programs, Proceedings of the 14th International Conference on Recent Advances in Intrusion Detection. Joan Calvet, Jose M. Fernandez, Jean-Yves Marion, Aligot: Cryptographic Function Identification in Obfuscated Binary Programs, Proceedings of the 19th ACM Conference on Computer and Communications Security, CCS 2012. Intel, Pin - A Dynamic Binary Instrumentation Tool, https://software.intel.com/en-us/articles/pin-a-dynamic-binary-instrumentation-tool Bitblaze, TEMU: The BitBlaze Dynamic Analysis Component, http://bitblaze.cs.berkeley.edu/temu.html Jordi Tubella and Antonio Gonzalez, Control Speculation in Multithreaded Processors through Dynamic Loop Detection, In Proceedings of the Fourth International Symposium on High-Performance Computer Architecture, pp.14-23, 1998.
特許文献1に代表される従来技術では、暗号ロジックの候補として多くの無関係なロジックが抽出される。マルウェア解析者は、手作業で無関係なロジックを除外しなければならず、多大な手間暇を要するという課題がある。そのため、無関係なロジックの抽出を抑えた、精度の高い暗号ロジック抽出手法が必要となる。
この発明は上記のような課題を解決するためになされたもので、ファイルや通信を暗号化するマルウェアが利用する暗号ロジックの特徴を基にしてマルウェアの実行トレースを解析することにより、マルウェアが用いる暗号ロジックを、精度良く特定することを目的とする。
上記で述べた課題を解決するため、本発明のプロセス解析装置は、解析対象のプロセスの実行トレースを取得する実行トレース取得部と、前記実行トレースからループ構造を示す処理単位であるブロックを抽出するブロック抽出部と、前記ブロックから、入力情報と出力情報とを含むブロック情報を抽出するブロック情報抽出部と、前記ブロック情報の前記入力情報または前記出力情報を用いて前記ブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用して前記ブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定するブロック情報解析部とを備える。
本発明によれば、実行トレースから抽出したブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用してブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定することにより、マルウェアが用いる暗号ロジックを、精度良く特定することができるという効果がある。
実施の形態1に係るプロセス解析装置の一構成例を示す構成図である。 実施の形態1に係るプロセス解析装置のプロセス解析処理の流れを示すフローチャートである。 定義リスト105の一例を示す図である。 入力情報と出力情報を格納するデータ形式の一例を説明する図である。 暗号関数の入出力情報が含む印刷可能文字列の特徴を示す図である。 実施例1に係るプロセス解析装置の一構成例を示す構成図である。 実施例1に係る文字列割合判定部160の文字列割合判定処理の流れを示すフローチャートである。 文字コード表DB162に格納された文字コード表の例を示す図である。 マルウェアの暗号関数の使い方の一例(その1)を示す図である。 実施例2に係るプロセス解析装置の一構成例を示す構成図である。 実施例2に係るデータデコード部170のデコード判定処理の流れを示すフローチャートである。 マルウェアの暗号関数の使い方の一例(その2)を示す図である。 実施例3に係るプロセス解析装置の一構成例を示す構成図である。 実施例3に係るデータ解凍部180のデータ解凍判定処理の流れを示すフローチャートである。 暗号の基本定義を説明する図である。 実施例4に係るプロセス解析装置の一構成例を示す構成図である。 実施例4に係る仮想実行部190の仮想実行判定処理の流れを示すフローチャートである。 実施例4に係る仮想実行部190の仮想実行解析の処理の流れ(前半)を示すフローチャートである。 実施例4に係る仮想実行部190の仮想実行解析の処理の流れ(後半)を示すフローチャートである。
実施の形態1.
図1は、実施の形態1に係るプロセス解析装置の一構成例を示す構成図である。
図1において、プロセス解析装置100は、実行トレース取得部110、ブロック抽出部120、ブロック情報抽出部130、ブロック情報解析部140、及び、解析結果出力部150を備える。
プロセス解析装置100は、マルウェアのプログラムのバイナリを解析するための機器であり、例えば、CPU(Central Processing Unit)がバスを介して、ROM、RAM、通信ボード、ディスプレイ、キーボード、マウス、磁気ディスク装置などのハードウェアデバイスと接続されたコンピュータにより、プロセス解析装置100を構成する。また、プロセス解析装置100では、CPU上に仮想マシンを備え、マルウェアのプログラムを実行できる実行環境を備えている。
実行トレース取得部110は、仮想マシンの実行環境上で、解析対象の実行ファイル101を実行し、実行した処理のログ情報である実行トレース102と、実行したプロセスに関する各種情報であるプロセス情報103を取得する。
ブロック抽出部120は、実行トレース取得部110により取得した実行トレース102から、プログラムを構成する基本的な構成要素であるブロックを抽出し、抽出した複数のブロックのリストであるブロックリスト104を出力する。また、ブロック抽出部120は、実行トレース102の各行から、後述するブロック情報解析処理に必要な情報を抽出して、定義リスト105を出力する。
ブロック情報抽出部130は、実行トレース102とブロックリスト104と定義リスト105から、ブロックで実行される入出力情報を含むブロック情報を抽出し、ブロック情報リスト106を出力する。
ブロック情報解析部140は、ブロック情報抽出部130が出力したブロック情報リスト106を用いて、解析対象ブロックが暗号ロジックか否かを解析し、解析結果リスト107を出力する。
解析結果出力部150は、ブロック情報解析部140が解析した解析結果リスト107の内容を、例えばディスプレイに出力して解析者に表示する。
次に、プロセス解析装置100のプロセス解析処理を、図2のフローチャートを用いて説明する。
図2は、実施の形態1に係るプロセス解析装置のプロセス解析処理の流れを示すフローチャートである。
まず、ステップS110において、実行トレース取得部110は、仮想マシンなどの解析環境上で、解析対象の実行ファイル101のプログラムを実行する。実行トレース取得部110は、実行したプログラムのプロセスを監視し、同プロセスの実行トレース102を記録する。実行トレース102により記録する情報は、例えば、以下のような情報を記録する。
・実行した命令のアドレス
・実行した命令のアドレス(オペコード、オペランド)
・アクセスされたレジスタとその値
・アクセスされたメモリのアドレス、その値、そのモード(READ/WRITE)
実行トレースを取得する方法としては、例えば、非特許文献7に記載されているPinなどのDynamic Instrumentation Toolを用いる方法や、非特許文献8に記載されているTEMUのようなエミュレータを用いる方法がある。実行トレース取得部110では、これらの既存の方法を基に、実行トレースを取得する。
また、実行トレース取得部110は、実行トレース102の取得と同時に、実行トレース102を取得したプロセスがロードしているDLLや関数についての情報をプロセス情報103として抽出する。プロセス情報103には、例えば、以下のような情報が記録される。
・プロセスのベースアドレス
・プロセスがロードしているDLLの名前、アドレス、サイズ
・DLLがエクスポートしているAPIの名前、アドレス
なお、プロセス情報103の分かりやすい実例としては、メモリにロードされているプロセスのPEヘッダである。
次に、ステップS120において、ブロック抽出部120は、実行トレース102から、プログラムを構成する基本的な構成要素であるブロックを抽出する。ここでいうブロックとは、関数、ループ、連結したループなどであり、それらを表現するために必要な、以下の情報を持つ。
・ブロックID
・ブロックの種類
・ブロックの開始アドレス
・ブロックの終了アドレス
・ブロック内の命令列(プロセスのメモリイメージから取得)
ブロック抽出部120は、抽出した複数のブロックについて上記のブロックの情報を、ブロックリスト104として管理する。
以下、ブロックを表現する各情報について説明する。
ブロックIDは、ブロックリストにおいて一意となる値を設定する。ブロックの種類とは、ブロックを構成する最も外側のロジック(関数、ループ、連結したループ)を設定する。ブロックの開始アドレスとは、プロセスが利用するメモリ上の何番地目からブロックが開始しているかを示す。ブロックの終了アドレスとは、プロセスが利用するメモリ上の何番地目でブロックが終了しているかを示す。ブロック内の命令列とは、プロセスが利用するメモリ上で、開始アドレスと終了アドレスの範囲に存在する命令シーケンスである。
ブロック抽出部120は、callなどの関数呼出命令と、retなどのリターン命令の関係を実行トレース102上で追跡することにより、関数を特定する。また、ブロック抽出部120は、命令パターンの繰返しや後方ジャンプ(Backward Jump)を実行トレース上で追跡することにより、ループを特定する。また、ブロック抽出部120は、ループ間の入出力関係を実行トレース上で追跡することにより、連結したループを特定する。なお、ブロックリスト104の抽出に関しては、例えば、非特許文献5、6、9に開示されている技術を活用することができる。
さらに、ステップS120では、後述のステップで必要な情報として、定義リスト105を作成する。
図3は、定義リスト105の一例を示す図である。
図3に示すように、定義リスト105は、ブロック抽出部120が実行トレース102を1行ずつ読んでいく中で、以下の情報を記録したテーブルである。
・実行トレースの行番号
・同行で実行された命令があるアドレス
・同行で変更された記憶領域(レジスタ、メモリ)
・新しい値
・値のサイズ
次に、ステップS130において、ブロック情報抽出部130は、実行トレース102とブロック(ブロックリスト104、定義リスト105)から、ブロック情報を抽出し、ブロック情報リスト106を出力する。ここでいうブロック情報リスト106には、以下に示す情報を持つブロック情報が要素として登録される。
・ブロックID
・入力情報
・出力情報
・コンテキスト
以下、ブロック情報を表現する各情報について説明する。
ブロックIDとは、ブロックリスト104に登録されているブロックと対応づけるための情報である。
入力情報とは、実行トレース102において、以下の条件を満たす情報である。
・ブロックの実行前に定義される情報
・ブロックの実行中において、上書きされる前に、読まれる情報
出力情報とは、実行トレース102において、以下の条件を満たす情報である。
・記憶領域(レジスタ、メモリ)において、ブロック実行中、同記憶領域に最後に書き込まれた情報
コンテキストとは、ブロックが実行トレース102において、どのタイミングで実行されているかを表わすための情報である。
以下、入力情報、出力情報、コンテキストの抽出処理の詳細を説明する。
まず、入力情報の抽出は、次のように行なう。
ブロック情報抽出部130は、実行トレース102を1行ずつ解析する。注目している実行トレース102の命令アドレスが、ブロックリスト104に登録されている、いずれかのブロックB1の開始アドレスと終了アドレスの範囲に含まれているとする。ブロック情報抽出部130は、実行トレース102をさらに解析し、ブロックB1の範囲にあるアドレスXで命令が実行され、同命令によって、ある記憶領域がREADされているとする。そして、ブロック情報抽出部130は、定義リスト105を解析し、ブロックB1の範囲内かつアドレスXよりも前に実行された命令によって、同記憶領域がWRITEされていないかを確認する。WRITEされていない場合、同記憶領域を入力情報とする。
なお、実行トレース102上、隣接するメモリ領域が同じアドレスの同じ命令によってREADされている場合、同メモリ領域はバッファとしてアクセスされている可能性が高いため、同メモリ領域をまとめて入力情報とする。すなわち、入力情報としては、同メモリ領域の先頭アドレス、サイズ、格納されているバイト列、から構成される。また、入力情報の種類として、『バッファ』であることも記録する。また、同じアドレスの命令によってREADされているが、値がカウントアップまたはカウントダウンしている入力情報については、入力情報の種類を『カウンタ』とする。ループの中でループの終了条件に使われている入力情報や、カウンタの初期値に使われている入力情報の種類を、『終了条件』とする。
次に、出力情報の抽出は、次のように行なう。
ブロック情報抽出部130が、あるブロックB1の実行トレース102を解析しているとする。ブロック情報抽出部130は、実行トレース102をさらに解析し、トレースがブロックB1の範囲を超えたとする。このとき、ブロック情報抽出部130は、定義リスト105を解析することで、同ブロックの範囲で実行された命令によってWRITEされた情報を出力情報とする。また、同じ記憶領域に複数回WRITEが行なわれている場合は、実行トレース102の行番号が大きいもの、すなわち、最新のものを出力情報とする。
なお、入力情報と同様に、実行トレース102上、隣接するメモリ領域が同じアドレスの同じ命令によってWRITEされている場合、バッファとしてアクセスされている可能性が高いため、同メモリ領域をまとめて出力情報とする。すなわち、出力情報としては同メモリ領域の先頭アドレス、サイズ、格納されているバイト列、から構成される。また、出力情報の種類として、『バッファ』であることも記録する。また、同じアドレスの命令によってWRITEされているが、値がカウントアップまたはカウントダウンしている出力情報については、出力情報の種類を『カウンタ』とする。ループの中でループの終了条件に使われている出力情報や、カウンタの初期値に使われている出力情報の種類を、『終了条件』とする。
次に、入力情報と出力情報を格納するデータ形式を説明する。
図4は、入力情報と出力情報を格納するデータ形式の一例を説明する図である。
図4において、入力情報と出力情報に関する情報は、記憶領域(開始アドレス)、値(バイト列)、サイズ(バイト)、情報の種類が格納されている。
次に、コンテキストの抽出は、次のように行なう。
コンテキストは、ブロックの呼び出し関係(入れ子関係)を表現するためのものである。例えば、B1、B2、B3、B4、B5、B6、B7、B8をブロックとする。このとき、B1の実行終了後にB2が実行され、B2の中でB3とB4が実行され、B2の実行終了後にB5が実行されるとする。さらに、B5の中でB6が実行され、B6の中で、B7が実行されるとする。そして、B7、B6の実行終了後、B8が実行されるとする。
上記で述べたブロックの呼び出し関係の場合、B1、B2、B5、B8のコンテキストを、それぞれ1、2、3、4と表現する。また、B2の中で実行されるB3、B4のコンテキストを、それぞれ2.1、2.2と表現する。同様に、B5の中で実行されるB6のコンテキストを3.1と表現する。さらに、B6の中で実行されるB7のコンテキストを3.1.1と表現する。このようにコンテキストを表現することにより、同じブロック(同じブロックID)の呼び出しであっても、呼び出し場所に応じて区別することができる。
なお、コンテキストの表現形式は、ブロックの呼び出し関係(入れ子関係)を表現できる表現形式であればどのような表現形式でも構わない。
また、ブロック情報抽出部130は、実行トレース102を解析していく中で、ブロックが終了したのか、それともブロックの中で新しくブロックが呼ばれたかのかは、次のように判断する。
・あるブロックの実行トレース102を解析している最中に、関数呼び出し(例えばcallやenter)以外の命令(例えばjmp、jne、ret)でブロックの範囲外へジャンプする場合、同ブロックの終了を意味する。
・あるブロックの実行トレース102を解析している最中に、関数呼び出し(例えばcallやenter)命令でブロックの範囲外へジャンプする場合、同ブロックは終了せず、同ブロックの中で新たにブロックが呼び出されたものとする。
・あるブロックの実行トレース102を解析している最中に、上記以外のケースで、実行トレース102がブロックの範囲を超えた場合、同ブロックの終了を意味する。
次に、図2のフローチャートの説明に戻る。
ステップS140において、ブロック情報解析部140は、ブロック情報リスト106のブロック情報を解析し、暗号ロジックを特定する。ブロック情報の解析では、ブロック情報解析部140は、ブロック情報の入力情報または出力情報を用いて、ブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用してブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定する。ブロック情報解析部140が生成する特徴判定情報と、特徴判定情報を利用した暗号ロジックの判定方法は、後述する実施例1〜実施例4で詳細に説明する。ブロック情報解析部140は、ブロック情報を解析した結果、暗号ロジックの判定結果を含む解析結果リスト107を出力する。
最後に、ステップS150において、解析結果出力部150は、ブロックリスト104、ブロック情報リスト106、解析結果リスト107を基に、解析結果を整理して、以下の情報を出力する。
・暗号ロジックの開始アドレス
・入力情報(記憶領域、値、サイズ)
・出力情報(記憶領域、値、サイズ)
・復号ロジックの開始アドレス
以上のように、本実施の形態1の発明では、実行トレースから抽出したブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用してブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定することにより、マルウェアが用いる暗号ロジックを、精度良く特定することができるという効果がある。
次に、本実施の形態1を具体的に実現する実施例1〜実施例4について、以下に説明する。
実施例1.
暗号関数の入力は、通常、平文である。一方、暗号関数の出力は、ランダムなバイト列である。そのため、暗号関数の入力には印刷可能文字列の割合が多く、出力には印刷可能文字列の割合が少ないという特徴が見られる。
図5は、暗号関数の入出力情報が含む印刷可能文字列の特徴を示す図である。
図5では、入力される「こんにちは」が印刷可能文字列であり、また、出力される情報の内、「唖」が印刷可能文字列であり、「・」が印刷不可能な文字列を示している。実施例1では、このような暗号関数の入出力情報が含む印刷可能文字列の特徴を特徴判定情報に利用して、暗号ロジックを特定する実施例を説明する。
図6は、実施例1に係るプロセス解析装置の一構成例を示す構成図である。
図6において、ブロック情報解析部140は、文字列割合判定部160、文字コード判定アルゴリズムデータベース(データベースは、以下DBと記載する)161、文字コード表DB162を備える。ブロック情報解析部140は、ブロック情報リスト106が入力され、文字列割合判定処理を行なって、解析結果リスト107を出力する。また、文字列割合判定部160は、ブロック情報解析部140から入力されたブロック情報の入力情報に対して、印刷可能文字列割合を判定して暗号ロジックを特定し、特定した暗号ロジックを含む暗号ロジックリスト1(163)をブロック情報解析部140に出力する。
なお、文字列割合判定部160、文字コード判定アルゴリズムDB161、文字コード表DB162は、ブロック情報解析部140の内部に備える構成としても良い。
次に、実施例1の文字列割合判定処理の流れを、図7を参照して説明する。
図7は、実施例1に係る文字列割合判定部160の文字列割合判定処理の流れを示すフローチャートである。
まず、ステップS1601において、文字列割合判定部160は、暗号ロジックリスト1(163)を初期化する。暗号ロジックリスト1(163)は、文字列割合判定部160で暗号ロジックの候補と判定されたブロック情報を格納するブロック情報リスト106である。
次に、ステップS1602において、文字列割合判定部160は、ブロック情報リスト106に次の要素(ブロック情報)があるかを確認する。次の要素のブロック情報が無ければ、Noの分岐に進み、処理を終了する。一方、次の要素のブロック情報があれば、ステップS1603において、次の要素Biを選ぶ。
次に、ステップS1604において、文字列割合判定部160は、ブロック情報の入力情報の印刷可能文字列の割合を判定する。ここで印刷可能文字列とは、改行復帰文字、または空文字(ヌル文字)で終わるc個の文字の連鎖からなる印刷可能な文字列のことである。文字列割合判定部160は、情報の種類に「バッファ」が設定されている入力情報に対して、値に設定されているバイト列の文字コード判定を行なう。この文字コード判定では、文字コード判定アルゴリズムDB161に登録されているアルゴリズムを用いて、文字コード判定を実行する。文字コードが判定できれば、文字コード表DB162から対応する文字コード表を取得し、印刷可能な文字を確認することができる。
図8は、文字コード表DB162に格納された文字コード表の例を示す図である。
図8では、文字「あ」から文字「ぱ」に対して、文字コードが対応付けられて格納された例を示している。
文字列割合判定部160は、入力情報のバイト列から得られた印刷可能文字列の文字列長の総和を、同バイト列長で割ることで、印刷可能文字列割合を算出する。なお、文字列長は、マルチバイト文字を2バイトとして計算する。
次に、ステップS1605において、文字列割合判定部160は、ブロック情報の出力情報の印刷可能文字列の割合を判定する。ここでの処理手順はステップS1604と同様である。
次に、ステップS1606において、文字列割合判定部160は、入力と出力の印刷可能文字列の割合の差分として、入力の印刷可能文字列割合−出力の印刷文字列割合を計算する。
次に、ステップS1607において、文字列割合判定部160は、ステップS1606で計算した差分が、閾値θ以上であれば、暗号ロジックリスト1(163)に、同ブロック情報Biを追加する。なお、上記のc、及びθは、調整可能なパラメータである。
なお、ステップS1604において、入力情報のファイルタイプ検査を行うことも可能である。入力がWORDやPDFなどの既知のファイル形式のファイルであれば、そのファイル形式に従ってテキスト情報を抽出し、同テキスト情報に対してのみ印刷可能文字列割合を計算する。こうすることで、WORDやPDFなどのテキストを特別な形式でエンコードするタイプのファイルが入力情報であったとしても、適切に入力情報の印刷可能文字列割合を計算することができる。ファイルタイプ検査は既知のツールを利用することが可能である。
実施例2.
マルウェアなどの不正プログラムは、暗号化されたデータを印刷可能なデータにエンコード(例えばBase64エンコード)してから、インターネット上に送信することがある。
図9は、マルウェアの暗号関数の使い方の一例(その1)を示す図である。
図9では、マルウェアが、暗号関数によりメッセージを暗号化した暗号文を、Base64エンコードしてから、HTTP送信によりインターネット上に送信している例を示している。そこで、あるブロックの出力情報を、既知のデコーダ(例えばBase64デコーダ)を用いてデコードを行ない、デコードに成功した場合、デコードした値と等しい出力情報を持っているブロックを、暗号ロジックの候補とすることができる。実施例2では、このような暗号関数の入出力情報が含むエンコードの特徴を特徴判定情報に利用して、暗号ロジックを特定する実施例を説明する。
図10は、実施例2に係るプロセス解析装置の一構成例を示す構成図である。
図10において、ブロック情報解析部140は、データデコード部170、エンコード/デコードアルゴリズムDB171を備える。ブロック情報解析部140は、ブロック情報リスト106が入力され、デコード判定処理を行なって、解析結果リスト107を出力する。また、データデコード部170は、ブロック情報解析部140から入力されたブロック情報の出力情報に対してデコードを行ない、デコードに成功した場合、デコードした値と等しい出力情報を持っているブロックを、暗号ロジックの候補とし、候補とした暗号ロジックを含む暗号ロジックリスト2(172)をブロック情報解析部140に出力する。
なお、データデコード部170とエンコード/デコードアルゴリズムDB171は、ブロック情報解析部140の内部に備える構成としても良い。
次に、実施例2のデコード判定処理の流れを、図11を参照して説明する。
図11は、実施例2に係るデータデコード部170のデコード判定処理の流れを示すフローチャートである。
まず、ステップS1701において、データデコード部170は、暗号ロジックリスト2(172)を初期化する。暗号ロジックリスト2(172)は、データデコード部170で暗号ロジックの候補と判定されたブロック情報を格納するブロック情報リスト106である。
次に、ステップS1702において、データデコード部170は、ブロック情報リスト106に次の要素(ブロック情報)があるかを確認する。次の要素のブロック情報が無ければ、Noの分岐に進み、処理を終了する。一方、次の要素のブロック情報があれば、ステップS1703において、次の要素Biを選ぶ。
次に、ステップS1704において、データデコード部170は、既知のデコードアルゴリズムを適用して、ブロック情報の出力情報をデコードする。既知のデコードアルゴリズムは、エンコード/デコードアルゴリズムDB171に格納されている。データデコード部170は、情報の種類が「バッファ」となっている出力情報に対して、デコードを行なう。
次に、ステップS1705において、データデコード部170は、デコードに成功したか否かを判定する。データデコード部170は、エンコード/デコードアルゴリズムDB171に格納されているいずれかのデコードアルゴリズムでデコードに成功した場合、同デコード結果を保持して、Yesの分岐によりステップS1707に進む。
次に、ステップS1707において、データデコード部170は、ステップS1705で保持したデコード結果と一致する出力情報を持つブロックを、ブロック情報リスト106から探す。なお、処理の効率化のために、ブロックBiのコンテキストより古いコンテキストのブロックに限定して検索対象としても良い。データデコード部170は、ブロック情報リスト106を検索した結果、デコード結果と一致する出力情報を持つブロックBj(i≠j)を発見した場合、ステップS1708において、ブロックBjのブロック情報を、暗号ロジック候補リスト2(172)に追加する。
実施例3.
マルウェアなどの不正プログラムは、データを暗号化する前に、同データを圧縮することがある。
図12は、マルウェアの暗号関数の使い方の一例(その2)を示す図である。
図12では、マルウェアが、メッセージが暗号関数に入力される前に、メッセージを圧縮関数により圧縮し、この圧縮データを暗号関数により暗号化した暗号文を、HTTP送信によりインターネット上に送信している例を示している。そこで、あるブロックの入力情報を、既知の解凍アルゴリズム(例えばzip、lzh)で解凍を試み、解凍に成功した場合、同ブロックを暗号ロジックの候補とすることができる。実施例3では、このような暗号関数の入出力情報が含む圧縮処理の特徴を特徴判定情報に利用して、暗号ロジックを特定する実施例を説明する。
図13は、実施例3に係るプロセス解析装置の一構成例を示す構成図である。
図13において、ブロック情報解析部140は、データ解凍部180、圧縮/解凍アルゴリズムDB181を備える。ブロック情報解析部140は、ブロック情報リスト106が入力され、データ解凍判定処理を行なって、解析結果リスト107を出力する。また、データ解凍部180は、ブロック情報解析部140から入力されたブロック情報の入力情報に対して解凍を行ない、解凍に成功した場合、同ブロックを、暗号ロジックの候補とし、候補とした暗号ロジックを含む暗号ロジックリスト3(182)をブロック情報解析部140に出力する。
なお、データ解凍部180と圧縮/解凍アルゴリズムDB181は、ブロック情報解析部140の内部に備える構成としても良い。
次に、実施例3のデータ解凍判定処理の流れを、図14を参照して説明する。
図14は、実施例3に係るデータ解凍部180のデータ解凍判定処理の流れを示すフローチャートである。
まず、ステップS1801において、データ解凍部180は、暗号ロジックリスト3(182)を初期化する。暗号ロジックリスト3(182)は、データ解凍部180で暗号ロジックの候補と判定されたブロック情報を格納するブロック情報リスト106である。
次に、ステップS1802において、データ解凍部180は、ブロック情報リスト106に次の要素(ブロック情報)があるかを確認する。次の要素のブロック情報が無ければ、Noの分岐に進み、処理を終了する。一方、次の要素のブロック情報があれば、ステップS1803において、次の要素Biを選ぶ。
次に、ステップS1804において、データ解凍部180は、既知の解凍アルゴリズムを適用して、ブロック情報の入力情報を解凍する。既知の解凍アルゴリズムは、圧縮/解凍デコードアルゴリズムDB181に格納されている。データ解凍部180は、情報の種類が「バッファ」となっている入力情報に対して、解凍を行なう。
次に、ステップS1805において、データ解凍部180は、解凍に成功したか否かを判定する。データ解凍部180は、圧縮/解凍デコードアルゴリズムDB181に格納されているいずれかの解凍アルゴリズムで解凍に成功した場合、Yesの分岐によりステップS1806に進む。
次に、ステップS1806において、データ解凍部180は、ブロックBjのブロック情報を、暗号ロジック候補リスト3(182)に追加する。
実施例4.
暗号の基本定義より、あるメッセージ(平文)をある鍵によって暗号化して得られる暗号文を、同じ鍵で復号すると元のメッセージが得られることは自明である。すなわち、暗号関数、復号関数、鍵、平文を、それぞれEnc、Dec、k、mとした場合、m = Dec(k、Enc(k、m))が成立する。
図15は、暗号の基本定義を説明する図である。
図15では、平文「こんにちは」をある鍵によって暗号化して、暗号文「・・・唖・」を得た場合、同じ鍵で暗号文「・・・唖・」を復号して、元のメッセージの平文「こんにちは」が得られることを示している。
このような暗号の基本定義に従えば、あるブロックfの出力の一部(暗号文と想定)を、別のブロックgの入力の一部としてgの処理を実行し、gの出力がfの入力(平文と想定)と一致すれば、fは暗号関数、gは復号関数である可能性が高い。そこで、あるブロックのペアを選び、これらのブロックの入力情報と出力情報に対して、上記の暗号の基本定義を利用した処理を行なえば、同ブロックのペアを暗号ロジックの候補とすることができる。実施例4では、このような暗号の基本定義による入出力情報の特徴を特徴判定情報に利用して、暗号の基本定義の関係が成立するブロックのペアを見つけ出すことにより、暗号ロジックを特定する実施例を説明する。
図16は、実施例4に係るプロセス解析装置の一構成例を示す構成図である。
図16において、ブロック情報解析部140は、仮想実行部190を備える。
ブロック情報解析部140は、ブロック情報リスト106が入力され、仮想実行判定処理を行なって、解析結果リスト107を出力する。また、仮想実行部190は、ブロック情報解析部140から入力されたブロック情報の入力情報と出力情報を利用して、ブロックのペアに対して、暗号の基本定義を利用した仮想実行を行ない、仮想実行に成功した場合、同ブロックのペアを暗号/復号関数ペアの候補とし、候補とした暗号/復号関数ペアを含む暗号/復号関数ペアリスト191をブロック情報解析部140に出力する。
なお、仮想実行部190は、ブロック情報解析部140の内部に備える構成としても良い。
次に、実施例4の仮想実行判定処理の流れを、図17を参照して説明する。
図17は、実施例4に係る仮想実行部190の仮想実行判定処理の流れを示すフローチャートである。
まず、ステップS1901において、仮想実行部190は、既に抽出済みの暗号ロジック候補をマージして、暗号ロジックリスト4を作成する。既に抽出済みの暗号ロジック候補としては、例えば、実施例1〜実施例3で判定した暗号ロジック候補である暗号ロジックリスト1〜3を用いる。なお、暗号ロジックリスト4を作成する際、重複した暗号ロジック候補がある場合は、1つにまとめる。
次に、ステップS1902において、仮想実行部190は、解析結果リスト107を初期化する。解析結果リスト107は、仮想実行部190で暗号ロジックと復号ロジックのペアと判定されたブロック情報のペアからなるリストである。
次に、ステップS1903において、仮想実行部190は、暗号ロジックリスト4に次の要素(ブロック情報)があるかを確認する。次の要素のブロック情報が無ければ、Noの分岐に進み、処理を終了する。一方、次の要素のブロック情報があれば、ステップS1904において、次の要素Biを選ぶ。
次に、ステップS1905において、仮想実行部190は、次の要素Biの出力情報を利用して、暗号の基本定義を利用した仮想実行解析を行なう。仮想実行解析の処理の詳細は、後述する。
次に、ステップS1906において、仮想実行部190は、仮想実行解析結果がNullか否かを判定する。仮想実行解析結果がNullでなければ、Noの分岐によりステップS1907に進む。
次に、ステップS1907において、仮想実行部190は、仮想実行解析結果を解析結果リスト107に登録する。
次に、ステップS1905の仮想実行解析の流れを、図18と図19を参照して詳細に説明する。
図18は、実施例4に係る仮想実行部190の仮想実行解析の流れ(前半)を示すフローチャートである。
図19は、実施例4に係る仮想実行部190の仮想実行解析の流れ(後半)を示すフローチャートである。
ステップS1905の仮想実行解析は、仮想実行部190に対して、引数としてブロック情報Biと解析対象の実行ファイルが与えられる。
まず、ステップS201において、仮想実行部190は、暗号/復号関数ペアリストを初期化する。
次に、ステップS202において、仮想実行部190は、解析対象の実行ファイル101を仮想環境上で実行してプロセスを起動し、一定期間経過後、同プロセスをサスペンドする。
次に、ステップS203において、仮想実行部190は、同プロセスのスナップショットを作成する。これをスナップショット1と呼ぶ。
次に、ステップS204において、仮想実行部190は、ブロック情報リスト106に次の要素(ブロック情報)があるかを確認する。次の要素のブロック情報が無ければ、Noの分岐に進み、ステップS222において、暗号/復号関数ペアリストを返し、処理を終了する。一方、次の要素のブロック情報があれば、ステップS205において、次の要素Bjを選ぶ。なお、ブロックBiとブロックBjのコンテキストを確認し、入れ子の関係になっていないブロックBjを選択することも可能である。
次に、ステップS206において、仮想実行部190は、プロセスのスナップショット1をリストアする。
次に、ステップS207において、仮想実行部190は、ブロックBjを構成する命令列をプロセスにインジェクトする。具体的には、ブロック情報BjのブロックIDに対応する要素を、ブロックリスト104から検索し、ブロックの命令列と開始アドレスを取得する。そして、同プロセスの同開始アドレスから同命令列をインジェクトする。
次に、ステップS208において、仮想実行部190は、同プロセスのスナップショットを作成する。これをスナップショット2と呼ぶ。
次に、ステップS209において、仮想実行部190は、Bjの入力情報を取得する。
次に、ステップS210において、仮想実行部190は、Bjの入力情報とBiの出力情報とから、入力スナップショットIssを生成する。入力スナップショットとは、実行するブロックの入力となる情報である。入力スナップショットIssの生成は、次のようにして行なう。ブロックBiはn個の出力情報を持っているとし、O = {O1〜On}で表わす。一方、ブロックBjはm個の入力情報を持っているとし、I = {I1〜Im}で表わす。Oi∈Oとし、Iのj番目の要素をOiに入れ替えた入力情報をIssとする。入れ替える情報は、入出力情報の種類が「バッファ」のもの同士とする。その他にもサイズが近い情報同士を優先的に選択し、入れ替えることも可能である。入れ替えは、値とサイズに対して行なう。また、同じIssが2度生成されることはないように入れ替えを行なう。
次に、ステップS211において、仮想実行部190は、新しいIssが生成されたか判定する。新しいIssが生成されない場合、Noの分岐に進み、ステップS204を実行する。一方、新しいIssが生成された場合、ステップS212に処理が進み、仮想実行部190は、プロセスのスナップショット2をリストアし、ステップS213において、Issを同プロセスに反映させる。Issの反映では、Issにある全ての入力情報の値を、適切な記憶領域(レジスタ、メモリ)に設定する。
次に、ステップS214において、仮想実行部190は、Instruction Registerに、インジェクトした命令列の先頭アドレスをセットし、ステップS215において、プロセスをレジュームする。
次に、ステップS216において、仮想実行部190は、プロセスの実行アドレスを監視し、実行アドレスがブロックBjの範囲を超えるかどうかを確認する。
次に、ステップS217において、仮想実行部190は、ブロックの実行が終了したか否かを判定する。仮想実行部190は、監視している実行アドレスがブロックBjの範囲を超えた場合、ブロックBjの実行が終了したと判定し、ステップS218において、プロセスをサスペンドする。
次に、ステップS219において、仮想実行部190は、実行されたブロックBjの出力情報とブロックBiの入力情報とを比較する。ブロックBjを実行して得られる出力情報は、ブロックBjの出力情報の開始アドレスを基に、サスペンド中のプロセスのメモリから抽出する。
次に、ステップS220において、仮想実行部190は、ブロックBjの出力情報とブロックBiの入力情報とが一致するかを判定し、一致する場合、Yesの分岐によりステップS221に進み、ブロックBiとブロックBjを暗号ロジックと復号ロジックのペアとして、暗号/復号関数ペアリストに登録する。
なおステップS207において、ブロックの命令列をインジェクトするのではなく、ブロックの開始アドレスまでプロセスを実行してもよい。その場合、ステップS214において同ステップの処理は行わず、ステップS215においてプロセスをレジュームするだけで良い。
以上のように、実施例1〜実施例4の発明では、実行トレースから抽出したブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用してブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定することにより、マルウェアが用いる暗号ロジックを、精度良く特定することができるという効果がある。
100 プロセス解析装置、101 実行ファイル、102 実行トレース、103 プロセス情報、104 ブロックリスト、105 定義リスト、106 ブロック情報リスト、107 解析結果リスト、110 実行トレース取得部、120 ブロック抽出部、130 ブロック情報抽出部、140 ブロック情報解析部、150 解析結果出力部、160 文字列割合判定部、161 文字コード判定アルゴリズムDB、162 文字コード表DB、163 暗号ロジックリスト1、170 データデコード部、171 エンコード/デコードアルゴリズムDB、172 暗号ロジックリスト2、180 データ解凍部、181 圧縮/解凍アルゴリズムDB、182 暗号ロジックリスト3、190 仮想実行部、191 暗号/復号関数ペアリスト。

Claims (9)

  1. 解析対象のプロセスの実行トレースを取得する実行トレース取得部と、
    前記実行トレースからループ構造を示す処理単位であるブロックを抽出するブロック抽出部と、
    前記ブロックから、入力情報と記憶領域に書き込まれた値を含む出力情報とを含むブロック情報を抽出するブロック情報抽出部と、
    前記ブロック情報の前記入力情報または前記出力情報を用いて前記ブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用して前記ブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定するブロック情報解析部と
    前記ブロック情報の前記入力情報または前記出力情報に含まれる印刷可能な文字列の割合である印刷可能文字列割合を判定する文字列割合判定部とを備え、
    前記ブロック情報解析部は、前記特徴判定情報として、前記文字列割合判定部により判定された前記入力情報の第1の印刷可能文字列割合と前記出力情報の第2の印刷可能文字列割合との差分を算出し、この差分が予め定められた閾値以上の場合に、前記ブロックを暗号ロジックと判定する
    プロセス解析装置。
  2. 解析対象のプロセスの実行トレースを取得する実行トレース取得部と、
    前記実行トレースからループ構造を示す処理単位であるブロックを抽出するブロック抽出部と、
    前記ブロックから、入力情報と記憶領域に書き込まれた値を含む出力情報とを含むブロック情報を抽出するブロック情報抽出部と、
    前記ブロック情報の前記入力情報または前記出力情報を用いて前記ブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用して前記ブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定するブロック情報解析部と
    前記ブロック情報の前記出力情報をデコードするデータデコード部とを備え、
    前記ブロック情報解析部は、前記特徴判定情報として、前記データデコード部により前記ブロック情報の前記出力情報をデコードしたデコード結果を生成し、このデコード結果と一致する前記出力情報を持つ前記ブロックを暗号ロジックと判定する
    プロセス解析装置。
  3. 解析対象のプロセスの実行トレースを取得する実行トレース取得部と、
    前記実行トレースからループ構造を示す処理単位であるブロックを抽出するブロック抽出部と、
    前記ブロックから、入力情報と記憶領域に書き込まれた値を含む出力情報とを含むブロック情報を抽出するブロック情報抽出部と、
    前記ブロック情報の前記入力情報または前記出力情報を用いて前記ブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用して前記ブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定するブロック情報解析部と
    前記ブロック情報の前記出力情報を他のブロックへ入力して前記他のブロックの処理を実行する仮想実行部とを備え、
    前記ブロック情報解析部は、前記特徴判定情報として、前記仮想実行部により前記他のブロックの処理を実行した実行結果を生成し、この実行結果と一致する前記入力情報を持つ前記ブロックを暗号ロジックと判定する
    プロセス解析装置。
  4. 解析対象のプロセスを解析して暗号ロジックを判定するプロセス解析装置のプロセス解析方法であって、
    実行トレース取得部が、解析対象のプロセスの実行トレースを取得する実行トレース取得ステップと、
    ブロック抽出部が、前記実行トレースからループ構造を示す処理単位であるブロックを抽出するブロック抽出ステップと、
    ブロック情報抽出部が、前記ブロックから、入力情報と記憶領域に書き込まれた値を含む出力情報とを含むブロック情報を抽出するブロック情報抽出ステップと、
    ブロック情報解析部が、前記ブロック情報の前記入力情報または前記出力情報を用いて前記ブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用して前記ブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定するブロック情報解析ステップと
    文字列割合判定部が、前記ブロック情報の前記入力情報または前記出力情報に含まれる印刷可能な文字列の割合である印刷可能文字列割合を判定する文字列割合判定ステップとを備え、
    前記ブロック情報解析部は、前記特徴判定情報として、前記文字列割合判定部により判定された前記入力情報の第1の印刷可能文字列割合と前記出力情報の第2の印刷可能文字列割合との差分を算出し、この差分が予め定められた閾値以上の場合に、前記ブロックを暗号ロジックと判定する
    プロセス解析方法。
  5. 解析対象のプロセスを解析して暗号ロジックを判定するプロセス解析装置のプロセス解析方法であって、
    実行トレース取得部が、解析対象のプロセスの実行トレースを取得する実行トレース取得ステップと、
    ブロック抽出部が、前記実行トレースからループ構造を示す処理単位であるブロックを抽出するブロック抽出ステップと、
    ブロック情報抽出部が、前記ブロックから、入力情報と記憶領域に書き込まれた値を含む出力情報とを含むブロック情報を抽出するブロック情報抽出ステップと、
    ブロック情報解析部が、前記ブロック情報の前記入力情報または前記出力情報を用いて前記ブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用して前記ブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定するブロック情報解析ステップと
    データデコード部が、前記ブロック情報の前記出力情報をデコードするデータデコードステップとを備え、
    前記ブロック情報解析部は、前記特徴判定情報として、前記データデコード部により前記ブロック情報の前記出力情報をデコードしたデコード結果を生成し、このデコード結果と一致する前記出力情報を持つ前記ブロックを暗号ロジックと判定する
    プロセス解析方法。
  6. 解析対象のプロセスを解析して暗号ロジックを判定するプロセス解析装置のプロセス解析方法であって、
    実行トレース取得部が、解析対象のプロセスの実行トレースを取得する実行トレース取得ステップと、
    ブロック抽出部が、前記実行トレースからループ構造を示す処理単位であるブロックを抽出するブロック抽出ステップと、
    ブロック情報抽出部が、前記ブロックから、入力情報と記憶領域に書き込まれた値を含む出力情報とを含むブロック情報を抽出するブロック情報抽出ステップと、
    ブロック情報解析部が、前記ブロック情報の前記入力情報または前記出力情報を用いて前記ブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用して前記ブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定するブロック情報解析ステップと
    仮想実行部が、前記ブロック情報の前記出力情報を他のブロックへ入力して前記他のブロックの処理を実行する仮想実行ステップとを備え、
    前記ブロック情報解析部は、前記特徴判定情報として、前記仮想実行部により前記他のブロックの処理を実行した実行結果を生成し、この実行結果と一致する前記入力情報を持つ前記ブロックを暗号ロジックと判定する
    ロセス解析方法。
  7. コンピュータに、
    解析対象のプロセスの実行トレースを取得する実行トレース取得ステップと、
    前記実行トレースからループ構造を示す処理単位であるブロックを抽出するブロック抽出ステップと、
    前記ブロックから、入力情報と記憶領域に書き込まれた値を含む出力情報とを含むブロック情報を抽出するブロック情報抽出ステップと、
    前記ブロック情報の前記入力情報または前記出力情報を用いて前記ブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用して前記ブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定するブロック情報解析ステップと
    前記ブロック情報の前記入力情報または前記出力情報に含まれる印刷可能な文字列の割合である印刷可能文字列割合を判定する文字列割合判定ステップとを実行させるためのプロセス解析プログラムであって、
    前記ブロック情報解析ステップは、前記特徴判定情報として、前記文字列割合判定ステップにより判定された前記入力情報の第1の印刷可能文字列割合と前記出力情報の第2の印刷可能文字列割合との差分を算出し、この差分が予め定められた閾値以上の場合に、前記ブロックを暗号ロジックと判定する
    プロセス解析プログラム。
  8. コンピュータに、
    解析対象のプロセスの実行トレースを取得する実行トレース取得ステップと、
    前記実行トレースからループ構造を示す処理単位であるブロックを抽出するブロック抽出ステップと、
    前記ブロックから、入力情報と記憶領域に書き込まれた値を含む出力情報とを含むブロック情報を抽出するブロック情報抽出ステップと、
    前記ブロック情報の前記入力情報または前記出力情報を用いて前記ブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用して前記ブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定するブロック情報解析ステップと
    前記ブロック情報の前記出力情報をデコードするデータデコードステップとを実行させるためのプロセス解析プログラムであって、
    前記ブロック情報解析ステップは、前記特徴判定情報として、前記データデコードステップにより前記ブロック情報の前記出力情報をデコードしたデコード結果を生成し、このデコード結果と一致する前記出力情報を持つ前記ブロックを暗号ロジックと判定する
    プロセス解析プログラム。
  9. コンピュータに、
    解析対象のプロセスの実行トレースを取得する実行トレース取得ステップと、
    前記実行トレースからループ構造を示す処理単位であるブロックを抽出するブロック抽出ステップと、
    前記ブロックから、入力情報と記憶領域に書き込まれた値を含む出力情報とを含むブロック情報を抽出するブロック情報抽出ステップと、
    前記ブロック情報の前記入力情報または前記出力情報を用いて前記ブロックの入出力関係の特徴を判定する特徴判定情報を生成し、この特徴判定情報を利用して前記ブロックの入出力関係を解析し、暗号関数または復号関数の入出力関係の特徴を示すブロックを暗号ロジックと判定するブロック情報解析ステップと
    前記ブロック情報の前記出力情報を他のブロックへ入力して前記他のブロックの処理を実行する仮想実行ステップとを実行させるためのプロセス解析プログラムであって、
    前記ブロック情報解析ステップは、前記特徴判定情報として、前記仮想実行ステップにより前記他のブロックの処理を実行した実行結果を生成し、この実行結果と一致する前記入力情報を持つ前記ブロックを暗号ロジックと判定する
    プロセス解析プログラム。
JP2016545089A 2014-08-28 2014-08-28 プロセス解析装置、プロセス解析方法、及びプロセス解析プログラム Expired - Fee Related JP6246377B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/004417 WO2016030927A1 (ja) 2014-08-28 2014-08-28 プロセス解析装置、プロセス解析方法、及びプロセス解析プログラム

Publications (2)

Publication Number Publication Date
JPWO2016030927A1 JPWO2016030927A1 (ja) 2017-04-27
JP6246377B2 true JP6246377B2 (ja) 2017-12-13

Family

ID=55398876

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016545089A Expired - Fee Related JP6246377B2 (ja) 2014-08-28 2014-08-28 プロセス解析装置、プロセス解析方法、及びプロセス解析プログラム

Country Status (4)

Country Link
US (1) US10325094B2 (ja)
JP (1) JP6246377B2 (ja)
CN (1) CN106664201A (ja)
WO (1) WO2016030927A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10050798B2 (en) * 2015-02-06 2018-08-14 Mitsubishi Electric Corporation Cryptographic block identification apparatus, cryptographic block identification method, and non-transitory computer readable recording medium storing cryptographic block identification program
CN109313688A (zh) * 2016-06-16 2019-02-05 三菱电机株式会社 密钥生成源确定装置、密钥生成源确定方法和密钥生成源确定程序

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3746098B2 (ja) 1996-02-28 2006-02-15 株式会社日立製作所 データの暗号化装置
US8661539B2 (en) * 2000-07-10 2014-02-25 Oracle International Corporation Intrusion threat detection
US7093239B1 (en) * 2000-07-14 2006-08-15 Internet Security Systems, Inc. Computer immune system and method for detecting unwanted code in a computer system
US20070192863A1 (en) * 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
US6792543B2 (en) * 2001-08-01 2004-09-14 Networks Associates Technology, Inc. Virus scanning on thin client devices using programmable assembly language
US7171690B2 (en) * 2001-08-01 2007-01-30 Mcafee, Inc. Wireless malware scanning back-end system and method
JP2003114616A (ja) 2001-10-03 2003-04-18 Mitsubishi Electric Corp 鍵探索装置
US8027473B2 (en) * 2003-01-13 2011-09-27 Conexant Systems, Inc. System and method for improved data protection in PONs
US7730482B2 (en) * 2004-06-08 2010-06-01 Covia Labs, Inc. Method and system for customized programmatic dynamic creation of interoperability content
JP2007334536A (ja) 2006-06-14 2007-12-27 Securebrain Corp マルウェアの挙動解析システム
US20080126766A1 (en) * 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US9015301B2 (en) * 2007-01-05 2015-04-21 Digital Doors, Inc. Information infrastructure management tools with extractor, secure storage, content analysis and classification and method therefor
JP5083760B2 (ja) 2007-08-03 2012-11-28 独立行政法人情報通信研究機構 マルウェアの類似性検査方法及び装置
JP4755658B2 (ja) 2008-01-30 2011-08-24 日本電信電話株式会社 解析システム、解析方法および解析プログラム
JP5009244B2 (ja) 2008-07-07 2012-08-22 日本電信電話株式会社 マルウェア検知システム、マルウェア検知方法及びマルウェア検知プログラム
JP2010235911A (ja) * 2009-03-11 2010-10-21 Konica Minolta Ij Technologies Inc 活性エネルギー線硬化型インクジェットインク、インクジェット記録方法及び印刷物
US20100234071A1 (en) * 2009-03-12 2010-09-16 Comsys Communication & Signal Processing Ltd. Vehicle integrated communications system
US8402541B2 (en) * 2009-03-12 2013-03-19 Microsoft Corporation Proactive exploit detection
US9197736B2 (en) * 2009-12-31 2015-11-24 Digimarc Corporation Intuitive computing methods and systems
US8464345B2 (en) 2010-04-28 2013-06-11 Symantec Corporation Behavioral signature generation using clustering
JP5499976B2 (ja) 2010-07-29 2014-05-21 富士通株式会社 暗号鍵解析方法、暗号鍵解析装置および暗号鍵解析プログラム
US9245114B2 (en) * 2010-08-26 2016-01-26 Verisign, Inc. Method and system for automatic detection and analysis of malware
JP2012083849A (ja) 2010-10-07 2012-04-26 Hitachi Ltd マルウェア検知装置、及びその方法とプログラム
JP5437977B2 (ja) 2010-11-10 2014-03-12 日本電信電話株式会社 解析システム、解析装置、解析方法及び解析プログラム
US8621620B2 (en) * 2011-03-29 2013-12-31 Mcafee, Inc. System and method for protecting and securing storage devices using below-operating system trapping
JP5687593B2 (ja) 2011-10-06 2015-03-18 日本電信電話株式会社 解析装置、解析方法および解析プログラム
JP5732372B2 (ja) 2011-10-27 2015-06-10 Kddi株式会社 ソフトウェア検知ルール生成装置、ソフトウェア検知ルール生成方法およびソフトウェア検知ルール生成プログラム
JP2013109553A (ja) 2011-11-21 2013-06-06 Hitachi Ltd プログラムのホワイトリスト配信装置及び方法
JP5839967B2 (ja) * 2011-12-01 2016-01-06 三菱電機株式会社 マルウェア解析システム
US9659173B2 (en) 2012-01-31 2017-05-23 International Business Machines Corporation Method for detecting a malware
WO2013123441A1 (en) * 2012-02-17 2013-08-22 Tt Government Solutions, Inc. Method and system for packet acquisition, analysis and intrusion detection in field area networks
US9245120B2 (en) * 2012-07-13 2016-01-26 Cisco Technologies, Inc. Method and apparatus for retroactively detecting malicious or otherwise undesirable software as well as clean software through intelligent rescanning
CN103902895B (zh) * 2012-12-24 2017-07-07 腾讯科技(深圳)有限公司 僵尸网络控制协议挖掘方法和装置
CN103905391B (zh) * 2012-12-26 2018-01-30 腾讯科技(深圳)有限公司 僵尸网络命令和控制协议的获取方法及装置
CN103914652B (zh) * 2013-01-09 2018-05-22 腾讯科技(深圳)有限公司 恶意程序控制指令识别方法及装置
CN103914657B (zh) * 2014-04-16 2016-10-19 南京大学 一种基于函数特征的恶意程序检测方法
CN103902911B (zh) * 2014-04-16 2016-09-14 南京大学 一种基于程序结构特征的恶意程序检测方法

Also Published As

Publication number Publication date
JPWO2016030927A1 (ja) 2017-04-27
US20170337378A1 (en) 2017-11-23
CN106664201A (zh) 2017-05-10
US10325094B2 (en) 2019-06-18
WO2016030927A1 (ja) 2016-03-03

Similar Documents

Publication Publication Date Title
US10915659B2 (en) Privacy detection of a mobile application program
Poudyal et al. A framework for analyzing ransomware using machine learning
Chowdhury et al. Malware analysis and detection using data mining and machine learning classification
US10678921B2 (en) Detecting malware with hash-based fingerprints
TWI419003B (zh) 自動化分析與分類惡意程式之方法及系統
Ullah et al. Modified decision tree technique for ransomware detection at runtime through API calls
Martín et al. Android malware characterization using metadata and machine learning techniques
Rahimian et al. On the reverse engineering of the citadel botnet
CN111163095B (zh) 网络攻击分析方法、网络攻击分析装置、计算设备和介质
Marastoni et al. Groupdroid: Automatically grouping mobile malware by extracting code similarities
İbrahim et al. A method for automatic android malware detection based on static analysis and deep learning
Al-Fawa'reh et al. Malware detection by eating a whole APK
Bakour et al. The android malware static analysis: techniques, limitations, and open challenges
CN111163094A (zh) 网络攻击检测方法、网络攻击检测装置、电子设备和介质
White et al. A method for the automated detection phishing websites through both site characteristics and image analysis
Rafiq et al. AndroMalPack: enhancing the ML-based malware classification by detection and removal of repacked apps for Android systems
Yang et al. Detecting android malware with intensive feature engineering
JP6246377B2 (ja) プロセス解析装置、プロセス解析方法、及びプロセス解析プログラム
WO2020168614A1 (zh) 移动恶意软件大数据的快速智能比对和安全检测方法
KR101557455B1 (ko) 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법
Odebade et al. Mitigating anti-forensics in the cloud via resource-based privacy preserving activity attribution
Patsakis et al. Assessing llms in malicious code deobfuscation of real-world malware campaigns
Hindarto et al. Android-manifest extraction and labeling method for malware compilation and dataset creation.
CN114595483B (zh) 一种安全多方计算方法、装置、电子设备及存储介质
Kucuk et al. BigBing: Privacy-Preserving Cloud-Based Malware Classification Service.

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170905

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170929

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171114

R150 Certificate of patent or registration of utility model

Ref document number: 6246377

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees