Shamoon 3: コーランの詩を含む変更されたオープンソース ワイパー

By

Category: Unit 42

Tags:

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

概要

Unit 42は、今月初めに石油・ガス組織に影響を及ぼしたShamoon 3攻撃の調査を続けてきました。継続的な調査中に、悪名高いDisttrackトロイの木馬を使うインシデントに関連している可能性のある、別のワイパー型トロイの木馬を特定しました。このワイパー型トロイの木馬は、オープンソースSuperDeleteツールに変更を加えた亜種で、そのソース コードは Githubから容易に入手できます。弊社は、このワイパーが、Disttrack実行ファイルが実行された同じシステム上にあり、「C:\Windows\hdv_725x.sys」にカーネル ドライバーが保存されたという証拠をつかみました。これは、Disttrackワイパーがシステム上のファイルをワイプ(消去)するために、ElDos RawDiskドライバーを保存した場所です。

このワイパーの開発者は、SuperDeleteのソースコードを使用し、それを変更して新しい亜種を作成しました。その結果生じた亜種は、C#で記述されたワイパー型トロイの木馬です。これには、システム上のファイルを削除する以外の追加機能は含まれていないため、以前のDisttrackサンプルとは異なり、ネットワーク上の他のシステムに拡散することはできません。Disttrackワイパーと異なり、SuperDelete亜種はシステム上のファイルをワイプするためにカーネル ドライバーを利用していません。その代わりに、SuperDeleteワイパーは、削除する前にランダム データでユーザー ファイルを上書きします。つまり、使用可能なバックアップをなくし、ファイルの復元を困難にしています。SuperDelete亜種の最も興味深い部分は、開発者がコーランの詩から宗教色の濃いメッセージを意図的に追加している点です。それは、システムをワイプする前には表示されず、ツールの徹底的な分析を行った場合にのみ検出できます。

弊社は、SuperDeleteソース コードに基づくワイパーの継続的な分析を通じて、攻撃者が侵害したネットワーク上の単一のシステムから他のホストへワイパーを伝搬することで、複数のシステム上でワイパーを実行するために使用したとみなされる2つの実行ファイルを検出しました。弊社は、この2つの補助的な実行ファイルを、ローダー型トロイの木馬とスプレッダー型トロイの木馬と呼んでいます。これらのトロイの木馬は、ネットワーク上の1つの侵害されたシステムにロードされ、リモート システムへワイパーを配信するための一元的なポイントとして利用されているようです。同様の一元的な配信アプローチは、Shamoon 2攻撃でも使用され、攻撃者がDisttrackを配信した方法に関する弊社の分析で解説されています。

ローダー型トロイの木馬

ローダー型トロイの木馬(SHA256:d9e5266371…)は非常にシンプルなツールで、攻撃者が伝搬先とするホスト名を含むテキスト ファイルのリストをロードします。各テキスト ファイルには、攻撃者が事前のスパイ活動に基づいて作成したと思われるホスト名とそれぞれのWindowsバージョンのリストが含まれています。ローダー型トロイの木馬は、各テキスト ファイルに関連付けられたスプレッダー型トロイの木馬を実行します。

ローダー型トロイの木馬のサンプルは、「shutter」および「light」という名前の2つの異なるフォルダーで「*.txt」を検索することで、この2つのフォルダーからテキスト ファイルのリストを作成します。コードに基づいて、ローダー型トロイの木馬はこの2つのフォルダーからそれぞれ最大6個のテキスト ファイル、合計12ファイルをロードします。その後、図1のコードに示すように、各テキスト ファイルを引数として使用して、新しいスプレッダー プロセスを作成するループに入ります。ループは、コマンド ラインcmd.exe /c spreader.exe [shutterおよびlightフォルダーからのテキスト ファイル]を使用し、ProcessクラスのStart関数を使用して、新しいスプレッダー プロセスを作成します。

図1 各テキスト ファイルのスプレッダーを作成するローダー型トロイの木馬内のループ

spreader.exe実行ファイルが引数として提供されたテキスト ファイルをどのように使用しているかを分析することで、作成された各スプレッダー プロセスにローダー型トロイの木馬が供給している各テキスト ファイルは、各行が次のような構造の改行区切りのファイルであることを確信しました。

[hostname],[windows version]

スプレッダー トロイの木馬

spreader.exe実行ファイル(SHA256:35ceb84403…)はスプレッダー型トロイの木馬であり、提供されたテキスト ファイルの各行を読み取り、カンマ(",")で文字列を分割し、これを拡散対象のネットワーク上の他のシステムのリストとして使用します。スプレッダーには、リモート システムへのアクセスを取得するために使用するユーザー名とパスワードの組み合わせは含まれていません。その代わりに、スプレッダー型トロイの木馬を実行したアカウントの特権を利用します。このことは、攻撃者が、ネットワーク上の他のシステムにファイルをコピーして実行するために十分な高レベルの特権を持つアカウントで、ローダー型トロイの木馬を実行し、その結果、スプレッダー型トロイの木馬が実行されたことを示唆しています。

