さよならMwormようこそNworm — TrickBot、拡散用モジュールを更新

By

Category: Unit 42

Tags: , , ,

This post is also available in: English (英語)

概要

インフォスティーラー型マルウェアTrickBotが最初に見つかったのは2016年のことでした。犯罪者グループは時々、そのバックドア アクセス機能を他のマルウェア配布に利用しています。TrickBotはモジュールでさまざまな機能を実行しますが、主な機能の1つが感染Windowsクライアントから脆弱なドメインコントローラー(DC)に拡散することです。TrickBotは現在、拡散用に3つのモジュールを使用しており、早ければ2020年4月の時点で、「mworm」と呼ばれる拡散用モジュールの1つを「nworm」と呼ばれる新しいモジュールに更新しました。 nworm由来の感染の場合、感染したDCにはなんの痕跡も残らず、再起動またはシャットダウン後に痕跡は消えてしまいます。

新しいnwormモジュールと古いmwormモジュールとの主な違いは次のとおりです。

    • 新しいnwormではTrickBotの実行可能ファイル部分がネットワークトラフィック経由で暗号化ないしエンコードされたバイナリとして取得される。古いmwormモジュールでは暗号化もエンコードもされない状態で実行可能ファイルとして送信される
    • 新しいmwormモジュール経由でTrickBotに感染した場合、システムRAMから実行されて感染ホスト上での永続性が確保されない
    • 古いmwormモジュールと比べ、感染DCの検出回避に非常に優れたやりかたをとっている

TrickBotは最近注目を集めている重要な脅威でもあることから、これは注意を要する進化といえます。そこで本稿ではTrickBotモジュールについて概観し、新しいnwormモジュールの特性について解説したいと思います。

TrickBotモジュール

TrickBotはモジュラー型マルウェアです。このため感染時はさまざまなバイナリがさまざまな機能を実行します。ほとんどのTrickBot感染でベースとなるのはディスク上に保存された悪意のあるWindows実行可能(EXE)ファイルで、このEXEはTrickBotモジュールをロードすることから「TrickBotローダ」と呼ばれています。TrickBotのモジュールは、ダイナミック リンク ライブラリ(DLL)か、システム メモリから実行されるEXEです。TrickBotモジュールを図解したものが図1です。

図1 TrickBotとモジュールの図解
図1 TrickBotとモジュールの図解。最初のTrickBotバイナリはディスクに保存される(通常は実行ファイルないしDLL)。このバイナリがTrickBotモジュールをロードする。DLL、EXE のモジュールはメモリから実行される

Windows 10ホストに感染した場合、TrickBotモジュールはシステム メモリ内にしか存在しません。ただしWindows 7ホストに感染した場合、モジュール関連のアーティファクトがディスクに存在する様子を確認できます。これらのアーティファクトは暗号化済みバイナリで、TrickBotに感染したさい、復号されてTrickBotモジュールとしてシステム メモリから実行されます。図2は、 2020年1月にWindows 7クライアントに感染したTrickBotモジュールのアーティファクト サンプルです。

図2 Windows 7クライアントに感染したTrickBotモジュールのアーティファクトのサンプル
図2 Windows 7クライアントに感染したTrickBotモジュールのアーティファクトのサンプル

図2に示したとおりアーティファクト名は64で終わっていますので、このホストは64ビット版のWindows 7を実行しています。32ビット版Windows 7ホストで感染が発生した場合、これらのアーティファクト名は64ではなく32になります。

図2からは、TrickBotがActive Directory(AD)環境のDCで拡散に利用する3つのモジュール名がわかります。以下がそのモジュールの一覧です。

  • mwormDll64 (「mworm」モジュール)
  • mshareDll64 (「mshare」モジュール)
  • tabDll64 (「tab」モジュール)

注: tabモジュールにも拡散機能がありますが、別の機能も持っていることから本稿では扱いません。

拡散モジュール

2019年9月以降の拡散機能をもつTrickBotモジュールはmworm、mshare、tabの3つです。これらのモジュールは脆弱なDCに拡散するさい、かなりわかりやすいアクティビティを生成します。

mshareとtabモジュールの場合:

  • 感染WindowsクライアントはHTTP URLを使用して新しいTrickBotのEXEを取得します。
  • 感染Windowsクライアントがこの新しいTrickBotのEXEをSMBトラフィック経由で脆弱なDCに送信します。

mwormモジュールの場合:

  • 感染Windowsクライアントは脆弱なDCを標的としたSMBエクスプロイトを使用します。
  • 脆弱なDCは、HTTP URLを使用して新しいTrickBotのEXEを取得して自身を感染させます。

