- Cisco Talos は最近、8Base ランサムウェアグループの活動が活発化している状況を確認しました。8Base は、Phobos ランサムウェアの亜種や公開されている他のツールを使用して攻撃を仕掛けます。
- 同グループが使用する Phobos 亜種のほとんどは、バックドア型のトロイの木馬である SmokeLoader によって配布されます。通常は、SmokeLoader が展開される時に、このコモディティ型ローダーによって他のペイロードがドロップされるかダウンロードされるのですが、8Base による攻撃の場合、暗号化された SmokeLoader のペイロードにランサムウェア コンポーネントが埋め込まれており、これが復号されて SmokeLoader のプロセスのメモリにロードされるようになっています。
- 8Base が使用する Phobos ランサムウェアのペイロードには、このブログで説明する埋め込みの構成が含まれています。Talos の分析では、この埋め込みの構成を除けば、8Base が使用する Phobos の亜種と 2019 年以降に実際に確認された Phobos の他のサンプルとの間に大きな違いは見つかりませんでした。
- Phobos の構成を分析したところ、ユーザーアクセス制御(UAC)のバイパス手法や攻撃対象が感染したことを外部 URL に報告する機能など、興味深い機能が多数存在することが判明しました。
- 特に注目すべき点は、Talos が分析した 2019 年以降にリリースされた Phobos のサンプルのすべてで、暗号化キーの保護に同じ RSA キーが使用されていたことです。このことから、関連する秘密キーを入手すれば、これらすべてのサンプルの復号が可能になるという結論に達しました。
Phobos ペイロードを送り込む SmokeLoader の 3 段階のプロセス
スペースの都合で SmokeLoader の概要を一通り説明することはできませんが(基本情報はこちらの Malpedia に記載されています)、リバースエンジニアリングによって最終ペイロードを特定する方法を紹介したいと思います。この例では、サンプル 518544e56e8ccee401ffa1b0a01a10ce23e49ec21ec441c6c7c3951b01c1b19c を使用しますが、最近確認されている 8Base のサンプルには、最終的には同じランサムウェア バイナリ ペイロードが含まれています。このプロセスでは、x32dbg のようなデバッガの制御環境でマルウェアを実行する必要があります。
SmokeLoader マルウェアは、3 段階でペイロードを復号します。第 1 段階には実行フローを難読化するためのランダムな API 呼び出しが多数含まれています。第 2 段階と第 3 段階で実行されるのは、割り当てられたメモリに格納されるシェルコードです。最終的なバイナリは第 3 段階で明らかになり、メモリブロック内の PE(Windows Portable Executable)形式のバイナリによって、最終ペイロードが元の形式に変換されます。
SmokeLoader に埋め込まれているペイロードの復号プロセス
第 1 段階では、VirtualAlloc または VirtualProtect でブレークポイントを有効にし、その引数を調べると、次の段階で復号されるアドレスがわかります。このメモリの位置は、上記のようにエントリポイント(EP)関数の最後で呼び出されます。
第 2 段階のシェルコードでは、エントリポイントから呼び出された関数の 2 番目の呼び出しが行われ、第 3 段階で 2 番目に割り当てられたメモリへの呼び出しが行われます。第 3 段階に達すると、そのメモリ領域には解凍されたバイナリ(PE)が格納されているはずです。このバイナリはファイルにエクスポートし、分析することができます。
このメソッドで抽出される最終ペイロードのハッシュは 32a674b59c3f9a45efde48368b4de7e0e76c19e06b2f18afb6638d1a080b2eb3 です。
Phobos ランサムウェアの機能の概要
Phobos を分析したところ、数々の機能が発見されました。ランサムウェア攻撃者はこれらの機能を利用して、たとえば標的のシステムで永続性を確立したり、暗号化を迅速に実行したり、バックアップを削除したりできます。Phobos は、ローカルドライブとネットワーク共有の両方のファイルを暗号化できる典型的なランサムウェアです。2023 年度第 2 四半期の Talos インシデント対応レポートでは、8Base グループが AnyDesk をインストールした後に Phobos の亜種を使用してマシンにリモートアクセスできるようにし、LSASS からログイン情報を不正に取得した方法について詳しく説明しました。盗まれたログイン情報はその後、特権昇格、データ漏洩、ランサムウェアモジュールの実行に悪用されました。
Talos は、マルウェアのコードに次の機能が存在することを発見しました。
- 1.5MB 未満のファイルの完全な暗号化。このしきい値を超えるファイルは部分的に暗号化することで、暗号化の速度を向上。サイズが大きい場合、ファイル全体で暗号化された小さなデータブロックにファイルを分割し、このデータブロックのリストとキーをファイル末尾のメタデータに保存
- ローカルネットワーク内のネットワーク共有をスキャン
- スタートアップフォルダとレジストリの Run キーを使って永続性を確立
- 暗号化の対象にする拡張子とフォルダのリストを生成
- 対象ファイルを開いたままにしている可能性のあるプロセスをプロセス ウォッチドッグ スレッドで強制終了(重要なファイルが暗号化される確率を高めるため)
- システムのリカバリ、バックアップ、シャドウコピー、Windows ファイアウォールを無効化
- 70 を超えるオプションが利用可能な埋め込みの構成。この構成は、ファイルの暗号化に使用されるものと同じ AES 関数を用いて暗号化(ただし、ハードコードされているキーを使用)
この構成データを分析した結果、このマルウェアバイナリには他にも機能があることが判明しました。これらの機能は特定のオプションを設定することで有効になります。具体的には以下の機能ですが、これまでオープンソースのレポートでは文書化されていないか、表面的にしか触れられていませんでした。
- .NET プロファイラ DLL ロードの脆弱性を使用した UAC のバイパス
- マルウェアの追加機能を有効にするデバッグファイル(次のセクションで説明)
- ブロックリストに登録されたファイル拡張子のリスト(Phobos マルウェアを使用する他のグループの名称が示されている)
- 動的にインポートされる API 呼び出し(セキュリティ製品による動作検出を回避するための機能)
- ハードコードされた RSA キー(暗号化に使用されるファイルごとの AES キーを保護するために使用される)
- 攻撃対象が感染したことを外部 URL に報告する機能
- OS の言語設定の確認(キリル文字を使用する言語に設定されている場合はマルウェアを実行しないようにするため)
Talos は Phobos が使用する暗号化の方法も調査しました。2019 年以降にリリースされた Phobos のバージョンでは AES-256 暗号化のカスタム実装が使用されており、暗号化されたファイルごとに異なるランダムな対称キーが使用されます。それ以前の亜種では Windows Crypto API が使用されていました。各ファイルが暗号化されると、暗号化に使用されたキーと他のメタデータが、ハードコードされている公開キーを使用して RSA-1024 で暗号化され、ファイルの末尾に保存されます。このアルゴリズムは、たとえば 2019 年の Malwarebytes の投稿に見られるようにすでに文書化されており、プロセス自体は現在も変わっていません。
この方法の場合、過去にブルートフォース(総当たり)攻撃を受けていたとしても、ファイルごとに異なるキーが使用されるため、ブルートフォース攻撃によってファイルが復号される可能性は非常に低くなります。一方、RSA 秘密キーが判明した場合は、2019 年以降の Phobos の亜種によって暗号化されたファイルは確実に復号できるということになります。この事実は、解凍された 1,000 以上の Phobos のサンプルの分析によって裏付けられています。2019 年以降のこれらのサンプルは VirusTotal で公開されており、上述したものと同じ公開 RSA キーが使用されています。
Talos が分析した 2019 年以降の Phobos のすべての亜種で使用されている RSA キー
次に、構成ファイルとそれによって有効になる機能の一部を詳しく見ていきます。
Phobos 構成ファイルの復号
Phobos で構成データが使用される仕組みを理解するために、Talos は IDA Pro で悪意のあるコードを分析しました。その結果、IDA Python を使用して構成データを操作し、すべての構成データを一度に復号できるようになったのですが、まずは構成データがバイナリ内でどのように表示されるのかを見てみましょう。IDA Pro にファイルをロードすると、コードによって最初の操作がいくつか実行されることが確認できます。その 1 つが、ペイロードをチェックしメモリにロードするというものです。
エントリポイントのコードのスニペット(メモリ内に Phobos の構成データを設定)
上記のコードを見ると、マルウェアが最初に PE ファイルの最後のセクションにあるデータの CRC32 ハッシュをチェックしていることがわかります。このサンプルでは、セクションの名前は「.cdata」になっていますが、サンプルによっては別の名前が使用されている可能性があります。Talos が確認したサンプルでは「.cdata」と「.sdata」が使用されています。
次に、ヒープに割り当てられたメモリにデータがロードされ、このデータへのポインタを持つ構造がグローバル変数(上の画像の「payoad_struct_addr」という名前の変数)に保存されます。この構造は後で、要求された構成エントリをロードするために、復号関数によってコード全体で使用されます。各エントリには特定のインデックスがあり、最後のコードブロックで示されているように、復号関数にパラメータとして渡されます。
構成データの処理に使用される構造は 48 バイトであり、次のように定義されます。
構成データへのポインタを格納する構造
ヘッダーと実際のデータは、ヒープメモリに割り当てられたさまざまなバッファにロードされ、これらのバッファへのポインタと構成内のエントリの数が構造に保存されます。データの後には、構成の復号に使用される 16 バイトの AES キーが続きます。このキーはバイナリにハードコードされています。
ヘッダーには、構成内の各インデックスの暗号化データを見つけるための情報が含まれています。この構造は 12 バイトであり、次のように定義されます。
構成データのヘッダーエントリの構造
上記のオフセットは、0x00 から始まる暗号化されたデータバッファの先頭を基準としています。インデックスも 0x00 から始まり、各インデックスはその中に含まれるデータのタイプに対して比較的静的です。つまり、所定のインデックスについては、すべてのサンプルに同じタイプの構成データが含まれているということです。
ただし、一部のサンプルではインデックスの内容が少し違っていることが確認されています。Phobos は過去に多くのグループによって使用されてきました。各グループが異なるビルダーや亜種を使用しているため、こうしたバリエーションが見られると考えられます。VirusTotal で入手可能な公開サンプルを分析したところ、その約 88% には 64 の構成エントリがあることが判明しました。少ないもので 40、多いもので 72 のエントリがあるサンプルを確認しています。
コードの分析結果から、他にもオプションが 3 つ存在するらしいということも Talos は推測しています。これらのオプションは、報告先の URL と攻撃者に送り返されるカスタムメッセージの設定に使用されるものと思われます。Talos が分析したサンプルではこれらのオプションは見つかりませんでしたが、処理用のコードはすべてのサンプルに存在します。この機能については、このブログで後ほど詳しく説明します。
復号関数は 2 つのパラメータを受け入れます。1 つは対象エントリへのインデックスで、もう 1 つはエントリに 4 バイトを超えるデータが含まれる場合に使用されるバッファへのポインタです。それ以外の場合、バッファのパラメータはゼロでなければなりません。
ペイロード構造に存在するキーを使用した AES_Init および AES_Decrypt の呼び出しを示す復号関数
このコードは、ヘッダーのバッファをスキャンして、要求されたインデックスに一致するエントリを探します。次に、暗号化されたデータを保存するのに十分なメモリを割り当て、そのスペースにデータをコピーし、「payload_struct_addr + 0x10」にあるキーを使用して AES_Init 関数を呼び出します。このキーはサンプルのデータセクションにハードコードされています。続いて、暗号化されたデータとこの AES オブジェクトをパラメータとする関数 AES_Decrypt が呼び出されます。
IDA Pro を使用した構成の復号の自動化
復号アルゴリズムを理解すると、構成内のすべてのエントリの復号を自動化し、詳細をファイルに出力するのは簡単です。IDA Pro では、Python を使用してアプリケーション内のタスクを自動化できます。そこで、コードを Python で再実装する代わりに、Flare-Emu Python モジュールを使用してマルウェアの AES ルーチンをエミュレートすることにしました。
復号関数に必要なパラメータは 2 つだけで、ほぼ完全に独立しているため、その時点からエミュレーションを開始し、マルウェアがペイロードデータ用に作成する構造と同様の構造を作成することにしました。
eh=flare_emu.EmuHelper() conf_struct=eh.allocEmuMem(0x30) header_data=eh.allocEmuMem(header_size) config_data=eh.allocEmuMem(config_size)
次に、この構造に適切な値を設定します。
eh.writeEmuPtr(conf_struct,header_data) eh.writeEmuPtr(conf_struct+4,config_entries) eh.writeEmuPtr(conf_struct+8,config_data) eh.writeEmuPtr(conf_struct+0xc,config_size) eh.writeEmuMem(conf_struct+0x10,AES_Init_key_struct)
# load buffers eh.writeEmuMem(header_data,eh.getEmuBytes(enc_data_start+0x8, header_size)) eh.writeEmuMem(config_data,eh.getEmuBytes(config_start,config_size)) # write addr of struct back to code eh.writeEmuPtr(eh.analysisHelper.getNameAddr(CFG_STRUCT_NAME), conf_struct)
構造が作成されたら、ヘッダーの各エントリを順に調べてエミュレータスタックを準備し、復号関数から始まるエミュレーションを呼び出すことができます。
if entry_size<=4: buffer=0 else: buffer=eh.allocEmuMem(entry_enc_size) myStack = [0xffffffff, entry_idx, buffer] eh.emulateRange(eh.analysisHelper.getNameAddr(DECRYPT_FN), stack = myStack, skipCalls=False)
復号されたデータは、4 バイト以下の場合は EAX レジスタに、それ以上の場合は割り当てられたバッファに格納されます。実際に確認されたサンプルを分析した結果、次のタイプの構成エントリが見つかりました。
マルウェアの構成インデックス
UAC バイパスの手法
攻撃対象のマシンのファイルをできるだけ多く暗号化するという主な目的を達成するには、昇格された権限でランサムウェアを実行する必要があります。これにより、ディスク上のすべてのファイルにアクセスできるだけでなく、攻撃者の目的を阻む可能性がある重要なシステムサービスを無効にできます。プロセスの権限を昇格させると、通常はユーザーに警告が表示されるので、マルウェアの実行が阻止される可能性があります。このメッセージが表示されないようにするために、多くの悪意のあるプログラムは UAC バイパスやエクスプロイトを使用して、自身のプロセス権限を昇格させます。
Phobos のバイナリには、「compmgmt.msc」の実行中に、.Net プロファイラ DLL のロードプロセスの脆弱性を利用して UAC バイパスを実行するコードが含まれています。この手法は遅くとも 2017 年には文書化されていますが、最新バージョンの Windows 10 でもまだ機能します。
注:マルウェアには UAC をバイパスするコードが含まれており、コードが実行されるとエクスプロイトが機能します。ただし、これは特定のコードブランチに従うように強制的に実行させた場合にのみ発生し、マルウェアがこのコードを能動的に使用する仕組みにはなっていません。マルウェアの構成で特定のパラメータが指定されている場合のみ、この特定の機能を実行するコードパスに到達できるようです。Phobos は通常、攻撃者が必要な情報をすべて抽出できた後に、他のマルウェアと一緒に配布されます。つまり、攻撃者がファイルを暗号化することに決めた時点では UAC コードは不要なので、コードが使用されていない可能性があります。
この方法では、ユーザーが書き込み可能なフォルダに DLL がドロップされ、昇格されたプロセスでも .Net プロファイラがファイルを読み込むように環境変数が変更されます。Phobos の場合、構成ファイルには 2KB の小さな DLL ファイルが格納されており、その中には悪意のあるバイナリで新しいプロセスを作成するコードだけが含まれています。構成には、32 ビットと 64 ビットの両方のファイルが埋め込まれています。
昇格されたプロセスから悪意のあるバイナリを起動するために使用されるコード
DLL は、C:\Users\User\AppData\Local\Temp\1E41F172 のように、マシンのシリアル番号を名前として使用して %TEMP% フォルダに書き込まれます。
構成データに埋め込まれている DLL は完全な PE を表すものではなく、上記の「CALL [EAX]」の直後に存在するインポートテーブルまでのデータしか含んでいません。PE ファイルは構成から抽出され、ディスクに書き込まれる前にメモリに固定されます。マルウェアのバイナリのパスがファイルに書き込まれ(インポートテーブルの直後)、「CreateProcessW」のパラメータの 1 つとしてコードで使用されます。その後、バイト 0xBAADF00D にセクションが配置されると、セクションが終了されます。
メモリに固定される前と後の 64 ビットサンプルの比較図(構成内の PE ファイルは、インポートテーブルの直後に終了)
続いて、このコードは「Elevation:Administrator!new:{3ad05575-8857-4850-9277-11b85bdb8e09}」をパラメータとして使用する ShCreateItemFromParsingName を呼び出し、昇格されたシェルオブジェクトを作成します。このシェルオブジェクトは、後で mmc.exe を使用してコンピュータ管理ツールを実行する前に、.Net 環境の初期化に使用されます。
エクスプロイトが成功すると、マルウェアのバイナリの新しいインスタンスが高い権限で起動されます。
新しいプロセスの整合性が「高」で権限が「フル」に昇格されていることを示すプロセス情報
プロセスツリーにも注目したほうがよいでしょう。MMC.EXE が未知のバイナリを起動することは一般的ではないからです。次に例を示します。
プロセスツリーに表示されている mmc.exe で起動されたランサムウェアのプロセス
Phobos の隠しデバッグファイル機能
構成データで発見された Phobos の隠し機能の 1 つに、バイナリの追加機能を有効にするために使用できるデバッグファイルのサポートがあります。コードの先頭で、Phobos は構成内のインデックス 0x43 にファイル名が存在するかどうかをチェックします。存在する場合は、そのファイルが同じフォルダに存在するかどうかと、有効な引数が含まれているかどうかをチェックします。
デバッグファイルが存在するかどうかをチェック
デバッグファイルが存在する場合、Phobos は各行を解析して有効なコマンドが含まれているかどうかを確認し、コマンドの後にあるフラグと文字列パラメータを含む構造を作成します。8Base グループによる攻撃では、このファイル名は「suppo」ですが、他のグループではデバッグファイルの名前が違っていたり、まったく設定されていなかったりします。
Talos のコード分析によると、次のコマンドをデバッグに使用できます。
- 「C」または「c」:デバッグ文字列をプリントするコンソールを表示します。
- 「L」:ログファイル名を出力します。この名前には、プロセスが昇格されて実行されていることを示す「e-」というプレフィックスが付きます。低い権限のマルウェアが昇格されたプロセスを実行している一般的なプロセスツリーの場合は、「filename」と「e-filename」の 2 つのファイルが作成されます。
- 「M」または「m」:暗号化ループを実行しません。このオプションは悪意のあるアクションを無効にし、マルウェアをコードの最後にジャンプさせます。
- 「n」:バッファにフラグを設定します。
- 「e」:「;」で区切られた値の文字列を受け取り、そのデータへのポインタをバッファ構造に格納します。
- 「s」:バッファにフラグを設定します。
- 「x」:バッファにフラグを設定します。
これらのコマンドの一部はコードの分析から導き出すことができますが、デバッグファイルの実際のサンプルが見つからず分析結果との比較を行っていないため、まだ完全に理解されていないコマンドもあります。
コンソールを表示するオプションがデバッグファイルに存在する場合、通常の実行中にマルウェアによって出力される内容は次のとおりです。
Phobos のデバッグファイル設定によって作成されるデバッグコンソールとログファイル
上の例では、コンソール表示(コマンド「c」)とログファイル(コマンド「L」)を有効にしているので、コンソールに出力されるメッセージを見ることができます。攻撃対象の ID(文字列「[1E41F172-3483]」)とビルド番号「v2.9.1」が表示されています。出力に示されている文字列はすべて構成内に設定としても存在するので、これらのメッセージは各攻撃の実行犯によってカスタマイズされる可能性があります。
Phobos の感染報告機能
攻撃者に新規感染を報告する機能が Phobos にあることは一般的には実証されていませんが、Talos の分析で、報告機能がコードに存在することがわかっています。この機能と、攻撃者が選択したカスタム URL とメッセージの作成を有効にするコードは構成設定に隠されています。
インデックス「0x31」の構成設定は、さまざまな機能が有効かどうかを確認するためにコード全体で使用されるフラグです。報告機能が有効になっている場合、マルウェアはインデックス 0x44、0x45、0x46 からサーバー名、URI パス、カスタムメッセージをそれぞれ抽出しようとします。
報告先の URL が構成内に存在するかどうかをチェックする Phobos のコード
これらのオプションが存在する場合、マルウェアは指定されたサーバーに感染報告を送信しようとします。上記のカスタムメッセージは文字列パラメータであり、本文にタグ「<<ID>> 」が含まれることもあります。このタグは、リクエストを送信する前に攻撃対象の ID に置き換えられます。以下の例に示すように、バイナリから抽出された元のメッセージにはタグが残っており、解析されたメッセージと攻撃対象の ID が HTTP POST 関数にパラメータとして渡されます。
ID を解析した後の HTTP POST リクエストのパラメータを示すコードの抜粋
次の例に示すように、リクエストはほぼヘッダーを使用せずに送信されます。
攻撃者に送り返される POST リクエスト(構成で有効になっている場合)
ただし、これまでに Talos が分析したサンプルでは、この機能は使用されていません。
Phobos バイナリの時間経過に伴うコード変更の分析
8Base グループの攻撃には Phobos が使用された過去の攻撃と似たような特徴があることが知られているため、8Base のサンプルのコードを以前の Phobos 亜種と比較したところ、バイナリレベルでコードを比較してもまったく違いがないことが確認されました。上述した 8Base のサンプル 32a674b59c3f9a45efde48368b4de7e0e76c19e06b2f18afb6638d1a080b2eb3 は、8Base による最近の攻撃(2023 年 6 月から 8 月にかけて確認)で展開された SmokeLoader バイナリから抽出したものです。
Phobos の暗号化に対するブルートフォース攻撃に関する 2023 年 2 月の投稿で、ポーランドのコンピュータ緊急対応チーム(Cert-PL)が調査したサンプルは 2704e269fb5cf9a02070a0ea07d82dc9d87f2cb95e60cb71d6c6d38b01869f66 です。このサンプルは 2020 年に VirusTotal で初めて確認されています。暗号化の仕組みに関する Cert-PL の調査結果には、Talos が分析した 8Base のサンプルと多くの類似点があります。また、コードがまったく変更されておらず、サンプルの機能と基本ブロックも 100% 引き継がれていることが Talos の分析で判明しました。
これら 2 つのバイナリの違いは、最後の PE セクションの構成データだけです。
8Base | Phobos Cert PL | |
構成エントリ | 64 | 64 |
暗号化キー | 0xea73000e61c749e5287a2407e44c8679 | 0x591abb0fe93e56e0d8c8fd2d6019f995 |
ファイル拡張子(IDX 0x4) | .id[<>-3483].[support@rexsdata.pro].8base | .id[<>-2378].[termitoss@inbox.lv].Barak |
デバッグファイル(IDX 0x43) | suppo | egvtethyr576.txt |
拡張子ブロックリスト(IDX 0x7) | 8base;actin;DIKE;Acton;actor;Ac uff;FILE;Acuna;fullz;MMXXII;6y8d ghklp;SHTORM;NURRI;GHOST;F F6OM6;MNX;BACKJOHN;OWN;F S23;2QZ3;top;blackrock;CHCRB O;G- STARS;faust;unknown;STEEL;wo rry;WIN;duck;fopra;unique;acute; adage;make;Adair;MLF;magic;Ad ame;banhu;banjo;Banks;Banta;B arak;Caleb;Cales;Caley;calix;Calle ;Calum;Calvo;deuce;D ever;devil;Devoe;Devon;Devos;dewar;eight;ej ect;eking;Elbie;elbow;elder;phobo s;help;blend;bqux;com;mamba;K ARLOS;DDoS;phoenix;PLUT;karm a;bbc;CAPITAL;WALLET;LKS;tech ;s1g2n3a4l;MURK;makop;ebaka;j ook;LOGAN;FIASKO;GUCCI;decry pt;OOH;Non;grt;LIZARD;FLSCRY PT;SDK;2023;vhdv |
Barak;actin;Acton;actor;Acuff;Ac una;acute;adage;Adair;Adame;ba nhu;banjo;Banks;Banta;Barak;Cal eb;Cales;Caley;calix;Calle;Calum; Calvo;deuce;Dever;devil;D evoe;Devon;Devos;dewar;eight;eject;eki ng;Elbie;elbow;elder;phobos;help; blend;bqux;com;mamba;KARLOS ;DDoS;phoenix;PLUT;karma;bbc; CAPITAL;WALLET; |
同じことが、2020 年以降に見つかった他のサンプルにも当てはまります。8Base のサンプルと 2019 年に作成された Phobos の亜種を比較すると、コードの違いが現れ始めます。Talos は 2019 年 8 月に VirusTotal で最初に確認されたサンプル fc4b14250db7f66107820ecc56026e6be3e8e0eb2d428719156cf1c53ae139c6 を分析しました。分析結果から、現在の 8Base のサンプルと 2019 年のサンプルでは、コードの 89.6% が共有されていることがわかっています。
現在の 8Base のサンプルには、2019 年には存在しなかった関数がいくつかあります。
8Base のサンプルには存在し、2019 年のサンプルには存在しない関数のリスト
古いサンプルには存在しなかったデバッグファイルと感染報告機能が今ではサポートされるようになっています。これらの機能は 2019 年または 2020 年のどこかの時点で Phobos のソースコードに追加されたと思われます。おそらく、Phobos のソースコードの最終更新時でしょう。
Talos が注目したもう 1 つのサンプルは、2019 年に Malwarebytesin が最初に取り上げたものです。このサンプル
(a91491f45b851a07f91ba5a200967921bf796d38677786de51a4a8fe5ddeafd2)は 2019 年 5 月に初めて確認されました。同時期の他のサンプルとは大きく異なっており、47.2% のコードしか共有されていません。
8Base のサンプルと Malwarebytes のブログで取り上げられている 2019 年のサンプルとの比較
このサンプルで確認された主な違いは、最近のサンプルに見られるカスタム暗号コードの代わりに Windows Crypto API が使用されていることです。2019 年のサンプルに存在する関数を見ると、このサンプルにインポートされた Crypto API がわかります。
Malwarebytes が分析した 2019 年のサンプルにインポートされた関数のリスト
これらの API がコード全体を通していくつかの重要な機能で使用されていることが確認されています。以下のコードブロックは、カスタム暗号化ライブラリを使用する 8Base の暗号化/復号関数と、Windows Crypto API を使用する 2019 年のサンプルのコードを示しています。
8Base と 2019 年の Phobos の古いサンプルのファイル暗号化関数を比較した図
構成ファイルの復号に使用される関数にも同様の違いがあり、似たような動作はしますが、異なる暗号 API を使用します。
初期のサンプルに見られる違いは、Phobos は 2019 年に開発段階に入ったものの、それ以降は変わっていないという仮定を裏付けるものです。
「Phobos アフィリエイトの構造と活動について」と題した 2 つ目の投稿では、拡張子ブロックリストで見つかったデータと、これをさまざまな攻撃グループにマッピングする方法のほか、攻撃対象のネットワークに侵入した後のグループの活動についての追加情報をお届けします。
カバレッジ
Cisco Secure Endpoint(旧 AMP for Endpoints)は、この記事で説明したマルウェアの実行を阻止するのに最適です。Cisco Secure Endpoint の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance の Web スキャンは、悪意のある Web サイトへのアクセスを防止し、上述したような攻撃で使用されるマルウェアを検出します。
Cisco Secure Email(旧 E メールセキュリティ)は、攻撃の一環として攻撃者が送りつける不正な電子メールをブロックします。Cisco Secure Email の無料トライアルはこちらからお申し込みください。
Threat Defense Virtual、適応型セキュリティアプライアンス、Meraki MX など、Cisco Secure Firewall(旧次世代ファイアウォールおよび Firepower NGFW)アプライアンスは、この脅威に関連する悪意のあるアクティビティを検出できます。
Cisco Secure Malware Analytics(Threat Grid)は、悪意のあるバイナリを特定し、シスコのすべてのセキュリティ製品に保護機能を組み込みます。
Umbrella(シスコのセキュア インターネット ゲートウェイ(SIG))は、社内ネットワークの内外で悪意のあるドメイン、IP、URL への接続をブロックします。Umbrella の無料トライアルはこちらからお申し込みください。
Cisco Secure Web Appliance(旧 Web セキュリティアプライアンス)は、危険性のあるサイトを自動的にブロックし、ユーザーがアクセスする前に疑わしいサイトを検査します。
特定の環境および脅威データに対する追加の保護機能は、Firewall Management Center から入手できます。
Cisco Duo は、ユーザーに多要素認証を提供し、承認されたユーザーのみがネットワークにアクセスできるようにします。
ClamAV で、次の脅威を検出できます。
Win.Packed.Zusy
Win.Ransomware.8base
Win.Downloader.Generic
Win.Ransomware.Ulise
IOC
この脅威に関連する IOC は、こちらをご覧ください。
本稿は 2023 年 11 月 17 日に Talos Group のブログに投稿された「A deep dive into Phobos ransomware, recently deployed by 8Base group」の抄訳です。