脅威のスポットライト:情報窃取型マルウェアのTrickBot

By The Cylance Threat Research Team

本ブログ記事は、2019年9月10日に米国で公開された抄訳版です。原文はこちらからご覧頂けます。

情報を盗むマルウェアボットであるTrickBotは、2016年から感染が報告されています。Dyreを前身とするこのボットは、通常は不正なスパムと広告技法を用いて配布されます。ユーザーが悪意のある電子メールをクリックするか、不正なWebサイトにリダイレクトされると、このマルウェアはドロップされます。

こうした悪意のある電子メールの多くは、よく知られたオンラインのホスティングサービスや支払いサービスを詐称した偽の銀行取引通知の形態をとり、ユーザーを騙してクリックさせます。

多くの場合、クリックして開いたドキュメントは、疑いを持たないユーザーに対し、ドキュメントを編集可能にするよう要求を行います。編集可能になると、そのマクロは小さな.batスクリプトを使用し、このスクリプトがPowerShell.exeを利用してマルウェアをダウンロードします。水平移動するワームモジュールにより、このマルウェアはローカルネットワーク上のデバイスに感染を広げることもできます。

ダウンロードされたマルウェアは、コマンドアンドコントロール(C2)インフラストラクチャへの接続を試み、C2サーバーとの接続に成功すると、多数のファイルを取得し始めます。これらのDLLファイルは、マルウェアが窃取できる機密情報や個人情報の量を増やすための独自の機能をそれぞれ持っています。このマルウェアには、感染した被害者のデバイスとネットワークについて情報を得る、偵察用のDLLファイルもいくつか含まれています。ネットワーク経由で攻撃をさらに拡大するため、このマルウェアは2つの異なるワームモジュールを備えています。これらのモジュールは、横方向に拡散してローカルネットワーク全体の被害をさらに増大させます。

このマルウェアはモジュール方式をとっているので、システムでの削除や検知が困難になっています。コンポーネントの1つを強制的に削除しても、永続化手法により、そのコンポーネントの別のインスタンスがC2インフラストラクチャからすぐに取得されることになります。新しいモジュールだけでなく、DLLの最新バージョンもダウンロードされます。これが過去3年間における実状です。初めて感染が報告されてから現在に至るまで、このマルウェアは多くの新しい亜種とその機能を高める多くの新しいDLLモジュールをドロップしています。

このマルウェアの主な機能は、ユーザーがアクセスする銀行取引のWebサイトで中間者(MITM)攻撃を使用し、そのサイトの外観をWebインジェクトで偽ることです。その結果、被害者は偽りの銀行取引サイトに機密情報を入力し、その銀行口座を危険にさらすことになります。

2017年以降、このマルウェアはイギリスやフランスなどヨーロッパ諸国の銀行を標的にするようになりました。TrickBotは、時間とともに発展してさらに効果を高めています。

図1:ボットネットのさまざまな機能

マルウェアボットネット

ボットネットのサイズと機能は多岐にわたっています。マルウェア作成者は、分散型サービス拒否(DDoS)攻撃でWebサイトを停止させるためにボットネットを使用できます。侵害されたデバイスを使用してスパムを拡散し、ボットネットの規模を拡大する作成者もいます。多くのボットネットがマルウェアドロッパーとして使用されています。システムが侵害されると、ボットは将来的に、望ましくないファイルや他のマルウェアもドロップできます。ボットネットでよく見られるもう1つの機能が、フィッシングキャンペーンの展開です。

TrickBotの主な目的は情報を盗むことであり、金融機関のログイン情報などの個人情報や機密情報を取得することです。こうした情報を入手することで、マルウェア作成者は多くの不正な行動を起こすことができます。TrickBotの複数のモジュールはそれぞれ個別の役割を担っており、資格情報と個人情報をできるだけ多く取得するよう設計されています。

ファイル情報            

SHA256

806bc3a91b86dbc5c367ecc259136f77482266d9fedca009e4e78f7465058d16

 

タイプ

マルウェアボット

サイズ

506 KB (519149 バイト)

タイムスタンプ

2018-09-25 10:47:59

ITW 名

TrickBot, Trickster, TrickLoader


技術的分析

静的分析

メインのマルウェアファイルが複雑であるため、脅威アクターは独自のカスタムパッカーを作成しています。その目的は、静的分析の観点からファイルの分析を困難にすることです。このマルウェアがドロップする各種のDLLは、多くの主要コンポーネントが明確に確認可能であり、多くの場合、静的分析による分析が容易です。

