Blog

Sandworm がOT(運用技術)に対する新たな攻撃を使用してウクライナの電力供給を妨害

Ken Proska, John Wolfram, Jared Wilson, Dan Black, Keith Lunden, Daniel Kapellmann Zafra, Nathan Brubaker, Tyler McLellan, Chris Sistrunk
Nov 09, 2023
8 min read
|   Last update Nov 29, 2023
ICS
Operational Technology
Threat Intelligence
Remediation

2022年後半、Mandiantは、ロシアに関連する脅威グループである Sandwormが、ウクライナの重要インフラ事業者を標的として展開した破壊的なサイバーフィジカル侵害事件に対応しました。この侵害事件は、産業制御システム(ICS)/運用技術(OT)に影響を与える新たな手法を活用したマルチイベント型のサイバー攻撃でした。この攻撃者はまず、OTレベルのLiving Off the Land(LotL:環境寄生型)の手法を使って被害組織の変電所のサーキットブレーカーを遮断し、ウクライナ全土の重要インフラへの大量のミサイル攻撃と同時に計画外の停電を引き起こしました。Sandwormはその後、被害組織のIT環境にCADDYWIPERの新しい亜種を展開し、2回目の破壊的攻撃を実施しました。

この攻撃は、ロシアのウクライナ侵攻以来、ますます顕著になってきたロシアのサイバーフィジカル攻撃能力の進化を表しています。このインシデントで活用された手法は、新しい OT 脅威ベクターを把握し、新たな能力を開発し、攻撃を実行するためにさまざまなタイプの OT インフラストラクチャを活用する能力など、ロシアの攻撃的 OT 兵器の成熟度が高まっていることを示唆しています。LotL 手法を使用することで、サイバーフィジカル攻撃の実行に必要な時間とリソースを削減した可能性が高いと考えられます。Mandiant は、最初の侵入ポイントを特定することはできませんでしたが、私たちの分析によると、この攻撃の OT コンポーネントは、わずか 2 ヶ月で開発された可能性があります。このことは、脅威グループが、世界中で活用されているさまざまなOEMメーカーの他の OT システムに対しても、同様の機能を迅速に開発できる可能性が高いことを示しています。

私たちは当初、この活動をUNC3810として追跡していましたが、その後、このクラスターをSandwormに統合しました。Sandwormは、少なくとも2009年以来、ロシアの主要情報局(GRU)を支援するスパイ活動、影響力、攻撃活動を実施してきた全領域的な脅威グループです。同グループは長年に渡ってウクライナにフォーカスした活動を行っており、2022年のロシアの再侵攻時を含め、過去10年にわたってワイパー型マルウェアを使った破壊的な攻撃キャンペーンを実施してきました。ウクライナ以外にも、同グループは世界的な規模でスパイ活動を続けており、ロシア軍の他地域における野心と関心の大きさを物語っています。政府の起訴状は、このグループと特殊技術メインセンター(GTsST、軍事ユニット74455としても知られる)を結びつけています。Sandwormの世界的な脅威活動と斬新なOT能力を考慮し、私たちはOT資産の所有者がこの脅威を軽減するための対策を講じるよう強く要請します。このブログの補足に、さまざまな検出、ハンティングとハードニングのガイダンス、MITRE ATT&CK マッピングなどを含めていますので、参照してください。

関連する活動への対応にサポートが必要な場合は、Mandiant Consulting にご連絡ください。Sandworm 脅威活動の更なる分析は、Mandiant Advantage Threat Intelligence の一部として利用可能です。

 

インシデントの概要

我々の分析によると、この侵入は 2022 年 6 月かそれ以前に始まり、2022 年 10 月 10 日と 12 日の 2 回の破壊的な事象で頂点に達しました。IT 環境への初期アクセスベクターを特定することはできませんでしたが、Sandworm は被害組織の変電所環境の監視制御およびデータ収集(SCADA)管理インスタンスをホストするハイパーバイザーを介して OT 環境にアクセスしました。水平展開の証拠から、攻撃者は最大3ヶ月間SCADAシステムにアクセスできた可能性があります。

