コンテンツに移動
脅威インテリジェンス

アシスタントからアナリストへ: マルウェア分析での Gemini 1.5 Pro の実力

2024年5月14日
Google Cloud Japan Team

※この投稿は米国時間 2024 年 4 月 30 日に、Google Cloud blog に投稿されたものの抄訳です。

エグゼクティブ サマリー

  • マルウェアの量は増加しており、当然ながら防御側、特にマルウェア アナリストのワークロードが増大しています。そこで、従来からの脅威であるマルウェアに対処するために自動化とアプローチを改善する必要性が生じています。

  • 生成 AI ツールの最近の台頭に伴い、Google は自社の Gemini 1.5 Pro をテストし、マルウェア分析のパフォーマンスを確認することにしました。そこで、コードを指定して簡単なプロンプトを使用することで、ファイルが不正かどうかの判断と、アクティビティとセキュリティ侵害インジケーターのリストの作成を Gemini 1.5 Pro に依頼しました。

  • これを複数のマルウェア ファイルに対して行い、逆コンパイルされたコードと逆アセンブルされたコードの両方でテストしました。Gemini 1.5 Pro が生成した、人が読める言語による概要レポートは毎回非常に正確でした。Gemini 1.5 Pro は、VirusTotal で当時の検出がゼロだったコードを正確に判断することもできました。

  • 類似する別の生成 AI ツールを使用したテストでは、コードをチャンクに分割する必要がありましたが、あいまいで具体性に欠ける結果になり、全体的な分析に悪影響を及ぼしました。その一方で、Gemini 1.5 Pro はコード全体を単一パスで処理し、多くの場合約 30~40 秒しかかかりませんでした。

はじめに

マルウェアが爆発的に増加する中、従来の手動による分析方法では対応が難しい状況が続いており、自動化の改善と革新的なアプローチが緊急に必要とされています。生成 AI モデルは、マルウェア分析の一部では非常に有効ですが、大規模で複雑なマルウェア サンプルの処理においては有効性が限られています。その中で、最大 100 万トークンを処理できる Gemini 1.5 Pro のリリースは大きな進歩となります。この進歩により、AI はマルウェア分析ワークフローを自動化する強力なアシスタントとして機能するだけでなく、コード分析の自動化を大幅に拡大させます。Gemini 1.5 Pro は、処理能力の大幅な向上によってサイバーセキュリティに対するアプローチの適応性と堅牢性を向上させ、大量の脅威をアナリストが効果的かつ効率的に管理できるよう支援します。

自動マルウェア分析の従来型手法

自動マルウェア分析は、静的な分析手法と動的な分析手法を組み合わせて構築されています。どちらの手法もマルウェアの動作を分析し、理解するうえで重要な役割を果たします。静的分析では、マルウェアを実行せずに検査し、そのコード構造と難読化されていないロジックに関する情報を提供します。一方、動的分析では難読化に関係なく、管理された環境でマルウェアの実行を観察して、その動作を監視します。これら 2 つの手法を組み合わせて活用することで、マルウェアを包括的に把握できます。

これらの手法と並行して、AI ML も、動作パターン、シグネチャ、異常に基づくマルウェアの分類とクラスタリングに使用されることが増えています。AI ML を使用した手法は、ラベル付きのデータセットでモデルをトレーニングする教師あり学習から、事前定義済みのラベルなしでパターンを特定し、類似するマルウェアをグループ化するクラスタリングの教師なし学習まで、多岐にわたります。

このような技術的進歩にもかかわらず、マルウェアの複雑化と増加によって大きな課題が生じています。ML はマルウェア亜種の検出を強化しますが、完全に新しい脅威に対しては現在も十分な対策とはなっていません。こうした検出ギャップがあると、高度な攻撃がサイバーセキュリティの防御をすり抜け、システムの保護にほころびが生じます。

マルウェア分析のアシスタントとしての生成 AI

RSA Conference 2023 で発表された Code Insight は、マルウェア分析での生成 AI の活用を大きく前進させました。Google VirusTotal プラットフォームにおけるこの新機能は、コード スニペットの分析と自然言語でのレポート生成に特化して、マルウェア アナリストのアプローチを効果的にエミュレートします。当初から PowerShell スクリプトをサポートしていた Code Insight はその後、BatchShellVBScriptOffice ドキュメントなど、他のスクリプト言語やファイル形式にも対応しています。

Code Insight はコードの処理と概要レポートの生成を通じて、アナリストがコードの動作を理解し、攻撃手法を特定できるよう支援します。その中で、従来の検出方法では見落とされる可能性がある隠れた機能、悪意、潜在的な攻撃ベクトルが発見されます。

