石油・ガス企業を標的とするShamoon 3

By

Category: Unit 42

Tags: ,

This post is also available in: English (英語)

概要

12月10日、Disttrackマルウェアの新しい亜種がVirusTotal (SHA256:c3ab58b3154e5f5101ba74fccfd27a9ab445e41262cdf47e8cc3be7416a5904f)に提出されました。

VirusTotalでは、弊社が以前にここここここで公開した2016年と2017年のShamoon 2攻撃で使用されたDisttrackマルウェアを含め、かなりの量のコードが共有されています。

弊社はマルウェアの被害を受けた組織を特定できませんでしたが、本日、Saipemが攻撃を受けたことを発表しました

以前の攻撃では、ネットワーク上の他のシステムへ拡散させるためにDisttrackツールで使用されたドメイン名と資格情報に基づいて、攻撃を受けた組織を判別できました。しかし、この機能が今回のサンプルでは見つかりませんでした。

過去のShamoon攻撃とは異なり、この特定のDisttrackワイパーは画像でファイルを上書きしません。その代わりに、システム上のMBR、パーティション、ファイルをランダムに生成されたデータで上書きします。

プレス リリースによると、Saipemは、Shamoonマルウェアの亜種によるサイバー攻撃を受けたことを確認しました。攻撃はインフラストラクチャとデータ可用性の問題を引き起こしたため、この企業は復元処理を行わざるを得ませんでした。

Saipemは、ネットワーク上の300のシステムに、2012年のShamoon攻撃に関連するマルウェアによって障害が発生したとReutersに伝えました。弊社はSaipemが攻撃を受けた組織であるとは断定できませんが、このインシデントと、このブログで説明するDisttrackサンプルの出現はほとんど同時に起きています。

ドロッパー

VirusTotalに提出されたサンプルはDisttrackドロッパーで、通信モジュールとワイパー モジュールをシステムにインストールする役割を果たします。また、ドロッパーは、同じローカル システム上の他のシステムへ拡散させる役割も担っています。これは、以前に窃取したユーザー名とパスワードを使用して、ネットワーク上の他のシステムへリモート ログインを試行することで達成されます。この特定のサンプルには、拡散機能を実行するためのドメイン、ユーザー名、パスワードが含まれていません。したがって、このサンプルは自身が実行された特定システム上のみで動作するようです。

ドロッパーには、実行時間「12/7/17 23:51」がハードコードされています。システムの日付がこの日付を経過している場合、ドロッパーはワイパー モジュールをインストールし、システム上でワイピング(消去)ファイルを起動します。ドロッパーは、「%WINDOWS%\inf\mdmnis5tQ1.pnf」ファイルを読み取り、ハードコードされた時間の代わりに使用するカスタム実行日を取得します。ドロッパーによってインストールされた通信モジュールがこのファイルに書き込みます。これについては後述します。さらに、ドロッパーは文字列「\inf\averbh_noav.pnf」を復号します。これは、通信モジュールがシステム情報を書き込むために使用する別のファイルです。ワイパーがシステムを正常にワイプできた場合でも、ドロッパーはこのファイルを使用していないようです。

ドロッパーには3つのリソースがあり、その内2つには埋め込みモジュール(具体的には、通信モジュールとワイパー モジュール)が含まれています。3番目のリソースには、ドロッパーのx64亜種が含まれています。これは、システムのアーキテクチャがx64であると判断された場合に使用されます。リソースの言語は「SUBLANG_ARABIC_YEMEN」に設定されており、これはShamoon 2攻撃で使用された以前のDisttrackサンプルでも検出されました。リソース名はPIC、LNG、MNUで、以前のサンプルで見つかったICO、LANG、MENUという名前が少し変更されています。

ドロッパーは、特定のオフセットをシークし、暗号テキスト長として特定数のバイトを読み込むことで、これらのリソースからモジュールを抽出します。その後、ドロッパーはXOR暗号と、デコードされてキーとして使用される特定のBase64エンコード文字列を使用して、暗号テキストを復号します。暗号テキストにアクセスする前に、ドロッパーは指定されたオフセットから14を減算します。これは、Shamoon 2攻撃で配信された以前のDisttrackサンプルと同じです。表1、2、3に、リソース、モジュールを抽出するために使用される情報、抽出されるモジュールを示します。

