2022年1月26日

ウクライナに対するサイバー攻撃 について知っておくべきこと

概要

1月13日夜、外務省を含むウクライナ政府の複数のウェブサイトが、ハッキングされる事件が発生しました。これらのサイトのメインページには、挑発的なメッセージがウクライナ語、ロシア語、ポーランド語の3カ国語で掲載されました。

これと並行して、ウクライナ政府の一部のインフラがワイパー型マルウェアに攻撃されました。ウクライナ国立サイバーセキュリティセンターは、この攻撃を "Operation Bleeding Bear "と命名しました。ウクライナがディスクワイパー攻撃に遭うのは今回が初めてではなく、2015年には BlackEnergy、2016年には Industroyer、2017年には NotPetya の被害に遭っています。

1月15日、マイクロソフトはワイパー攻撃に関する第一回目の調査結果を共有し、攻撃に使用されたStage1およびStage2のマルウェアのインジケータを提供しました。

マイクロソフトは、攻撃者が Impacket 経由でStage1のマルウェアを起動したことに言及し、攻撃者が事前にネットワークにアクセスし、環境内部を横移動するために様々なハッキングツールを導入したことを明らかにしました。

Impacket は、ネットワークプロトコルを操作するためのオープンソース Python クラスの集りです。一部のクラスでは、コマンドを実行するコンピュータに有効なユーザー名とパスワードが提供されている場合、リモートでコードを実行することができます。

以下は、この攻撃がどのように展開されたかの詳細です。

Stage1 (a196c6b8ffcb97ffb276d04f354696e2391311db3841ae16c8c9f56f36a38e92)

Stage1 は、MBR ワイパーマルウェアです。MBR とは、Master Boot Record の略で、ハードディスクの第1セクターのことです。最近のコンピュータは、MBR の代わりに GPT を使用していることが多いので、注意が必要です。

実行ファイルは、MingW GCC を使用してコンパイルされています。

figure1-ukraine-wiper-stage1-compiler-information.png
図1:Stage1 のコンパイラ情報

このマルウェアは、「PhysicalDrive0」へのハンドルを作成し、MBR の内容を上書きするだけで、元のOSを起動できなくする「wiping」を実現しています。

「PhysicalDrive0 」は、コンピュータに接続された最初の物理ドライブの第1セクタにマッピングされます。前述の通り、ここに MBR が存在します。

figure2-ukraine-wiper-code-snippet-responsible-to-mbr-overwrite.png
図2:MBR の上書きに関与するコードスニペット

マルウェアは、変数「data_404020」の内容で MBR を上書きします。

figure3-highlighted-code-showing-what-will-be-written-to-the-mbr.png
図3:MBR に書き込まれる内容を示す強調表示されたコード

「data 404020 」には、上書きされた MBR でコンピュータが起動したときに表示される身代金メモが含まれています。

figure4-the-actual-data-that-will-be-written-to-the-mbr.png
図4:実際に MBR に書き込まれるデータ

Stage2 (dcbbae5a1c61dbbbb7dcd6dc5dd1eb1169f5329958d38b58c3fd9384081c9b78)

これは、難読化された .NET 実行ファイルです。InfoSec 専門家の複数のツイートで見つかった情報によると、これはさまざまな電子犯罪キャンペーンで使用される汎用ダウンローダーです。

この特定のサンプルは、ユーザーがファイルを送信できる人気のチャットアプリであるDiscord から、拡張子が .jpg のファイルをダウンロードします。Discord は、悪意のあるファイルを配布するために悪用されることで知られています。

figure5-download-url-from-discord.png
図5:Discord からのダウンロード URL

ダウンロードしたファイル(923eb77b3c9e11d6c56052318c119c1a22d11ab71675e6b95d05eeb73d1accd6)は、実は、.jpg の画像ファイルではありません。このファイルを hex エディタで開いてみると、ファイル全体がミラーリングされていることがわかります。

figure6-end-of-the-downloaded-file-in-hex-editor.png
図6:ダウンロードしたファイルの終了を hex エディタで表示

これは、実行ファイルの MZ ヘッダであり、このヘッダは先頭にあるべきものです。

マルウェアは、ダウンロードしたファイルの内容を「反転」させる役割を果たす「InsertItem」機能を備えています。

figure7-insert-item-function-code.png
図7:InsertItem 関数のコード

内容を反転させた後、実際の Stage3 のペイロードを得る。

最後に、Stage2 が Stage3 を反射的にロードする。

figure8-calling-method-from-stage-3.png
図8:ステージ3からのメソッド「Ylfwdwgmpilzyaph」の呼び出し


Stage3 (9ef7dbd3da51332a78eff19146d21c82957821e464e8133e9594a07d716d892d)

これはまた別の難読化された. NET ファイルであります。今回は DLL です。このファイルは 「Eazfuscator 」を使って難読化されています。

前述のように、Stage2 はこの DLL から「Ylfwdwgmpilzyaph 」という名前のメソッドを呼び出しています。

figure9-Ylfwdwgmpilzyaph-code.png
図9:「Ylfwdwgmpilzyaph」のコード


このファイルには3つのリソースが含まれています。

figure10-Ylfwdwgmpilzyaph-eventually-reads-resource-7c8cb5598e724d34384cce7402b11f0e.png
図10:リソース "7c8cb5598e724d34384cce7402b11f0e "をロードするコード