テキスト ファイル内の他のホストへの拡散を試みる際に、スプレッダーは、リモート システムのWindowsバージョンを示す、カンマの右側の文字列の内容に基づいて、異なる方法で動作します。最初に、スプレッダーはWindowsバージョン文字列に以下が含まれているかどうかをチェックします。

  • 7
  • 2008
  • XP
  • 2003
  • 2000
  • VISTA

いずれかの文字列が含まれている場合、スプレッダーはnet2という名前のローカル フォルダー内の実行ファイル(*.exe)のリストを取得します。これには、スプレッダーがリモート ホストにコピーを試みる実行ファイルが1つだけ含まれています。このファイルのコピーを実行するために、スプレッダーは、図2に示すように、mkdirコマンドを使用してプロセスを作成することで、初めにリモートシステム上のパスC:\Program Files\Internet Explorer\signinにフォルダーを作成します。

図2 リモート ホスト上にフォルダーを作成するスプレッダー型トロイの木馬内の関数

その後、次のコマンドラインを使用してプロセスを作成することで、net2フォルダーからホストへ実行ファイルをコピーします。

cmd.exe /c copy net2\[executable from 'net2' folder] \\[hostname]\"C$\Program Files\Internet Explorer\signin\[filename of executable from 'net2' folder]"

実行ファイルをリモート システムへコピーした後、スプレッダーは以下のパスを使用してファイルを開くことで、リモート システム上にファイルを作成します。

\\[hostname]\admin$\process.bat

スプレッダーは、以下をprocess.batファイルに書き込みます。

"C:\Program Files\Internet Explorer\signin\"[filename of executable from 'net2' folder]

その後、スプレッダーはWMIを使用してリモート システムへ接続し、Win32_Processクラスを使用してリモート システム上でprocess.batスクリプトを実行します。これによって、スプレッダーがシステムにコピーしたnet2フォルダーから、アプリケーションが有効に実行されます。

テキスト ファイル内でホスト名のオペレーティング システム バージョンが空白の場合、スプレッダーは少し異なる方法で動作します。スプレッダーは、上述したようにリモート システム上にProgram Files\Internet Explorer\signinディレクトリを作成し、allという名前のフォルダー内にあるすべてのファイル名を取得して、フォルダー内の1番目と2番目のファイルをリモート ホストにコピーします。弊社は、コピーされた1番目のファイルはバッチ スクリプトで、2番目のファイルは実行ファイルであると考えています。この2つのファイルは、以下のコマンド ラインを実行することでコピーされます。

cmd.exe /c copy all\[first file (possible batch file) from 'all' folder] \\[hostname]\"C$\Program Files\Internet Explorer\signin\[filename of first file from 'all' folder]"

cmd.exe /c copy all\[second file (executable) from 'all' folder] \\[hostname]\"C$\Program Files\Internet Explorer\signin\[filename of second file from 'all' folder]"

その後、スプレッダーは上述した同じ方法で、WMIを使用してコピーされた実行ファイルを実行します。リモート ファイルにコピーされた1番目のファイルは、リモート ホスト上でスプレッダーによって実行されたことが確認されないため、その目的は不明です。

ホスト名のバージョン名が空ではなく、上記にリストされたWindowsバージョンと一致しない場合、スプレッダーは少し異なる方法で動作します。この場合、スプレッダーは、リモート ホスト上にProgram Files\Internet Explorer\signinフォルダーも作成し、net4という名前のフォルダーから実行ファイルを取得して、以下のコマンド ラインを使用して、リモート ホストにこの実行ファイルをコピーします。

cmd.exe /c copy net4\[executable from 'net4' folder] \\[hostname]\"C$\Program Files\Internet Explorer\signin\[filename of executable from 'net4' folder]"

スプレッダーは、上述した同じ手法でWMIを使用して、リモート システム上にコピーされた実行ファイルを実行します。

ワイパー: SuperDeleteの亜種

残念ながら、弊社は、ローダー型トロイの木馬とスプレッダー型トロイの木馬が実行されたシステム、またはこれらのトロイの木馬が拡散されたシステムのフォレンジックイメージにはアクセスできません。しかし、「SlHost.exe」というファイル名でシステム上にインストールされ、これまで不明であったワイパー型トロイの木馬も、Disttrack (SHA256:c3ab58b315…)にも感染していたことを示す証拠があります。この不明であったワイパーは、以下の場所に保存され、実行されます。これは、スプレッダー型トロイの木馬がリモート システム上で作成し、ファイルをコピーするフォルダーと同じ場所です。