ここで注目すべきは、このTrickBot感染がDCのあるAD環境で発生したのでない限り、mwormモジュールは通常出現しない、という点でしょう。

図3は、これら3つのTrickBotモジュール由来の拡散トラフィックをフローチャート化したものです。

図3 2019年9月から2020年3月にかけてのTrickBotによる拡散フローチャート
図3 2019年9月から2020年3月にかけてのTrickBotによる拡散フローチャート。TrickBotに感染したWindowsクライアントはmshareまたはtabモジュールで「.png」で終わるURLにアクセスし実行ファイルを取得、DCに取得した実行ファイルをSMB経由で送信して感染させるか、mwormモジュールでSMBのエクスプロイトを利用しDCに「.png」で終わるURLにアクセスさせた後、取得した実行ファイルでDC自身を感染させる

2020年2月以降、これらのモジュールがフォローアップ用TrickBotのEXEファイル取得用に生成するURLには次のパターンが見られます。

  • mshareモジュールが生成するURLの末尾は/images/cursor.png
  • mwormモジュールが生成するURLの末尾は/images/redcar.png
  • tabモジュールが生成するURLの末尾は/images/imgpaper.png

これらのURLはドメインではなくIPアドレスを使用します。図4は2020年3月のTrickBot感染pcapからWiresharkでフィルタリングしたトラフィックサンプルです。

図4 TrickBotのmshare、mworm、tabモジュール由来のHTTP GETリクエスト
図4 TrickBotのmshare、mworm、tabモジュール由来のHTTP GETリクエスト

さよならMworm、ようこそNworm

2020年4月、検証環境で感染を再現していたところ、TrickBotによるmwormモジュールの利用が停止されました。その代わりに「nworm」という名の新しいアーティファクトが感染Windows 7クライアントに出現しました。図5は、この新しいnwormアーティファクトのサンプルです。

図5 2020年4月24日の感染で発見された新しいnwormモジュール
図5 2020年4月24日の感染で発見された新しいnwormモジュール。mwormにかわりにnwormが利用されている

nwormによるフォローアップTrickBot EXEのHTTPトラフィックは、mwormのそれとは大きく異なります。たとえば次のような違いがあります。

  • mwormの場合、TrickBot EXE用URLの末尾は/images/redcar.png
  • nwormの場合、TrickBot EXE用URLの末尾は/ico/VidT6cErs
  • mwormの場合、フォローアップTrickBot EXEはHTTPトラフィック内で暗号化しない状態で返される
  • nwormの場合、フォローアップTrickBot EXEはHTTPトラフィック内の暗号化ないしエンコード化されたバイナリとして返される

WiresharkでTCPストリームを追跡すれば、古いmwormモジュールと新しいnwormモジュールのHTTPトラフィックの違いを簡単に見分けられます。図6は2020年3月のmwormモジュールによるトラフィック、図7は2020年4月のnwormモジュールによるトラフィックです。

図 6. 2020年3月のmwormモジュールによるHTTPトラフィックを示すTCPストリーム
図 6. 2020年3月のmwormモジュールによるHTTPトラフィックを示すTCPストリーム。URLは/images/redcar.pngで終わり、TrickBotの実行ファイルが平文で送信されている
図7. 2020年4月のnwormモジュールによるHTTPトラフィックを示すTCPストリーム
図7. 2020年4月のnwormモジュールによるHTTPトラフィックを示すTCPストリーム。URLは/ico/VidT6cErsで終わり、TrickBot関連のバイナリが暗号化ないしエンコードされている

図8は現在の拡散フローチャートです。ここでは、2020年4月以降にnwormモジュールで見つかった変更をハイライトしています。

図8 2020年4月以降のTrickBotの拡散フローチャート
図8 2020年4月以降のTrickBotの拡散フローチャート。mwormがnwormに更新され、DCに取得させるURLの末尾が/VidT6cErsになっているほか、同URLからのファイルはエンコードされたバイナリになっており、被害端末上でデコードされてシステムメモリ内で実行される。

mworm同様、DCのあるAD環境でTrickBot感染が発生しない限り、この新しいnwormモジュールは出現しません。

nworm由来のTrickBotは永続性を確保しない

脆弱なDCに感染したnwormはメモリから実行され、感染DCにはアーティファクトが残りません。またDC上のTrickBotは再起動後に永続性の確保もしません。

