JP2022533715A - 実行可能コード検出、自動特徴抽出及び位置独立コード検出のためのシステム及び方法 - Google Patents

実行可能コード検出、自動特徴抽出及び位置独立コード検出のためのシステム及び方法 Download PDF

Info

Publication number
JP2022533715A
JP2022533715A JP2021569072A JP2021569072A JP2022533715A JP 2022533715 A JP2022533715 A JP 2022533715A JP 2021569072 A JP2021569072 A JP 2021569072A JP 2021569072 A JP2021569072 A JP 2021569072A JP 2022533715 A JP2022533715 A JP 2022533715A
Authority
JP
Japan
Prior art keywords
call
code
executable
calls
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2021569072A
Other languages
English (en)
Other versions
JP7278423B2 (ja
JPWO2020236981A5 (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.)
Sentinel Labs Israel Ltd
Original Assignee
Sentinel Labs Israel Ltd
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 Sentinel Labs Israel Ltd filed Critical Sentinel Labs Israel Ltd
Publication of JP2022533715A publication Critical patent/JP2022533715A/ja
Publication of JPWO2020236981A5 publication Critical patent/JPWO2020236981A5/ja
Application granted granted Critical
Publication of JP7278423B2 publication Critical patent/JP7278423B2/ja
Active 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/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/54Monitoring 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 adding security routines or objects to programs
    • 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
    • G06F21/564Static detection by virus signature recognition
    • 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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Train Traffic Observation, Control, And Security (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)

Abstract

バイトストリームから実行可能コードの自動検出を可能にするシステム及び方法をここに開示する。いくつかの実施形態において、バイトストリームは、従来のマルウェア検出ソリューションが無視するファイルの非表示領域で生成できる。いくつかの実施形態において、機械学習モデルは、特定のバイトストリームが実行可能コードであるかどうかを検出するように訓練される。ここに記載される他の実施形態は、ニューラルネットワークを使用する自動特徴抽出のためのシステム及び方法を開示する。新しいファイルが与えられると、前記システム及び方法は、学習済みニューラルネットワークに入力されるコードを前処理してもよい。ニューラルネットワークは、マルウェア検出モデルのための「特徴生成器」として使用してもよい。本明細書の他の実施形態は、ライブラリ関数に対するアクセスの独立的な取得を試みる攻撃者を識別し、フラグを立て、及び/又は検出するシステム及び方法に関する。【選択図】図3

Description

関連出願への相互参照
本出願は、2019年5月20日付で出願された米国仮出願第62/850,170号、タイトル「マルウェア解析用コード検出のための方法、システム、及びデバイス(Methods, SYSTEMS, and DEVICES FOR CODE DETECTION for MALWARE ANALYSIS)」、2019年5月20日付で出願された米国仮出願第62/850,182号、タイトル「実行可能コードから自動で特徴を抽出する方法、システム、及び、デバイス(METHODS, SYSTEMS, and DEVICES FOR AUTOMATIC FEATURE EXTRACTION from EXECUTABLE CODE)」、2019年5月29日付で出願された米国仮出願第62/854118号、タイトル「位置独立コードの実行を検出する方法、システム、及びデバイス(METHODS, SYSTEMS, AND DEVICES FOR DETECTING THE EXECUTION OF A POSITION INDEPENDENT CODE)」の利益を主張する。前記出願は、その全体を参照により援用する。
本出願と共に提出された出願データシートにおいて外国又は国内の優先権主張が特定されているすべての出願は,37CFR1.57に基づき参照により援用される。
背景
分野
本出願は、コンピュータ、サイバーセキュリティのシステム及び方法に関し、特に、実行可能コードを検出し、有用な機械学習特徴を抽出し、位置独立コードを識別するためのシステム及び方法に関する。
説明
既存のプログラム的マルウェア及び実行可能コード検出のシステム及び方法は、非効率的かつ不正確である。コンピュータシステムに対する悪意のある脅威を防止、検出、及び対応するには、新しいシステム及び方法が必要である。
概要
本概要では、ここに記載される発明の所定の態様、利点、新規の特徴を記載することを目的とする。なお、本発明による以下のいずれの特定の実施形態においても、以下の利点が必ずしも全て実現されるとは限らないことを理解されたい。したがって、例えば、当業者であれば、ここに教示される利点のうちの一つ又は、利点のグループが実現できるように本発明を具現化又は実施可能であり、ここに教示又は示唆されるその他の利点が必ずしも実現されないことについて認識できるであろう。
ここに記載する実施形態のうちいくつかは、ファイルにおける実行可能コードをプログラム的に識別するコンピュータで実施される方法に関する。前記方法は、コンピュータシステムによって、ファイルの一部からバイト列にアクセスする処理と、前記コンピュータシステムによって前記バイト列から所定数のn-グラムを抽出する処理であって、前記各n-グラムは、前記バイト列中の隣接する一連のバイトを含んでおり、前記各n-グラム中の隣接する一連のバイトは、n個のバイトを含む、処理と、前記コンピュータシステムによって、カウンタ列を生成する処理であって、前記カウンタ列の各カウンタは、前記n-グラムのうちの1つと関連付けられており、前記各カウンタは整数値を有しており、前記整数値は前記バイト列内の関連付けられたn-グラムの発生頻度に基づいて生成される、処理と、前記コンピュータシステムによって、前記カウンタ列を入力特徴として予測機械学習モデルに提供する処理と、前記予測機械学習モデルによって、前記バイト列が実行可能なコードを含むモデル確率値を決定する処理とを含み、前記コンピュータシステムはコンピュータプロセッサと電子記憶媒体を備えている。
いくつかの実施形態において、実行可能なコードとは、コンピュータシステム上でバイト列を実行することなく、プログラム的に識別される。
いくつかの実施形態において、前記方法は、前記バイト列が実行可能なコードを含むモデル確率値が所定の閾値を超えるものである場合、マルウェア検出システムによってさらに解析を行うために、前記コンピュータシステムによって前記バイト列又はファイルにフラグを立てる処理をさらに含む。
いくつかの実施形態において、前記ファイルは、実行可能なファイル形式を含む。
いくつかの実施形態において、前記ファイルは、ポータブル実行可能ファイル(PE)を含む。
いくつかの実施形態において、前記ファイルの一部には、一以上のリソース、文字列、変数、オーバーレイ、又はセクションの1つ以上が含まれている。
いくつかの実施形態において、前記ファイルの一部には、実行可能許可が含まれていない。
いくつかの実施形態において、前記n-グラムは、bi-グラムを含む。
いくつかの実施形態において、nは2~500である。
いくつかの実施形態において、前記n-グラムは、nが第一の整数である第一のn-グラムセットと、nが第二の整数である第二のn-グラムセットとを含んでおり、前記第一の整数は前記第二の整数と異なっている。
いくつかの実施形態において、n-グラムの所定の数は500である。
いくつかの実施形態において、n-グラムの所定の数は50~10000である。
いくつかの実施形態において、前記方法は、コンピュータシステムによって、各カウンタを前記バイト列のデータ長で正規化する処理をむ。
いくつかの実施形態において、前記予測機械学習モデルは、複数の別々のモデルを含んでおり、各モデルは異なるマシンアーキテクチャコードに対応している。
いくつかの実施形態において、前記マシンアーキテクチャコードには、.NET、x86、及び/又はx64が含まれる。
いくつかの実施形態において、前記予測機械学習モデルは、サポートベクターマシン(SVM)、線形回帰、k-近傍法(KNN)アルゴリズム、ロジスティック回帰、ナイーブベイズ(naive Bayes)、線形判別分析、決定木、ニューラルネットワーク、又は類性学習からなるグループから選択された少なくとも1つの学習アルゴリズムを含む。
いくつかの実施形態において、予測機械学習モデルは、ランダムフォレストを含んでいる。
いくつかの実施形態において、前記ランダムフォレストは複数の決定木を含んでおり、各決定木は学習用のバイトセットで独立的に教育される。
いくつかの実施形態において、モデル確率値は、複数の決定木確率値を平均化することによって決定され、各決定木確率値は、複数の決定木の各決定木を介してバイト列をトラバースすることによって生成される。
ここに記載する実施形態のうちいくつかは、ファイルにおける実行可能なコードをプログラム的に識別するコンピュータシステムに関し、前記システムは、複数のコンピュータで実行可能な指示を記憶するように構成された一以上のコンピュータで読取り可能な記憶装置と、一以上の他のコンピュータで読取り可能な記憶装置と通信可能に接続された一以上のハードウェアコンピュータプロセッサとを備えており、前記一以上のハードウェアコンピュータプロセッサは、複数のコンピュータで実行可能な指示を実行することによって、前記システムに、ファイルの一部からバイト列にアクセスする処理と、前記バイト列から所定数のn-グラムを抽出する処理であって、前記各n-グラムは、前記バイト列中の隣接する一連のバイトを含んでおり、前記各n-グラム中の隣接する一連のバイトは、n個のバイトを含む、処理と、カウンタ列を生成する処理であって、前記カウンタ列の各カウンタは、前記n-グラムのうちの1つと関連付けられており、前記各カウンタは整数値を有しており、前記整数値は前記バイト列内の関連付けられたn-グラムの発生頻度に基づいて生成される、処理と、前記カウンタ列を入力特徴として予測機械学習モデルに提供する処理と、前記予測機械学習モデルによって、前記バイト列が実行可能なコードを含むモデル確率値を決定する処理とを行わせるように構成されている。
ここに記載する実施形態のうちいくつかは、実行可能なコードから、マルウェア検出モデルに入力する機械学習特徴を自動的に抽出する、コンピュータで実施される方法に関する。前記方法は、コンピュータシステムによって、ファイルから前記実行可能なコードにアクセスする処理と、前記コンピュータシステムによって、埋込マトリクスを有する画像再スケーリングアルゴリズムに、前記実行可能なコードを入力する処理であって、前記画像再スケーリングアルゴリズムは、前記実行可能なコードの各バイトを、前記埋込マトリクスを用いて数ベクトルに変換して埋込ベクトル空間を作成し、前記変換を行っている間、前記実行可能なコードの順序が維持される、処理と、前記コンピュータシステムによって、前記埋込ベクトル空間の一以上のベクトル層をチャネルフィルタリングする処理であって、前記チャンネルフィルタリングの処理は、前記一以上のベクトル層を複数のブロックに統合する処理と、フィルタメカニズムを適用して一以上の固定サイズのベクトル入力を生成する処理であって、各固定サイズのベクトル入力は、対応するベクトル層、又は対応するベクトル層のブロックを表している、処理とを含み、前記コンピュータシステムによって、ニューラルネットワークの入力層に前記一以上の固定サイズのベクトル入力を入力する処理であって、前記ニューラルネットワークは、複数の処理部の層を備えており、前記複数の層は、少なくとも、前記入力層と、一以上の隠し層と、出力層とを備えており、前記複数の層の一連の層は、それぞれ前の層の出力値を入力値として使用し、前記出力層は、前記実行可能なコードの悪意度の分類を生成する、処理とを含み、前記コンピュータシステムによって、前記ニューラルネットワークの前記出力層直前の最終隠し層の出力値を抽出する処理と、前記コンピュータシステムによって、機械学習特徴として前記最終隠し層の出力値を、前記マルウェア検出モデルに提供する処理とを含み、前記コンピュータシステムは、コンピュータプロセッサと電子記憶媒体とを備えている。
いくつかの実施形態において、前記ニューラルネットワークは教師あり学習モデル、半教師あり学習モデル、又は教師なし学習モデルを含む。
いくつかの実施形態において、前記実行可能なコードは、ポータブル実行可能(PE)ファイルの一部である。
いくつかの実施形態において、前記一以上の隠し層のそれぞれは、前記入力値に変換を行い、直後に連続する層への出力値を生成するように構成されている。
いくつかの実施形態において、前記画像再スケーリングアルゴリズムは、前処理ニューラルネットワークを含んでおり、前記前処理ニューラルネットワークは、Word2Vecを含む。
いくつかの実施形態において、前記方法は、前記ニューラルネットワークの出力層から、前記実行可能なコードの悪意度の分類を破棄する処理をさらに含む。
いくつかの実施形態において、前記ニューラルネットワークは1~2000個の隠し層を含む。
いくつかの実施形態において、前記フィルタメカニズムは、ローパスフィルタ、ボックスフィルタ、デルタフィルタ、又はガウスフィルタを含む。
ここに記載する実施形態のうちいくつかは、実行可能なコードから、マルウェア検出モデルに入力する機械学習特徴を自動的に抽出する、コンピュータシステムに関する。前記システムは、複数のコンピュータで実行可能な指示を記憶するように構成された一以上のコンピュータで読取り可能な記憶装置と、一以上の他のコンピュータで読取り可能な記憶装置と通信可能に接続された一以上のハードウェアコンピュータプロセッサとを備えており、前記一以上のハードウェアコンピュータプロセッサは、複数のコンピュータで実行可能な指示を実行することによって、前記システムに、ファイルから前記実行可能なコードにアクセスする処理と、埋込マトリクスを有する画像再スケーリングアルゴリズムに、前記実行可能なコードを入力する処理であって、前記画像再スケーリングアルゴリズムは、前記実行可能なコードの各バイトを、前記埋込マトリクスを用いて数ベクトルに変換して埋込ベクトル空間を作成し、前記変換を行っている間、前記実行可能なコードの順序が維持される、処理と、前記埋込ベクトル空間の一以上のベクトル層をチャネルフィルタリングする処理であって、前記チャンネルフィルタリングは、前記一以上のベクトル層を複数のブロックに統合する処理と、フィルタメカニズムを適用して一以上の固定サイズのベクトル入力を生成する処理であって、各固定サイズのベクトル入力は、対応するベクトル層、又は対応するベクトル層のブロックを表している、処理とによって行われる、処理と、ニューラルネットワークの入力層に前記一以上の固定サイズのベクトル入力を入力する処理であって、前記ニューラルネットワークは、複数の処理部の層を備えており、前記複数の層は、少なくとも、前記入力層と、一以上の隠し層と、出力層とを備えており、前記複数の層の一連の層は、それぞれ前の層の出力値を入力値として使用し、前記出力層は、前記実行可能なコードの悪意度の分類を生成する、処理と、前記ニューラルネットワークの前記出力層直前の最終隠し層の出力値を抽出する処理と、機械学習特徴として前記最終隠し層の出力値を、前記マルウェア検出モデルに提供する処理とを含む。
いくつかの実施形態において、前記ニューラルネットワークは教師あり学習モデル、半教師あり学習モデル、又は教師なし学習モデルを含む。
いくつかの実施形態において、前記実行可能なコードは、ポータブル実行可能(PE)ファイルの一部である。
いくつかの実施形態において、前記一以上の隠し層のそれぞれは、前記入力値に変換を行い、直後に連続する層への出力値を生成するように構成されている。
いくつかの実施形態において、前記画像再スケーリングアルゴリズムは、前処理ニューラルネットワークを含んでおり、前記前処理ニューラルネットワークは、Word2Vecを含む。
いくつかの実施形態において、前記システムは、前記ニューラルネットワークの出力層から、前記実行可能なコードの悪意度の分類を破棄するようになっている。
いくつかの実施形態において、前記ニューラルネットワークは1~2000個の隠し層を含む。
いくつかの実施形態において、前記フィルタメカニズムは、ローパスフィルタ、ボックスフィルタ、デルタフィルタ、又はガウスフィルタを含む。
ここに記載する実施形態のうちいくつかは、ライブラリ位置独立コード検出用のシステムに関し、複数のコンピュータで実行可能な指示を記憶するように構成された一以上のコンピュータで読取り可能な記憶装置と、一以上の他のコンピュータで読取り可能な記憶装置と通信可能に接続された一以上のハードウェアコンピュータプロセッサとを備えており、前記一以上のハードウェアコンピュータプロセッサは、複数のコンピュータで実行可能な指示を実行することによって、前記システムに、監視対象シンボルのインポートアドレステーブル(IAT)エントリを実装する処理を行わせ、前記IATエントリを実装する処理は、監視対象シンボルのIATエントリ内の監視対象シンボルアドレスを改変アドレスで置換する処理と、前記改変アドレスの呼び出しに対してトランポリンコードを実行し、監視対象シンボルの静的呼び出しを検出及び検証する処理と、前記改変アドレスの呼び出しを監視対象シンボルアドレスにリダイレクトする処理とを含み、一以上のローダAPI関数を実装する処理を行わせ、前記ローダAPI関数を実装する処理は、前記一以上のローダAPI関数を改変し、前記トランポリンコードへ導く値を戻す処理と、前記監視対象シンボルの実行を迂回コードに迂回させて、前記監視対象シンボルの呼び出しを検出及び検証する処理と、前記監視対象シンボルの呼び出しを前記監視対象シンボルアドレスにリダイレクトする処理とを含み、前記監視対象シンボルの前記トランポリンコード及び前記迂回コードを監視させて、実行ファイル内の呼び出しが、静的呼び出し、動的呼び出し、又はローカル呼び出しを含んでいるかを判定する処理を行わせ、前記システムが、前記実行ファイル内の少なくとも1つの呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれていないと判断した場合、マルウェア検出システムのために、当該実行ファイルに不審な、又は、悪意ありのフラグを立てる処理を行わせる。
いくつかの実施形態において、前記システムが、前記実行可能コード内の少なくとも1つの呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれていないと判断した場合、当該少なくとも1つの呼び出しを独立した呼び出しとして分類する。
いくつかの実施形態において、前記システムが、前記呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれると判断した場合、当該呼び出しを良性呼び出しとして分類する。
いくつかの実施形態において、前記システムが、前記呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれると判断した場合、前記実行ファイルを良性として分類する。
いくつかの実施形態において、前記システムは、さらに前記トランポリンコード及び前記迂回コードを含むフッキングエンジンと、呼び出しに関するデータを記憶するように構成された、一以上の呼び出しデータベースとを含む。
いくつかの実施形態において、前記動的呼び出しは、前記実行ファイルの実行中に、前記監視対象シンボルアドレスの取得を試みることが含まれる。
いくつかの実施形態において、前記静的呼び出しには、前記実行ファイルの初期化中に、前記監視対象シンボルアドレスの取得を試みることが含まれる。
いくつかの実施形態において、前記実行ファイルからの呼び出しにローカル呼び出しが含まれているか否かを判定する処理には、前記迂回コードを監視して、リターンアドレスが、前記実行ファイルの前記監視対象シンボルと同じアドレスになっているかを判定する処理が含まれる。
いくつかの実施形態において、前記一以上のローダAPI関数は、GetModuleHandle又はGetProcAddressのいずれか一方又は両方を含む。
いくつかの実施形態において、前記少なくとも1つの呼び出しは、前記実行ファイルが、前記監視対象シンボルを含むモジュールから取得されたメタデータを用いることによって初期化される。
いくつかの実施形態において、前記少なくとも1つの呼び出しは、前記実行ファイルがローダの内部記録から取得したデータを用いることによって初期化される。
いくつかの実施形態において、前記少なくとも1つの呼び出しは、前記実行ファイルが、前記トランポリンコードをトリガーすることなく監視対象シンボルを呼び出すことによって初期化される。
ここに記載する実施形態のうちいくつかは、ライブラリ位置独立コード検出を行うためのコンピュータにより実施される方法に関し、前記方法は、コンピュータシステムによって、監視対象シンボルのインポートアドレステーブル(IAT)エントリを実装する処理であって、前記IATエントリを実装する処理には、監視対象シンボルのIATエントリ内の監視対象シンボルアドレスを改変アドレスで置換する処理と、前記改変アドレスの呼び出しに対してトランポリンコードを実行し、監視対象シンボルの静的呼び出しを検出及び検証する処理と、前記改変アドレスの呼び出しを監視対象シンボルアドレスにリダイレクトする処理とが含まれる、処理と、前記コンピュータシステムによって、一以上のローダAPI関数を実装する処理であって、前記ローダAPI関数を実装する処理には、前記一以上のローダAPI関数を改変し、前記トランポリンコードへ導く値を戻す処理と、前記監視対象シンボルの実行を迂回コードに迂回させて、前記監視対象シンボルの呼び出しを検出及び検証する処理と、前記監視対象シンボルの呼び出しを前記監視対象シンボルアドレスにリダイレクトする処理とが含まれる、処理と、前記コンピュータシステムによって、前記監視対象シンボルの前記トランポリンコード及び前記迂回コードを監視する処理であって、実行ファイル内の呼び出しが、静的呼び出し、動的呼び出し、又はローカル呼び出しを含んでいるかを判定する処理と、前記コンピュータシステムが、前記実行ファイル内の少なくとも1つの呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれていないと判断した場合、前記コンピュータシステムがマルウェア検出システムのために、当該実行ファイルに不審な、又は、悪意ありのフラグを立てる処理と、を備え、前記コンピュータシステムはコンピュータプロセッサと電子記憶媒体を備えている。
いくつかの実施形態において、前記方法は、前記コンピュータシステムが、少なくとも1つの呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれていないと判断した場合、当該少なくとも1つの呼び出しを独立した呼び出しとして分類する処理を含むことを特徴とする方法。
いくつかの実施形態において、前記方法は、前記コンピュータシステムが前記呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれると判断した場合、当該呼び出しを良性呼び出しとして分類する処理を含む。
いくつかの実施形態において、前記方法は、前記コンピュータシステムが前記呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれると判断した場合、前記実行ファイルを良性として分類する処理を含む。
いくつかの実施形態において、前記トランポリンコード及び前記迂回コードは、フッキングエンジンの一以上の部分を含んでおり、前記フッキングエンジンは、前記呼び出しに関連するデータを記憶するように構成された呼び出しデータベースに接続されている。
いくつかの実施形態において、前記動的呼び出しは、前記実行ファイルの実行中に、前記監視対象シンボルアドレスの取得を試みることが含まれる。
いくつかの実施形態において、前記静的呼び出しには、前記実行ファイルの初期化中に、前記監視対象シンボルアドレスの取得を試みることが含まれる。
いくつかの実施形態において、前記実行ファイルからの呼び出しにローカル呼び出しが含まれているか否かを判定する処理には、前記迂回コードを監視して、リターンアドレスが、前記実行ファイルの前記監視対象シンボルと同じアドレスになっているかを判定する処理が含まれる。
いくつかの実施形態において、前記一以上のローダAPI関数は、GetModuleHandle又はGetProcAddressのいずれか一方又は両方を含む。
いくつかの実施形態において、前記少なくとも1つの呼び出しは、前記実行ファイルが、前記監視対象シンボルを含むモジュールから取得されたメタデータを用いることによって初期化される。
いくつかの実施形態において、前記少なくとも1つの呼び出しは、前記実行ファイルがローダの内部記録から取得したデータを用いることによって初期化される。
いくつかの実施形態において、前記少なくとも1つの呼び出しは、前記実行ファイルが、前記トランポリンコードをトリガーすることなく監視対象シンボルを呼び出すことによって初期化される。
本開示の特徴は、添付の図面と共に以下の説明からより完全に明らかになるであろう。これら図面は、本開示に従ったいくつかの実施形態のみを示すものであり、その範囲を限定するものとはみなされないことを理解した上で、本開示では、添付の図面の使用を通じてさらに特異性及び詳細を説明する。
図面は、例示的な実施形態を示すために提供されるものであり、開示の範囲を制限することを意図するものではない。ここに記載されるシステム及び方法は、添付の図面と共に以下の説明を参照することによってより深く理解できるであろう。
ポータブル実行可能(PE)ファイル形式の例を示す図である。
PEファイルのセクションの例を示す図である。
ここに記載するいくつかの実施形態による、機械コードの例示的断片を示す図である。
ここに記載するいくつかの実施形態による、n-グラム生成と比較したテキスト特徴生成のフローチャートである。
いくつかの実施形態による、一以上のランダムフォレストを使用してx86、x64、及び.NETアーキテクチャの実行可能なコードを検出する方法のフローチャートである。
ここに記載するいくつかの実施形態による、ツリー構造の例示的なフローチャートである。
ここに記載するいくつかの実施形態による、ランダムフォレスト構造の例示的なフローチャートである。
ここに記載するいくつかの実施形態による、コード検出モデルを教育及びテストするための例示的なフローチャートである。
ここに記載するいくつかの実施形態による、ニューラルネットワークを使用した自動特徴抽出方法の例示的なフローチャートである。
ここに記載するいくつかの実施形態による、ニューラルネットワークを使用した特徴抽出方法の例を示す図である。
ここに記載するいくつかの実施形態による、例示的なチャネルフィルタリングメカニズムを示す図である。
ここに記載するいくつかの実施形態による、フィルタリングシステムの挙動を示すボックス関数の例を示す図である。
ここに記載するいくつかの実施形態による、フィルタリングシステムの挙動を示すガウス関数の例を示す図である。
ここに記載するいくつかの実施形態による、フィルタリングシステムの挙動を示すデルタ関数の例を示す図である。
ここに記載するいくつかの実施形態による、静的リンクプロセスの例を示す図である。
ここに記載するいくつかの実施形態による、ライブラリに依存しないコード検出システム及び静的リンクプロセスの例示的な方法を示す図である。
ここに記載するいくつかの実施形態による、ライブラリに依存しないコード検出システムの例を示す図である。
ここに記載するいくつかの実施形態による、動的フロープロセスの例を示す図である。
ここに記載するいくつかの実施形態による、ライブラリに依存しないコード検出システム及び動的フロープロセスの例示的な方法を示す図である。
実行可能コード検出、自動特徴抽出及び位置独立コード検出システムの一以上の実施形態を実施するソフトウェアを実行するように構成されたコンピュータハードウェアシステムの実施形態を示すブロック図である。
詳細な説明
特定の好ましい実施形態及び実施例が以下に開示されるが、本発明の主題は、具体的に開示された実施形態を超えて、他の代替的な実施形態、及び/又は、使用並びにそれらの変形例、及び均等物に及ぶ。したがって、ここに添付される特許請求の範囲は、以下に記載される特定の実施形態のいずれによっても制限されない。例えば、ここに開示される任意の方法又はプロセスにおいて、方法又はプロセスの作用又は動作は、任意の適切な順序で実行することが可能であり、必ずしもここに開示される特定の順序に限定されない。特定の実施形態の理解をしやすくするために、各種動作は、複数の個別の動作として順番に記載することがあるが、記載の順番が、これらの動作が順番に依存することを暗示すると解釈されるべきではない。さらに、ここに記載される構造、システム、及び/又はデバイスは、一体化された構成要素又は別個のコンポーネントとして具現化することができる。種々の実施形態を比較するために、これら実施形態の特定の態様及び利点が説明される。しかし、これら態様又は利点が全て特定の実施形態によって達成されるわけではない。従って、例えば、種々の実施形態は、ここに教示又は示唆され得る他の態様又は利点を必ずしも達成することなく、ここに教示される1つの利点又は利点のグループを達成又は最適化する方法で実施されることがある。
以下の詳細な説明では、コンピュータ及びサイバーセキュリティシステム、デバイス、及び方法を実装するための特定の特徴を、図示されるものも含む特定の説明された実施形態に関連して検討する。以下に、いくつかの実施形態、実施例、及び図を開示するが、当業者であれば、ここに記載された発明が、具体的に開示された実施形態、実施例、及び図を超えて拡大され、本発明の他の用途、ならびにそれらの明白な変形及び均等物を含むことを理解するであろう。本発明の実施形態は、添付の図面を参照して説明され、全体を通して、同様の符号は同様の要素を示すものとする。ここに記載される説明において使用する用語は、単に本発明の特定の実施形態の詳細な説明に関連して使用されているという理由で、限定的又は制限的に解釈されることを意図していない。さらに、本発明の実施形態は、いくつかの新規な特徴を含むことがあるが、単一の特徴がその望ましい特性に単独で寄与することはなく、また、ここに記載された本発明を実施するために不可欠でもない。

実行可能コード検出
本開示におけるいくつかの実施形態は、ファイルの従来とは異なる一以上の領域に隠され得る実行可能なコードを識別するための技術に関する。いくつかの実施形態において、この隠された実行可能コードが一旦検出されると、マルウェア検出を含む種々の目的のためのさらなる処理又は分析を行うためにフラグを立てることができる。

導入
一般的に、ファイル形式は、ファイルの全体的な構造や各ビットをどのように使用して情報をデジタル記憶媒体において暗号化するかを定めることにより、コンピュータファイルにおいて記憶する情報の暗号化方法を標準化するのに役立っている。ファイル形式の多くが、複数の個別の領域を有しており、それぞれの領域が異なる目的で使用される。
従来のマルウェア検出ソリューションでは、通常、ファイルのファイル形式に応じて、ファイルの特定のセクションでのみ不審なプログラムロジックを検索する。しかし、ファイル内の普段はコードやロジックが含まれず、従来のマルウェア検出ソリューションが検索しない一以上の領域に、悪意のあるコードを隠すことにより、マルウェアがこれらのソリューションで使用される検出ロジックをすり抜けることがあるため問題が残る。例えば、多くのファイルには、ファイルを表すアイコンが含まれるセクションがある。多くの場合、このアイコンを保持するセクションに実行可能なコードを配置する実用的な理由はない。しかし、多くのマルウェアやその他の攻撃者は、このような従来のマルウェア検出やアンチウイルスソフトが検査をしない場所に、悪意のあるコードを配置する。したがって、コンピュータマシーンで、マルウェアを実行する場合、隠された場所から実行可能なコードを抽出して実行するだけでよい。このようにして、悪意あるソフトウェアは、そのコードを既存のマルウェア検出やアンチウイルス製品から、巧みに隠すことができる。
さらに、ファイル内のコードが実行可能なコードであるか否かを検出することは些細なことではない。コードを見るだけでコードが実行可能かどうかを判断するロジック的な方法はない。したがって、コードが実行可能であるか否かを検証するには、コードをコンピュータ内で実行しなければならない。つまり、従来の方法を用いて、バイト列が有効な実行可能コードであるかを判断するために、マルウェア検出及びアンチウィルスソフトウェアは、バイト列の実行を試みて、当該バイト列が有効な実行可能コードとして解釈できるかどうかを確認しなければならない。しかし、コードの実行を試みるということは、マシンの性能を大幅に阻害し、及び/又は、コードの実行中に誤って悪意あるソフトウェアを導入してしまう可能性があるため、好ましくない。コードをサンドボックス内で安全に実行できたとしても、コードを実行し、実行し、チェックすることは、実行を伴わない実行可能コードの自動検出と比較して、パフォーマンスの低下をもたらす。さらに、サンドボックス内でのコードの実行は、それ自体が本来必要とされない処理能力とリソースを必要とするため、コンピュータシステムの処理能力を低下させる。
したがって、まずファイルに隠された実行可能なコードを、正確かつプログラム的に識別し、その後従来のマルウェア解析用にフラグを立てる必要性がある。ここに記載されるいくつかの実施形態によるシステム及び方法は、対象のコードを実行して当該対象コードが実行可能コードかどうかを判定することなく、ファイルに隠された実行可能なコードを識別、検出することを可能とする。言い換えると、ここに記載するいくつかの実施形態によれば、ファイルに隠された実行可能コードを識別及び検出するシステム及び/又は方法であって、前記システム及び/又は方法は、対象コードが実行可能コードであるかどうかを見るために当該対象コードを実行することを含まないシステム及び/又は方法が提供される。具体的には、ここに記載するいくつかの実施形態において、コードの実行を試みる必要なく、実行可能なコードのパターンを理解するために、一以上の機械学習モデルを活用してもよい。具体的には、ここに記載するいくつかの実施形態は、実行可能ファイル内の特定の場所を検索し、当該特定の場所に実行可能なコードが含まれているか否かを判定する機械学習モデルに関する。悪意のある攻撃者は、多くの場合、ファイルの従来とは異なる場所にコードを隠す、又は隠蔽しようとする。したがって、いくつかの実施形態では、ファイルからの一以上のバイト列を入力として、一以上のセクションが有効な実行可能コードを含んでいる可能性を判定するために一以上の機械学習モデルを活用してもよい。
従来のマルウェア検出ソリューションは、インポート、文字列、不審な関数呼び出しのシーケンス等の悪意のあるパターンを検出する。しかし、マルウェアは、コードの悪意のある部分(ペイロード等)をファイル内のリソース又は非表示領域内に隠すことにより、これらのソリューションで使用される検出ロジックをすり抜けることが多々ある。これらの非表示領域には通常、実行可能コードやプログラムロジックが含まれていないため、従来の検出システムでは検索されないことがあり、マルウェアが当該システムによる検出をすり抜ける可能性がある。
いくつかの実施形態において、ここに開示される技術は、ファイルのいかなる部分からでも得られるバイトストリーム、特に従来のマルウェア検出ソリューションが無視するファイルの非表示領域からのバイトストリームから実行可能コードの自動検出を可能にし、この技術的欠点に対処している。ポータブル実行可能(PE)ファイル内のリソース等、数カ所にコードが存在するだけで、非常に悪意あるアクティビティの可能性があり、検出ソリューションに非常に役立つため、これら技術を、一例として、また技術の理解を容易にするために、PEファイルの場合に関して説明する。しかし、ここに記載される技術は、いずれの適切なファイル形式にも適用可能である。例えば、ここに記載するコード検出技術は、他の実行可能なファイル形式(例:ELFファイル)及び非実行可能なファイル形式(例:PDFファイル)にも利用できる。
より具体的には、いくつかの実施形態において、特定のバイトストリームが実行可能なコードかどうかを検出するように、機械学習モデルを教育してもよい。この機械学習モデルを、その後、一般的に従来の検出ソリューションファイルが分析しない領域を含む、一以上の異なる領域に対して実行し、一以上のファイル内の実行可能なコードを検出してもよい。検出された実行可能コードには、マルウェア検出ソフトウェアで、さらに解析すべくフラグを立ててもよく、これにより隠れたマルウェアペイロードの検出が大幅に改善する。いくつかの実施形態において、ファイルの一部のみをモデルに渡してもよい。いくつかの実施形態において、ファイル内のデータ全体をモデルに渡してもよい。

ポータブル実行可能(PE)
図1Aは、ポータブル実行可能(PE)ファイル形式に関連する例示的な構造を示す図である。例示的な目的、及びここに記載する技術の理解を容易にするために、PEファイルに関連する構造のいくつかを以下に記載する。特に図1Aに関してここに記載するように、PEファイルに関連する構造には、マルウェアの実行可能コードを隠すことができる場所がある場合がある。
いくつかの実施形態において、ポータブル実行可能(PE)ファイルは、実行可能ファイル、オブジェクトコード、DLL、FONフォントファイル、及び特定のバージョンのWindowsオペレーティングシステムで使用されるその他のファイル形式である。PEファイルは、ファイルをどのようにコンピュータシステムのメモリにマッピングするかを動的リンカに通知する多数のヘッダ及び/又はセクションを含んでいてもよい。実行可能イメージはいくつかの異なる領域を含むことがあり、それぞれが異なるメモリ保護を必要とすることがある。例えば、一般的に(プログラムコードを保持する).textセクションは、実行/読取り専用としてマッピングされ、(グローバル変数を保持する).dataセクションは、非実行/読取り/書き込みとしてマッピングされる。図1Bは、例としての許可132を含むPEファイルのセクションの例を示している。セクション116は、例えば、ネーム126、仮想サイズ128、及び仮想アドレス134を含んでいる。いくつかの実施形態において、動的リンカの機能の一部は、各セクションを個別にメモリにマッピングし、ヘッダ内の指示に従って、結果として得られる領域に正しい許可132を割り当てることである。
PEファイルは、ディスクオペレーティングシステム(DOS)ヘッダ102を含むことがある。いくつかの実施形態において、DOSヘッダ102は、各PEファイルの最初の64バイトで開始することがある。DOSヘッダ102は、MS-DOS互換ファイルタイプを識別することによって、バージョンチェック及び下位互換性において機能を果たすこともある。旧バージョンのWindowsオペレーティングシステム及びMS-DOSオペレーティングシステムでは、オペレーティングシステムがDOSヘッダ102を読み取って、ファイルと互換性があるかどうかを判断することがある。例えば、MS-DOSバージョン6.0上でWindows NTの実行ファイルの実行を試みると、オペレーティングシステムはDOSヘッダ102をチェックし、「このプログラムはDOSモードでは実行できません。」と表示することがある。もし、代わりに、PEファイル形式の最初の部分として、DOSヘッダ102が含まれていなかった場合、オペレーティングシステムは単にファイルのロードに失敗し、「指定された名前は内部又は外部コマンド、動作可能なプログラム、又はバッチファイルとして認識されません。」と、全く役にたたない提示を行う。
PEファイルは、またDOSコード(「スタブ」)104を含んでいる場合があり、実行可能ファイルをロードする際に実行されるスタブと呼ばれるコードを含んでいる場合がある。通常、DOSスタブ104は、「このプログラムはDOSモードでは実行できません。」というメッセージのように、文字列を出力する。これにより、PEファイルをDOSシステム上で実行した場合に、PEファイルによってクラッシュが発生しないようにし、代わりに、メッセージを表示させた後にプログラムを終了することができる。しかし、Microsoftのリンカは、標準的なスタブ以外のスタブにリンクさせるオプションを含んでおり、PEファイルの作成者はそこにカスタムコードを配置することができる。一般に、オフセット3Ch(60)において、ファイルの開始に対してPEブロックの開始を指定するDWORDがある限り、任意のDOSプログラムをDOSスタブ104に配置することができる。いくつかの実施形態において、DOSスタブ104は、完全なDOSプログラムとすることができる。
いくつかの実施形態において、PEファイルは、一以上のNTヘッダ106を含むことができ、PEファイルヘッダ108、画像オプションヘッダ110、及び/又はデータディレクトリ112の配列を含むことができる。PEファイルヘッダ108は、コードの位置及びコードサイズを含む、PEファイルの残りがどのようなものかを定義するフィールドの集合を含んでいてもよい。さらに、オペレーティングシステム又は他のアプリケーションが、ファイルの処理方法を決定するための高レベル情報が、PEファイルヘッダ108内に存在してもよい。例えば、DEC(登録商標)Alpha、MIPS R4000、Intel(登録商標)x86、又は他の何らかのプロセッサなど、実行可能ファイルがどのタイプのマシン又はプロセッサのために構築されたかを示すフィールドが存在してもよく、このフィールドを参照することにより、ファイルデータの残りの部分をそれ以上確認することなく、ファイルの処理方法を迅速に決定することができる。PEファイルヘッダ108はまた、情報をより容易かつ効率的に抽出するために、ファイル内にあるセクションの数、より具体的にはセクションヘッダ及びセクション本体の数を識別するフィールドを含んでいてもよい。各セクションヘッダとセクション本体はファイル内で順番にレイアウトされることがあるため、セクションヘッダとセクション本体の終了位置を判断するためにセクションの数が必要なことがある。画像オプションヘッダ110は、実行可能イメージに関する意味のある情報、例えば、初期スタックサイズ、プログラムエントリポイント位置、好ましいベースアドレス、オペレーティングシステムバージョン、及び/又はセクションの並びに関する情報などを含んでいてもよい。データディレクトリ112のエントリの配列は、セクション本体内に含まれるデータディレクトリに対する相対仮想アドレスを含むことがある。各データディレクトリは、特定のセクション本体のデータがどのように構成されているかを示すことができる。対応するセクションヘッダー及びデータディレクトリエントリがセクション本体内のデータを検索して解読するのに十分な情報を提供している限り、セクション本体は厳密なファイル構造がないこともあり、ほとんどどのようにも編成可能である。
PEファイルはまた、セクションヘッダ114のテーブルを含んでいてもよく、当該テーブルはNTヘッダ106の直後に続けてもよい。前述したように、PEファイルは、PEファイルヘッダ108内にマッピングされたセクションを含んでいてもよく、これらセクションにコード、データ、リソース、及び/又は、その他の実行可能情報を含むファイルのコンテンツが含まれていてもよい。各セクションは、ヘッダ及び本体を含んでいてもよく、ここに生データ又は実行可能コードを格納することができる。セクションテーブルの行やエントリを各セクションヘッダが含んでいることがあるため、セクションヘッダを一緒に配置してもよい。各セクションヘッダは、対応するセクションのデータサイズを識別するためのフィールド、及び対応するセクションのデータ(例:セクション本体)位置へのポインタを含む、少なくとも40バイトのエントリを含んでいてもよい。
PEファイルはまた、複数のセクション116(即ち、セクション本体)を含んでいてもよい。セクション116は、特定の定義済みセクションを含んでいてもよい。例えば、Windows NT用のアプリケーションには通常、9つの定義済みセクション(.text、.bss、.rdata、.data、.rsrc、.edata、.idata、.pdata、及び.debug)がある。アプリケーションによっては、これらのセクションを全て活用しないこともあるが、中には特定のニーズに合わせるためにさらに多くのセクションを定義することもある。図1A、図1Bに示す定義済みセクションには、.textセクションS118、.dataセクションS120、.edataセクションS122、及び.rsrcセクションS124が含まれていていてもよい。
図1Aから、PEファイルには、マルウェアの実行可能コードを隠すことができる多くの場所があり得ることがわかる。実行可能コードを隠すさらなる領域としては、リソース、文字列、変数、オーバーレイ、及び/又は、実行許可のないセクションが挙げられる。リソースには、PEファイルが必要に応じて使用できる、外部ファイル、及び/又は、外部データが含まれていてもよい。リソースには、マルウェア検出ソリューションが通常検査しないPEファイルの領域が含まれていることがあり、悪意のあるコードを隠すのに利用できる。リソース内で見つかった実行可能コードは、どのような種類であれ、非常に疑わしく、いくつかの実施形態において、ここに記載されるシステム及び方法では、リソースで見つかった実行可能なコードを識別し、さらなる解析のためにフラグを立てるように構成されている。
いくつかの実施形態において、実行可能コードが隠され得る別のファイル位置は、バイナリ文字列及びバイナリ変数内であり、バイト列が含まれていることがある。通常のテキストデータを含む文字列及び変数とは異なり、バイナリ文字列及びバイナリ変数は、非従来型データ(例えば、メディア)を保持するために使用されることがある。いくつかの実施形態において、マルウェアのペイロードがバイナリ変数やバイナリ文字列に隠されていることが一般的である。これらの領域におけるコードの存在は、強く悪意を示唆しており、いくつかの実施形態において、ここに記載されるシステム及び方法では、バイナリ文字列やバイナリ変数で見つかった実行可能なコードを識別し、さらなる解析のためにフラグを立てるように構成されている。
いくつかの実施形態において、実行可能コードが隠され得る別の位置が、オーバーレイであることもある。PEファイルのオーバーレイは、PEファイルに追加されるあらゆるデータと定義されることがあり、メモリにマッピングされることを意図していないこともある。従来のマルウェア検出ソリューションは一般的にオーバーレイを検査しないので、いくつかの実施形態において、マルウェア設計者がペイロードをオーバーレイに隠すことは一般的に行われていることである。したがって、いくつかの実施形態において、ここに記載されるシステム及び方法は、オーバーレイで見つかった実行可能コードを識別し、さらなる解析のためにフラグを立てるように構成されている。
いくつかの実施形態において、実行可能コードを隠され得る別の位置が、実行許可のないあらゆるセクション内であることもある。前述したように、各PEファイルは複数のセクションで構成されることがある。各セクションには、それぞれ読み取り、書き込み、及び、実行の許可を設定できる。PEファイルをメモリにロードする際に、PEファイルに前記許可がセクションから踏襲されることがある。従来の検出システムは通常、実行許可のないセクション内で悪意のあるコードをチェックしないので、いくつかの実施形態において、マルウェアはよくこれらのセクションに悪意のある部分を隠している。これらのセクションにおけるあらゆる類のコードの存在は、悪意を示唆する場合がある。したがって、いくつかの実施形態において、ここに記載されるシステム及び方法は、実行許可のないセクションで見つかった実行可能コードを識別し、さらなる解析のためにフラグを立てるように構成されている。

実行可能コード検出メカニズム
以下に、ファイル内の実行可能コード(マルウェアに関連する場合と関連しない場合がある)を識別するためのシステム及び方法について説明する。いくつかの実施形態において、悪意のあるコードは、ファイルの一般的に実行可能コードと関連しないが、マルウェアペイロードの隠し場所とすることができる領域に配置される。いくつかの実施形態は、PEファイルと当該ファイルの特定の位置に関連しているが、ここに記載のいくつかの実施形態は、あらゆるファイル形式又はファイルのあらゆる場所においてコードを検出するのに活用できる。マルウェア検出ソリューションとして正常に利用できる実行可能コード検出メカニズムを作成し、ファイル内の異なる部分で実行するのは全く容易ではない。第一に、前記メカニズムは、入力サイズが独立している必要がある(例:異なるファイルサイズ全体に正常に機能しなければならない)。第二に、前記メカニズムはファイルの多くの場所に対して適用される可能性があるため、偽陽性(又は偽陰性)を回避できるように非常に高い精度を維持する必要がある。最後に、バイトストリームが実行可能コードか否かをプログラム的に予測するタスクについてはまだ十分に調査されていない。
いくつかの実施形態において、例えば、ファイルからのバイトストリームは、特定の機能をプログラムする特定の順序の単語又はパターンを有する言語として扱われる。したがって、ここに記載されるシステム及び方法は、一連の単語と同様の方法でコードストリームを扱うことができる。ここに記載されるシステム及び方法は、実行可能コードが多くの共通するパターンを有しているという事実を利用する。いくつかの実施形態において、実行可能コード内に見出されるこれらのパターンは、例えば、特定のバイトパターンをカウントしてデータが実行可能コードであるか否かを検出することにより、検出目的で利用することができる。より具体的には、いくつかの実施形態において、データからn-グラム特徴を抽出してもよい。n-グラムは、長さがnの連続する単語列(又は、コードの場合バイト列)を含んでいてもよい。各n-グラム特徴は、特定のn-グラムがデータ内に登場する回数を含むカウンタを含んでいてもよい。しかしながら、n-グラムの抽出は、バイトストリームから特徴を抽出するたった一つの例示的な方法を含んでいることが理解されるであろう。いくつかの実施形態において、バイトストリームから特徴を生成するために、他の特徴生成アルゴリズムが利用されていてもよい。
より具体的には、いくつかの実施形態において、コードセクションから、最も頻度の高いn-グラムの所定数を決定してもよい。いくつかの実施形態において、n-グラムの前記所定数は約500であってもよい。いくつかの実施形態において、n-グラムの前記所定数は、約50、100、150、200、250、300、350、400、450、500、550、600、650、700、750、800、850、900、1000、1500、2000、2500、5000、10000、及び/又は、これらいずれか2つの値間の任意の値であってもよい。いくつかの実施形態において、n-グラムの数は予め定められていなくてもよく、代わりに、コードセクションに存在する各n-グラムが使用されてもよい。いくつかの実施形態において、n-グラムはbi-グラム(即ち、n=2)を含んでいてもよい。いくつかの実施形態において、n-グラムは、ユニグラム(1-グラム)、bi-グラム(2-グラム)、tri-グラム(3-グラム)、4-グラム、5-グラム、6-グラム、7-グラム、8-グラム、9-グラム、10-グラム、11-グラム、12-グラム、20-グラム、50-グラム、100-グラム、200-グラム、500-グラム、及び/又は、これら値のいずれか2つの間の任意の値を含んでいてもよい。いくつかの実施形態において、nの長さを決定する際に、生成される特徴の数と、サンプルの数との間にトレードオフが発生することがある。いくつかの実施形態において、複数の長さのn-グラムを使用してもよい。例えば、予想モデルの特徴として、bi-グラムとtri-グラムとを別々に使用してもよく、組み合わせて使用してもよい。いくつかの実施形態において、予想モデルの特徴として、全ての可能な長さのn-グラムを別々に使用してもよく、組み合わせて使用してもよい。いくつかの実施形態において、異なる長さのn-グラムを抽出するには、各長さについて別々に特徴を抽出する必要があることもある。抽出プロセスは、図2Bを参照して以下に説明される。
いくつかの実施形態において、n-グラム特徴を使用する際に、各カウンタはデータ長によって正規化される。いくつかの実施形態において、これらのカウンタを予測機械学習モデルの特徴として使用することができ、これを使用して、PEファイル内のこれらの領域の1つにおけるバイトストリームが実行可能コードである可能性が高いか否かを判定することができる。
いくつかの実施形態において、このような機械学習モデルにbi-グラムを特徴として使用することにより、データサイズに対して不変でありながら、非常に高い精度率を達成することができる。いくつかの実施形態において、従来のマルウェア検出及び解析において特徴抽出の一部としてコード検出プロセスが使用されてもよい。そのような実施形態の一部において、ここに記載されるシステム及び方法は、ファイル内の種々の場所において、実行可能なコードが含まれ得る確率を推測し、当該確率をマルウェア検出用モデルの構築に使用してもよい。例えば、コードセクションを入力として利用し、コードセクションの種々の特徴(インポートやファイル内の文字列、及びエントロピー等)をチェックするメインのマルウェア検出モデルを利用してもよい。いくつかの実施形態において、ランダムフォレストからの確率は、メインのマルウェア検出モデルの3つ以上の特徴として機能することができる。さらに、いくつかの実施形態において、予測された実行可能コードは、従来のマルウェア検出及び解析プログラムによるさらなる評価のために、フラグを立ててもよい。

バイトストリームの前処理
図2Aは、機械コードの例示的断片202を示す図である。より具体的には、図2Aは、バイト204の例示的なbi-グラム(「B8 22」)が強調されたx86機械コードの断片を示している。いくつかの実施形態において、ストリーム内の次のbi-グラムは「22 11」であり、この後に「11 00」が続き以下同様である。なお、実行可能なコードは、いずれのコンピューティングアーキテクチャ(例:x86、AMD64、.NET、ARM、等)に関連付けられていてもよい。いくつかの実施形態において、実行可能なコードは一般的に、x86、AMD64、及び.NETの3つのアーキテクチャの1つを含んでいる。いくつかの実施形態において、ここに記載される機械学習モデルは、これらのアーキテクチャのそれぞれについて実行可能なコードを検出するために訓練されてもよく、各タイプについて異なるn-グラムが選択されてもよく、ファイルがどのアーキテクチャに基づいているかに応じて使用できる3つの別個のモデルとして実装することができる。
バイトストリームからのn-グラム抽出には、予測機械学習モデルへの入力として特徴を提供するプロセスが含まれる。n-グラムは、本質的に繰り返されるテキストの一連の単語として機能してもよい。比較のために、図2Bには、単語の文字列を利用して特徴を生成するプロセスが示されている。図示の例では、3つの単語文字列206が示されており、これをファイル内のバイト文字列と比較することができる。いくつかの実施形態において、前処理には、バイト文字列を分析して、n-グラム208のコーパスを生成することが含まれていてもよく、バイト文字列内に長さnの最も一般的なバイト列が所定数を含まれていてもよい。図示された比較例では、関連する単語の文字列206内に存在する13個のbi-グラムを含む、bi-グラムのコーパス208が生成されている。いくつかの実施形態において、n-グラム特徴210は、バイト文字列を順に移動し、n-グラムコーパス208の各n-グラムのインスタンスが各バイト文字列にいくつ存在するかをカウントすることによって、n-グラムコーパス208から作成することができる。例示的な比較例では、特徴210が生成されており、各特徴は13個のカウンタを含んでおり、各カウンタは各単語ストリーム206における、コーパス208の0~13の番号が振られたn-グラムの数に対応している。なお、同一のバイトストリーム内に同一のn-グラムが複数あることがあるので、各カウンタは1を超えてもよい。したがって、一以上のバイトストリームが実行可能コードを含んでいるか否かを判定する予測モデルへの入力に対して、一以上のn-グラム特徴が生成されてもよい。
いくつかの実施形態において、n-グラムの利用は、データの静的構造をキャプチャすることが可能となり、バイトストリームが実行可能コードであるか否かを判定するために必要となる情報を予測モデルに提供できるので、重要となり得る。

予測モデル
いくつかの実施形態において、任意の適切な機械学習アルゴリズム、又はその組み合わせを使用して、予測機械学習モデルを構築することができる。このような機械学習アルゴリズムの例としては、サポートベクターマシン(SVM)、線形回帰、k-近傍法(KNN)アルゴリズム、ロジスティック回帰、ナイーブベイズ(naive Bayes)、線形判別分析、決定木、ニューラルネットワーク、類性学習等が挙げられる。いくつかの実施形態において、予測機械学習モデルの構築に使用される機械学習アルゴリズムは、分類(例:コードを実行可能なコードか非実行可能コードに分類)を行うことができてもよく、任意の分類子が選択されてもよい。いくつかの実施形態において、またここで例示目的で図面に開示されるように、機械学習アルゴリズムとしてランダムフォレストアルゴリズムが使用されてもよい。
ランダムフォレストは、複数の決定木を利用する機械学習を使用するアンサンブル法が含まれていてもよい。いくつかの実施形態において、決定木は複雑なデータセットを適合させ、分類タスクと回帰タスクの両方を行うことができる機械学習アルゴリズムを含んでいてもよい。各マシンアーキテクチャ(例:x86、AMD64、.NET等)ごとに、当該アーキテクチャ内の多数のコードセクションを収集して入力データとして使用してもよい。コードセクションには、実行可能コードが含まれているものもあり、どのセクションに実行可能コードが含まれているかがわかっている場合もある。このようにして、モデルはバイトストリームがコードを含んでいる確率をどのように判定するかを理解する。
ランダムフォレストは、これらの決定木のアンサンブルを含んでいてもよく、各決定木は、同一データのノイズの多いバージョンに対して独立的に教育される。ノイズは、例えば、カラム・サブサンプリング又はデータリサンプリングの形態であってもよい。推論中、決定木による決定は、最大投票又は平均化によって結合されてもよい。
図3には、本開示のいくつかの実施形態による、n-グラム特徴を入力データとするランダムフォレストモデルを使った結果の例を示す図である。上述したように、ファイル(例えば、PE100)の各セクション(例:データディレクトリ112、及びセクション116)からのコードは、例えば、bi-グラムに分割されてもよく、500個の最も高頻度のbi-グラムを、これらbi-グラムのそれぞれがコードセクションを通して出現した回数のカウントと共に決定してもよい。これら500個の最も高頻度のbi-グラムは、データ長で正規化され、線302及び304で示されるように予測機械学習モデルへの入力特徴として使用されてもよい。いくつかの実施形態において、システム又はその機械学習アルゴリズムは、アーキテクチャのそれぞれに対して、3つのランダムフォレスト306、308、310を含んでいてもよく、各ランダムフォレストは、例えば、500個の特徴を含んでいてもよい。特徴の生成には、データ(例:O(n))を一回横断(トラバース)する必要があり、モデルによって複数回横断することによって完了することもある。
いくつかの実施形態において、各アーキテクチャについて一旦ランダムフォレストが生成されると、あらゆる入力に対して、その入力に関連するアーキテクチャを判断することなく、3つのモデル306、308、310が同時に実行さることがある。いくつかの実施形態において、ここに記載される機械学習モデルを活用したマルウェア検出モデルに大幅な遅延、又は効率に影響はない。これは、いくつかの実施形態において、各ランダムフォレストモデルの実行が、例えば、O(log(n))の演算を取るためであり、無視できるものである。これは図3で見ることができる。図3は、これら3つの別々のランダムフォレストモデル306、308、310のセットが二回実行された様子を示しており、一回目はPEファイル100のデータディレクトリ112からのバイトに対して実行され(矢印302)、次にPEファイル100のセクション本体116からのバイトに対して実行されている(矢印304)。矢印302の場合、ランダムフォレストモデルによって予測されるアーキテクチャのコード確率は、x 86:P1、x 64:P2、及び.NET:P3である。確率P1、P2、及びP3は、データディレクトリ112からのバイトがそれぞれ実行可能なx86、x64、又は.NETのコードである可能性を示唆している。矢印304の場合、ランダムフォレストモデルによって予測されるアーキテクチャのコード確率は、x 86:P4、x 64:P5、及び.NET:P6である。確率P4、P5、及び63は、セクション116からのバイトがそれぞれ実行可能なx86、x64、又は.NETのコードである可能性を示唆している。
いくつかの実施形態において、ランダムフォレストモデルは、ファイルの様々な領域のバイトが実行可能コードかどうかを判断するのに有用だが、バイトが実行可能コードである場合、当該実行可能コードがマルウェアペイロードに関連するかどうかについては疑問が残る。換言すると、いくつかの実施形態において、一旦コードが検出されると、当該コードは、さらなるマルウェア検出及び分析のためにフラグが立てられてもよい。しかしながら、検出の観点から、経験上の結果では、ここに記載のコード検出機械学習モデルのいくつかは、マルウェア検出を全体的に少なくとも0.3%、テストデータセット内のPEファイルに対して97.7%を98.0%まで押し上げた。また、ここに記載されるようなコード検出機械学習モデルを用いることによるマルウェア検出の増加は、ここに記載するように非従来的な場所に実行可能コードを隠すマルウェアでより高くすることができる。
図4Aは、ここに記載するいくつかの実施形態による、個別の決定木構造の例示的なフローチャートである。ランダムフォレストの各決定木は個々に、分岐構造を含むことができ、各分岐は、特定のn-グラムがバイトストリーム内に存在するか否か、又は特定のn-グラムカウンタが特定の値より大きいか、小さいか、又は等しいか否かを判定することによって導かれる。例えば、ノード402には、「X」n-グラムがコードセクション内に存在するか否かのチェックが含まれていてもよい。もし含まれていない場合は、決定木400はノード404に進み、「Y」n-グラムがコードセクション内に存在するか否かをチェックする。いくつかの実施形態において、決定木は、実行可能コードがコードセクション内に存在するか否かの確率決定に達する前に、任意の数の類似するノードを含んでいてもよい。しかしながら、いくつかの実施形態において、ブートストラップ集約又はバギングのために、より浅い(すなわち、ノードがより少ない)ツリーが好ましいことがある。バギングとは、分散を減少させ、訓練データの過剰適合を回避することによって、モデルの安定性及び精度を改善する機械学習方法とすることができる。本質的に、訓練データの異なる側面を学習する数多くの弱い学習器(例:より浅いツリー)の結果を平均化して、少数の強い学習器(例:より多くのノードを有する、より深いツリー)を利用する場合に比べてより精度が高くより安定したモデルを作成することができる。実際に、より多くのノードを有する、より深いツリーを利用すると訓練データの過剰適合になることがある。過剰適合は、モデルが訓練データの詳細やノイズを、当該モデルの新規データに対する性能に悪影響を及ぼす程度まで学習することによって起こる。ここで述べる場合に当てはめると、過剰適合は、予測モデルが、コードセクション内のノイズやランダムな変動を、実際には、このようなランダム性が訓練セット以外の新規のコードセクションには当てはまらない場合でも、実行可能コードの必要な特徴として取り扱うようになる。過剰適合は、予測モデルの一般化能力に悪影響を及ぼしかねない。したがって、いくつかの実施形態において、この過剰適合の問題を回避するために、ツリーあたりのノード数は30以下であってもよい。
再度図4A aを参照すると、図示された実施形態には、2つのノードが含まれている。図示される実施形態において、コードセクションに「Y」n-グラムが存在していなければ、決定木400は、408において確率P1を出力してもよく、コードセクションに「Y」n-グラムが存在する場合、410において異なる確率P2を出力してもよい。或いは、ノード402において「X」n-グラムが存在すると判定した場合、決定木は先に進み、ノード406で「Z」n-グラムが存在するか否かをチェックしてもよい。ノード406における、コードセクションに「Z」n-グラムが存在するか否かの判定に応じて、412(「Z」n-グラムが存在しない場合)で確率P3が出力されてもよく、或いは414(「Z」n-グラムが存在する場合)で確率P4が出力されても良い。
図4Bは、ここに記載するいくつかの実施形態による、ランダムフォレスト構造の例示的なフローチャートである。簡略化のために、図示された実施形態において、ランダムフォレスト構造は、3つの決定木を含むものとして示されている。当業者であれば、ランダムフォレストが任意の数の決定木を含んでいても良いことが理解できるであろう。例えば決定木の数は、2本のツリー、3本のツリー、4本のツリー、5本のツリー、10本のツリー、25本のツリー、50本のツリー、100本のツリー、200本のツリー、500本のツリー、1000本のツリー、2500本のツリー、5000本のツリー、1万本のツリー、10万本のツリー、100万本のツリー、又はこれらの数の間の任意の数のツリーを含んでいても良い。図示の実施形態では、ランダムフォレストは、第1決定木400A、第2決定木400B、及び第3決定木400Cを含んでいる。図4Aに関して説明したように、第1決定木400Aは、第1決定木の確率値416Aを出力してもよく、第2決定木400Bは、第2決定木の確率値416Bを出力してもよく、第3決定木400Cは、第3決定木の確率値416Cを出力してもよい。各決定木の確率値は、入力されたコードセクションが実行可能コードを含む確率を表している。いくつかの実施形態において、確率値は、値変換418の間に変換され、平均化され、及び/又は他の方法で操作される。いくつかの実施形態において、値変換418は、確率値416A、416B、及び416Cの単純平均化を含んでいてもよい。いくつかの実施形態において、値変換418の間、一以上の決定木からの確率値は、他の一以上の決定木からの確率値よりも重く重み付けされてもよい。いくつかの実施形態において、勾配ブースト決定木モデルを利用してもよい。いくつかの実施形態において、値変換418の結果は、ランダムフォレストモデル値420であり、入力されたコードが、決定木及びランダムフォレストが対象とするアーキテクチャにおける実行可能コードであるという判定の確率を表している。

モデルの訓練とテスト
いくつかの実施形態において、決定木は、貪欲的に訓練されてもよく、すなわち、「最良」データを分割する訓練セット内の変数値の対は、各反復で選択され得る。分離基準は、例えば、とりわけ情報利得及びGINIを含む実装間で変化してもよい。予測モデルの訓練中に、ファイルの異なるセクションを含み得る様々なバイトストリームにタグを付けてもよい。セクションには実行可能コードを含むものがあり、他のセクションが実行可能コードを含まず、むしろ有効なコードではない生データを含むことをモデルに教育するようにセクションにタグ付けすることができる。いくつかの実施形態において、例えば上述のn-グラム特徴抽出方法によって、これら複数のコードセクションをモデルに入力することができる。既知のコード及び非コードセクションが使用されるこの訓練プロセスを通じて、機械学習モデルは、バイトストリームが実行可能コードを含むか否かを示すバイトストリーム内の特定のパターンを学習することができる。
図5は、ここに記載するいくつかの実施形態による、コード検出モデルを教育及びテストするための例示的なフローチャートである。いくつかの実施形態において、予測モデルを訓練するためのコードサンプルを複数含むサンプルデータベース502が設けられている。別々のアーキテクチャ(例えば、x86、x64、.NET)に対する各予測モデルに対して、異なるサンプルデータベース502を使用してもよい。サンプルデータベース502の複数のコードサンプルには、複数の非実行可能コードサンプルと複数の実行可能コードサンプルが含まれていることが好ましい。いくつかの実施形態において、サンプルデータベース502からの複数のコードサンプルは、実行可能コードセクション502と非実行可能コードセクション506とに分割される。いくつかの実施形態において、コードセクション504及び非コードセクション506は、コード訓練サンプル508及びコードテストサンプル510にさらに分割され、一方、非コードセクション506は、非コード訓練サンプル512及び非コードテストサンプル514に分割される。いくつかの実施形態において、コード訓練サンプル508と非コード訓練サンプル512は、その後組み合わせられて訓練セット516とされ、上述したように予測モデルの訓練に使用することができる。いくつかの実施形態において、予測モデルが、コード検出メカニズムとして個別に又は組み合わせて利用(例:ランダムフォレスト)できる一連の決定木を生成できるように、モデルに、訓練セット516内のどのサンプルが実行可能コードで、どのサンプルが実行可能コードでないかについて指示が与えられる。いくつかの実施形態において、テストセット518を使用して、予測モデルの精度をテストすることができる。テストの結果に応じて、サンプルデータベース502から異なる及び/又は追加のサンプルを使用して予測モデルをさらに訓練してもよい。
いくつかの実施形態において、サンプルデータベースは、セクション116がファイルの情報のほとんどを含んでいるため、当該セクションのコードを用いて構築されていてもよい。上述したように、ファイルは異なるセクション116から構築することができる。各セクションは、許可を有しているため、許可情報が把握されている複数の良性ファイルを使用して訓練セット516を構築することができる。前述したように、セクションが実行可能コードであるか否かを判断することは困難である。したがって、様々なソースからの異なるセクション116を用いて、訓練セット516及びテストセット518を構築し、それぞれを実行して、どのセクションが実行可能コードを含んでいるか判定するには非常に問題がある。実際、この方法によって訓練セット516及びテストセット518を構築するには並外れた量の時間と労力が必要となる。代わりに、ここに記載されるいくつかの実施形態において、Microsoftのファイルや、既知の信頼できるベンダーのファイル等の良性ファイルが使用されてもよい。さらに、いくつかの実施形態において、各ファイルは、コードを含んでいる可能性があり実行許可のあるセクションと、コードを含んでいる可能性がなく、実行許可を持たないセクションとに分割される。いくつかの実施形態において、このように準備されたセクションを使ってサンプルデータベース502を構築してもよい。

自動特徴抽出(AFE)
ここに開示されるいくつかの実施形態は全体的に、マルウェア検出で使用するための、コードから自動的に特徴を抽出するシステム及び方法に関する。効率的でスケーラブルなマルウェア認識モジュールは、サイバーセキュリティ製品の重要なコンポーネントとなり得る。
いくつかの実施形態において、自動特徴抽出システム又は方法はコード-数値特徴変換と、これに続く自動特徴抽出用のニューラルネットワークが含まれていてもよい。いくつかの実施形態において、コード-数値変換には、ルックアップテーブルが含まれており、これにより小さなコードユニット(例:バイト、単語、ダブルワード)を数値ベクトルに置き換えてもよい。いくつかの実施形態において、バイトコードにWord2vecを使用してニューラルネットワークへの入力生成している。しかしながら、ルックアップテーブルは種々の異なるメカニズムを通して作成されてもよいことが理解できるであろう。いくつかの実施形態において、ニューラルネットワークは、再帰型ニューラルネットワーク(RNN)を含んでいてもよい。他の実施形態において、システム及び方法は、コード-数値変換によって生成された数値チャネルをフィルタリングするフィルタリングメカニズムと、これに続く畳み込みニューラルネットワークを含んでいてもよい。

導入
マルウェア検出モジュールは、収集したデータに基づいて、オブジェクトが脅威であるかどうかを判断する。静的マルウェア検出方法の殆どは、ファイルから高度にエンジニアリングされた特徴を抽出し、それを使用して機械学習(ML)モデルを訓練する。しかしながら、実行可能なコードから有用な特徴を抽出するためのシステム及び方法は不十分である。このため、これらのソリューションで使用される特徴のほとんどは、実際のコードではなくファイルのメタデータに関連している。いくつかの事例において、マルウェアにはメタデータに、無効なチェックサム、不審なAPIのインポート、高いエントロピー等の悪意のあるインジケータとパターンを含むものもあり、このアプローチが有効な場合もある。ファイルのメタデータを編集してこれらのパターンを偽装することはできるが、コードには実行可能ファイルの実際のロジックが含まれているため、実行可能コードには常に悪意のあるパターンが存在する。このため、人のマルウェア研究者はコードの検査に従事し、一般的に人の研究者はメタデータではなく、実行可能コードにより多くの注意を払う。しかし、欠点としては、人による検査は一般的に遅く、費用がかかり、非常に非効率的なことである。したがって、実行可能コードの特徴を機械学習モデルに伝播させるための、効率的なプログラム的システム及び方法によって検出ソリューションが大幅に改善される。
いくつかの実施形態において、コードからマニュアルで特徴を抽出するのは困難で非効率的であるため、ここに記載されるシステム及び方法でニューラルネットワークやディープラーニング(DL)(深層構造学習又は階層学習としても知られる)を用いて自動的に特徴を抽出する。いくつかの実施形態において、DL法、生データからマニュアルで特徴を抽出する必要なく、生データを用いて優れた結果を得ることができる。これは、ディープモデルが自然言語処理(NLP)と視覚(Vision)の分野に革命をもたらした理由の一部であり、これら分野のデータから特徴を抽出することは容易ではない。いくつかの実施形態において、DLは、学習データの表現に基づく特定のタイプのML方法を含んでいる。ここに記載される実施形態では、実行可能コードから、MLモデルを使用する自動特徴抽出に関する。いくつかの実施形態において、MLモデルは、DLモデルを含んでいる。いくつかの実施形態において、DLモデルは、ニューラルネットワークを含んでいる。いくつかの実施形態において、DLモデルは、深層ニューラルネットワーク、深層信念ネットワーク、再帰型ニューラルネットワーク、及び/又は当業者に公知のあらゆる他のML及び/又はDLモデル構造を含んでいてもよい。
いくつかの実施形態において、DLモデルは、複数層の、特徴抽出及びデータ変換用線形又は非線形処理部を含んでいる。いくつかの実施形態において、DLモデルの連続する各層は、前の層からの出力を入力として使用する。いくつかの実施形態において、DLモデルは、教師あり、半教師あり、及び/又は教師なし学習モデルであってもよい。いくつかの実施形態において、DLモデルは、入力から出力への一連の変換を含むクレジット割り当てパス(CAP)を含んでいる。いくつかの実施形態において、DLモデルは、CAP深度が2、3、4、5、6、7、8、9、10、20、30、40、50、100、200、300、400、500、600、700、800、900、1000、2000、及び/又は、これら値の間のいずれかの値であるフィードフォワードニューラルネットワークを含んでいる。いくつかの実施形態において、DLは再帰型ニューラルネットワークを含んでいる。
いくつかの実施形態において、ここに記載されるシステム及び方法は、マルウェア予測用に、実行可能コードから直接ニューラルネットワークを訓練する。いくつかの実施形態において、ファイル(例:ポータブル実行可能ファイル)は、訓練済みニューラルネットワークによって処理することができ、ニューラルネットワークは、より広範なマルウェア検出モデルの「特徴生成器」として使用することができる。いくつかの実施形態において、ニューラルネットワーク(又はいずれかの他のML及び/又はDLモデル)を、実行可能コードからの自動特徴抽出器として使用することができる。いくつかの実施形態において、ML、及び/又はDLモデル(例:ニューラルネットワーク)から抽出された特徴を使用することによって、マルウェア検出モデルの結果が大幅に改善される。
いくつかの実施形態において、一般的に、ニューラルネットワークは、数層から構成されるMLモデルである。いくつかの実施形態において、各層は、データに対して変換を行い、その結果を次の層に送信する。一般的に、ニューラルネットワークの最終層は、ニューラルネットワークの最後から2番目の層からの最終データ変換を使用して、データのラベル又は分類を予測する(例:このコードはマルウェア又は良性コードである)。しかしながら、いくつかの実施形態において、ここに記載されるシステム及び方法は、最後から二番目のデータ(即ち、最終ラベルや分類が生成される最終層の直前で変換されたデータ)をマルウェア検出モデルの特徴として使用する。いくつかの実施形態において、ニューラルネットワークでは、単一の変換から最後から二番目のデータ形式への最終的な予測を行うため、この形式にはコードの悪意に関する非常に強力な情報が含まれている。いくつかの実施形態において、ここに記載されるシステム及び方法は、メインのマルウェア検出モデルで特徴として利用するデータ(即ち、ニューラルネットワークのいずれかの層への入力又は、当該層からの出力)に対してあらゆる変換を行うことができる。
いくつかの実施形態において、生コードに対して、ニューラルネットワークを訓練及び使用することは容易ではない。いくつかの実施形態において、深層モデルは、固定サイズの入力を想定しているが、コードのサイズは大幅に変化する(1KBから100MB、及びこれらの数値間のいずれかの値)。さらに、いくつかの実施形態において、入力データを固定最大サイズまで拡張するのは実行不可能である。したがって、いくつかの実施形態において、バイトコードを1次元「画像」に処理し固定目標サイズまでスケーリングする、画像スケーリングアルゴリズムが使用されている。いくつかの実施形態において、ここに記載するシステム、方法、及びデバイスは、コードを1次元画像として処理する。いくつかの実施形態において、コードは、例えば画像再スケーリング手法(例:補間法)を用いて固定サイズに再スケーリングされる。いくつかの実施形態において、画像スケーリングアルゴリズムは、一種のデータ圧縮を含んでいてもよい。しかし、画像スケーリングアルゴリズムの使用によって、データ内に存在する空間パターンの歪みが制限できる。マルウェアのバイナリファイルを分類前に二次元画像に変換する手法と比較して、この手法は、画像の幅及び高さを判断する必要がないためより簡単である。いくつかの実施形態において、バイトストリームへの変換は、バイナリコードを元々のファイルの順序で維持でき、データのこのような一連の表現によって当該データにニューラルネットワークアーキテクチャを自然に適用できる。いくつかの実施形態において、各バイトストリームは所定のサイズまでスケーリングされる。いくつかの実施形態において、スケーリングされたコードは1バイト値のシーケンスに対応する。
一般的に、特定の方法では、バイナリファイルから特徴を抽出することなく、当該ファイルから直接マルウェアの分類が試みられている。しかし、いくつかの実施形態では、ML及び/又はDLモデルを訓練し、生データからマルウェアの分類に使用できるが、代わりに、様々な追加入力を含む別のマルウェア検出モデル用に特徴を自動的に抽出する方法として使用することもできる。したがって、いくつかの実施形態において、ニューラルネットワークの入力は、ファイル全体ではなくコードのみが入力となる点で従来のモデルと異なっている。さらに、いくつかの実施形態において、ニューラルネットワークの使用は、ファイルを検査し、ファイルをマルウェアとして分類するために使用される従来のモデルとは異なっている。いくつかの実施形態において、特徴抽出に代えて、ここに記載のニューラルネットワークが使用されている。いくつかの実施形態において、従来のモデルと異なり、以下に記載するようにデータ圧縮の前に埋込が完了している。さらに、入力の差によって、ここに記載するニューラルネットワークは、従来のモデルとは異なるニューラルネットワークアーキテクチャを使用する。
いくつかの実施形態において、線形補間は、類似するバイト値が類似の意味論的意味を有するという事実を使用する。例えば、これは画像について理にかなっている。つまり値230のピクセルと値228のピクセルは、色が非常に似ている。しかし、いくつかの実施形態において、実行可能コードにこれが当てはまらない。つまり、近似する2つのバイト値が、全く異なるオペレーションコードを表すことがある。したがって、いくつかの実施形態において、実行可能コードのセクションでさらに別のモデル(例:Word2Vec)を訓練することで、データを再スケーリングする前に、埋め込みテーブルが利用される。いくつかの実施形態において、別のモデルは、データを、ニューラルネットワークが理解できる数値形式に変換する。いくつかの実施形態において、データ内の各バイトは、学習済み埋め込みテーブルを使用して固定サイズのベクトルに変換することができ、この新次元内のベクトルは、線形補間に必要な特性を維持する。ユークリッド類似性は、意味論的類似性を示している。
図6は、ここに記載する種々の実施形態による、ニューラルネットワークを使用した特徴抽出方法の例を示すフローチャートである。要約すると、以下には、いくつかの実施形態による自動特徴抽出システム及び方法を訓練及び使用するための方法が含まれている。いくつかの実施形態において、本方法は、602において生の入力コードを提供することが含まれていてもよい。いくつかの実施形態では、604において入力コードに前処理ニューラルネットワーク(例:Word2Vec)を使用して、サイズNの埋め込みテーブルが生成される。いくつかの実施形態において、Nは任意の整数であってよい。いくつかの実施形態において、Nは4である。いくつかの実施形態において、Nは、2、3、4、5、6、7、8、9、10、15、20、25、50、100、1000、5000、10000、50000、及び/又はこれらの値の間の任意の値であってもよい。いくつかの実施形態において、本方法は、学習済み埋め込みテーブルを使用して各バイトを埋め込むことにより、サイズXの所与の入力コードのストリームを前処理するステップを含んでいてもよい。いくつかの実施形態において、前処理の結果は、サイズ(X、N)の二次元マトリクス内のデータである。いくつかの実施形態において、本方法は、例えば、最近傍、線形、スプライン又はその他の補間法又はダウンサンプリングを使用して、マトリックスを固定サイズ606にサイズ変更することを含んでいる。いくつかの実施形態において、本方法は、線形補間を使用して、マトリクスを固定サイズにサイズ変更することを含んでいる。いくつかの実施形態において、固定サイズは(5000、4)であってもよい。しかし、固定サイズについては制限はなく、整数X、及びNの任意の組み合わせを含むことができる。いくつかの実施形態において、ダウンサンプリングは、チャネルフィルタリングを使用して完了する。いくつかの実施形態において、本方法はさらに、608において前処理済みデータをニューラルネットワークの入力として、マルウェア予測用のニューラルネットワーク(又は他のML及び/又はDLモデル)を訓練することをさらに含んでいる。いくつかの実施形態において、本方法は、推論をさらに含んでおり、ニューラルネットワークは、モデルに与えられた新しいデータを処理する。いくつかの実施形態において、本方法はさらに、608において推論中に、新しいデータを前処理し、前処理済みの新しいデータをニューラルネットワークを介して実行することをさらに含んでいる。いくつかの実施形態において、本方法はさらに、610において、最後から2番目の層(即ち、ニューラルネットワークの最後の層への入力)から出力データを抽出し、マルウェア検出モデルのための特徴として使用することを含んでいる。いくつかの実施形態において、ニューラルネットワークの実際の結果又は予測(即ち、ニューラルネットワークの最後の層の出力)は破棄される。いくつかの実施形態において、最後から2番目の層からの出力データは、コードを表す追加の特徴ベクトルとして使用されてもよく、他のマニュアルで、或いは、自動的に抽出された特徴と連結、及び/又は結合されてもよい。いくつかの実施形態において、出力データは、マルウェア検出機械学習モデルへの入力として使用してもよく、ニューラルネットワークを訓練するために使用することができる。

ニューラルネットワークアーキテクチャ
いくつかの実施形態において、ニューラルネットワークは、一次元畳み込みの固定された数の層を含むネットワークを使用して構築され、各畳み込みの後にバッチ正規化及び整流線形ユニット(ReLU)が行われてもよい。ReLUは、畳み込みニューラルネットワーク(CNN)等のニューラルネットワークにおける活性化関数を意味することができる。いくつかの実施形態において、一次元畳み込みの層の固定数は、3であってもよい。いくつかの実施形態において、一次元畳み込みの層の固定量は、1、2、3、4、5、6、7、8、9、10、20、30、40、50、100、200、300、400、500、600、700、800、900、1000、2000、及び/又はこれら量の間のいずれかの量であってもよい。
いくつかの実施形態において、各畳み込みは、カーネルサイズ、ストライド、及び/又はフィルタを有している。いくつかの実施形態において、ストライドは、フィルタが入力データをどのように畳込むかを制御する。いくつかの実施形態において、カーネルサイズは7であってもよい。いくつかの実施形態において、カーネルサイズは、1、2、3、4、5、6、7、8、9、10、20、30、40、50、100、200、300、400、500、600、700、800、900、1000、又は、2000、及び/又は、これらいずれかの値の間のいずれかの量であってもよい。いくつかの実施形態において、ストライドは1であってもよい。いくつかの実施形態において、ストライドは、1、2、3、4、5、6、7、8、9、10、20、30、40、50、100、200、300、400、500、600、700、800、900、1000、又は、2000、及び/又はこれらいずれかの値の間のいずれかの量であってもよい。いくつかの実施形態において、各畳み込みは、3つのフィルタを含んでいる。いくつかの実施形態において、各畳み込みは、1個、2個、3個、4個、5個、6個、7個、8個、9個、10個、20個、30個、40個、50個、100個、200個、300個、400個、500個、600個、700個、800個、900個、1000個、又は、2000個、及び/又はこれらいずれかの数の間のいずれかの個数のフィルタを含んでいる。いくつかの実施形態において、フィルタは、例えば、30、50、及び/又は90のサイズを含んでいてもよい。
いくつかの実施形態において、畳み込み層の後に、データは、一以上の完全に接続された層を通過する。いくつかの実施形態において、モデルは、2つの完全に接続された層を含んでいてもよい。いくつかの実施形態において、モデルは、1、2、3、4、5、6、7、8、9、10、20、30、40、50、100、200、300、400、500、600、700、800、900、1000、又は、2000、及び/又はこれらの数の間のいずれかの数の完全に接続された層を含んでいてもよい。いくつかの実施形態において、モデルは、それぞれ810個、及び256個のユニットを有する2つの完全に接続された層を含んでいてもよい。いくつかの実施形態において、各完全に接続された層は、1個、2個、3個、4個、5個、6個、7個、8個、9個、10個、20個、30個、40個、50個、100個、200個、300個、400個、500個、600個、700個、800個、900個、1000個、2000個、3000個、4000個、5000個、10000個、又は、25000個、及び/又はこれらの数の間のいずれかの個数のユニットを含んでいてもよい。
いくつかの実施形態において、余分な埋め込み次元は、複数の入力チャネルとして扱うことができる。いくつかの実施形態において、余分な埋め込み次元は、4つの入力チャネルとして扱うことができる。いくつかの実施形態において、余分な埋め込み次元は、1、2、3、4、5、6、7、8、9、10、20、30、40、50、100、200、300、400、500、600、700、800、900、1000、又は、2000、及び/又は、これらいずれかの値の間のいずれかの数の入力チャネルを含んでいてもよい。
過剰適合を回避するために、ネットワークはドロップアウトを使用して訓練されてもよい。ドロップアウトとは、特定のニューロンセットの訓練段階において、ランダムに選択され得るユニット(即ち、ニューロン)を無視することとすることができる。いくつかの実施形態において、これらの無視されたユニットは、特定の順方向又は逆方向パスで考慮されない。いくつかの実施形態では、各訓練段階において、個々のノードは、確率1-Pでネットワークからドロップアウトされるか、又は確率Pで維持され、削減されたネットワークが残り、ドロップアウトされたノードへの入力エッジ及び出力エッジも除去されてよい。いくつかの実施形態において、Pは約0.5である。いくつかの実施形態において、Pは、約0.05、約0.10、約0.15、約0.20、約0.25、約0.30、約0.35、約0.40、約0.45、約0.50、約0.55、約0.60、約0.65、約0.70、約0.75、約0.80、約0.85、約0.90、約0.95、又は、約1.00、及び/又はこれらいずれかの値の間である。
図7は、ここに記載するいくつかの実施形態による、ニューラルネットワークを使用した特徴抽出方法の例を示す図である。いくつかの実施形態において、入力コードを埋め込み、及びダウンサンプリングした後、前処理済みのコードは、ニューラルネットワーク608の入力層702に与えられる。上述したように、いくつかの実施形態において、ニューラルネットワークは、複数層の、特徴抽出及びデータ変換用線形又は非線形処理部を含んでいる。いくつかの実施形態において、ニューラルネットワークの連続する各層は、前の層からの出力を入力として使用する。したがって、いくつかの実施形態において、入力層702は、前処理済み入力コードに対してデータ変換を行い、その出力を第一の隠し層704に送信する。隠し層とは、入力層702と出力層708との間に存在するニューラルネットワークの層ということができる。「隠し」という文言は、隠し層が外部システムには見えず、ニューラルネットワークのプライベートであることを意味する。一般的には、所与の隠し層の出力はいずれも利用されないが、これは、当該出力が変換済みデータを含んでおり、この変換済みデータが使用されて、全隠し層を横断した後、最終的に出力層708から出力される結果を生成するのに使用されるからである。いくつかの実施形態において、ニューラルネットワークは、0以上の隠し層を含んでいてもよい。図示の実施形態では、ニューラルネットワークは、第一の隠し層704から第Nの隠し層706まで番号を付与された、N個の隠し層を含んでいる。いくつかの実施形態において、第Nの隠し層706は、ニューラルネットワークの出力層708の直前である最後から2番目の層を含んでいる。一般的なニューラルネットワークでは、出力層708は、ニューラルネットワークの目的に基づく出力分類を提供してもよい。この場合、出力層708は、入力コードがマルウェアを含むか否かの分類を提供してもよい。しかしながら、ここに記載されるシステム及び方法のいくつかの実施形態において、出力層708の結果は無視される。代わりに、第Nの隠し層706で生成された最終的な変換済みデータを、ニューラルネットワーク608から抽出し、別のより広範なマルウェア検出モデル710への特徴として使用してもよい。マルウェア検出モデル710は、第Nの隠し層706から抽出された特徴、及び/又は他の様々なソースからの特徴を入力として、コードがマルウェアであるか否かの最終判定を行ってもよい。いくつかの実施形態において、ニューラルネットワークの最終的なデータ変換によって、特により広範なマルウェア検出モデル710内の示唆特徴と組み合わせて、コードがマルウェアであるか否かを強く示唆することができる。

チャネルフィルタリング
図8は、ここに記載するいくつかの実施形態による、例示的なチャネルフィルタリングメカニズムを示す図である。上述したように、いくつかの実施形態において、入力コード602には境界がない。いくつかの実施形態において、入力コード602は、非常に短いコード列であってもよく、非常に長いコード列であってもよい。しかしながら、ニューラルネットワーク608の入力層702には固定サイズの入力が入力されなければならない。いくつかの実施形態において、入力層702は、入力として、例えば、5000個の埋め込みベクトルのサンプルをとってもよい。その場合、大きなコードセクションに対しては、いくつかの実施形態において、コードは、コードの5000サンプルまで削減又はダウンサンプリングされなければならない。これは種々の異なる方法で行える。いくつかの実施形態において、サンプルは、コードからマニュアルで、又は自動的に選択されてもよい。別の実施形態において、コードは、ブロックに分割され、次いで、例えば、サンプルとして各ブロックの平均応答を取ることによって、集約されてもよい。
しかしながら、いくつかの実施形態において、ダウンサンプリングの前に、コードに埋め込みを行ってもよく、このことはコードを実数のベクトルにマッピングするためのモデリング技術ということができる。一以上の次元を持つベクトル空間においてコードを表すことができる。埋め込みは、ニューラルネットワーク、共起行列、又は確率モデル等の種々の方法を用いて生成することができる。例えば、Word2Vecは、単語の埋め込みを生成するモデルで構成されている。これらモデルは、1つの入力層、1つの隠し層、及び1つの出力層を有する浅い2層ニューラルネットワークであってもよい。いくつかの実施形態において、埋め込みは、同様のコンテキストに存在するコードが、生成されたベクトル空間において互いにより近くなりやすくなるように、コードを再フォーマットする。いくつかの実施形態において、埋め込みによって、四次元ベクトル空間が生じる。ニューラルネットワークは、数値を入力として用いて機能するので、埋め込みステップが必要となることがある。いくつかの実施形態において、ニューラルネットワークは、畳み込み、加算、適合、及び/又は数値変換から得られる入力数値を取る。いくつかの実施形態において、ニューラルネットワークは、入力として生コードを用いるようには構成されていない。いくつかの実施形態において、コードを、有意の数値に変換し、その後ダウンサンプリングしてニューラルネットワークに入力するには、埋め込みを活用しなければならない。
図8を参照すると、複数のチャネル802A、802Bのそれぞれは、埋込ベクトル空間のベクトル層の1つを表すことができる。いくつかの実施形態において、各ベクトル層は非常に大きく、複数のブロック804A、804Bにさらに統合されなければならない。いくつかの実施形態において、各チャネル802A、802Bは、N個のブロックに統合されてもよい。チャネルがブロックに分けられると、フィルタ806を使用して、チャネル及びチャネル特定のブロックを表す応答値又はサンプルを生成してもよい。フィルタリングメカニズムの目的は、固定サイズのベクトル入力をニューラルネットワークに与えることである。いくつかの実施形態において、コードは、上述のように埋め込み層(例:Word2Vec)に入力され、インデックスによって表されるコード断片をベクトル表現にマップするための埋め込みテーブルを記憶してもよい。いくつかの実施形態において、埋め込みは、コードの表現を含んでいてもよく、類似するコード断片は類似する表現に割り当てられてもよい。言い換えると、埋め込みは、一以上の座標系におけるコードを表すことができ、関係のコーパスに基づいて関連するコード断片は、互いにより近接して配置される。
いくつかの実施形態において、埋め込まれたコードは、チャネルフィルタリングシステムに入力される。いくつかの実施形態において、チャネルフィルタリングシステムは、データのエイリアシングやアンダーサンプリングを回避するために、各チャネルのフィルタリング(例:平滑化)を実行してもよい。いくつかの実施形態において、フィルタ形状は、例えば、平滑化カーネル(例:ローパスフィルタ)、平均フィルタ(例:ボックスフィルタ)、又はガウスフィルタを含んでいてもよい。いくつかの実施形態において、フィルタ値の合計は1.0である。いくつかの実施形態において、フィルタは、各チャネルに対して一次元フィルタを含み、いくつかの又は全てのチャネルが同じフィルタ長を有している。いくつかの実施形態において、フィルタ長は、奇数を含むことができ、フィルタ長=1+2*floor(L/S*Alpha)として計算することができ、0<=Alpha<=Alpha_maxであり、Lはコード長であり、Sは最終サンプルサイズである。いくつかの実施形態において、Alpha_maxは1に等しくてもよい。いくつかの実施形態において、Alphaは0に等しくなるように選択されてもよく、これによりフィルタがデルタ関数と等価となる。
ニューラルネットワークに入力するための、応答値又は固定サイズのサンプルを生成するためのフィルタにはいくつかの形態がある。例えば、ブロック804A、804Bをフィルタリングするための関数が図9,図10、図11に示されている。図9は、ここに記載するいくつかの実施形態による、フィルタリングシステムの挙動を示すボックス関数の例を示す図である。図示される例では、-RからRまでの範囲の値がブロックから選択され、等しく重み付けされるが、範囲外の値は無視される。-RからRまでの範囲は、図示の例ではブロック全体を表すものと考えられる。このように、この範囲の代表値を推定することにより、サンプルのサイズを小さくできる。図示の実施形態では、ボックス関数を使用することにより、処理されるブロックコードの平均埋め込み値が得られる。
図10は、ここに記載するいくつかの実施形態による、フィルタリングシステムの挙動を示すガウス関数の例を示す図である。いくつかの実施形態において、ブロック804A、804Bをフィルタリングするために、ガウスフィルタを用いてもよく、推定埋め込み値が、統計における期待関数のように、ブロック中心に近い値に応じて大きく影響されるように、フィルタリングされたサンプルに-RからRの範囲の中央の値が含まれるようにフィルタリングしてもよい。
図11は、ここに記載するいくつかの実施形態による、フィルタリングシステムの挙動を示すデルタ関数の例を示す図である。本明細書の実施形態において、デルタ関数フィルタリングメカニズムは、単に、ブロック804A、804Bの中央値をフィルタリングされたサンプルとして選択するものであってもよい。
他にも多くのフィルタリングメカニズムがあり、当業者には周知である。ここに記載されるシステム及び方法では、任意のフィルタリングメカニズムを使用できる。いくつかの実施形態において、埋め込み及びフィルタリングのステップの結果は、ダウンサンプルされた埋め込みコードサンプルであり、特徴生成のためにニューラルネットワークに入力することができる。

マルウェア検出の向上
いくつかの実施形態において、ここに記載のシステム及び方法は、特徴を検出しマルウェア検出モデルに伝播させる。いくつかの実施形態において、抽出された特徴を用いることによって、マルウェア検出モデルの検出能力が大幅に向上することがある。例として、50万個の.NETファイルに対して偽陽性率0.04%(「有効」閾値)の精度をチェックすることによって、マルウェア検出モデルを評価した。この評価例において、単独で使用されるニューラルネットワーク(即ち、ネットワークの結果又は分類)は、有効閾値で76.1%の検出率を有することがわかった。マルウェア検出モデル単独での検出率は98.0%であることがわかった。ここに記載される自動特徴抽出システムで抽出された特徴を活用したマルウェア検出モデルは、検出率が98.5%であることがわかった。モデル単独ではマルウェアの約2%が検出されないが、特徴抽出を伴うモデルではマルウェアの約1.5%が検出されないため、0.5%の検出増加は25%の改善を表している。検出能力の増加がたとえ小さな増加であっても、大きなサイズのサンプルファイルにおけるマルウェア発見では、並外れた強化であり、上述のような増加は、マルウェア検出分野では非常に大きな増加である。また、100%に近い検出率を有するモデルをさらに改善することは非常に困難であり、上述のような改善によって、コンピュータユーザを、検出されずに通り抜けてしまうような、甚大な被害をもたらし得るソフトウェアから保護することができる。尚、偽陽性率の有効閾値が非常に厳格であるため、ニューラルネットワーク単独での検出率は比較的低い。科学記事の殆どが、より緩やかな偽陽性率を使用しており、検出の評価についても単純なデータセットを用いて行っている可能性が高い。

ランタイムテスト
別の例として、300個の.NETファイルに対してマルウェア検出モデルを実行することによって、ランタイムテストを行った。特徴抽出を行わない場合、当該テキストには4秒かかり、特徴抽出を行った場合は、当該テストには約6秒かかかった。全体として、ランタイムの約40%が特徴抽出を構成する。特徴抽出は、これまでに検出されなかったマルウェアの検出の大幅な向上を象徴するものであるため、この増加は許容可能とみなしてもよい。

位置独立コード検出
本開示のさらなる技術、特徴及び態様は、悪意のある実行可能コードを識別し、フラグを立て、及び/又は検出するための技術に関する。具体的には、オペレーティングシステムAPIを異常な方法での活用を試みる悪意あるソフトウェアを識別し、フラグを立て、及び、検出する必要がある。

導入
いくつかの実施形態において、ここに記載されるシステム及び方法は、監視下の関数を独立して見つけて呼び出すコードの断片を検出してもよい。いくつかの実施形態において、ここに記載されるシステム及び方法は、静的インポート又は動的インポートなどの従来の手法を使用することなく、監視下の関数のアドレス取得を試みるコードの断片を検出するために使用してもよい。多くの場合、攻撃者はオペレーティングシステムAPI関数(「OS API関数」)を、例えば、独立して判断され、呼び出される可能性がある(一以上の正規でない方法でこれらの関数を見つける)、相関エクスポートされた関数アドレスを介して使用する。例えば、攻撃者は、何らかの脆弱性の悪用に成功した後、継承された異常状態でこれらの関数の利用を試みる可能性がある。或いは、攻撃者は、コンピュータセキュリティ製品による攻撃者の検出が困難となるように、動作の隠蔽を試みる可能性がある。したがって、本明細書のシステム、方法、及びデバイスは、ライブラリ関数、及び/又は、関数アドレスに対するアクセスを独立して取得しようとする攻撃者を識別するように設計されていてもよい。
いくつかの実施形態において、ここに記載のシステム及び方法は、ライブラリ関数の正当な取得を識別するプロセスを通じてマルウェア又はその他の攻撃者を検出する積極的なトラップに関連、及び/又は含んでいてもよい。いくつかの実施形態において、トラップは、オペレーティングシステムに埋め込まれている。いくつかの実施形態において、トラップは、マルウェアによってトリガーされるか、又は組み込まれてもよく、こうすることにより、ここに記載するライブラリ位置独立実行可能コード検出のための方法及びシステムが、マルウェアにフラグを立てるか、識別することを可能にする。いくつかの実施形態において、ここに記載されるトラップは、攻撃者のシステム関数又はリソースへのアクセス取得の試みを利用してもよい。特に、ここに記載されるトラップは、ここに記載するトラップは、非従来型、不規則、非定型、異常、或いは、不審な方法を使用してライブラリ関数へのアクセスを試みる攻撃者を検出することができる。いくつかの実施形態において、ここに記載されるトラップは、システム関数を監視して、これらが従来の方法によってアクセスされていないと判断することにより、非従来型の方法を使ってライブラリ関数にアクセスする攻撃者を検出してもよい。いくつかの実施形態において、ここに記載されるトラップは、システム関数及びリソースを特定して呼び出すための従来の方法は数が限られている点を利用して、消去法を使用して非従来型呼び出しを検出してもよい。
いくつかの実施形態において、「トラップ」の技術的利点は、通常、良性のコード部分が、直接的又は間接的に、オペレーティングシステムのローダを使用するということから生じる。そのため、ローダの使用が監視されている場合は、一部のローダAPI関数API関数の実行がマークされ、監視され、及び/又は良性又は非良性として分類される。したがって、ローダを使用せずに関数のアドレスを決定する攻撃者(例えば、通常は強制的に「位置独立型」とされる、不正利用成功後に実行された初期コード)を識別することができる。位置独立コードの実装例は、既知の関数パターンを探す全プロセスのメモリを走査し、PEB構造を解析し、関連する関数アドレスを手動で見つけることを含む場合がある。
いくつかの実施形態において、従来の検出方法は、攻撃者が既知の手法を使ってアドレスを見つけることを想定する場合がある。しかしながら、ここに記載するシステム及び方法のいくつかの実施形態は、関数位置を取得する特定の技術の検出に依存しない。代わりに、ここに記載されるシステム及び方法のいくつかの実施形態は、従来の関数配置手法を監視し、従来のインポート手続きを踏まずにシステム関数を実行するコードの一部又は全てにフラグを立て、及び/又は削除してもよい。
例えば、とりわけWindows、MacOS、Linuxを含むオペレーティングシステムでは、オペレーティングシステムのローダ(例えば、Windows Loader)(「ローダ」)がラッピングされた実行可能コードを管理するために必要な情報をカプセル化できる実行可能なファイル形式(例:ポータブル実行可能形式)を定義している場合がある。
実行ファイルは、マシン内の他の実行ファイルとの間で関数及び/又はデータ(「シンボル」)をインポート/エクスポートすることがある。シンボルのインポートプロセスは、実行可能ファイルがシンボルを容易にインポート/エクスポートできるように、ローダによって実装されることがある。ローダは、シンボルインポートプロセスでの事前要求を一部又は全て処理することがある。
いくつかの実施形態において、実行ファイル(「コード」)内のコードの一部は、ローカルで実行可能である。即ち、同一の領域及び/又は実行可能ファイル内に位置するコードを実行することができる。いくつかの実施形態において、コードは、例えば、実装済みでしたがって別の実行ファイルに配置されている関数を呼び出すことにより非ローカルで実行することができる。いくつかの実施形態において、これらの非ローカル関数を呼び出すために、コードは、対象の関数の位置(即ち、関数の仮想アドレス)を判断する必要がある。コードは、以下に説明する一以上の方法によって、対象関数の仮想アドレスを特定できる。
いくつかの実施形態において、実行ファイル内のコードは、ローダAPIを直接使用してアドレスを特定することができる(「動的呼び出し」)。いくつかの実施形態において、ローダは関数のセットを、自身の実行可能ライブラリにエクスポートする。これにより、いずれのコードでも、有効な実行可能ファイルから情報を動的にロードし、取得できるようにする。したがって、実行ファイルのコードは、このAPIを使用して必要となる実行ファイルをロード又は特定し(例:ローダと相互に作用する「LoadLibraryA」又は「GetModuleHandleA」APIの呼び出しを使用)。その後対象となるエクスポートされたシンボルを特定する(例:「GetProcAddress」を使用)。いくつかの実施形態において、コードは、ローダAPIを介して仮想アドレスを特定するために使用する上述した関数のアドレスを含んでいる。
いくつかの実施形態において、コードは、ローダを暗黙的に使用して関数の仮想アドレスを特定することができる(「静的呼び出し」)。いくつかの実施形態において、実行可能ファイルには、(例えば、PE形式の仕様の一部として)どのシンボル及びライブラリが実行ファイルのロード及び実行に必要であるかが定義されている。いくつかの実施形態において、シンボル及びライブラリは、実行ファイルが実行されている間に、これらを例えば上述した動的呼び出しの手法により、特定されたシンボルの明示的なロード及び取得を伴うことなく利用できるように、実行ファイルの初期化プロセスの一環としてロードしてもよい。いくつかの実施形態において、静的呼び出しを使用して、インポートされた関数のアドレスを、例えば、インポートアドレステーブル(以下、「IAT」)のエントリ内の特定済み実行ファイルに記憶する。いくつかの実施形態において、実行ファイルのロード段階が終了した後、実行ファイルは、インポートされた関数を、これら関数の位置を明示的に把握することなく、IATテーブルを用いて間接的に呼び出すことができる。
いくつかの実施形態において、コードは独立して関数のアドレスを判断してもよい(「独立呼び出し」)。いくつかの実施形態において、コードは、静的呼び出し又は動的呼び出しを使用することなく、対象の関数のアドレスを判断することができる。いくつかの実施形態において、対象の関数アドレスを見つけるために、コードは以下を行ってもよい。(a)対象のシンボル又は必要なモジュールのアドレスを見つけ、PEモジュールに含まれる情報を使用して対象の関数のアドレスを推測する、又は、(b)対象の関数をカプセル化する他の関数を使用する。いくつかの実施形態において、仮にコードが一以上の特定のローダ関数のアドレスを判定できるとすれば、当該コードは、動的呼び出しの手法を用いて、あらゆるモジュールのあらゆる関数のアドレスも判定でき、またこれらの関数を用いてあらゆる実行可能モジュール、及びこれ含まれる関数のアドレスを取得することができる。
関数のアドレスを独立して判定するには、多くの方法を使用して達成してもよい。ただし、これを行ういくつかの既知の方法をいかに記載する。いくつかの実施形態において、コードは内部のオペレーティングシステム構造データを用いて独立的にアドレスを特定してもよい。例えば、ローダはプロセスの実行中に、内部データ構造を維持し、使用する。これらのデータ構造には、ローダが正常に且つ効率的に機能するために必要となるデータと情報が含まれていてもよい。これらのデータ構造の中には、シンボルがどこに位置しているかを判定するために使用され得るいくつかのデータ構造が含まれていてもよい。例えば、アプリケーションは、プロセス環境ブロック(「PEB」)を使用することができる。ローダーは、ロードされたモジュールに関する情報を維持するためなど、多くの目的でPEBを使用してもよい。したがって、コードは必要な実行ファイルのアドレスを取得し、その後関数アドレスを取得する、或いは、上述したようにローダに関する関数を取得することができる。
いくつかの実施形態において、悪意のあるコードは、ヒューリスティックアプローチを使用して対象の関数のアドレスを取得することがある。ロードされたモジュールのアドレス、又は関数の位置を判定するためのヒューリスティック方法は数多く存在することがある。例えば、仮想アドレス空間には、NTDLL.DLL(多くのローダの実装コードを保持する実行ファイル)等のオペレーティングシステムに関するモジュールを示すポインタが含まれていることがある。悪意のあるコードは、実行ファイルのヘッダが見つかるまで、ページ替えされたページを逆に読むことで、モジュールベースのアドレスを検索できる。最後に、悪意のあるコードは、エクスポートされたローダ関数を見つけ、それらを利用して関連するシンボルを見つけ/ロードする可能性がある。
ここに記載する監視下の関数は、独立して関数のアドレスを取得する試みを監視する関数を含んでいてもよい。いくつかの実施形態において、ここに記載するインポートアドレステーブル(IAT)のコードは、実行ファイルE内のシンボルSについて、シンボルSに対応する(実行可能ファイルEの)IATエントリを用いた間接呼出しにより実行されるコードの断片を含んでいてもよい。IATコードは、呼び出しを静的呼び出しとしてマーキングするために利用してもよい。ここに記載するように、迂回コードは、シンボルSについて、関数Sの実行を迂回するコードの断片を含んでいてもよい。迂回コードを利用することにより、このコード、関数を呼び出す方法が検査されてもよい。

実装
コードが、いつ独立呼び出しを利用して、監視下の関数のアドレスを取得するかを検出するために、ここに記載のシステム、方法、及びデバイスのいくつかの実施形態は、監視下の関数の正当な静的呼び出し及び動的呼び出しを識別してもよい。いくつかの実施形態において、静的呼び出し及び動的呼び出しを識別することで、ここに記載のシステム、方法、及びデバイスは消去法によって監視下の関数の独立呼び出しを検出してもよい。
いくつかの実施形態において、静的呼び出し、動的呼び出し、及び、ローカル呼び出しを検出するために監視下の関数を実装してフローを変更してもよい。いくつかの実施形態において、ここに記載されるシステム及び方法は、以下のうちの一以上を行ってもよい。(1)IATスタブの変更、(2)迂回コードで監視下の関数を迂回、(3)全てのモジュールが実装されているかの確認(各ロード済みモジュール及び新たにロードされるモジュールに対して、関連するデータ構成を実装して、将来の呼び出しが検出システムのフローへリダイレクトされるようにしてもよい)、(4)監視下の関数に対する各呼び出しを監視し、呼び出し元が関数に直接アクセスしてるかをチェック(即ち、良性のフローとして考慮される静的/動的/ローカルフローを介していないどうか)。いくつかの実施形態において、異常な手続きを使用して(即ち、静的呼び出し/動的呼び出し/ローカル呼び出しを使用せずに)監視下の関数のアドレスを取得する攻撃者は、フレームを含まない可能性があり、ここに記載のシステム及び方法で攻撃者を識別することが可能となる。

静的フロー
いくつかの実施形態において、静的フローとは、コードが、静的呼び出しを使用して外部実行ファイル(例:監視下の関数)に対して関数の呼び出しを開始することを表している。上述したように、コードは、対応するIATテーブルのエントリを使用して間接的に呼び出しを開始してもよい。静的呼び出しを検出するために、監視下の関数のセットに関連するIATテーブルのエントリを一部又は全て、フローがIATコードに変更されるように実装してもよい。いくつかの実施形態において、IATコードは、静的呼び出しを検出し、関連するデータ構造を更新し、元の対象の関数にフローを戻すことができる。
図12は、ここに記載するいくつかの実施形態による、静的リンクプロセスの例を示す図である。いくつかの実施形態において、インポートモジュール1202は、静的リンクフローを使用して、インポートされたモジュール1204からインポートされたシンボルを取得してもよい。いくつかの実施形態において、インポートモジュール1202、及びインポートされたモジュール1204の両方が、モジュールヘッダ1206、NTヘッダ1208、及び種々のオプションヘッダ1210を含んでいてもよい。いくつかの実施形態において、オプションヘッダ1210は、とりわけ、エクスポートデータディレクトリ1212、インポートデータディレクトリ1214、及び/又はインポートテーブルディレクトリ1216を含んでいてもよい。いくつかの実施形態において、インポートデータディレクトリ1214は、インポートされたモジュール1204から一以上のエクスポートされたモジュールのデータ及びコード1230をインポートするために使用され得るモジュールデータ及びコード1218のインポートを指し示す。いくつかの実施形態において、インポートモジュールデータ及びコード1218は、インポート名1222、関数名1224、及び関数アドレス1226を含むインポート記述子1220を含んでいてもよい。インポート関数コード1228は関数アドレス1226と組み合わせて、インポートされた関数1204からインポートされた関数を呼び出すために使用できる。この情報は、インポートされたモジュール1204のエクスポートデータディレクトリ1212から取得することができる。インポートデータディレクトリ1216と同様に、エクスポートデータディレクトリはエクスポートディレクトリ1232を指し、これにはエクスポート名1234、関数名1236、及び/又は関数アドレス1238が含まれる。エクスポートデータディレクトリ1214は、インポートされたモジュール1204内のエントリポイントへのインポートを解決するために使用されるデータを指し示す。エクスポート関数コード1240を関数アドレス1238と組み合わせて使用して、インポートモジュール1202にアドレスを提供してもよい。前述したように、静的フローは、実行ファイルの初期化プロセスの一環として発生し得るものであり、実行ファイルが実行中に、例えば上述した動的呼び出しの手法によって、明示的に特定のシンボルをロード又は取得することなく、インポートされたシンボルを使用できるようにする。いくつかの実施形態において、静的呼び出しを使用して、インポートされた関数のアドレスを、例えば、インポートアドレステーブル(例:関数アドレス1226。以下、「IAT」)のエントリ内の特定済み実行ファイルに記憶する。いくつかの実施形態において、実行ファイルのロード段階が終了した後、実行ファイルは、インポートされた関数を、これら関数の位置を明示的に把握することなく、IATテーブルを用いて間接的に呼び出すことができる。いくつかの実施形態において、エクスポート関数コード1240は、指定されたエクスポート関数のコードを含んでいる。いくつかの実施形態において、モジュール1202がコンパイルされると、コンパイラは、IATで特定の値を把握することなく、IATを使用するコード断片を生成する。いくつかの実施形態において、オペレーティングシステムによって実装される実行ファイルであるローダは、モジュール1202に対する特定の値でIATを満たす。
図13は、ここに記載するいくつかの実施形態による、ライブラリに依存しないコード検出システム及び静的リンクプロセスの例示的な方法を示す図である。いくつかの実施形態において、静的呼び出しを監視するために、フッキングエンジン1242が利用される。いくつかの実施形態において、インポートモジュール1202が、インポートされたモジュール1204、即ち監視下の関数のインポートされた関数アドレス1238の取得を試みると、システム及び方法は、元の関数アドレス1238の改変アドレスへの置き換えを伴ってもよい。したがって、いくつかの実施形態において、インポートされた関数アドレス1238をIATテーブル1226にロードしたあと、改変アドレスが提供され、ロードされたインポートモジュール1202に提示される。いくつかの実施形態において、実行時にインポートモジュール1202が、監視下の関数の呼び出しを試みると、元の関数アドレスを介して元の関数を呼び出す代わりに、改変関数アドレスが当該呼び出しをフッキングエンジン1242へリダイレクトする。いくつかの実施形態において、実行中、改変関数アドレスが、監視下の関数を呼び出すために使用される場合、呼び出しは、代わりにフッキングエンジン1242のトランポリンコード1246にリダイレクトされる。いくつかの実施形態において、トランポリンコードは、改変関数アドレスが呼び出されたことを検証し、インポートモジュール1202が静的呼び出しを介して関数アドレスを取得したことを検証する。そのため、いくつかの実施形態において、当該呼び出しは1244において、有効な呼び出しとしてマークされる。有効な呼び出しとしてマークした後、トランポリンコードは、実行のために、当該呼び出しを監視下の関数のアドレスにリダイレクトして戻してもよい。トランポリンに加えて、エクスポート関数コード1240は、改変された関数の実行をフッキングエンジン1242に迂回させるように変更されてもよい。このようにして、いくつかの実施形態において、監視下の関数を実際に実行する前に、呼び出しは、フッキングエンジン1242内の迂回コード1248に迂回され、呼び出しが検証される。いくつかの実施形態において、呼び出しが検証された後、フローは、実行のために元の監視下の関数に戻される。いくつかの実施形態において、迂回機能は、以下に説明する動的フローの一態様を含んでいてもよい。

動的フロー
いくつかの実施形態において、動的フローとは、コードが動的呼び出しを使用して外部実行ファイルに対して関数の呼び出しを開始することを表している。動的な場合、実行ファイルはランタイム時に外部対象アドレスを取得してもよい。この場合、実行ファイルはローダに対して外部の対象(対象のモジュールと関数の両方)がどこにあるかを問い合わせてもよい。いくつかの実施形態において、上述のように、コードは、ローダAPI関数を使用して関数のアドレスを判定した後、対象の関数に対する呼び出しを開始してもよい。いくつかの実施形態において、動的呼び出しを検出するために、本明細書のシステム及び方法は、関連するローダAPI関数を制御してコードに情報(「Resolving Function(解決関数)」)を提供する。いくつかの実施形態において、制御は、解決関数を迂回させ、対応するシンボルのトランポリンコード1246に対する戻り値を改変することによって実施されてもよい。上述の方法を使用して、いくつかの実施形態において、コードが、監視下の関数の戻されたアドレスを呼び出すと、当該呼び出しが迂回コード1248にリダイレクトされる。
いくつかの実施形態において、動的フローにおいて、外部ライブラリ(共有ライブラリ)の名称は最終的な実行可能ファイルに配置されるが、実行可能ファイルとライブラリの両方がメモリに配置されるランタイム時に実際のリンクが行われる。動的フローは、いくつかのプログラムに、実行可能モジュールの単一のコピーを利用させる。
図15は、ここに記載するいくつかの実施形態による、動的フロープロセスの例を示す図である。図示する例において、呼出し元1502(即ち、インポートモジュール1202)が、ランタイム時にモジュール1510を取得する必要がある場合、種々のAPI、例えば、GetModuleHandle 1506を介して取得してもよい。API1506を使用して、とりわけN個のモジュール1510、1512、及び1514を含み得るローダ内部レコード1508からモジュールハンドルを取得してもよい。さらに、所望の関数アドレスは、APIのGetProcAddress 1504を使って動的に取得してもよい。しかしながら、いくつかの実施形態において、APIを使って動的に関数を取得するには、呼出し元1502は関連するモジュールがどこに位置しているかを把握していなければならない。動的フローを監視するために、GetProcAddress 1504を含む、ローダに関連する関数のリターンアドレスを制御してもよい。したがって、ここに記載のシステム及び方法は、リターンアドレスを制御するように構成されていてもよく、これは例えば元々の関数アドレス、又は、トランポリンコードであってもよい。
図16は、ここに記載するいくつかの実施形態による、ライブラリに依存しないコード検出システム及び動的フロープロセスの例示的な方法を示す図である。いくつかの実施形態において、ローダAPI(例:GetProcAddress)は、動作のフローをフッキングエンジン1242に向けるように、ここに記載のシステム及び方法によって改変することができる。特に、いくつかの実施形態において、インポートモジュール1202がランタイム時にGetProcAddressを使用する際に、元々のインポートされた関数アドレスの代わりに、インポート関数をGetProcAddressトランポリンコード1602に向けてもよい。GetProcAddressトランポリンコード1602は、さらに、フローをGetProcAddress迂回コード1604に向けてもよい。インポートモジュール1202が、静的にリンクされた関数APIを使用して監視下の関数を取得した場合、GetProcAddress迂回コード1604は、フローを、静的フローに関して上述した関数名トランポリン1246へリダイレクトしてもよい。関数名トランポリン1246は、関数の呼び出しが動的に行われたことを示すGetProcAddressトランポリンコード1602及びGetProcAddress迂回コード1604を通過するので、関数呼び出しが良性であることを検証することができる。静的フローと同様に、一旦検証が行われると、トランポリンコード1246は検証後に元の関数を呼び出すことができる。図14に示すように、検証データは、呼び出しデータベース1254に記憶されてもよい。また、静的フロー同様に、関数の実行前に、エクスポート関数コード1240を改変して、実行を迂回コード1248に迂回させて、呼び出しの良性をさらに検証してもよい。迂回コード1248が完了した後、フローは元の関数の実行に戻されてもよい。

不審なフロー
図14は、ここに記載するいくつかの実施形態による、ライブラリに依存しないコード検出システムの例を示す図である。図14は、いくつかの実施形態において、特にフッキングモジュールが、どのようにして、不審なコードによる独立的な関数へのアクセスの試みを検出するかを例示している。いくつかの実施形態において、例えば、不審なコード1250は、静的又は動的フローを介して対象の関数の取得を試みること、)インポートされたモジュール1204内のメタデータ(即ち、エクスポートされたヘッダ)を使って対象の関数を見つける試み、2)ローダの内部レコード1252から直接対象のディレクトリを見つける試み、3)対応するトランポリンを介さずに直接対象の関数を呼び出す試みを回避することがある。いずれの場合も、いくつかの実施形態において、不審なコードは、IATテーブル又はローダを介して監視下の関数がロードされた際に、エクスポート関数コード1240の改変アドレスを取得しない。したがって、いくつかの実施形態において、実行時に不審なコードからの呼び出しはトランポリンコード1246にリダイレクトされず、ローダを用いた呼び出しとして検証されない。しかしながら、いくつかの実施形態において、エクスポート関数コード1240を用いて関数を実行しても、呼び出しはフッキングエンジン1242の迂回コード1248に迂回させられる。したがって、いくつかの実施形態において、フッキングエンジンが、迂回コード1248において、呼び出しがトランポリンコード1246をトリガーしなかったため、標準的な(例:静的/動/ローカル)フローを介して完了しなかったことを実証する。したがって、不審なコード1250は、悪意の可能性があるとして、システムによってフラグが立てられる。いくつかの実施形態において、迂回コード1248は、監視下の関数が(動的、静的、又は間接的のいずれかによって)呼び出されたときのみに実行されるコード断片を表している。これは、本明細書のシステムが、対象の関数を改変するために発生する。したがって、トランポリンコード1246を含むいかなる実行ファイルが、エクスポートされた関数の呼び出しを試みても、迂回コードが実行される。

