Blog

AI と サイバーセキュリティ: MandiantのコンサルタントとアナリストはどのようにAIのを活用しているのか

Trisha Alexander, Liam Smith, Ron Craft, Joseph Dobson, James Hovious, Luke McNamara
Jun 08, 2023
2 min read
|   Last update Aug 04, 2023
Consulting
Threat Intelligence
analysts

ジェネレーティブAIの可能性に注目が集まる中、この技術が企業に与える影響については、多くのユースケースが想定されています。そしてサイバーセキュリティの領域においては、AIが防御側にも、そして攻撃側にも大きな価値をもたらし、その影響が組織のサイバーセキュリティのあり方に変化をもたらすと考えられます。セキュリティスタックにジェネレーティブAIを適用するという、Google Cloudの最近の発表は、こうした動きのほんの始まりに過ぎません。今日Mandiantは、すでにジェネレーティブAIを活用して脅威の迅速な特定、トイル*の排除、人材と専門知識の効率的な活用を推進し、お客様のサイバー防御の取り組みを支援するスピードとスキルを高めています。

このブログ記事では、Mandiantのコンサルティングおよび分析チームによるBardを使ったワークフローの最近の事例のほんの一部を紹介します。

注:Bardにはクライアントデータは入力されず、アウトプットは実装前にレビューされます。
注*:トイルとは、手作業で繰り返し行われる作業

PowerShellスクリプトのアラートを分析する 

最近、Mandiantのあるコンサルタントは、Bardをうまく使って長いPowerShellスクリプトを解釈できるようしました。このコンサルタントがSOCアナリストとしてFortune 500のクライアントをサポートしていたとき、あるアラートが次のPowerShellスクリプトでトリガーされました。Mandiantのコンサルタントが受信したアラートは、高度な攻撃の標的となったクライアント組織として受け取ったものであり、標的となった環境内の悪意のある活動を徹底的に調査する必要がありました。時には、複数のアラートが同時に調査対象となるケースもあり、Mandiantのコンサルタントはこれらを優先順位付けして効率的に作業しなければなりません。しかし、膨大なスクリプトがアラート表示された場合、そのスクリプトがシステムに対してどのようなアクションを行っているかを理解するのに時間がかかることがあります。アラートに対処する際、分析に費やす時間は非常に貴重です。しかし、AIを使うことでこのプロセスを短縮し、アナリストがより早期に攻撃者と対峙できるようにすることができます。Bardは、スクリプトがシステム上で何を実行しているのかについての大まかな理解を示すことができ、調査時間を大幅に短縮することができました。

creating scriptblock text (1 of 1): if([intptr]::size-eq4){exit 0};try{$r='\d+\.\d+(\.\d+)?(\.\d+)?';$t='silentlycontinue';$o='applicable';$d='5.13.7';function l {param($h,$f,$s)$v=[bool]((whoami /user)-match's-1-5-18');$l="$(ni $env:programdata\patchmypcintunelogs -it di -fo -ea $t)\$(($q='patchmypc-softwareupdatedetectionscript.log'))";$p=switch($v){$true{$l}default{"$env:temp\$q"}}if((($i=gi $p -ea $t)).length-ge5mb){ri ($w=$i.fullname.replace('.log','.lo_')) -fo -ea $t;ren $i $w}"$(get-date)~[$s]~~~~"|out-file $p -a -fo}function c{param($s)try{switch($s.tochararray().where{$_-eq'.'}.count){0{$s+='.0'*3}1{$s+='.0.0'}2{$s+='.0'}}[version]$s}catch{$a=foreach($c in $s.split('.')){try{[int]$c}catch{[int]::maxvalue}}try{c ([string]::join('.',$a))}catch{[version]('0.0.0.0')}}}foreach($h in 'hkcu'){foreach($x in 'software'){foreach($s in(gp ($g="$h`:\$x\microsoft\windows\currentversion\uninstall\*") ($k='displayname'),displayversion -ea $t|select @{l='a';e={$_.$k}},@{l='b';e={[regex]::match($_.displayversion,$r)[0].value}},pschildname,@{l='c';e={[regex]::match($_.$k,$r)[0].value}})|?{if($_.pschildname-eq($m='')){($f=$true)}elseif($e=''){$_.a-notlike$e-and$_.a-like$z}else{$_.a-like$z}}){if($f){l $g $true "$($s.a) $m";return $o}if((c $s.b)-lt(c $d)-or(!$s.b-and$s.c-ne''-and(c $s.c)-lt(c $d))){if(($s.b-like($v='*')-or$s.c-like$v)){l $g $true "$($s.a) $d";return $o}}}l $g $false "$z $m $d"}}}catch{l '' '' $_.exception.message} scriptblock id: 000b0430-19c1-4e01-9b5c-9480166d41ce path: c:\program files (x86)\microsoft intune management extension\content\detectionscripts\7d1bed49-ac51-4db9-9844-58574b22b7f8_1.ps1