mshareとtabが脆弱なDC上でTrickBot感染を引き起こした場合、その感染はDC上での永続性を確保しますが、nwormによるTrickBot感染ではそうはなりません。そもそもDCはサーバーでWindowsクライアントのようなシャットダウンや再起動がめったにないことから、永続性を確保する必要がないためです。

nworm由来のTrickBot感染後のgtag

TrickBotバイナリには、どれでも必ずgtagと呼ばれる識別子が含まれています。gtagはTrickBotバイナリから抽出される構成データや、TrickBotの感染HTTPトラフィック内で見つることができます。これらはあるTrickBotバイナリ用に使われた、特定キャンペーンや特定感染源を識別するのに使われています。

gtagは短いアルファベット文字列の後ろに順に1ずつ増分する数字が続きます。たとえば次のようなものです。

  • morで始まる一連のgtag: Emotet感染由来のTrickBot感染。たとえばTrickBotのgtagがmor84であれば2020年1月27日のEmotet感染によるもの
  • onoで始まる一連のgtag: 英文の電子メールを介して配布される、悪意のあるMicrosoft Office文書由来のTrickBot感染。Word文書、Excelスプレッドシートなど
  • redで始まる一連のgtag: EXEではなくDLLファイルとして配布されたTrickBotによる感染。たとえばTrickBotのgtagがred5 のものが2020年3月17日に文書化されている

TrickBotモジュールで使用されるTrickBotバイナリのgtagは一意です。gtagは次のように分類することができます。

  • totで始まる一連のgtag: mshareモジュールが利用するTrickBotバイナリ
  • jimで始まる一連のgtag: nwormモジュールと古いmwormモジュールが利用するTrickBotバイナリ
  • libで始まる一連のgtag: tabモジュールが利用するTrickBotバイナリ

図9と図10は、2020年4月20日の感染トラフィックで見つかったgtagをWiresharkでフィルタリングした結果です。ここではWindowsクライアントのIPアドレスが10.4.20.101、DCが10.4.20.4です。

図9 最初のTrickBot感染。10.4.20.101の感染クライアントからのHTTPトラフィックはgtagがono38であることを示している
図9 最初のTrickBot感染。10.4.20.101の感染クライアントからのHTTPトラフィックはgtagがono38であることを示している
図10. TrickBotがDCに拡散、nwormモジュール由来の感染によるgtag、jim716が確認できる
図10. TrickBotがDCに拡散、nwormモジュール由来の感染によるgtag、jim716が確認できる

結論

nworm由来の感染はシステムメモリから実行されます。感染DCにはアーティファクトが残らず、それらは再起動またはシャットダウンで消えてしまいます。さらにnwormの使うTrickBotバイナリはインターネット経由で取得されるさい暗号化またはエンコードされています。こうした特性はTrickBotの開発者が検出回避を狙ったものと考えることができます。

TrickBotは現在の脅威状況下でたえず進化しており、今回のものはTrickBotの一連の変更のなかでは最新の変更となります。

ただし、最新のセキュリティ更新を適用したバージョンのMicrosoft Windowsを利用するなどセキュリティ上のベストプラクティスを遵守していれば、TrickBotによる感染は抑制・阻止できるでしょう。パロアルトネットワークス製品をご利用中のお客様は、脅威防御プラットフォームによりTrickBotから保護されています。AutoFocus をお使いのお客様は次のタグを使用してこれらの活動を追跡できます: TrickBot

IoC

脆弱なDCに拡散するためのTrickBotバイナリの最近のHTTP URL

(各行の読みかた: 初認日 YYYY-MM-DD – モジュール名 – URL)

  • 2020-04-20 – nworm – hxxp://107.172.221[.]106/ico/VidT6cErs
  • 2020-04-20 – mshare – hxxp://107.172.221[.]106/images/cursor.png
  • 2020-04-20 – tab – hxxp://107.172.221[.]106/images/imgpaper.png
  • 2020-05-08 – nworm – hxxp://23.95.227[.]159/ico/VidT6cErs
  • 2020-05-08 – mshare – hxxp://23.95.227[.]159/images/cursor.png
  • 2020-05-08 – tab – hxxp://23.95.227[.]159/images/imgpaper.png
2020年4月24日に感染したWindows 7クライアント上のnwormDll64のアーティファクト(暗号化されたバイナリ)のSHA256ハッシュ:
  • 900aa025bf770102428350e584e8110342a70159ef2f92a9bfd651c5d8e5f76b
2020年5月8日に感染したWindows 7クライアント上のnwormDll64のアーティファクト(暗号化されたバイナリ)のSHA256ハッシュ:
  • 85d88129eab948d44bb9999774869449ab671b4d1df3c593731102592ce93a70