C:\Program Files\Internet Explorer\signin\SlHost.exe

SlHost.exeファイルは、C#で作成されているワイパー型トロイの木馬です。この開発者は、無償で入手可能なSuperDeleteのソースコードを基盤として使用し、これを変更しました。その結果作成されたワイパー型トロイの木馬には、使用されることがない多くのコード行があります。このようなコード行は、使用されなかったSuperDeleteツールのコードベースのアーティファクトにすぎません。例えば、このワイパーには、SuperDeleteのソースコードにある次のコマンドライン引数を解析するコードが含まれていますが、これらの引数が実際に使用されることはありません。

  • -s
  • –silentMode
  • –bypassAcl
  • –printStackTrace

開発者による最も興味深いSuperDeleteのソースコードの変更は、標準出力を通じてコンソールへの書き込みを試みるアスキーアートの挿入です。このワイパーは、図3に示したアスキーアートの各行を文字列「text」と比較し、一致した場合、その行を標準出力に対して出力します。しかし、アスキーアートには文字列「text」と一致する行はないため、このアスキーアートが表示されることはありません。

図3 SlHostワイパー型トロイの木馬のアスキーアート

図3で示したアスキーアートで非常に興味深い点は、コーランからの引用であるアラビア語の語句が含まれていることです。具体的には「Surat Al Masad(棕櫚章(アル=マサド))」で、その一部を翻訳すると次のようになります

アブー・ラハブ(「炎の父」、預言者の叔父、彼に平安あれ)の両手は滅び,かれも滅びてしまえ。

このワイパーの開発者は、ワイパー型トロイの木馬にこのアスキーアートをメッセージとして意図的に追加しました。過去のShamoon攻撃に関連する攻撃者は、政治色が濃い画像を使用して、ディスクのMBR、パーティション テーブル、ファイルを上書きしました。弊社の以前の記事で述べたように、Shamoon 3で使用されているDisttrackワイパーは、政治色の濃い画像ではなくランダム生成されたデータを使用してファイルを上書きしました。このことについては、弊社のShamoon 2攻撃について説明している記事で述べられています。アスキーアートが標準出力に書き込まれないということは、トロイの木馬のコードの分析者だけがこのメッセージを発見するよう開発者が意図していたことを示しています。

ファイルのワイプ

アスキーアートを作成した後、このワイパーは、システムに接続されたすべての固定ストレージ デバイスを列挙します。図4は、すべての固定ハード ドライブを取得し、ドライブ名のリストを作成するワイパーを示しています。その後、このワイパーは、このドライブ名を使用して各デバイスに格納されているファイルおよびフォルダを列挙します。

図4 接続されているハード ドライブを列挙するために使用するgetallDrives関数