ローカルフロー
前述したように、コードはまたローカル呼び出しを開始することもある。したがって、いくつかの実施形態において、静的呼び出しも動的呼び出しもコードによって開始されないことがあるが、呼び出し元が、同一の実行ファイル又は領域内の対象の関数アドレスを把握しているため、独立呼び出しの必要はない。ローカル呼び出しされた関数と、独立呼び出しとを区別するために、ここに記載のシステム、方法、及び、デバイスのいくつかの実施形態では、迂回コードを監視して、リターンアドレスが監視下の関数と同一の実行ファイル/モジュールに位置しているかを判定してもよい。いくつかの実施形態において、リターンアドレスが監視下の関数と同一の実行ファイル/モジュールに位置している場合、呼び出しは、不審な独立呼び出しではなく、ローカル呼び出しとして判定されてもよい。
したがって、トランポリンコード、迂回コードの使用、及び/又は、IATテーブル及び静的にリンクされたAPIの改変を通じて、監視下の関数へのアクセスを検証してもよい。実行ファイルが、静的、動的、又は、ローカル呼び出しを使わずに監視下の関数へアクセスすると判断した場合、フッキングエンジンによって、不審又は悪意あるとしてフラグが立てることができ、マルウェア検出ソフトウェアによってさらに評価されてもよい。