リソース名 PIC
説明 ドロッパーのx64亜種
Base64キー 2q9BQGHGVktPVIMZ6Nx17Njp4B5mHgj51hbybNInRWsNIWniq6hOYvf5CksMXvPOyl/3dYKDn7ymSGlK0+l5KA8YC8dzkkAwmn0nbBO97HgjJKJyL9DoiYKsO2M+A44NgOI89FIsWjcex9oEWzOo6VvxJ69HBvg+L4FExlbd8ZfvGewxgPgl98lqVGj14y5OBFIHTdvfxnnq/cTR55TgQdVDFUJHd2ljyzDl3LKPSUxT9sIE1aS7EA==
オフセット 8786-14
長さ 983552
平文のSHA256 0975eb436fb4adb9077c8e99ea6d34746807bc83a228b17d321d14dfbbe80b03

表1 Disttrackドロッパーのx64亜種を含むリソース

リソース名 MNU
説明 通信モジュール
Base64キー U3JGgjNUDzWJEpOxzuwHjOijgav56cZatHh98dLbazGIBe7UMOcvdyCvU5/8mH1n7jUcMSIPFmqr7M671h5jradiKMn9M1sBdAmKSZUnXhz6FQKcvzkOee6EKEQZdKABTKX4mW+0arvZG70YhczUhI2ywcEcx+5tU6/aeQoX6ABoiP3wLsSsRatGwqR89fMir6S2Z7Lf5YW3i0a/2vCxwjK9r/zO5FXJBXsV1QRJ8F27t8pmYYFNiaN4OaN+7Gu7lf8=
オフセット 8601-14
長さ 266752
平文のSHA256 0694bdf9f08e4f4a09d13b7b5a68c0148ceb3fcc79442f4db2aa19dd23681afe

表2 Disttrackドロッパー内の通信モジュールを含むリソース

リソース名 LNG
説明 ワイパー モジュール
Base64キー cb5F91PLTu1hN8oPgG2a6AQiJkphsXAmWFarsUoYEFo/BNgxF8Rj/hdzHxW/k/fLCZboSJRLnr9OH578IJyiSSdvz3uUaNA/vycy7ZJaZ8Vf36i0L8fF9GYY4/glZt570dbuT8N7N6DFqIltGLAt87fZnUH07RlfqtsVfITXGlhJtxu7bBgB46gH74Y+WNy16u9BS8mdh+S8jqToZrob7o4wI2CUcoaf17mZ7P2SIVL+X5GVls6OrDA3/t50GX3t6wH4DTR7IHhoonQPA5rmKWxS6gcp
オフセット 7892-14
長さ 402432
平文のSHA256 391e7b90bf3f0bfeb2c2602cc65aa6be4dd1c01374b89c4a48425f2d22fe231c

表3 Disttrackドロッパー内のワイパー モジュールを含むリソース

ドロッパーは、以下の表4に示す属性を備えたサービスを作成することで、自身をシステム(および拡散が可能な場合はリモート システム)にインストールします。

サービス名 MaintenaceSrv
サービス表示名 メンテナンス ホスト サービス
サービスの説明 メンテナンス ホスト サービスは、LSAプロセスでホストされます。このサービスは、コモン クライテリアの要件に従い、秘密キーと関連付けられた暗号処理に対して、キー プロセスの分離を実行します。サービスはセキュア プロセスcompl\x1dに長寿命のキーを格納し、使用します。
バイナリ パス MaintenaceSrv32.exeまたはMaintenaceSrv64.exe

表4 Disttrackドロッパーによって作成されるサービス

ドロッパーは、通信モジュールとワイパー モジュールをシステムにインストールするときにランダムな名前を選択します。通信モジュールは、次のファイル名のいずれかで、「exe」ファイル拡張子が付加されています。

  • netnbdrve
  • prnod802
  • netrndiscnt
  • netrtl42l
  • mdmadccnt
  • prnca00
  • bth2bht_ibv32
  • cxfalcon_ibL32
  • mdmsupr30
  • digitalmediadevicectl
  • mdmetech2dmv
  • netb57vxx
  • winwsdprint
  • prnkwy005
  • composite005
  • mdmar1_ibv32
  • prnle444
  • kscaptur_ibv32
  • mdmzyxlga
  • usbvideob
  • input_ibv48
  • prnok002_ibv
  • averfx2swtvZ
  • wpdmtp_ibv32
  • mdmti_ibv32
  • printupg_ibv32
  • wiabr788

