この更新版は、以前のバージョンの LockBit と同様に、感染を広げ、感染したシステム内のすべてのファイルを暗号化するように作られていますが、現在は、新しい保護層とトリックを備えて、解析と検出をより困難にしています。
このブログでは、ハッシュed555f0162ea6ec5b8bada743cfc628d376274 のサンプルに対する技術的な分析を提供します。
技術的な詳細
このサンプルは、古いOSでも動作可能なWin32アプリケーションです。新しい手法のように見えるかもしれませんが、実は他の種類のマルウェアで使われている古い手口で、第一層の保護機能を備えています。
すべてのマルウェアは未知のパッカー/レイヤーで暗号化されており、実際ののマルウェアを解読して実行するには、特別なキーと引数を必要とします。
この場合、マルウェアは「-pass」引数に従って実行され、その後、復号化するためのキーが必要です。
この種の保護は、キーを持たない研究者がサンプルを分析することを回避するには十分です。しかし、保護されたシステムにアプリケーションのコマンドラインをキャプチャできる何らかのログメカニズムがある場合、この特別なキーはログにキャプチャされる可能性があります。
この保護レイヤーの後、マルウェアはBlack Matterから借用したトリックを使用して、強力な難読化を行っています。
図 1: マルウェア サンプルの詳細
最初のレイヤーの後、マルウェアは必要なモジュールと必要なAPIのロードを開始します。
Black Matterと同様に、LockBit3.0のコードは、32ビット値をハッシュとして実行するスタック難読化を使用して、APIを難読化しようとするテクニックを使用しています。
この手法では、どのAPIやモジュールが使われているかを知ることはできませんが、デバッガやHash DBなどのツールを使って判断することは可能です。
図2:LockBit 3.0の新モジュールと新APIのロード
Black Matter ランサムウェアは通常、実行時に作成される特別なスタブを使用して API を難読化します。これは、以下のようなプロセスで行われます。
- メモリを確保
- マルウェアは乱数を選択し、その結果に基づいて、APIへの呼び出しを難読化しようとする特別なコードを準備します。LockBit3.0は、5種類のコードを作成します。これは、検出をより困難にするために行われます。
- マルウェアはAPIのメモリアドレスを取得し、スタブが解読して後で跳ぶアドレスを難読化します。マルウェアは、後でこの新しいコードを呼び出す、APIの最終的なエントリーポイントを難読化し、解析を難しくします。
図3:LockBit 3.0は、APIコールを隠すための難読化スタブを作成
Black Matterと同様に、スタブを作成する前に、デバッガが接続されているかどうかを確認し、接続されている場合はスタブの機能を停止させます。この場合、マルウェアは何らかのAPIを呼び出した瞬間にクラッシュします。
デバッガチェックは、メモリに0xABABABという値があるかどうかをチェックする仕掛けになっています。
図 4: LockBit 3.0 で使用されるデバッガーをキャッチする 1 つのトリック
LockBit3.0には別の保護メカニズムが組み込まれており、API “SetThreadInformation” を使用して、スレッドがデバッグ対象から外れるかどうかを確認します。見つかった場合、マルウェアは実行されますが、あらゆるデバッガはそのデバッグを停止させられます。
図5:SetThreadInformationを使ったデバッガーを捕まえる他のトリック
これらのステップに続いて、マルウェアはAPI「DbgUiRemoteBreaking」を使用して、デバッガが動作しなくなることを確認します。これは、Black Matterマルウェアの開発者がサンプルを分析しづらくするために行っている作業と密接に関連しています。
図6:DbgUiRemoteBreakingを使用したデバッガ回避のさらなる試み
LockBit3.0は、暗号化され、圧縮された内部構成を持っており、異なるブロックも暗号化され、base64でエンコードされることが可能です。これはBlack Matterにも見られますが、Black Matterが10個のフラグを持つのに対し、LockBit3.0 には 24 個のフラグがあり、マルウェア オペレーターが利用できるオプションを拡張しています。
このように、フラグやその他の重要な部分に着目して構成することで、このような構造になっています。
分野 | 説明 | |
PUBLIC_KEY [0x80] | マルウェアで使用される RSA 公開キー | |
VICT_ID [0x10] | 被害者を追跡するための ID、Black Matter から受け継いだもの、LockBit v3 では使用禁止 | |
AES_KEY [0x10] | Black Matterで使用されるAES KEYは、受け継がれたものとしてマルウェアに保存、使用禁止 | |
FLAGS [0x18] | マルウェアの動作を管理、Black Matter の 10 ではなく、LockBit v3 では 24 | |
POINTER_STRUCT_TO_DATA | Black Matter のように base64 でエンコードされた文字列を使用して、各構成構造体のサイズをバイト単位で保持する構造体 | |
DATA_ENCODED_IN_BASE64 | それぞれ異なるデータを符号化文字列(および暗号化)で保持する異なるブロックの構造体(ただし、これらに限定されない): | ・停止・終了するサービス ・終了させるプロセス ・身代金要求のテンプレート ・暗号化処理で回避すべきファイル、フォルダ、拡張子 |
表 1: LockBit 3.0からの構成の構造
このマルウェアは、身代金メモのテンプレート、被害者IDの作成、身代金メモの書き込みとともにメモリ上で復号化した後、後で使用するために再びメモリ上で暗号化している点が興味深いです。
身代金メモをメモリ上で暗号化することで、このパターンを検出できるセキュリティ製品による検出を回避することができます。
他のランサムウェアと同様に、LockBit3.0は、被害者のマシンの言語を、ハードコードされたブラックリストの言語リストと比較するフラグを確認します。このフラグが有効な場合、2つのAPIS「ZwQueryInstallUILanguage」および「ZwQueryDefaultUILanguage」を使用して言語をチェックします。
この2つの関数で、Windowsシステムの通常の使用言語とインストール言語をチェックします。チェックは、コード内のハードコードされた値のリストに対して行われますが、ディスクでの検出を避けようとするため難読化され、解析はより困難になっています。
図 8: 難読化された方法でマシンの言語をチェック
LockBit3.0で無効になる言語には、以下のようなものがあります。
- ロシア語
- ウクライナ語
- ルーマニア語
- ベラルーシ語
- タタール語
- グルジア語
マルウェアがこれらの言語のいずれかを検出すると、実行を停止し、システムに何らかの損害を与えないようにします。
Black Matterで見られるように、LockBit3.0もまた、特権の昇格やエスカレーションを行うためにさまざまなトリックを試みます。
- SVCHOST.EXEからトークンを複製し、他のプロセスをEXPLORER.EXEとして使用する。
- PEBを使用し、OSが32ビットか64ビットかで異なるシェルコードを起動します。32ビットの場合、それは一度だけ使用されますが、64ビットの場合、それは2回使用され、2番目のoの引数が発生します。
その後、マルウェアは暗号化されたファイルの新しい拡張子、暗号化されたファイルのアイコン、身代金メモを作成します。
レジストリから「MachineGUID」を読み取るBlack Matterとは異なり、この新バージョンのLockBitはRSA公開鍵ブロックを使用し、そこからMD5ハッシュを計算します。
この変更は、次の 2 つの理由で行われます。
- まず、マルウェアの実行を回避するために「MachineGUID」が操作されているかどうかを確認するアンチウィルス保護を回避するためです。Black Matterでこのようなことが起こると、マルウェアは被害者のマシンに実害を与えることなく停止します。
- 第二に、マルウェアのオペレータと被害者を追跡するのを容易にするためです。
図 9: 暗号化ファイルの新しい拡張子の作成
この文字列は、身代金メモの名前のファイルを作り、後でファイル名の整合性をチェックするためのハッシュを計算します。
図 10: 身代金メモを作成
そして、マルウェアは、被害者システムの%appdata%フォルダに、身代金要求と同じ名前で、拡張子が”.ico “のバイナリにハードコードされた特別なアイコンファイルを作成します。
図11:特殊アイコンファイルのドロップ
その後レジストリに、LockBit3.0は暗号化されたファイルと新しい拡張子に関連付けられたファイルを書き込むので、ユーザーはこの新しいアイコンで示された暗号化されたファイルのみを持つことになり、ユーザーに警告することができるようになります。
図12:暗号化ファイルへの新しい拡張子を持つドロップされたアイコンファイルが登録
これらの変更は、”SHChangeNotify “というAPIを使用してシステムで適用され、呼び出された瞬間にすべての変更を更新するよう強制されます。
図13:新しいアイコンファイルを表示する変更を強制的に更新させるシステム
LockBit3.0には、動作を変更することができる24個のフラグがあります。これらのフラグの一部をご紹介します。
フラグ | 説明 | |
CRYPT_WITH_RANDOM_NAMES | 有効にすると、マルウェアはファイルを暗号化し、ランダムな名前にリネームしますが、拡張子はすでに準備されています。 | |
ENCRYPT_BIG_FILES | この機能を有効にすると、大きなファイルは暗号化されますが、そうでない場合は、より短時間でシステムに損害を与えるために回避されます。オペレータは、非常に迅速にファイルを暗号化したいので、大きなファイルを避けることは、非常に迅速に大きな損傷を行うことができることを確認する方法です。 | |
AVOID_HIDDEN_FILES | 有効にすると、マルウェアはファイルのプロパティにこのフラグがあるファイルを回避するようになります。 | |
MAKE_LOGON | 有効な場合、マルウェアは設定に保存されている認証情報を使ってログインを試みます。有効になっていない場合、または認証情報ブロックが空の場合は、それを回避します。 | |
CHECK_LANGUAGE | 設定されている場合、マルウェアは、このレポートで説明されているように、被害者マシンの言語をチェックします。 | |
ENCRYPT_SHARED_FOLDERS | 設定された場合、マルウェアは共有フォルダの暗号化を試みますが、その他のケースは回避されます。 | |
ENCRYPT_SERVER | 設定された場合、マルウェアはマウント可能なすべてのボリュームと検出可能なすべてのExchangeサーバーの暗号化を試みますが、その他のケースは回避されます。 | |
CREATE_MUTEX | このフラグが設定されている場合、マルウェアは被害者マシンでの複数回の実行を避けるためにミューテックスを作ろうとします。アンチウイルスに使用できるように、このフラグは通常無効に設定することができます。 | |
DELETE_SERVICE | 設定された場合、マルウェアは設定内のサービスブロックにあるサービスを見つけ、停止し、削除しようとします。この動作は、検出されないようにするためと、暗号化処理を停止させないためのセキュリティのためのものですが、ノイズの多い動作です。 | |
KILL_PROCESSES | 設定された場合、マルウェアはサービスの場合と同様に、設定ブロック内のプロセスを見つけて終了させようとします。これは、検出されることを回避し、暗号化プロセスを保護するためですが、ノイズの多い動作です。 | |
CHANGE_WALLPAPER | 設定された場合、マルウェアは被害マシンのデスクトップの壁紙を変更し、マシンへの攻撃についてユーザーに警告します。 | |
CHANGE_ICON | 設定された場合、マルウェアはこのレポートで説明されているように、特別なハードコードされたアイコンファイルをドロップし、このアイコンを暗号化されたファイル拡張子のデフォルトアイコンとして設定しようとします。一部のサンプルでは、このフラグがチェックされず、常にアイコンが設定されるようになっています。 | |
PRINT_RANSOM_NOTE | 設定された場合、マルウェアは、マシンへの攻撃についてユーザーに警告するために、利用可能なすべてのプリンターで身代金メモを印刷しようとします。この動作は非常に厄介で、企業の他の活動を停止させる可能性があります。 | |
DELETE_MALWARE | この設定を行うと、攻撃が終了した時点で自動的に削除され、マルウェアファイルに関する痕跡をディスクに残さないようにします。 | |
DELETE_AV_SERVICES | 設定された場合、マルウェアは設定内の1つのブロックに格納されたAVサービスを停止して削除しようとします。 | |
CONNECT_TO_C2 | 設定された場合、マルウェアは接続を試み、Black Matterが行うように、被害者、マシン、および暗号化されたファイルに関する情報を送信します。 |
表 2: フラグの構造と情報
暗号化のプロセスは、Black Matterと酷似しています。
結論
LockBit3.0は、Black Matterのコードを追加し、検知に対する防御力を高め、その解析を遅らせる、LockBitファミリーの新しい亜種です。フラグの数を増やしてより多くの動作を持たせることで、マルウェアの運用者はより柔軟に、さまざまなシナリオでマルウェアを活用できるようになっています。注目すべきは、2022年6月18日の「Entrust」に対する攻撃のように、このマルウェアが攻撃に利用されていることです。
このマルウェアは深刻な脅威であり、システムの脆弱性に対するパッチ適用、不要なRDP接続の終了、従業員へのフィッシング教育、サーバーや重要な機器の保護対策などを通じて、監視と制御を行う必要があります。
IOC
ED555F0162EA6EC5B8B8BADA743CFC628D376274
この文書およびここに含まれる情報は、教育目的およびTrellix顧客の利便性のみを目的としたコンピュータセキュリティリサーチを記述したものです。Trellixは脆弱性の合理的な開示方針に従って調査を実施しています。記載されている活動の一部または全部を再現する試みは、ユーザーの責任において行うものとし、Trellixおよびその関連会社はいかなる責任も負いません。
原文: LockBit3.0: A Threat that Persists
著者: Alexandre Mundo