コンサルタントが、コードブロックにクライアント固有の内容がないことを確認した後、チャットボットに「このコードが何をするのか説明してください」と頼みました。

The script is used to detect software updates that are applicable to devices managed by Microsoft Intune. It does this by querying the Windows registry for installed software and comparing the versions of the software to the latest version available. If a software update is found, the script will log the update and return the status "applicable". If no software updates are found, the script will log the status "not applicable".

The script is written in PowerShell and can be run on any Windows device that is managed by Intune. It is included in the Intune Management Extension, which is a software component that is installed on all Intune-managed devices.

The script is divided into several functions:

  • The l function logs the results of the script to a file.
  • The c function converts a string version number to a version object.
  • The foreach loop iterates over the installed software and checks for updates.

The script works by first querying the Windows registry for installed software. The query returns a list of software programs, their display names, and their versions. The script then compares the versions of the software to the latest version available. If a software update is found, the script will log the update and return the status "applicable". If no software updates are found, the script will log the status "not applicable".

The script is a powerful tool that can be used to keep your devices up to date with the latest software updates. It is easy to use and can be run on any Windows device that is managed by Intune.

完璧な解釈ではないものの、AIが生成した説明はスクリプトのさまざまなセグメントについてのおおまかな機能を理解する上で、大きな助けとなりました。Bardに要約してもらったことで、スクリプトの理解がかなりスムースになりました。最も強力だったのは、「このスクリプトは、Microsoft Intuneで管理されるデバイスに適用されるソフトウェアアップデートを検出するために使用されます」、という最初の部分でしょう。この記述により、Mandiantのコンサルタントは文脈を素早く確認し、アラートを良性として解決することができました。迅速な分析を得ることで、アラートを迅速に終了させることができ、より多くの時間を他の活動に費やすことができると同時に、”アラート疲れ”による燃え尽き症候群のリスクを軽減することができます。(同様の機能は、VirusTotalのCode Insight機能で公開されています。)

攻撃者のスマートコントラクトを分析する

スマートコントラクトは、Ethereumなどのブロックチェーンに格納される重要なコンピュータプログラムです。スマートコントラクトには、多くの正当な役割がありますが、攻撃者はそれを悪意のある非代替性トークン(NFT)プロジェクトの基盤として、暗号通貨資産の窃取や資金移動を難読化するために活用しています。Web3の攻撃者を追跡するMandiantのアナリストは、複雑さや機能の点でレベルの異なる何千ものスマートコントラクトを追跡して理解しなければならず、この作業には多くの困難を伴います。ほとんどの正規のスマートコントラクトとは異なり、攻撃者はプロジェクトのソースコードを公開しないため、アナリストはコンパイルによって生成されたコントラクトのバイトコードに頼らざるを得ません。

攻撃者のスマートコントラクトを分析するには、バイトコードを分解し、不明瞭な名前の関数を分析する必要があります。特に、アナリストがスマートコントラクトの開発に使用されるプログラミング言語であるSolidityに精通していない場合、これは非常に面倒で複雑な作業になります。最近の分析作業において、MandiantのアナリストはAIを使用して攻撃者のスマートコントラクトの分析を支援しています。上記のPowerShellスクリプトの例と同様に、Bardは関数の目的を説明するだけでなく、分解されたバイトコードの行ごとの解説をわかりやすく提供し、アナリストが各関数の役割に従って分析の優先順位を決めるのに役立ちます。