10月10日、行為者は「a.iso」という名前の光ディスク(ISO)イメージを活用し、変電所のスイッチを切る悪意のある制御コマンドを実行しようと、MicroSCADAのネイティブバイナリを実行しました。ISOファイルには少なくとも以下のものが含まれていました:

  • n.batを実行する "lun.vbs"
  • ネイティブの scilc.exe ユーティリティを実行すると思われる "n.bat 
  • "s1.txt"、おそらく未承認の MicroSCADA コマンドを含む

9月23日の "lun.vbs "のタイムスタンプに基づき、攻撃者がSCADAシステムに最初にアクセスしてからOT能力を開発するまでに2ヶ月の期間があった可能性があります。バイナリによって実行されたICSコマンドを完全に復元することはできませんでしたが、この攻撃によって予定外の停電が発生したことを認識しています。図 1 に、破壊的な OT イベントをもたらした実行チェーンの視覚化を示します。

Execution chain of disruptive OT event
図1:破壊的OTイベントの実行チェーン

OTイベントの2日後、Sandwormは被害組織のIT環境にCADDYWIPERの新しい亜種を展開し、さらなる混乱を引き起こし、フォレンジック・アーチファクトを削除する可能性がありました。しかし、このワイパーの展開は被害組織のIT環境に限定されており、ハイパーバイザーやSCADA仮想マシンには影響を及ぼしていません。これは、脅威グループが痕跡を隠蔽するためにSCADAシステムから他のフォレンジック・アーチファクトを削除していた可能性があり、ワイパーの活動によってそれが強化された可能性があるため、異例なことです。これは、攻撃に関与した異なる個人または運用サブチーム間の連携不足を示す可能性があります。

攻撃のライフサイクルとOT能力についての深堀りは、ブログのテクニカル分析のセクションを参照してください。

Sandwormの脅威活動からロシアの攻撃的サイバー能力に関する洞察が明らかに

Sandwormの変電所攻撃は、ロシアのOT指向の攻撃的サイバー能力への継続的な投資とOTシステム攻撃への全体的なアプローチに関する注目すべき洞察を明らかにしています。このインシデントと昨年のINDUSTROYER.V2インシデントの両方は、簡素化された展開機能を通じてOT攻撃能力を合理化する努力を示しています。私たちは、ロシアの攻撃的サイバー能力を強化するためのプロジェクト要件を詳述した一連の文書の分析において、同じ努力を観察しました。

同様に、GRUが支援した疑いのあるOT攻撃の推移を見ると、攻撃ごとの破壊活動の範囲が縮小していることがわかります。2015年と2016年のウクライナのブラックアウトイベントでは、それぞれOT環境に対するいくつかの個別の破壊的イベント(UPSシステムの無効化、シリアル-イーサネットコンバータのブリック、SIPROTECリレーに対するDoS攻撃の実施、OTシステムのワイプなど)が行われました。これと比較すると、INDUSTROYER.V2のインシデントには、それらと同じ破壊的なコンポーネントの多くが欠けており、マルウェアはオリジナルのINDUSTROYERのワイパーモジュールを特徴としていませんでした。同様に、OTネットワークにおけるSandwormの活動は、無許可のICSコマンドメッセージの実行のみに合理化され、ワイパーの活動はIT環境に限定されているようです。この変化は、おそらく戦時中のサイバー作戦のテンポが速くなったことを反映していると思われますが、OT攻撃におけるGRUの優先目標を明らかにするものでもあります。

Sandwormがネイティブの Living off the Land バイナリ(LotLBin)を使用して OT 環境を破壊したことは、手法の大きな変化を示しています。以前の OT インシデントで観測されたものよりも軽量で汎用的なツールを使用することで、サイバーフィジカル攻撃を行うために必要な時間とリソースを削減したと考えられます。また、LotLBin のテクニックは、防衛側にとって脅威の活動を検知することを困難にします。なぜなら、防衛側は、環境に導入された新しいファイルだけでなく、インストールされている OT アプリケーションやサービス内に既に存在するファイルの変更にも警戒する必要があるからです。GRUの破壊的なプレイブックを詳述した最近のリサーチで概説したように、Sandwormも同様に、検知される確率を最小限に抑えながら、活動するスピードと規模を拡大するために、より広範囲な活動でLotL戦術を採用していることが確認されています。