しかし、大規模言語モデル(LLM)固有の制約と、トークン入力能力の制限により、Code Insight で処理できるファイルのサイズには制限がありました。継続的な改善によってファイルサイズの上限は増加し、サポートされる形式も増えましたが、バイナリや実行可能ファイルの分析には大きな課題が残っています。一般的に、これらのファイルを逆アセンブルまたは逆コンパイルすると、負荷がその時点での LLM の処理能力を超過します。その結果、生成 AI モデルは主にアナリストのアシスタントとして機能し、コード全体を処理するには能力が足りないため、バイナリの特定のコード フラグメントを分析するために使用されてきました。

リバース エンジニアリング: 人間的能力が求められるマルウェア分析手法

リバース エンジニアリングは、サイバーセキュリティ担当者が利用できるマルウェア分析手法の中で、おそらく最も高度な手法です。このプロセスでは、悪意のあるソフトウェアのバイナリを逆アセンブルして、コードを綿密に検査します。リバース エンジニアリングによって、アナリストはマルウェアの機能を正確に特定し、その実行フローを把握できます。しかし、この手法にも課題がないわけではありません。マルウェアのロジックを再構築してその秘密を明らかにするために、それぞれの命令、データ構造、関数呼び出しを解釈するには、膨大な時間、深い専門知識、分析的マインドセットが必要とされます。

また、リバース エンジニアリングのスケーリングは非常に困難です。この分野で専門的な人材が不足していることも、このような分析の大規模な実施をさらに難しくしています。リバース エンジニアリングは複雑で、長い時間を要することから、サイバーセキュリティ コミュニティはこのプロセスを強化し、効率性と利用しやすさを高める方法を長い間模索してきました。

Gemini 1.5 Pro: マルウェア分析を目的とするスケーラブルなリバース エンジニアリング

最大 100 万トークンのプロンプトを処理できることで、特にリバース エンジニアリングによるマルウェア分析の質が飛躍的に向上します。この進歩により、複雑であるためにこれまでは高度なスキルを持つアナリストのみが行ってきたバイナリと実行可能ファイルの分析にも、ついに生成 AI の力を活用できるようになります。

Gemini 1.5 Pro でこれが可能になった要因

  • 能力の向上: Gemini 1.5 Pro ではトークンの上限が増加したことで、逆アセンブルまたは逆コンパイルされた実行可能ファイルを単一パスで完全に分析できるようになったため、コードを小さなフラグメントに分割する必要がありません。コードを分割すると、コンテキストや、プログラムの異なるパーツ間の重要な相関関係が失われる可能性があるため、これは非常に重要な進歩です。小さなスニペットのみを分析した場合、マルウェアの全体的な機能と動作を把握することが難しく、その目的や操作に関する重要な分析情報を見落とす可能性があります。Gemini 1.5 Pro は、コード全体を一度に分析することで、マルウェアを総合的に把握し、より正確で包括的な分析を可能にします。

  • コード解釈: Gemini 1.5 Pro は、パターンや類似点を特定するだけでなく、コードの意図と目的を解釈できます。これを可能にしているのが、多様なアーキテクチャのアセンブリ言語、C などの高水準言語、逆コンパイラで生成された擬似コードを含む、コードの大規模なデータセットでのトレーニングです。Gemini 1.5 Pro は、この広範なナレッジベースと、オペレーティング システム、ネットワーキング、サイバーセキュリティ原則の理解により、マルウェア アナリストの論理的思考と判断を効果的にエミュレートできます。その結果、マルウェアのアクションを予測し、前例のない脅威に対しても貴重な分析情報を提供できます。これについて詳しくは、この投稿の後半にあるゼロデイのケーススタディ セクションをご覧ください。

  • 詳細分析: Gemini 1.5 Pro は、人が読める言語で概要レポートを生成できるため、分析プロセスがより利用しやすく、効率的になります。これは、従来の ML アルゴリズムで分類とクラスタリングのために一般的に提供されてきたシンプルな判定をはるかに超えるものです。Gemini 1.5 Pro のレポートには、マルウェアの機能、動作、潜在的な攻撃ベクトルに関する詳細情報のほか、セキュリティ侵害インジケーター(IOC)も含めることができます。IOC は、他のセキュリティ システムに情報を提供し、脅威の検出と防止の能力を高めるために使用できます。