こうした活用例の実際のケースとしては、数千ものスマートコントラクトを使用して金銭を窃取した北朝鮮の攻撃グループと見られるUNC4469のような攻撃者の調査があります。

YARAルールの作成

Mandiantコンサルティングは、中国の攻撃グループ UNC3886 に関わる調査に対応しました。この案件の課題は、大量のフォレンジック画像の分析にあり、分析にはかなりの時間がかかりますが、一方でクライアントの時間と費用を抑えるために、可能な限り効率的に分析しなければならないことでした。この案件では、コンサルタントはYARAを使ったことはあったもののルールを書いたことはなく、構文にもあまり詳しくありませんでした。調査を行う中で、未割り当ての領域(攻撃者によって削除されたファイル)から多くのインジケータを取得しましたが、画像をスキャンしてインジケータを探す簡単な方法はありませんでした。そこでコンサルタントは、YARA構文に関してBardに質問することにしました。例えば、特定の文字列を検索するクエリを作成する、IP範囲を検索する正規表現を含むルールを作成する、といった内容です。Bardは常に正しい結果を提供してくれるわけではなく、ときにはYARA 3 構文と 4 構文を混同していることもありました。しかし、コンサルタント自身のYARAに対する理解が深まるにつれ、より具体的な質問をすることができるようになり、より適切な回答が得られるようになりました。

このソリューションを導入したコンサルタントは次のように述べています: 「YARAの構文を十分に理解することができたので、Bardが教えてくれたことをベースに、独自の署名ファイルを作成して、各画像内の攻撃者関連ファイルをスキャンすることができました。通常、ルールを実行するのに画像1枚につき5~10分程度かかりますが、結果的に解析にかかる時間を大幅に短縮することができたのです。これにより、インシデントレスポンスチームは、攻撃者が標的組織の環境で何を行ったのかという情報を迅速に収集することができ、その結果、リソースを他の調査に回すことができるようになりました。最終的には、クライアントの時間とコストを削減することにつながりました。何より素晴らしいのは、YARAの構文はかなり定型的なものなので、将来的に他のケースにも応用して、分析をさらに効率化できることです。アナリストとして、最終的に到達したすべての結論には、その結論に至った経緯を示す包括的かつ反復可能なプロセスが必要です。LLM(大規模言語モデル)がデータに関する結論を生成することには慎重であるべきですが、私はLLMを活用してスクリプトやアルゴリズムを生成し、それを理解し検証することができます。答えが正しいかどうかを判断するための検証は、自分で解決しようとするよりも速いことが多く、スピードが結果を左右するインシデント・レスポンスにおいては非常に大きな意味を持ちます」

攻撃者の行動を検知するPythonスクリプトの作成とチャットによるIRチームへの通知

最近対応したインシデント・レスポンス業務において、Mandiantのコンサルタントは、1日に何度もクライアント環境に接続しているアクティブな攻撃者に対応しました。この攻撃者は、正規のユーザーを真似て企業VPNに接続したり、想定されるホスト名で接続したり、想定されるユーザーの地理的位置から接続するなど、クライアント環境について高度な理解をしていました。さらに、この攻撃者はインフラを常にローテーションしていたため、彼らの活動に関する一貫したシグナルを維持することが困難でした。

Mandiantは、VPNにMFAを実装することが、攻撃者をネットワークから排除するために重要であることを推奨し、顧客もそれに同意しました。しかし、クライアントがすべての環境に対してこの実装を完了するには数週間の時間が必要でした。このインシデントレスポンスの間、Mandiantのコンサルタントは、クライアントの作業が完了するまでの時間を稼ぐために、攻撃者の絶えず変化する戦術、技術、手順(TTPs)に追従し、レスポンスのテンポを高いレベルで維持する必要がありました。ある時、攻撃者が設定ミスをしたため、Mandiantが完全修飾ドメイン名(FQDN)を解決し、攻撃者のインフラを漏洩させることができました。Bardを使用し、担当アナリストがPythonスクリプトを作成し、FQDNが新しいIPアドレスに解決されていないか監視し、既知の誤検知をフィルタリングし、インスタントメッセージでIRチームに通知するインテグレーションを10分以内にセットアップすることができたのです。このスクリプトは技術的に特筆すべきものではありませんが、Bardのスピードと柔軟性により、アナリストはカスタムソリューションを動的に構築し、攻撃者のペースに追従することができました。これにより、アナリストは現在の攻撃者のインフラを監視し、変更があった場合に自動的に警告を受け、変更をクライアントに伝達してブロックと監視を行うことができるようになりました。

