コンテンツに移動
脅威インテリジェンス

COLDRIVER が西側諸国の標的や NGO からのドキュメント窃盗に新しいマルウェアを使用

2025年5月20日
Google Threat Intelligence Group

Google Threat Intelligence

Visibility and context on the threats that matter most.

Learn more

※この投稿は米国時間 2025 年 5 月 8 日に、Google Cloud blog に投稿されたものの抄訳です。

Google Threat Intelligence グループ(GTIG)は、ロシア政府が支援する脅威グループ COLDRIVER(別名 UNC4057、Star Blizzard、Callisto など)につながる新しいマルウェア、LOSTKEYS を特定しました。LOSTKEYS は、拡張子とディレクトリのハードコードされたリストからファイルを盗み出し、システム情報と実行中のプロセスを攻撃者に送信します。2025 年 1 月、3 月、4 月に観測された LOSTKEYS は、NATO 加盟国の政府、非政府組織(NGO)、元諜報部員や外交官など、人目を引く標的に対する認証情報フィッシングで主に知られるグループ、COLDRIVER のツールセットにおける新たな展開を示しています。GTIG は、2024 年の SPICA マルウェアなど、長年にわたって COLDRIVER を追跡してきました。

COLDRIVER は通常、個人のメールアドレスや NGO のアドレスを通じて、重要な人物を標的にしています。認証情報を盗み、標的のアカウントにアクセスした後、メールを抜き取り、不正使用されたアカウントから連絡先リストを盗むのが特徴です。場合によっては、標的デバイスにマルウェアを配信し、システム上のファイルにアクセスしようとすることもあります。

COLDRIVER の最近のキャンペーンの標的には、西側諸国の政府や軍の現職や元職の顧問に加えて、ジャーナリスト、シンクタンク、NGO が含まれていました。また、ウクライナとつながりのある個人も引き続き標的になっています。COLDRIVER の活動の最大の目的は、ロシアの戦略的利益に貢献するインテリジェンスの収集であると Google は考えています。少数の事例において、このグループは、英国当局者NGO を標的としたハック アンド リーク キャンペーンと関連付けられています。

リスクにさらされているユーザーを保護するため、Google は COLDRIVER のような深刻な脅威アクターに関する調査を利用して、Google のプロダクトの安全性とセキュリティを向上させています。標的になり得るユーザーの方には、Google の高度な保護機能プログラムに登録して、Chrome でセーフ ブラウジング保護強化機能を有効にし、すべてのデバイスを常に最新の状態に維持することをおすすめします。

ステージ 1 - 始まりは偽の CAPTCHA

LOSTKEYS は、複数ステップの感染チェーンの最後に配信されます。この感染チェーンは、偽の CAPTCHA が用意されているおとりウェブサイトから始まります。CAPTCHA に「合格」すると、PowerShell がユーザーのクリップボードにコピーされ、Windows の「実行」プロンプトで PowerShell の実行が促されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/coldriver-fig1.max-700x700.png

貼り付けられた最初のステージの PowerShell が第 2 ステージを取得して実行します。複数の観測事例において、第 2 ステージは 165.227.148[.]68 から取得されていました。

ソーシャル エンジニアリングによって PowerShell コマンドをコピー、貼り付け、実行するよう標的を誘導し、マルウェアを拡散させる脅威アクターは COLDRIVER だけではありません。この手法は一般に「ClickFix」と呼ばれています。APT 攻撃や金銭目的の攻撃アクターもこの手法を使用していることが複数確認されており、この手法は広くされています。ユーザーは、ブラウザを終了してデバイスでコマンドを実行するよう促すサイトに遭遇した場合、注意する必要があります。企業ポリシーでは、最小権限を適用し、ユーザーがスクリプトを実行できないようデフォルトで設定する必要があります。

ステージ 2 - デバイス回避

第 2 ステージでは、デバイスのディスプレイ解像度の MD5 ハッシュを計算し、MD5 が 3 つの特定の値のいずれかである場合は実行を停止し、そうでない場合は第 3 ステージを取得します。このステップは、VM での実行を回避するために行われていると考えられます。このチェーンの各観測事例では、それぞれ異なる固有識別子が使用されています。この識別子は、次のステージを取得するリクエストに含まれる必要があるものです。また、観測されたすべてのケースで、第 3 ステージは前のステージと同じホストから取得されています。

ステージ 3 - 最終ペイロードの取得

第 3 ステージは Base64 エンコードされた blob であり、これはさらなる PowerShell にデコードされます。このステージでは、最終ペイロードを取得してデコードします。これを行うため、他のステージと同じホストからさらに 2 つのファイルを引き出しますが、この場合も感染チェーンごとに異なる固有識別子を使用します。

1 つ目は Visual Basic Script(VBS)ファイルであり、2 つ目のファイルのデコードを担当するため「デコーダ」と呼ばれています。デコード プロセスでは、感染チェーンごとに固有の 2 つのキーが使用されます。固有のキーのうち 1 つはデコーダが持ち、2 つ目はステージ 3 に格納されています。これらのキーは、エンコードされた blob の代入暗号で使用され、感染チェーンごとに固有です。最終ペイロードをデコードする Python スクリプトは次のとおりです。

# Args: encoded_file Ah90pE3b 4z7Klx1V

import base64
import sys

if len(sys.argv) != 4:
    print("Usage: decode.py file key1 key2")
    sys.exit(1)

if len(sys.argv[2]) != len(sys.argv[3]):
    print("Keys must be the same length")
    sys.exit(1)

with open(sys.argv[1], 'r') as f:
    data = f.read()

x = sys.argv[2]
y = sys.argv[3]
for i in range(len(x)):
    data = data.replace(x[i], '!').replace(y[i], x[i]).replace('!', y[i])

with open(sys.argv[1] + '.out', 'wb') as f:
    f.write(base64.b64decode(data))

最終ペイロード(LOSTKEYS)

最終的な結果は、LOSTKEYS と呼ばれる VBS で、これは拡張子とディレクトリのハードコードされたリストからファイルを盗み出すと同時に、システム情報と実行中のプロセスを攻撃者に送信するマルウェアです。COLDRIVER の典型的な動作は、認証情報を盗み、それを使用して標的からメールや連絡先を盗むことですが、以前報告したように、標的システムのドキュメントにアクセスする場合は、SPICA と呼ばれるマルウェアをデプロイして標的を選択します。LOSTKEYS は同様の目標を達成することを目的としていますが、かなり限られた事例でのみデプロイされています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/coldriver-fig2.max-2100x2100.png

2023 年 12 月のサンプルとの関連性

この活動を調査するなか、2023 年 12 月まで遡る 2 つのサンプルが新たに見つかりました。このハッシュについては「セキュリティ侵害インジケーター」セクションをご覧ください。いずれの場合も、サンプルは最終的に LOSTKEYS を実行しますが、ここで説明した実行チェーンとは明らかに異なります。サンプルは、ソフトウェア パッケージ Maltego への関連を装った Portable Executable(PE)ファイルです。

2023 年 12 月のサンプルが COLDRIVER と関連しているのか、それとも別のデベロッパーまたは活動のマルウェアが 2025 年 1 月以降の活動に再利用されたのか、現時点では不明です。

コミュニティの保護

脅威アクターに対抗するための取り組みの一環として、Google は研究から得た結果を活かして、Google のプロダクトの安全性とセキュリティを向上させています。特定された悪意のあるウェブサイト、ドメイン、ファイルはすべて、さらなる悪用からユーザーを保護するためにセーフ ブラウジングに追加されます。Google はさらに、標的となっている Gmail と Workspace のユーザーに対して、政府が支援する攻撃者に関するアラートを送信してその活動を通知しています。その中で、標的となる可能性のあるお客様に、Chrome のセーフ ブラウジング保護強化機能を有効にし、すべてのデバイスが最新の状態に保たれていることを確認するようおすすめしています。

Google は、調査結果をセキュリティ コミュニティと共有して意識向上を図るとともに、そのような活動の標的となった可能性のある企業や個人とも共有するよう取り組んでいます。こうした戦術と手法に対する理解が深まることで、脅威ハンティング能力が向上し、業界全体でユーザーの保護が強化されることを願っています。

この投稿に、セキュリティ侵害インジケーター(IOC)と YARA ルールを掲載します。これらは GTI コレクションとルールパックとしても利用できます。

YARA ルール

rule LOSTKEYS__Strings {
  meta:
    author = "Google Threat Intelligence"
    description = "wscript that steals documents and becaons system 
information out to a hardcoded address"
    hash = "28a0596b9c62b7b7aca9cac2a07b067109f27d327581a60e8cb4fab92f8f4fa9"
  strings:
    $rep0 = "my_str = replace(my_str,a1,\"!\" )"
    $rep1 = "my_str = replace(my_str,b1 ,a1 )"
    $rep2 = "my_str = replace(my_str,\"!\" ,b1 )"

    $mid0 = "a1 = Mid(ch_a,ina+1,1)"
    $mid1 = "b1 = Mid(ch_b,ina+1,1)"

    $req0 = "ReqStr = base64encode( z & \";\" & 
ws.ExpandEnvironmentStrings(\"%COMPUTERNAME%\") & \";\" & 
ws.ExpandEnvironmentStrings(\"%USERNAME%\") & \";\" & 
fso.GetDrive(\"C:\\\").SerialNumber)"
    $req1 = "ReqStr = Chain(ReqStr,\"=+/\",\",-_\")"

    $cap0 = "CapIN \"systeminfo > \"\"\" & TmpF & \"\"\"\", 1, True"
    $cap1 = "CapIN \"ipconfig /all >>  \"\"\" & TmpF & \"\"\"\", 1, True"
    $cap2 = "CapIN \"net view >>  \"\"\" & TmpF & \"\"\"\", 1, True"
    $cap3 = "CapIN \"tasklist >>  \"\"\" & TmpF & \"\"\"\", 1, True"
  condition:
    all of ($rep*) or all of ($mid*) or all of ($req*) or all of ($cap*)
}

セキュリティ侵害インジケーター

IOC

Notes

13f7599c94b9d4b028ce02397717a128
2a46f07b9d3e2f8f2b3213fa8884b029

ステージ 1 - 偽の CAPTCHA ページ、PowerShell をクリップボードに読み込む

4c7accba35edd646584bb5a40ab78f96
3de45e5fc816e62022cd7ab1b01dae9c

ステージ 2: デバイス回避とステージ 3 のローダ

6b85d707c23d68f9518e757cc97adb20
adc8accb33d0d68faf1d8d56d7840816

ステージ 3: 最終ペイロードを取得してデコード、キー「Ah90pE3b」を含む

3233668d2e4a80b17e6357177b53539d
f659e55e06ba49777d0d5171f27565dd

デコーダ スクリプト、キー「4z7Klx1V」を含む

6bc411d562456079a8f1e38f3473c33a
de73b08c7518861699e9863540b64f9a

最終ペイロード、エンコード版

28a0596b9c62b7b7aca9cac2a07b0671
09f27d327581a60e8cb4fab92f8f4fa9

最終ペイロード、デコード版

165.227.148[.]68

C2

cloudmediaportal[.]com

C2

b55cdce773bc77ee46b503dbd9430828
cc0f518b94289fbfa70b5fbb02ab1847

2023 年 12 月の LOSTKEYS を実行するバイナリ

02ce477a07681ee1671c7164c9cc847b
01c2e1cd50e709f7e861eaab89c69b6f

2023 年 12 月の LOSTKEYS を実行するバイナリ

8af28bb7e8e2f663d4b797bf3ddbee7f
0a33f637a33df9b31fbb4c1ce71b2fee

2023 年 12 月の LOSTKEYS

njala[.]dev

2023 年 12 月の C2

80.66.88[.]67

2023 年 12 月の C2
-Google Threat Intelligence グループ、執筆者: Wesley Shields
投稿先