分析中にサポートしてくれたMarc Eliasに特に感謝します。また、インシデント対応チームを支援するために、初期の調査結果を公に共有したすべての研究者を称賛したいと思います。この詳細な説明が、マルウェアの内部動作の理解に役立つことを願っています。
2022年2月23日、HermeticWiperマルウェアがウクライナで最初に観察されました。このマルウェアは、問題のないパーティションマネージャドライバを使用して、感染したマシン上の(リムーバブル)ディスクのブートセクタを破壊することを目的としています。このブログは、3つの主要なセクションに分かれています。HermeticWiperサンプルの内部動作の詳細なテクニカル分析、最近のWhisperGateワイパーとの比較、および帰属についての簡単な説明です。
目次
テクニカル分析
完全なテクニカル分析は、以下のフローチャートに要約されています。マルウェアの内部動作をさらに明確にするために、コードのセグメントを伴って、各側面が詳細に説明されます。
分析されたサンプルのハッシュは、以下の表のとおりです。
SHA-1 | 61b25d11392172e587d8da3045812a66c3385451 |
SHA-256 | 1bc44eef75779e3ca1eefb8ff5a64807dbc942b1e4a2672d77b9f6928d292591 |
MD-5 | 3f4a16b29f2f0532b7ce3e7656799125 |
無害なソフトウェアと証明書
複数の段階がありますが、マルウェアは単一の署名された実行可能ファイルとして始まります。ロイターによれば、マルウェアの署名に使用された証明書は、キプロスに本拠を置く企業であるHermetica Digital Ltdからのものであり、同社の所有者は関与を否定しているため、この試練のもう1つの犠牲者のようです。マルウェアでの証明書の使用は新しいものではなく、ファイルの悪意を隠すためだけに使用されます。
起動チェックと特権
ワイパー内の最初のチェックは、コマンドライン引数の数の検証です。その後、指定された秒数の間スリープが呼び出されます。コマンドライン引数として有効な整数が指定されている場合は、その値が使用されます。それ以外の場合は、ハードコードされた値ofが使用されます。
分析環境での実行を回避するために、マルウェアはその名前が「c」で始まるかどうかを確認します。サンプル共有サイトからマルウェアをダウンロードする場合、ファイル名は、MD-5、SHA-1、SHA-256などの一般的なアルゴリズムを使用したファイルのハッシュと同じであることがよくあります。以下のスクリーンショットに示すように、CharLowerWを呼び出すと、小文字の「c」を使用して比較が行われるため、文字の大文字と小文字の区別は関係ありません。
EAXに格納されているこの文字の数値は、スタック上のオフセットを計算するために使用され、欠落しているワイド文字を配置して「SeShutdownPrivilege」ワイド文字列を完成させます。画像内の2つのmov-instructionsは、欠落しているワイド文字を計算されたオフセットに配置します。下の画像は、元の幅の広い弦を示しています。
幅の広い文字列の途中に「wnPr」がないことに注意してください。以下に示すように、4つのワイド文字が挿入されると、文字列が完成します。
次は、上記の特権と「SeBackupPrivilege」の両方のチェックです。次に、AdjustTokenPrivilegesを使用して2つの特権が要求されます。リクエストが成功したかどうかに関係なく、マルウェアの実行は続行されます。特権による違いは後で明らかになります。
無害なドライバーをロード
次に、マルウェアは関数を呼び出して、前述の無害なドライバーをドロップアンドロードします。このドライバーは、元々EaseUSがパーティションマネージャー用に作成し、ソフトウェアの作成者であるCHENGDU YIWO Tech Development Co.Ltd.が署名したものです。ドライバーは無害であり、マルウェアによって悪用されていることに注意してください。
ドライバーはワイパーのリソースに埋め込まれ(MSLZ形式を使用して圧縮され)、被害者のオペレーティングシステムとCPUビット数に応じて4つのバージョンが含まれます。ドライバーのバージョンは、32ビットと64ビットの両方のWindows XP用であり、それ以降のWindowsバージョンの場合も32ビットと64ビットの両方です。以下の画像は、対応するコードを示しています。
ワイパーは最初にWindowsのバージョンをチェックします。これは、後でリソースから対応する圧縮ドライバーをロードするために使用されます。その後、マルウェアは、システムがクラッシュしたときにメモリダンプの作成を無効にします。これを行うには、次のスクリーンショットに示すように、「HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ CrashControl \ CrashDumpEnabled」のレジストリキーを0に設定します。
次に、それぞれの圧縮ドライバーがリソースから読み込まれ、「C:\ WINDOWS \ system32 \ drivers \ [XX] dr」に書き込まれます。この「[XX]」は、下の画像に示すように、ラテンアルファベットからランダムに生成された2つの小文字で、「a」から「z」の範囲です。
次に、圧縮されたファイルがディスクから読み取られ、解凍され、「.sys」が追加された同じファイル名を使用してディスクに書き込まれます。
次に、ワイパーは「SeLoadDriverPrivilege」特権の取得を試みます。この権限が付与されていない場合、マルウェアは自動的に終了します。次に、指定された符号なし整数を使用して「\\。\ EPMNTDRV \」からアクセスできる無害なドライバーへのハンドルの取得を開こうとします。これが可能な場合は、ドライバーのロード手順を繰り返す必要はありません。以下のスニペットは、関連するコードを示しています。
ドライバにアクセスできない場合、つまり上記が失敗した場合は、ドライバがロードされます。サービス状態が無効になっている場合、ワイパーはサービスが実行されているかどうかを最大4回チェックし、その間に1秒間スリープして、サービスを開始できるようにします。以下の画像は、対応するコードを示しています。
サービスが正常に作成されると、圧縮されたドライバーが、サービスの対応するレジストリキーとその値とともにディスクから削除されます。以下のスクリーンショットは、レジストリ内のサービスの値を示しています。分析では、ドライバーの名前と同じサービスの名前が「zddr」であることに注意してください。
Windows内部の無効化
その後、ボリュームシャドウコピーサービス(「vss」と略記)が停止します。このサービスは、時間の経過とともに増分バックアップを作成し、ワイパーが無効にするのと同じ理由でランサムウェアによって無効になることがよくあります。つまり、Windowsの内部バックアップシステムを停止します。関連するコードは、以下の抜粋にあります。
次に、ワイパーは「C:\ System Volume Information」にあるファイルを再帰的に上書きします。その後、スレッドを介してシステムを強制的かつ瞬時にシャットダウンしようとします。スレッドは最初に指定された秒数の間スリープします。シャットダウン関数を呼び出すには、「SeShutdownPrivilege」が必要であることに注意してください。この特権は、テクニカル分析の冒頭で説明したように、大文字と小文字に関係なく、マルウェアのファイル名の最初の文字が「c」である場合にのみ取得されます。以下のスクリーンショットは、対応するコードを示しています。
次に、レジストリにさらに変更が加えられ、ユーザーごとに「ShowCompColor」と「ShowInfoTip」(どちらも「HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Advanced」にあります)がゼロに設定されます。これらのレジストリキーは、圧縮されたNTFSファイルをカラーで表示するかどうか、およびフォルダとデスクトップアイテムのツールチップをそれぞれ表示するかどうかを定義します。以下のスクリーンショットは、対応するコードを示しています。
データを消去する
次にマルウェアは、実行しているマシンがドメインコントローラーであるかどうかを確認します。ドメインコントローラーにのみ存在し、ポリシーが含まれているフォルダー「C:\ Windows \ SYSVOL」は、その存在と、フォルダーであるかどうかがチェックされます。以下の抜粋はチェックを示しています。
これが当てはまる場合は、3分間の待機が開始され、下の画像に示すように、接続されているリムーバブルメディアまたは固定メディアのブートセクターをスレッドで上書きできます。
ブートセクタを上書きするために使用されるデータはランダムデータであり、エラーが発生しない限り、Windows CryptographyAPI呼び出しを介して生成されます。エラーが発生した場合、データはゼロで上書きされます。下の画像には、ランダムデータ生成関数の抜粋が含まれています。
3分間の待機が終了すると、マルウェアは自動的にシャットダウンします。そのため、テクニカル分析セクション内の詳細は、ドメインコントローラーではないマシンのみを対象としています。
次に、ワイパーは最初の100個の接続されたドライブを反復処理し、接続された各リムーバブルメディアまたは固定メディアのブートセクターを上書きします。
次に、マルウェアは「C:\ Documents andSettings」および「C:\ Windows \ System32 \ winevt \ Logs」内の特定のファイルを再帰的に上書きします。ここでの目標は、データをワイプし、使用可能なフォレンジックアーティファクトの量を最小限に抑えることです。
さらに別のワイパーか
これらの2つのキャンペーンには、共有されている破壊的な性質以上のものがあります。言うまでもなく、ワイパーはさまざまな形で使用されており、ここにとどまります。悪名高い例としては、WannaCry、NotPetya、Shamoon、WhisperGateなどがあります。上記のサンプルの一部はランサムウェアに分類されていますが、使用方法によってワイパーになっていることに注意してください。
WhisperGateキャンペーンは、HermeticWiperと同様に、影響を受けたデバイスのブートレコードを対象としましたが、徹底的ではありませんでした。HermeticWiperは、最初の100台の物理ドライブを調べ、前述のように、事前定義された基準に適合する場合はブートレコードを台無しにします。
さらに、データをワイプするための正規のドライバーの使用法は、WhisperGateキャンペーンとは大きく異なります。ドライバーがセキュリティ製品のレーダーの下で飛行する試みとして使用される場合でも、単にワイパーの作成者の好みとして使用される場合でも、それは攻撃者の目標を達成するための効果的な方法です。
2つの主な違いは、コードの品質です。WhisperGateのブートレコードの置き換えは品質が高いと言えるものではありませんでしたが、HermeticWiperのコードベースはボリュームフォーマットとその処理についての深い理解を示しています。コードの品質には目立った違いがありますが、両方のキャンペーンが実行されたすべてのシステムに壊滅的な影響を及ぼしたことは明らかです。
被害者学と帰属
報告された被害者の大部分(公の情報および我々のテレメトリ情報からすると)は、2022年2月23日まで遡ると、ウクライナにあります。一部の被害者は他の国でも観察されていますが、数が限られているため、ウクライナの企業の海外事務所である可能性があります。
私たちのテレメトリによると、WhisperGateとこのキャンペーンの両方で犠牲になったウクライナの犠牲者の重複があります。犠牲者のセクターは、侵略者の軍事戦略目標、つまり戦時中の敵のコミュニケーションの混乱と一致しているようです。
サンプルのコードが新しく作成されたという事実を考えると、他のマルウェアファミリで見つかった他のサンプルとの重複はありません。ロシアがウクライナに侵入する直前のマルウェアキャンペーンのタイミングは偶然ではないと主張することができます。マルウェアキャンペーンの破壊的な性質に基づいて、キャンペーンのタイミングも考慮に入れながら、私たちはこのキャンペーンを中位の確信度を持って親ロシアの攻撃者に帰するものと見ています。
結論
ワイパーキャンペーンは過去に使用されており、効果的であることが証明されています。悪意のある目的での一見無害なソフトウェアの使用は、しばしばデュアルユースと呼ばれ、一般的で広く採用されています。デュアルユースソフトウェアは、バイナリ、または自己完結型の無害なファイルの形で見つけることができます。HermeticWiperは、組み込みドライバーを使用して後者を実行します。これは、ブートセクターの変更アクションが、プログラムの予想される動作に沿って、無害なドライバーによって実行されるためです。
パンデミックが明確に示しているように、私たちの周りの世界のデジタル化がますます進んでいることを考えると、このような軍事侵攻が行われている中、デジタルドメインが積極的に使用されているのは当然のことです。犠牲者は、タイミングとともに、デジタルドメインが私たちの生活に直接影響を与えることを示しています。
※本ページの内容は2022年3月2日(US時間)更新の以下のTrellix Storiesの内容です。
原文:Digging into HermeticWiper
著者:Max-Kersten