コンピュータシステム
いくつかの実施形態において、ここに記載のシステム、プロセス、及び、方法は図17に例示されるようなコンピュータシステムを用いて実施される。例示的なコンピュータシステム1702は、一以上のネットワーク1718を介して、一以上のコンピュータシステム1720、及び/又は、一以上のデータソース1722と通信状態にある。図17が、コンピュータシステム1702の実施形態を例示する一方、コンピュータシステム1702のコンポーネント及びシステムにおいて提供される機能は、より少ないコンポーネント及びシステムに結合可能であり、或いは、さらに別のコンポーネント及びシステムに分割可能であることが認識できるであろう。

コンピュータシステムのコンポーネント
コンピュータシステム1702は、ここに記載する機能、方法、作用、及び/又はプロセスを実施するマルウェア及びコード検出システム1714を含んでいる。コンピュータシステム1802は、以下でさらに記載する中央処理ユニット1706によってコンピュータシステム1702上で実行されるマルウェア及びコード検出システム1714を含んでいてもよい。
一般的に、本明細書で使用する「システム」という文言は、ハードウェア又はファームウェアで具現化されるロジック、又は、入り口と出口を有するソフトウェア指示の集合体を意味する。システムは、JAVA、C、又はC++等のプログラム言語で記述される。ソフトウェアシステムは、コンパイルされてもよく、動的リンクライブラリにインストールされた実行可能プログラムにリンクされてもよく、又は、BASIC、PERL、PHP、Python等のインタプリタ言語や、これらのような言語で記述されてもよい。ソフトウェアシステムは、他のシステムから、又は、自身から呼び出すことが可能であり、及び/又は、イベント又は割り込みの検出に応じて呼び出されてもよい。ハードウェアに実装されるシステムは、ゲートやフリップフロップ等の接続されたロジックユニットを含んでおり、及び/又は、プログラム可能なゲート配列又はプロセッサ等のプログラム可能ユニットを含むことができる。
一般的に、本明細書で記載するシステムは、他のシステムと組み合わせ可能な、又は、物理的な組織やストレージに関わらず、サブシステムに分割可能なロジックシステムを意味する。システムは、一以上のコンピュータシステムによって実行され、任意の適切なコンピュータ読取り可能な媒体に記憶可能であり、又は、特別に設計されたハードウェア又はファームウェアで全体又は一部を実施可能である。上述した方法、計算、プロセス、解析はコンピュータを使用することによって容易になるが、全ての計算、解析、及び/又は、最適化にコンピュータシステムの使用が求められるわけではない。さらに、いくつかの実施形態において、本明細書で記載するプロセスブロックは、変更、再配置、結合、及び/又は省略されてもよい。
コンピュータシステム1702は、マイクロプロセッサを含む一以上の処理部(CPU)1706を備えている。コンピュータシステム1702は、さらに情報を一時的に記憶するランダムアクセスメモリ(RAM)、情報を恒久的に記憶する読取り専用メモリ(ROM)などの物理メモリ1710、及び、補助記憶装置、ハードドライブ、回転磁気ディスク、ソリッドステートディスク(SSD)、フラッシュメモリ、相変化メモリ(PCM)、3D XPointメモリ、ディスケット、又は光学媒体記憶装置などの大容量記憶装置1704を備えている。或いは、大容量記憶装置は、サーバアレイに実装することができる。一般的には、コンピュータシステム1702のコンポーネントは規格に基づくバスシステムを使ってコンピュータに接続されている。バスシステムは、Peripheral Component Interconnect (PCI) 、Micro Channel、SCSI、Industrial Standard Architecture (ISA) 、Extended ISA (EISA)アーキテクチャ等、種々のプロトコルを使用して実装できる。
コンピュータシステム1702は、キーボード、マウス、タッチパッド、プリンタ等の一以上の入力/出力(I/O)デバイス及びインターフェース1712を備えている。I/O装置及びインターフェース1712は、ユーザに対するデータの視覚的提示を可能にするモニター等の、一以上の表示装置を備えている。より詳細には、表示装置はアプリケーションソフトウェアデータのGUIの表示、及びマルチメディアの表示を行う。I/O装置及びインターフェース1712は、また種々の外部装置に対して通信インターフェースを提供できる。コンピュータシステム1702は、例えば、スピーカ、ビデオカード、グラフィックアクセラレータ、マイクロフォン等の、一以上マルチメディア装置1708を備得ることができる。