代表的なマルウェア サンプルを使用して、逆コンパイルされたコードを分析する場合に Gemini 1.5 Pro がどのように機能するのかを調べるための実践的なケーススタディを見てみましょう。ここでは、Hex-Rays の逆コンパイラを使用して、アノテーションやコンテキストを追加せずに、2 つの WannaCry バイナリを自動で処理しました。このアプローチでは、それぞれサイズが 268 KB 231 KB 2 つの C コードファイルが生成され、LLM で処理されるトークンの合計数は 280,000 を超えました。

https://storage.googleapis.com/gweb-cloudblog-publish/images/gemini-for-malware-analysis-fig1.max-900x900.png

類似する別の生成 AI ツールを使用したテストでは、コードをチャンクに分割する必要がありました。この分割によって分析の包括性が損なわれ、あいまいで具体性に欠ける結果が得られることがよくありました。このような制限は、これらのツールを複雑なコードベースに使用するうえでの課題を浮き彫りにしています。

一方、Gemini 1.5 Pro はこれらの制約から大きく解き放たれています。逆コンパイルされたコード全体が単一パスで処理され、分析はわずか 34 秒で完了します。Gemini 1.5 Pro で提供される初期概要は非常に正確で、大規模で複雑なデータセットをシームレスかつ効果的に処理するための以下の能力が実証されています。

  • ランサムウェアに関連する悪意の判定

  • ファイルの IOC としての特定(c.wnry および tasksche.exe

  • IP アドレスを生成して、ポート 445/SMB で他のコンピュータに拡散するターゲットを見つけるためのネットワーク スキャンを実行するアルゴリズムの使用確認

  • URL やドメイン(WannaCry の「killswitch」)と、関連するレジストリキーやミューテックスの特定
https://storage.googleapis.com/gweb-cloudblog-publish/images/gemini-for-malware-analysis-fig2.max-1200x1200.png

Gemini 1.5 Pro WannaCry についてのレポートは、このマルウェアに関して事前にトレーニングされたナレッジに基づいているように感じられるかもしれませんが、実際はそうではありません。分析は、コードを独立して解釈するモデルの能力に基づいています。このことは、Gemini 1.5 Pro で未知のマルウェア サンプルを分析し、その幅広い能力を実証しているこの後の例をご覧いただければ、より明らかになります。

コードの LLM: 逆アセンブルと逆コンパイル

WannaCry の分析を紹介した前の例では、コードを LLM に送る前に、逆コンパイルという重要な手順がありました。バイナリコードを C などのより高水準の記述に変換するこのプロセスは完全に自動化されており、マルウェア アナリストが悪意のあるソフトウェアを手動で分析する場合の初期ステップに対応します。では、逆アセンブルされたコードと逆コンパイルされたコードにはどのような違いがあり、それが LLM 分析にどのように影響するのでしょうか。

  • 逆アセンブル: このプロセスでは、バイナリコードがプロセッサ アーキテクチャ固有の低水準記述であるアセンブリ言語に変換されます。アセンブリ コードは人が読めるものの非常に複雑で、理解するには高いレベルの専門知識が必要です。また、元のソースコードに比べて大幅に長く、繰り返しが多いのが特徴です。

  • 逆コンパイル: このプロセスでは、バイナリから元のソースコードの再構築を試みます。逆コンパイルは必ずしも完璧とは限りませんが、逆アセンブルされたコードと比較すると読みやすさと簡潔さで大きく優ります。これは、関数、ループ、変数などの高レベルの構成要素が識別され、アナリストがコードを理解しやすくなるためです。

これらの理由により、バイナリ分析に LLM を使用する場合は、効率性とスケーラビリティの面で逆コンパイルにいくつかの利点があります。逆アセンブルと比べて出力が短く、構造化されている逆コンパイルは、LLM の処理制約に適応しやすく、大規模なバイナリや複雑なバイナリの分析をより効率化できます。実際に、逆コンパイラからの出力は、逆アセンブラで生成される出力と比べて 510 倍簡潔です。

逆アセンブルは正確な逆コンパイルを実行するために必要であり、詳細な低レベルでの分析が不可欠な一部のシナリオでは依然として非常に重要です。逆コンパイルからの出力は構造化された、より高レベルの概要であるため、状況によっては逆コンパイルでは得られない分析情報が逆アセンブルで得られる場合があります。

幸いなことに、Gemini 1.5 Pro は、さまざまなアーキテクチャにおいて、高水準言語とアセンブリに対して同等の処理能力を示しています。そのため、バイナリ分析を自動化するための実装では、各ケース固有の状況に応じて両方の戦略を利用することも、ハイブリッド アプローチを採用することもできます。この柔軟性により、該当のバイナリの性質に応じて分析方法を調整し、効率性、分析情報の深さ、分析の具体的な目的を最適化できます。プログラムのロジックとフローを分析する場合も、その低レベル操作の複雑な詳細を分析する場合もあります。

次に、逆アセンブルを分析に直接的に使用するケースを紹介します。ここでは、より新しい未知のバイナリが使用されています。実際に、VirusTotal に送信された実行可能ファイルは、VirusTotal 70 のマルウェア対策エンジンのうち 4 つのみで悪意のあるファイルとして報告されました。また、汎用シグネチャのみが使用され、動作に関する追加の手がかりとなりうるマルウェア ファミリーに関する詳細は提供されませんでした。

https://storage.googleapis.com/gweb-cloudblog-publish/images/gemini-for-malware-analysis-fig3.max-1000x1000.png
https://storage.googleapis.com/gweb-cloudblog-publish/images/gemini-for-malware-analysis-fig4.max-1000x1000.png

HexRays IDA Pro による自動処理の後、306.50 KB の実行可能バイナリから 1.5 MB のアセンブリ ファイルが生成されます。Gemini 1.5 Pro は、プロンプトでトークンを大量に処理できるため、このファイルを単一パスで 46 秒以内に処理できます。この高い能力により、アセンブリ出力全体が分析され、バイナリの操作に関する詳細な分析情報が提供されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/gemini-for-malware-analysis-fig5.max-1000x1000.png

バイナリが未知であるこのケースでは、Gemini 1.5 Pro の優れた能力が示されています。VirusTotal 70 のマルウェア対策エンジンのうち、このファイルを悪意のあるファイルとして報告したのは 4 つのみで、汎用シグネチャのみが使用されたのに対して、Gemini 1.5 Pro はこのファイルを悪意のあるファイルとして特定し、判定に関する詳細な説明を提供しました。このファイルは、ゲームハック用のダイナミック リンク ライブラリ(DLL)を「Grand Theft Auto」のビデオゲーム プロセスに注入するために設計されたゲームチートである可能性が高いと考えられます。「悪意のある」の基準は視点によって異なる可能性があります。チート対策に重点を置くゲームのデベロッパーやセキュリティ チームには悪意があるとみなされるファイルでも、一部のプレーヤーにとっては好ましいものかもしれません。それはともかく、この自動化されたファーストパス分析は精度が高いだけでなく、バイナリの性質や意図に関する新たな情報を提供してくれます。

未知を既知に変える: ゼロデイ検出のケーススタディ

マルウェア分析ツールの真の実力を左右するのは、従来の方法では検出できない未知の脅威を特定し、ゼロデイ攻撃からシステムをプロアクティブに保護する能力です。ここでは、VirusTotal のウイルス対策やサンドボックスでは実行可能ファイルが検出されないケースを取り上げます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/gemini-for-malware-analysis-fig6.max-700x700.png

833 KB medui.exe ファイルが 189,080 個のトークンに逆コンパイルされた後、Gemini 1.5 Pro によってわずか 27 秒で処理され、完全なマルウェア分析レポートが単一パスで生成されました。

https://storage.googleapis.com/gweb-cloudblog-publish/images/gemini-for-malware-analysis-fig7.max-400x400.png
https://storage.googleapis.com/gweb-cloudblog-publish/images/gemini-for-malware-analysis-fig8.max-1200x1200.png

この分析では疑わしい機能が判明し、Gemini 1.5 Pro で悪意があると判定されました。この分析概要に基づき、このマルウェアの主な目的はビットコイン取引をハイジャックし、セキュリティ ソフトウェアを無効にして検出を逃れることで、暗号通貨を盗むことであると結論付けられました。

この事例は、シンプルなパターン マッチングや ML 分類の枠を超え、コード動作を深く理解することで、未知の脅威でも悪意を特定する Gemini の能力を示しています。これはマルウェア分析の分野における大きな進歩であり、従来の方法では見逃す可能性のある新たな脅威をプロアクティブに検出してそれに対応できるようになります。

アシスタントからアナリストへ

Gemini 1.5 Pro では、優れた機能を活用して、逆コンパイルされたコードや逆アセンブルされたコードを大量に分析できます。Gemini 1.5 Pro には、増加し続ける脅威に対抗して効率性、精度、スケーリング能力を高めることで、マルウェア対策のアプローチを大きく変える可能性があります。

しかし、これは始まりにすぎないことを忘れないでください。Gemini 1.5 Pro は大きな進歩ですが、生成 AI の分野はまだ初期の段階です。真に堅牢で信頼性の高い自動マルウェア分析を実現するには、以下のようないくつかの課題を解決する必要があります。

  • 難読化とパッキング: マルウェア作成者は、コードを難読化し、検出を逃れるための新たな手法を開発し続けています。それに対抗するため、生成 AI モデルを継続的に改善するだけでなく、分析前のバイナリの前処理を強化する必要性も高まっています。多様な前処理ツールを利用するダイナミックなアプローチを採用することで、マルウェアを効果的にアンパックし、難読化を解除できます。この準備ステップは、生成 AI モデルで基盤となるコードを正確に分析できるようにし、進化する難読化技術に確実に対応して、高度なマルウェアの脅威を効果的に検出、把握し続けるために非常に重要です。

  • バイナリサイズの拡大: 最新のソフトウェアが複雑化するのに合わせて、そのバイナリのサイズも拡大しています。大部分の生成 AI モデルでは処理できるトークンの数に大きな制約があるため、このトレンドは大きな課題となります。一方、Gemini 1.5 Pro はこの分野で判明している限りでは最多規模の 100 万トークンまで対応できます。しかし、このように非常に高い能力を有している Gemini 1.5 Pro でさえ、極端に大きなバイナリの処理では限界に達する可能性があります。このことからも、ソフトウェアがますます複雑化する中で、サイズが増加し続けるファイルの分析に対応し、包括的かつ効果的なマルウェア分析を実現するためには、AI テクノロジーの継続的な進歩が必要であることは間違いありません。

  • 進化する攻撃手法: 攻撃者がイノベーションを続け、セキュリティ対策をすり抜ける新たな方法を生み出す中、生成 AI モデルの課題は単純な適応性だけにとどまりません。これらのモデルは、新しい脅威を学習、認識するだけでなく、研究者やデベロッパーの努力に応じて進化する必要もあります。脅威データの前処理を自動化する新たな方法を考案し、AI モデルに提供されるコンテキストを強化する必要があります。たとえば、静的および動的な分析ツールからの追加データ(サンドボックス レポートなど)と、逆コンパイルおよび逆アセンブルされたコードを統合することで、モデルの理解能力と検出能力を大幅に向上させることができます。

自動マルウェア分析のスケーリングに向けた取り組みは現在も進行中ですが、Gemini 1.5 Pro は重要なマイルストーンになります。GSEC Malaga は、これらのモデルを AI に効果的に適用する方法の調査と研究を継続して、サイバーセキュリティの可能性を広げ、より安全なデジタルの未来に貢献していきます。

マルウェアの詳細

下の表には、この投稿で使用したマルウェア サンプルの詳細が記載されています。

ファイル名

SHA-256 ハッシュ

サイズ

初回検出

ファイル形式

lhdfrgui.exeWannaCry ドロッパー)