このマルウェアの古いバージョンでは、コンポーネントのほとんどがAESで暗号化されています。ただし、最近のバージョンでは、AESで暗号化されたデータに加えてXORエンコードの使用も確認されています。

動的実行プロセスフロー

  • マクロが埋め込まれ、銀行やサービスを送信元とする、武器化されたWord/Excelドキュメントを通じて感染する
  • マルウェアをダウンロードする.batファイルがマクロによってドロップされる
  • マルウェアが%APPDATA%\Roamingフォルダーにダウンロードされて実行される
  • プロセスハロウイング(Process Hollowing)を使用してマルウェア自体をsvchost.exeに挿入する
  • さまざまなアンチウイルス(AV)ソフトウェアをシステムから削除する
  • 永続性を確保するため、スケジュールされたタスクをシステム上で作成する
  • インターネット接続をテストする
  • トランスポート層セキュリティ(TLS)を使用して通信を暗号化する
  • 成功すると、C2サーバーに接続する
  • さまざまなモジュールと更新が取得される
  • モジュールはシステムの情報を収集し、オンラインバンキングを主な対象として資格情報を閲覧する
  • マルウェアはネットワーク全体に広がり、さまざまなワームモジュールを使用して、さらに多くのボットと被害者を得ようとする

メインファイルが実行されると、マルウェアは目標達成を試みる前に悪意のあるアクティビティをいくつか実行します。デバッガや、Microsoft独自の組み込みのマルウェア防御ソフトウェアなど、さまざまなAVソリューションが最初にチェックされます。

図2:最初のボットファイルがWindows Defenderを無効化して削除

AVサービスが実行されている場合は、検知を回避するため、その停止と無効化を試み、最終的に削除しようとします。次に、このマルウェアは、自身を%APPDATA%\Roaming\{フォルダー名}にコピーします。この操作が完了すると、プロセスハロウイングの手法を用いてマルウェア自体をsvchost.exeインスタンスに挿入し、偵察のために基本システム情報を取得します。最後に、このマルウェアは多数のC2インフラストラクチャへの接続を試みます。接続に成功すると、マルウェアの初期モジュールであるsysteminfo.dllとinjectdll.dllがドロップされます。

TrickBotのリリース以降、その一連のツールは増加しており、現在では多岐にわたるモジュールがさらなる偵察の試行、有益な情報の窃取、ユーザーのネットワーク全体への感染の拡大を図っています。ある種のモジュールは、専用の個別フォルダーに格納されている構成をダウンロードします。

永続性

このマルウェアは、%APPDATE%\Roaming\{フォルダー名}にあるボットのメインファイルを永続化手法として10分間隔で実行する、スケジュールされたタスクの作成を試みます。その目的は、ダウンロードしたすべてのモジュールをシステムで確実に実行することにあります。

モジュール

このマルウェアがデータを盗み出そうとするシステムのアーキテクチャは、どのモジュールがドロップされるかによって決まります。システムが32ビットの場合、ダウンロードされるモジュールは、そのシステムの正確なアーキテクチャに従って命名、設計されます。

: WormDll32.dll
                   WormDll64.dll
                   A5fda73fd93c5eea9184f51dde4227f3a223b996741f43662b3132bf6a7eec3c – 32bit Modules Zip
                   728445bcffa48f874d0e0b2932e5c08cab5cdf9e4453193ac3dcf1ba955d77d7 – 64bit Modules Zip

図3:各種のモジュールをすべてダウンロードした後のTrickBot

現在、このマルウェアは9種類のモジュールをドロップできます。それぞれのモジュールは固有の機能を持ち、さまざまなタスクを実行して情報窃取という全体的な目標を達成するよう設計されています。TrickBotがこうしたモジュール方式を採用しているのは、検知を回避し、脅威アクターによるマルウェアの更新とアップグレードを大幅に容易にするためです。

実行しているTrickBotのコンポーネントごとに、対応するsvchost.exeのインスタンスを実行する必要があります。これは、ユーザーに真の意図が悟られないようプロセスハロウイングを使用するためです。3年以上にわたって感染が報告されているにもかかわらず、このマルウェアの作成者たちはその発展と進化に絶えず取り組み、さらに多くの被害をもたらそうと努めています。そのため、以下に列挙した悪意のあるモジュールは今後も増え続けていくことになります。

SystemInfo