コンピュータシステムデバイス/オペレーティングシステム
図17は、マルウェア及びコード検出システムの一以上の実施形態を実施するソフトウェアを実行するように構成されたコンピュータハードウェアシステムの実施形態を示すブロック図である。
コンピュータシステム1702は、サーバ、Windowsサーバ、SQLサーバ、Unixサーバ、パーソナルコンピュータ、ノートパソコン等、種々のコンピュータデバイスで実行できる。他の実施形態において、コンピュータシステム1702は、クラスターコンピュータシステム、メインフレームコンピュータシステム、及び/又は、大規模データベースの制御及び/又は通信、大容量トランザクション処理の実行、及び大規模データベースからのレポートの生成に適した他のコンピューティング・システムで実行できる。コンピュータシステム1702は、一般的にz/OS、Windows、Linux、UNIX、BSD、SunOS、Solaris、MacOS、又は独自のオペレーティング・システムを含む他の互換性のあるオペレーティングシステムによって、制御・調整される。オペレーティングシステムは、実行されるコンピュータプロセスを制御及びスケジュールし、メモリを管理し、ファイル・システム、ネットワーキング及びI/Oサービスを提供し、とりわけグラフィカルユーザインターフェース(GUI)などのユーザインターフェースの提供を行う。

ネットワーク
図17に示すコンピュータシステム1702は、通信リンク1716(有線、無線、又はこれらの組み合わせ)を介して、LAN、WAN、又はインターネットなどのネットワーク1718に接続される。ネットワーク1718は、様々なコンピュータデバイス及び/又は他の電子デバイスと通信する。ネットワーク1718は、一以上のコンピュータシステム1720、及び一以上のデータソース1722と通信する。コンピュータシステム1702は、コンピュータシステム1720、及び/又はデータソース1722がウェブ対応のユーザアクセスポイントを介してアクセスできるマルウェア及びコード検出システム1714を含んでいる。接続は、直接的な物理的接続であってもよく、仮想的接続、その他のタイプの接続であってもよい。ウェブ対応のユーザアクセスポイントは、テキスト、グラフィックス、オーディオ、ビデオ、及び他のメディアを使用してデータを提示し、ネットワーク1718を介してデータとの相互作用を可能にするブラウザシステムを含んでいてもよい。
出力システムは、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、又は他のタイプ、及び/又はディスプレイの組み合わせ等、全点アドレス可能ディスプレイの組み合わせとして実施することができる。出力システムは、入力デバイス、及び/又はインターフェース1712と通信可能に実施することができ、また、ユーザがメニュー、ウィンドウ、ダイアログボックス、ツールバー、コントロール等の定型化された画面要素を使用してデータにアクセスできるようにする適切なインターフェースを備えたソフトウェアも含んでいる。さらに、出力システムは、入出力デバイスのセットと通信して、ユーザからの信号を受信することができる。

