ZionSiphonマルウェアがイスラエルの海水淡水化プラントを標的に

ハッカーは「ZionSiphon」と呼ばれるツールを使用して、イスラエルの海水淡水化および水処理プラントを破壊するために設計された新しいマルウェアで実験を行っています。

しかし、現在のサンプルは完全に機能する兵器というよりも、欠陥のある開発段階のビルドのように見えます。

このコードは2.52.0.0~2.55.255.255、79.176.0.0~79.191.255.255、212.150.0.0~212.150.255.255などのIPv4範囲をチェックしており、これらはすべてイスラエルのネットワークに地理的に位置しています。

地理的な面を超えて、このバイナリにはBase64エンコードされたプロパガンダ文字列が含まれており、イラン、パレスチナ、イエメンへの支援を「シオニスト侵略に対する」ものとして参照し、「テルアビブとハイファの住民に毒を盛る」という願望を表現しています。これは経済的動機による犯罪というよりも、イデオロギー的な動機を強く示唆しています。

Image

Darktrace研究者は最近マルウェアサンプルを分析し、それ自体をZionSiphonと明示的に識別し、イスラエルのアドレス空間にマップされるハードコードされたIP範囲を組み込んでおり、イスラエル内に位置するホストでの実行を制限する意図を示しています。

マルウェアはイスラエルの都市ディモナとハンドル「0xICS」も参照しており、明示的なOT志向と反イスラエル的メッセージングを持つアクターを示唆しています。

海水淡水化関連の標的発見

ZionSiphonの標的設定ロジックは国チェック以上に、侵害されたホストが水処理または海水淡水化環境に属することを確認しようとします。

「IsDamDesalinationPlant()」関数は実行中のプロセスをスキャンして「DesalPLC」、「ReverseOsmosis」、「ChlorineCtrl」、「WaterPLC」、「SeaWaterRO」などの文字列を検索します。これらはすべて産業プラント内の逆浸透膜海水淡水化と塩素管理に密接に関連した用語です。

ディスク上では、マルウェアは「C:\Program Files\Desalination」、「C:\Program Files\Water Treatment」、「C:\ROConfig.ini」、「C:\ChlorineControl.dat」、「C:\SalinityControl.ini」などのプログラムディレクトリと設定ファイルを検索し、水質と流量を管理するOTシステムへの実行をさらに限定しています。

その内部標的リストには、イスラエルの国家水インフラストラクチャに関連した名前も含まれており、メコロットおよびソレク、ハデラ、アシュドッド、パルマキム、シャフダン廃水処理施設などの主要海水淡水化サイトが含まれています。

Image

IT観点から、ZionSiphonは典型的なWindowsマルウェアローダーのように動作しています。「RunAsAdmin()」ルーチンは管理者権限で実行されているかどうかをチェックし、実行されていない場合は「Start-Process -Verb RunAs」を使用してPowerShell経由で昇格した権限で自身を再起動します。

永続性はHKCU\Software\Microsoft\Windows\CurrentVersion\Runの下のステルス的なユーザーレベルオートランキーを通じて実装され、マルウェアはLocalApplicationDataの下の隠しパスに自身をコピーして「svchost.exe」というファイル名を使用し、「SystemHealthCheck」スタートアップエントリを登録しています。

隔離されたOTセグメント間を移動するために、マルウェアはリムーバブルメディア伝播メカニズムを組み込んでいます。自身をUSBドライブにコピーし、隠しの「svchost.exe」として配置し、表示ファイルをユーザーがクリックするとマルウェアを静かに実行するショートカット.lnkで置き換えます。

「IncreaseChlorineLevel()」は海水淡水化、逆浸透膜、塩素制御、および水処理OT/産業制御システム(ICS)に関連する設定ファイルのハードコードされたリストをチェックします。

Image

このテクニックは、エアギャップされているまたは不十分にセグメント化されたネットワークでUSBをブリッジとして利用した以前のICS標的キャンペーンを反映しています。

OTスキャニングロジック

システムが地理的および環境チェックに合格した場合、ZionSiphonの最初のアクションはローカル設定ファイルを改ざんして塩素用量と逆浸透膜圧を制御します。

「IncreaseChlorineLevel()」関数は「Chlorine_Dose=10」、「Chlorine_Pump=ON」、「Chlorine_Flow=MAX」、「Chlorine_Valve=OPEN」、「RO_Pressure=80」などの固定パラメータを一致する設定ファイルに追加し、これらの値がコントローラーによって消費される場合、過剰投与または安全でない動作圧を引き起こす可能性があります。

標的設定ファイルが見つからない場合、マルウェアはネットワークベースのOT発見に切り替わります。ローカル/24サブネットをスキャンし、TCPポート502(Modbus)、20000(DNP3)、102(S7comm)をプローブし、期待通りに応答したデバイスをICSエンドポイントとしてラベル付けします。これには返されたデータ上の基本的なプロトコル対応チェックも含まれます。

Modbusの場合、コードは最初の10レジスタに対して標準的なレジスタ読み込み要求(機能3)を発行し、もっともらしい「Chlorine_Dose」またはタービン関連の値を識別しようとします。成功した場合、単一レジスタ書き込みコマンド(機能6)を使用して、塩素用量に値100またはその他のパラメータに0を強制します。

その危険な設計にもかかわらず、現在のZionSiphonサンプルは独自の国検証ロジックが壊れているため、破壊ルーチンをトリガーできないように見えます。

Image

マルウェアはすべてのIP範囲をハードコードされた文字列「Nqvbdk」に関連付けていますが、異なる出力を生成するXORベースの「EncryptDecrypt(“Israel”, 5)」関数の結果と比較しており、意図されたIP範囲内で実行されている場合でも国チェックは常に失敗します。

「IsTargetCountry()」がfalseを返すと、「SelfDestruct()」ルーチンは永続性を除去し、ターゲット設定がイスラエルの範囲と一致しなかったことをログに記録し、実行ファイルを繰り返し削除するバッチファイルを作成します。

同様に、DNP3およびS7commブランチは機能的なプロトコルモジュールというよりもスタブのように見え、完全なフレームまたは有効な書き込み操作を欠いているプロトコル形の短いバイト列のみが含まれています。

Darktrace は、ZionSiphonはおそらく開発段階またはdefanged buildであり、それでもなお明確なロードマップを明らかにしていると評価しています:マルチプロトコルICS操作、海水淡水化インフラの政治的に標的化された破壊、および運用ネットワーク内でのステルス的な永続性です。

翻訳元: https://gbhackers.com/zionsiphon-malware/

ソース: gbhackers.com