このワイパーは、ストレージ デバイスを列挙した後、各ストレージ ボリュームのすべてのファイルおよびフォルダを削除しようとします。すべてのファイルを削除した後、このワイパーは、図4に示すように、ストレージ ボリュームのルート パス("C:\"など)を指定して削除しようとします。

図5 %SYSTEM%フォルダを削除する前にシステム上の各フォルダを削除する主な関数のコード

システム上のファイルとフォルダを削除するために、このワイパーはまず特定の特権を取得しようとします。具体的には次の特権です。

  • SeBackupPrivilege
  • SeRestorePrivilege
  • SeTakeOwnershipPrivilege
  • SeSecurityPrivilege

このワイパーは、ワイプ プロセスを実行するために、フォルダとその内容を再帰的に削除する関数を呼び出します。各フォルダの内容を列挙するときに、フォルダ名の配列が作成されます。このワイパーは、このフォルダ名の配列を反復処理して、再帰的な性質を持つ同じフォルダ削除関数を呼び出します。

また、各フォルダ内のすべてのファイルも削除しようとします。具体的には、さまざまな方法でユーザー ファイルとシステム ファイルを削除します。システム ファイルを削除するために、NtSetInformationFile API関数を使用してFILE_DISPOSITION_INFORMATION構造体内のFILE_DISPOSITION_DELETEフィールドをtrueに設定し、ファイルを削除対象としてマークします。

ユーザー ファイルを削除するために、このワイパーは初めにファイルが読み取り専用に設定されているかどうかを確認します。読み取り専用に設定されている場合は、該当ファイルを削除できるように、SetFileAttributesW API関数を呼び出して読み取り専用属性を取り消そうとします。次に、ファイルが「Users」フォルダに存在するかどうかを確認し、作成日時、最終更新日時、最終アクセス日時のタイムスタンプを次の日時に設定します。

1/1/3000 12:01:01

各ファイルにタイムスタンプを設定した後、一度に1バイトのランダム データをファイルに書き込む2つのループを実行することによって、ファイルを確実に削除しようとします。この2つのループは、ファイルのデータを2回効果的に上書きするため、データの復元が非常に困難になります。次に、上書きしたファイルを同じフォルダの一時ファイル名に書き換え、これを削除します。

システムのファイルとフォルダを削除すると、標準出力からコンソールに詳細ログを書き込みます。各ログ エントリのフォーマットは\rDeleting {0}\t\t\t\tです。「{0}」は削除したファイル名またはフォルダ名に置き換えられます。その際に、パスは60文字に短縮され、途中に「\…\」が追加されます。例えば、ワイパーの実行中に次のログ エントリがコンソールに書き込まれるのを観測しました。

Deleting C:\Program Files\Com\…\ware\Drivers\vss\VCBSnapshotProvider.dll

このワイパーは、システム上のすべてのファイルとフォルダの削除を完了すると、標準出力を通じてコンソールに書き込む1つの最終ログ エントリを作成します。このログ エントリには、ワイパーのアクティビティに関する統計情報が含まれています。そのフォーマットは次のとおりで、「{0}」は削除したファイル数に置き換えられ、「{1}」は削除したフォルダ数に置き換えられ、「{2}」はワイプ アクティビティ中に経過した時間に置き換えられます。

\rDone.Deleted {0} files and {1} folders in {2}.\t\t\t\t

結論

一般的に、最近のShamoon攻撃は、以前のShamoon攻撃で使用された悪名高いDisttrackツールの再来であるとされています。しかし、脅威攻撃者は、標的にしたネットワーク上のシステムのデータを破壊するために、2番目のワイパー型トロイの木馬も使用したとみられます。また、脅威攻撃者は、同様の方法により、ホスト名のリストを使用して侵害されたネットワークの一元的な場所からワイパー型トロイの木馬を配信し、ネットワーク上の他のシステムにワイパー型トロイの木馬をコピーしたと思われます。

Shamoon 3攻撃に関係するワイパーは、SuperDeleteのソースコードを基にしています。このワイパーは、内容を上書きし、ファイルとフォルダを上書きできるだけで、実行のためにローダー型トロイの木馬とスプレッダー型トロイの木馬が利用されます。興味深い点は、ワイパー型トロイの木馬内の宗教色の濃いメッセージが、攻撃者の動機を示しているメッセージとしての役割を果たしている可能性があることです。弊社は、このワイパーの使用とDisttrackワイパーを使用したShamoon 3インシデント間に関係があると想定しています。Disttrackワイパーは過去、政治色の濃いイメージを使用して、Shamoon攻撃とShamoon 2の攻撃でファイルを上書きしました。このことは、Shamoon攻撃に関係している攻撃者が、そのツールセットにワイパーを追加し、Disttrackトロイの木馬を補完していることも示唆しています。

パロアルトネットワークスのお客様はSuperDeleteワイパーの亜種から保護されています。

  • WildFireは、SuperDeleteのソースコードを使用した既知のすべてのワイパーを、悪意があると判断して検出します。
  • AutoFocusをご利用のお客様は、SuperDeleteのソースコードを使用して、ShamoonSecureDeleteタグでワイパーを調べることができます。

IoC

ローダー型トロイの木馬のハッシュ

  • d9e52663715902e9ec51a7dd2fea5241c9714976e9541c02df66d1a42a3a7d2a

スプレッダー型トロイの木馬のハッシュ

  • 35ceb84403efa728950d2cc8acb571c61d3a90decaf8b1f2979eaf13811c146b

既知のSuperDeleteベースのワイパーのハッシュ

  • 5203628a89e0a7d9f27757b347118250f5aa6d0685d156e375b6945c8c05eb8a
  • 0266be9130bdf20976fc5490f9191edaafdae09ebe45e74cd97792412454bf0d
  • e5bf756d5530ec38ff649b901b3c7506f8556821d979bdcb392237f2ff40daf8
  • 5257f623270b4c5cc471ff35b1bfeec80ab37c7e012da76b50ebd2c4911a43d0

関連するDisttrackのハッシュ

  • c3ab58b3154e5f5101ba74fccfd27a9ab445e41262cdf47e8cc3be7416a5904f
  • 0694bdf9f08e4f4a09d13b7b5a68c0148ceb3fcc79442f4db2aa19dd23681afe
  • 391e7b90bf3f0bfeb2c2602cc65aa6be4dd1c01374b89c4a48425f2d22fe231c