これは、TrickBotがドロップした最初のモジュールの1つであり、その発見は2016年にまで遡ります。この.DLLファイルの主な目的は、ボットネットの一部となった感染ホストの偵察です。この.DLLはシステムに関する情報を収集し、新しい被害者のマシンについて把握できるよう攻撃者に返送します。

できるだけ多くの情報をシステムから引き出すため、さまざまな手法が使われています。取得される情報には、オペレーティングシステム(OS)のバージョンと情報、CPU、エラーログなどがあります。

図4:SystemInfoが取得するシステムのスタートアップ情報

図5:SystemInfoが取得するシステムOSに関するその他の情報

 InjectDLL

これは、TrickBotのメインファイルです。このモジュールは悪意のある各種スクリプトを格納し、マルウェアによるWebインジェクト使用の役割を担います。このモジュールには、世界中の500を超える銀行取引サイトがスクリプトとして格納されています。感染したボットが、マルウェアが攻撃対象とするそれら銀行取引サイトの1つにユーザーをアクセスさせると、Webインジェクトが利用されます。

このDLLは、銀行のWebページに追加フィールドを挿入し、本物のように見せかけます。これにより、被害者はこのDLLによって資格情報を盗まれることになります。これは、挿入された追加フィールドに被害者が機密情報を入力することで行われます。

ハードコードされたさまざまな文字列の静的分析により、DLLファイルは多くの国々のドメイン名と、データ窃取の標的となるChrome、Firefoxなどの各種ブラウザーを参照します。

図6:Chrome情報のコピーを試みるInjectDLL

このモジュールには、"injectDll32configs"というラベルが付いた、Webインジェクトの個別フォルダーが含まれています。このフォルダーには、暗号化された2つのファイルsinj(静的インジェクト)とdinj(動的インジェクト)が格納されています。復号されたこれらのファイルには、世界中のさまざまな銀行取引Webサイトへの参照が何百件も格納されています。

形式:

<sinj> <mm>https://www.bankExample.com*</mm>
<sm>https://www.bankExample/login/logon.do*</sm> <nh>cbsapjarxqombyuewvgkhsdlznit[dot]net</nh> <url404></url404> <srv>31.131.27[dot]144:443</srv> </sinj>

MailSearcher

このDLLは、DLLの処理関数でシステムをさらに偵察し、感染したホストファイルシステムをくまなく調べるために使用されます。これは、検索対象とするハードコードされたファイル拡張子をいくつか持っています。このDLLによるシステムの調査が完了すると、C2アーキテクチャに報告が返されます。

図7:被害者のデバイスで多数のファイル拡張子を探すMailSearcher

WormDLL と ShareDLL

この2つのモジュールは2017年の半ばにドロップされ、マルウェアの伝播に使用されました。これらのDLLは、自己複製してMicrosoft Windowsのサーバーメッセージブロック(SMB)の脆弱性(MS17-010)や、ライトウェイトディレクトリアクセスプロトコル(LDAP)のクエリを利用して、ネットワーク全体に拡散する機能をマルウェアに付与します。

このワームモジュールは、感染ホストのローカルネットワークを介してマルウェアをさらに拡散し、マルウェアが取得できるボットネットの数を増やすために使用されます。2017年に世界中が攻撃にさらされた、WannaCryランサムウェア ほど深刻な被害は出ていませんが、その拡散の試みには同じエクスプロイトとコードが使用されています。

図8:ワームモジュールで使用されたさまざまな文字列

図9:モジュールによるサーバーメッセージブロックへの多数の参照

図10:ワームをダウンロードするPowerShellコマンド

ImportDLL

このモジュールの主な目的は、Cookie、HTML5ローカルストレージ、ブラウザー履歴、URLアクセスに関する有益な情報を盗み出すことです。2017年初頭に初めて感染が報告されたImportDLLは、できるだけ多くのWebサイトから可能な限り多くのデータを盗み出そうとします。さらに、被害者のデスクトップの仮想インスタンスを非表示で作成し、機能を拡張することもできます。このDLLにハードコードされているURLのリストには、世界中のショッピングWebサイトのURLが多く見られ、また博物館などのさまざまなアトラクションのWebサイトのURLも含まれていました。

図11:ハードコードされている、何百ものWebサイトのさまざまなURL

TabDLL

2018年から感染が報告されているこのモジュールは、Mimikatzを使用してWDigestの資格情報を盗み出そうとします。このモジュールは、\SYSTEM\CurrentControlSet\Control\SecurityProviders\Wdigest\を有効にすることで、Microsoftによるこれらの資格情報の保護を回避します。

