「ファイルレス活動」を備えた仮想通貨発掘マルウェア「COINMINER」を確認、「EternalBlue」を利用して感染

トレンドマイクロは、2017 年 7 月、ファイルを利用せずに感染する新しい仮想通貨発掘マルウェア(「TROJ64_COINMINER.QO(コインマイナー)」として検出)を確認しました。物理的なファイル感染しない手法は、今回確認されたコインマイナーのように、検出およびフォレンジック解析をより困難にするため、新しく確認されるマルウェアのますます多くがこの手法を利用しています。

問題の「TROJ64_COINMINER.QO」は、2017 年 7 月、アジア太平洋地域で初めて確認され、トレンドマイクロのクラウド型セキュリティ技術基盤「Trend Micro Smart Protection Network(SPN)」の検出数から世界全体での検出数のおよそ 8 割が同地域で確認されていることが判明しています。同地域において、日本が 43 %となり、続いて、インドネシア、台湾となっています。世界全体で上位 5 カ国を見ても、アジア太平洋地域外からは米国が 4 位に入るのみです。


図 1:アジア太平洋地域における「TROJ64_COINMINER.QO」の国別検出数(期間:2017 年 7~8 月)

「TROJ64_COINMINER.QO」は、ファイルを利用せずに持続的な不正活動を実行するために、Windows を管理する正規ツール「Windows Management Instrumentation(WMI)」を利用します。具体的には、正規アプリケーション “scrcons.exe” によってスクリプトを実行します。この ”scrcons.exe” は、イベント発生に合わせて指定した操作を実行する WMI のクラス「Standard Consumer」を利用します。PC への侵入には、脆弱性攻撃ツール「EternalBlue」を利用し、「Server Message Block(サーバメッセージブロック、SMB)」の脆弱性「MS17-010」を突きます。この脅威は、EternalBlue と、ファイルを利用しない WMI スクリプトを組み合わせることにより、検出がより困難になり、継続的な不正活動を実行することが可能です。

■感染フロー

この仮想通貨発掘マルウェア「TROJ64_COINMINER.QO」は、いくつかの段階を経て PC に感染します。感染フローは、MS17-010を突いてバックドア(「BKDR_FORSHARE.A」として検出)を作成および実行するところから始まります。次に、このバックドアがさまざまな WMI スクリプトをインストールします。その後、これらのスクリプトがコマンド&コントロール(C&C)サーバからコマンドを受信し、この仮想通貨発掘マルウェアとそのコンポーネントをダウンロードします。


図 2:感染フロー

■WMI を利用し、感染PC上で継続的な不正活動を実行

WMI は、Windows 管理業務の主要なコンポーネントで、自動化スクリプトの配置、日時を指定したプロセス/プログラムの実行、インストール済みアプリケーションおよびハードウェアに関する情報取得、フォルダの変更監視、ディスク領域の監視などに利用されます。しかし、トレンドマイクロがリサーチペーパー「Understanding WMI Malware」で説明したように、サイバー犯罪者はこの正規ツールを悪用します。今回の事例は、同ペーパーで取り上げた検体(「TROJ_WMIGHOST.A」として検出)とよく似ています。

この攻撃では、特定の条件下で WMI スクリプトを自動実行するため、名前空間「root/subscription」に属する以下のクラスを利用します。

  • 「ActiveScriptEventConsumer」
  • 「__EventFilter」
  • 「__IntervalTimerInstruction」
  • 「__AbsoluteTimerInstruction」
  • 「__FilterToConsumerBinding」

不正な WMI スクリプトは、ActiveScriptEventConsumer クラスのインスタンスに含まれています。このスクリプトは、ある条件が満たされると実行されるように設定されており、継続的な不正プログラム活動が実行可能となります。今回の事例では、このスクリプトは不正な JScript です。


図 3:JScript を含む ActiveScriptEventConsumer クラスのインスタンス

ActiveScriptEventConsumer クラスから取り出した JScript が図 4 のコードです。


図 4:ActiveScriptEventConsumer クラスの不正な JScript