ワイパー モジュールは、次のファイル名のいずれかで、「exe」ファイル拡張子が付加されています。

  • _wialx002
  • __wiaca00a
  • tsprint_ibv
  • acpipmi2z
  • prnlx00ctl
  • prngt6_4
  • arcx6u0
  • _tdibth
  • prncaz90x
  • mdmgcs_8
  • mdmusrk1g5
  • netbxndxlg2
  • prnsv0_56
  • af0038bdax
  • averfix2h826d_noaverir
  • megasasop
  • hidirkbdmvs2
  • vsmxraid
  • mdamx_5560
  • wiacnt7001

ワイパー

ドロッパーがシステムに書き込むワイパー モジュール(SHA256: 391e7b90bf3f0bfeb2c2602cc65aa6be4dd1c01374b89c4a48425f2d22fe231c)は、システム上のMBR、パーティション、ファイル内のデータを上書きする役割を担います。ワイパーは、ElDosのRawDiskと呼ばれる正規のハード ディスク ドライバを使用して、このワイピングを実行します。ワイパーには、オフセット1984へスキップし、そのオフセットから27792バイトを読み込むことで抽出される、「e」という名前のリソースにElDos RawDiskドライバが含まれています。その後、247バイト キーを使用してデータを復号し、「%WINDOWS%\system32\hdv_725x.sys」に保存します。さらに、ワイパーは、次のコマンドラインのコマンドを使用して、このドライバ用の「hdv_725x」という名前のサービスを作成し、「sc start hdv_725x」と指定してこのサービスを実行します。

sc create hdv_725x type= kernel start= demand binpath= %WINDOWS%\system32\hdv_725x.sys

このワイパーは、「R」フラグを使用して設定されていました。これは、MBR、パーティション、ファイルを上書きするために使用するランダムなバイト数のバッファを生成します。サンプルは、2つの追加の設定フラグもサポートしています。これは、ファイルを使用してファイルを上書きする「F」フラグと、コンテンツを暗号化する「E」フラグです。

以前のShamoon攻撃でファイルを上書きするために使用する画像が観測されたのと同様に、ワイパーは、「F」設定フラグによって、ファイルを使用してディスク上のファイルを上書きするように設定できます。このファイルは、「GRANT」という名前のリソースに格納されますが、この特定のワイパーは上書きするためにファイルを使用するように設定されていないため、GRANTリソースは存在していません。ファイルを使用するように設定されていれば、このサンプルは表5に示す情報を使用してファイルを抽出します。

リソース名 GRANT
説明 ワイパー モジュール内で上書きするためのファイル
Base64キー heocXOK4rDmQg4LRfiURI9wSOuSMwe0e69NfEpZLmyNixiUGYdEtpx/ZG3rMRN7GZlJ1/crQTz5Bf6W0xgkyYCwzD247FolCGA0EE5U/Oun5qlDd1u1CA+fee7cG
オフセット 71-14
長さ <不明>
平文のSHA256 <不明>

表5 データの上書きに使用するためのファイルを含むワイパー モジュール内のリソース

また、このサンプルは、「E」設定フラグを介して、MBR、パーティション、ファイルを暗号化するためのRSAキーをインポートするように設定することもできます。このサンプルは、ファイルを暗号化するように設定されていなかったため、ワイパー内のRSAキーは空です。

このワイピング機能を完了した後、サンプルは以下のコマンドラインを使用してシステムを再起動します。重要なシステムのロケーションとファイルがランダム データで上書きされているため、システムが再起動すると、システムは使用不可能な状態になります。

shutdown -r -f -t 2

通信

Disttrackドロッパーによってドロップされる通信モジュール(SHA256: 0694Bdf9f08e4f4a09d13b7b5a68c0148ceb3fcc79442f4db2aa19dd23681afe)は、以下の2つのサポート ファイルを使用します。

  • %WINDOWS%\inf\mdmnis5tQ1.pnf – 関連付けられたワイパー モジュールのワイプ日付を設定するために使用されます
  • %WINDOWS%\inf\averbh_noav.pnf – 成功したワイピングをマークするために使用されます