24d004a104d4d54034dbcffc2a4b19a11f39008a575aa614ea04703480b1022c

3.55 MB3,723,264 バイト)

2017 5 12

Win32 EXE

tasksche.exeWannaCry クリプター)

ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa

3.35 MB3,514,368 バイト)

2017 5 12

Win32 EXE

EXEC.exe

1917ec456c371778a32bdd74e113b07f33208740327c3cfef268898cbe4efbfe

306.50 KB313,856 バイト)

2022 4 18

Win32 EXE

medui.exe

719b44d93ab39b4fe6113825349addfe5bd411b4d25081916561f9c403599e50

833.50 KB853,504 バイト)

2024 3 27

Win32 EXE

プロンプト

以下は、この投稿で取り上げたすべての例で使用されている正確なプロンプトです。唯一の例外は、「逆コンパイル」の代わりに「逆アセンブル」という言葉が使用されている例です。これは、説明したように、逆コンパイルされたコードではなく逆アセンブルされたコードを使用して、Gemini 1.5 Pro が両方を解釈できることを示すためです。

マルウェア アナリストとして、逆コンパイルされたこの実行可能コードを徹底的に調査してください。各ステップを体系的に分析し、基本となるロジックと目的を理解することに重点を置いてください。タスクは、コードの動作をまとめた詳細な概要を作成し、悪意のある機能を正確に示すことです。最初に悪意があるかどうかを判定してから、IOC と、存在する場合は URL、作成されたファイル、レジストリ エントリ、ミューテックス、ネットワーク アクティビティなどを含むアクティビティのリストを作成してください。

+[decompiled.c.txt サンプル ファイルを添付]

 

-Bernardo Quintero

投稿先