この JScript を解析することにより、攻撃者が、サーバとコンポーネントを柔軟に更新するために複数の C&C サーバを段階的に利用していることが確認できました。ダウンロードする不正ファイルの変更は、検出を逃れるための手口だと考えられます。

第 1 段階の C&C サーバ「hxxp://wmi[.]mykings[.]top:8888/test[.]html」の応答には、第 2 段階、第 3 段階の C&C サーバのアドレスが含まれており、最終的に仮想通貨発掘マルウェア「TROJ64_COINMINER.QO」とそのコンポーネントをダウンロードする URL にたどり着きます。図 2 で解説したように、「TROJ_COINMINER.AUSWQ」が仮想通貨発掘マルウェア「TROJ64_COINMINER.QO」をダウンロードします。利用されている URL の監視により、この不正活動がまだ続いていることが確認されています。また、第 1 段階の C&C サーバの応答は、図 5 および図 6 の比較から分かるように、当初「hxxp://67[.]21[.]90[.]226:8888/32.zip」でホストされていたファイルの URL が変更されています。


図 5:第 1 段階の C&C サーバの応答(更新前)

ダウンロードされるファイルは同一ですが、この第 1 段階の C&C サーバの応答に含まれる URL は何度か更新されています。


図 6:第 1 段階の C&C サーバの応答(更新後)

このように、C&C サーバの更新が続いていることから、この攻撃が現在も進行中であることが分かります。

__EventFilter クラスはイベントを開始する条件を保持しています。このクラスを解析したところ、WMIクエリ言語(WQL)で書かれたクエリ「Select * from __timerevent where timerid =“fuckyoumm2_itimer”」を確認しました。これは「fuckyoumm2_itimer」というTimerID を検索するクエリです。


図 7:__EventFilter クラスに含まれる WQL クエリ

__IntervalTimerInstructionクラスには、「TimerID」と「IntervalBetweenEvents」というプロパティがあります。TimerID の値は、__EventFilter の WQL クエリで指定されている TimerID「fuckyoumm2_itimer」です。また、IntervalBetweenEvents の値は、不正な WMI スクリプトの実行間隔をミリ秒で指定したものです。今回の事例では、図 8 のように 10800000 ミリ秒が指定されており、これは 3 時間に相当します。つまり、不正な WMI スクリプトは 3 時間毎に実行されるということです。


図 8:__IntervalTimerInstruction クラスの TimerID に実行間隔を指定

__AbsoluteTimerInstruction クラスにも、別の情報が保持されています。このクラスは、特定の日時にイベントを生成します。


図 9:__AbsoluteTimerInstruction クラスのプロパティ

関連するすべてのクラスのインスタンスを連携させるため、図 10 のように__FilterToConsumerBinding クラスに値を登録する必要があります。

ActiveScriptEventConsumer.Name=fuckyoumm2_consumer
__EventFilter.Name=”fuckyoumm2_filter”


図 10:__FilterToConsumerBinding クラスへの登録内容

__FilterToConsumerBinding クラスは、__EventFilter クラスのインスタンスと __ActiveScriptEventConsumer クラスのインスタンスを関連付けることにより、条件に応じた操作を設定します。これにより、__EventFilter クラスで指定された Windows イベントの発生を起点として __ActiveScriptEventConsumer クラスのスクリプトが実行されます。

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

今回の事例について、IT 管理者がセキュリティ向上のために取り得る対策が 2 つあります。

1 つ目は、必要に応じて WMI を制限あるいは無効化することです。これには PC の管理者権限が必要です。WMI の利用を必要とするユーザのために管理者アカウントのグループを作成し、このグループにのみアクセス権を与えることで WMI を利用した攻撃のリスクを減らすことが可能です。

すべての PC が WMI サービスを必要とするわけではありません。不要な場合は、WMI を無効化しリスクを排除してください。Microsoft は WMI を無効化するための簡易ガイドと WMI の活動を追跡するツールを提供しています。今回の事例で侵入口として利用された Windows OS のファイル共有プロトコル「Server Message Block(SMBv1)」も、不要な場合は無効化し、ユーザへのリスクを減らすことが可能です。