関連性を評価するには十分な証拠がありませんが、攻撃のタイミングがロシアの軍事作戦と重なっていることに注目しています。Sandwormが破壊的能力を開発した可能性があるのは、OTが発生する3週間も前のことであり、攻撃者は能力を展開する特定の瞬間を待っていた可能性があります。最終的に攻撃が実行されたのは、被害組織がいた都市を含むウクライナの複数の都市で、重要なインフラに対する数日間にわたる連携したミサイル攻撃の開始と重なりました

Historical Russia-nexus activity impacting OT
図2:OTに影響を与えたロシア・ネクサスの活動履歴

展 望

この攻撃は、MicroSCADA 監視制御システムを活用するウクライナの重要インフラ環境に対する直接的な脅威を意味します。Sandworm の世界的な脅威活動と MicroSCADA 製品が世界中に展開されていることを考慮すると、世界中の資産所有者 は IT および OT システムに対する戦術、技術、および手順を軽減するための行動を取る必要があります。さらに、我々の活動分析によれば、ロシアは MicroSCADA や SCIL 以外の他の SCADA システムやプログラミング言語に対しても同様の能力を開発することが可能です。我々は、資産所有者に対し、この活動を緩和し、検知するために、以下の推奨事項を検討し、実施することを強く要請します。

謝 辞

本調査は、執筆者として名前の記載がない人を含む多くの方々のご尽力により実現しました。Mandiantは、ウクライナ安全保障局(SBU)の継続的なパートナーシップと本レポートへの貢献、そして継続的な協力に感謝します。このインシデント対応業務は、英国のウクライナ・サイバー・プログラム(政府横断的紛争・安定・安全保障基金)を通じて資金提供され、英国外務・英連邦・開発局によって実施されました。

※本ブログは、2023年11月9日に公開されたブログ「Sandworm Disrupts Power in Ukraine Using a Novel Attack Against Operational Technology」の日本語抄訳版です。

 

テクニカル分析: ウクライナの変電所に対するSandwormの攻撃

Incident targeted attack lifecycle
図3:標的型攻撃のライフサイクル

初期侵入とプレゼンスの維持

現時点では、Sandwormがどのようにして被害組織に最初にアクセスしたのかは不明です。Sandwormが被害組織の環境で最初に確認されたのは2022年6月で、インターネットに接続されたサーバーにNeo-REGEORG Webシェルを導入していました。これは、インターネットに面したサーバーをスキャンして悪用し、最初のアクセスを行うという、このグループの以前の活動と一致しています。GOGETTERはGolangで書かれたトンネラーで、オープンソースライブラリであるYamuxをTLS上で使用し、コマンド&コントロール(C2)サーバーの通信をプロキシします。

GOGETTERを活用する際、Sandwormはシステムの永続性を維持するためにSystemdサービスユニットを利用しました。Systemdサービスユニットは、特定の条件下でプログラムを実行することを可能にし、今回のケースでは、再起動時にGOGETTERバイナリを実行するために使用されました。

Sandworm GOGETTER Systemd configuration location
図4:Sandworm GOGETTER Systemdの設定場所

Sandwormが利用したSystemdコンフィギュレーション・ファイルは、グループがシステム上で永続性を維持することを可能にしました。"WantedBy" という値は、プログラムがいつ実行されるべきかを定義します。Sandworm が使用した設定では、"multi-user.target" という設定は、例えば電源投入に成功した後など、ホストがユーザーのログオンを受け入れる状態になったときにプログラムが実行されることを意味します。これにより、GOGETTERはリブートしても永続性を維持することができます。"ExecStart "値は、実行するプログラムのパスを指定します。 

Sandworm GOGETTER Systemd configuration
図 5: Sandworm GOGETTER Systemd の構成

GOGETTER を展開する際、Mandiant は Sandworm が Systemd のサービスユニットを活用し、正当な、あるいは一見正当なサービスを装うように設計されていることを確認しました。 