その他のシステム
コンピュータシステム1702は、一以上の内部及び/又は外部データソース(例:データソース1722)を含んでいてもよい。いくつかの実施形態において、一以上のデータリポジトリ、及び上述したデータソースは、DB2、Sybase、Oracle、CodeBase、Microsoft(登録商標)SQLサーバ、及びフラットファイルデータベース等のその他のデータベース等のリレーショナルデータベース、エンティティリレーションシップデータベース、オブジェクト指向データベース、及び/又は、レコードベースのデータベースを用いて実施することができる。
コンピュータシステム1702は、一以上のデータソース1722にアクセスすることもできる。データソース1722は、データベース又はデータリポジトリに格納することができる。コンピュータシステム1702は、ネットワーク1718を介して、一以上のデータソース1722にアクセス可能であり、又は、I/O装置及びインターフェース1712を介してデータベース又はデータリポジトリにアクセス可能である。一以上のデータソース1722を格納するデータリポジトリは、コンピュータシステム1702内に存在してもよい。

URLとCookie
いくつかの実施形態において、ここに記載されるシステム、方法、及びデバイスの一以上の特徴は、例えば、データ又はユーザ情報を格納。及び/又は送信するために、URL、及び/又はCookieを利用することができる。URL(Uniform Resource Locator)は、Webアドレス及び/又はデータベース及び/又はサーバに格納されるWebリソースへの参照を含むことができる。URLは、コンピュータ及び/又はコンピュータネットワーク上のリソースの場所を指定することができる。URLは、ネットワークリソースを検索するメカニズムを含んでいてもよい。ネットワークリソースのソースは、URLを受け取り、Webリソースの場所を識別し、Webリソースを要求者に送信して戻すことができる。URLはIPアドレスに変換でき、ドメインネームシステム(DNS)はURLとそれに対応するIPアドレスを検索できる。URLは、Webページ、ファイル転送、電子メール、データベースへのアクセス、及びその他のアプリケーションへの参照となり得る。URLは、パス、ドメイン名、ファイル拡張子、ホスト名、クエリ、フラグメント、スキーム、プロトコル識別子、ポート番号、ユーザ名、パスワード、フラグ、オブジェクト、リソース名、及び/又はこれらに類似する物を識別する一連の文字を含むことができる。ここに開示されるシステムは、URLに対してアクションを生成、受信、送信、適用、解析、直列化、レンダリング、及び/又は実行することができる。
HTTP Cookie、ウェブCookie、インターネットCookie、及びブラウザCookieとも称されるCookieは、ウェブサイトから送信されるデータ、及び/又はユーザのコンピュータに格納されるデータを含むことができる。このデータは、ユーザが閲覧している間にユーザのウェブブラウザによって格納することができる。Cookieは、オンラインストアのショッピングカート、ボタンのクリック、ログイン情報、及び/又は過去に訪問したウェブページ又はネットワークリソースの記録等、ウェブサイトが以前の閲覧情報を記憶するために有用な情報を含むことができる。Cookieはまた、ユーザが入力する情報、例えば名前、住所、パスワード、クレジットカード情報などを含むことができる。Cookieは、コンピュータ機能も実行可能である。例えば、認証Cookieをアプリケーション(ウェブブラウザなど)で使用して、ユーザが(ウェブサイト等に)すでにログインしているかどうかを識別できる。Cookieデータは、暗号化することによって、消費者にセキュリティを提供できる。追跡Cookieを使用すると、個人の過去の閲覧履歴を収集できる。ここに開示されるシステムは、個人のデータにアクセスするためにCookieを生成し、使用することができる。システムはまた、認証情報を保存するJSONウェブトークン、認証プロトコルとしてのHTTP認証、セッション又は識別情報を追跡するIPアドレス、URL等を生成し、使用することもできる。

別の実施形態
上述の明細書では、本発明をその特定の実施形態を参照して説明した。しかしながら、本発明のより広範な精神及び範囲から逸脱することなく、様々な修正及び変更を行うことができることは明らかである。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味でみなされる。
実際、本発明は、特定の実施形態及び実施例に関連して開示されてきたが、本発明は、具体的に開示された実施形態を超えて、本発明の他の代替の実施形態、及び/又は使用、ならびにその明らかな変形例及び均等物に拡大することが当業者には理解されよう。さらに、本発明の実施形態のいくつかの変形例を示し、詳細に説明したが、当業者には、本開示に基づいて、本発明の範囲内にある他の変形例が容易に明らかになるであろう。また、実施形態の特定の特徴及び態様の様々な組合せ、又は部分的な組合せが行われてもよく、依然として本発明の範囲内にあると想定される。開示された実施形態の様々な特徴及び態様は、開示された発明の実施形態の様々なモードを形成するために、互いに組み合わされ得る、又は置き換えられ得ると理解されるべきである。ここに開示されるいずれの方法も、記載された順序で実施される必要はない。したがって、ここに開示される本発明の範囲は、上述の特定の実施形態によって制限されるべきではないことが意図される。
本開示のシステム及び方法は、それぞれいくつかの革新的な態様を有し、そのうちの1つだけが、ここに開示された所望の属性に対して責任を負うものでも要求されるものでもないことが理解されよう。上述の様々な特徴及びプロセスは、互いに独立して使用されてもよく、又は様々な方法で組み合わされてもよい。すべての可能な組合せ及び下位組合せは、本開示の範囲内に入ることが意図される。
個々の実施形態に関連してここに記載される特定の特徴も、単一の実施形態において組み合わせて実施することができる。一方、単一の実施形態に関連して説明される様々な特徴も、複数の実施形態において別々に、又は任意の適切な下位組合せで実施することができる。さらに、特徴は特定の組み合わせで作用するものとして上述される場合があり、そのようなものとして当初主張されていたとしても、主張された組み合わせからの一以上の特徴は、場合によっては、組み合わせから除去されてもよく、主張された組み合わせは、下位組み合わせ又は下位組み合わせの変形に適用されてもよい。単一の特徴又は特徴のグループは、各々の及び全ての実施形態にとって必要ではなく、必須でもない。
また、本明細書で使用される条件付き言語、特に、「can」、「could」、「might」、「may」、「例えば」などは、特に明記されない限り、又は使用される文脈内で他に理解されない限り、一般に、特定の実施形態が特定の特徴、要素及び/又はステップを含むが、他の実施形態は含まないことを伝えることを意図していることが理解される。したがって、このような条件付き言語は、特徴、要素及び/又はステップが一以上の実施形態に何らかの方法で必要であること、又は一以上の実施形態が、著者の入力又は促しの有無にかかわらず、これらの特徴、要素及び/又はステップがいずれかの特定の実施形態に含まれるか、又は実行されるべきかを決定する論理を必然的に含むことを暗示することを意図していない。「comprising」、「including」、「having」などの用語は、同義であり、オープンエンド方式で包括的に使用され、追加の要素、特徴、作用、動作などを除外しない。さらに、用語「又は」は、その包括的な意味で使用される(その排他的な意味では使用されない)ため、例えば、要素の列挙を接続するために使用される場合、用語「又は」は、列挙内の要素の1つ、いくつか、又は全てを意味する。また、本願及び特許請求の範囲において使用される「a」、「an」及び「the」は、特に断りがない限り、「1以上」又は「少なくとも1つ」を意味するものと解釈される。同様に、動作は特定の順序で図面に示すことができるが、好ましい結果を達成するために、これら動作は、図示された特定の順序又は連続した順序で実行される必要はないこと、又は図示されたすべての動作が実行される必要があることが認識されるべきである。さらに、図面には、フローチャートの形態で一以上の例示的なプロセスが概略的に示されることがある。しかしながら、図示されていない他の動作が、概略的に示されている例示的な方法及びプロセスに組み込まれてもよい。例えば、一以上の追加の動作が、図示された動作のいずれかの前、後、同時に、又はこれらの間に実行されてもよい。さらに、他の実施形態では、動作を再配置、又は順序変更することができる。特定の状況においては、マルチタスキング及び並列処理が有利となり得る。さらに、上述の実施形態における様々なシステム構成要素の分離は、全ての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、記載されたプログラム、コンポーネント、及びシステムは、一般的に単一のソフトウェア製品においてともに統合されてもよく、又は複数のソフトウェア製品にパッケージ化されてもよいことが理解されるべきである。さらに、他の実施形態は、以下の特許請求の範囲の範囲内である。特許請求の範囲に記載された動作は、場合によっては、異なる順序で実行されることがあるが、依然として望ましい結果を達成することができる。
さらに、ここに記載された方法及びデバイスは、様々な変形例、及び代替形態の影響を受けやすいが、その具体例が図面に示されており、ここに詳細に記載されている。しかしながら、本発明は、開示された特定の形態又は方法に限定されるものではなく、むしろ、本発明は、記載された様々な実施形態及び添付の特許請求の範囲の精神及び範囲内にある全ての変形例、均等物、及び代替物を包含するものであることを理解されたい。さらに、実施形態又は実施形態に関連する任意の特定の特徴、態様、方法、特性、特徴、品質、属性、要素などのここに開示する内容は、ここに記載する他のすべての実施形態又は実施形態で使用することができる。ここに開示されるいずれの方法も、記載された順序で実施される必要はない。ここに開示される方法は、実施者によって行われる特定の行為を含む場合があるが、これら方法には、任意の第三者による明示的に又は暗黙的なこれら行為の指示を含む場合もある。ここに開示される範囲はまた、あらゆる重複、サブ範囲、及びこれらの組み合わせを含む。「まで」、「少なくとも」、「より大きい」、「より小さい」、「間」などの言語は、記載される数を包含する。「約」又は「約」のような用語が先行する数字は、記載される数字を包含し、状況に基づいて解釈されるべきである(例えば、当該状況下で合理的に可能な限り正確に。例えば、±5%、±10%、±15%等)。例えば、「約3.5mm」は、「3.5mm」を包含する。「実質的に」のような用語が先行する語句は、記載される語句を包含し、状況(例えば、当該状況下で合理的に可能な限り)に基づいて解釈されるべきである。例えば、「実質的に一定」は「一定」を包含する。特に明記しない限り、すべての測定は、温度及び圧力を含む標準条件で行われる。
本明細書で使用されるように、列挙される項目の「少なくとも一つ」を参照する語句は、単一の項目を含むこれら項目の任意の組み合わせを意味する。例として、「A、B、又はCの少なくとも1つ」は、A、B、C、A及びB、A及びC、B及びC、ならびにA、B及びCを網羅することを意図している。特に明記されない限り、語句「X、Y、Zの少なくとも1つ」のような連接言語は、項目、用語等がX、Y又はZの少なくとも1つであり得ることを示す一般に使用される文脈で理解される。したがって、そのような連言は、一般に、特定の実施形態がそれぞれ存在するためにXの少なくとも1つ、Yの少なくとも1つ、及びZの少なくとも1つを必要とすることを意味することを意図していない。ここに提供される見出しは、もしあれば、便宜上のものであり、ここに開示されるデバイス及び方法の範囲又は意味に必ずしも影響しない。
従って、特許請求の範囲は、ここに示される実施形態に限定されることを意図しておらず、本開示、ここに開示される原理及び新規な特徴と一致する最も広い範囲を与えられるべきである。
実施形態1:ファイルにおける実行可能コードをプログラム的に識別するコンピュータで実施される方法であって、前記方法は、コンピュータシステムによって、ファイルの一部からバイト列にアクセスする処理と、前記コンピュータシステムによって前記バイト列から所定数のn-グラムを抽出する処理であって、前記各n-グラムは、前記バイト列中の隣接する一連のバイトを含んでおり、前記各n-グラム中の隣接する一連のバイトは、n個のバイトを含む、処理と、前記コンピュータシステムによって、カウンタ列を生成する処理であって、前記カウンタ列の各カウンタは、前記n-グラムのうちの1つと関連付けられており、前記各カウンタは整数値を有しており、前記整数値は前記バイト列内の関連付けられたn-グラムの発生頻度に基づいて生成される、処理と、前記コンピュータシステムによって、前記カウンタ列を入力特徴として予測機械学習モデルに提供する処理と、前記予測機械学習モデルによって、前記バイト列が実行可能なコードを含むモデル確率値を決定する処理とを含み、前記コンピュータシステムはコンピュータプロセッサと電子記憶媒体を備えている。
実施形態2:前記実施形態1の方法であって、実行可能なコードとは、コンピュータシステム上でバイト列を実行することなく、プログラム的に識別される。
実施形態3:前記実施形態1又は2の方法であって、前記方法は、前記バイト列が実行可能なコードを含むモデル確率値が所定の閾値を超えるものである場合、マルウェア検出システムによってさらに解析を行うために、前記コンピュータシステムによって前記バイト列又はファイルにフラグを立てる処理をさらに含む。
実施形態4:前記実施形態1~3のいずれかの方法であって、前記ファイルは、実行可能なファイル形式を含む。
実施形態5:前記実施形態1~4のいずれかの方法であって、前記ファイルは、ポータブル実行可能ファイル(PE)を含む。
実施形態6:前記実施形態1~5のいずれかの方法であって、前記ファイルの一部には、一以上のリソース、文字列、変数、オーバーレイ、又はセクションの1つ以上が含まれている。
実施形態7:前記実施形態1~6のいずれかの方法であって、前記ファイルの一部には、実行可能許可が含まれていない。
実施形態8:前記実施形態1~7のいずれかの方法であって、前記n-グラムは、bi-グラムを含む。
実施形態9:前記実施形態1~7のいずれかの方法であって、nは2~500である。
実施形態10:前記実施形態1~7のいずれかの方法であって、前記n-グラムは、nが第一の整数である第一のn-グラムセットと、nが第二の整数である第二のn-グラムセットとを含んでおり、前記第一の整数は前記第二の整数と異なっている。
実施形態11:前記実施形態1~10のいずれかの方法であって、n-グラムの所定の数は500である。
実施形態12:前記実施形態1~10のいずれかの方法であって、n-グラムの所定の数は50~10000である。
実施形態13:前記実施形態1~12のいずれかの方法であって、前記方法は、コンピュータシステムによって、各カウンタを前記バイト列のデータ長で正規化する処理を含む。
実施形態14:前記実施形態1~13のいずれかの方法であって、前記予測機械学習モデルは、複数の別々のモデルを含んでおり、各モデルは異なるマシンアーキテクチャコードに対応している。
実施形態15:前記実施形態14の方法であって、前記マシンアーキテクチャコードには、.NET、x86、及び/又はx64が含まれる。
実施形態16:前記実施形態1~15のいずれかの方法であって、前記予測機械学習モデルは、サポートベクターマシン(SVM)、線形回帰、k-近傍法(KNN)アルゴリズム、ロジスティック回帰、ナイーブベイズ(naive Bayes)、線形判別分析、決定木、ニューラルネットワーク、又は類性学習からなるグループから選択された少なくとも1つの学習アルゴリズムを含む。
実施形態17:前記実施形態1~15のいずれかの方法であって、予測機械学習モデルは、ランダムフォレストを含む。
実施形態18:前記実施形態17の方法であって、前記ランダムフォレストは複数の決定木を含んでおり、各決定木は学習用のバイトセットで独立的に教育される。
実施形態19:前記実施形態18の方法であって、モデル確率値は、複数の決定木確率値を平均化することによって決定され、各決定木確率値は、複数の決定木の各決定木を介してバイト列をトラバースすることによって生成される。
実施形態20:ファイルにおける実行可能なコードをプログラム的に識別するコンピュータシステムであって、前記システムは、複数のコンピュータで実行可能な指示を記憶するように構成された一以上のコンピュータで読取り可能な記憶装置と、一以上の他のコンピュータで読取り可能な記憶装置と通信可能に接続された一以上のハードウェアコンピュータプロセッサとを備えており、前記一以上のハードウェアコンピュータプロセッサは、複数のコンピュータで実行可能な指示を実行することによって、前記システムに、ファイルの一部からバイト列にアクセスする処理と、前記バイト列から所定数のn-グラムを抽出する処理であって、前記各n-グラムは、前記バイト列中の隣接する一連のバイトを含んでおり、前記各n-グラム中の隣接する一連のバイトは、n個のバイトを含む、処理と、カウンタ列を生成する処理であって、前記カウンタ列の各カウンタは、前記n-グラムのうちの1つと関連付けられており、前記各カウンタは整数値を有しており、前記整数値は前記バイト列内の関連付けられたn-グラムの発生頻度に基づいて生成される、処理と、前記カウンタ列を入力特徴として予測機械学習モデルに提供する処理と、前記予測機械学習モデルによって、前記バイト列が実行可能なコードを含むモデル確率値を決定する処理とを行わせるように構成されている。
実施形態21:実行可能なコードから、マルウェア検出モデルに入力する機械学習特徴を自動的に抽出する、コンピュータで実施される方法であって、前記方法は、コンピュータシステムによって、ファイルから前記実行可能なコードにアクセスする処理と、前記コンピュータシステムによって、埋込マトリクスを有する画像再スケーリングアルゴリズムに、前記実行可能なコードを入力する処理であって、前記画像再スケーリングアルゴリズムは、前記実行可能なコードの各バイトを、前記埋込マトリクスを用いて数ベクトルに変換して埋込ベクトル空間を作成し、前記変換を行っている間、前記実行可能なコードの順序が維持される、処理と、前記コンピュータシステムによって、前記埋込ベクトル空間の一以上のベクトル層をチャネルフィルタリングする処理であって、前記チャンネルフィルタリングの処理は、前記一以上のベクトル層を複数のブロックに統合する処理と、フィルタメカニズムを適用して一以上の固定サイズのベクトル入力を生成する処理であって、各固定サイズのベクトル入力は、対応するベクトル層、又は対応するベクトル層のブロックを表している、処理とを含み、前記コンピュータシステムによって、ニューラルネットワークの入力層に前記一以上の固定サイズのベクトル入力を入力する処理であって、前記ニューラルネットワークは、複数の処理部の層を備えており、前記複数の層は、少なくとも、前記入力層と、一以上の隠し層と、出力層とを備えており、前記複数の層の一連の層は、それぞれ前の層の出力値を入力値として使用し、前記出力層は、前記実行可能なコードの悪意度の分類を生成する、処理とを含み、前記コンピュータシステムによって、前記ニューラルネットワークの前記出力層直前の最終隠し層の出力値を抽出する処理と、前記コンピュータシステムによって、機械学習特徴として前記最終隠し層の出力値を、前記マルウェア検出モデルに提供する処理とを含み、前記コンピュータシステムは、コンピュータプロセッサと電子記憶媒体とを備えている。
実施形態22:前記実施形態21の方法であって、前記ニューラルネットワークは教師あり学習モデル、半教師あり学習モデル、又は教師なし学習モデルを含む。
実施形態23:前記実施形態21又は22の方法であって、前記実行可能なコードは、ポータブル実行可能(PE)ファイルの一部である。
実施形態24:前記実施形態21~23のいずれかの方法であって、前記一以上の隠し層のそれぞれは、前記入力値に変換を行い、直後に連続する層への出力値を生成するように構成されている。
実施形態25:前記実施形態21~24のいずれかの方法であって、前記画像再スケーリングアルゴリズムは、前処理ニューラルネットワークを含んでおり、前記前処理ニューラルネットワークは、Word2Vecを含む。
実施形態26:前記実施形態21~25のいずれかの方法であって、前記方法は、前記ニューラルネットワークの出力層から、前記実行可能なコードの悪意度の分類を破棄する処理をさらに含む。
実施形態27:前記実施形態21~26のいずれかの方法であって、前記ニューラルネットワークは1~2000個の隠し層を含む。
実施形態28:前記実施形態21~27のいずれかの方法であって、前記フィルタメカニズムは、ローパスフィルタ、ボックスフィルタ、デルタフィルタ、又はガウスフィルタを含む。
実施形態29:実行可能なコードから、マルウェア検出モデルに入力する機械学習特徴を自動的に抽出する、コンピュータシステムであって、前記システムは、複数のコンピュータで実行可能な指示を記憶するように構成された一以上のコンピュータで読取り可能な記憶装置と、一以上の他のコンピュータで読取り可能な記憶装置と通信可能に接続された一以上のハードウェアコンピュータプロセッサとを備えており、前記一以上のハードウェアコンピュータプロセッサは、複数のコンピュータで実行可能な指示を実行することによって、前記システムに、ファイルから前記実行可能なコードにアクセスする処理と、埋込マトリクスを有する画像再スケーリングアルゴリズムに、前記実行可能なコードを入力する処理であって、前記画像再スケーリングアルゴリズムは、前記実行可能なコードの各バイトを、前記埋込マトリクスを用いて数ベクトルに変換して埋込ベクトル空間を作成し、前記変換を行っている間、前記実行可能なコードの順序が維持される、処理と、前記埋込ベクトル空間の一以上のベクトル層をチャネルフィルタリングする処理であって、前記チャンネルフィルタリングは、前記一以上のベクトル層を複数のブロックに統合する処理と、フィルタメカニズムを適用して一以上の固定サイズのベクトル入力を生成する処理であって、各固定サイズのベクトル入力は、対応するベクトル層、又は対応するベクトル層のブロックを表している、処理とによって行われる、処理と、ニューラルネットワークの入力層に前記一以上の固定サイズのベクトル入力を入力する処理であって、前記ニューラルネットワークは、複数の処理部の層を備えており、前記複数の層は、少なくとも、前記入力層と、一以上の隠し層と、出力層とを備えており、前記複数の層の一連の層は、それぞれ前の層の出力値を入力値として使用し、前記出力層は、前記実行可能なコードの悪意度の分類を生成する、処理と、前記ニューラルネットワークの前記出力層直前の最終隠し層の出力値を抽出する処理と、機械学習特徴として前記最終隠し層の出力値を、前記マルウェア検出モデルに提供する処理とを含む。
実施形態30:前記実施形態29のシステムであって、前記ニューラルネットワークは教師あり学習モデル、半教師あり学習モデル、又は教師なし学習モデルを含む。
実施形態31:前記実施形態29又は30のシステムであって、前記実行可能なコードは、ポータブル実行可能(PE)ファイルの一部である。
実施形態32:前記実施形態29~31のいずれかのシステムであって、前記一以上の隠し層のそれぞれは、前記入力値に変換を行い、直後に連続する層への出力値を生成するように構成されている。
実施形態33:前記実施形態29~32のいずれかのシステムであって、前記画像再スケーリングアルゴリズムは、前処理ニューラルネットワークを含んでおり、前記前処理ニューラルネットワークは、Word2Vecを含む。
実施形態34:前記実施形態29~33のいずれかのシステムであって、いくつかの実施形態において、前記システムは、前記ニューラルネットワークの出力層から、前記実行可能なコードの悪意度の分類を破棄するようになっている。
実施形態35:前記実施形態29~34のいずれかのシステムであって、前記ニューラルネットワークは1~2000個の隠し層を含む。
実施形態36:前記実施形態29~35のいずれかのシステムであって、前記フィルタメカニズムは、ローパスフィルタ、ボックスフィルタ、デルタフィルタ、又はガウスフィルタを含む。
実施形態37:ライブラリ位置独立コード検出用のシステムであって、複数のコンピュータで実行可能な指示を記憶するように構成された一以上のコンピュータで読取り可能な記憶装置と、一以上の他のコンピュータで読取り可能な記憶装置と通信可能に接続された一以上のハードウェアコンピュータプロセッサとを備えており、前記一以上のハードウェアコンピュータプロセッサは、複数のコンピュータで実行可能な指示を実行することによって、前記システムに、監視対象シンボルのインポートアドレステーブル(IAT)エントリを実装する処理を行わせ、前記IATエントリを実装する処理は、監視対象シンボルのIATエントリ内の監視対象シンボルアドレスを改変アドレスで置換する処理と、前記改変アドレスの呼び出しに対してトランポリンコードを実行し、監視対象シンボルの静的呼び出しを検出及び検証する処理と、前記改変アドレスの呼び出しを監視対象シンボルアドレスにリダイレクトする処理とを含み、一以上のローダAPI関数を実装する処理を行わせ、前記ローダAPI関数を実装する処理は、前記一以上のローダAPI関数を改変し、前記トランポリンコードへ導く値を戻す処理と、前記監視対象シンボルの実行を迂回コードに迂回させて、前記監視対象シンボルの呼び出しを検出及び検証する処理と、前記監視対象シンボルの呼び出しを前記監視対象シンボルアドレスにリダイレクトする処理とを含み、前記監視対象シンボルの前記トランポリンコード及び前記迂回コードを監視させて、実行ファイル内の呼び出しが、静的呼び出し、動的呼び出し、又はローカル呼び出しを含んでいるかを判定する処理を行わせ、前記システムが、前記実行ファイル内の少なくとも1つの呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれていないと判断した場合、マルウェア検出システムのために、当該実行ファイルに不審な、又は、悪意ありのフラグを立てる処理を行わせる。
実施形態38:前記実施形態37のシステムであって、前記システムが、前記実行可能コード内の少なくとも1つの呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれていないと判断した場合、当該少なくとも1つの呼び出しを独立した呼び出しとして分類する。
実施形態39:前記実施形態37のシステムであって、前記システムが、前記呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれると判断した場合、当該呼び出しを良性呼び出しとして分類する。
実施形態40:前記実施形態37又は39のシステムであって、前記システムが、前記呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれると判断した場合、前記実行ファイルを良性として分類する。
実施形態41:前記実施形態37~40のいずれかのシステムであって、前記トランポリンコード及び前記迂回コードを含むフッキングエンジンと、呼び出しに関するデータを記憶するように構成された、一以上の呼び出しデータベースとを含む。
実施形態42:前記実施形態37~41のいずれかのシステムであって、前記動的呼び出しは、前記実行ファイルの実行中に、前記監視対象シンボルアドレスの取得を試みることが含まれる。
実施形態43:前記実施形態37~42のいずれかのシステムであって、前記静的呼び出しには、前記実行ファイルの初期化中に、前記監視対象シンボルアドレスの取得を試みることが含まれる。
実施形態44:前記実施形態37~43のいずれかのシステムであって、前記実行ファイルからの呼び出しにローカル呼び出しが含まれているか否かを判定する処理には、前記迂回コードを監視して、リターンアドレスが、前記実行ファイルの前記監視対象シンボルと同じアドレスになっているかを判定する処理が含まれる。
実施形態45:前記実施形態37~44のいずれかのシステムであって、前記一以上のローダAPI関数は、GetModuleHandle又はGetProcAddressのいずれか一方又は両方を含む。
実施形態46:前記実施形態37のシステムであって、前記少なくとも1つの呼び出しは、前記実行ファイルが、前記監視対象シンボルを含むモジュールから取得されたメタデータを用いることによって初期化される。
実施形態47:前記実施形態37のシステムであって、前記少なくとも1つの呼び出しは、前記実行ファイルがローダの内部記録から取得したデータを用いることによって初期化される。
実施形態48:前記実施形態37のシステムであって、前記少なくとも1つの呼び出しは、前記実行ファイルが、前記トランポリンコードをトリガーすることなく監視対象シンボルを呼び出すことによって初期化される。
実施形態49:ライブラリ位置独立コード検出を行うためのコンピュータにより実施される方法であって、前記方法は、コンピュータシステムによって、監視対象シンボルのインポートアドレステーブル(IAT)エントリを実装する処理であって、前記IATエントリを実装する処理には、監視対象シンボルのIATエントリ内の監視対象シンボルアドレスを改変アドレスで置換する処理と、前記改変アドレスの呼び出しに対してトランポリンコードを実行し、監視対象シンボルの静的呼び出しを検出及び検証する処理と、前記改変アドレスの呼び出しを監視対象シンボルアドレスにリダイレクトする処理とが含まれる、処理と、前記コンピュータシステムによって、一以上のローダAPI関数を実装する処理であって、前記ローダAPI関数を実装する処理には、前記一以上のローダAPI関数を改変し、前記トランポリンコードへ導く値を戻す処理と、前記監視対象シンボルの実行を迂回コードに迂回させて、前記監視対象シンボルの呼び出しを検出及び検証する処理と、前記監視対象シンボルの呼び出しを前記監視対象シンボルアドレスにリダイレクトする処理とが含まれる、処理と、前記コンピュータシステムによって、前記監視対象シンボルの前記トランポリンコード及び前記迂回コードを監視する処理であって、実行ファイル内の呼び出しが、静的呼び出し、動的呼び出し、又はローカル呼び出しを含んでいるかを判定する処理と、前記コンピュータシステムが、前記実行ファイル内の少なくとも1つの呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれていないと判断した場合、前記コンピュータシステムがマルウェア検出システムのために、当該実行ファイルに不審な、又は、悪意ありのフラグを立てる処理と、を含み、前記コンピュータシステムはコンピュータプロセッサと電子記憶媒体を備えている。
実施形態50:前記実施形態49の方法であって、前記方法は、前記コンピュータシステムが、少なくとも1つの呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれていないと判断した場合、当該少なくとも1つの呼び出しを独立した呼び出しとして分類する処理を含むことを特徴とする方法。
実施形態51:前記実施形態49の方法であって、前記方法は、前記コンピュータシステムが前記呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれると判断した場合、当該呼び出しを良性呼び出しとして分類する処理を含む。
実施形態52:前記実施形態49又は51の方法であって、前記方法は、前記コンピュータシステムが前記呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれると判断した場合、前記実行ファイルを良性として分類する処理を含む。
実施形態53:前記実施形態49~52のいずれかの方法であって、前記トランポリンコード及び前記迂回コードは、フッキングエンジンの一以上の部分を含んでおり、前記フッキングエンジンは、前記呼び出しに関連するデータを記憶するように構成された呼び出しデータベースに接続されている。
実施形態54:前記実施形態49~53のいずれかの方法であって、前記動的呼び出しは、前記実行ファイルの実行中に、前記監視対象シンボルアドレスの取得を試みることが含まれる。
実施形態55:前記実施形態49~54のいずれかの方法であって、前記静的呼び出しには、前記実行ファイルの初期化中に、前記監視対象シンボルアドレスの取得を試みることが含まれる。
実施形態56:前記実施形態49~55のいずれかの方法であって、前記実行ファイルからの呼び出しにローカル呼び出しが含まれているか否かを判定する処理には、前記迂回コードを監視して、リターンアドレスが、前記実行ファイルの前記監視対象シンボルと同じアドレスになっているかを判定する処理が含まれる。
実施形態57:前記実施形態49~56のいずれかの方法であって、前記一以上のローダAPI関数は、GetModuleHandle又はGetProcAddressのいずれか一方又は両方を含む。
実施形態58:前記実施形態49の方法であって、前記少なくとも1つの呼び出しは、前記実行ファイルが、前記監視対象シンボルを含むモジュールから取得されたメタデータを用いることによって初期化される。
実施形態59:前記実施形態49の方法であって、前記少なくとも1つの呼び出しは、前記実行ファイルがローダの内部記録から取得したデータを用いることによって初期化される。
実施形態60:前記実施形態49の方法であって、前記少なくとも1つの呼び出しは、前記実行ファイルが、前記トランポリンコードをトリガーすることなく監視対象シンボルを呼び出すことによって初期化される。


