コンテンツを開く

テーマのトレンド

単語のベクトル化、正規化、オートエンコーダによる、異常プロセス作成チェーンの検知

F-Secure Japan

05.06.20 6 min. read

異常検知のための手法は、未知で高度な攻撃を検知する効果的な方法として、サイバーセキュリティの分野では広く使用されています。一般的にこれらの方法は、攻撃が発生していない状態のコンピューティングデバイス、ネットワーク、システムにおける、正常または悪意のない振る舞いをモデリングすることが基本です。そして、訓練されたモデルを使用して、攻撃を偏差または異常な振る舞いとして検知します。異常検知ベースのセキュリティメカニズムは、その設計上、攻撃に関する事前の知識は不要で、正常な振る舞いのサンプルだけが必要になります。このアプローチは、斬新な攻撃戦術とテクニックの開発に資金をつぎ込む、強硬でしたたかな攻撃者に対抗する際に特に威力を発揮します。サイバーセキュリティ分野では、さまざまな異常検知手法が存在しますが、ここでは、その中からプロセスチェーンの分析に基づく手法を紹介します。

コンピュータシステムで実行される一つのプロセスがトリガとなって、別のプロセスを開始します。たとえば、Windows上でアプリケーション(例:Webブラウザ)を開くとき、ユーザインタフェースプロセス(通常はexplorer.exe)がそのアプリケーションを起動します。どのプロセスが別のどのプロセスを起動するか(親子関係)に関するデータを収集することにより、下図のようなプロセスツリーを構築することができます。私たちは、めったに発生しないプロセスチェーンに対して、不審な、または悪意のある活動の可能性があるという仮説を立てました。

観察されたプロセス作成チェーンの例

コンピュータシステムから収集されたログデータを分析することで、プロセスチェーンを作成することができます。一般的に、このデータはテキストとして利用でき、プロセスの起動は、親と子の両方の実行可能ファイルへのフルパスで表現されます。フルパスは次のようになります。

%program files%\Java\jre1.7.0_127\bin\java.exe

上記の例では、java.exeのパスに、ランタイム環境のバージョンを示すディレクトリが含まれています(この例ではjre1.7.0_127)。このソフトウェアのバージョンが変更されると、パスも変更されます

%program files%\Java\jre1.8.0_231\bin\java.exe

親子プロセスの作成ペアを作成する簡単な方法は、パスを削除して実行可能ファイルの名前を残すことです。ただし、これによってバックドアが攻撃者に開かれたままになります。攻撃者は悪意のある実行可能ファイルの名前を変更するだけで、このようなメカニズムを回避するために、悪意のある実行可能ファイルの名前を変更することができます。したがって、類似のディレクトリ構造の下にインストールされているすべてのjava.exe実行可能ファイルを同様のものとして認識しようと考えました。しかし、大幅に異なるパス(たとえば、ごみ箱、ダウンロードディレクトリ、一時ディレクトリ、またはWebキャッシュ)にインストールされたjava.exeは異なります。そのために、これらの文字列を自然言語処理(NLP)の問題として扱うことにしました。この場合、パスを文、ディレクトリ/ファイル名を単語と見なします。次に、word2vecスタイルのモデルを使用して、これらの単語をベクトルにエンコードします。簡単に言うと、単語ベクトルは、機械学習モデルによって単語に割り当てられる数値表現です。この機械学習モデルは、文の中に欠落した単語を予測したり、単語の前後にある別の単語を推測するように訓練されます。このタイプの機械学習モデルは、以下に図示するように単語間の関連付けを表現しています。

process creation chains 2