SCADAハイパーバイザーへの水平展開とOT攻撃実行

Sandworm は、EOL(End-of-Life)MicroSCADA 制御システム内でコードを実行し、被害組織の接続された変電所に影響を与えるコマンドを発行することで、OT 環境に影響を与える新しい手法を利用しました。表 1 は、新しい OT 機能を含む悪意のあるファイルを要約したものです。攻撃者がアンチフォレンジック技術を使用していたため、侵入からすべてのアーティファクトを復元することはできませんでした。 

表1:悪意のあるOTファイル

Filename

Hash

Purpose

a.iso

Unknown

Contains attacker’s files

lun.vbs

26e2a41f26ab885bf409982cb823ffd1

Runs n.bat

n.bat

Unknown

Likely runs native scilc.exe utility

s1.txt

Unknown

Likely contains SCIL commands

OT システムに影響を与えるために、Sandworm は被害組織の変電所環境の SCADA 管理インスタンスをホストするハイパーバイザーにアクセスし、"a.iso" という名前の ISO イメージを仮想 CD-ROM として利用しました。 システムは、挿入された CD-ROM の自動実行を許可するように構成されていました。 ISO ファイルには、少なくとも次のファイルが含まれていました: "lun.vbs"と"n.bat"。どちらのファイルも D ボリューム内で参照されるため、"a.iso"内に含まれます。 挿入された ISO により、少なくとも次のコマンド ラインが実行されました。

  • wscript.exe "d:\pack\lun.vbs" 
  • cmd /c "D:\pack\n.bat" 

フォレンジック分析によると、「lun.vbs」の内容は以下の通りであると考えられます:

“lun.vbs” contents
図6:“lun.vbs”の内容 

図6の内容は、"lun.vbs "が "n.bat "を実行することを示しています。回収された追加の断片には、Windowsのコマンドライン実行と一致するテキストが含まれています(図7)。この断片は、ホストからの画像を分析することによって特定されました。ホストのアンチウイルス・ログを再構築すると、"lun.vbs" と "n.bat" が近い時間に実行されたことがわかります。このことと、攻撃者のISOフォルダのパスを参照していることから、図7のコマンド断片は"n.bat" の内容である可能性が高いと考えられます。

Command fragment
図7:コマンドの断片

コマンドフラグメントの構文には、MicroSCADA ソフトウェアスイートの一部であるネイティブユーティリティ "scilc.exe" が含まれています。このユーティリティは、MicroSCADA が使用する他のユーティリティ、ライブラリ、リソースに混じって、MicroSCADA のインストールディレクトリ内の “\sc\prog\exec” フォルダにあります。影響を受けた MicroSCADA システムは、SCIL-API へのデフォルトアクセスを許可する EOL ソフトウェアバージョンを実行していました。"-do"フラグは実行する SCIL プログラムファイルを指定します(図 8)。最後に、コマンドは攻撃者のISOの "packscil "フォルダに "s1.txt "という名前のファイルを供給します。"pack\scil\s1.txt" は攻撃者が MicroSCADA で実行した SCIL コマンドを含むファイルである可能性が高いと考えられます。このファイルは分析時点では回復できませんでした。

Scilc.exe usage example
図8:Scilc.exeの使用例

日立エネルギーのドキュメントによると、SCIL は MicroSCADA 制御システム用に設計された高水準プログラミング言語であり、システムとその機能を操作できます (図 9)。 SCIL プログラムは通常、コマンド、オブジェクト、変数、定義済み関数の呼び出し、および式で構成されるテキストベースのステートメントです。 SCIL プログラムを実行するには、エンジニア/オペレーターによる MicroSCADA システム内のボタンまたは画像のクリック、スケジュールされた変更またはプロセスによる派生変更、この場合は手動実行など、いくつかの方法があります。

SCIL overview
図9:SCILの概要