Claims (24)

  1. ライブラリ位置独立コード検出用のシステムであって、
    複数のコンピュータで実行可能な指示を記憶するように構成された一以上のコンピュータで読取り可能な記憶装置と、
    一以上の他のコンピュータで読取り可能な記憶装置と通信可能に接続された一以上のハードウェアコンピュータプロセッサとを備えており、前記一以上のハードウェアコンピュータプロセッサは、複数のコンピュータで実行可能な指示を実行することによって、前記システムに、
    監視対象シンボルのインポートアドレステーブル(IAT)エントリを実装する処理を行わせ、前記IATエントリを実装する処理は、
    監視対象シンボルのIATエントリ内の監視対象シンボルアドレスを改変アドレスで置換する処理と、
    前記改変アドレスの呼び出しに対してトランポリンコードを実行し、監視対象シンボルの呼び出しを検出及び検証する処理と、
    前記改変アドレスの呼び出しを監視対象シンボルアドレスにリダイレクトする処理とを含み、
    一以上のローダAPI関数を実装する処理を行わせ、前記ローダAPI関数を実装する処理は、
    前記一以上のローダAPI関数を改変し、前記トランポリンコードへ導く値を戻す処理と、
    前記監視対象シンボルの実行を迂回コードに迂回させて、前記監視対象シンボルの呼び出しを検出及び検証し、
    前記監視対象シンボルの呼び出しを前記監視対象シンボルアドレスにリダイレクトする処理とを含み、
    前記監視対象シンボルの前記トランポリンコード及び前記迂回コードを監視させて、実行ファイル内の呼び出しが、静的呼び出し、動的呼び出し、又はローカル呼び出しを含んでいるかを判定する処理を行わせ、
    前記システムが、前記実行ファイル内の少なくとも1つの呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれていないと判断した場合、マルウェア検出システムのために、当該実行ファイルに不審な、又は、悪意ありのフラグを立てる処理を行わせることを特徴とするシステム。
  2. 請求項1に記載のシステムであって、前記システムが、前記実行可能コード内の少なくとも1つの呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれていないと判断した場合、当該少なくとも1つの呼び出しを独立した呼び出しとして分類することを特徴とするシステム。
  3. 請求項1に記載のシステムであって、前記システムが、前記呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれると判断した場合、当該呼び出しを良性呼び出しとして分類することを特徴とするシステム。
  4. 請求項1又は2に記載のシステムであって、前記システムが、前記呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれると判断した場合、前記実行ファイルを良性として分類することを特徴とするシステム。
  5. 請求項1に記載のシステムであって、
    前記トランポリンコード及び前記迂回コードを含むフッキングエンジンと、
    呼び出しに関するデータを記憶するように構成された、一以上の呼び出しデータベースとを含むことを特徴とするシステム。
  6. 請求項1~5のいずれか1項に記載のシステムであって、前記動的呼び出しは、前記実行ファイルの実行中に、前記監視対象シンボルアドレスの取得を試みることが含まれることを特徴とするシステム。
  7. 請求項1~6のいずれか1項に記載のシステムであって、前記静的呼び出しには、前記実行ファイルの初期化中に、前記監視対象シンボルアドレスの取得を試みることが含まれることを特徴とするシステム。
  8. 請求項1~7のいずれか1項に記載のシステムであって、前記実行ファイルからの呼び出しにローカル呼び出しが含まれているか否かを判定する処理には、前記迂回コードを監視して、リターンアドレスが、前記実行ファイルの前記監視対象シンボルと同じアドレスになっているかを判定する処理が含まれることを特徴とするシステム。
  9. 請求項1~8のいずれか1項に記載のシステムであって、前記一以上のローダAPI関数は、GetModuleHandle又はGetProcAddressのいずれか一方又は両方を含むことを特徴とするシステム。
  10. 請求項1~9のいずれか1項に記載のシステムであって、前記少なくとも1つの呼び出しは、前記実行ファイルが、前記監視対象シンボルを含むモジュールから取得されたメタデータを用いることによって初期化されることを特徴とするシステム。
  11. 請求項1~9のいずれか1項に記載のシステムであって、前記少なくとも1つの呼び出しは、前記実行ファイルがローダの内部記録から取得したデータを用いることによって初期化されることを特徴とするシステム。
  12. 請求項1~9のいずれか1項に記載のシステムであって、前記少なくとも1つの呼び出しは、前記実行ファイルが、前記トランポリンコードをトリガーすることなく監視対象シンボルを呼び出すことによって初期化されることを特徴とするシステム。
  13. ライブラリ位置独立コード検出を行うためのコンピュータにより実施される方法であって、前記方法は、
    コンピュータシステムによって、監視対象シンボルのインポートアドレステーブル(IAT)エントリを実装する処理であって、前記IATエントリを実装する処理には、
    監視対象シンボルのIATエントリ内の監視対象シンボルアドレスを改変アドレスで置換する処理と、
    前記改変アドレスの呼び出しに対してトランポリンコードを実行し、監視対象シンボルの静的呼び出しを検出及び検証する処理と、
    前記改変アドレスの呼び出しを監視対象シンボルアドレスにリダイレクトする処理とが含まれる、処理と、
    前記コンピュータシステムによって、一以上のローダAPI関数を実装する処理であって、前記ローダAPI関数を実装する処理には、
    前記一以上のローダAPI関数を改変し、前記トランポリンコードへ導く値を戻す処理と、
    前記監視対象シンボルの実行を迂回コードに迂回させて、前記監視対象シンボルの呼び出しを検出及び検証する処理と、
    前記監視対象シンボルの呼び出しを前記監視対象シンボルアドレスにリダイレクトする処理とが含まれる、処理と、
    前記コンピュータシステムによって、前記監視対象シンボルの前記トランポリンコード及び前記迂回コードを監視する処理であって、実行ファイル内の呼び出しが、静的呼び出し、動的呼び出し、又はローカル呼び出しを含んでいるかを判定する処理と、
    前記コンピュータシステムが、前記実行ファイル内の少なくとも1つの呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれていないと判断した場合、前記コンピュータシステムがマルウェア検出システムのために、当該実行ファイルに不審な、又は、悪意ありのフラグを立てる処理と、を備え、
    前記コンピュータシステムはコンピュータプロセッサと電子記憶媒体を備えていることを特徴とする方法。
  14. 請求項13に記載の方法であって、前記方法は、前記コンピュータシステムが、少なくとも1つの呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれていないと判断した場合、当該少なくとも1つの呼び出しを独立した呼び出しとして分類する処理を含むことを特徴とする方法。
  15. 請求項13に記載の方法であって、前記方法は、前記コンピュータシステムが前記呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれると判断した場合、当該呼び出しを良性呼び出しとして分類する処理を含むことを特徴とする方法。
  16. 請求項13又は14に記載の方法であって、前記方法は、前記コンピュータシステムが前記呼び出しに、静的呼び出し、動的呼び出し、又はローカル呼び出しが含まれると判断した場合、前記実行ファイルを良性として分類する処理を含むことを特徴とする方法。
  17. 請求項13~16のいずれか1項に記載の方法であって、前記トランポリンコード及び前記迂回コードは、フッキングエンジンの一以上の部分を含んでおり、前記フッキングエンジンは、前記呼び出しに関連するデータを記憶するように構成された呼び出しデータベースに接続されていることを特徴とする方法。
  18. 請求項13~17のいずれか1項に記載の方法であって、前記動的呼び出しには、前記実行ファイルの実行中に、前記監視対象シンボルアドレスの取得を試みることが含まれることを特徴とする方法。
  19. 請求項13~18のいずれか1項に記載の方法であって、前記静的呼び出しには、前記実行ファイルの初期化中に、前記監視対象シンボルアドレスの取得を試みることが含まれることを特徴とする方法。
  20. 請求項13~19のいずれか1項に記載の方法であって、前記実行ファイルからの呼び出しにローカル呼び出しが含まれているか否かを判定する処理には、前記迂回コードを監視して、リターンアドレスが、前記実行ファイルの前記監視対象シンボルと同じアドレスになっているかを判定する処理が含まれることを特徴とする方法。
  21. 請求項13~20のいずれか1項に記載の方法であって、前記一以上のローダAPI関数は、GetModuleHandle又はGetProcAddressのいずれか一方又は両方を含むことを特徴とする方法。
  22. 請求項13~21のいずれか1項に記載の方法であって、前記少なくとも1つの呼び出しは、前記実行ファイルが、前記監視対象シンボルを含むモジュールから取得されたメタデータを用いることによって初期化されることを特徴とする方法。
  23. 請求項13~21のいずれか1項に記載の方法であって、前記少なくとも1つの呼び出しは、前記実行ファイルがローダの内部記録から取得したデータを用いることによって初期化されることを特徴とする方法。
  24. 請求項13~21のいずれか1項に記載の方法であって、前記少なくとも1つの呼び出しは、前記実行ファイルが、前記トランポリンコードをトリガーすることなく監視対象シンボルを呼び出すことによって初期化されることを特徴とする方法。


JP2021569072A 2019-05-20 2020-05-20 実行可能コード検出、自動特徴抽出及び位置独立コード検出のためのシステム及び方法 Active JP7278423B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201962850182P 2019-05-20 2019-05-20
US201962850170P 2019-05-20 2019-05-20
US62/850,170 2019-05-20
US62/850,182 2019-05-20
US201962854118P 2019-05-29 2019-05-29
US62/854,118 2019-05-29
PCT/US2020/033872 WO2020236981A1 (en) 2019-05-20 2020-05-20 Systems and methods for executable code detection, automatic feature extraction and position independent code detection

Publications (3)

Publication Number Publication Date
JP2022533715A true JP2022533715A (ja) 2022-07-25
JPWO2020236981A5 JPWO2020236981A5 (ja) 2023-04-03
JP7278423B2 JP7278423B2 (ja) 2023-05-19

Family

ID=72241774

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021569072A Active JP7278423B2 (ja) 2019-05-20 2020-05-20 実行可能コード検出、自動特徴抽出及び位置独立コード検出のためのシステム及び方法

Country Status (5)

Country Link
US (5) US10762200B1 (ja)
EP (1) EP3973427A4 (ja)
JP (1) JP7278423B2 (ja)
IL (1) IL288122B2 (ja)
WO (1) WO2020236981A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11507663B2 (en) 2014-08-11 2022-11-22 Sentinel Labs Israel Ltd. Method of remediating operations performed by a program and system thereof
US9710648B2 (en) 2014-08-11 2017-07-18 Sentinel Labs Israel Ltd. Method of malware detection and system thereof
US10462171B2 (en) 2017-08-08 2019-10-29 Sentinel Labs Israel Ltd. Methods, systems, and devices for dynamically modeling and grouping endpoints for edge networking
GB201810294D0 (en) 2018-06-22 2018-08-08 Senseon Tech Ltd Cybe defence system
US11438357B2 (en) 2018-06-22 2022-09-06 Senseon Tech Ltd Endpoint network sensor and related cybersecurity infrastructure
EP3973427A4 (en) 2019-05-20 2023-06-21 Sentinel Labs Israel Ltd. SYSTEMS AND METHODS FOR EXECUTABLE CODE DETECTION, AUTOMATIC FEATURE EXTRACTION, AND POSITION-INDEPENDENT CODE DETECTION
US11616794B2 (en) * 2019-05-29 2023-03-28 Bank Of America Corporation Data management system
JP7298692B2 (ja) * 2019-08-08 2023-06-27 日本電気株式会社 機能推定装置、機能推定方法及びプログラム
GB201915265D0 (en) 2019-10-22 2019-12-04 Senseon Tech Ltd Anomaly detection
US11550911B2 (en) 2020-01-31 2023-01-10 Palo Alto Networks, Inc. Multi-representational learning models for static analysis of source code
US11615184B2 (en) * 2020-01-31 2023-03-28 Palo Alto Networks, Inc. Building multi-representational learning models for static analysis of source code
US20210303662A1 (en) * 2020-03-31 2021-09-30 Irdeto B.V. Systems, methods, and storage media for creating secured transformed code from input code using a neural network to obscure a transformation function
US11568317B2 (en) 2020-05-21 2023-01-31 Paypal, Inc. Enhanced gradient boosting tree for risk and fraud modeling
US11803641B2 (en) * 2020-09-11 2023-10-31 Zscaler, Inc. Utilizing Machine Learning to detect malicious executable files efficiently and effectively
US11599342B2 (en) * 2020-09-28 2023-03-07 Red Hat, Inc. Pathname independent probing of binaries
CN112487430A (zh) * 2020-12-01 2021-03-12 杭州电子科技大学 一种Android恶意软件检测方法
US11579857B2 (en) 2020-12-16 2023-02-14 Sentinel Labs Israel Ltd. Systems, methods and devices for device fingerprinting and automatic deployment of software in a computing network using a peer-to-peer approach
CN112528293B (zh) * 2020-12-18 2024-04-30 中国平安财产保险股份有限公司 安全漏洞预警方法、装置、设备及计算机可读存储介质
CN112861131B (zh) * 2021-02-08 2022-04-08 山东大学 基于卷积自编码器的库函数识别检测方法及系统
US11681810B2 (en) * 2021-04-05 2023-06-20 International Business Machines Corporation Traversing software components and dependencies for vulnerability analysis
CN113378881B (zh) * 2021-05-11 2022-06-21 广西电网有限责任公司电力科学研究院 基于信息熵增益svm模型的指令集识别方法及装置
CN113837305B (zh) * 2021-09-29 2022-09-23 北京百度网讯科技有限公司 目标检测及模型训练方法、装置、设备和存储介质
GB2626117A (en) * 2021-10-28 2024-07-10 Imanage Llc Ransomware detection and mitigation
US20230195896A1 (en) * 2021-12-21 2023-06-22 Palo Alto Networks, Inc. Identification of .net malware with "unmanaged imphash"
US20230344838A1 (en) * 2022-04-26 2023-10-26 Palo Alto Networks, Inc. Detecting microsoft .net malware using machine learning on .net structure
CN115033895B (zh) * 2022-08-12 2022-12-09 中国电子科技集团公司第三十研究所 一种二进制程序供应链安全检测方法及装置
CN115361027B (zh) * 2022-10-18 2023-03-24 江苏量超科技有限公司 一种污水处理效果识别方法
CN115576840B (zh) * 2022-11-01 2023-04-18 中国科学院软件研究所 基于机器学习的静态程序插桩检测方法及装置
WO2024163094A1 (en) * 2023-01-31 2024-08-08 Palo Alto Networks, Inc. Machine learning architecture for detecting malicious files using stream of data
CN116992447B (zh) * 2023-09-21 2023-12-15 北京安天网络安全技术有限公司 一种恶意文件检测方法、电子设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050198507A1 (en) * 2004-03-05 2005-09-08 Microsoft Corporation Import address table verification
JP2006106939A (ja) * 2004-10-01 2006-04-20 Hitachi Ltd 侵入検知方法及び侵入検知装置並びにプログラム
JP2013168141A (ja) * 2012-01-31 2013-08-29 Trusteer Ltd マルウェアの検出方法
US20140020046A1 (en) * 2012-07-12 2014-01-16 International Business Machines Corporation Source code analysis of inter-related code bases
US20150200955A1 (en) * 2014-01-13 2015-07-16 Cisco Technology, Inc. Dynamic filtering for sdn api calls across a security boundary
JP2015534690A (ja) * 2012-10-19 2015-12-03 マカフィー, インコーポレイテッド モバイル・アプリケーション管理
US20160055337A1 (en) * 2013-03-25 2016-02-25 British Telecommunications Plc Suspicious program detection
WO2017068889A1 (ja) * 2015-10-19 2017-04-27 日本電信電話株式会社 解析装置、解析方法、および解析プログラム
US20170206357A1 (en) * 2014-11-17 2017-07-20 Morphisec Information Security Ltd. Malicious code protection for computer systems based on process modification