word2vecなどのモデルによって学習された単語の関連付けの例 (出典: https://towardsdatascience.com/mapping-word-embeddings-with-word2vec-99a799dc9695)

この手法のプロトタイプは、コンピュータネットワークから親子プロセスの起動イベントに関する約2,200万の生ログエントリを収集し作成されました。データセットには、745,379のユニークな「文」(ファイルパス)が含まれており、トークン化した後、532,717のユニークな「単語」(ディレクトリとファイル名)が取得されました。これは、ほとんどすべての文にユニークな文字列が含まれていることを意味しています。また、ファイルパスには、時間の経過とともに変化する可能性のある多くの変数が含まれているため、語彙の数が膨大になることは予想していました。前述したバージョンベースのファイルパスに加えて、日付と時刻の文字列(例:2019-12-12)、言語文字列(例:en-US、pl-PL)、および、UUID、一時ファイル名(install_14123412.exe)、一時ディレクトリ名など、ランダムに生成された多くの文字列に遭遇しました。

トークン化されたデータにより、FastTextモデル(64次元の出力ベクトルを使用)を訓練し、結果の単語ベクトルを分析しました。このモデルは、AWS m4.xlargeインスタンスで20エポックを訓練するのに5〜20分かかりましたが、以下の例に示すように、関連するファイル名とディレクトリ名の間の類似性を的確に捉えることができました。

process creation chains 3

Pythonの実行可能ファイル名(左側)とJavaインストールディレクトリパス(右側)で取得されたベクトル間のコサイン類似度

DBSCANアルゴリズムを使用して、結果の単語ベクトルをコサイン距離でクラスター化すると、クラスターの多くがファイルまたはディレクトリの名前で共通のパターンを捉えていることがわかりました。以下は、クラスターのT-SNE投影を示しています。見つかった共通パターンにラベルを付けています。

process creation chains 4

クラスター化されたベクトルのT-SNE投影ラベルは、クラスター内で見つかった共通のパターンを示しています。h+は16進数、d+桁、*任意の文字、UUID4汎用識別子バージョン4を示しています

多くのクラスターには、短い正規表現で簡単に説明できる単純なパターンが含まれています。また、識別されたすべてのクラスターでこれらの正規表現を自動的に生成するスクリプトを作成しました。.

process creation chains 5

力処理によって生成された正規表現の2つの例

このプロセスにより約30の正規表現が作成され、それを使用して初期のデータセットを正規化すおよび、削減しました。これにより、169,161のユニークな文(約5分の1に減少)と75,314のユニークな単語(約10分の1に減少)が得られました。次に、これらの新たに正規化されたパスを使用してFastTextモデルを訓練しました。

パズルの最後のピースは、異常なプロセス作成チェーンを、悪意のない、一般的なチェーンから分離できるモデルとして構築することでした。このために、自動エンコーダーの使用を選択しました。私たちの仮説は、モデルの再構成エラーは、一般的なプロセスチェーンの方がまれなものよいりも低いはずであるというものでした。。オートエンコーダは、潜在的な(圧縮された)表現を通じて入力を複製するように設計された機械学習モデルです。オートエンコーダは、以下の例のように、訓練された入力を再生することを学習します。

process creation chains 6

しかし、これまでに見たことのない入力に直面すると、以下のようなゴミを出力する可能性が高くなります。

process creation chains 7

再構成の誤差は、モデルの入力と出力の間の類似性に基づいて計算されます。

前述のステップで取得したベクトルを使用して、収集したデータにおいて観察されたプロセスチェーンシーケンスで、双方向RNN(リカレントニューラルネットワーク)オートエンコーダを訓練しました。

オートエンコーダアーキテクチャ

このモデルは、AWS p2.xlargeでバッチサイズ64を使用して2,000エポックにより訓練されました。所要時間は5〜10分でした。訓練のの後、トレーニングシーケンスの実行可能ファイルの順序をランダムにシフトして、モデルの再構成エラーを観察することにより、異常なプロセスチェーンを検知する能力をテストしました。コンピュータシステムで一般的に見られるプロセスチェーンの場合、オートエンコーダの再構成エラーは0.004未満でした。ランダムにシフトされたシーケンスの場合、再構成エラー率は高く、0.004以上でした。

process creation chains 9

上図のように、プロセスチェーンを異常と見なすことができるしきい値を設定するのは簡単です。すべてのまれなプロセスチェーンが疑わしかったり悪意があるわけではありませんが、このモデルの出力を他の異常検知メカニズムの出力と組み合わることで判定を下したり、アナリストのより詳細な調査活動を促すことができます。

この調査は、以下の写真に写っているポーランドのポズナンのメンバー、Zuzanna Kunik、Zuzanna Kocur、Julia Będziechowska、Bartosz  Nawrotek、Paweł Piasecki、Marcin Kowiel、および南アフリカのヨハネスブルグのMichael Gantによって実施されました。

また、この調査はPyData Warsaw 2019で発表されました。その際のプレゼンテーションビデオをこちらからご覧ください: https://www.youtube.com/watch?v=I0M6Qb-B8nU

F-Secure Japan

05.06.20 6 min. read

カテゴリ

コメントを残す

Oops! There was an error posting your comment. Please try again.

Thanks for participating! Your comment will appear once it's approved.

Posting comment...

Your email address will not be published. Required fields are marked *

注目記事

関連する投稿

Newsletter modal

登録を受付ました。 購読受付のメールをお送りしたのでご確認ください。

Gated Content modal

下のボタンをクリックしてコンテンツを確認ください。