実行された SCIL コマンドを特定することはできませんでしたが、おそらく被害組織の変電所環境のサーキットブレーカーを開くコマンドであったと考えられます。SCILコマンドは、TCP/IP接続の場合はIEC-60870-5-104プロトコル、シリアル接続の場合はIEC-60870-5-101プロトコルのいずれかを介して、MicroSCADAサーバーから変電所RTUにコマンドをリレーさせたと考えられます。

Sandwormは被害組織のIT環境をさらに破壊するCADDYWIPERの新種を展開

OT活動の2日後、SandwormはCADDYWIPERの新しい亜種をIT環境全体に展開しました。2022年10月にコンパイルされたこのCADDYWIPERの亜種には、脅威グループが実行時に機能を解決できるようにする、いくつかの小さな機能改善が含まれています。 我々は、ロシアによるウクライナ侵攻の間、ウクライナの政府や金融部門を含むいくつかの業種でCADDYWIPERが展開されていることを確認しています。

CADDYWIPERはC言語で書かれた破壊的なワイパーで、データを回復不可能にし、環境内に最大限のダメージを与えることに重点を置いています。CADDYWIPERは、マップされたドライブを消去する前に、すべてのファイルの消去を試みます。その後、物理ドライブのパーティション自体を消去しようとします。注目すべきは、CADDYWIPERが戦時中、ウクライナの組織に対して最も頻繁に使用された破壊的ツールであり、公開情報によれば、2022年3月以降、一貫して運用されていることです。私たちは、SandwormがCADDYWIPERを複数の侵入における破壊工作に利用していることを確認しています。

Sandwormは、TANKTRAPを使用してドメインコントローラから2つのグループポリシーオブジェクト(GPO)を介して、この操作でCADDYWIPERを展開しました。TANKTRAPはPowerShellで書かれたユーティリティで、Windowsのグループポリシーを利用してワイパーを拡散・起動します。私たちは、TANKTRAPがNEARMISS、SDELETE、PARTYTICKET、CADDYWIPERを含む他の破壊的なツールとともに使用されていることを確認しています。これらのグループポリシーには、サーバーからローカルハードディスクにファイルをコピーし、コピーしたファイルを特定の時間に実行するタスクをスケジュールする指示が含まれていました。

Sandworm TANKTRAP GPO 1
図10: Sandworm TANKTRAP GPO 1
Sandworm TANKTRAP GPO 2
図11: Sandworm TANKTRAP GPO 2

どちらのTANKTRAP GPOも、CADDYWIPERをステージングされたディレクトリからmsserver.exeとしてシステムに展開しました。その後、CADDYWIPERはスケジュールタスクとして所定の時間に実行されました。 

表2:Sandworm TANKTRAP GPO 1 スケジュールタスク

Item

Value

Task Name

qAWZe

Legacy Task Name

QcWBX

Command to Run

C:\Windows\msserver.exe

Trigger

Run at 2022-10-12 16:50:40

表3:Sandworm TANKTRAP GPO 2 スケジュールタスク

Item

Value

Task Name

QJKWt

Legacy Task Name

zJMwY

Command to Run

C:\Windows\msserver.exe

Trigger

Run at 2022-10-12 17:15:59

付録A:ディスカバリーとハードニングのガイダンス

このインシデントでは、攻撃者は MicroSCADA 監視制御システムの EOL バージョンを利用していました。MicroSCADA の SCIL-API インターフェースは、2014 年にリリースされた MicroSCADA 9.4 以降、デフォルトで無効化されています。インターフェースを引き続き使用する必要がある場合、アセットオーナーは MicroSCADA を堅牢化する方法について MRK511518 MicroSCADA X Cyber Security Deployment Guideline を参照することができます。ドキュメントを入手については、日立エネルギー MicroSCADA サポートチームまでお問い合わせください。

なお、MicroSCADA 制御システムは、ABB からの売却後、2022 年に日立エネ ルギーの製品となりました。資産所有者は、資産インベントリと手動の資産検査で両方のベンダーを参照して、製品が OT 環境に存在するかどうかを確認する必要があります。

