OT を狙うサイバー戦争 : FrostyGoop/BUSTLEBERM マルウェアからの防御

OT を狙うサイバー戦争 : FrostyGoop/BUSTLEBERM マルウェアからの防御

昨日2024年7月23日、FrostyGoop、別名BUSTLEBERMと呼ばれる新しいOT マルウェアが一般に知られるようになった。第三者機関の報告によると、このマルウェアは重要なインフラを混乱させるサイバー兵器として使用されたとのことです。この脅威は、現代におけるサイバーセキュリティ(OT )への投資の重要性を改めて示している。このブログ記事では、このマルウェアを検出するための実用的なシグネチャを提供することによって、企業がこのマルウェアから身を守る方法を説明し、このマルウェアの主な機能と関連する影響を理解するための技術的な深掘りを共有します。

Nozomi 顧客向け保護および検出ガイダンス  

Nozomi プラットフォームは、一般的な攻撃パターンと精密な攻撃パターンの両方を検知するための豊富な検知ルールを備えている。前者は既知の脅威に特化していないため、プロアクティブに動作することができます。例えば、当社のすべてのお客様は、特に以下のアラートタイプにより、すでにこの脅威から保護されています:

図 1.BUSTLEBERM/FrostyGoop の行動検知に基づいてNozomi Networks Guardian で生成されたアラートの例。

Nozomi Networks ' プラットフォームが検知できる脅威の種類については、最近リリースされた年2回のセキュリティレポート最新版OT/ IoT をご覧ください。

さらに、Threat Intelligence のすべてのお客様は、独自のパターンに基づいて脅威を正確に検出するYARA、パケット、STIX、SIGMAルールの頻繁に更新されるデータベースの恩恵を受けることができます。この場合、お客様はすでにいくつかの警告シグネチャーを導入しています:

  • OT_HACKTOOL_BUSTLEBERM_ModBus.yar
  • OT_HACKTOOL_BUSTLEBERM_indicators.json (BUSTLEBERM - HACKTOOL)
    ⇛ 200D
ヤラ検
スティックス検出
図 2.Nozomi NetworksBUSTLEBERM/FrostyGoop脅威の検出をトリガーするルール

私たちの顧客であるかどうかにかかわらず、できるだけ多くの企業が守られるように、記事の最後にYARAルールのソースコードと実際の悪意のある指標も公開し、すべての人にとってより安全な世界を目指します。

最後に、元のレポートによると、被害組織の少なくとも1つは、Mikrotikルーターの脆弱性を介して侵害された可能性が高い。この場合、Nozomi プラットフォームは、さまざまな脅威(IoT )に対する広範な検出機能も提供する。

FrostyGoop/BUSTLEBERMマルウェアの仕組み

このマルウェアはGolangで書かれたWindowsコマンドラインツールで、GitHubで簡単に見つけることができるオープンソースのコードを使用している。OT デバイスとやり取りするために必要な Modbus 機能を追加するために、https://github.com/rolfl/modbusライブラリが使用された。実行可能ファイルは、悪意のある行為者によって提供される複数の引数を受け入れます(図3を参照)。

BUSTLEBERM/FrostyGoopマルウェア
図3.実行ファイルがサポートする引数のリスト

実行ファイルに引数を渡すことで(図3参照)、ターゲットと実行するModbus関数を他のオプションとともに定義することができます。また、関連するパラメータとともに実行する操作を記述したJSONファイルを渡すこともできます(図4参照)。

バストレムマルウェア
図4.被害者の詳細を含む入力を解析するコード

入力JSONファイルでは、以下のフィールドがサポートされている:

  • コード
  • カウント
  • タスク
  • 価値
  • アイリスト
  • 住所
  • ワークタイム
  • 開始時間
  • 期間
  • ターゲットリスト
  • 時間間隔

例えば、以下のコンフィギュレーション・ファイルでは、ツールは指定された IP アドレス上で動作している Modbus サーバと対話し、指定されたアドレスのそれぞれについて Modbus コード 3 "Read Holding Registers"、コード 6 "Write Single Register"、またはコード 16 "Write Multiple Registers "関数を呼び出します。"Value "には書き込み操作で使用される値が含まれ、"Count "は各関数がターゲットごとに何回呼び出されるかを制御します。

BUSTLEBERM JSON
図5.JSONタスクの例

マルウェアのオペレーターは、-modeパラメーターに適切なread/read-all/writeオプションを使用し、code、address、count、valueに適切な値を設定することで、各操作の回数を知ることなく、read/writeリクエストを送信することもできる。