通信モジュールは、ハードコードされたURLにアクセスし、C2サーバーと通信する役割を担います。しかし、以前のDisttrackサンプルと同様に、この通信モジュールにはURLで使用するための有効なC2ドメインが含まれていません。C2ドメインが含まれていれば、以下に示すように、「selection」という名前のパラメータに続けて、システム情報と、「averbh_noav.pnf」ファイルのコンテンツを指定してURLが作成されます。

[C2 URL, empty]?selection=[system info and contents of averbh_noav.pnf]

C2のURLと通信する場合、通信モジュールは「Mozilla/13.0 (MSIE 7.0; Windows NT 6.0)」というユーザー エージェントを使用します。これは、過去のDisttrack通信モジュール サンプルと同じです。以下の表6に、通信モジュールが処理可能で、C2が応答する2つのコマンドを示します。

コマンド 説明
E C2サーバーからBase64エンコード ファイルを読み込み、「del /f /a %TEMP%\Temp\reilopycb\*.exe」を実行して以前にダウンロードされた実行ファイルを削除し、「mkdir %TEMP%\Temp\reilopycb] > nul 2>&1」を実行してフォルダを作成し、実行ファイルを「[tick count].exe」という名前のファイルに保存します。その後、トロイの木馬がダウンロードされた実行ファイル「%TEMP%\Temp\reilopycb\[tick count].exe」を実行します。
T 「\inf\mdmnis5tQ1.pnf」ファイルを開き、指定された日付をファイルに書き込みます。「\inf\mdmnis5tQ1.pnf」ファイルは、この通信モジュールに関連付けられ、システムをワイピングする役割を担っている別のモジュールによって使用されます。

表6 通信モジュールのコマンド ハンドラ内で使用可能なコマンド

結論

VirusTotalにアップロードされたDisttrackサンプルは、2016年と2017年のShamoon 2攻撃で使用されたサンプルの亜種です。このツールには、ローカル ネットワーク上の他のシステムへ拡散させるための機能はありません。その代わりに、攻撃者がワイプしようとしているシステムに読み込まれ、実行される必要があります。ワイプ日付の「12/7/2017」は、適切な日付ではないように見えます。しかし、システム日付がワイプ日付より後である限り、Disttrackドロッパーはワイパー モジュールをインストールし実行するため、この古い日付はいまだに有効です。過去のShamoon攻撃とは異なり、この特定のDisttrackワイパーは画像でファイルを上書きしません。その代わりに、システム上のMBR、パーティション、ファイルをランダムなデータで上書きします。このサンプルがSaipem攻撃で使用されたことは確認できませんが、少なくとも関連していると思われます。

パロアルトネットワークのお客様は、以下の方法でこの脅威から保護されています。

  • WildFireは、この攻撃に関連付けられたすべてのサンプルを、悪意があると判断して検出します
  • AutoFocusをご使用のお客様は、Disttrackを使用してこの攻撃と以前のShamoon攻撃を追跡できます。

IOC

  • c3ab58b3154e5f5101ba74fccfd27a9ab445e41262cdf47e8cc3be7416a5904f – Disttrack Dropper x86
  • 0975eb436fb4adb9077c8e99ea6d34746807bc83a228b17d321d14dfbbe80b03 – Disttrack Dropper x64
  • 0694bdf9f08e4f4a09d13b7b5a68c0148ceb3fcc79442f4db2aa19dd23681afe – Disttrack Comms module x86
  • 391e7b90bf3f0bfeb2c2602cc65aa6be4dd1c01374b89c4a48425f2d22fe231c – Disttrack Wiper module x86
  • 6985ef5809d0789eeff623cd2436534b818fd2843f09fa2de2b4a6e2c0e1a879 – ElDos RawDisk Driver x86
  • ccb1209122085bed5bded3f923835a65d3cc1071f7e4ad52bc5cf42057dd2150 – Disttrack Comms module x64
  • dab3308ab60d0d8acb3611bf364e81b63cfb6b4c1783864ebc515297e2297589 – Disttrack Wiper module x64
  • bc4513e1ea20e11d00cfc6ce899836e4f18e4b5f5beee52e0ea9942adb78fc70 – ElDos RawDisk Driver x64