ESET/マルウェア情報局
ESET、ボットネット「Trickbot」を途絶えさせるための世界規模の取り組みに参加
本記事はキヤノンマーケティングジャパンが提供する「マルウェア情報局」に掲載された「ボットネット「Trickbot」を途絶えさせるための世界規模の取り組みにESET社も参加」を再編集したものです。
ESETは、パートナーであるMicrosoft社、Lumen社のBlack Lotus Labs、NTT社などと協力し、Trickbotボットネットを阻止する取り組みを行っています。ESETは、テクニカル分析、統計情報、既知のC&Cサーバーのドメイン名とIP情報を提供し、このプロジェクトに貢献しています。
Trickbotは2016年後半から世界各国の100万台以上のコンピューティングデバイスに影響を与えています。ESETは、Trickbotが登場した当初からこのボットネットの活動を追跡しています。2020年だけでも、ESETの自動プラットフォームは12万5000以上の悪意のある検体を分析しています。さまざまなTrickbotモジュールが使用している4万以上の構成ファイルをダウンロードして復号化し、このボットネットが使用する異なるC&Cサーバーについて有用な分析結果を提供しています。
長く活動を続けるボットネット「Trickbot」
Trickbotは、長きにわたってインターネットユーザーにとって危険な活動を続けています。ESETが、Trickbotを最初に検出したのは2016年後半でした。それから数年間、Trickbotによるセキュリティ侵害は継続して報告されています。Trickbotは、世界で最大かつ最も長期間活動を続けているボットネットの1つです。ESETの2020年第1四半期「サイバーセキュリティ脅威レポート」で報告しているように、Trickbotは最も拡散しているバンキングマルウェア(銀行を標的とするマルウェア)でもあり、図1に示すように、ESETのテレメトリ(監視チームデータ)データから、このマルウェア系統が全世界のインターネットユーザーにとって脅威であることがわかります。
Trickbotマルウェアは、これまでの活動期間中、さまざまな方法で配信されてきました。ESETが最近頻繁に確認しているのは、別の大規模なボットネットであるEmotetにより乗っ取られたシステムに、Trickbotが仕込まれるという負の連鎖です。これまでは、Trickbotマルウェアはそのオペレータによって、主に銀行情報を盗むトロイの木馬として利用されており、オンラインの銀行口座の認証情報を盗み出し、不正な送金を行っていました。
Trickbotはモジュール方式のアーキテクチャを採用しており、各種のプラグインを使用し、さまざまな悪意のある活動を行います。Trickbotは、感染させたコンピュータからあらゆる種類の認証情報を盗むことができます。最近では、ランサムウェアなどの深刻な被害を与える攻撃の配信メカニズムとして主に利用されるようになっています。
Trickbotのプラットフォーム向けに開発された最も古いプラグインの1つはWebインジェクションを可能にします。これは、乗っ取られたシステムのユーザーが特定のWebサイトにアクセスしたとき、表示するコンテンツを動的に変更する技術です。このプラグインを動作させるためには、メインモジュールによってダウンロードされる構成ファイルが必要となります。これらの構成ファイルには、どのWebサイトをどのように変更するかという情報が含まれています。図2は、ターゲットのURLと、ユーザーがこのターゲットURLにアクセスしたときにTrickbotボットが通信する必要のある悪意のあるC&CサーバーのURLが記述されている復号化された構成ファイルの一部を示しています。
ESETは、Trickbotによる攻撃を監視し、数万種の異なる構成ファイルを収集し、TrickbotのオペレータがターゲットにしているWebサイトを特定できました。図3は、2020年に構成ファイルから抽出されたWebサイトの数を示しています。
ターゲットになっているこれらのURLは、ほとんどが金融機関のものです。3月に入ってからは、これらの構成ファイルに含まれるターゲットの数は急減しました。これは、Trickbotのオペレータが、メインモジュールによって自動的にダウンロードされるデフォルトのプラグインリストからWebInjectモジュールを除外したときと一致しています。3月のデータがないのは、このためです。ESETは、ターゲットのURLを継続して可視化するために、調査のプロセスを調整することを余儀なくされました。ターゲットURL数が減少したのは、Trickbotを操るサイバー犯罪者が、この時期にマネタイズのための別手段であるランサムウェアに注目し始めたためと考えられます。
このようなケースでは、Trickbotによってセキュリティが侵害されると、組織のネットワーク環境が偵察され、水平移動が実行され、可能な限り多くのシステムにRyukランサムウェアがドロップされます。ESETが収集したデータから、Trickbotのオペレータは、銀行口座から不正に金銭を盗み出す方法から、Trickbotを使用して組織全体のシステムのセキュリティを侵害し、Ryukランサムウェアによってシステムを暗号化し、復号化のために身代金を要求する戦略に転換したと考えられます。
また、ESETは、Trickbotのオペレータが関わっていると考えられる新たなマルウェア開発プロジェクトも確認していますが、これもTrickbotをバンキングトロイとして運用することに突然止めた理由の1つかもしれません。これらのプロジェクトの1つは、Anchorプロジェクトと呼ばれており、クライムウェアというよりはむしろ偵察活動を主眼としたプラットフォームです。Trickbotのオペレータはまた、ランサムウェアなどのマルウェアを展開したり、感染したシステムから機密データを盗んだりするために使用されるローダーやバックドアであるマルウェアBazarの開発にも関与している可能性があります。
Trickbotの詳解
Trickbotがこれほど多機能であるのは、プラグインを使用して機能を大幅に拡張できるためです。ESETは、Trickbotを追跡し、28種類のプラグインを収集して分析できました。ブラウザ、電子メールクライアント、そして、さまざまなアプリケーションからパスワードを盗み出すプラグインや、ネットワークトラフィックを変更したり、自己増殖したりすることを目的としているプラグインもあります。Trickbotプラグインは標準的なWindows DLLとして実装されており、通常、少なくともStart、Control、Release、およびreeBuffer.の4つの特徴的なエクスポートが含まれています。
興味深いことに、Richヘッダがあるプラグインと、このヘッダがないプラグインが存在しています。Richヘッダは、Microsoft Visual Studio 97 SP3以降でビルドされたすべてのバイナリに追加されるデータ構造で、文書化されていません。これには、実行ファイルがビルドされた開発環境に関する情報が含まれています。Richヘッダがプラグインに常に存在するわけではなく、存在する場合でも別の開発環境を示していることから、これらのプラグインは別々の開発者によって作成されたものであると考えられます。
ESETは、これらのさまざまなプラグインが開発され実環境で使用されるようになってからは、多くの異なる検体を観察していません。最も大きな変化があったのは、静的な構成ファイルがバイナリに埋め込まれているものです。これらの静的な構成ファイルには、C&Cサーバーの情報が含まれているため、今後、その内容は変化することが予想されます。図4は、ESETのボットネット追跡プラットフォームで収集した各モジュールの亜種の数を示しています。新しいモジュールの亜種のほぼすべてが対になっていますが、これは収集したモジュールの約半数は32ビット版で、残りの半数は64ビット版になっているためです。本書の最後の付録では、これらのモジュールについて簡単に説明しています。
共通の構成ファイル
Trickbotのインストール環境にはダウンロードされたさまざまな構成設定ファイルが存在している場合がありますが、メインモジュールには暗号化されハードコーディングされた構成ファイルが含まれています。この構成ファイルには、C&Cサーバーのリストと、ダウンロードするべきプラグインのデフォルトリストが含まれます。
前述したように、いくつかのプラグインは構成ファイルがなければ、適切に動作できません。これらのプラグインは、C&Cサーバーから構成ファイルをダウンロードするためにメインモジュールを利用しています。プラグインは、プラグインのバイナリのオーバーレイセクションに保存されている小さなモジュール構成構造を渡して、メインモジュールがダウンロードする必要がある構成ファイルを通知します。
ESETは、これらの構成ファイルを収集することで、Trickbotのネットワークインフラストラクチャをマッピングすることができました。メインモジュールは、ハードコードされているC&Cサーバーのリストを使用し、それらのサーバーのうちの1つに接続し、C&Cサーバーの第2リストであるpsrvリストをダウンロードします。メインモジュールは、この第2リストにあるC&Cサーバーに接続して、ハードコードされた構成ファイルで指定されたデフォルトのプラグインをダウンロードします。他のモジュールは、Trickbotのオペレータからコマンドを受信して、後でダウンロードされる場合があります。たとえば、injectDllプラグインなどのいくつかのプラグインには、独自のC&Cサーバーが設定されており、構成ファイルも含まれています。また、プラグイン専用のC&Cサーバーもあります。このようなサーバーで最も利用されているのは、dpostサーバーです。これは、認証など盗み出したデータを外部に送信するために使用されます。付録で詳しく説明しますが、このようなサーバーは他にも存在します。これらのように異なるレイヤーが組み合わされることで、攻撃の破壊力が増しています。図5は、この初期の通信プロセスを説明しています。
ESETは、2017年の初めから、これらの異なるC&Cサーバーを追跡しています。ESETがもたらしたこのナレッジは、サイバー攻撃者が使用しているネットワークインフラのマッピングを明らかにすることができ、Trickbotの解体に非常に大きく貢献しました。
ボットネットを調査することで収集できたもう1つの興味深いアーチファクトは、Trickbotの各検体で確認された特殊な識別子であるgtagです。これは、初期のハードコード化された構成ファイルに存在する文字列で、Trickbotの攻撃キャンペーンやセキュリティ侵害のモードによって異なります。たとえば、morキャンペーンは、EmotetがTrickbotを使用してセキュリティを侵害していることを示していると考えられ、gtagsは、キャンペーンの標的を示している場合があります。たとえば、gtag「uk03-1」は、イギリスの金融機関を主に標的としていました。
図6は、2019年9月から2020年9月まで、Trickbotの構成ファイルから抽出したすべてのgtagを時系列に示しています。morグループを見てみると、2020年4月にEmotetキャンペーンが突然停止したことがわかります。また、特定のモジュールによって使用されているグループも存在します。最近のUnit42のブログによると、tot、jim、libグループは継続的に確認されている代表的なgtagであり、それぞれ、mshare、nworm/mworm、tabモジュールに関連しています。これらのすべては、水平方向への移動に使用されていることから、同じようなタイムラインになっていることは驚くべきことではありません。
まとめ
Trickbotのような捉えどころのない脅威を解体するときには、非常に困難で複雑な作業が必要となります。Trickbotはさまざまなフォールバック(切り替え)の仕組みを確立しており、アンダーグラウンドで活動する他のサイバー犯罪者とも連携しているため、全体的な運用の仕組みは非常に複雑です。ESETは今後もTrickbotの脅威を追跡していきます。また、長期的に、このような対策が、拡散するボットネットに与える影響を評価していきたいと考えています。
この調査に尽力されたJakub Tomanek、Jozef Dúc、Zoltán Rusnák、Filip Mazánに感謝します。
ESETの検出名
Win32/TrickBot
Win64/TrickBot
MITRE ATT&CK の手法
注:この表は、MITRE ATT&CKフレームワークのバージョン7を使用して作成されています。
手法 | ID | 名称 | 説明 |
---|---|---|---|
初期アクセス | T1566.001 | フィッシング:スピアフィッシングのための添付ファイル | Trickbotは、悪意のあるマクロが追加されたExcelシートを電子メールに添付し、マルウェアを展開します。 |
実行 | T1059.003 | コマンドおよびスクリプトのインタプリタ:Windowsコマンドシェル | Trickbotはcmd.exe /cを使用して、ユーザーのマシンにマルウェアをダウンロードして展開します。 |
T1059.005 | コマンドおよびスクリプトのインタプリタ:Visual Basic | TrickbotはExcelドキュメント内のマクロを使用して、ユーザーのマシンにマルウェアをダウンロードして展開します。 | |
T1106 | ネイティブAPI | TrickbotはWindows APIのCreateProcessWを使用して実行フローを管理します。 | |
T1204.002 | ユーザーの実行:悪意のあるファイル | Trickbotは、ユーザーに悪意のあるExcel添付ファイルを開かせて、ペイロードを配信します。 | |
T1059.007 | コマンドおよびスクリプトのインタプリタ:JavaScript/Jscript | Trickbotのグループは、Trickbotローダーをダウンロードするために難読化したJavaScriptを使用していました。 | |
T1559.001 | プロセス間通信:コンポーネントオブジェクトモデル | Trickbotは、COMを使用し、定期的に実行するタスクを設定して常駐化します。 | |
常駐化 | T1547.001 | 起動やログオンの自動実行レジストリ実行キー/スタートアップフォルダ | Trickbotは、スタートアップフォルダに自身を設定して常駐化します。 |
T1053.005 | 定期的に実行されるタスク/ジョブ:定期的に実行されるタスク | Trickbotは、システムで定期的に実行するタスクを作成して、常駐化します。 | |
権限昇格 | T1055.012 | プロセス挿入:プロセスハロウィング | Trickbotは、svchost.exeプロセスに自身を挿入します。 |
防御対策の回避 | T1140 | ファイルや情報の難読化解除/デコード | Trickbotは、構成データとモジュールをデコードします。 |
T1562.001 | 防御機能の弱体化:ツールの無効化や改変 | Trickbotは、Windows Defenderを無効にできます。 | |
T1112 | レジストリの変更 | Trickbotは、レジストリエントリを変更できます。 | |
T1027 | ファイルや情報の難読化解除 | Trickbotは、その機能を隠蔽するために解読が困難な名前を使用し、ローダーと構成ファイルにAES-CBC(256ビット)暗号化アルゴリズムを使用しています。 | |
T1027.002 | ソフトウェアのパッキング | Trickbotは、機能を難読化するために独自のパッカーを使用しています。 | |
T1553 | 信頼性コントロールの破壊 | Trickbotは、盗み出した有効な証明書で署名したローダーを使用します。 | |
認証情報へのアクセス | T1555.003 | パスワードストアの認証情報:Webブラウザの認証情報 | Trickbotは、Chrome、Firefox、Internet Explorer、Microsoft EdgeなどのWebブラウザに保存されているパスワードを取得できます。 |
T1056.004 | 入力内容の取得:認証情報APIのフック | Trickbotは、CredEnumerateA APIを取得し、RDPの認証情報を取得できます。 | |
T1552.001 | 保護されていない認証:ファイル内の認証情報 | Trickbotは、Outlook、Filezilla、WinSCPなどのアプリケーションに保存されているパスワードを取得できます。さらに、接尾辞.vnc.lnkを検索してVNCの認証情報を盗み出します。 | |
T1552.002 | 保護されていない認証:レジストリの認証情報 | Trickbotは、Software\SimonTatham\Putty\SessionsレジストリキーからPuTTYの認証情報を取得できます。 | |
T1110 | ブルートフォース | Trickbotは、rdpscanDllモジュールを使用してRDPに ブルートフォース攻撃を実行します。 |
|
検出 | T1087.001 | アカウントの検出:ローカルアカウント | Trickbotは、システムのユーザー情報を収集します。 |
T1087.003 | アカウントの検出:電子メールアカウント | Trickbotは、Outlookの電子メールアドレスを収集します。 | |
T1082 | システム情報の検出 | Trickbotは、ユーザーマシンからOSバージョン、CPUの種類、利用可能なRAMの量を収集します。 | |
T1083 | ファイルとディレクトリの検出 | Trickbotは、以下のすべてのファイル拡張子を検索します。 .avi、.mov、.mkv、.mpeg、.mpeg4、.mp4、.mp3、.wav、 .ogg、.jpeg、.jpg、.png、.bmp、.gif、.tiff、.ico、.xlsx、.zip。 ブラウザの閲覧履歴、Cookie、プラグイン情報も取得できます。 |
|
T1016 | システムネットワーク構成の検出 | Trickbotは、ユーザーのマシンからIPアドレスや他のネットワーク情報を取得します。 | |
T1007 | システムサービスの検出 | Trickbotは、システムのマシンにインストールされているプログラムやサービスのリストを収集します。 | |
T1135 | ネットワーク共有の検出 | TrickbotのモジュールshareDll/mshareDllは、WNetOpenEnumA APIを介してネットワーク共有を検出します。 | |
T1057 | プロセスの検出 | Trickbotは、networkDllモジュールを使用して、プロセスリストを検出します。 | |
水平方向への移動 | T1210 | リモートサービスの攻撃 | Trickbotは、WormwinDll, wormDll, mwormDll, nwormDll, tabDllのモジュールで、EthernalBlueとEthernalRomanceを使用して水平方向に移動します。 |
収集 | T1005 | ローカルシステムのデータ | Trickbotは、ユーザーのローカルマシンからローカルファイルや情報を収集します。 |
T1185 | 中間者攻撃 | Trickbotは、Webインジェクションやブラウザリダイレクトを利用して、偽のWebページや改変したWebページにログイン認証情報を入力するようにユーザーを誘導します。 | |
C&C | T1071.001 | アプリケーションレイヤプロトコル:Webプロトコル | Trickbotは、HTTPSを使用してC&Cサーバーと通信し、マルウェアの更新、マルウェアの重要なロジックを実行するモジュール、および各種の構成ファイルを取得します。 |
T1573.001 | チャネルの暗号化:対称暗号 | Trickbotは、C&Cトラフィックを暗号化するために、MicrosoftのCryptoAPIを利用した独自の暗号化ツールを使用します。 | |
T1105 | ツールの入手と転送 | Trickbotは、いくつかの追加ファイルをダウンロードし、ユーザーのマシンに保存します。 | |
T1571 | 非標準ポート | 一部のTrickbotの検体は、ポート447と8082を使用してHTTPプロトコルでC&Cと通信します。 | |
T1219 | リモートアクセスソフトウェア | Trickbotは、vncDllモジュールを使用して、ユーザーのマシンをリモートから操作します。 | |
データの流出 | T1041 | C2チャネルを介したデータの流出 | TrickbotはHTTP POSTリクエストを使用して、C&Cチャンネルからデータを流出させます。 |
付録
水平方向の移動を実行するモジュール
・shareDll、mshareDll、tshareDll
◦攻撃を受けたマシンに接続しているネットワーク共有に、Trickbotローダーを展開するモジュール。
・wormwinDll, wormDll, mwormDll, nwormDll
◦SMBを介して、感染したマシンのローカルネットワークにマルウェアを拡散するモジュール。EternalBlueエクスプロイトを使用します。
・tabDll
◦EternalRomanceを利用してネットワークにマルウェアを拡散するモジュール。
情報を盗み出すモジュール
・pwgrab
◦パスワードを盗み出すモジュール。
・systeminfo
◦ユーザーのマシンに関する情報を収集するモジュール。
・domainDll
◦LDAPを介してドメインコントローラから認証情報などのデータを盗むモジュール。
・networkDll
◦システム情報やネットワークトポロジを収集するモジュール。
・outlookDll
◦Microsoft Outlookの認証情報を盗むために使用されるモジュール。
・importDll
◦Cookies、ブラウザの履歴、構成などのブラウザ情報を盗むモジュール。
・mailsearcher
◦ユーザーのマシンに保存されている、ハードコードされた拡張子(ドキュメント、画像、ビデオ)リストにあるファイルを検索するモジュール。
・cookiesDll
◦WebブラウザのCookieを盗み出すモジュール。
・squlDll
◦Mimikatzユーティリティを使用して、SQL サーバーから電子メールアドレスを大量に取得し、感染したシステムから認証情報をスクレイピングするモジュール。
・aDll
◦Active Directoryデータベースを盗みます。
・psfin
◦このモジュールは、販売時点情報ソフトウェアに関連する特定の文字列定数をActive Directoryに照会します。
ネットワークの悪用
・injectDll
◦Webinjectモジュール。
・NewBCtestDll、NewBCtestnDll
◦リバースプロキシであり、コマンドを実行できるモジュール。
・vncDll
◦ユーザーのマシンでRATとして使用されるモジュール。
・vpnDll
◦指定されたアドレスにルーティングされるVPNプロキシを作成するモジュール。
・rdpscanDll
◦特定のターゲットリストに対してRDPブルートフォース攻撃を実行するモジュール。
・bcClientDllTestTest
◦Trickbotオペレータのトラフィックをユーザーのマシン経由でプロキシする古いモジュール。
・shadnewDll
◦中間者攻撃モジュール。 IcedID メインモジュールの完全な実装が含まれます。ユーザーのマシンのWebトラフィックを傍受できます。
その他
・mexecDll
◦「ダウンロードと実行」のための汎用モジュール
モジュール名 | サブ構成 | Richヘッダ | |
---|---|---|---|
shareDll、mshareDll、tshareDll | なし | ||
wormwinDll、wormDll、mwormDll、nwormDll | なし | ||
tabDll | dpost | あり | |
pwgrab | dpost | あり | |
systeminfo | あり | ||
domainDll | なし | ||
networkDll | dpost | あり | |
outlookDll | なし | ||
importDll | なし | ||
mailsearcher | mailconf | なし | |
cookiesDll | dpost | あり | |
squlDll | あり | ||
aDll | あり | ||
psfin | dpost | あり | |
injectDll | dinj、sinj、dpost | あり/なし | |
NewBCtestDll、NewBCtestnDll | bcconfig3 | あり | |
vncDll | vncconf | あり | |
vpnDll | vpnsrv | あり | |
rdpscanDll | srv | あり | |
bcClientDllTestTest | あり | ||
shadnewDll | dom | あり | |
mexecDll | あり |
参照リンク:
マイクロソフトのブログ:blogs.microsoft.com/on-the-issues/