MicroSCADA およびその他の SCADA 管理ホストを堅牢化:

  • MicroSCADA をサポートされているバージョンにアップデート
  • 認証が必要なように MicroSCADA を構成し、ユーザ権限について最小権限設計を確立
  • MicroSCADA ホストと IT ネットワーク間の強固なネットワークセグメンテーションを確立
  • MicroSCADA の堅牢なアプリケーションログを有効にし、ログを中央の場所に集約
  • 可能であれば、ベースシステムを "読み取り専用 "モードで構成し、外部 SCIL-API プログラム(scilc.exe など)が許可されないように設定
  • インストールされている SCADA ソフトウェアの OEM と相談し、そのソフトウェア内の類似のコード実行方法を特定し、緩和策に関するガイダンスを取得

MicroSCADAシステムおよびその他のSCADA管理システムを監視:

  • MicroSCADA "Scilc.exe "バイナリのコマンドライン実行、および不正な SCIL プログラム/コマンドを実行するために利用される可能性のある他の MicroSCADA ネイティブバイナリ
  • MicroSCADA ソフトウェアを運用しているホストとの間のネットワークトラフィックおよびプロセス関連のテレメトリ。異常なアクティビティを調査し、調査結果をプロセスのテレメトリと関連付け
  • MicroSCADA ホスト上に転送または移動されたファイル
  • MicroSCADA または SCIL プログラミング言語を参照する新規作成ファイル
  • MicroSCADA システム構成およびデータの不正な変更

付録B:侵害の指標(IOC)

表4:ネットワークIOC

Indicator

Description

82.180.150[.]197

Source IP address for requests to Neo-REGEORG 

176.119.195[.]113

Source IP address for requests to Neo-REGEORG 

176.119.195[.]115

Source IP address for requests to Neo-REGEORG

185.220.101[.]58

Source IP address for requests to Neo-REGEORG

190.2.145[.]24

C2 for GOGETTER 

Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0

User agent for requests to Neo-REGEORG 

Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0

User agent for requests to Neo-REGEORG

表5:エンドポイントIOC

File Name

MD5 Hash

Type

Functions.php

3290cd8f948b8b15a3c53f8e7190f9b0

Neo-REGEORG

cloud-online

cea123ebf54b9d4f8811a47134528f12

GOGETTER

lun.vbs

26e2a41f26ab885bf409982cb823ffd1

Runs n.bat

n.bat

UNKNOWN

Likely runs scilc.exe

a.iso

UNKNOWN

Likely contains attacker files

msserver.exe / lhh.exe

b2557692a63e119af0a106add54950e6

CADDYWIPER

Files.xml

Not Applicable

Part of TANKTRAP Group Policy; File Copy

ScheduledTasks.xml

61c245a073bdb08158a3c9ad0219dc23

Part of TANKTRAP Group Policy; Task

ScheduledTasks.xml

82ab2c7e4d52bb2629aff200a4dc6630

Part of TANKTRAP Group Policy; Task

s1.txt

UNKNOWN

Likely contains SCIL commands

付録C:YARAルール

rule M_Methodology_MicroSCADA_SCILC_Strings

{

     meta:

          author = "Mandiant"

          date = "2023-02-13"

          description = "Searching for files containing strings associated with the MicroSCADA Supervisory Control Implementation Language (SCIL) scilc.exe binary." 

          disclaimer = "This rule is for hunting purposes only and has not been tested to run in a production environment."

 

     strings:

          $s1 = "scilc.exe" ascii wide

          $s2 = "Scilc.exe" ascii wide

          $s3 = "SCILC.exe" ascii wide

          $s4 = "SCILC.EXE" ascii wide

 

     condition:

          filesize < 1MB and

          any of them

}

rule M_Hunting_MicroSCADA_SCILC_Program_Execution_Strings

{

     meta:

          author = "Mandiant"

          date = "2023-02-13"

          description = "Searching for files containing strings associated with execution of the MicroSCADA Supervisory Control Implementation Language (SCIL) scilc.exe binary." 

          disclaimer = "This rule is for hunting purposes only and has not been tested to run in a production environment."

 

     strings:

          $s = "scilc.exe -do" nocase ascii wide

 

     condition:

          filesize < 1MB and 

          all of them

}

