マルウェア解析奮闘記: コマンド実行のエラー文が日本語でないと動作しないマルウェア

要約

  • Windows OSが日本語設定である場合のみ次のステージに進むマルウェアを観測しました。
  • このマルウェアの日本語設定の確認方法として、コマンドのエラー文を用いるという過去見られなかった手口が利用されていました。

マルウェア概要

弊社では領収証に偽装したマクロが付いたWordドキュメントファイルを用いた攻撃を観測しました。この攻撃で利用されたマルウェアの動作に過去見られなかった手口が存在しました。本記事ではその手口について解説いたします。

このWordドキュメントファイルは「領収証.doc」という名前でメールを用いてユーザーに配送されました。この「領収証.doc」を開くと、マクロを有効にすることを促す文面が表示されます。

Doc1

図 「領収証.doc」を開いたところ


マクロを有効にすると以下のようなエラーダイアログが表示されます。

Doc2

図 「領収証.doc」のマクロを有効にした際のエラーダイアログ

この裏でマクロは、リダイレクトを用いて%APPDATA%\test2.vbsに対して1行ずつコードを書き込んでいき、最後にこのvbsファイルを実行することでJPドメインの外部URLからマルウェア (data.exe)をダウンロードして実行しました。

Vbs

図 test2.vbsの中身

このdata.exe実行からの動作は以下の流れのとおりです。

  1. 第1ステージのマルウェアであるdata.exeの実行
  2. data.exeがRAR展開ツール (Rar.exe)とパスワード付きRARファイル(pack.rar)をc:\programdata\配下に作成
  3. data.exeがcmd /c \ > c:\programdata\test.txt 2>&1 を実行。このtest.txtが後に説明する動作の違いを発生させました
  4. Rar.exeを用いてpack.rarを展開。この際、c:\programdata\配下に第2ステージのマルウェア(pack.exe)作成
  5. data.exeが不要になったRar.exe, pack.rar, test.txtの削除
  6. data.exeがイベントビューアーを用いた権限昇格を実施
  7. 昇格された権限でpack.exeを実行
  8. pack.exeが3ステージのAmmyy Admin等の実行ファイルを作成
  9. Ammyy Adminのサービス登録とファイアウォール設定変更後に、Ammyy Admin等の実行

Ja_processtree
図 data.exeの動作の流れ (プロセスツリー)

最終的にリモートアクセスツールのAmmyy Adminが実行されることで攻撃者からリモートアクセスが実行される状態になります。

Ammyy Adminはロシアのソフトウェア会社が公開している正規のリモートアクセスツールですが、近年の標的型攻撃ではこのツールをRATとして利用して情報窃取や破壊活動に利用されることが報告されています。

また弊社では昨年、今回と同じくメールに添付された「領収証.doc」というファイル名のマクロが付いたWordドキュメントファイルが最終的にAmmyy Adminを利用した標的型攻撃の調査を実施しています。今回、その時と同名のファイル名及びAmmyy Adminを用いられており、攻撃者はこの手口を引き続き利用しているものと考えられます。

不自然な点とその解析

更に調査を進めたところ、OSの言語設定が日本語であるか否かによって動作の流れが異なることがわかりました。

En_processtree

図 動作の流れが異なるdata.exeのプロセスツリー

日本語以外の場合、上記4.のrarファイルのパスワードが異なため、上記6.以降の動作が発動しませんでした。

  • OSの言語設定が日本語の場合
    • c:\programdata\Rar.exe x -p22dcce989306ec47da684017ff08a186 c:\programdata\pack.rar c:\programdata\
  • OSの言語設定が英語の場合
    • c:\programdata\Rar.exe x -pcfac7eab59907a0ad4333a2e09abba47 c:\programdata\pack.rar c:\programdata\

このパスワードは自身が保有している複数の解析システムにおいても16進数32桁の文字列である点は一致していました。この文字列の長さはMD5のハッシュ値と一致します。

では、このハッシュ値を出力するために利用した入力は何なのでしょうか?

更に調査を実施してみると、流れ3.で作成した「test.txt」のハッシュ値であることが判明しました。

OSの言語設定が日本語の場合の「test.txt」のMD5ハッシュ値

$ md5 test_ja.txt

MD5 (test_ja.txt) = 22dcce989306ec47da684017ff08a186

OSの言語設定が英語の場合の「test.txt」のMD5ハッシュ値

$ md5 test_en.txt

MD5 (test_en.txt) = cfac7eab59907a0ad4333a2e09abba47

日本語の場合の「test.txt」は、次のように日本語のエラー文が書き込まれています。

図 日本語設定での「test.txt」の内容

対して、英語の場合のtest.txtは、次のように英語のエラー文が書き込まれていました。

図 英語設定での「test.txt」の内容

流れ3.の"cmd /c \"はエラーが発生するコマンドですが、そのエラー文が日本語設定の出力でないと対象のハッシュ値になりません。つまり、日本語設定以外のOSでは、rarファイルが展開できず次のステージの攻撃が発動しないようになっていました。

このMD5ハッシュ値の計算をデバッガで調査したところ、data.exeが同時に作成していたmd5dll.dllのGetMD5File関数を用いてtest.txtのハッシュ値を実行していました。

Md5_1_4

図 GetMD5File関数を実行する前 test.txtのパスが渡されている

Md52
図 GetMD5File関数を実行した後 test.txtのMD5ハッシュ値が計算されている

日本語設定のOSでのみ攻撃が発動する点から、攻撃者が日本の組織のみを狙っていることは間違いないかと言えます。

結論

OSのキーボード設定や言語設定をWindows APIを用いて取得して、その結果によって動作を変えるマルウェアは知られていますが、エラー文の言語が異なることを利用して動作を変えるマルウェアは弊社では初めて観測した手口です。また、確実に日本の組織を狙っている手口である点も非常に興味深い点です。

そのため今後、今回観測された手口及び応用した手口が発生する可能性があるため、内容を皆様に共有いたします。

IoCs

ファイルハッシュ値

  • 領収証.doc
    • SHA256: 4824de7b4d5562f2bd32bf85cc54cf3eca201fbe418f6b9e256a72234bd540ee
  • data.exe
    • SHA256: 2fc55cdeb7e223938e588ee86605f14f87f1ae1c7b238dc16c93b3374c2182ba
  • pack.exe
    • SHA256: f10f7f929066e18b0793d46e950bc0ef636058bf5ed61726b43eb341c531f830
  • svrpvs.exe (Ammyy Admin)
    • SHA256: 1831806fc27d496f0f9dcfd8402724189deaeb5f8bcf0118f3d6484d0bdee9ed
  • mobupd.exe
    • SHA256: 468d8dad41a88a6792db93bf4b1354effaa6f97fff049f05e41fa246aacf5aa9

通信先

  • data.exe ダウンロードURL
    • http[:]//caritadigesu[.]jp/news/news.php
  • マルウェアC2アドレス
    • http[:]//mo-sa-ic[.]com/news/data/id.php
    • http[:]//www[.]astorerobot.co[.]jp/cart/data/comment/news.php

前へ

防衛関連のファイルを装うマクロマルウェアの新しい手口

次へ

オープンソースツールを悪用する初期活動