WDigest認証プロトコルが有効な場合、プレーンテキストのパスワードがローカルセキュリティ機関サブシステムサービス(LSASS)に保存されるため、マルウェアに窃取されるおそれがあります。Windows 10ではデフォルトでWDigestが無効になっていますが、マルウェアはこれを有効化します。

このモジュールはロック画面コンポーネントを備えており、マルウェアがデバイスからユーザーをログアウトするときにこのコンポーネントが使用されます。ユーザーがそれぞれのアカウントに再ログインすると、WDigestサポートが有効になっているため、マルウェアはその資格情報を窃取できます。

このモジュールのもう1つの要素として、ワームモジュールとは別個に、NSAエクスプロイトのEternalRomanceを使用した拡散があります。これにより、マルウェアは水平移動の第2の手段を持つことになり、これはマルウェアをさらに拡散させることを目的としています。

NetworkDLL

これは、このマルウェアで2018年にドロップされた偵察用のDLLです。さらに多くのシステム情報を収集し、そのシステムが存在するネットワークに関する情報の取得を試みます。このDLLは、マルウェアが存在するシステムでクエリを実行し、以下の情報を引き出せるかどうか確かめます。

  • CSName
  • サービスパックのバージョン
  • OSアーキテクチャ
  • ブートデバイス
  • 組織

ここに挙げたのはほんの数例です。このDLLは、Windowsの基本的なネイティブシェルコマンドを使用します。たとえば、すべてのアダプタのTCP構成を"ipconfig /all"で取得し、デバイスが接続されている可能性があるネットワーク共有を"net view all"で見つけ出します。

PWGrab32

このDLLは、2018年後半にこのマルウェアがドロップした、もう1つのパスワード窃取コンポーネントです。このDLLはシステムで使われているさまざまなブラウザーを探知し、そこに保存されているログイン情報を盗み出そうとします。

Webサイトホスト|ログインID|ログインパスワード

このコンポーネントは、OutlookやFileZillaのクライアント資格情報を盗むこともできます。このDLLがユーザーの情報を収集すると、マルウェアはC2サーバーからコマンドを受信してこの情報を引き出します。

BlackBerry Cylance が TrickBot を阻止

BlackBerry® Cylance® が使用する人工知能(AI)に基づくエージェントは、何百万もの安全なファイルと安全でないファイルによる脅威検知のトレーニングを積んでいます。そのため、CylancePROTECT®は特定のファイルシグネチャではなく、無数のファイル属性に基づいて脅威を発見し、TrickBotをブロックできます。

ゼロデイ脅威に対する予測優位性をもたらすCylancePROTECTは、TrickBotのようなレガシーマルウェアに対するトレーニングを重ねて効果を上げています。

侵入の痕跡(IOC)

マルウェアの相互関係

2018年から2019年にかけて、TrickBotの作成者たちは、ドロッパーを使用してマルウェアを拡散しようとかなり多忙な日々を送っていました。EmotetがTrickBotとIcedID(別のインフォスティーラー)をドロップしていることが確認されており、この2つのインフォスティーラーはどちらも、互いをドロップし合っていることが確認されています。この記事のパート2では、こうした挙動についてさらに明らかにする予定です。

C2インフラストラクチャ

このマルウェアがセキュアなインターネットアクセスを確立すると、Config.confファイルがドロップされます。このファイルはAESで暗号化されていますが、このマルウェアのC2インフラストラクチャの詳細とマルウェア作成者によるオペレーションの規模に関する情報が含まれています。2017年後半に、あるファイルデコーダーがGitHubを通じてオンラインで無償提供されました。

https://github.com/hasherezade/malware_analysis/blob/master/trickbot/trick_config_decoder.py

このデコーダーはPythonベースでスクリプト化されており、TrickBotと関連付けられているconfigファイルを取り込んで、それを求めるすべての者に向けてデコードします。このマルウェアのC2インフラストラクチャは、このデコーダーを使用することで明らかになります。

87.101.70.109:499

31.134.60.181:499

85.28.129.209:449

82.214.141.134:499

31.172.177.90:499

185.55.64.47:49

212.14.51.56:443

212.14.51.43:443

78.140.221.157:443

94.103.82.26:443

194.87.236.113:443

85.143.213.25:443

185.242.179.122:443

31.131.26.122:443

91.235.129.166:443

185.82.218.188:443

94.103.82.169:443

Tags: