- Cisco Talos はこのほど、2023 年 8 月には始まっていたと思われる攻撃を発見しました。Talos が「SugarGh0st」と名付けた新たなリモートアクセス型トロイの木馬(RAT)を送り込む攻撃です。
- ウズベキスタン外務省と韓国のユーザーが攻撃対象にされていることを示唆する証拠を Talos は確認しました。
- SugarGh0st RAT は Gh0st RAT(10 年以上活動している悪名高いトロイの木馬)を新たにカスタマイズした亜種だと Talos ではほぼ確信しています。C2 から指示が出るリモート管理タスクを実行しやすくするためにコマンドがカスタマイズされているほか、コマンド構造とコード内で使用されている文字列の類似性に基づいて通信プロトコルが変更されています。
- 悪意のある JavaScript が埋め込まれた Windows ショートカットを利用してコンポーネントを送り込み、SugarGh0st のペイロードをドロップして起動する 2 つの感染チェーンが確認されました。
- 1 つの感染チェーンでは、攻撃者が DynamixWrapperX というツールを使用し、悪意のある JavaScript で Windows API の関数呼び出しを有効にして、シェルコードを実行します。
- 攻撃のサンプルで確認されたアーティファクトから、この攻撃を行っているのは中国語話者だと Talos は判断していますが、確信はありません。
ウズベキスタンと韓国への攻撃を行っていると疑われる中国の攻撃者
Talos は、この攻撃で展開された 4 件のサンプルを発見しました。実際に確認したおとり文書の言語、その内容、配布の状況から、ウズベキスタンと韓国のユーザーを攻撃したものと思われます。
サンプルの 1 件は、ウズベキスタン外務省のユーザーに送信されたものです。このサンプルは Windows ショートカットの LNK ファイルが埋め込まれたアーカイブで、開くと「Investment project details.docx」というおとり文書がドロップされます。内容はウズベク語で書かれており、国家行政機関による技術規制の強化に焦点を当てたウズベキスタンの大統領令に関するものでした。おとり文書の内容は、2021 年に複数のウズベキスタンの情報源から公開された内容がもとになっています。最初の攻撃経路は、悪意のある RAR アーカイブファイルが添付された、外務省職員宛のフィッシングメールと思われます。
ウズベク語のおとり文書
ウズベキスタン以外に、韓国が攻撃対象となっている兆候も認められました。Talos は、他にも 3 件の韓国語で書かれたおとり文書を発見しました。Windows ショートカットに埋め込まれた悪意のある JavaScript ファイルによってドロップされたもので、韓国で配布されたと思われます。「Account.pdf」という名前のおとり文書は Microsoft アカウントのセキュリティ通知を偽造したもので、生成されたパスワードを用いてアカウント登録を確認するよう求める内容です。「MakerDAO MKR approaches highest since August.docx」という名前の別のおとり文書では、코인데스크코리아(CoinDesk Korea、ブロックチェーンを扱う韓国のニュースサイト)からコピーした内容が使用されています。3 つ目の「Equipment_Repair_Guide.docx」という名前のおとり文書には、ある組織のコンピュータの保守手順に関する情報が含まれています。韓国が攻撃対象になっているという Talos の判断の裏付けとなる、韓国の IP から発信される C2 ドメインへのリクエストも確認しています。
Talos が収集したサンプルで見つかったおとり文書
Talos の分析では、攻撃者が中国語話者である可能性を示唆するアーティファクトをいくつか確認しています。発見した 2 件のおとりファイルの「上次修改者(最終編集者)」の名前は「浅唱丶低吟」(ささやくようにそっと歌う)と「琴玖辞」(中国の小説の著者名と思われる)ですが、両方とも簡体字中国語です。
おとり文書の作成者と最終編集者の情報
おとり文書のメタデータに加え、この攻撃者は Gh0st RAT の亜種である SugarGh0st を好んで使用しています。Gh0st RAT マルウェアは、中国の攻撃者にとって主力の攻撃手段であり、遅くとも 2008 年から使用されています。また、中国の攻撃者には、ウズベキスタンを攻撃してきた過去があります。さらに、ウズベキスタン外務省への攻撃は、中国が海外で行っている諜報活動の範囲とも合致しています。
SugarGh0st は Gh0st RAT の新しい亜種
Talos は、SugarGh0st と呼んでいる RAT がこの攻撃でペイロードとして送り込まれたことを確認しました。SugarGh0st RAT は Gh0st RAT をカスタマイズした亜種だと Talos ではほぼ確信しています。Gh0st RAT は红狼小组(C.Rufus セキュリティチーム)という中国のグループによって開発され、そのソースコードが 2008 年に公開されました。このソースコードの公開によって、攻撃者が簡単にソースコードを入手し、悪意を満たすために手直しできるようになりました。脅威環境には Gh0st RAT の亜種が複数あり、監視やスパイ活動を可能にするツールとして、依然として中国語を話す攻撃者の多くに好まれています。
SugarGh0st は、元の Gh0st マルウェアと比べると、偵察機能がいくつかカスタマイズされています。具体的には、特定のオープン データベース コネクティビティ(ODBC)のレジストリキーの検索、特定のファイル拡張子と関数名が付いたライブラリファイルのロード、C2 から指示が出るリモート管理タスクを実行しやすくするためのコマンドのカスタマイズ、早期検出の回避です。C2 の通信プロトコルも変更されています。Gh0st RAT の初期の亜種では、ネットワーク パケット ヘッダーの最初の 5 バイトがマジックバイトとして予約済みなのに対し、SugarGh0st RAT では 8 バイトが予約されています。その他の機能、つまり、感染したマシンを完全にリモート制御する機能、リアルタイムやオフラインのキーロギングを提供する機能、感染したマシンの Web カメラへ接続する機能、感染したホストで他の任意のバイナリをダウンロードして実行する機能などは、Gh0st RAT の初期の亜種と一致しています。
多段階の感染チェーン
被害者を狙った今回の攻撃では、2 つの異なる感染チェーンが採用されたことを Talos は確認しています。そのうちの 1 つの感染チェーンでは、Gh0st RAT をカスタマイズした亜種である SugarGh0st RAT のペイロードを復号して実行します。もう 1 つの感染チェーンでは、DynamicWrapperX ローダーを利用してシェルコードを挿入、実行し、そのシェルコードが SugarGh0st RAT を復号して実行します。
1 つ目の感染チェーン
1 つ目の感染チェーンは、Windows ショートカットファイルを含む悪意のある RAR ファイルから始まります。ファイルの拡張子は二重拡張子になっています。被害者がショートカットファイルを開くとコマンドが実行され、埋め込まれた JavaScript ファイルがドロップされて実行されます。その結果、おとり文書、SugarGh0st の暗号化されたペイロード、DLL ローダー、バッチスクリプトがドロップされます。その後、この JavaScript がバッチスクリプトを実行し、ドロップした DLL ローダーを、コピーした rundll32 を用いてサイドローディングすることによって実行します。DLL ローダーにより、SugarGh0st の暗号化されたペイロードがメモリ内で復号され、メモリから直接実行されます。
悪意のある JavaScript ドロッパーが埋め込まれたショートカットファイル
この攻撃で発見された Windows ショートカットファイルには JavaScript が埋め込まれており、それをドロップして実行するためのコマンドライン引数が指定されています。被害者が LNK ファイルを開くとこのコマンドライン引数が実行されるようになっており、「var onm=」で始まる文字列の JavaScript を特定してロードします。これにより JavaScript ドロッパーが開始され、%temp% の場所に JavaScript をドロップします。その後、ドロップされた JavaScript が、LoLBin(living-off-the-land binary、環境寄生型バイナリ)の cscript を使用して実行されます。
悪意のある LNK ファイルのサンプル
JavaScript ドロッパー
この JavaScript ドロッパーは高度に難読化されたスクリプトであり、この攻撃の他のコンポーネントのデータ(base64 でエンコードされたデータ)が埋め込まれています。この JavaScript は埋め込まれたファイル(バッチスクリプト、カスタマイズされた DLL ローダー、SugarGh0st の暗号化されたペイロード、おとり文書)を復号し、%TEMP% フォルダにドロップします。まず、おとり文書を開いて正当なアクションに見せかけ、その後、正規の実行ファイルである rundll32 を「Windows\SysWow64」フォルダから %TEMP% フォルダにコピーします。最後に、%TEMP% の場所からバッチスクリプトローダーを実行して、カスタマイズされた DLL ローダーを実行します。この JavaScript はその後、自分自身をファイルシステムから削除しました。
JavaScript ドロッパー
バッチスクリプトローダー
この事例では、バッチスクリプトは「ctfmon.bat」という名前であり、ドロップ済みのカスタマイズされた DLL ローダーを実行するためのコマンドを含んでいます。このバッチスクリプトは、実行されると rundll32.exe を使用して DLL ローダーをサイドローディングし、通常は COM(コンポーネント オブジェクト モデル)の DLL によって使用される DllUnregisterServer という機能を実行します。
バッチスクリプトローダー
DLL ローダーが SugarGh0st のペイロードを復号してメモリから直接ロード
カスタマイズされた DLL ローダー「MSADOCG.DLL」(Microsoft の ActiveX Data Objects(ADO)技術に関連する DLL の名前)は C++ で記述された 32 ビットの DLL で、COM オブジェクトコンポーネントとして実装されています。このローダーには圧縮されたコードが含まれており、カスタムの解凍コードを使用して解凍されます。この DLL が実行されると、SugarGh0st のドロップ済みの暗号化されたペイロードファイル「DPLAY.LIB」を %TEMP% の場所から読み取るためのコードが解凍され、復号されてメモリ内で実行されます。
コードを解凍するためのスタブコード
暗号化されたペイロードをロードする関数
2 つ目の感染チェーン
1 つ目の感染チェーンと同様に、この攻撃も悪意のある Windows ショートカットファイル(おとり文書に見せかけたもの)を含む RAR アーカイブファイルから始まります。Windows ショートカットファイルに埋め込まれているコマンドが実行されると、%TEMP% の場所に JavaScript ドロッパーファイルがドロップされ cscript を使用して実行されます。この攻撃では、JavaScript がおとり文書、正規の DynamicWrapperX、暗号化された SugarGh0st をドロップします。JavaScript は正規の DLL を使用して埋め込まれたシェルコードの実行を可能にし、SugarGh0st のペイロードを実行します。
JavaScript が DynamicWrapperX を使用してシェルコードを実行し、SugarGh0st を起動
この感染チェーンで使用される JavaScript も高度に難読化されており、この攻撃の他のコンポーネントのデータ(シェルコードなど、base64 でエンコードされたデータ)が埋め込まれています。JavaScript が実行されると、暗号化された SugarGh0st、「libeay32.dll」という DLL、おとり文書がドロップされます。JavaScript はおとり文書を開き、wscript.exe を %TEMP% フォルダに dllhost.exe としてコピーします。この dllhost.exe を使用して、ドロップされた JavaScript を再び実行し、Run レジストリキー内に「CTFMON.exe」というレジストリサブキーを作成して永続性を確立します。
レジストリキー | HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run |
サブキー | CTFMON.exe |
値 | “cmd /c start C:\Users\user\AppData\Local\Temp\dllhost.exe C:\Users\user\AppData\Local\Temp\~204158968.js” |
ファイル「libeay32.dll」は、Yuri Popov が開発した DynamicWrapperX というツールです(元の名前は「dynwrapx.dll」)。このツールは、スクリプト(JScript、VBScript など)の Windows API 関数呼び出しを有効にする ActiveX コンポーネントです。攻撃者はこれを使用して JavaScript ドロッパーを介してシェルコードを実行できます。ただし、その前に regsvr.exe を実行し、このコンポーネントをインストールする必要があります。
C:\Windows\system32\regsvr32 /i /s C:\Users\ADMINI~1\AppData\Local\Temp\libeay32.dll |
DynamicWrapperX の DLL は、Software\Classes\DynamicWrapperX レジストリキー内にレジストリサブキー CLSID(値は「89565275-A714-4a43-912E-978B935EDCCC」)を作成することにより、被害を受けたマシンにメンバー関数を登録します。ActiveX コンポーネントを含む JavaScript が、DynamixWrapperX の DLL を使用して埋め込まれたシェルコードを実行します。
このシェルコードには、Kernel32.dll からプロセスインジェクションに必要な関数をロードしてマッピングするための API ハッシュと命令が含まれています。他に User32.dll と shlwapi.dll の 2 つの DLL もロードします。次に、暗号化された SugarGh0st の「libeay32.lib」を %TEMP% の場所からロードして復号し、それを dllhost.exe のプロセスに割り当てられたメモリ空間に直接ロードします。
暗号化された SugarGh0st をロードして復号するシェルコード
SugarGh0st の分析
Cisco Talos が分析した SugarGh0st のサンプルは C++ で記述された 32 ビットの DLL(ダイナミック リンク ライブラリ)で、2023 年 8 月 23 日にコンパイルされていました。SugarGh0st は実行の初期段階で、ハードコーディングされている C2 のドメインを使用して被害を受けたマシンに感染マーカーとしてミューテックスを作成し、キーロギング関数を起動します。このキーロガーモジュールは、%Program Files% の場所に「WinRAR」フォルダを作成し、キーロガーファイルである「WinLog.txt」を書き込みます。
SugarGh0st のキーロギング関数
SugarGh0st は、「WSAStartup」関数、ハードコーディングされている C2 のドメインとポートを使用して C2 サーバーへの接続を確立します。Talos は、login[.]drive-google-com[.]tk と account[.]drive-google-com[.]tk という 2 つの C2 ドメインがこの攻撃で使用されたことを発見しました。
SugarGh0st の C2 と通信する関数
起動後、SugarGh0st は 10 秒ごとに C2 との接続確立を試みます。成功すると、最初に送信されるパケット(ハートビートとして機能)は常に同じ 8 バイトのデータ「0x000011A40100」で構成されます。ハートビートの送信が成功した後、SugarGh0st は次の情報を含むバッファデータを送信します。
- コンピュータ名
- オペレーティングシステムのバージョン
- 被害を受けたマシンのルートドライブや他のドライブの情報
- レジストリキー「HKEY_LOCAL_MACHINE\Software\ODBC\H」(存在する場合)
- 攻撃コード 1(年月)と攻撃コード 2(Talos のサンプルでは「デフォルト」)
- Windows のバージョン番号
- ルートドライブのボリュームシリアル番号
SugarGh0st から C2 に送信されたサンプルのパケット
SugarGh0st はフル機能を備えたバックドアで、ほとんどのリモート制御機能を実行できます。リバースシェルを起動し、C2 から文字列として送信される任意のコマンドをコマンドシェルを使用して実行することができます。
リバースシェル関数
SugarGh0st には、被害を受けたマシンのホスト名、ファイルシステム、論理ドライブ、オペレーティングシステムの情報を収集する機能があります。被害を受けたマシンの実行中のプロセス情報にアクセスすることが可能なので、C2 サーバーの指示どおりにプロセス情報にアクセスして終了させることによって環境を制御できます。
さらに、実行中のサービスの構成ファイルにアクセスすることによってマシンのサービスマネージャを管理することもできるので、サービスを開始、終了、削除することが可能です。
サービスを操作する関数
SugarGh0st は、被害を受けたマシンの現在のデスクトップのスクリーンショットを撮ることができ、マルチウィンドウに切り替えることも可能です。被害を受けたマシンのカメラにアクセスして画面をキャプチャし、キャプチャしたデータを圧縮してから C2 サーバーに送信する機能があります。また、被害を受けたマシンでさまざまなファイル操作(ファイルの検索、コピー、移動、削除など)を実行できます。
さらに、ログに記録された悪意のある操作を隠して検出を回避するために、マシンのアプリケーション、セキュリティ、システムのイベントログを消去することができます。
イベントログを消去する関数
SugarGh0st は、16 進数の 4 バイトのコマンドとそれに付属するデータを用いて C2 サーバーから指示されたとおりに以下のリモート制御機能を実行します(一覧には上述の機能も記載しています)。
コマンド | アクション |
0x20000001 | プロセスの権限を「SeShutdownPrivilege」に調整し、ホストを強制的にシャットダウンする |
0x20000002 | プロセスの権限を「SeShutdownPrivilege」に調整し、ホストを強制的にリブートする |
0x20000003 | プロセスの権限を「SeShutdownPrivilege」に調整し、プロセスを強制的に終了する |
0x20000004 | イベントログを消去する |
0x20000005 | レジストリキー HKEY_LOCAL_MACHINE\Software\ODBC\H を作成する |
0x20000011 | デフォルトのウィンドウでキーを押下する |
0x20000012 | デフォルトのウィンドウでキーを解放する |
0x20000013 | マウスカーソルの位置を設定する |
0x20000014 | マウスの左ボタンをクリックする |
0x20000015 | マウスの左ボタンを解放する |
0x20000016 | マウスの左ボタンをダブルクリックする |
0x20000017 | マウスの右ボタンをクリックする |
0x20000018 | マウスの右ボタンを解放する |
0x20000019 | マウスの左ボタンをダブルクリックする |
0x21000002 | 被害を受けたマシンの論理ドライブの情報を取得する |
0x21000003 | 被害を受けたマシンのファイルシステムのファイルを検索する |
0x21000004 | 被害を受けたマシンのファイルシステムのファイルを削除する |
0x21000005 | %TEMP% の場所にファイルを移動する |
0x21000006 | 任意のシェルコマンドを実行する |
0x21000007 | 被害を受けたマシンのファイルをコピーする |
0x21000008 | 被害を受けたマシンのファイルを移動する |
0x21000009 | C2 サーバーにファイルを送信する |
0x2100000A | Windows ソケットにデータを送信する |
0x2100000B | C2 サーバーからファイルを受信する |
0x22000001 | C2 サーバーにスクリーンショットを送信する |
0x24000001 | ファイル %ProgramFiles%/WinRAR/~temp.dat(0x62 の XOR でエンコードされている)を読み取る |
0x24000002 | ファイル %ProgramFiles%/WinRAR/~temp.dat を削除する |
0x23000000 | C2 サーバーへのリバースシェルアクセスを提供する |
0x25000000 | プロセス情報を取得し、プロセスを終了する |
0x25000001 | プロセス情報を列挙する |
0x25000002 | プロセスを終了する |
0x25000003 | 被害を受けたマシンのサービスマネージャにアクセスする |
0x25000004 | 実行中のサービスの構成ファイルにアクセスする |
0x25000005 | サービスを開始する |
0x25000006 | サービスを終了し、削除する |
0x25000010 | ウィンドウ操作を実行する |
0x25000011 | ウィンドウの一覧を取得する |
0x25000012 | ウィンドウのメッセージを取得する |
0x28000000 | ウィンドウをキャプチャし、コマンドに基づいて一連のウィンドウ操作を実行する(SendMessage の API を使用) |
0x28000002 | 「%PROGRAMFILES%\\Common Files\\DESIGNER」の下のOLE ファイルを検索し、起動する |
カバレッジ
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 は、ユーザーに多要素認証を提供し、承認されたユーザーのみがネットワークにアクセスできるようにします。
オープンソースの Snort サブスクライバルールセットをお使いであれば、Snort.org で購入可能な最新のルールパックをダウンロードすることで、最新状態を維持できます。この脅威の Snort SID は 62647 です。
ClamAV で、次の脅威を検出できます。
Win.Trojan.SugarGh0stRAT-10014937-0
Win.Tool.DynamicWrapperX-10014938-0
Txt.Loader.SugarGh0st_Bat-10014939-0
Win.Trojan.SugarGh0stRAT-10014940-0
Lnk.Dropper.SugarGh0stRAT-10014941-0
Js.Trojan.SugarGh0stRAT-10014942-1
Win.Loader.Ramnit-10014943-1
Win.Backdoor.SugarGh0stRAT-10014944-0
Orbital クエリ
Cisco Secure Endpoint ユーザーは、Orbital Advanced Search を使用して複雑な OSquery を実行し、エンドポイントが特定の脅威に感染しているかどうかを確認できます。この脅威に関連する特定の OSquery については、次のリンクをご参照ください。
IOC(侵入の痕跡)
この脅威に関連する IOC は、こちらをご覧ください。
本稿は 2023 年 11 月 30 日に Talos Group のブログに投稿された「New SugarGh0st RAT targets Uzbekistan government and South Korea」の抄訳です。