SIEMのクエリをBardで構築する

最近の別のケースでは、Mandiantのコンサルタントは、攻撃者が標的組織内の複数の異なる環境にまたがる社内アプリケーションにアクセスする侵入事件に対応しました。これらの環境は、1つのデータレイクに統合される過程にありましたが、インシデント発生前にはまだ完了していませんでした。侵入が発生した際、クライアントは重要なアプリケーションのログを複数の異なるSIEMソリューションに分散させており、それぞれが独自のカスタムクエリー言語、データソース、インデックス、フィールドを持っていました。Mandiantのコンサルタントは、それぞれの独立したソリューションの専門家を招集する代わりに、1つのソリューションに関する深い理解を活かして、すべてのデータソースで実行する必要のある基本クエリのセットを作成することができました。次に、アナリストはBardを活用して、ニーズを満たす様々なSIEM言語で基本クエリセットを生成しました。Bardが生成したクエリをテンプレートとして使用し、アナリストは基本クエリをさまざまなクエリ言語に「マッドリブ」スタイルで変換することができました。これにより、Mandiantは、同じクエリのバリエーションを構築するための追加リソースを必要とせず、すべての顧客データソースで一貫した分析を行うことができました。

マルウェア解析の高速化

Mandiantの脅威インテリジェンス・アナリストは最近、マルウェア解析を容易にするためにPythonで自動化をスクリプト化する速度を向上させる方法として、Bardを活用しました。最近の事例では、Mandiantは、マルウェア解析用仮想マシンの復元、この仮想マシンの起動、データベースからのマルウェアサンプルのダウンロード、仮想マシンのデスクトップへのサンプルの送信、仮想マシンからのネットワークインターフェイスカードの取り外しを自動化する必要がありました。マルウェアを解凍する作業が完了すると、解凍したサンプルをダウンロードし、マルウェアデータベースに再アップロードするための自動化も必要でした。このプロセスでは、「pythonでSMBまたはWMI接続を行う」「pythonで既存のファイルからパスワード保護されたzipを作成する」などのプロンプトが、完全自動化を完了するために使用可能なコードを生成するのに役立ちました。このように、Mandiant Threat IntelligenceのアナリストはBardを活用して必要なWinDbgコマンドとそのコマンドのコンテキストを迅速に提供し、アナリストが手動で行うマルウェア解析プロセスを大幅にスピードアップさせました。

まとめ

ここでご紹介した事例は、サイバー攻撃からの防御を支援するさまざまなユースケースにおけるジェネレーティブAIの可能性を示しています。脅威への対応、トイルの排除、人材の活用」という枠組みの中で、特に「トイルの排除と人材の活用」の点でジェネレーティブAIがいかに問題の解決に役立っているかということがわかります。インシデント・レスポンスにおいてスピードは非常に重要であり、特定の機能を素早く自動化し、特定のニッチな領域で深い技術的専門性を持つことができれば、防御側は攻撃者をよりよく検知し対応できるようになります。

AIは、ある意味では攻撃側の能力を高めるかもしれませんが、防御側にとって有利になるようなメリットを提供することになるでしょう。このブログ記事が、組織のセキュリティ対策にAIを取り入れる方法を考えるきっかけになれば幸いです。セキュリティのベストプラクティスと責任あるAIモデルの実装に関する詳細は、GoogleのSecure AI Frameworkをぜひご覧ください。

※本ブログは、2023年6月8日に公開されたブログ「AI and Cybersecurity: How Mandiant Consultants and Analysts are Leveraging AI Today」の日本語抄訳版です。