*インシデントレスポンス関連のデータについて、Trellix Professional ServicesのAdvanced Cyber Servicesチームのご協力に感謝します。
複数の系統のランサムウェアを使用する(RaaSではなく)プライベートグループとして2022年初頭に出現したRoyal ランサムウェアグループは、2022年9月から彼ら独自のランサムウェア「Royal」を使用しています。Bleeping Computerによる要約記事には、このギャングの歴史が記載されています。2023年3月2日、FBIとCISAは共同勧告を発表し、Royalランサムウェアの影響力を強調しました。このブログでは、RoyalランサムウェアのWindowsとLinuxの実行ファイルの内部構造を深く掘り下げ、その後、匿名化されたRoyalランサムウェアのインシデントレスポンス事例を紹介します。2つの実行ファイルは、Windows版ではネットワークスキャナが存在し、Linux版ではESXi仮想マシンを停止させることができるなど、いくつかの異なるモジュールを除けば、機能的に似た部分がありました。
また、チャンクベースの暗号化方式など、RoyalランサムウェアとContiの機能の一部が重複していることから、Contiと行動を共にした1人または複数の人物が、現在Royalランサムウェアのギャングと行動を共にしているか、詳細を共有している可能性があります。Contiが失脚したことで、メンバーは別のグループに移った可能性があります。あるいは、Royal ランサム一味がContiのランサムウェアのレポートを逆引きしたり、読んだりして、便利で面白いと思った機能を選び出した可能性もあります。
以下のスクリーンショットは、このマルウェアファミリーが世界的な規模で与える影響を示すものです。これらの検出は、過去2ヶ月間のテレメトリ(遠隔観測)から得られたものです。
目次
分析対象サンプル
WindowsとLinuxの両方のサンプルのハッシュは、以下よりご覧ください。より多くのRoyal ランサムウェアのIOCについては、Trellix Insightsを確認可能な場合、関連するイベントをフィルタリングすることが可能です。
※上位10の脅威については、こちらからプレビューを見ることも可能です。Royalランサムウェアは2023年4月3日現在、7番目に表示されています。
Windows |
|
MD-5 |
AFD5D656A42A746E95926EF07933F054 |
SHA-1 |
04028A0A1D44F81709040C31AF026785209D4343 |
SHA-256 |
9DB958BC5B4A21340CEEEB8C36873AA6BD02A460E688DE56CCBBA945384B1926 |
Compiler |
Microsoft Visual C/C++ (2022 v.17.2) |
Linker |
Microsoft Linker (14.32, Visual Studio 2022 17.2) |
Linux |
|
MD-5 |
219761770AD0A94AC9879A6028BD8E55 |
SHA-1 |
554085B1FEF4B90C8679A9D10A2C758F10563A79 |
SHA-256 |
DCE73C3C9C2F0033EA90E6EAF3B43EB037F29C78D2D35A8D0DB9E46E30883626 |
Compiler |
GCC (4.4.7 20120313 (Red Hat 4.4.7-23)) |
以下に、WindowsとLinuxの両サンプルについて、それぞれRSA公開鍵を記載します。
—–BEGIN RSA PUBLIC KEY—– MIICCAKCAgEA0y6/qfb0GqxB2tNEW8qLCtT7U3XCzp1OVjVkaTH9SBV1k3NBElgC esSVOFAUAG5nT3WO+CdN26ScoKsFjzKGYh8c7vyoi7L5dDBRdoTEW5+u2rBSIN3c pkR0Wsq+gT3j0gtvjVybMfp6NRifsMfrcAV9tlrzUw7Da2mx+1Ik9Aa5RaaOxv8N ahH6OSJ8Qz1G3uCgZaXAULlAqNnlN0KtSo4VsXt/sOnDh1pGFf8jqU8sqwJUkcWk RdeYdsDyiDrUFxXkHJsiZb8lFk6b01Rm2yS9+kyZxi1yhB1m0kStUUmbN2aoZMy1 pIKxDa2clhhYw+JEMrbCKWW1Aif2hR55nBgL2kwiaNShXUm3yEsfbnd/lJ5ORMUF tVmaEFEyvVutc86TcNhu0NCHfYihtgbcke7cvy23XnL/qlFL4OzdAnyupz0n69mk 1TSJBR7so3GhvQz53wTps9FXSwWlRpGLTCGRo4OnLnke7Hi5YL+Wb/4c6xWz8biX +jNeg5Zko+CL3I7ywJkyCWuH9Pr7nccWr1s35BSV8Aj9rMwmOsak2BG91Db0yovg FLmKMhkwxpBgFfePXIZF687DxpwYJ5fN44OyUCfNrtfejfSFtjhDCwFy/YpBhZ/w 2Bnw8hTLNALEIsDBhAlQBVYAGYhUgDbpvs/GN3qijyFWdESqlCK1Eg0CAQM= —–END RSA PUBLIC KEY—– |
—–BEGIN RSA PUBLIC KEY—– MIICCAKCAgEAp/24TNvKoZ9rzwMaH9kVGq4x1j+L/tgWH5ncB1TQA6eT5NDtgsQH jv+6N3IY8P4SPSnG5QUBp9uYm3berObDuLURZ4wGW+HEKY+jNht5JD4aE+SS2Gjl +lht2N+S8lRDAjcYXJZaCePN4pHDWQ65cVHnonyo5FfjKkQpDlzbAZ8/wBY+5gE4 Tex2Fdh7pvs7ek8+cnzkSi19xC0plj4zoMZBwFQST9iLK7KbRTKnaF1ZAHnDKaTQ uCkJkcdhpQnaDyuUojb2k+gD3n+k/oN33Il9hfO4s67gyiIBH03qG3CYBJ0XfEWU cvvahe+nZ3D0ffV/7LN6FO588RBlI2ZH+pMsyUWobI3TdjkdoHvMgJItrqrCK7BZ TIKcZ0Rub+RQJsNowXbC+CbgDl38nESpKimPztcd6rzY32Jo7IcvAqPSckRuaghB rkci/d377b6IT+vOWpNciS87dUQ0lUOmtsI2LLSkwyxauG5Y1W/MDUYZEuhHYlZM cKqlSLmu8OTitL6bYOEQSy31PtCg2BOtlSu0NzW4pEXvg2hQyuSEbeWEGkrJrjTK v9K7eu+eT5/arOy/onM56fFZSXfVseuC48R9TWktgCpPMkszLmwY14rp1ds6S7OO /HLRayEWjwa0eR0r/GhEHX80C8IU54ksEuf3uHbpq8jFnN1A+U239q0CAQM= —–END RSA PUBLIC KEY—– |
身代金メモ(ランサムノート)
サンプルに含まれる身代金を要求するメモは以下の通りです。あるフォーマット指定子(”%s”)は、実行時に与えられたvictimIDで置き換えられることに注意してください。さらに、指定されたドメインは変更されています。このメモには、これ以上の変更は加えられていません。
Hello! If you are reading this, it means that your system were hit by ‘Royal ransomware.’ In the meantime, let us explain this case.It may seem complicated, but it is not! Royal offers you a unique deal.For a modest royalty(got it; got it ? ) for our pentesting services we will not only provide you with an amazing risk mitigation service,covering you from reputational, legal, financial, regulatory, and insurance risks, but will also provide you with a security review for your systems. To put it simply, your files will be decrypted, your data restore and kept confidential, and your systems will remain secure. Try Royal today and enter the new era of data security! |
Windows版
Royalランサムウェアはコマンドライン引数を使用し、その前にフラグを付けます。可能なフラグは3つあり、以下の表にその意図する動作の簡単な説明とともに示されています。
フラグ |
概要 |
必須項目 |
-id |
使用するvictimIDは、正確に32(0x20)文字のサイズである必要があり、そうでなければマルウェアは早期にシャットダウンする |
Yes |
-path |
ファイルの暗号化を再帰的に開始する場所を指定。このパラメータを使用しない場合、マシンに接続されているすべてのドライブが暗号化され、その後、マルウェアはネットワーク上で自己拡散を試みる |
No |
-ep |
99以下の数値で、遭遇したファイルの何パーセントが暗号化されるかを指定。このフラグが省略された場合、デフォルトの50が使用される |
No |
下のスクリーンショットは、コマンドラインインターフェイスの引数処理をフラグとともに示しています。デコンパイルしてリファクタリングしたコードでは、ファイルの暗号化率が99以上の場合に50に設定されること、与えられたvictimIDが設定されること、与えられたパスが格納されることなどが確認されます。
コマンドライン引数が処理されると、ランサムウェアは、必要なコマンドライン引数とともに、新しいプロセスとして「vssadmin」を起動し、すべてのシャドーコピーを静かに削除する作業に移ります。ランサムウェアは、新たに起動した「vssadmin」プロセスがシャドーコピーの削除を完了するまで待機し、その後に実行を継続します。
つまり、C:ドライブにWindowsがインストールされていないシステムでは、シャドーコピーの削除は失敗し、ランサムウェアは実行を継続します。
この時点で初めて、与えられたID(「-id」フラグで渡される)が必要な32文字の長さであるかどうかがチェックされます。これが失敗すると、Royalランサムウェアは単に実行を停止します。
次に、スタック文字列とバイナリのデータセクション内の文字列をもとに、回避すべき拡張子を初期化します。回避される拡張子は、exe、dll、lnk、bat、およびroyalです。さらに、readme.txt ファイルはランサムウェア自身によって配置されるため、無視されます。
このランサムウェアは、windows、royal、$recycle.bin、google、perflogs、Mozilla、tor browser、boot、$windows.~ws、$windows.~bt、windows.oldという複数のフォルダーを避けています。これらのフォルダには関連データがあるため避け、ここにあるファイルを暗号化するとシステムが正常に起動しなくなります。誤作動している端末はランサムウェアの手下との接触につながりにくいため、身代金のメモが読める程度に端末を「機能」させておき、復号機で端末のファイルを復元できるようにします。
ステージ設定
暗号化はマルチスレッド方式で開始され、スレッド数は被害者のマシンのプロセッサ数の2倍に相当します(GetNativeSystemInfoの結果に基づく)。このように、システムのスケジューラは、タスクを並行して実行しながらも、多すぎるスレッドによって過負荷になることはありません。
ファイルをトラバースしながら暗号化関連のスレッドで暗号化を開始するのではなく、スレッドは条件変数がターゲットファイルの有無を知らせるのを待ちます。
各スレッドは、マルウェアサンプルに埋め込まれたRSA公開鍵をインポートして、AES値とIV値を暗号化し、ファイルの暗号化に使用します。
なお、何らかの理由でRSA公開鍵が取得できない場合、スレッドは単に終了します。Windows APIの暗号化関数を使用すると、静的解析に現れるか、動的に解決する必要があるため、OpenSSLライブラリはマルウェアと静的にリンクされており、同様の機能を提供します。使用されている暗号は、残念ながら正しく実装されています。
ロックされたファイルの暗号化の試みを回避するために、ランサムウェアはまず、そのファイルがロックされているかどうかをチェックします。ロックされている場合、Windows再起動マネージャを使用して、ファイルが利用可能であることを確認します。特筆すべきは、2つのプロセスが解放の対象から外されていることです: “explorer.exe” と Royalランサムウェアのプロセスです。この2つのどちらでもないプロセスがロックされた場合、再起動マネージャが使用されます。
RmStartSession “でセッションを開始し、”RmRegisterResources “でリソース(この場合はファイル)を登録します。その後、”RmGetList “でリソースをロックしているアプリケーションやサービスをチェックし、”RmShutdown “でリソースをクローズし、ロックを解除します。
図8 – Restart Manager関連機能から処理への解放
ファイルの暗号化
ファイルの暗号化は、与えられたファイルのデータのチャンクに基づいて行われます。暗号化率を指定するオプションのフラグは、ファイルのサイズに基づいて、指定されたファイル内で何ブロックが暗号化される必要があるかを指定します。フラグを指定しない場合は、ファイルの半分が暗号化されます。
ランサムウェアの実行ごとに、各ファイルの一定割合を暗号化するというきめ細かいアプローチにより、オペレータは、高速で安全性の低いアプローチを取るか、低速で安全性の高いアプローチを取るかを決定できます。暗号化の割合が低すぎる場合、ファイルは復元できるかもしれませんが、暗号化にかかる時間は重要ではありません。高い割合(90%)を使用すると、より多くのデータを暗号化し、鍵なしでの復旧は不可能ではないにせよ難しくなり、ファイルの暗号化にはかなりの時間を費やすことになります。さらに、ファイルを完全に暗号化しないことで、ランサムウェアをブロックするためにセキュリティ製品が引き起こす、ディスクの大量使用を避けることができます。
元のファイルは、(部分的に)暗号化されると、528バイト分増えることになります。RSAブロック、元のファイルサイズ、暗号化率の値は、新しく作成されたスペースに格納されます。与えられたフィールドのサイズは、それぞれ、512、8、8バイトです。
暗号化率はすべてのファイルに適用されるわけではありません。5245000バイト(よく使われる1000バイトではなく、1キロバイトあたり1024バイトに準拠する場合は5メガバイト)以下のサイズのファイルは、与えられた暗号化率に関わらず、完全に暗号化されます。
なお、チャンクベースのアプローチは、Contiランサムウェアにも存在します。
データの書き込みが完了すると、Windows API関数「FlushFileBuffers」でフラッシュされ、変更がディスク上に持続されるようにします。次に、ランサムウェアは暗号化されたファイルを移動することで、移動先が元々持っていた名前とは異なる名前に変更します。変更後の名前は、古い名前に拡張子「.royal」が付加されたものです。ファイル名の変更には、Windows API関数「MoveFileExW」が使用されます。
再帰的なフォルダー列挙
新しいスレッドが作成され、すべての論理ドライブが取得されます。他のランサムウェアやワイパーとは異なり、ドライブのメディアタイプはチェックされないため、ファイル暗号化が試みられる一方で、書き込みができないドライブが存在する可能性があります。
遭遇した各フォルダ内には、身代金メモが配置されます。身代金メモには、コマンドラインインターフェイスで提供されたvictimIDが含まれています。
ブロックリストの拡張子やフォルダ名が一致しないことを意味する有効な各ファイルは、リストに追加されます。このリストは、暗号化スレッドに新しいファイルが利用可能であることを指示する方法であり、その後、そのファイルは暗号化されます。
図14 – 暗号化スレッドが使用する「有効な」ターゲットファイルをリストに追加
暗号化スレッドは、暗号化された時点でファイルをリストから削除し、リストから次のアイテムがあればピックアップします。
ネットワークスキャナ
コマンドラインインターフェイスでパスを指定しなかった場合、マルウェアは被害者のデバイス上のすべてのIPアドレスを取得し、その後、取得したIPのサブセットに基づいてネットワークをスキャンします。192」、「10」、「100」、「172」に等しいオクテットで始まるアドレスのみが使用され、これらはローカルネットワークに対応する傾向があるためです。
WSASocketW」を使用して新しく作成されたソケットは、「CreateIoCompletionPort」を使用して、補完ポートにリンクされます。ポート445を使用するSMB接続は、「ConnectEx」へのコールバックを使用します。当初、マルウェアはWinSockライブラリを使用し、「WSAIoctl」を使用してTCPソケット接続を確立し、「ConnectEx」に接続します。このようにして、被害者のマシンで以前に行われた接続が列挙され、可能であれば再利用され、接続されたデバイスのファイルも暗号化することを目的としています。
ADMIN$」と「IPC$」という文字列を持たないシェアは、暗号化スレッドが使用する暗号化対象リストに追加されます。
暗号化スレッドが終了すると、マルウェアは「ExitProcess」を使用して自身を終了させます。
Linux版
ファイルの暗号化に先立ち、RoyalランサムウェアのLinuxバージョンは、生成された値のランダム性をチェックします。ランダム性が十分でない場合、「/dev/random」から2048バイトを読み込んでシード化します。データの読み取り中、またはランダム関数のいずれかを呼び出す際にエラーが発生した場合、マルウェアは自身を終了させます。
事前のテストが成功した場合、バイナリ内に存在するRSA公開鍵を使用して、値「test」を持つテスト文字列が暗号化されます。結果が正しければ、デバッグ出力にその旨が表示され、関数はtrueを返します。失敗した場合、関数はfalseを返します。
次に、与えられたフラグによって設定される可能性のあるローカル変数が初期化されます。フラグは下表に示すとおりです。
フラグ |
概要 |
必須項目 |
|
再帰的な暗号化を開始するパス。この動作のフラグはなく、最初の引数として指定する必要がある |
Yes |
-id |
使用するvictimIDは、正確に32(0x20)文字のサイズである必要があり、そうでなければマルウェアは早期にシャットダウンする |
Yes |
-ep |
99以下の数値で、遭遇したファイルの何パーセントを暗号化するかを指定。このフラグが省略された場合、デフォルトの50が使用される |
No |
-vmonly |
このフラグとforkフラグを組み合わせると、すべてのファイルが暗号化される。単独で使用した場合は、何も起こらない |
No |
-fork |
プロセスをフォークし、ファイルを暗号化する前に新しいセッションが開始されるようにする |
No |
-logs |
デバッグメッセージを標準出力に出力 |
No |
-stopvm |
ワールドIDに基づき、デバイス上のすべてのESXi VMを終了させる |
No |
以下に示すような暗号化率のチェックでは、1~99の値が確認できない場合、50に設定されます。
ロギングでは、以下のスクリーンショットのように、デバッグメッセージを標準出力で出力するように強制します。
victimIDは、Windows版と同様、必須です。長さは同様32文字で、IDがない場合、または長さが32(16進数では0x20)でない場合、エラーメッセージが表示され、関数はfalseを返します。falseを返すと、その後、マルウェアはシャットダウンします。
仮想マシンの終了
ホスト上で動作しているVMware ESXi仮想マシンを停止するには、「-stopvm」フラグを使用します。まず、「esxcli」バイナリが新しいシェル経由で実行され、「vm process list > list」をパラメータとして、標準出力をファイル「list」にリダイレクトして既存の仮想マシンのリストを保存する役割を果たします。ESXiコマンドラインインターフェイスコマンドを実行するシェルは、「execlp」を介して呼び出され、フォークされたプロセスと呼び出されたプロセスとを重ね合わせます。
最後に、子プロセスが終了します。Royalランサムウェアである親プロセスは、子プロセスの終了を待って「list」ファイルを開きます。存在しない場合、関数は戻ります。返ってきた場合、”list “のファイルサイズがチェックされます。これが失敗すると、この関数も戻ります。
list “ファイルのサイズに基づいて、新しいメモリブロックが割り当てられ、その後、コンテンツがメモリにロードされます。「World ID:」文字列は、「strstr」とその後の改行文字 (「\n」) の助けを借りて、ワールド ID を見つけるために使用されます。
取得したワールドIDのそれぞれは、”esxcli “バイナリを再度使用して、以下のコマンドライン引数 “vm process kill -type=hard -world-id=%s” (%sはワールドID)でVMを終了させるために使用します。
前のプロセスのスポーンと同様に、「fork」、「execlp」、「exit」、「wait」の組み合わせにより、ランサムウェアは、新しくスポーンされたプロセスが終了した場合にのみ継続されます。
ファイルの暗号化
暗号化は、”-fork “フラグの有無によって、メインプロセスで実行されるか、フォークされたプロセスで実行されるかが決まります。forkフラグが設定されている場合、setsidを使用した新しいセッションが作成され、暗号化が開始されます。forkフラグが設定されていない場合は、メインプロセスから暗号化が開始されます。
図29 – 新しいセッションを作成し(「-fork」フラグに基づく)、暗号化を開始
ファイルを暗号化するために作成されるスレッド数は、「sysconf」を使用して取得されるプロセッサ数の2倍に相当します。計算方法は、Windowsのバリアントと同じです。
マルウェアに埋め込まれているRSA公開鍵がインポートされます。公開鍵の完全なものは、このブログの冒頭で紹介しています。インポートに失敗した場合、スレッドは戻ります。
暗号化スレッドは、Windows版と同じように、リストからターゲットファイルを読み込みます。リストが空の場合、暗号化スレッドは待機します。暗号化処理は、ターゲット・ファイルのサイズを取得することから始まります。次に、ランダム関数と”/dev/random “からの読み込みにより、48バイトがランダムに生成されます。最初の32バイトがAESキーで、最後の16バイトがIVです。
両方の値は、以前にインポートしたRSA公開鍵で暗号化されます。暗号化の最初の512バイトは、Windows版と同様に、暗号化されたファイルに保存されます。値は、先にインポートされたRSA鍵で暗号化され、後の暗号化の512バイトのブロックは、Windows版と同様にファイルに保存されます。
チャンクの使い方はWindows版と同じで、暗号化率はコマンドラインインターフェイスで指定するか、デフォルト値の50が使われます。ここでも、5245000バイト(1キロバイトの1024バイトを守る場合、5メガバイトなど)以下のファイルは、完全に暗号化されます。それ以外の場合は、パーセンテージによってチャンクサイズが決定され、指定されたパーセンテージでファイルが暗号化されるようになります。
暗号化されたファイルのサイズは再び膨らみ、暗号化されたRSAブロックを格納するために512バイト、元のファイルサイズを格納するために8バイト、暗号化率の値を格納するために8バイトが使用されることになります。
AESキーとIVは、暗号化が終了すると「memset」を使ってクリアされるが、これはメモリ上の値へのアクセスを避けるためです。その後、書き込まれたデータはフラッシュされ、暗号化されたファイルのデータが確実にディスクに書き込まれます。フラッシュは “fsync “で実行されます。さらに、ファイル名に「.royal_u」という拡張子が付加されます。
再帰的なフォルダー列挙
他のランサムウェアファミリーと同様に、Royalランサムウェアはデバイス上のすべてのフォルダを再帰的に列挙して、暗号化できるファイルを探します。コマンドラインインターフェイスの最初の引数であるパスは、開始点として使用されます。指定された値が有効なパスでない場合、マルウェアは終了します。有効なパスである場合、マルウェアはそれをディレクトリとみなし、与えられたフォルダ内の「readme」名の下に身代金メモを置きます。指定されたvictimIDは、身代金メモの中で置き換えられます。
その後、ファイル暗号化を再帰的に開始し、名前が1ドットまたは2ドットに等しいフォルダを除外します。
除外されるファイル名は、以下のいずれかを含むファイルです:”royal_u”, “royal_w”, “.sf”, “.v00”, “.b00”, “royal_log_”, “readme”.royal_w」は、Windows版では「_w」の部分が使われていないのに、Windows版の暗号化ファイルの拡張子を指しているようです。royal_log_」の名前は、ランサムウェアでは使用されていないようです。
暗号化の対象となるファイルがあれば、そのファイルはリストに追加され、暗号化スレッドがそこからアイテムを取り出して暗号化し、その後、リストから削除されます。すべてのフォルダが再帰的に繰り返された後、マルウェアはシャットダウンします。
匿名化されたインシデントレスポンス事例
このセクションでは、匿名化されたインシデントレスポンス事例を掲載しているため、特定の侵害の指標は省略されています。このケースの焦点は、Royalランサムウェアでシステムを暗号化したアクターの戦術、技術、手順 (TTP) を示すことです。このケースの出来事は時系列で説明されており、2022年の最終四半期に起こったものです。
行為者は、フィッシングメールで最初の初期アクセスを取得しました。この電子メールは、既存の良質の電子メールスレッドに基づいており、HTMLファイルの形で悪意のある添付ファイルが含まれています(HTMLの密輸)。HTMLファイルを開くと、アーカイブのダウンロードを促すポップアップが表示されます。このウェブページは、ファイルを正しく表示するためにファイルをダウンロードするよう被害者に指示する誘い文句になっています。また、ページ上ではアーカイブのパスワードが与えられています。
アーカイブ自体には、ISO イメージが含まれています。このイメージをマウントすると、ショートカット(LNK)と、おとりファイル、バッチファイル、Qbotペイロードを含む隠しフォルダの複数のファイルが含まれます。バッチファイルとQbotペイロードは、それぞれ「revalues.cmd」「vindictive.dat」という名前です。バッチスクリプトは、Qbotマルウェアを被害者の一時フォルダにコピーし、マウントされたドライブから「regsvr32」を使用してペイロードを実行します。を使用して、バッチスクリプトを実行します:バッチスクリプトは、次のように実行されます: “C:∕WindowsSystem32∕cmd.exe /c standby∕revalues.cmd regs”。regs “引数は、以下のスクリプトの抜粋にあるように、実行中に “regsvr32 “の名前を補完するために使用されます。
Qbotはその後、Runnレジストリエントリの助けを借りて、起動順序にそれ自身を永続させます。
このエントリは、マシンが起動するたびに、再び「regsvr32」を使用して Qbot を実行します。:
“regsvr32.exe “C:\Users\[redacted]\AppData\Roaming\Microsoft\Jmcoiqtmeft\nwthu.dll””
ダブルクォーテーションは、パスに1つ以上のスペースが含まれていても正常に実行されるようにするためのものです。
最初の感染から約4時間後、Cobalt Strikeはドメインコントローラのサービスとしてインストールされ、localhostのポート11925で実行されました。なお、ドメインコントローラ上の足場への横移動は、Pass-the-Hashを使用して行われた。この横移動は、最初の感染から1時間後に始まり、2時間余りかかりました。AdFindのようなアクティブディレクトリネットワークを列挙するための追加ツールも使用されました。
横移動の際に特権を昇格させるために、UAC バイパスが使用されました。このバイパスは、ここで説明されているように、Windows 10のディスククリーンアップツールのレースコンディションに基づいており、DLLのハイジャックにより、昇格した権限で任意のコードを実行することができます。UACバイパスを実行するコマンドは、次のとおりです。
“C:╱WindowsSystem32WindowsPowerShell╱v1.0powershell.exe -NoP -NonI -w Hidden -c $x=$((gp HKCU:SoftwareMicrosoft Windows Update).Update); powershell -NoP -NonI -w Hidden -enc $x; Start-Sleep -Seconds 1system32cleanmgr.exe /autoclean /d C:”
昇格した特権を使用して、ポート11925でCobalt Strikeのサービスを介してPowerSploit(悪用後のフレームワーク)を起動させるPowerShellコマンドを実行しました。このケースでは、PowerViewモジュールがダウンロードされ、実行されました。モジュールは、PowerShell コマンド「IEX (New-Object Net.Webclient).DownloadString(‘http://127.0.0.1:11925/’)」を使用してダウンロードされました。
その数日後、ネットワークで足場を固めると、MEGAsyncを使って25ギガバイト以上のデータを流出させました。さらにその数日後、「Royalランサムウェア」が展開されました。ここで注目すべきは、実行可能ファイルの名前です。これは、被害者の名前の後に付けられています。これは、行為者が手動で関与していることを示すものです。
このインシデントレスポンス事例をまとめると、下の画像のように、1日単位で行動していることになります。
全体として、初期感染から完全に侵害された環境までの素早い展開は、ブルーチームの観点から物事を把握することが重要である理由を示しています。Qbotに関するより詳細な情報はこちら、またQbotの変化の歴史的な概要はThreatrayによって提供されています。
結論
インシデントレスポンス事例で強調されているように、Royalランサムウェアは積極的に使用されています。さらに、このランサムウェアの暗号化スキームは適切に実装されているようです。そのため、失われたファイルを復元するには、最近のバックアップまたは復号化ツールが唯一の方法となります。チャンクベースの暗号化は、ファイルを復元できないようにしながらも、暗号化プロセスをスピードアップさせます。
RoyalランサムウェアとContiのように、ランサムウェアのグループ間で機能が再利用されていることから、ギャングが協力したり、ギャングのメンバーが別の(または追加の)ギャングに参加したりすることについて考える材料になります。端的に言えば、あるギャングのランサムウェアの進化は、他のランサムウェアのギャングに影響を与え、標的となる組織に影響を与えることになります。そのため、常に変化を把握し、必要に応じてセキュリティ態勢を改善することが重要です。
Appendix A – MITRE ATT&CK テクニック
Royalランサムウェアで使用されるテクニックと、インシデントレスポンスのケースで使用されるテクニックを以下に示します。
Technique ID |
Technique |
Phishing: Spear phishing Attachment |
|
Valid Accounts |
|
Command and Scripting Interpreter |
|
Inter-Process Communication |
|
Native API |
|
Scheduled Task/Job: Scheduled Task |
|
System Services: Service Execution |
|
User Execution: Malicious File |
|
Create or Modify System Process: Windows Service |
|
Boot or Logon Autostart Execution |
|
Hijack Execution Flow: DLL Search Order Hijacking |
|
Data Encrypted for Impact |
|
Automated Exfiltration |
|
Exfiltration Over Web Service |
|
Remote Services: SMB/Windows Admin Shares |
|
Network Share Discovery |
Appendix B – 使用ツール
使用したツールを下の表に示します。
Tool |
Description |
A C&C framework |
|
A post-exploitation PowerShell-based framework |
|
A command line Active Directory query tool |
|
Synchronization tool between the MEGA cloud storage and one or more local devices |
|
Registers .dll files as command components in the registry |
|
Handle and interact with shadow copies |
|
Provides (remote) access to the ESXi machines via the command-line interface |
Appendix C – Yara ルール
以下に示す Yara ルールは、Royalランサムウェアを検出するために使用されます。
rule RoyalRansom strings: condition: |
本記事およびここに含まれる情報は、啓蒙目的およびTrellixの顧客の利便性のみを目的としてコンピュータ セキュリティの研究について説明しています。Trellixは、脆弱性合理的開示ポリシーに基づいて調査を実施しています。記載されている活動の一部または全部を再現する試みについては、ユーザーの責任において行われるものとし、Trellixおよびその関連会社はいかなる責任も負わないものとします。
※本ページの内容は2023年4月3日(US時間)更新の以下のTrellix Storiesの内容です。
原文: A Royal Analysis of Royal Ransom
著者: Alexandre Mundo, and Max Kersten