Family Cites Families (436)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4979118A (en) 1989-03-10 1990-12-18 Gte Laboratories Incorporated Predictive access-control and routing system for integrated services telecommunication networks
US5311593A (en) 1992-05-13 1994-05-10 Chipcom Corporation Security system for a network concentrator
US6154844A (en) 1996-11-08 2000-11-28 Finjan Software, Ltd. System and method for attaching a downloadable security profile to a downloadable
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US6167520A (en) 1996-11-08 2000-12-26 Finjan Software, Inc. System and method for protecting a client during runtime from hostile downloadables
SE513828C2 (sv) 1998-07-02 2000-11-13 Effnet Group Ab Brandväggsapparat och metod för att kontrollera nätverksdatapakettrafik mellan interna och externa nätverk
US6157953A (en) 1998-07-28 2000-12-05 Sun Microsystems, Inc. Authentication and access control in a management console program for managing services in a computer network
JP4501280B2 (ja) 1998-12-09 2010-07-14 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワークおよびコンピュータシステムセキュリティを提供する方法および装置
US7299294B1 (en) 1999-11-10 2007-11-20 Emc Corporation Distributed traffic controller for network data
US7107347B1 (en) 1999-11-15 2006-09-12 Fred Cohen Method and apparatus for network deception/emulation
US6836888B1 (en) 2000-03-17 2004-12-28 Lucent Technologies Inc. System for reverse sandboxing
US7574740B1 (en) 2000-04-28 2009-08-11 International Business Machines Corporation Method and system for intrusion detection in a computer network
US6728716B1 (en) 2000-05-16 2004-04-27 International Business Machines Corporation Client-server filter computing system supporting relational database records and linked external files operable for distributed file system
US20020010800A1 (en) 2000-05-18 2002-01-24 Riley Richard T. Network access control system and method
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
US7181769B1 (en) 2000-08-25 2007-02-20 Ncircle Network Security, Inc. Network security system having a device profiler communicatively coupled to a traffic monitor
US6985845B1 (en) 2000-09-26 2006-01-10 Koninklijke Philips Electronics N.V. Security monitor of system runs software simulator in parallel
US20020078382A1 (en) 2000-11-29 2002-06-20 Ali Sheikh Scalable system for monitoring network system and components and methodology therefore
US6868069B2 (en) 2001-01-16 2005-03-15 Networks Associates Technology, Inc. Method and apparatus for passively calculating latency for a network appliance
US20020095607A1 (en) 2001-01-18 2002-07-18 Catherine Lin-Hendel Security protection for computers and computer-networks
US7613930B2 (en) 2001-01-19 2009-11-03 Trustware International Limited Method for protecting computer programs and data from hostile code
US20110178930A1 (en) 2001-01-30 2011-07-21 Scheidt Edward M Multiple Level Access with SILOS
US7543269B2 (en) 2001-03-26 2009-06-02 Biglever Software, Inc. Software customization system and method
US7188368B2 (en) 2001-05-25 2007-03-06 Lenovo (Singapore) Pte. Ltd. Method and apparatus for repairing damage to a computer system using a system rollback mechanism
US20020194489A1 (en) 2001-06-18 2002-12-19 Gal Almogy System and method of virus containment in computer networks
US7370358B2 (en) 2001-09-28 2008-05-06 British Telecommunications Public Limited Company Agent-based intrusion detection system
US7308710B2 (en) 2001-09-28 2007-12-11 Jp Morgan Chase Bank Secured FTP architecture
US7644436B2 (en) 2002-01-24 2010-01-05 Arxceo Corporation Intelligent firewall
US7222366B2 (en) 2002-01-28 2007-05-22 International Business Machines Corporation Intrusion event filtering
US7076803B2 (en) 2002-01-28 2006-07-11 International Business Machines Corporation Integrated intrusion detection services
US7133368B2 (en) 2002-02-01 2006-11-07 Microsoft Corporation Peer-to-peer method of quality of service (QoS) probing and analysis and infrastructure employing same
US7174566B2 (en) 2002-02-01 2007-02-06 Intel Corporation Integrated network intrusion detection
US20030188189A1 (en) 2002-03-27 2003-10-02 Desai Anish P. Multi-level and multi-platform intrusion detection and response system
WO2003084137A2 (en) 2002-03-29 2003-10-09 Network Genomics, Inc. Methods for identifying network traffic flows
US7322044B2 (en) 2002-06-03 2008-01-22 Airdefense, Inc. Systems and methods for automated network policy exception detection and correction
EP1547337B1 (en) 2002-07-26 2006-03-22 Green Border Technologies Watermarking at the packet level
US20120023572A1 (en) 2010-07-23 2012-01-26 Q-Track Corporation Malicious Attack Response System and Associated Method
US7076696B1 (en) 2002-08-20 2006-07-11 Juniper Networks, Inc. Providing failover assurance in a device
JP3794491B2 (ja) 2002-08-20 2006-07-05 日本電気株式会社 攻撃防御システムおよび攻撃防御方法
US7305546B1 (en) 2002-08-29 2007-12-04 Sprint Communications Company L.P. Splicing of TCP/UDP sessions in a firewalled network environment
US8046835B2 (en) 2002-10-23 2011-10-25 Frederick S. M. Herz Distributed computer network security activity model SDI-SCAM
US9503470B2 (en) 2002-12-24 2016-11-22 Fred Herz Patents, LLC Distributed agent based model for security monitoring and response
US8327442B2 (en) 2002-12-24 2012-12-04 Herz Frederick S M System and method for a distributed application and network security system (SDI-SCAM)
US9197668B2 (en) 2003-02-28 2015-11-24 Novell, Inc. Access control to files based on source information
US7926104B1 (en) 2003-04-16 2011-04-12 Verizon Corporate Services Group Inc. Methods and systems for network attack detection and prevention through redirection
US8024795B2 (en) 2003-05-09 2011-09-20 Q1 Labs, Inc. Network intelligence system
US7562390B1 (en) 2003-05-21 2009-07-14 Foundry Networks, Inc. System and method for ARP anti-spoofing security
US20040243699A1 (en) 2003-05-29 2004-12-02 Mike Koclanes Policy based management of storage resources
US20050108562A1 (en) * 2003-06-18 2005-05-19 Khazan Roger I. Technique for detecting executable malicious code using a combination of static and dynamic analyses
US7596807B2 (en) 2003-07-03 2009-09-29 Arbor Networks, Inc. Method and system for reducing scope of self-propagating attack code in network
US7984129B2 (en) 2003-07-11 2011-07-19 Computer Associates Think, Inc. System and method for high-performance profiling of application events
EP1661025A4 (en) 2003-08-11 2010-05-26 Chorus Systems Inc SYSTEMS AND METHOD FOR GENERATING AND USING AN ADAPTIVE REFERENCE MODEL
US8127356B2 (en) 2003-08-27 2012-02-28 International Business Machines Corporation System, method and program product for detecting unknown computer attacks
US9130921B2 (en) 2003-09-30 2015-09-08 Ca, Inc. System and method for bridging identities in a service oriented architectureprofiling
US7421734B2 (en) 2003-10-03 2008-09-02 Verizon Services Corp. Network firewall test methods and apparatus
US7886348B2 (en) 2003-10-03 2011-02-08 Verizon Services Corp. Security management system for monitoring firewall operation
US8713306B1 (en) 2003-10-14 2014-04-29 Symantec Corporation Network decoys
WO2005043279A2 (en) 2003-10-31 2005-05-12 Disksites Research And Development Ltd. Device, system and method for storage and access of computer files
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US20050138402A1 (en) 2003-12-23 2005-06-23 Yoon Jeonghee M. Methods and apparatus for hierarchical system validation
EP1719316B1 (en) 2003-12-29 2012-05-23 Telefonaktiebolaget LM Ericsson (publ) Means and method for single sign-on access to a service network through an access network
US7546587B2 (en) * 2004-03-01 2009-06-09 Microsoft Corporation Run-time call stack verification
US8140694B2 (en) 2004-03-15 2012-03-20 Hewlett-Packard Development Company, L.P. Method and apparatus for effecting secure communications
EP1578082B1 (en) 2004-03-16 2007-04-18 AT&T Corp. Method and apparatus for providing mobile honeypots
US8881282B1 (en) 2004-04-01 2014-11-04 Fireeye, Inc. Systems and methods for malware attack detection and identification
US9027135B1 (en) 2004-04-01 2015-05-05 Fireeye, Inc. Prospective client identification using malware attack detection
US8584239B2 (en) 2004-04-01 2013-11-12 Fireeye, Inc. Virtual machine with dynamic data flow analysis
US7587537B1 (en) 2007-11-30 2009-09-08 Altera Corporation Serializer-deserializer circuits formed from input-output circuit registers
US8204984B1 (en) 2004-04-01 2012-06-19 Fireeye, Inc. Systems and methods for detecting encrypted bot command and control communication channels
US8566946B1 (en) 2006-04-20 2013-10-22 Fireeye, Inc. Malware containment on connection
US8539582B1 (en) 2004-04-01 2013-09-17 Fireeye, Inc. Malware containment and security analysis on connection
US8375444B2 (en) 2006-04-20 2013-02-12 Fireeye, Inc. Dynamic signature creation and enforcement
US8898788B1 (en) 2004-04-01 2014-11-25 Fireeye, Inc. Systems and methods for malware attack prevention
US8549638B2 (en) 2004-06-14 2013-10-01 Fireeye, Inc. System and method of containing computer worms
US8561177B1 (en) 2004-04-01 2013-10-15 Fireeye, Inc. Systems and methods for detecting communication channels of bots
US8171553B2 (en) 2004-04-01 2012-05-01 Fireeye, Inc. Heuristic based capture with replay to virtual machine
US7966658B2 (en) 2004-04-08 2011-06-21 The Regents Of The University Of California Detecting public network attacks using signatures and fast content analysis
US20050240989A1 (en) 2004-04-23 2005-10-27 Seoul National University Industry Foundation Method of sharing state between stateful inspection firewalls on mep network
US7596808B1 (en) 2004-04-30 2009-09-29 Tw Acquisition, Inc. Zero hop algorithm for network threat identification and mitigation
US7225468B2 (en) 2004-05-07 2007-05-29 Digital Security Networks, Llc Methods and apparatus for computer network security using intrusion detection and prevention
US8006301B2 (en) 2004-05-19 2011-08-23 Computer Associates Think, Inc. Method and systems for computer security
US7657735B2 (en) 2004-08-19 2010-02-02 At&T Corp System and method for monitoring network traffic
US8196199B2 (en) 2004-10-19 2012-06-05 Airdefense, Inc. Personal wireless monitoring agent
KR100612452B1 (ko) 2004-11-08 2006-08-16 삼성전자주식회사 악성 코드 탐지 장치 및 그 방법
JP4392029B2 (ja) 2004-11-11 2009-12-24 三菱電機株式会社 通信ネットワークにおけるipパケット中継方法
US8117659B2 (en) 2005-12-28 2012-02-14 Microsoft Corporation Malicious code infection cause-and-effect analysis
US20060161989A1 (en) 2004-12-13 2006-07-20 Eran Reshef System and method for deterring rogue users from attacking protected legitimate users
US7937755B1 (en) 2005-01-27 2011-05-03 Juniper Networks, Inc. Identification of network policy violations
CN101147376A (zh) 2005-02-04 2008-03-19 诺基亚公司 降低tcp洪泛攻击同时节省无线网络带宽的装置、方法和计算机程序产品
US20060203774A1 (en) 2005-03-10 2006-09-14 Nokia Corporation System, method and apparatus for selecting a remote tunnel endpoint for accessing packet data services
US8065722B2 (en) 2005-03-21 2011-11-22 Wisconsin Alumni Research Foundation Semantically-aware network intrusion signature generator
US20080098476A1 (en) 2005-04-04 2008-04-24 Bae Systems Information And Electronic Systems Integration Inc. Method and Apparatus for Defending Against Zero-Day Worm-Based Attacks
US10225282B2 (en) 2005-04-14 2019-03-05 International Business Machines Corporation System, method and program product to identify a distributed denial of service attack
US20070097976A1 (en) 2005-05-20 2007-05-03 Wood George D Suspect traffic redirection
GB0513375D0 (en) 2005-06-30 2005-08-03 Retento Ltd Computer security
US20080229415A1 (en) 2005-07-01 2008-09-18 Harsh Kapoor Systems and methods for processing data flows
CA2514039A1 (en) 2005-07-28 2007-01-28 Third Brigade Inc. Tcp normalization engine
US8015605B2 (en) 2005-08-29 2011-09-06 Wisconsin Alumni Research Foundation Scalable monitor of malicious network traffic
US20070067623A1 (en) 2005-09-22 2007-03-22 Reflex Security, Inc. Detection of system compromise by correlation of information objects
US7743418B2 (en) 2005-10-31 2010-06-22 Microsoft Corporation Identifying malware that employs stealth techniques
US7756834B2 (en) 2005-11-03 2010-07-13 I365 Inc. Malware and spyware attack recovery system and method
US7710933B1 (en) 2005-12-08 2010-05-04 Airtight Networks, Inc. Method and system for classification of wireless devices in local area computer networks
US7757289B2 (en) 2005-12-12 2010-07-13 Finjan, Inc. System and method for inspecting dynamically generated executable code
US20070143827A1 (en) 2005-12-21 2007-06-21 Fiberlink Methods and systems for intelligently controlling access to computing resources
US20070143851A1 (en) 2005-12-21 2007-06-21 Fiberlink Method and systems for controlling access to computing resources based on known security vulnerabilities
US7774363B2 (en) 2005-12-29 2010-08-10 Nextlabs, Inc. Detecting behavioral patterns and anomalies using information usage data
US7711800B2 (en) 2006-01-31 2010-05-04 Microsoft Corporation Network connectivity determination
US8443442B2 (en) 2006-01-31 2013-05-14 The Penn State Research Foundation Signature-free buffer overflow attack blocker
US7882538B1 (en) 2006-02-02 2011-02-01 Juniper Networks, Inc. Local caching of endpoint security information
US7774459B2 (en) 2006-03-01 2010-08-10 Microsoft Corporation Honey monkey network exploration
US8528057B1 (en) 2006-03-07 2013-09-03 Emc Corporation Method and apparatus for account virtualization
EP1994486B1 (en) 2006-03-22 2015-03-04 BRITISH TELECOMMUNICATIONS public limited company Method and apparatus for automated testing of software
US9171157B2 (en) 2006-03-28 2015-10-27 Blue Coat Systems, Inc. Method and system for tracking access to application data and preventing data exploitation by malicious programs
US8528087B2 (en) 2006-04-27 2013-09-03 Robot Genius, Inc. Methods for combating malicious software
US7849507B1 (en) 2006-04-29 2010-12-07 Ironport Systems, Inc. Apparatus for filtering server responses
US7890612B2 (en) 2006-05-08 2011-02-15 Electro Guard Corp. Method and apparatus for regulating data flow between a communications device and a network
US20070282782A1 (en) 2006-05-31 2007-12-06 Carey Julie M Method, system, and program product for managing information for a network topology change
WO2008002819A2 (en) 2006-06-29 2008-01-03 Energy Recovery, Inc. Rotary pressure transfer devices
US8479288B2 (en) 2006-07-21 2013-07-02 Research In Motion Limited Method and system for providing a honeypot mode for an electronic device
US8190868B2 (en) 2006-08-07 2012-05-29 Webroot Inc. Malware management through kernel detection
US8230505B1 (en) 2006-08-11 2012-07-24 Avaya Inc. Method for cooperative intrusion prevention through collaborative inference
US7934258B2 (en) 2006-08-17 2011-04-26 Informod Control Inc. System and method for remote authentication security management
JP2008066903A (ja) 2006-09-06 2008-03-21 Nec Corp 不正侵入検知システム及びその方法並びにそれを用いた通信装置
US8453234B2 (en) 2006-09-20 2013-05-28 Clearwire Ip Holdings Llc Centralized security management system
KR100798923B1 (ko) 2006-09-29 2008-01-29 한국전자통신연구원 컴퓨터 및 네트워크 보안을 위한 공격 분류 방법 및 이를수행하는 프로그램을 기록한 기록 매체
US7802050B2 (en) 2006-09-29 2010-09-21 Intel Corporation Monitoring a target agent execution pattern on a VT-enabled system
US9824107B2 (en) 2006-10-25 2017-11-21 Entit Software Llc Tracking changing state data to assist in computer network security
US8181248B2 (en) 2006-11-23 2012-05-15 Electronics And Telecommunications Research Institute System and method of detecting anomaly malicious code by using process behavior prediction technique
US8949986B2 (en) 2006-12-29 2015-02-03 Intel Corporation Network security elements using endpoint resources
US20080162397A1 (en) 2007-01-03 2008-07-03 Ori Zaltzman Method for Analyzing Activities Over Information Networks
US8156557B2 (en) 2007-01-04 2012-04-10 Cisco Technology, Inc. Protection against reflection distributed denial of service attacks
JP2008172483A (ja) 2007-01-11 2008-07-24 Matsushita Electric Ind Co Ltd 通信システム及びドアホンシステム
US8171545B1 (en) 2007-02-14 2012-05-01 Symantec Corporation Process profiling for behavioral anomaly detection
US8082471B2 (en) 2007-05-11 2011-12-20 Microsoft Corporation Self healing software
US9009829B2 (en) 2007-06-12 2015-04-14 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for baiting inside attackers
US20120084866A1 (en) 2007-06-12 2012-04-05 Stolfo Salvatore J Methods, systems, and media for measuring computer security
US8170712B2 (en) 2007-06-26 2012-05-01 Amazon Technologies, Inc. Method and apparatus for non-linear unit-level sortation in order fulfillment processes
US8140062B1 (en) 2007-09-12 2012-03-20 Oceans' Edge, Inc. Mobile device monitoring and control system
US7620992B2 (en) 2007-10-02 2009-11-17 Kaspersky Lab Zao System and method for detecting multi-component malware
CN101350052B (zh) 2007-10-15 2010-11-03 北京瑞星信息技术有限公司 发现计算机程序的恶意行为的方法和装置
US8880435B1 (en) 2007-10-26 2014-11-04 Bank Of America Corporation Detection and tracking of unauthorized computer access attempts
US8667582B2 (en) 2007-12-10 2014-03-04 Mcafee, Inc. System, method, and computer program product for directing predetermined network traffic to a honeypot
US20090158407A1 (en) 2007-12-13 2009-06-18 Fiberlink Communications Corporation Api translation for network access control (nac) agent
KR101407501B1 (ko) 2007-12-27 2014-06-17 삼성전자주식회사 후면 키패드를 갖는 휴대 단말기
US8595834B2 (en) 2008-02-04 2013-11-26 Samsung Electronics Co., Ltd Detecting unauthorized use of computing devices based on behavioral patterns
US8078556B2 (en) 2008-02-20 2011-12-13 International Business Machines Corporation Generating complex event processing rules utilizing machine learning from multiple events
US9130986B2 (en) 2008-03-19 2015-09-08 Websense, Inc. Method and system for protection against information stealing software
US8713666B2 (en) 2008-03-27 2014-04-29 Check Point Software Technologies, Ltd. Methods and devices for enforcing network access control utilizing secure packet tagging
US20090249471A1 (en) 2008-03-27 2009-10-01 Moshe Litvin Reversible firewall policies
US8170123B1 (en) 2008-04-15 2012-05-01 Desktone, Inc. Media acceleration for virtual computing services
US8073945B2 (en) 2008-04-25 2011-12-06 At&T Intellectual Property I, L.P. Method and apparatus for providing a measurement of performance for a network
US8144725B2 (en) 2008-05-28 2012-03-27 Apple Inc. Wireless femtocell setup methods and apparatus
US8229812B2 (en) 2009-01-28 2012-07-24 Headwater Partners I, Llc Open transaction central billing system
US9122895B2 (en) 2008-06-25 2015-09-01 Microsoft Technology Licensing, Llc Authorization for transient storage devices with multiple authentication silos
CN101304409B (zh) 2008-06-28 2011-04-13 成都市华为赛门铁克科技有限公司 恶意代码检测方法及系统
US8181250B2 (en) 2008-06-30 2012-05-15 Microsoft Corporation Personalized honeypot for detecting information leaks and security breaches
US8181033B1 (en) 2008-07-01 2012-05-15 Mcafee, Inc. Data leakage prevention system, method, and computer program product for preventing a predefined type of operation on predetermined data
US8353033B1 (en) 2008-07-02 2013-01-08 Symantec Corporation Collecting malware samples via unauthorized download protection
US7530106B1 (en) 2008-07-02 2009-05-05 Kaspersky Lab, Zao System and method for security rating of computer processes
US8413238B1 (en) 2008-07-21 2013-04-02 Zscaler, Inc. Monitoring darknet access to identify malicious activity
US20130247190A1 (en) 2008-07-22 2013-09-19 Joel R. Spurlock System, method, and computer program product for utilizing a data structure including event relationships to detect unwanted activity
MY146995A (en) 2008-09-12 2012-10-15 Mimos Bhd A honeypot host
US9098698B2 (en) 2008-09-12 2015-08-04 George Mason Research Foundation, Inc. Methods and apparatus for application isolation
US8370931B1 (en) 2008-09-17 2013-02-05 Trend Micro Incorporated Multi-behavior policy matching for malware detection
US9117078B1 (en) 2008-09-17 2015-08-25 Trend Micro Inc. Malware behavior analysis and policy creation
US8984628B2 (en) 2008-10-21 2015-03-17 Lookout, Inc. System and method for adverse mobile application identification
US9781148B2 (en) 2008-10-21 2017-10-03 Lookout, Inc. Methods and systems for sharing risk responses between collections of mobile communications devices
US8769684B2 (en) 2008-12-02 2014-07-01 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for masquerade attack detection by monitoring computer user behavior
MY151479A (en) 2008-12-16 2014-05-30 Secure Corp M Sdn Bhd F Method and apparatus for detecting shellcode insertion
KR20100078081A (ko) 2008-12-30 2010-07-08 (주) 세인트 시큐리티 커널 기반 시스템 행위 분석을 통한 알려지지 않은 악성코드 탐지 시스템 및 방법
US8474044B2 (en) 2009-01-05 2013-06-25 Cisco Technology, Inc Attack-resistant verification of auto-generated anti-malware signatures
DE102009016532A1 (de) 2009-04-06 2010-10-07 Giesecke & Devrient Gmbh Verfahren zur Durchführung einer Applikation mit Hilfe eines tragbaren Datenträgers
US8438386B2 (en) 2009-04-21 2013-05-07 Webroot Inc. System and method for developing a risk profile for an internet service
US20140046645A1 (en) 2009-05-04 2014-02-13 Camber Defense Security And Systems Solutions, Inc. Systems and methods for network monitoring and analysis of a simulated network
US8732296B1 (en) 2009-05-06 2014-05-20 Mcafee, Inc. System, method, and computer program product for redirecting IRC traffic identified utilizing a port-independent algorithm and controlling IRC based malware
US20100299430A1 (en) 2009-05-22 2010-11-25 Architecture Technology Corporation Automated acquisition of volatile forensic evidence from network devices
US8205035B2 (en) 2009-06-22 2012-06-19 Citrix Systems, Inc. Systems and methods for integration between application firewall and caching
US8776218B2 (en) 2009-07-21 2014-07-08 Sophos Limited Behavioral-based host intrusion prevention system
US8607340B2 (en) 2009-07-21 2013-12-10 Sophos Limited Host intrusion prevention system using software and user behavior analysis
US8793151B2 (en) 2009-08-28 2014-07-29 Src, Inc. System and method for organizational risk analysis and reporting by mapping detected risk patterns onto a risk ontology
US8413241B2 (en) 2009-09-17 2013-04-02 Oracle America, Inc. Integrated intrusion deflection, detection and introspection
US20120137367A1 (en) 2009-11-06 2012-05-31 Cataphora, Inc. Continuous anomaly detection based on behavior modeling and heterogeneous information analysis
US8850428B2 (en) 2009-11-12 2014-09-30 Trustware International Limited User transparent virtualization method for protecting computer programs and data from hostile code
US8488466B2 (en) 2009-12-16 2013-07-16 Vss Monitoring, Inc. Systems, methods, and apparatus for detecting a pattern within a data packet and detecting data packets related to a data packet including a detected pattern
US8438626B2 (en) 2009-12-23 2013-05-07 Citrix Systems, Inc. Systems and methods for processing application firewall session information on owner core in multiple core system
US8528091B2 (en) 2009-12-31 2013-09-03 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for detecting covert malware
US8307434B2 (en) 2010-01-27 2012-11-06 Mcafee, Inc. Method and system for discrete stateful behavioral analysis
US8949988B2 (en) 2010-02-26 2015-02-03 Juniper Networks, Inc. Methods for proactively securing a web application and apparatuses thereof
US8984621B2 (en) 2010-02-27 2015-03-17 Novell, Inc. Techniques for secure access management in virtual environments
US20110219449A1 (en) 2010-03-04 2011-09-08 St Neitzel Michael Malware detection method, system and computer program product
US20110219443A1 (en) 2010-03-05 2011-09-08 Alcatel-Lucent Usa, Inc. Secure connection initiation with hosts behind firewalls
US8826268B2 (en) 2010-03-08 2014-09-02 Microsoft Corporation Virtual software application deployment configurations
US8549643B1 (en) 2010-04-02 2013-10-01 Symantec Corporation Using decoys by a data loss prevention system to protect against unscripted activity
US8707427B2 (en) 2010-04-06 2014-04-22 Triumfant, Inc. Automated malware detection and remediation
KR101661161B1 (ko) 2010-04-07 2016-10-10 삼성전자주식회사 이동통신 단말기에서 인터넷프로토콜 패킷 필터링 장치 및 방법
US9213838B2 (en) 2011-05-13 2015-12-15 Mcafee Ireland Holdings Limited Systems and methods of processing data associated with detection and/or handling of malware
US8627475B2 (en) 2010-04-08 2014-01-07 Microsoft Corporation Early detection of potential malware
US8464345B2 (en) 2010-04-28 2013-06-11 Symantec Corporation Behavioral signature generation using clustering
US8733732B2 (en) 2010-05-24 2014-05-27 Eaton Corporation Pressurized o-ring pole piece seal for a manifold
US9239909B2 (en) 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
WO2012011070A1 (en) 2010-07-21 2012-01-26 Seculert Ltd. Network protection system and method
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
EP2609537A1 (en) 2010-08-26 2013-07-03 Verisign, Inc. Method and system for automatic detection and analysis of malware
JP4802295B1 (ja) 2010-08-31 2011-10-26 株式会社スプリングソフト ネットワークシステム及び仮想プライベート接続形成方法
US8607054B2 (en) 2010-10-15 2013-12-10 Microsoft Corporation Remote access to hosted virtual machines by enterprise users
US8850172B2 (en) 2010-11-15 2014-09-30 Microsoft Corporation Analyzing performance of computing devices in usage scenarios
US9690915B2 (en) 2010-11-29 2017-06-27 Biocatch Ltd. Device, method, and system of detecting remote access users and differentiating among users
WO2012071989A1 (zh) 2010-11-29 2012-06-07 北京奇虎科技有限公司 基于机器学习的程序识别方法及装置
US8782791B2 (en) 2010-12-01 2014-07-15 Symantec Corporation Computer virus detection systems and methods
US20120151565A1 (en) 2010-12-10 2012-06-14 Eric Fiterman System, apparatus and method for identifying and blocking anomalous or improper use of identity information on computer networks
US20120260304A1 (en) 2011-02-15 2012-10-11 Webroot Inc. Methods and apparatus for agent-based malware management
US8555385B1 (en) 2011-03-14 2013-10-08 Symantec Corporation Techniques for behavior based malware analysis
US8725898B1 (en) 2011-03-17 2014-05-13 Amazon Technologies, Inc. Scalable port address translations
US8959569B2 (en) 2011-03-18 2015-02-17 Juniper Networks, Inc. Security enforcement in virtualized systems
US20120255003A1 (en) 2011-03-31 2012-10-04 Mcafee, Inc. System and method for securing access to the objects of an operating system
US8863283B2 (en) 2011-03-31 2014-10-14 Mcafee, Inc. System and method for securing access to system calls
US8042186B1 (en) 2011-04-28 2011-10-18 Kaspersky Lab Zao System and method for detection of complex malware
US9305165B2 (en) 2011-05-06 2016-04-05 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for detecting injected machine code
US8955037B2 (en) 2011-05-11 2015-02-10 Oracle International Corporation Access management architecture
US9436826B2 (en) 2011-05-16 2016-09-06 Microsoft Technology Licensing, Llc Discovering malicious input files and performing automatic and distributed remediation
US8849880B2 (en) 2011-05-18 2014-09-30 Hewlett-Packard Development Company, L.P. Providing a shadow directory and virtual files to store metadata
US8966625B1 (en) 2011-05-24 2015-02-24 Palo Alto Networks, Inc. Identification of malware sites using unknown URL sites and newly registered DNS addresses
US8738765B2 (en) 2011-06-14 2014-05-27 Lookout, Inc. Mobile device DNS optimization
KR101206853B1 (ko) 2011-06-23 2012-11-30 주식회사 잉카인터넷 네트워크 접근 제어시스템 및 방법
US8893278B1 (en) 2011-07-12 2014-11-18 Trustwave Holdings, Inc. Detecting malware communication on an infected computing device
WO2013014672A1 (en) 2011-07-26 2013-01-31 Light Cyber Ltd A method for detecting anomaly action within a computer network
KR101380966B1 (ko) 2011-08-24 2014-05-02 주식회사 팬택 휴대 단말 시스템에서의 보안 장치
WO2013033222A1 (en) 2011-08-29 2013-03-07 Fiberlink Communications Corporation Platform for deployment and distribution of modules to endpoints
US9027124B2 (en) 2011-09-06 2015-05-05 Broadcom Corporation System for monitoring an operation of a device
ES2755780T3 (es) 2011-09-16 2020-04-23 Veracode Inc Análisis estático y de comportamiento automatizado mediante la utilización de un espacio aislado instrumentado y clasificación de aprendizaje automático para seguridad móvil
WO2013048986A1 (en) 2011-09-26 2013-04-04 Knoa Software, Inc. Method, system and program product for allocation and/or prioritization of electronic resources
US8473748B2 (en) 2011-09-27 2013-06-25 George P. Sampas Mobile device-based authentication
US8806639B2 (en) 2011-09-30 2014-08-12 Avaya Inc. Contextual virtual machines for application quarantine and assessment method and system
US10025928B2 (en) 2011-10-03 2018-07-17 Webroot Inc. Proactive browser content analysis
US20130104197A1 (en) 2011-10-23 2013-04-25 Gopal Nandakumar Authentication system
US9223978B2 (en) 2011-10-28 2015-12-29 Confer Technologies, Inc. Security policy deployment and enforcement system for the detection and control of polymorphic and targeted malware
US20130152200A1 (en) 2011-12-09 2013-06-13 Christoph Alme Predictive Heap Overflow Protection
DE102011056502A1 (de) 2011-12-15 2013-06-20 Avira Holding GmbH Verfahren und Vorrichtung zur automatischen Erzeugung von Virenbeschreibungen
EP2611106A1 (en) 2012-01-02 2013-07-03 Telefónica, S.A. System for automated prevention of fraud
US9772832B2 (en) 2012-01-20 2017-09-26 S-Printing Solution Co., Ltd. Computing system with support for ecosystem mechanism and method of operation thereof
JP5792654B2 (ja) 2012-02-15 2015-10-14 株式会社日立製作所 セキュリティ監視システムおよびセキュリティ監視方法
US8904239B2 (en) 2012-02-17 2014-12-02 American Express Travel Related Services Company, Inc. System and method for automated test configuration and evaluation
US9356942B1 (en) 2012-03-05 2016-05-31 Neustar, Inc. Method and system for detecting network compromise
US9081747B1 (en) 2012-03-06 2015-07-14 Big Bang Llc Computer program deployment to one or more target devices
WO2013134616A1 (en) * 2012-03-09 2013-09-12 RAPsphere, Inc. Method and apparatus for securing mobile applications
US9734333B2 (en) 2012-04-17 2017-08-15 Heat Software Usa Inc. Information security techniques including detection, interdiction and/or mitigation of memory injection attacks
US8959362B2 (en) 2012-04-30 2015-02-17 General Electric Company Systems and methods for controlling file execution for industrial control systems
US9027125B2 (en) 2012-05-01 2015-05-05 Taasera, Inc. Systems and methods for network flow remediation based on risk correlation
US8713658B1 (en) 2012-05-25 2014-04-29 Graphon Corporation System for and method of providing single sign-on (SSO) capability in an application publishing environment
US9787589B2 (en) 2012-06-08 2017-10-10 Apple Inc. Filtering of unsolicited incoming packets to electronic devices
US9043903B2 (en) 2012-06-08 2015-05-26 Crowdstrike, Inc. Kernel-level security agent
US8789135B1 (en) 2012-06-15 2014-07-22 Google Inc. Scalable stateful firewall design in openflow based networks
GB2503230A (en) 2012-06-19 2013-12-25 Appsense Ltd Location based network access
US8732791B2 (en) 2012-06-20 2014-05-20 Sophos Limited Multi-part internal-external process system for providing virtualization security protection
US9736260B2 (en) 2012-06-21 2017-08-15 Cisco Technology, Inc. Redirecting from a cloud service to a third party website to save costs without sacrificing security
US9043920B2 (en) 2012-06-27 2015-05-26 Tenable Network Security, Inc. System and method for identifying exploitable weak points in a network
US9319417B2 (en) 2012-06-28 2016-04-19 Fortinet, Inc. Data leak protection
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
US8821242B2 (en) 2012-07-25 2014-09-02 Lumos Labs, Inc. Systems and methods for enhancing cognition
US20140053267A1 (en) 2012-08-20 2014-02-20 Trusteer Ltd. Method for identifying malicious executables
US9087191B2 (en) * 2012-08-24 2015-07-21 Vmware, Inc. Method and system for facilitating isolated workspace for applications
US8984331B2 (en) 2012-09-06 2015-03-17 Triumfant, Inc. Systems and methods for automated memory and thread execution anomaly detection in a computer network
US9117087B2 (en) 2012-09-06 2015-08-25 Box, Inc. System and method for creating a secure channel for inter-application communication based on intents
US9292688B2 (en) 2012-09-26 2016-03-22 Northrop Grumman Systems Corporation System and method for automated machine-learning, zero-day malware detection
US9485276B2 (en) 2012-09-28 2016-11-01 Juniper Networks, Inc. Dynamic service handling using a honeypot
US20140096229A1 (en) 2012-09-28 2014-04-03 Juniper Networks, Inc. Virtual honeypot
US20140108793A1 (en) 2012-10-16 2014-04-17 Citrix Systems, Inc. Controlling mobile device access to secure data
US9369476B2 (en) 2012-10-18 2016-06-14 Deutsche Telekom Ag System for detection of mobile applications network behavior-netwise
US10447711B2 (en) 2012-10-18 2019-10-15 White Ops Inc. System and method for identification of automated browser agents
US9483642B2 (en) 2012-10-30 2016-11-01 Gabriel Kedma Runtime detection of self-replicating malware
US8839369B1 (en) 2012-11-09 2014-09-16 Trend Micro Incorporated Methods and systems for detecting email phishing attacks
US8931101B2 (en) 2012-11-14 2015-01-06 International Business Machines Corporation Application-level anomaly detection
US9288227B2 (en) 2012-11-28 2016-03-15 Verisign, Inc. Systems and methods for transparently monitoring network traffic for denial of service attacks
JP2017503222A (ja) 2013-01-25 2017-01-26 レムテクス, インコーポレイテッド ネットワークセキュリティシステム、方法、及び装置
US9106692B2 (en) 2013-01-31 2015-08-11 Northrop Grumman Systems Corporation System and method for advanced malware analysis
KR20150119895A (ko) 2013-02-15 2015-10-26 퀄컴 인코포레이티드 다수의 분석기 모델 제공자들을 갖는 이동 디바이스에서의 온-라인 거동 분석 엔진
US9491187B2 (en) 2013-02-15 2016-11-08 Qualcomm Incorporated APIs for obtaining device-specific behavior classifier models from the cloud
US9246774B2 (en) 2013-02-21 2016-01-26 Hewlett Packard Enterprise Development Lp Sample based determination of network policy violations
US9467465B2 (en) 2013-02-25 2016-10-11 Beyondtrust Software, Inc. Systems and methods of risk based rules for application control
US10713356B2 (en) 2013-03-04 2020-07-14 Crowdstrike, Inc. Deception-based responses to security attacks
US10127379B2 (en) 2013-03-13 2018-11-13 Mcafee, Llc Profiling code execution
US9430646B1 (en) 2013-03-14 2016-08-30 Fireeye, Inc. Distributed systems and methods for automatically detecting unknown bots and botnets
US10742601B2 (en) 2013-03-14 2020-08-11 Fortinet, Inc. Notifying users within a protected network regarding events and information
US9871766B2 (en) 2013-03-15 2018-01-16 Hewlett Packard Enterprise Development Lp Secure path determination between devices
US9330259B2 (en) 2013-03-19 2016-05-03 Trusteer, Ltd. Malware discovery method and system
EP2785008A1 (en) 2013-03-29 2014-10-01 British Telecommunications public limited company Method and apparatus for detecting a multi-stage event
EP2992471A4 (en) 2013-05-03 2016-12-14 Webroot Inc METHOD AND DEVICE FOR PROVIDING FORENSIC VISIBILITY IN SYSTEMS AND NETWORKS
US9716996B2 (en) 2013-05-21 2017-07-25 Brocade Communications Systems, Inc. Method and system for selective and secure interaction of BYOD (bring your own device) with enterprise network through mobile wireless networks
US9197601B2 (en) 2013-06-05 2015-11-24 Bat Blue Networks, Inc. System and method for providing a single global borderless virtual perimeter through distributed points of presence
US8943594B1 (en) 2013-06-24 2015-01-27 Haystack Security LLC Cyber attack disruption through multiple detonations of received payloads
US20150006384A1 (en) 2013-06-28 2015-01-01 Zahid Nasiruddin Shaikh Device fingerprinting
US9300686B2 (en) 2013-06-28 2016-03-29 Fireeye, Inc. System and method for detecting malicious links in electronic messages
US8973142B2 (en) 2013-07-02 2015-03-03 Imperva, Inc. Compromised insider honey pots using reverse honey tokens
US9117080B2 (en) 2013-07-05 2015-08-25 Bitdefender IPR Management Ltd. Process evaluation for malware detection in virtual machines
US9807092B1 (en) 2013-07-05 2017-10-31 Dcs7, Llc Systems and methods for classification of internet devices as hostile or benign
US10284570B2 (en) 2013-07-24 2019-05-07 Wells Fargo Bank, National Association System and method to detect threats to computer based devices and systems
US9166993B1 (en) 2013-07-25 2015-10-20 Symantec Corporation Anomaly detection based on profile history and peer history
CN103649915B (zh) 2013-07-31 2016-11-02 华为技术有限公司 关联插件管理方法、设备及系统
US9553867B2 (en) 2013-08-01 2017-01-24 Bitglass, Inc. Secure application access system
US10084817B2 (en) 2013-09-11 2018-09-25 NSS Labs, Inc. Malware and exploit campaign detection system and method
US9607146B2 (en) 2013-09-18 2017-03-28 Qualcomm Incorporated Data flow based behavioral analysis on mobile devices
US20150089655A1 (en) 2013-09-23 2015-03-26 Electronics And Telecommunications Research Institute System and method for detecting malware based on virtual host
US9601000B1 (en) 2013-09-27 2017-03-21 EMC IP Holding Company LLC Data-driven alert prioritization
CN105493046B (zh) 2013-09-28 2019-08-13 迈克菲有限公司 面向服务的中介、方法和计算机可读存储介质
US9576145B2 (en) 2013-09-30 2017-02-21 Acalvio Technologies, Inc. Alternate files returned for suspicious processes in a compromised computer network
US20150156214A1 (en) 2013-10-18 2015-06-04 White Ops, Inc. Detection and prevention of online user interface manipulation via remote control
US9147072B2 (en) 2013-10-28 2015-09-29 Qualcomm Incorporated Method and system for performing behavioral analysis operations in a mobile device based on application state
US20150128206A1 (en) 2013-11-04 2015-05-07 Trusteer Ltd. Early Filtering of Events Using a Kernel-Based Filter
US9407602B2 (en) 2013-11-07 2016-08-02 Attivo Networks, Inc. Methods and apparatus for redirecting attacks on a network
IN2013MU03602A (ja) 2013-11-18 2015-07-31 Tata Consultancy Services Ltd
CN103607399B (zh) 2013-11-25 2016-07-27 中国人民解放军理工大学 基于暗网的专用ip网络安全监测系统及方法
US9323929B2 (en) 2013-11-26 2016-04-26 Qualcomm Incorporated Pre-identifying probable malicious rootkit behavior using behavioral contracts
US9185136B2 (en) 2013-11-28 2015-11-10 Cyber-Ark Software Ltd. Correlation based security risk identification
US9753796B2 (en) 2013-12-06 2017-09-05 Lookout, Inc. Distributed monitoring, evaluation, and response for multiple devices
US9652362B2 (en) 2013-12-06 2017-05-16 Qualcomm Incorporated Methods and systems of using application-specific and application-type-specific models for the efficient classification of mobile device behaviors
US9386034B2 (en) 2013-12-17 2016-07-05 Hoplite Industries, Inc. Behavioral model based malware protection system and method
JP6236704B2 (ja) 2013-12-27 2017-11-29 マカフィー, エルエルシー ネットワークアクティビティを示す実行可能ファイルの分離
US9432360B1 (en) 2013-12-31 2016-08-30 Emc Corporation Security-aware split-server passcode verification for one-time authentication tokens
KR102017756B1 (ko) 2014-01-13 2019-09-03 한국전자통신연구원 이상행위 탐지 장치 및 방법
US20150205962A1 (en) 2014-01-23 2015-07-23 Cylent Systems, Inc. Behavioral analytics driven host-based malicious behavior and data exfiltration disruption
US9639426B2 (en) 2014-01-24 2017-05-02 Commvault Systems, Inc. Single snapshot for multiple applications
WO2015113052A1 (en) 2014-01-27 2015-07-30 Webroot Inc. Detecting and preventing execution of software exploits
US9262635B2 (en) 2014-02-05 2016-02-16 Fireeye, Inc. Detection efficacy of virtual machine-based analysis with application specific events
US10091238B2 (en) 2014-02-11 2018-10-02 Varmour Networks, Inc. Deception using distributed threat detection
US20150039513A1 (en) 2014-02-14 2015-02-05 Brighterion, Inc. User device profiling in transaction authentications
KR101671336B1 (ko) * 2014-02-27 2016-11-16 (주)스마일게이트엔터테인먼트 코드 분리가 적용된 언패킹 보호 방법 및 장치
US9594665B2 (en) 2014-03-05 2017-03-14 Microsoft Technology Licensing, Llc Regression evaluation using behavior models of software applications
WO2015138508A1 (en) 2014-03-11 2015-09-17 Vectra Networks, Inc. Method and system for detecting bot behavior
US9832217B2 (en) 2014-03-13 2017-11-28 International Business Machines Corporation Computer implemented techniques for detecting, investigating and remediating security violations to IT infrastructure
US9838424B2 (en) 2014-03-20 2017-12-05 Microsoft Technology Licensing, Llc Techniques to provide network security through just-in-time provisioned accounts
US10289405B2 (en) 2014-03-20 2019-05-14 Crowdstrike, Inc. Integrity assurance and rebootless updating during runtime
US20160078365A1 (en) 2014-03-21 2016-03-17 Philippe Baumard Autonomous detection of incongruous behaviors
EP3123390A4 (en) 2014-03-27 2017-10-25 Barkly Protects, Inc. Malicious software identification integrating behavioral analytics and hardware events
US9684787B2 (en) 2014-04-08 2017-06-20 Qualcomm Incorporated Method and system for inferring application states by performing behavioral analysis operations in a mobile device
US9912690B2 (en) 2014-04-08 2018-03-06 Capital One Financial Corporation System and method for malware detection using hashing techniques
US9356950B2 (en) 2014-05-07 2016-05-31 Attivo Networks Inc. Evaluating URLS for malicious content
US9609019B2 (en) 2014-05-07 2017-03-28 Attivo Networks Inc. System and method for directing malicous activity to a monitoring system
US20150326592A1 (en) 2014-05-07 2015-11-12 Attivo Networks Inc. Emulating shellcode attacks
US10243985B2 (en) 2014-06-03 2019-03-26 Hexadite Ltd. System and methods thereof for monitoring and preventing security incidents in a computerized environment
US9628502B2 (en) 2014-06-09 2017-04-18 Meadow Hills, LLC Active attack detection system
US10212176B2 (en) 2014-06-23 2019-02-19 Hewlett Packard Enterprise Development Lp Entity group behavior profiling
US9490987B2 (en) 2014-06-30 2016-11-08 Paypal, Inc. Accurately classifying a computer program interacting with a computer system using questioning and fingerprinting
US9705914B2 (en) 2014-07-23 2017-07-11 Cisco Technology, Inc. Signature creation for unknown attacks
US20160042180A1 (en) 2014-08-07 2016-02-11 Ut Battelle, Llc Behavior specification, finding main, and call graph visualizations
US9710648B2 (en) 2014-08-11 2017-07-18 Sentinel Labs Israel Ltd. Method of malware detection and system thereof
US11507663B2 (en) 2014-08-11 2022-11-22 Sentinel Labs Israel Ltd. Method of remediating operations performed by a program and system thereof
US10102374B1 (en) 2014-08-11 2018-10-16 Sentinel Labs Israel Ltd. Method of remediating a program and system thereof by undoing operations
JP6432210B2 (ja) 2014-08-22 2018-12-05 富士通株式会社 セキュリティシステム、セキュリティ方法、セキュリティ装置、及び、プログラム
US9547516B2 (en) 2014-08-22 2017-01-17 Nicira, Inc. Method and system for migrating virtual machines in virtual infrastructure
US9807115B2 (en) 2014-09-05 2017-10-31 Topspin Security Ltd System and a method for identifying the presence of malware and ransomware using mini-traps set at network endpoints
US9807114B2 (en) 2014-09-05 2017-10-31 Topspin Securtiy Ltd System and a method for identifying the presence of malware using mini-traps set at network endpoints
US9225734B1 (en) 2014-09-10 2015-12-29 Fortinet, Inc. Data leak protection in upper layer protocols
US9992225B2 (en) 2014-09-12 2018-06-05 Topspin Security Ltd. System and a method for identifying malware network activity using a decoy environment
US9591006B2 (en) 2014-09-18 2017-03-07 Microsoft Technology Licensing, Llc Lateral movement detection
US9495188B1 (en) 2014-09-30 2016-11-15 Palo Alto Networks, Inc. Synchronizing a honey network configuration to reflect a target network environment
US10044675B1 (en) 2014-09-30 2018-08-07 Palo Alto Networks, Inc. Integrating a honey network with a target network to counter IP and peer-checking evasion techniques
US9578015B2 (en) 2014-10-31 2017-02-21 Vmware, Inc. Step-up authentication for single sign-on
US10225245B2 (en) 2014-11-18 2019-03-05 Auth0, Inc. Identity infrastructure as a service
WO2016081561A1 (en) 2014-11-20 2016-05-26 Attivo Networks Inc. System and method for directing malicious activity to a monitoring system
US9240976B1 (en) 2015-01-06 2016-01-19 Blackpoint Holdings, Llc Systems and methods for providing network security monitoring
WO2016138067A1 (en) 2015-02-24 2016-09-01 Cloudlock, Inc. System and method for securing an enterprise computing environment
US10148693B2 (en) 2015-03-25 2018-12-04 Fireeye, Inc. Exploit detection system
EP3231133B1 (en) 2015-04-07 2020-05-27 Hewlett-Packard Development Company, L.P. Providing selective access to resources
US10135633B2 (en) 2015-04-21 2018-11-20 Cujo LLC Network security analysis for smart appliances
US9954870B2 (en) 2015-04-29 2018-04-24 International Business Machines Corporation System conversion in a networked computing environment
US10599844B2 (en) 2015-05-12 2020-03-24 Webroot, Inc. Automatic threat detection of executable files based on static data analysis
US9553885B2 (en) 2015-06-08 2017-01-24 Illusive Networks Ltd. System and method for creation, deployment and management of augmented attacker map
US10382484B2 (en) 2015-06-08 2019-08-13 Illusive Networks Ltd. Detecting attackers who target containerized clusters
US10237280B2 (en) 2015-06-25 2019-03-19 Websafety, Inc. Management and control of mobile computing device using local and remote software agents
US9680833B2 (en) 2015-06-25 2017-06-13 Imperva, Inc. Detection of compromised unmanaged client end stations using synchronized tokens from enterprise-managed client end stations
US10476891B2 (en) 2015-07-21 2019-11-12 Attivo Networks Inc. Monitoring access of network darkspace
US9641544B1 (en) 2015-09-18 2017-05-02 Palo Alto Networks, Inc. Automated insider threat prevention
US20170093910A1 (en) 2015-09-25 2017-03-30 Acalvio Technologies, Inc. Dynamic security mechanisms
EP3885951B1 (en) 2015-10-15 2022-06-22 Sentinel Labs Israel Ltd. Method of remediating operations performed by a program and system thereof
US10116674B2 (en) 2015-10-30 2018-10-30 Citrix Systems, Inc. Framework for explaining anomalies in accessing web applications
US20170134405A1 (en) 2015-11-09 2017-05-11 Qualcomm Incorporated Dynamic Honeypot System
US9672538B1 (en) 2015-11-09 2017-06-06 Radiumone, Inc. Delivering personalized content based on geolocation information in a social graph with sharing activity of users of the open web
US10594656B2 (en) 2015-11-17 2020-03-17 Zscaler, Inc. Multi-tenant cloud-based firewall systems and methods
US10116536B2 (en) 2015-11-18 2018-10-30 Adobe Systems Incorporated Identifying multiple devices belonging to a single user
GB2534459B (en) 2015-11-19 2018-08-01 F Secure Corp Improving security of computer resources
US9886563B2 (en) 2015-11-25 2018-02-06 Box, Inc. Personalized online content access experiences using inferred user intent to configure online session attributes
US9942270B2 (en) 2015-12-10 2018-04-10 Attivo Networks Inc. Database deception in directory services
US10348739B2 (en) 2016-02-09 2019-07-09 Ca, Inc. Automated data risk assessment
US10791097B2 (en) 2016-04-14 2020-09-29 Sophos Limited Portable encryption format
US10628597B2 (en) 2016-04-14 2020-04-21 Sophos Limited Just-in-time encryption
US9984248B2 (en) 2016-02-12 2018-05-29 Sophos Limited Behavioral-based control of access to encrypted content by a process
US10686827B2 (en) 2016-04-14 2020-06-16 Sophos Limited Intermediate encryption for exposed content
US10681078B2 (en) 2016-06-10 2020-06-09 Sophos Limited Key throttling to mitigate unauthorized file access
US9602531B1 (en) 2016-02-16 2017-03-21 Cylance, Inc. Endpoint-based man in the middle attack detection
US9843602B2 (en) 2016-02-18 2017-12-12 Trend Micro Incorporated Login failure sequence for detecting phishing
US10771478B2 (en) 2016-02-18 2020-09-08 Comcast Cable Communications, Llc Security monitoring at operating system kernel level
US10469523B2 (en) 2016-02-24 2019-11-05 Imperva, Inc. Techniques for detecting compromises of enterprise end stations utilizing noisy tokens
US20170264639A1 (en) 2016-03-10 2017-09-14 Acalvio Technologies, Inc. Active deception system
US20170302665A1 (en) 2016-03-22 2017-10-19 Holonet Security, Inc. Network hologram for enterprise security
US10187413B2 (en) 2016-03-25 2019-01-22 Cisco Technology, Inc. Network-based approach for training supervised learning classifiers
US10652271B2 (en) 2016-03-25 2020-05-12 Verisign, Inc. Detecting and remediating highly vulnerable domain names using passive DNS measurements
US10542044B2 (en) 2016-04-29 2020-01-21 Attivo Networks Inc. Authentication incident detection and management
US9888032B2 (en) 2016-05-03 2018-02-06 Check Point Software Technologies Ltd. Method and system for mitigating the effects of ransomware
US20170324777A1 (en) 2016-05-05 2017-11-09 Javelin Networks, Inc. Injecting supplemental data into data queries at network end-points
US20170324774A1 (en) 2016-05-05 2017-11-09 Javelin Networks, Inc. Adding supplemental data to a security-related query
US10515062B2 (en) 2016-05-09 2019-12-24 Sumo Logic, Inc. Searchable investigation history for event data store
US10375110B2 (en) 2016-05-12 2019-08-06 Attivo Networks Inc. Luring attackers towards deception servers
US9948652B2 (en) 2016-05-16 2018-04-17 Bank Of America Corporation System for resource-centric threat modeling and identifying controls for securing technology resources
US10362013B2 (en) 2016-05-27 2019-07-23 Dropbox, Inc. Out of box experience application API integration
US10440053B2 (en) 2016-05-31 2019-10-08 Lookout, Inc. Methods and systems for detecting and preventing network connection compromise
US11409870B2 (en) * 2016-06-16 2022-08-09 Virsec Systems, Inc. Systems and methods for remediating memory corruption in a computer application
US10250636B2 (en) 2016-07-07 2019-04-02 Attivo Networks Inc Detecting man-in-the-middle attacks
US9721097B1 (en) * 2016-07-21 2017-08-01 Cylance Inc. Neural attention mechanisms for malware analysis
US10650141B2 (en) * 2016-08-03 2020-05-12 Sophos Limited Mitigation of return-oriented programming attacks
US10805325B2 (en) 2016-08-09 2020-10-13 Imperva, Inc. Techniques for detecting enterprise intrusions utilizing active tokens
US10110627B2 (en) 2016-08-30 2018-10-23 Arbor Networks, Inc. Adaptive self-optimzing DDoS mitigation
GB2554390B (en) * 2016-09-23 2018-10-31 1E Ltd Computer security profiling
US20180183815A1 (en) * 2016-10-17 2018-06-28 Kerry Wayne Enfinger System and method for detecting malware
US10609074B2 (en) 2016-11-23 2020-03-31 Attivo Networks Inc. Implementing decoys in network endpoints
US10599842B2 (en) 2016-12-19 2020-03-24 Attivo Networks Inc. Deceiving attackers in endpoint systems
US11695800B2 (en) 2016-12-19 2023-07-04 SentinelOne, Inc. Deceiving attackers accessing network data
US11616812B2 (en) 2016-12-19 2023-03-28 Attivo Networks Inc. Deceiving attackers accessing active directory data
US10169586B2 (en) 2016-12-31 2019-01-01 Fortinet, Inc. Ransomware detection and damage mitigation
US20180248896A1 (en) 2017-02-24 2018-08-30 Zitovault Software, Inc. System and method to prevent, detect, thwart, and recover automatically from ransomware cyber attacks, using behavioral analysis and machine learning
GB201708671D0 (en) 2017-05-31 2017-07-12 Inquisitive Systems Ltd Forensic analysis
KR101960869B1 (ko) * 2017-06-30 2019-03-21 주식회사 씨티아이랩 인공지능 기반 악성코드 검출 시스템 및 방법
US10462171B2 (en) 2017-08-08 2019-10-29 Sentinel Labs Israel Ltd. Methods, systems, and devices for dynamically modeling and grouping endpoints for edge networking
US10979453B2 (en) 2017-08-31 2021-04-13 International Business Machines Corporation Cyber-deception using network port projection
US10574698B1 (en) 2017-09-01 2020-02-25 Amazon Technologies, Inc. Configuration and deployment of decoy content over a network
US10509905B2 (en) 2017-09-05 2019-12-17 Attivo Networks Inc. Ransomware mitigation system
US10938854B2 (en) 2017-09-22 2021-03-02 Acronis International Gmbh Systems and methods for preventive ransomware detection using file honeypots
US10848519B2 (en) * 2017-10-12 2020-11-24 Charles River Analytics, Inc. Cyber vaccine and predictive-malware-defense methods and systems
US10360012B2 (en) 2017-11-09 2019-07-23 International Business Machines Corporation Dynamic selection of deployment configurations of software applications
US10915631B2 (en) * 2017-12-28 2021-02-09 Intel Corporation Deep learning on execution trace data for exploit detection
US11470115B2 (en) 2018-02-09 2022-10-11 Attivo Networks, Inc. Implementing decoys in a network environment
US10826941B2 (en) 2018-05-10 2020-11-03 Fortinet, Inc. Systems and methods for centrally managed host and network firewall services
KR101969572B1 (ko) * 2018-06-22 2019-04-16 주식회사 에프원시큐리티 악성코드 탐지 장치 및 방법
EP3973427A4 (en) 2019-05-20 2023-06-21 Sentinel Labs Israel Ltd. SYSTEMS AND METHODS FOR EXECUTABLE CODE DETECTION, AUTOMATIC FEATURE EXTRACTION, AND POSITION-INDEPENDENT CODE DETECTION
US11038658B2 (en) 2019-05-22 2021-06-15 Attivo Networks Inc. Deceiving attackers in endpoint systems
US11108861B1 (en) 2020-08-26 2021-08-31 Commvault Systems, Inc. System for managing multiple information management cells
US11579857B2 (en) 2020-12-16 2023-02-14 Sentinel Labs Israel Ltd. Systems, methods and devices for device fingerprinting and automatic deployment of software in a computing network using a peer-to-peer approach

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050198507A1 (en) * 2004-03-05 2005-09-08 Microsoft Corporation Import address table verification
JP2006106939A (ja) * 2004-10-01 2006-04-20 Hitachi Ltd 侵入検知方法及び侵入検知装置並びにプログラム
JP2013168141A (ja) * 2012-01-31 2013-08-29 Trusteer Ltd マルウェアの検出方法
US20140020046A1 (en) * 2012-07-12 2014-01-16 International Business Machines Corporation Source code analysis of inter-related code bases
JP2015534690A (ja) * 2012-10-19 2015-12-03 マカフィー, インコーポレイテッド モバイル・アプリケーション管理
US20160055337A1 (en) * 2013-03-25 2016-02-25 British Telecommunications Plc Suspicious program detection
US20150200955A1 (en) * 2014-01-13 2015-07-16 Cisco Technology, Inc. Dynamic filtering for sdn api calls across a security boundary
US20170206357A1 (en) * 2014-11-17 2017-07-20 Morphisec Information Security Ltd. Malicious code protection for computer systems based on process modification
WO2017068889A1 (ja) * 2015-10-19 2017-04-27 日本電信電話株式会社 解析装置、解析方法、および解析プログラム

