クリプトマイナーの検出:機械学習によるアプローチ

By 清水 孝郎 - AUGUST 10, 2022

SHARE:

How to train security machine learning model

本文の内容は、2022年8月10日にFlavio Muttiが投稿したブログ(https://sysdig.com/blog/how-train-crypto-miner-detection-model/)を元に日本語に翻訳・再構成した内容となっております。

クリプトマイナーは、今日の主要なクラウド環境への脅威のひとつです。マイナー攻撃は、金銭的な動機のある攻撃者にとっては、リスクが低く、労力も少なく、報酬も高いものです。さらに、この種のマルウェアは、適切な回避技術を用いれば、企業の業務に支障をきたすことがないため、気づかれることなく通過することができます。このように、巧妙に隠蔽される可能性があるため、クリプトマイナーの検出は複雑な作業となりますが、機械学習により、強固な検出アルゴリズムを開発することができます。しかし、信頼できる方法でモデルの性能を評価できることが最も重要です。

How to train security machine learning modelセキュリティ機械学習モデルの学習方法

モデルの精度について書かれたものを読むことはそれほど珍しいことではありませんが、

  • その指標はどこまで信頼できるのでしょうか?
  • それとも、精度や再現率など、より適切なパフォーマンス指標を求めるべきでしょうか?
  • この指標はどのような状況下で推定されたのでしょうか?
  • その推定値の下限と上限を設定する信頼区間はあるのでしょうか?

しばしば、機械学習モデルは、なぜ決定が下されるのか、そして、少なくとも統計的に信頼できるのかについての明確な説明なしに、確率や分類を返す魔法の箱と見なされています。

この記事では、よくある質問に答え、私たちのクリプトマイナー検知モデルの訓練とモデル性能の評価方法についての経験を共有しようと思います。

問題の定義

私たちが取り組みたい問題は、実行中のコンテナでクリプトマイナープロセスを検出する方法です。静的なアプローチの欠点を克服するために、私たちはランタイム分析に注目することにしました。コンテナで実行中の各プロセスは、Sysdigエージェントで収集できるイベントとアクション(syscallなど)のストリームを生成します。これらのイベントは、バックエンドによって集約され、前処理され、ほぼリアルタイムに分類されます。

データサイエンスの観点から、この問題は、教師あり学習技術で対処するバイナリー分類タスクとしてモデル化されています。しかし、特に不均衡な問題に適用されるモデルを評価する場合、2値的な結果に頼ることは通常十分ではありません。つまり、悪意のある行動に対応するデータ量は、通常のデータよりはるかに少ないのです(例:マイナーの検出)。

データ収集と特徴抽出

上述したように、各プロセスはSysdigエージェントによってキャプチャーされる低レベルのイベントのストリームを生成します。これらのイベントは、システムコール、ネットワーク接続、開いているファイル、ディレクトリ、ライブラリ、その他となります。与えられた時間間隔(例えば、10分)に対して、イベントを集約し、プロセスイベントの生のサンプルを生成します。

how to train security machine learning model diagramセキュリティ機械学習モデルの学習方法図

生のサンプルはさらに分析され、いくつかの関連する特徴が抽出されます。これらの特徴は、クリプトマイナーの動作に関するドメインナレッジを表しています。この特徴抽出のステップの最後で、機械学習モデルによって分類される準備が整った特徴のサンプルを収集します。

私たちは2種類のデータを収集しました。クリプトマイナーのデータと、正規バイナリーの異なるセットからの良性データです。


最大の課題の1つは、機械学習モデルの性能と汎化性を向上させるために、正規プロセスの包括的かつ異種なコレクションを取得することです。実際、どのユーザーもクラスター内のあらゆるものを実行できる可能性があると考えれば、プロセスの公正な範囲は事実上無限大になります。

この問題を克服するために、我々は、正規のプロセスをできるだけ一般化しつつ、クリプトマイナーの主要な特徴を強調する特徴抽出プロセスを特別に設計しました。また、データパイプラインの設計に我々のドメインナレッジを導入し、多数のクリプトマイナーと正規のプロセスに対して広範なデータ駆動分析を適用しました。

モデル評価

データドリブン技術を利用してクリプトマイナー活動を検知するには、科学文献を深く調査する必要があります。このタスクには、主に2つの課題があります。

  • 学習サンプルのバランスが悪い
  • 大量の偽陽性検知の危険性

我々は、古典的な教師あり学習アルゴリズム(ランダムフォレストやSVMなど)と one-class アルゴリズム(isolation forestやone class-SVMなど)の2つの異なるクラスのモデルを最初に比較しました。

モデル比較では、精度とリコールの定量的分析に焦点を当て、精度とリコール曲線(PR曲線)の定性的評価も行いました。

定性的には、one-class モデルが最初に利用可能なデータで高い性能を発揮しなかったため、古典的な教師ありモデルに焦点を当てることにしました。

教師あり学習モデルをさらに検討することを決定した後,学習データセットに対して入れ子型層別群間交差検証を繰り返し実行し、精度と再現率の信頼区間を計算しました。また、入れ子のクロスバリデーションを利用して、モデルのハイパーパラメータ最適化アルゴリズムを実行し、プロジェクトの成功率を高めるために最適なエンジニアの数を選択するなど、最適なパラメータを選びました(例えば、技術的には、ランダムフォレストのハイパーパラメータはフォレスト内の木の数、決定木の場合は最大の深さである可能性があります)。クロスバリデーション用フォールドは、プログラムのサンプルグループを含みます:より現実的な汎化誤差を推定するために、あるプログラムからの全てのサンプルは一つの折り畳み内に含まれ、他の折り畳み内に情報のリークはありません。

私たちのタスクでは、精度にもっと注意を払うことにしました。なぜなら、大まかに言って、セキュリティイベントのトリアージにおいて、ノイズ問題につながる多くの偽陽性を避けたいからです。

最終的な性能評価

モデル評価により、汎化誤差を偏りなく推定することができますが、まだ検討すべき主要な課題があります。

ホールドアウトテストデータセットでの性能

ホールドアウトデータセットは、基礎となるデータ分布を代表するものでなければならず、これは時間とともに変化する可能性があります(つまり、今日収集したデータセットが6ヶ月後のデータ分布を代表するものであるとは限りません)。

さらに、トレーニングデータセットとテストデータセットの間で情報リークしないことを継続的に検証しています。

判定閾値の選択

判定閾値の選択は、リコール(偽陰性)を管理しつつ、偽陽性を最小化するというトレードオフの関係で行っています。

定量的な分析により最適な閾値を決定しましたが、プロダクトの観点からは、私たちが提案した値から、さらにお客様が閾値を調整できるようにすることが望ましいと判断しました。

実際のパフォーマンスに関するパフォーマンスのテストの信頼性

テスト性能と実環境の性能の信頼性は、デプロイ後のモデル性能の分析によって解決される重要な課題であると言えるでしょう。また、これはドリフトという概念にもつながっており、モデルの性能を監視し、時間の経過に伴う変化を検出することを試みています。

モデルコンセプトドリフト

異なるモデルの学習と最適化を行った後、ホールドアウトテストデータセットで最終的なパフォーマンスメトリクスを計算し、最適な決定閾値(PR曲線の分析により選択された確率)を選択しました。そして、異なるモデルのクラス確率の分布を比較する統計テストを実施しました。

その後、リリース候補モデル(rc-model)を、現在実運用しているモデルの側に静かにデプロイし、性能比較を行います。一定期間の観測の後、統計的にrc-modelの方が性能が良いことが分かったら、現在運用中のモデルをrc-modelに置き換えます。

まとめ

クリプトマイナーを検知することは困難な課題であり、これを達成するために、我々は機械学習技術の適用可能性を検討しました。

最初の課題は、この問題をどのようにモデル化するかを選択することでした。長所と短所を評価した結果、我々は教師あり学習のアプローチを使用することにしました。

次に、検知にとって意味のあるデータセットを収集し、マイナーの根本的な活動を真に代表する特徴を探りました。このデータは以下の3つです:

  • Github/DockerHubで利用可能なマイナー
  • 私たちのハニーポットで最も一般的なマルウェアによってデプロイされた悪質なマイナー
  • 正当なプログラム

第三に、入れ子式クロスバリデーションとハイパーパラメータ最適化に基づいて、モデル評価手順を定義しました。このようにして、汎化誤差の非バイアス推定としては利用可能な最良のものを提供することができました。

最後に、モデルを実際に運用するための機械学習エンジニアリングパイプラインを開発し、収集した分析のおかげで、(バグから新しいデータまで)いくつかのモデルの改良を迅速に繰り返すことができました。



私たちのチームは、クリプトマイナーの状況を常に監視し、関連するマイナーのデータを収集しているため、このモデルの検知性能をさらに向上させるのに役立てています。

Sysdigでクリプトマイナーの検知を有効にする方法についてもっと知りたい場合は、「Sysdigの高精度機械学習でクリプトジャッキングを検知する」をご覧ください。

Sysdigの機械学習脅威検知チームからのお知らせをお楽しみに!🔮。