rule M_Methodology_MicroSCADA_Path_Strings

{

     meta:

          author = "Mandiant"

          date = "2023-02-27"

          description = "Searching for files containing references to MicroSCADA filesystem path containing native MicroSCADA binaries and resources." 

          disclaimer = "This rule is for hunting purposes only and has not been tested to run in a production environment."

 

     strings:

          $s1 = "sc\\prog\\exec" nocase ascii wide

 

     condition:

          filesize < 1MB and

          $s1

}

rule M_Hunting_VBS_Batch_Launcher_Strings

{

     meta:

          author = "Mandiant"

          date = "2023-02-13"

          description = "Searching for VBS files used to launch a batch script."

          disclaimer = "This rule is for hunting purposes only and has not been tested to run in a production environment."

 

     strings:

          $s1 = "CreateObject(\"WScript.Shell\")" ascii

          $s2 = "WshShell.Run chr(34) &" ascii

          $s3 = "& Chr(34), 0" ascii

          $s4 = "Set WshShell = Nothing" ascii

          $s5 = ".bat" ascii

    

     condition:

          filesize < 400 and 

          all of them

}

rule M_Hunting_APT_Webshell_PHP_NEOREGEORG 

{

     meta:

          author = "Mandiant"

          description = "Searching for REGEORG webshells."

          disclaimer = "This rule is for hunting purposes only and has not been tested to run in a production environment."

 

     strings:

          $php = "<?php" nocase

          $regeorg1 = {24 72 61 77 50 6f 73 74 44 61 74 61 20 3d 20 66 69 6c 65 5f 67 65 74 5f 63 6f 6e 74 65 6e 74 73 28 22 70 68 70 3a 2f 2f 69 6e 70 75 74 22 29 3b}

          $regeorg2 = {20 24 77 72 69 74 65 42 75 66 66 20 3d 20 24 5f 53 45 53 53 49 4f 4e 5b 24 77 72 69 74 65 62 75 66 5d 3b}

          $regeorg3 = {20 75 73 6c 65 65 70 28 35 30 30 30 30 29 3b}

          $regeorg4 = {20 24 61 72 68 5f 6b 65 79 20 3d 20 70 72 65 67 5f 72 65 70 6c 61 63 65 28 24 72 78 5f 68 74 74 70 2c 20 27 27 2c 20 24 6b 65 79 29 3b}

          $regeorg5 = {20 24 72 75 6e 6e 69 6e 67 20 3d 20 24 5f 53 45 53 53 49 4f 4e 5b 24 72 75 6e 5d 3b}

          $regeorg6 = {20 24 72 78 5f 68 74 74 70 20 3d 20 27 2f 5c 41 48 54 54 50 5f 2f 27 3b}

 

     condition:

          (5 of ($regeorg*)) and

          $php

}

rule M_Hunting_GOGETTER_SystemdConfiguration_1

{

     meta:

          author = "Mandiant"

          description = "Searching for Systemd Unit Configuration Files but with some known filenames observed with GOGETTER"

          disclaimer = "This rule is for hunting purposes only and has not been tested to run in a production environment."

 

     strings:

          $a1 = "[Install]" ascii fullword

          $a2 = "[Service]" ascii fullword

          $a3 = "[Unit]" ascii fullword

          $v1 = "Description=" ascii 

          $v2 = "ExecStart=" ascii 

          $v3 = "Restart=" ascii 

          $v4 = "RestartSec=" ascii 

          $v5 = "WantedBy=" ascii 

          $f1 = "fail2ban-settings" ascii fullword

          $f2 = "system-sockets" ascii fullword

          $f3 = "oratredb" ascii fullword

          $f4 = "cloud-online" ascii fullword

 

     condition:

          filesize < 1MB and (3 of ($a*)) and (3 of ($v*)) and (1 of ($f*))

}

付録D:SIGMA & YARA-Lルール

title: MicroSCADA SCILC Command Execution

description: Identification of Events or Host Commands that are related to the MicroSCADA SCILC programming language and specifically command execution

author: Mandiant

date: 2023/02/27

logsource:

    product: windows

    service: security