Also Published As

Publication number Publication date
US20240184884A1 (en) 2024-06-06
IL288122A (en) 2022-01-01
US20220019659A1 (en) 2022-01-20
US20200372150A1 (en) 2020-11-26
US20230146847A1 (en) 2023-05-11
US11210392B2 (en) 2021-12-28
US11790079B2 (en) 2023-10-17
EP3973427A4 (en) 2023-06-21
US11580218B2 (en) 2023-02-14
US20220391496A9 (en) 2022-12-08
WO2020236981A1 (en) 2020-11-26
EP3973427A1 (en) 2022-03-30
JP7278423B2 (ja) 2023-05-19
US10762200B1 (en) 2020-09-01
IL288122B2 (en) 2023-06-01

Similar Documents

Publication Publication Date Title
JP7278423B2 (ja) 実行可能コード検出、自動特徴抽出及び位置独立コード検出のためのシステム及び方法
Gibert et al. The rise of machine learning for detection and classification of malware: Research developments, trends and challenges
US11714905B2 (en) Attribute relevance tagging in malware recognition
Gao et al. Malware classification for the cloud via semi-supervised transfer learning
US11188650B2 (en) Detection of malware using feature hashing
Kasim An ensemble classification-based approach to detect attack level of SQL injections
Rizvi et al. PROUD-MAL: static analysis-based progressive framework for deep unsupervised malware classification of windows portable executable
US11574054B2 (en) System, method and apparatus for malicious software detection
Ali et al. Deep learning methods for malware and intrusion detection: A systematic literature review
Ullah et al. A malware detection system using a hybrid approach of multi-heads attention-based control flow traces and image visualization
Huang et al. TagSeq: Malicious behavior discovery using dynamic analysis
Li et al. SynDroid: An adaptive enhanced Android malware classification method based on CTGAN-SVM
Jha et al. A novel framework for metamorphic malware detection
Švec et al. Semantic Data Representation for Explainable Windows Malware Detection Models
Luh et al. SEQUIN: a grammar inference framework for analyzing malicious system behavior
Thakur et al. Hybrid deep learning approach based on lstm and cnn for malware detection
Geden et al. Classification of malware families based on runtime behaviour
Samantray et al. An efficient hybrid approach for malware detection using frequent opcodes and API call sequences
Yousuf et al. Multi-feature Dataset for Windows PE Malware Classification
US20240241956A1 (en) Classifying cybersecurity threats using machine learning on non-euclidean data
Xiong et al. Universal adversarial triggers for attacking against API sequence: based malware detector
Andow Privacy Risks of Sensitive User Data Exposure in Mobile Ecosystems
Wajid et al. A Comprehensive Review of Machine Learning-Based Malware Detection Techniques for Windows Platform
Gibert Llauradó et al. Fusing feature engineering and deep learning: A case study for malware classification
Chanajitt Machine Learning Approaches for Malware Classification based on Hybrid Artefacts

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230323

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230323

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20230323

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230509

R150 Certificate of patent or registration of utility model

Ref document number: 7278423

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150