このツールは、OT の世界でユビキタスなModbusプロトコルを介してターゲットと通信する。ターゲット・デバイスがインターネットに公開されていれば、侵害された境界の内側と外側の両方から使用することができる。ここでの最終的な目標は、ターゲットとなるシステムを誤動作させ、その後のサービス拒否を引き起こすことである。

図6.悪意のあるBUSTLEBERM/FrostyGoopツールの動き

上の図では、悪意のある実行ファイルを使用して、前に示したようなJSONファイルを使用してさまざまな値の読み取りと書き込みを自動化する方法の例を見ることができます。

図7.書き込みリクエストを送信する悪意のあるツールによって生成されたトラフィックを解析した。
図7.書き込みリクエストを送信する悪意のあるツールによって生成されたトラフィックを解析した。

サンプルを分析した結果、マルウェアのオペレータは、次の図に見られるように、"-cycle "オプションを使用し、JSONファイル内にスケジュールされたタスクのパラメータを追加することで、特定の時点で実行される読み取りおよび書き込みタスクをスケジュールすることが可能であることがわかった。

図8.遅延スタートのサイクルモードによる実行

StartTime"、"WorkTime "および "IntervalTime "のJSONエントリーを使用すると、UTCの時刻を使用してツールが自動的に動作する特定のポイントを与え、実行時間を制限し、ターゲットとの相互作用の間に待機する時間を制御することができます。

地域社会のためのリソース

世界中のさまざまな国家間で緊張が高まる中、サイバー兵器は、国家に支援されたアクターやハクティビスト、金銭的な動機に基づくアクターなど、さまざまなグループによってますます使用されるようになっている。このような攻撃が実行される可能性を事前に察知すること、OT とIoT の両方の資産に対する十分な可視性を確保すること、そして新たに出現する脅威に迅速に対応することによって常にゲームのトップを維持することは、攻撃の可能性や影響を最小限に抑えるために、現代のすべての組織が従うべき最も重要な手順の一部である。  

ここNozomi 、私たちは共に力を合わせればより強くなれると熱く信じており、悪意ある行為者とより効率的に闘うために、私たちの知識を喜んで一般の方々と分かち合っています。

FrostyGoop AKA BUSTLEBERMの危殆化の指標(IoC

  • 5d2e4fd08f81e3b2eb2f3eaae16eb32ae02e760afc36fa17f4649322f6da53fb
  • a63ba88ad869085f1625729708ba65e87f5b37d7be9153b3db1a1b0e3fed309c

フロスティグープ、別名バッスルバームのためのYARAルール

// Created by Nozomi Networks Labs

ルール Mal_Hacktool_Win64_Bustleberm

{

メタ

   name = "BUSTLEBERM ICSハックツール"

   author = "Nozomi Networks Labs"

   説明 = "BUSTLEBERM ICS Hacktool (FrostyGoop としても知られている) を検出する"

   日付 = "2024-07-24"

   tlp = "クリア"

   x_threat_name = "BUSTLEBERM"

   x_mitre_technique = "T1007, T1012, T1033, T1112, T1543, T0869, T0855"

   reference = "https://hub.dragos.com/hubfs/Reports/Dragos-FrostyGoop-ICS-Malware-Intel-Brief-0724_.pdf"

   hash1 = "5d2e4fd08f81e3b2eb2f3eaae16eb32ae02e760afc36fa17f4649322f6da53fb"

   hash2 = "a63ba88ad869085f1625729708ba65e87f5b37d7be9153b3db1a1b0e3fed309c"

文字列:

   Go = "ビルドID:" asciiフルワード

   $modbus_1 = "github.com/rolfl/modbus" ascii fullword

   $modbus_2 = " \x00main.MbConfig.writeMultiplex00" ascii

   rtn_1 = " \x00main.TaskList.executeCommandx00" ascii

   rtn_2 = " \x00main.TaskList.getTaskIpListx00" ascii

   rtn_3 = " \x00main.TaskList.getIpListx00" ascii

   rtn_4 = " \x00main.TargetList.getTargetIpListx00" ascii

コンディション

   uint16(0) == 0x5a4d かつ

   filesize <= 10MB and

   と

   ($modbus_*)のいずれかと

   ($rtn_*) の 2

}

さらに、Florian Rothはこの脅威を検出するための別の公開ルールをリリースした。https://github.com/Neo23x0/signature-base/blob/master/yara/mal_go_modbus.yar  

TTP

  • T0855 - 権限のないコマンドメッセージ
  • T0869 - 標準アプリケーション層プロトコル
  • T1007 - システム・サービス・ディスカバリー
  • T1012 - クエリーレジストリ
  • T1033 - システム所有者/ユーザー発見
  • T1112 - レジストリの変更
  • T1543 - システムプロセスの作成または変更

参考文献