detection:

    selection:

        NewProcessName|endswith:

            - \scilc.exe

        CommandLine|contains:

            - -do

    condition: selection

falsepositives:

    - Red Team

level: High

tags:

    - attack.execution

    - attack.T1059

rule M_YARAL_Methodology_ProcessExec_SCILC_Do_1

{

    meta:

        author = "Mandiant"

        description = "YARA-L rule hunting for instances of process execution of the scilc.exe process with -do parameters. This is intended to be a hunting rule. Analysts would need to verify the legitimacy of the file passed in the -do parameter."

        severity = "Low"

        reference = " https://cloud.google.com/chronicle/docs/detection/yara-l-2-0-overview"

 

    events:

        $e.metadata.event_type = "PROCESS_LAUNCH"

        $e.target.process.command_line = /\s+\-do\s+[^\-\s]+/ nocase

        $e.target.process.file.full_path = /scilc\.exe$/ nocase

 

    condition:

        $e

}

付録E:ICSマッピングのためのMITRE ATT&CK

表6:ICSマッピングのためのMITRE ATT&CK

Tactic

Technique

Procedure

Initial Access

T0847: Replication Through Removable Media

Sandworm accessed a hypervisor that hosted a SCADA management instance for the victim’s substation environment and leveraged an ISO image named "a.iso" as a logical CD-ROM inserted into the CD-ROM drive of the SCADA virtual machine. The system was configured to permit inserted CD-ROMs to autorun.

Execution

T0807: Command-Line Interface

Sandworm leveraged malicious files that led to at least the following command lines execution: 

 

  • wscript.exe "d:\pack\lun.vbs" 
  • cmd /c "D:\pack\n.bat" 

 

Additional fragments recovered include text consistent with Windows command line execution:

 

  • C:\sc\prog\exec\scilc.exe -do pack\scil\s1.txt

Execution

T0871: Execution Through API

Sandworm utilized the native MicroSCADA “scilc.exe” binary to execute an external SCIL program via the SCIL-API.

Execution

T0853: Scripting

Sandworm leveraged Visual Basic Scripts, such as “lun.vbs”. The contents of “lun.vbs” include the following:

 

Set WshShell = CreateObject(“WScript.Shell”)

WshShell.Run chr(34) & “pack\n.bat” & Chr(34), 0

Set WshShell = Nothing

Evasion

T0872: Indicator Removal on Host

Sandworm deployed CADDYWIPER malware and deleted files to remove forensic artifacts.

Inhibit Response Function

T0809: Data Destruction

Sandworm deployed CADDYWIPER to wipe all files, any mapped drives, and the physical drive partition of impacted systems. The actor deleted files related to the OT capability. 

Impair Process Control

T0855: Unauthorized Command Message

Sandworm utilized “scilc.exe” to execute unauthorized SCIL commands that would have caused the MicroSCADA server to relay the commands to the substation RTUs via either the IEC-60870-5-104 protocol for TCP/IP connections or the IEC-68750-5-101 protocol for serial connections.

Impact

T0831: Manipulation of Control

Sandworm caused a manipulation of control of the power distribution system via unauthorized SCIL commands. These were likely commands to open circuit breakers in the victim’s substation environments.

付録F: Validation Content

VID

Title

A106-441

Malicious File Transfer - REGEORG.NEO, Download, Variant #1

A106-442

Malicious File Transfer - Sandworm, GOGETTER, Download, Variant #5

A106-443

Web Shell Activity - REGEORG.NEO, Initial Connection, Variant #1

A106-440

Malicious File Transfer - CADDYWIPER, Download, Variant #6

A106-438

Host CLI - Sandworm, GOGETTER, Systemd Service

A106-446

Host CLI - Sandworm, CADDYWIPER, Scheduled Task, Variant #2

A106-439

Host CLI - Sandworm, CADDYWIPER, Scheduled Task, Variant #1

A106-437

Protected Theater - CADDYWIPER, Execution, Variant #2

S100-280

Malicious Activity Scenario - Sandworm Disrupts Power Using a Novel Attack Against Operational Technology Systems