2つ目は、更新プログラムの適用です。今回の攻撃の侵入方法は、脆弱性攻撃手法 EternalBlue を利用したものでした。EternalBlue が突く脆弱性を修正する更新プログラムは 2017 年 3 月に公開されていますが、依然として多くの PC にこの脆弱性が残っています。オペレーティングシステム(OS)やソフトウェア、その他のアプリケーションに最新の更新プログラムを適用することにより、PC およびネットワークへの侵入口に存在するセキュリティ上の欠陥を埋めることが可能です。

■結論

メモリから直接不正活動を実行する手法や正規のツールやサービスの利用により、ファイルを利用しない攻撃手法が多く確認されるようになっています。今回の事例では、暗号通貨発掘マルウェアによる継続的な攻撃のために WMI が利用されました。このような攻撃は、起点となるマルウェアファイルがハードドライブに存在しないため、検出が困難です。

昨今の脅威状況を踏まえると、ハードドライブ上で不正ファイルを検索するだけでは不十分です。特定の条件で実行される攻撃の場合、メモリ上の痕跡を確認することが困難です。通常は、不正活動が始まる前のメモリ情報しか取得することができません。しかし、Windows には、「shimcache」や「muicache」のようなメモリをキャッシュする機能や、メモリに読み込む情報を先読みする「prefetch」のような機能があります。Windows のイベントログを設定してこれらの機能を監視することにより、有用な情報を収集することも可能です。

■トレンドマイクロの対策

メール攻撃対策製品「Deep Discovery™ Email Inspector」および Web ゲートウェイ対策製品「InterScan Web Security」は、脅威を検出し、侵入を防ぎます。「ウイルスバスター コーポレートエディション」のようなエンドポイント製品は、挙動監視機能(不正変更監視機能)の強化やアプリケーションコントロール、および脆弱性シールド機能により、脅威による影響を最小にすることができます。

Trend Micro Endpoint Sensor™」は WMI に関連するイベントを監視し、マルウェアの不正活動の起点となったプロセスやイベントを迅速に解析します。

ネットワーク監視ソリューション「Deep Discovery™ Inspector」は、ネットワーク内に侵入した不正プログラムの通信を検知し、感染端末の存在を早期に警告します。サーバセキュリティ対策ソリューション「Trend Micro Deep Security™」は、「IPS(侵入防御)」により MS17-010 を突いた攻撃をブロックしいます。

中小企業向けクラウド型エンドポイントセキュリティサービス「ウイルスバスター ビジネスセキュリティサービス」は、「FRS」技術によりウイルス検出を行います。また同時に、このようなエンドポイント製品では挙動監視機能(不正変更監視機能)の強化により、侵入時点で検出未対応の脅威であってもその不正活動を検知してブロックします。

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

以下は、今回の攻撃に関連するハッシュ値です。

  • 6315657FD523118F51E294E35158F6BD89D032B26FE7749A4DE985EDC81E5F86
    (「TROJ_CONMINER.CFG」として検出)
  • 674F2DF2CDADAB5BE61271550605163A731A2DF8F4C79732481CAD532F00525D
    (「TROJ_COINMINER.AUSWQ」として検出)
  • 8c5bb89596cd732af59693b8da021a872fee9b3696927b61d4387b427834c461
    (「TROJ_CONMINER.CFG」として検出)
  • A095F60FF79470C99752B73F8286B78926BC46EB2168B3ECD4783505A204A3B0
    (「BKDR_FORSHARE.A」として検出)
  • E6fc79a24d40aea81afdc7886a05f008385661a518422b22873d34496c3fb36b
    (「BKDR_FORSHARE.B」として検出)
  • F37A0D5F11078EF296A7C032B787F8FA485D73B0115CBD24D62CDF2C1A810625
    (「TROJ64_COINMINER.QO」として検出)

以下は、今回の攻撃に関連するURLです。

  • ftp[.]oo000oo[.]me
  • wmi[.]mykings[.]top:8888

※調査協力:Vico Fang

参考記事:

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