「EazFixer」を使って、デコードされた DLL ファイル(35feefe6bd2b982cb1a5d4c1d094e8665c51752d0a6f7e3cae546d770c280f3a)を受け取ることが出来ました。

デコードされた DLL には、2つのリソースが含まれています

figure11-resources-in-decoded-dll.png
図11:復号化した DLL に含まれるリソース

AdvancedRunは、システム管理者が使用する正規アプリケーション「AdvancedRun.exe」を含む gzip 形式のアーカイブです。

figure12-official-advancedrun-usage-examples.png
図12:AdvancedRun の公式使用例

この場合、Windows Defender を停止し、削除して悪用されます。

Waqybgリソースは、最終段階であるファイル破壊マルウェアを含む「逆引き」 gzip アーカイブ(discord からダウンロードした .jpg と同じ方法)です。

Stage4 (34ca75a8c190f20b8a7596afeb255f2228cb2467bd210b2637965b61ac7ea907)

このファイルも Stage1 のペイロードと同じ MingW GCC でコンパイルされています。

figure13-stage4-compiler-information.png
図13:Stage4 のコンパイラ情報

マルウェアは、すべてのハードディスクにある特定の拡張子を探し、その特定の拡張子で部分的に上書きされたファイルを探しています。

.HTML .HTM .PHTML .PHP .JSP .ASP .PHPS .PHP5 .ASPX .PHP4 .PHP3 .DOC .DOCX .XLS .XLSX .PPT .PPTX .PST .MSG .EML .TXT .CSV .RTF .WKS .WK1 .PDF .DWG .JPEG .JPG .

DOCM .DOT .DOTM .XLSM .XLSB .XLW .XLT .XLM .XLC .XLTX .XLTM .PPTM .POT .PPS .PPSM .PPSX .HWP .SXI .STI .SLDX .SLDM .BMP .PNG .GIF .RAW .TIF .TIFF .PSD .SVG .CLASS .JAR .SCH .VBS .BAT .CMD .ASM .PAS .CPP .SXM .STD .SXD .ODP .WB2 .SLK .DIF .STC .SXC .ODS .3DM .MAX .3DS .STW .SXW .ODT .PEM .P12 .CSR .CRT .KEY .PFX .DER .OGG .JAVA .INC .INI .PPK .LOG .VDI .VMDK .VHD .MDF .MYI .MYD .FRM .SAV .ODB .DBF .MDB .ACCDB .SQL .SQLITEDB .SQLITE3 .LDF .ARC .BAK .TAR .TGZ .RAR .ZIP .BACKUP .ISO .CONFIG

figure14-delete-command-and-partial-extension-list.png
図14:Delete コマンドと部分的な拡張子リスト

次に、破損したファイルの拡張子をランダムなものに変更します。終了後、マルウェアはcmd.exe を呼び出して自分自身を削除し、ping コマンドを発行して5秒間スリープさせます。

最後に、現在のユーザーをログオフさせ、ステータスコード14(ネットワーク接続)を表示してコンピューターをシャットダウンさせます。

figure15-exit-route.png
図15:Exitルーチン


まとめ

ステージ1のマルウェアは C 言語で書かれており、MBR を破壊し、コンピュータのオペレーティングシステムをロードできないようにするために使用されます。

Stage2 のマルウェアは、Stage3 のマルウェアをロードするために使用され、これらは両方とも. NET で記述されています。同様のローダーが観察されていますが、これらは一般的なものであり、この脅威者に固有のものではないと考えられています。

Stage3 マルウェアは、Stage1 マルウェアと同様に C 言語で記述された Stage4 をロードします。

Stage 4のマルウェアは、ハードディスク上の重要なファイルを破損させるために使用されます。

Stage 1 または Stage 4 が正しく実行されない場合、部分的な復旧は可能かもしれませんが、この2つの組み合わせが成功すると、復旧する手段はなくなりすべての重要なデータがほぼ確実に破損することになります。

付け加えておくと、マルウェアはファイルを暗号化するのではなく、単に破壊するだけなので、身代金請求書はフェイクなのです。

ディープインスティンクトvs今回の攻撃

Deep Instinct製品に対して、今回Stage1のマルウェアの起動で用いられたような、ランダムな Impacket の wmiexec バイナリをテストしましたが、ブロックされることを確認しています。

figure16-wmiexec-being-blocked.png
図16:ブロックされる wmiexec

また、今回の攻撃に使われた4つステージのマルウェアサンプルもテストしましたが、すべてブロックされました。

figure17-stage-1-is-being-blocked.png
図17:Stage 1 マルウェアをブロック
figure18-stage-2-is-being-blocked.png
図18:Stage 2 マルウェアをブロック
figure19-stage-3-is-being-blocked.png
図19:Stage 3 マルウェアをブロック
figure20-stage-4-is-being-blocked.png
図20:Stage 4マルウェアをブロック

Deep Instinct のお客様は、これまで多くのブログやレポートでもご紹介しているように、様々なワイパーマルウェアから保護されています。このプラットフォームが実際に動作している様子をご覧になりたい方は、こちらからデモをリクエストしてください。
https://www.deepinstinct.com/ja/request-a-demo