(57)【要約】  １つの観点において、１つまたは複数のスクリプトを分類するように適合されたニューラルネットワークをトレーニングするためのシステムが提供される。システムは、少なくとも１つのプロセッサと少なくとも１つのメモリを含むことができる。メモリは、少なくとも１つのメモリによって実行されると動作を提供するプログラムコードを含む。動作は、複数の命令を含む逆アセンブルされたバイナリファイルを受信するステップと、複数の命令のうちの１つまたは複数の命令のシーケンスの存在を検出し、１つまたは複数の命令のシーケンスの存在に少なくとも部分的に基づいて逆アセンブルされたバイナリファイルの分類を決定するように構成された畳み込みニューラルネットワークを用いて、逆アセンブルされたバイナリファイルを処理するステップと、逆アセンブルされたバイナリファイルの分類を出力として提供するステップとを含む。
2018524735.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、少なくとも１つのメモリによって実行されると動作を提供するプログラムコードを含む少なくとも１つのメモリとを含むシステムであって、
前記動作は、
複数の命令を含む逆アセンブルされたバイナリファイルを受信し、
複数の命令のうちの１つまたは複数の命令のシーケンスの存在を検出し、１つまたは複数の命令のシーケンスの存在に少なくとも部分的に基づいて、逆アセンブルされたバイナリファイルの分類を決定するように構成された畳み込みニューラルネットワークを用いて、逆アセンブルされたバイナリファイルを処理し、
逆アセンブルされたバイナリファイルの分類を、出力として提供することとを含むシステム。
【請求項２】
前記複数の命令は、可変長である請求項１のシステム。
【請求項３】
前記システムは、前記複数の命令のそれぞれを同じ長さに切り捨てるまたはパディングすることによって、前記複数の命令の固定長表現を生成するようにさらに構成される請求項１または２のシステム。
【請求項４】
前記複数の命令の固定長表現は、各命令に関連付けられたニーモニックを含む請求項３のシステム。
【請求項５】
前記システムは、前記複数の命令の固定長表現を符号化するようにさらに構成され、
前記符号化は、ワンホット符号化またはバイナリ符号化に基づく請求項３または４のシステム。
【請求項６】
前記畳み込みニューラルネットワークは、第１の複数のカーネルを前記逆アセンブルされたバイナリファイルに適用するように構成され、
前記第１の複数のカーネルのそれぞれは、２つ以上の命令の異なるシーケンスの検出をするように適合される請求項１から５のうちいずれか１項のシステム。
【請求項７】
前記畳み込みニューラルネットワークは、第２の複数のカーネルを前記逆アセンブルされたバイナリファイルに適用するようにさらに構成され、
前記第２の複数のカーネルのそれぞれは、２つ以上の命令のシーケンスの異なるシーケンスを検出するように適合される請求項６のシステム。
【請求項８】
前記第１の複数のカーネルを適用することは、第１の重み行列を前記逆アセンブルされたバイナリファイルの行列表現に適用することを含み、
前記逆アセンブルされたバイナリファイルの行列表現は、逆アセンブルされたバイナリファイルに含まれる複数の命令の符号化固定長表現を含む請求項６のシステム。
【請求項９】
前記システムは、前記畳み込みニューラルネットワークをトレーニングするようにさらに構成され、
少なくとも
複数のトレーニングファイルを受信し、
前記畳み込みニューラルネットワークを用いて、第１のトレーニングファイルを少なくとも処理することによって、第１のトレーニングファイルの分類を決定し、
第１のトレーニングファイルの分類に関連するエラーを逆伝搬し、
少なくとも第１の重み行列を調整して、第１のトレーニングファイルの分類に関連するエラーを最小限にすることによって、トレーニングされ、
前記複数のトレーニングファイルは、複数の逆アセンブルされたバイナリファイルを含む請求項１から８のうちいずれか１項のシステム。
【請求項１０】
前記畳み込みニューラルネットワークをトレーニングすることは、
前記畳み込みニューラルネットワークを用いて、第２のトレーニングファイルを少なくとも処理することによって、第２のトレーニングファイルの分類を決定し、
第２のトレーニングファイルの分類に関連するエラーを逆伝搬し、
少なくとも第１の重み行列を再調整して、第２のトレーニングファイルの分類に関連するエラーを最小限にすることをさらに含む請求項９のシステム。
【請求項１１】
コンピュータに実装された方法であって、
前記方法は、
複数の命令を含む逆アセンブルされたバイナリファイルを受信するステップと、
複数の命令のうちの１つまたは複数の命令のシーケンスの存在を検出し、１つまたは複数の命令のシーケンスの存在に少なくとも部分的に基づいて、逆アセンブルされたバイナリファイルの分類を決定するように構成された畳み込みニューラルネットワークを用いて、逆アセンブルされたバイナリファイルを処理するステップと、
逆アセンブルされたバイナリファイルの分類を、出力として提供するステップとを含む方法。
【請求項１２】
前記複数の命令は、可変長である請求項１１の方法。
【請求項１３】
前記方法は、前記複数の命令のそれぞれを同じ長さに切り捨てるまたはパディングすることによって、前記複数の命令の固定長表現を生成するステップをさらに含む請求項１１または１２の方法。
【請求項１４】
前記複数の命令の固定長表現は、各命令に関連付けられたニーモニックを含む請求項１３の方法。
【請求項１５】
前記方法は、前記複数の命令の固定長表現を符号化するステップをさらに含み、
前記符号化は、ワンホット符号化またはバイナリ符号化に基づく請求項１３または１４の方法。
【請求項１６】
前記畳み込みニューラルネットワークは、第１の複数のカーネルを前記逆アセンブルされたバイナリファイルに適用するように構成され、
前記第１の複数のカーネルのそれぞれは、２つ以上の命令の異なるシーケンスの検出をするように適合される請求項１１から１５のうちいずれか１項の方法。
【請求項１７】
前記畳み込みニューラルネットワークは、第２の複数のカーネルを前記逆アセンブルされたバイナリファイルに適用するようにさらに構成され、
前記第２の複数のカーネルのそれぞれは、２つ以上の命令のシーケンスの異なるシーケンスを検出するように適合される請求項１６の方法。
【請求項１８】
前記第１の複数のカーネルを適用することは、第１の重み行列を前記逆アセンブルされたバイナリファイルの行列表現に適用することを含み、
前記逆アセンブルされたバイナリファイルの行列表現は、逆アセンブルされたバイナリファイルに含まれる複数の命令の符号化固定長表現を含む請求項１６の方法。
【請求項１９】
前記方法は、前記畳み込みニューラルネットワークをトレーニングするステップをさらに含み、
少なくとも
複数のトレーニングファイルを受信するステップと、
前記畳み込みニューラルネットワークを用いて、第１のトレーニングファイルを少なくとも処理することによって、第１のトレーニングファイルの分類を決定するステップと、
第１のトレーニングファイルの分類に関連するエラーを逆伝搬するステップと、
少なくとも第１の重み行列を調整して、第１のトレーニングファイルの分類に関連するエラーを最小限にするステップとによって、トレーニングされ、
前記複数のトレーニングファイルは、複数の逆アセンブルされたバイナリファイルを含む請求項１１から１８のうちいずれか１項の方法。
【請求項２０】
前記畳み込みニューラルネットワークをトレーニングするステップは、
前記畳み込みニューラルネットワークを用いて、第２のトレーニングファイルを少なくとも処理することによって、第２のトレーニングファイルの分類を決定するステップと、
第２のトレーニングファイルの分類に関連するエラーを逆伝搬するステップと、
少なくとも第１の重み行列を再調整して、第２のトレーニングファイルの分類に関連するエラーを最小限にするステップとをさらに含む請求項１９の方法。
【請求項２１】
動作を実行するようにプロセッサを構成する命令を含む非一時的なコンピュータ可読媒体であって、
前記動作は、
複数の命令を含む逆アセンブルされたバイナリファイルを受信するステップと、
複数の命令のうちの１つまたは複数の命令のシーケンスの存在を検出し、１つまたは複数の命令のシーケンスの存在に少なくとも部分的に基づいて、逆アセンブルされたバイナリファイルの分類を決定するように構成された畳み込みニューラルネットワークを用いて、逆アセンブルされたバイナリファイルを処理するステップと、
逆アセンブルされたバイナリファイルの分類を、出力として提供するステップとを含む非一時的なコンピュータ可読媒体。
【請求項２２】
前記複数の命令は、可変長である請求項２１の非一時的なコンピュータ可読媒体。
【請求項２３】
前記非一時的なコンピュータ可読媒体は、前記複数の命令のそれぞれを同じ長さに切り捨てるまたはパディングすることによって、前記複数の命令の固定長表現を生成するステップをさらに含む請求項２１または２２の非一時的なコンピュータ可読媒体。
【請求項２４】
前記複数の命令の固定長表現は、各命令に関連付けられたニーモニックを含む請求項２３の非一時的なコンピュータ可読媒体。
【請求項２５】
前記非一時的なコンピュータ可読媒体は、前記複数の命令の固定長表現を符号化するステップをさらに含み、
前記符号化は、ワンホット符号化またはバイナリ符号化に基づく請求項２３または２４の非一時的なコンピュータ可読媒体。
【請求項２６】
前記畳み込みニューラルネットワークは、第１の複数のカーネルを前記逆アセンブルされたバイナリファイルに適用するように構成され、
前記第１の複数のカーネルのそれぞれは、２つ以上の命令の異なるシーケンスの検出をするように適合される請求項２１から２５のうちいずれか１項の非一時的なコンピュータ可読媒体。
【請求項２７】
前記畳み込みニューラルネットワークは、第２の複数のカーネルを前記逆アセンブルされたバイナリファイルに適用するようにさらに構成され、
前記第２の複数のカーネルのそれぞれは、２つ以上の命令のシーケンスの異なるシーケンスを検出するように適合される請求項２６の非一時的なコンピュータ可読媒体。
【請求項２８】
前記第１の複数のカーネルを適用するステップは、第１の重み行列を前記逆アセンブルされたバイナリファイルの行列表現に適用することを含み、
前記逆アセンブルされたバイナリファイルの行列表現は、逆アセンブルされたバイナリファイルに含まれる複数の命令の符号化固定長表現を含む請求項２６の非一時的なコンピュータ可読媒体。
【請求項２９】
前記非一時的なコンピュータ可読媒体は、前記畳み込みニューラルネットワークをトレーニングするステップをさらに含み、
少なくとも
複数のトレーニングファイルを受信するステップと、
前記畳み込みニューラルネットワークを用いて、第１のトレーニングファイルを少なくとも処理することによって、第１のトレーニングファイルの分類を決定するステップと、
第１のトレーニングファイルの分類に関連するエラーを逆伝搬するステップと、
少なくとも第１の重み行列を調整して、第１のトレーニングファイルの分類に関連するエラーを最小限にするステップとによって、トレーニングされ、
前記複数のトレーニングファイルは、複数の逆アセンブルされたバイナリファイルを含む請求項２１から２８のうちいずれか１項の非一時的なコンピュータ可読媒体。
【請求項３０】
前記畳み込みニューラルネットワークをトレーニングするステップは、
前記畳み込みニューラルネットワークを用いて、第２のトレーニングファイルを少なくとも処理することによって、第２のトレーニングファイルの分類を決定するステップと、
第２のトレーニングファイルの分類に関連するエラーを逆伝搬するステップと、
少なくとも第１の重み行列を再調整して、第２のトレーニングファイルの分類に関連するエラーを最小限にするステップとをさらに含む請求項２９の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載される主題は、一般に、機械学習に関し、より詳細には、マルウェアの検出におけるニューラルネットワークの使用に関する。
【０００２】
本出願は、内容が参照によりその全体が本明細書に組み込まれる、２０１５年７月１５日に出願された“マルウェア解析のための畳み込みニューラルネットワーク“と題する米国仮特許出願第６２／１９３，０２５号に関して優先権を主張する。
【背景技術】
【０００３】
コンピュータプログラムは、典型的には、実行可能プログラムを生成するようにコンパイルされる。コンパイルプロセスは、コンピュータプログラムをソースコードからオブジェクトコードに変換する。ソースコードは人間が読める高水準のプログラミング言語（例えば、Ｃ、Ｊａｖａ(登録商標)）で書かれているが、オブジェクトコードはバイナリ形式であり、すぐには理解できない。オブジェクトコードは、逆アセンブルとして知られているプロセスで人間が読める形式に変換することができるが、人間のオペレータは、逆アセンブルされたオブジェクトコードを検査することによって、悪意のあるコンピュータプログラムを効率的かつ信頼できる方法で検出できない。
【発明の概要】
【０００４】
コンピュータプログラム製品を含むシステム、方法、および製品は、トレーニングおよびマルウェアを検出するために畳み込みニューラルネットワークを使用するために提供される。いくつかの例示的な実施形態では、少なくとも１つのプロセッサと、少なくとも１つのメモリによって実行されたときに動作を提供するプログラムコードを含む少なくとも１つのメモリとを含むシステムが提供される。オペレーションは、複数の命令を含む逆アセンブルされたバイナリファイルを受信するステップと、複数の命令のうちの１つまたは複数の命令シーケンスの存在を検出し、１つまたは複数のシーケンスの存在に少なくとも部分的に基づいて逆アセンブルされたバイナリファイルの分類を決定するように構成された畳み込みニューラルネットワークを用いて、逆アセンブルされたバイナリファイルを処理するステップと、逆アセンブルされたバイナリファイルの分類を出力として提供するステップとを含む。
【０００５】
いくつかの変形例では、以下の特徴を含む本明細書に開示された１つまたは複数の特徴は任意に実現可能な組み合わせに任意に含めることができる。複数の命令は、可変長であってもよい。システムはさらに、複数の命令の各々を同じ長さに切り詰めるか、またはパディングによって、複数の命令の固定長表現を生成するように構成することができる。複数の命令の固定長表現は、各命令に関連付けられたニーモニックを含むことができる。いくつかの変形例では、システムは、複数の命令の固定長表現を符号化するようにさらに構成することができ、符号化は、ワンホット符号化またはバイナリ符号化に基づく。
【０００６】
いくつかの変形例では、畳み込みニューラルネットワークは、第１の複数のカーネル逆アセンブルしたバイナリファイルに適用するように構成することができ、第１の複数のカーネルの各々は、２つ以上の命令の異なるシーケンスを検出するように構成される。畳み込みニューラルネットワークは、逆アセンブルされたバイナリファイルに第２の複数のカーネルを適用するようにさらに構成することができ、第２の複数のカーネルの各々は、２つ以上の命令シーケンスの異なるシーケンスを検出するように構成される。第１の複数のカーネルを適用することは、第１の重み行列を、逆アセンブルされたバイナリファイルの行列表現に適用することを含むことができ、逆アセンブルされたバイナリファイルの行列表現は、逆アセンブルされたバイナリファイルに含まれる複数の命令の符号化された固定長表現を含む。
【０００７】
いくつかの変形例では、システムは、少なくとも、複数のトレーニングファイルを受信することによって、畳み込みニューラルネットワークをトレーニングするように構成することができ、複数のトレーニングファイルは、複数の逆アセンブルされたバイナリファイルを含み、畳み込みニューラルネットワークを用いて少なくとも第１のトレーニングファイルを処理することによって第１のトレーニングファイルの分類を決定し、第１のトレーニングファイルの分類に関連するエラーを逆伝搬し、第１のトレーニングファイルの分類に関連するエラーを最小限に抑えるために、少なくとも第１の重み行列を調整する。畳み込みニューラルネットワークのトレーニングは、畳み込みニューラルネットワークで少なくとも第２のトレーニングファイルを処理することによって第２のトレーニングファイルの分類を決定するステップと、第２のトレーニングファイルの分類に関連するエラーを逆伝搬するステップと、少なくとも第１の重み行列を再調整して、第２のトレーニングファイルの分類に関連するエラーを最小限にするステップとを含む。
【０００８】
現在の主題の実施形態は、本明細書で提供される記述と一致する方法、および１つまたは複数のマシン（例えば、コンピュータなど）を実行するように動作可能な具体的に表現された機械可読媒体を含む事項を含むことができるが、記載された特徴のうちの１つまたは複数を実施する動作をもたらす。同様に、１つまたは複数のプロセッサおよび１つまたは複数のプロセッサに結合された１つまたは複数のメモリを含むことができるコンピュータシステムも記載される。 非一時的なコンピュータ可読記憶媒体または機械可読記憶媒体を含むことができるメモリは、１つまたは複数のプロセッサに、本明細書に記載された１つまたは複数の動作を実行させる１つまたは複数のプログラムを含み、符号化し、格納することができる。現在の主題の１つまたは複数の実施形態と一致するコンピュータ実装の方法は、単一のコンピューティングシステムまたは複数のコンピューティングシステムに存在する１つまたは複数のデータプロセッサによって実施することができる。そのような複数のコンピューティングシステムは、ネットワーク（例えば、インターネット、無線ワイドエリアネットワーク、ローカルネットワーク、広域ネットワーク、有線ネットワークなど）、複数のコンピューティングシステムのうちの１つまたは複数の間の直接接続を介した接続を含むがこれに限定されない１つまたは複数の接続を介して接続され、データおよび／またはコマンドまたは他の命令などを交換することができる。
【０００９】
本明細書に記載される主題の１つまたは複数の変形の詳細は、添付の図面および以下の説明に記載される。本明細書に記載される主題の他の特徴および利点は、説明および図面、ならびに請求項から明らかになるであろう。現在開示されている主題の特定の特徴は、説明のために記載されているが、そのような特徴は限定することを意図するものではないことは容易に理解されるべきである。この開示に続く請求項は、保護される主題の範囲を定義することを意図している。
【００１０】
添付の図面は、本明細書に組み込まれ、本明細書の一部を構成し、本明細書に開示される主題の特定の態様を示し、記載と共に、開示された実施形態に関連する原理の一部を説明するのを助ける。次に図面を説明する。
【図面の簡単な説明】
【００１１】
【図１】現在の主題の実施形態と一致する機械学習モデルに含めることができるソフトウェア要素の例を示すブロック図である。
【図２Ａ】現在の主題の実施形態と一致する畳み込みニューラルネットワークを示す。
【図２Ｂ】現在の主題の実施形態と一致する畳み込みニューラルネットワークを示す。
【図３Ａ】逆アセンブルされたバイナリファイルに含めることができる命令セットの例を示す。
【図３Ｂ】各命令の符号化された固定長表現を生成する命令セット内の命令にワンホット符号化が適用されるときに使用されるマッピングの例を示す。
【図３Ｃ】命令セット内の命令の符号化固定長表現の例を示す図である。
【図３Ｄ】１つまたは複数の畳み込みカーネルを命令セット内の命令に適用することができる順序の例を示す。
【図３Ｅ】現在の主題の実施形態と一致する、逆アセンブルされたバイナリファイル内の命令のシーケンスを表す入力行列の例を示す図である。
【図３Ｆ】現在の主題の実施形態と一致する畳み込み層で適用される１つまたは複数のカーネルを表す重み行列の例を示す図である。
【図３Ｇ】現在の主題の実施形態と一致する、逆アセンブルされたバイナリファイル内の命令のシーケンスに１つまたは複数のカーネルを適用することによって生成された特徴マップを表す行列の例を示す図である。
【図４】現在の主題の実施形態と一致するニューラルネットワークシステムを示すブロック図である。
【図５】現在の主題の実施形態と一致するマルウェアを検出するために従来のニューラルネットワークをトレーニングするプロセスを示すフローチャートを示す。
【図６】トレーニングされた畳み込みニューラルネットワークを利用して、現在の主題の実施形態と一致するマルウェアを検出するプロセスを示すフローチャートを示す。
【発明を実施するための形態】
【００１２】
上記のように、悪意のある実行可能ファイルは、バイナリファイルの検査と解析に関連する困難のために検出を回避する傾向がある。したがって、現在の主題のいくつかの実施形態では、バイナリファイルを逆アセンブルし、それによって、１つまたは複数の識別機能（例えば、命令ニーモニック）を有する識別可能な命令シーケンスを形成することができる。畳み込みニューラルネットワーク（ＣＮＮ）は、逆アセンブルされたバイナリファイルを解析するために利用され、逆アセンブルされたバイナリファイル内の命令の特定のシーケンスを検出するように適合された複数のカーネルを適用することを含む。 畳み込みニューラルネットワークは、逆アセンブルされたバイナリファイルの分類を（例えば、悪意のあるまたは良性のものとして）提供することによって悪意のある実行可能ファイルを検出することができる。
【００１３】
逆アセンブルされたバイナリファイルの命令は、可変長にすることができる。例えば、ｘ８６アーキテクチャで使用される命令は、一般に長さが８バイト未満であるが、１５バイトもの長さにすることができる。現在の主題のいくつかの実施形態では、可変長命令について固定長表現を生成することができる。例えば、可変長命令をある固定長（例えば、２バイト、８バイト、１５バイト）にパディングまたは切り詰めることによって、固定長表現を生成することができる。さらに、命令の固定長表現は、畳み込みニューラルネットワークによるより効率的な処理のためにさらに符号化することができる。例えば、固定長表現は、スパース（例えば、ワンホット符号化）または密（例えば、バイナリ符号化）符号化方式を用いて符号化することができる。
【００１４】
現在の主題のいくつかの実施形態では、畳み込みニューラルネットワークは、１つまたは複数の監視学習および／または最適化技術を適用することによってマルウェアを検出するようにトレーニングすることができる。例えば、畳み込みニューラルネットワークをトレーニングすることは、畳み込みニューラルネットワークを利用して複数のトレーニングファイルを処理することを含むことができる。トレーニングファイルは、既知の分類（例えば、悪意のあるまたは良性のもの）のバイナリファイルを逆アセンブルすることができる。畳み込みニューラルネットワークを利用して、トレーニングファイルを処理し、対応するトレーニング出力を生成することができる。畳み込みニューラルネットワークをトレーニングすることは、（例えば、既知の分類と比較して）トレーニング出力に関連するエラーを最小限にするために、１つまたは複数の監視学習および／または最適化技術を適用することを含むことができる。トレーニングされた畳み込みニューラルネットワークは、未知の逆アセンブルされたバイナリファイル（例えば、悪意のある、または良性のもの）の分類を決定することによって悪意のある実行可能ファイルを検出するために提供することができる。
【００１５】
図１は、識別アプリケーションで使用するために機械学習モデル１００に含めることができるソフトウェア要素の例を示すブロック図を示す。特徴収集モジュール１１０（時には特徴収集器と呼ばれる）、識別モジュール１２０、および実施モジュール１３０は、１つまたは複数のサンプルから学習し、所与のファイルが脅威である可能性に関する予測出力を提供するために相互作用することができる。本明細書で使用する“モジュール”という用語は、１つまたは複数のコンピューティングシステムの一部である１つまたは複数のプログラマブルプロセッサを介して実施できるソフトウェア機能を指す。特徴収集モジュール１１０は、ファイルおよび／またはそのファイルが読み込まれ、ダウンロードされ、実行され、書き込まれるなどの環境を特徴付ける特徴を収集または他の方法でアクセスする。特徴とは、サンプルから測定できる顕著なデータポイントを指す。本明細書中で使用される場合、サンプルは、類似のサンプルに対する分類または類似解析動作が実行され得る任意のデータを指す。マルチクラス分類器は、３つ以上のクラスの分類をサポートできる分類器を指す。マルチモデル分類器とは、複雑なサンプル内の特定の複雑さを扱うためにサブモデルを使用する分類器を指す。
【００１６】
モデルは、特定のクラスに分類されるサンプルの可能性を定義する単一またはマルチモデルの確率行列とすることができる。現在の主題と一致して、機械学習モデルは、クラウドベースのインスタンスおよびローカルに実行中のインスタンス（例えば、組織の１つまたは複数のエンドポイントコンピュータ）の両方として実施することができる。
【００１７】
特徴収集モジュール１１０によって収集および／またはアクセスされた特徴は、識別モジュール１２０に渡され、識別モジュール１２０は、ファイルの実行を許可するか否か（またはファイルをダウンロードし、開くなど）を決定することができる。ファイルが実行されてはならないと判断された場合、またはファイルに対する他の何らかのアクションが防止されるべき場合、実施モジュール１３０は、ファイルの実行、オープン、実行の継続、書き込み、ダウンロードなどを防止するアクションをとることができる。現在の主題のいくつかの実施形態では、実施モジュール１３０は、潜在的な脅威として評価されるファイル等の隔離を要求することができる。
【００１８】
機械学習脅威識別モデルまたは機械学習脅威識別モデルのアンサンブルは、アプリケーション制御の前に考案され、トレーニングされることができる。さまざまな機械学習アルゴリズムの予測的性質のため、トレーニングされたモデルは、安全で安全でないプログラムとの“あいまいな”マッチングを可能にする。本明細書では、“安全な”および“危険な”という用語は、一般に、脅威となり得る１つまたは複数のファイルによって提示される危険の推定値に基づく機械生成の相対分類を指す。本明細書に記載されている機械学習脅威識別モデルは、所与のファイルに対する脅威スコアを出力することができ、脅威スコアを使用してファイルを安全または安全でないものとして分類することができる。２つ以上の区分を有する他の分類プロトコルもまた、現在の主題の範囲内にある。非限定的な例では、１つまたは複数の機械学習脅威識別モデルからの脅威スコア出力を使用して、潜在的な脅威を３つのカテゴリ（例えば、安全、疑わしい、危険なまたは同様のラベル）、４つのカテゴリ（例えば、疑わしいが危険な可能性がある、安全でない、または同様のラベル）、または４つ以上のカテゴリに分類することができる。
【００１９】
このようなモデルのアンサンブルで機械学習脅威識別モデルを慎重に選択してトレーニングすることにより、脅威識別システムは、“安全”に似ているか、またはその欠如したプログラム動作の小規模および大規模な変化に対応して、時間の経過とともに弾力的に行動することができる。機械学習脅威識別モデルは、ニューラルネットワーク、サポートベクトルマシン、ロジスティック回帰モデル、ベイジアンアルゴリズム、およびディシジョンツリーを含む例示的な例として、１つまたは複数のアルゴリズムが組み込まれていることを特徴とすることができる。機械学習脅威識別モデルは、監視学習を使用してトレーニングすることができ、トレーニングセット内で発生しないサンプルを正しく分類するために、所望の出力値でラベル付けされたトレーニングセットの入力サンプルをモデルに適合させるか、アルゴリズムでは、ラベルのないデータの隠れた構造を識別する。
【００２０】
上述したように、本明細書に記載されるような機械学習脅威識別モデルは、いくつかの例では、所与のファイルの解析に基づく出力としてリスクまたは脅威スコアを提供することができる。このスコア、および／またはそのようなスコアに基づく分類を使用して、ファイルを制限なしで進めるか、代わりに潜在的な脅威とするかを判断できる。例えば、再び図１の図１００を参照すると、特徴収集モジュール１１０は、進行中の基準で受動的な特徴（操作上および動的）を識別モジュール１２０に送ることができる。識別モジュール１２０は、ファイル（例えば、プログラム）の実行のような特定の決定点で、特徴収集モジュール１１０から特定時点の特徴を要求することができる。これらの特定時点の特徴には、ファイルに対するコンピュータの外部の状態や外部ソースからの関連特徴に関する観測情報を含めることができます。識別モジュール１２０は、ファイルが実行されるべきかどうか、または他のアクション（例えば、ファイルのオープンまたはダウンロード、データの送信または受信など）が開始または進行することが許可されるかどうかを決定することができる。ファイルに関する識別モジュールの決定に基づいて実行／オープン／ダウンロードが許可される場合、プログラムが実行されるか、ファイルがオープンまたはダウンロードされるか、またはファイルに関連する他のアクションが起こり得る。アクションが許可されない場合、実施モジュール１３０は、それが発生するのを防ぐことができる。
【００２１】
機械学習アプローチは、疑わしいファイルまたはプログラムが１つまたは複数のサーバまたは他のコンピュータ上に実装されたモデルによって解析される、ネットワーク（例えば、クラウドベース）サービスを介してローカルに（例えば、１つまたは複数のコンピュータエンドポイントにおいて）両方適用することができる。いくつかの実施形態では、モデルのローカルバージョン（例えば、エンドポイントマシン上で実行する）とモデルのクラウドベースバージョンの両方が識別タスクを処理することができる。ローカルモデルは、ネットワーク接続の存在に依存せず、モデルのクラウドベースバージョンを実行しているサーバに対する疑わしい脅威に関する情報の送信を必要としないエンドポイント検出を提供できる。クラウドベースのバージョンは、機械学習の改善や脅威の識別性を向上させる可能性のあるその他の特徴によって、より簡単に更新できる。さらに、クラウドベースのモデルは、複数のエンドポイントから受信した入力から学習することができるため、新しいタイプの脅威に適応することができる。このように、所与の疑わしい脅威は、クラウドベースの機械学習モデルとローカルの機械学習モデルの両方で解析することがでる。クラウドベースのモデルとローカルに実行されるモデルが一致しない場合には、一般にクラウドベースのモデルはより多くの更新情報とより多くのトレーニングインプットにアクセスできるため、典型的なアプローチは、ファイルのスコアリング、クラウドベースのモデルによって生成されたプログラム、アクティビティなどが、ファイル、プログラム、アクティビティなどに与えられた最終スコア（本明細書では“サンプル”と総称される）を支配する。
【００２２】
畳み込みニューラルネットワークのようなアプローチは、少なくとも人間が設計した特徴と同じくらい効果的な特徴を抽出することを学ぶことができる分類器をもたらすことができる。このようなモデルは、現在画像および音声データに適用されているが、最近の結果は、これらのアプローチが、テキストデータなどの他のデータタイプで以前は評価されていなかった有効性を提供する可能性があることを示している。このようなアプローチをマルウェア分類の目的で実行可能ファイルのバイトに適用すると、いくらか改善される可能性があるが、そのようなモデルの有効性を制限する要因は、より長いサンプルを処理できることである。画像データは小さくて固定サイズ（例えば、２５６×２５６ピクセルおよび３色チャネル）である傾向があるが、実行可能ファイルは、数キロバイトから数百メガバイトの潜在的なファイルサイズの広い範囲に存在する。
【００２３】
畳み込みニューラルネットワークを組み込んだ機械学習モデル識別アプローチの単純な構成では、畳み込みニューラルネットワークは、一般に、入力サンプルのすべての領域に均一な量の計算を適用する。しかし、実行可能ファイルでは、ファイルが悪意のあるかどうかを判別するのに役立たない大量のコードのセクションが存在する可能性がある。例えば、典型的なアプローチは、１つまたは複数のｎ−グラム（例えば、バイトシーケンス）の定義を含むことができるいくつかの初期の特徴エンジニアリングを含むことができる。この初期の特徴エンジニアリングに基づいて、機械学習アルゴリズムを支援するために１つまたは複数の分類器を開発することができる。
【００２４】
図２Ａ〜図２Ｂは、現在の主題の実施形態と一致する畳み込みニューラルネットワーク２００を示す。図２を参照する。図２Ａ〜図２Ｂを参照すると、畳み込みニューラルネットワーク２００は、第１の畳み込み層２１２、第２の畳み込み層２１４、プール層２２０、完全に接続された層２３０、および出力層２４０を含むことができる。畳み込みニューラルネットワーク２００は、例えば、逆アセンブルされたバイナリファイル２５０を含む１つまたは複数の逆アセンブルされたバイナリファイルの分類（例えば、悪意のあるまたは良性のもの）を決定することによって、マルウェアを検出するために利用され得る。
【００２５】
畳み込みニューラルネットワーク２００は、逆アセンブルされたバイナリファイル２５０を処理するように構成することができ、逆アセンブルされたバイナリファイル２５０は、長さが可変である一連の命令を含むことができる。したがって、命令の固定長表現を生成するために、１つまたは複数の技術を適用することができる。さらに、命令の固定長表現を符号化して、符号化固定長表現の対応するシーケンスを生成することができる。したがって、畳み込みニューラルネットワーク２００は、逆アセンブルされたバイナリファイル２５０からの命令のエンコードされた固定長表現のシーケンスを入力２０２で受信するように構成することができる。
【００２６】
現在の主題のいくつかの実施形態では、逆アセンブルされたバイナリファイル２５０からの可変長命令をパディングして、命令の固定長表現を生成することができる。例えば、各命令は、最大長（例えば、ｘ８６アーキテクチャでは１５バイト）にパディングされ、それにより情報の損失を回避することができる。あるいは、可変長命令を切り捨てて、命令の固定長表現を生成することができる。例えば、各命令は、最も一般的な長さの命令（例えば、８バイト）に切り詰めることができる。
【００２７】
現在の主題のいくつかの実施形態によれば、各可変長命令は、命令の最初の２バイトまで切り捨てられることができる。命令を命令の最初の２バイトに切り詰めることは、例えば命令ニーモニックおよびオペランドのタイプを含むマルウェア検出に関連する情報を保持することができる。命令の残りの部分は、例えば、命令のオペランドを含むマルウェア検出に関連しない情報を含むことができる。したがって、命令の最初の２バイトに切り捨てても、マルウェアを検出する際の畳み込みニューラルネットワーク２００の有効性および信頼性を損なうことはない。
【００２８】
命令の固定長表現を符号化して、符号化固定長表現のシーケンスを生成することができる。現在の主題のいくつかの実施形態では、固定長表現は、高密度符号化方式を使用して符号化することができる。例えば、各固定長表現は、バイナリ符号化を使用して符号化することができる。このように、命令の固定長表現における情報のすべてのバイトを表すために８ビットが必要とされることがある。あるいは、固定長表現は、スパース符号化方式を使用して符号化することができる。例えば、各固定長表現は、ワンホット符号化を使用して符号化することができる。ワンホット符号化を使用して命令の固定長表現を符号化するには、命令の固定長表現における情報の各バイトに２５６ビットが必要である。しかし、スパース符号化方式は、畳み込みニューラルネットワーク２００がトレーニングを受けているときの最適化を容易にすることができる。
【００２９】
例えば、図３Ａは、逆アセンブルされたバイナリファイル２５０に含めることができる命令セット３００の一例を示す。命令セット３００内の命令は、各命令の固定長表現を生成するために切り捨てることができる。例えば、各命令（例えば、ｍｏｖ，ｃｍｐ，ｊｎｅ，ｄｅｃ，およびｊｍｐ）に関連するニーモニックを保存するために、命令を切り捨てることができる。さらに、固定長表現は、高密度またはスパース符号化方式を使用して符号化することができる。図３Ｂは、各命令の符号化された固定長表現を生成するために命令セット３００内の命令にワンホット符号化が適用されるときに使用されるマッピングの例を示す。一方、図３Ｃは、命令セット３００内の命令の符号化固定長表現の例を示す。図３Ｃに示す符号化された固定長表現は、畳み込みニューラルネットワーク２００の入力１０２に提供されてもよい。
【００３０】
現在の主題のいくつかの実施形態では、第１の畳み込みレイヤ２１２は、複数のカーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘを符号化された固定長表現に適用することによって、符号化固定長表現を処理するように構成することができる。第１畳み込みレイヤ２１２に適用される各カーネルは、命令の特定のシーケンスを検出するように構成することができる。現在の主題のいくつかの実施形態によれば、第１の畳み込みレイヤ２１２に適用される各カーネルは、ｗ個の命令を有するシーケンスを検出するように適合させることができる。すなわち、カーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘは、ｗ個の命令が特定の順序で現れるインスタンスを検出するように構成することができる。例えば、カーネルＫ１，１は、命令シーケンス［ｃｍｐ，ｊｎｅ，ｄｅｃ］を検出するように適応させることができ、カーネルＫ１，２は、命令シーケンス［ｄｅｃ，ｍｏｖ，ｊｍｐ］を検出するように適応させることができる。各カーネルのサイズ（例えば、ｗ個の命令数）は、第１の畳み込み層２１２のウィンドウサイズに対応することができる。
【００３１】
現在の主題のいくつかの実施形態では、各カーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘは、逆アセンブルされたバイナリファイル２５０内の連続した命令グループに適用することができる。例えば、カーネルＫ１，１を第１の命令グループに適用した後、カーネルＫｌをあるストライドサイズに従ってスライドさせ、第２の隣接する命令グループに適用することができる。したがって、第１の畳み込みレイヤ２１２のウィンドウサイズが３であり、第１の畳み込みレイヤ２１２のストライドサイズが１である場合、カーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘは、命令セット３００からの命令に、図３Ｄに示す順序で適用することができる。
【００３２】
現在の主題のいくつかの実施形態によれば、カーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘを逆アセンブルしたバイナリファイル２５０内の命令は、対応する特徴マップ２６０を生成することができる。逆アセンブルされたバイナリファイル２５０からの命令をカーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘを適用することによって生成された特徴マップ２６０は、次に示される。
ＸＷ１
ここで、Ｗ１∈ＲＮｏｕｔｘＮは、第１の畳み込み層２１２に適用された畳み込みカーネル（例えば、カーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘ）を表す重み行列であり、Ｘは、第１の畳み込み層２１２のウィンドウサイズとストライドサイズによって特定される処理順序で配列された命令を表す入力行列である。
【００３３】
図３Ｅは、逆アセンブルされたバイナリファイル２５０内の命令のシーケンスを表す入力行列Ｘの例を示す。第１の畳み込み層２１２に適用されるカーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘを表す重み行列Ｗ１の一例を図３Ｆに示す。図３Ｇは、カーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘを逆アセンブルされたバイナリファイル２５０からの命令に適用することによって生成される特徴マップ２６０を表す行列ＸＷ１の例を示す。
【００３４】
図２Ａ〜図２Ｂを再度参照すると、第２の畳み込みレイヤ２１４は、複数の追加のカーネルＫ２，１，Ｋ２，２，．．．，Ｋ２，ｙを適用することによって、逆アセンブルされたバイナリファイル２５０をさらに処理するように構成することができる。現在の主題のいくつかの実施形態によれば、各連続畳み込みレイヤ（例えば、第１の畳み込みレイヤ２１２、第２の畳み込みレイヤ２１４）は、逆アセンブルされたバイナリファイル２５０からの命令シーケンスのますます抽象的な表現を生成するように適合させることができる。したがって、第２の畳み込みレイヤ２１４で適用されたカーネルＫ２，１，Ｋ２，２，．．．，Ｋ２，ｙは、第１の畳み込みレイヤ２１２で検出された２つ以上の命令シーケンスの特定のシーケンスを検出するように適合させることができる。すなわち、カーネルＫ２，１，Ｋ２，２，．．．，Ｋ２，ｙは、命令の特定のシーケンスが特定の順序で現れるインスタンスを検出するように適合させることができる。 例えば、カーネルＫ２，１は、命令シーケンス［ｃｍｐ，ｊｎｅ，ｄｅｃ］の直後に命令シーケンス［ｄｅｃ，ｍｏｖ，ｊｍｐ］が続くときを検出するように適応させることができる。Ｋ２，１，Ｋ２，２，．．．，Ｋ２，ｙを特徴マップ２６０に適用すると、次に示される出力を生成することができる。
［Ｗ１；Ｗ２］Ｘ
ここで、Ｗ２∈ＲＮｏｕｔｘＮは、第２の畳み込みレイヤ２１４に適用される畳み込みカーネル（例えば、Ｋ２，１，Ｋ２，２，．．．，Ｋ２，ｙ）を表す重み行列である。
【００３５】
畳み込みニューラルネットワーク２００は、第１の畳み込みレイヤ２１２および第２の畳み込みレイヤ２１４を含むように示されているが、畳み込みニューラルネットワーク２００は、本開示の範囲から逸脱することなく異なる数の畳み込みレイヤを含むことができることを理解されたい。例えば、畳み込みニューラルネットワーク２００は、本開示の範囲から逸脱することなく、より少ないまたはより多くの畳み込み層を含むことができる。
【００３６】
現在の主題のいくつかの実施形態では、プール層２２０は、前の畳み込み層からの出力を圧縮（例えば、サブサンプリングまたはダウンサンプリング）することによって、先行畳み込み層からの出力をさらに処理するように構成することができる。プール層２２０は、例えば、最大プール機能を含む１つまたは複数のプール機能を適用することによって出力を圧縮することができる。例えば、プール層２２０は、前の畳み込み層（例えば、第２の畳み込み層）からの出力のセットからの最大出力を選択するように適合された最大プール機能を適用することによって、第２の畳み込み層２１４からの出力をさらに処理するように構成することができる。
【００３７】
現在の主題のいくつかの実施形態では、プール層２２０からの出力は、完全に接続されたレイヤ２３０および出力レイヤ２４０によってさらに処理されて、逆アセンブルされたバイナリファイル２５０の分類を生成することができる（例えば、悪意のある、または良性のもの）。例えば、出力層２４０は、逆アセンブルされたバイナリファイル２５０の分類を悪意のあるまたは良性であると判断するために、起動機能を適用することができる。逆アセンブルされたバイナリファイル２５０の分類は、畳み込みニューラルネットワーク２００の出力２０４において提供され得る。
【００３８】
現在の主題のいくつかの実施形態によれば、畳み込みニューラルネットワーク２００は、畳み込みニューラルネットワーク２００を利用して、複数のトレーニングファイルを処理し、対応する複数のトレーニング出力を生成することによってトレーニングすることができる。複数のトレーニングファイルは、例えば、逆アセンブルされたバイナリファイル２５０を含む逆アセンブルされたバイナリファイルであることができる。畳み込みニューラルネットワーク２００をトレーニングすることは、各トレーニングファイルに関連付けられた正しい分類に関連したトレーニング出力のエラー（または損失）を最小にするために、１つまたは複数の監視学習（例えば、エラーの逆方向伝搬）および最適化技術（例えば、勾配降下）を適用することを含むことができる。
【００３９】
例えば、各トレーニングファイルについて、（例えば、正しい分類に関連する）対応するトレーニング出力に関連するエラー（または損失）を、畳み込みニューラルネットワーク２００を介して逆伝搬させて、損失関数を生成することができる。勾配降下は、畳み込みニューラルネットワーク２００に対する１つまたは複数の最適化を決定するために実行することができ、例えば、畳み込み層で適用される重み調整（例えば、第１の畳み込み層２１２に適用される重み行列Ｗ１、および第２の畳み込み層２１４に適用される重み行列Ｗ２）を含む。畳み込みニューラルネットワーク２００は、トレーニングされた畳み込みニューラルネットワーク２００を生成する際に複数回の最適化（例えば、重み調整）が実行されるように、複数のトレーニングファイルを処理することによってトレーニングすることができる。
【００４０】
図４は、いくつかの例示的な実施形態に係るニューラルネットワークシステム４００を示すブロック図を示す。図２Ａ〜図４を参照すると、畳み込みニューラルネットワークシステム４００は、畳み込みニューラルネットワーク２００を実施することができる。
【００４１】
いくつかの例示的な実施形態では、ニューラルネットワークシステム４００は、デジタル電子回路、集積回路、特別に設計された特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）コンピュータハードウェア、ファームウェア、ソフトウェア、および／またはその組み合わせで実現することができる。図３に示すように、ニューラルネットワークシステム４００は、入力モジュール４１２、畳み込みモジュール４１４、プールモジュール４１６、完全に接続されたモジュール４１８、および出力モジュール４２０を含むことができる。ニューラルネットワークシステム４００は、例えば、デバイス４４０を含む１つまたは複数のデバイスとさらに通信可能に結合されてもよい。ニューラルネットワークシステム４００は、有線および／または無線ネットワーク４３０（例えば、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、および／またはインターネット）を介してデバイス４４０と通信することができる。
【００４２】
入力モジュール４１２は、１つまたは複数の逆アセンブルされたバイナリファイル（例えば、逆アセンブルされたバイナリファイル２５０）の符号化固定長表現を（例えば、デバイス４４０から）受信するように構成することができる。あるいは、現在の主題のいくつかの実施形態では、入力モジュール４１２は、一連の可変長命令を含む逆アセンブルされたバイナリファイル２５０を（例えば、デバイス４４０から）受信するように構成することができる。入力モジュール４１２は、逆アセンブルされたバイナリファイル２５０から命令の符号化固定長表現を生成することができる。例えば、入力モジュール４１２は、各命令の固定長表現を生成するために命令をパディングおよび／または切り捨てるように構成することができる。さらに、入力モジュール４１２は、命令の固定長表現を符号化するために、高密度符号化方式（例えば、バイナリ符号化）またはスパース符号化方式（例えば、ワンホット符号化）を適用することができる。命令を逆アセンブルされたバイナリファイル２５０から符号化固定長表現に変換することにより、ニューラルネットワークシステム４００による逆アセンブルされたバイナリファイル２５０のさらなる処理が可能になる。畳み込みニューラルネットワーク２００がマルウェアを検出するようにトレーニングされている間、入力モジュール４１２は１つまたは複数のトレーニングファイルを受信することができることを理解されたい。代替的または追加的に、入力モジュール４１２は、未知の逆アセンブルされたバイナリファイルを受信し、（例えば、悪意のあるまたは良性の）未知の逆アセンブルされたバイナリファイルの分類を提供することができる。
【００４３】
畳み込みモジュール４１４は、逆アセンブルされたバイナリファイル２５０からの命令のシーケンスの符号化固定長表現を入力モジュール４１２から受信することができる。現在の主題のいくつかの実施形態では、畳み込みモジュール４１４は、カーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘを命令の符号化固定長表現に適用することによって、複数の特徴ベクトルを処理するように構成することができる。カーネルの適用は、特徴マップ（例えば、特徴マップ２６０）を生成することができる。現在の主題のいくつかの実施形態によれば、畳み込みモジュール４１４は、追加のカーネル（例えば、カーネルＫ２，１，Ｋ２，２，．．．，Ｋ２，ｙ）をその特徴マップに適用することができる。カーネルの適用は、逆アセンブルされたバイナリファイル２５０からの命令のますます抽象的な表現を生成することができる。例えば、各カーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘは、２つ以上の命令の特定のシーケンス（例えば、特定の順序で現れる２つ以上の命令）を検出するために適用することができる。一方、各カーネルＫ２，１，Ｋ２，２，．．．，Ｋ２，ｙは、その後、２つ以上の命令シーケンスの特定のシーケンス（例えば、特定の順序で現れる２つ以上の命令シーケンス）を検出するために適用することができる。
【００４４】
一部の例示的な実施形態では、プールモジュール４１６は、畳み込みモジュール４１４からの出力を圧縮（例えば、サブサンプルまたはダウンサンプル）するように構成することができる。例えば、プールモジュール４１６は、その出力内の最大（例えば目立ったまたは顕著な）特徴（例えば、２つ以上の命令のシーケンス、２つ以上のシーケンスのシーケンスなど）を識別するために、最大プール機能を畳み込みモジュール４１４からの出力に適用することができる。プールモジュール４１６によって識別される最大特徴は、完全に接続されたモジュール４１８によってさらに処理することができる。一方、完全に接続されたモジュール４１８からの出力は、出力モジュール４２０によってさらに処理することができる。出力モジュール４２０は、ニューラルネットワークシステム４００の出力を提供するように構成することができ、それは、逆アセンブルされたバイナリファイル１５０の分類を悪意のあるまたは良性として分類することができる。出力モジュール４２０は、出力をデバイス４４０に（例えば、ネットワーク４３０を介して）送信することによってニューラルネットワークシステム４００の出力を提供するように構成することができる。
【００４５】
図５は、現在の主題のいくつかの実施形態と一致する畳み込みニューラルネットワークをトレーニングするためのプロセス５００を示すフローチャートを示す。図２を参照する。図１〜図５を参照すると、畳み込みニューラルネットワーク２００をトレーニングするために、ニューラルネットワークシステム４００によってプロセス５００を実行することができる。
【００４６】
ニューラルネットワークシステム４００は、複数のトレーニングファイルを受信することができる（５０２）。例えば、ニューラルネットワークシステム４００は、デバイス３４０および／または別のソースから１セットのトレーニングファイルを受信することができる。一部の例示的な実施形態では、トレーニングファイルは、例えば、逆アセンブルされたバイナリファイル２５０を含む、逆アセンブルされたバイナリファイルであり得る。したがって、各トレーニングファイルは、命令のシーケンスを含むことができる。
【００４７】
ニューラルネットワークシステム４００は、複数のトレーニングファイルに基づいて、１つまたは複数の逆アセンブルされたバイナリファイルを分類するための畳み込みニューラルネットワーク２００をトレーニングすることができる（５０４）。例えば、ニューラルネットワークシステム４００は、畳み込みニューラルネットワーク２００を利用してトレーニングファイルを処理することによって畳み込みニューラルネットワーク２００をトレーニングすることができる。いくつかの例示的な実施形態では、畳み込みニューラルネットワーク２００は、トレーニングファイルからの命令のますます抽象的な表現を生成するように適合させる複数のカーネル（例えば、カーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘ、カーネルＫ２，１，Ｋ２，２，．．．，Ｋ２，ｙ）を適用することによって、各トレーニングファイル内の命令の符号化固定長表現を処理するように適合することができる。例えば、いくつかのカーネル（例えば、カーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘ）の適用は、特定の命令シーケンスを検出することができ、一方、他のカーネル（例えば、Ｋ２，１，Ｋ２，２，．．．，Ｋ２，ｙ）のその後の適用は、特定の順序で現れる命令の特定のシーケンスが存在するインスタンスを検出できる。畳み込みニューラルネットワーク２００は、符号化固定長表現を処理して、トレーニングファイルの分類を生成することができる。
【００４８】
各トレーニングファイルについて、トレーニングスクリプトの正しい分類に関連するトレーニングファイルの分類に関連するエラーは、畳み込みニューラルネットワーク２００を介して逆伝搬されて、損失関数を生成することができる。勾配降下は、損失関数を最小化する畳み込みニューラルネットワーク２００（例えば、第１の畳み込みレイヤ２１２に適用される重み行列Ｗ１および第２の畳み込みレイヤ２１４に適用される重み行列Ｗ２）に対する１つまたは複数の最適化を決定するために実行することができる。現在の主題のいくつかの実施形態では、畳み込みニューラルネットワーク２００をトレーニングすることは、畳み込みニューラルネットワーク２００を使用して複数のトレーニングファイルを処理することを含むことができる。このように、ニューラルネットワークシステム４００は、１つまたは複数の逆アセンブルされたバイナリファイルに対して正しい分類を提供することができるトレーニングされた畳み込みニューラルネットワーク２００を生成するために、最適化（例えば、重みおよび／またはバイアス調整）の複数の反復を実行することができる。
【００４９】
ニューラルネットワークシステム４００は、トレーニングされた畳み込みニューラルネットワーク２００を提供して、少なくとも１つの逆アセンブルされたバイナリファイル（５０６）の分類を可能にすることができる。例えば、トレーニングされた畳み込みニューラルネットワーク２００は、未知の逆アセンブルされたバイナリファイルを処理し、逆アセンブルされたバイナリファイルの分類を（例えば、悪意のあるまたは良性のものとして）提供するために展開することができる。現在の主題のいくつかの実施形態では、トレーニングされた畳み込みニューラルネットワーク２００は、例えば、コンピュータソフトウェア、専用回路（例えば、ＡＳＩＣ）、および／またはクラウドプラットフォームを含む任意の方法で提供することができる。
【００５０】
図６は、現在の主題のいくつかの実施形態と一致して、トレーニングされた畳み込みニューラルネットワーク２００を利用するためのプロセス６００を示すフローチャートを示す。図１〜図６を参照すると、いくつかの例示的な実施形態では、トレーニングの後に畳み込みニューラルネットワーク２００を利用するために、ニューラルネットワークシステム４００によってプロセス６００を実行することができる。
【００５１】
ニューラルネットワークシステム４００は、逆アセンブルされたバイナリファイル２５０を受信することができる（６０２）。例えば、ニューラルネットワークシステム４００は、デバイス４４０および／または別のソースから、逆アセンブルされたバイナリファイル２５０を受信することができる。いくつかの例示的な実施形態では、逆アセンブルされたバイナリファイル２５０は命令のシーケンスを含むことができる。
【００５２】
ニューラルネットワークシステム４００は、トレーニングされた畳み込みニューラルネットワーク２００を利用して、逆アセンブルされたバイナリファイル２５０の分類を決定することができる（６０４）。例えば、ニューラルネットワークシステム４００は、畳み込みニューラルネットワーク２００を利用して、逆アセンブルされたバイナリファイル２５０を処理することができる。現在の主題のいくつかの実施形態では、トレーニングされた畳み込みニューラルネットワーク２００は、１つまたは複数のカーネル（例えば、カーネルＫ１，１，Ｋ１，２，．．．，Ｋ１，ｘ、および／またはカーネルＫ２，１，Ｋ２，２，．．．，Ｋ２，ｙ）を逆アセンブルされたバイナリファイル２５０内の命令の符号化固定長表現に適用することによって、逆アセンブルされたバイナリファイル２５０を処理するように適合することができる。トレーニングされた畳み込みニューラルネットワーク２００は、逆アセンブルされたバイナリファイル２５０の分類におけるエラーを最小限にするように（例えば、トレーニング中に）最適化された１つまたは複数の重み（例えば、重み行列Ｗ１および／またはＷ２）を適用するように構成することができる。
【００５３】
ニューラルネットワークシステム４００は、逆アセンブルされたバイナリファイル２５０の分類を出力として提供することができる（６０６）。例えば、トレーニングされた畳み込みニューラルネットワーク２００によって実行される処理の結果は、逆アセンブルされたバイナリファイル２５０の悪意のあるまたは良性のものとして分類とすることができる。いくつかの例示的な実施形態では、ニューラルネットワークシステム４００は、（例えば、ネットワーク４３０を介して）デバイス４４０に出力を提供することができる。
【００５４】
本開示の実施形態には、上述した説明と一致する方法と、１つまたは複数のマシン（例えば、コンピュータなど）に１つまたは複数のマシンを実行させるように動作可能な具体的に表現された機械可読媒体を含む記述された特徴のうちの１つまたは複数を実施する動作をもたらす。同様に、１つまたは複数のプロセッサおよび１つまたは複数のプロセッサに結合された１つまたは複数のメモリを含むことができるコンピュータシステムもまた説明される。コンピュータ可読記憶媒体を含むことができるメモリは、１つまたは複数のプロセッサに本明細書に記載された１つまたは複数の動作を実行させる１つまたは複数のプログラムを含むことができ、符号化、格納などすることができる。現在の主題の１つまたは複数の実施形態と一致するコンピュータ実装の方法は、単一のコンピューティングシステムまたは複数のコンピューティングシステムに存在する１つまたは複数のデータプロセッサによって実施することができる。そのような複数のコンピューティングシステムは、ネットワーク（例えば、インターネット、無線ワイドエリアネットワーク、ローカルネットワーク、広域ネットワーク、有線ネットワークなど）、複数のコンピューティングシステムのうちの１つまたは複数の間の直接接続を介した接続を含むがこれに限定されない１つまたは複数の接続を介して接続され、データおよび／またはコマンドまたは他の命令などを交換することができる。
【００５５】
本明細書に記載される主題の１つまたは複数の態様または特徴は、デジタル電子回路、集積回路、特別に設計されたＡＳＩＣ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）コンピュータハードウェア、ファームウェア、ソフトウェア、および／またはそれらの組み合わせで実現され得る。これらの様々な態様または特徴は、少なくとも１つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行可能および／または解釈可能な１つまたは複数のコンピュータプログラムにおける実施形態を含むことができる。少なくとも１つのプログラム可能なプロセッサは、ストレージシステム、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスからデータおよび命令を受信し、データまたは命令を送信するために結合された特別なまたは汎用の目的であってもよい。プログム可能なシステムまたはコンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントとサーバは、一般に、互いに遠隔であり、典型的には、通信ネットワークを介して相互作用する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにクライアント−サーバ関係を有するコンピュータプログラムのおかげで生じる。
【００５６】
これらのコンピュータプログラムは、プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリケーション、コンポーネント、またはコードとも呼ばれ、プログラム可能なプロセッサ用の機械命令を含み、高水準手続き言語、オブジェクト指向プログラミング言語、関数型プログラミング言語、論理型プログラミング言語、および／またはアセンブリ言語／機械語で記述することができる。本明細書で使用される場合、“機械可読媒体”という用語は、機械命令および／または機械可読信号として機械命令を受信する機械可読媒体を含むプログラム可能なプロセッサへのデータを提供するために使用される任意のコンピュータプログラム製品、装置、および／またはデバイス、例えば、磁気ディスク、光ディスク、メモリ、およびプログラマブルロジックデバイス（ＰＬＤ）を指す。“機械可読信号”という用語は、機械命令および／またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。機械可読媒体は、例えば、非過渡的なソリッドステートメモリ、磁気ハードドライブ、または任意の等価な記憶媒体のように、機械命令を非一時的に格納することができる。機械可読媒体は、例えば、プロセッサキャッシュまたは１つまたは複数の物理プロセッサコアに関連する他のランダムアクセスメモリのように、そのような機械命令を過渡的な方法で代替的または追加的に格納することができる。
【００５７】
ユーザとの対話を提供するために、本明細書に記載される主題の１つまたは複数の態様または特徴は、例えば陰極線管（ＣＲＴ）または液晶ディスプレイ（ＬＣＤ）のような表示装置またはユーザに情報を表示するための発光ダイオード（ＬＥＤ）モニタと、ユーザがコンピュータに入力を提供することができる、例えば、マウスまたはトラックボールのようなキーボードおよびポインティングデバイスとを有するコンピュータ上で実施することができる。他の種類の装置を使用して、ユーザとのやりとりを提供することもできる。例えば、ユーザに提供されるフィードバックは、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックなどの任意の形態の感覚フィードバックであり得る。ユーザからの入力は、音響、スピーチまたは触覚入力を含むが、これに限定されない任意の形態で受信することができる。他の可能な入力デバイスには、タッチスクリーンまたは単一またはマルチポイント抵抗または容量性トラックパッド、音声認識ハードウェアおよびソフトウェア、光学スキャナ、光学ポインタ、デジタルＭＲＩ画像キャプチャデバイスなどの他のタッチセンシティブデバイスおよび関連する解釈ソフトウェア等を含む。
【００５８】
上記および請求項の説明では、“少なくとも１つ”または“１つまたは複数”のような語句が続き、要素または機能の結合リストが続くことがある。“および／または”という用語は、２つ以上の要素または特徴のリスト内に存在してもよい。他の言及された要素または特徴のいずれかと個別にまたは列挙された要素または特徴のいずれかとの組み合わせを意味することを意図している。例えば、“ＡおよびＢの少なくとも１つ”という語句は、“１つまたは複数のＡおよびＢ””Ａおよび／またはＢ“は、それぞれ”Ａ単独、Ｂ単独、またはＡおよびＢ一緒に“を意味することを意図している。同様の解釈は、３つ以上の項目を含むリストに対しても意図されている。例えば、”Ａ、Ｂ、およびＣの少なくとも１つ“という語句は、”Ａ、Ｂ、およびＣの１つまたは複数“”Ａ、Ｂおよび／またはＣ“は、それぞれ”Ａ単独、Ｂ単独、Ｃ単独、ＡおよびＢ一緒、ＡおよびＣ一緒、ＢおよびＣ一緒、またはＡおよびＢおよびＣ一緒“を意味するものとする。上記および請求項に”基づく“という用語の使用は、言及されていない特徴または要素も許容されるように、”少なくとも部分的に基づいて“を意味することを意図している。
【００５９】
本明細書に記載される主題は、所望の構成に応じて、システム、装置、方法、および／または物品に具体化することができる。前述の説明に記載された実施形態は、本明細書に記載された主題と一致する全ての実施形態を表すものではない。むしろ、それらは、記載された主題に関連する態様と一致する単なる例に過ぎない。いくつかの変形例を上記で詳細に説明したが、他の修正または追加が可能である。特に、本明細書に記載されたものに加えて、さらなる特徴および／または変形を提供することができる。例えば、上述の実施形態は、開示された特徴の様々な組み合わせおよびサブコンビネーション、および／または上述したいくつかのさらなる特徴の組み合わせおよびサブコンビネーションを対象とすることができる。さらに、添付の図面に示され、および／または本明細書で説明される論理フローは、望ましい結果を達成するために、示された特定の順序または連続的な順序を必ずしも必要としない。他の実施態様は、以下の請求項の範囲内であり得る。
【図１】
2018524735.tif 000003
【図２Ａ】
2018524735.tif 000004
【図２Ｂ】
2018524735.tif 000005
【図３Ａ】
2018524735.tif 000006
【図３Ｂ】
2018524735.tif 000007
【図３Ｃ】
2018524735.tif 000008
【図３Ｄ】
2018524735.tif 000009
【図３Ｅ】
2018524735.tif 000010
【図３Ｆ】
2018524735.tif 000011
【図３Ｇ】
2018524735.tif 000012
【図４】
2018524735.tif 000013
【図５】
2018524735.tif 000014
【図６】
2018524735.tif 000015
【国際調査報告】
2018524735.tif 000016
2018524735.tif 000017