ブログ(脅威調査)

機械学習によるマルウェア解析高速化のためのStrings出力結果の格付け

リバース・エンジニアリング、フォレンジック調査、インシデントレスポンスの担当者は、不正なバイナリを解読するため、さまざまなツールを活用します。マルウェア解析ではこれらのツールを用いてバイナリの機能についての手がかりを少しずつ集め、検知方法を設計し、損害を封じ込める方法を検討します。最も有用な初期ステップの1つは、Stringsプログラムを使って出力可能な文字を検査することです。エラーメッセージの出力、URLへの接続、レジストリ・キーの作成、ファイルを特定の場所にコピーする等の操作を実行する場合、バイナリはたいてい文字列を含んでいます。その文字列それぞれが、この後に続く分析を進めるときに役に立つ、重要なヒントをもたらしてくれます。

これらの関連性のある文字列を手動で識別することは時間がかかり、間違いやすい作業です。特に以下のような場合はなおさらです。

  • 関連性のある文字列は、重要でない文字列に比べて、ほとんど出現しない
  • 大きいバイナリの場合、数万個以上の文字列を含んでいる
  • 「関連性のある」という定義は、アナリスト個人個人で著しく異なる

調査担当者は、マルウェア解析に費やす時間を短縮できるかもしれない重要な手がかりや、最悪な場合、不完全または不正確な結論を導き出すような見落としをしたくないと考えています。このブログ記事では、FireEye Data Science(FDS)および FireEye Labs Reverse Engineering(FLARE)チームが協力して、機械学習を用いることでアナリストの苦労ポイントを合理化した方法について説明します。

ハイライト

  • マルウェアに対してStringsプログラムを実行すると、重要な文字列が多くのノイズと混在した結果が生成されます。重要な文字列は、その雑多な出力全体を精査して見つけなければなりません。FireEyeの新しい機械学習モデルは、マルウェア解析の関連性に基づいて文字列を自動的に格付けすることで処理を大幅に短縮します。
  • 個々の文字列の関連性を理解するには高度な経験を有するアナリストが必要です。高品質で、セキュリティ関連のラベル付きトレーニング・データを取得するには時間や費用がかかることがありますが、リバース・エンジニアリング分野の専門知識を活用するWeak Supervisionにてこのボトルネックを軽減できます。
  • FireEyeの提案する「learning-to-rank(格付けのための学習)」モデルは、マルウェアのサンプルからのStrings出力を効率的に優先順位付けできます。FireEyeリバース・エンジニアリング担当者が7年以上にわたって作成したマルウェアのレポートから取り出した関連性のある文字列のデータセットにおいて、このモデルは、レコメンダーシステムや検索エンジンを評価するために一般に使用される基準に基づいても優れた性能を発揮します。

<中略>

結論

このブログ記事では、マルウェア解析との関連性に基づいた文字列の格付けを学習する機械学習モデルを紹介しました。定性的調査(図3)とNDCG@kの定量的評価(図4)の両方を基に、この機械学習モデルはStrings出力を格付けできることを示しています。Stringsは、FireEyeに限らずマルウェア解析にごく一般的に使用されるので、このモデルは、大量の疑わしいバイナリを調査するために必要な時間を大幅に短縮することができます。今後も、高品位なラベル付きデータを用いてトレーニングし、より高度なモデリング技術や特徴化技術を導入し、アナリストからフィールド試験のフィードバックを取り入れ、引き続きNDCG@kスコアの向上を図っていきます。

マルウェア作成者は、アナリストにとって有益な文字列を隠蔽するために努力することがよく知られていますが、このモデルについて考慮すべき潜在的な盲点は、Stringsそのものの機能が難読化によって無効化されることです。しかしながら、Stringsの代わりにFireEye Labs Obfuscated Strings Solver(FLOSS)のようなオープンソース・ツールを使用できます。FLOSSは、Stringsと同様、出力可能な文字列を自動的に抽出しますが、加えて、エンコードやパックされた、またはスタック上で手動で構築されるような、難読化された文字列を見つけ出します。このモデルは、FLOSSの出力でも容易にトレーニングすることができ、難読化された文字列であっても格付けすることができます。また任意の文字列リストに適用することができるので、ライブメモリ・ダンプやサンドボックスの実行結果から抽出された文字列を格付けすることもできます。

これは、FDSチームとFLAREチームの協業作業の結果です。そして両チームは互いに協力して不正な活動を見つける予測モデルを構築し、今後もFireEyeのお客様と製品のために改善していきます。この任務に関心を持たれましたら、採用情報のページから応募して、ぜひチームの一員になってください。

本ブログは、米FireEyeが公開した「Learning to Rank Strings Output for Speedier Malware Analysis」の要約版です。技術詳細を含むブログ全文(英語)は次のリンクをご参照ください。
https://www.fireeye.com/blog/threat-research/2019/05/learning-to-rank-strings-output-for-speedier-malware-analysis.html