Ivanti Connect Secureに設置されたマルウェアDslogdRAT
以前、Ivanti Connect Secureの脆弱性を利用して設置されたマルウェアSPAWNCHIMERAについて紹介しましたが、SPAWNCHIMERAとは別のマルウェアも確認されています。今回は、2024年12月ごろに国内の組織に対する当時のゼロデイ脆弱性CVE-2025-0282を使った攻撃によって設置されたWebシェルとマルウェアDslogdRATについて解説します。
設置されたWebシェルの機能
Perlで記述されたWebシェルの一部を図1に示します。本Perlスクリプトは、CGIとして実行され、受信したHTTPリクエストのCookieヘッダーを取得し、DSAUTOKEN=の値がaf95380019083db5と一致する場合、リクエストパラメーターdataで指定された任意のコマンドをsystem関数によって実行するシンプルなWebシェルです。攻撃者はこのWebシェルにアクセスし、コマンドを実行することで、次に解説するDslogdRATなどのマルウェアを実行したと考えられます。
DslogdRATの概要
DslogdRATの動作フローを図2に示します。DslogdRATが実行すると、本体のプロセスでは1つ目の子プロセスを作成し、動作を終了します。その作成された子プロセスにてコンフィグのデコードを行い、2つ目の子プロセスを作成します。1つ目の子プロセスはSleepが含まれたループのルーチンに入るため、終了しません。作成された2つ目の子プロセスにDslogdRATの主要な機能が含まれており、次に示す機能があります。
- コンフィグデータに基づいてC2サーバーとの通信を開始する
- ワーカースレッドを立ち上げ、通信に使用するソケット情報をスレッドへ受け渡す
ワーカースレッドによってC2サーバーへのデータ送受信、各種コマンド実行などの処理が行われます。なお、スレッドの作成などはpthreadライブラリを使用して実装されています。
DslogdRATのコンフィグデータ
DslogdRATのコンフィグデータはエンコードされた状態で検体内にハードコードされており、0x63を鍵として、1バイトごとにXORにてデコードされます。そのコンフィグの構造をAppendix Aの表1に、デコードしたコンフィグデータを表2にそれぞれ示します。
デコードしたコンフィグデータから、DslogdRATは8時から20時まで動作し、それ以外はsleepする設定になっていました。これは業務時間内に通信を行うことで発見されにくくする狙いがあると考えられます。
DslogdRATの通信方式とコマンド実行
DslogdRATはC2サーバーとのデータのやり取りをソケット通信によって行います。通信するデータの中身は図3に示す関数によってエンコードされます。エンコード・デコード関数は0x01から0x07まで7バイトずつXORするだけの単純なものでした。なお、プロキシ経由の通信もサポートしています。
C2サーバーへの初期通信の復号例を図4に示します。初期通信では端末の基本的な情報をC2サーバーへと送信します。なお、送信されるデータは次のフォーマットにしたがって送信されます。
0x00: ff ff ff ff +0x04: 0f 00 +0x06: Data length +0x0A: Encoded data
DslogdRATが実行可能なコマンドは、次に示すように、内部ネットワークへの侵害の起点となるような機能が確認できます。詳しいコマンド内容はAppendix Bに記載していますのでご確認ください。
- ファイルのアップロード・ダウンロード
- シェルコマンドの実行
- プロキシ機能
SPAWNSNARE
その他、設置されたマルウェアとしてCISAおよびGoogle社によって2025年4月に報告[1][2]されたSPAWNSNAREも同一の端末上で確認されています。SPAWNSNAREの詳しい挙動はGoogle社の記事[1]をご参照ください。
おわりに
DslogdRATを使う攻撃がUNC5221によるSPAWNファミリーを使う攻撃と同じキャンペーン[1]であるか、現時点では不明です。確認した通信先やハッシュ値、ファイルパスについては、AppendixC、Dにそれぞれ記載していますのでご確認ください。JPCERT/CCではIvanti Connect Secureに関連する脆弱性(CVE-2025-22457)の注意喚起を行っていますが、Ivanti Connect Secureを狙った攻撃は今後も継続して行われることが予想されます。引き続きこれらの攻撃に注意が必要です。
インシデントレスポンスグループ 増渕 維摩
参考情報
[1] Google
Suspected China-Nexus Threat Actor Actively Exploiting Critical Ivanti Connect Secure Vulnerability (CVE-2025-22457)
https://cloud.google.com/blog/topics/threat-intelligence/china-nexus-exploiting-critical-ivanti-vulnerability
[2] CISA
MAR-25993211-r1.v1 Ivanti Connect Secure (RESURGE)
https://www.cisa.gov/news-events/analysis-reports/ar25-087a
Appendix A:コンフィグ
Offset | Description |
---|---|
0x0 | ConfigTag |
0x4 | Listen mode flag |
0x8 | C2 IP |
0x108 | C2 Port |
0x10C | Sleep time |
0x110 | Timeout value |
0x114 | Shell filepath |
0x214 | String used in shell command |
0x314 | String used in thread |
0x414 | String used in node name |
0x514 | Proxy server |
0x614 | Proxy user |
0x714 | Proxy password |
0x814 | Proxy port |
0x818 | Lower hour limit |
0x81C | Upper hour limit |
0x820 | Enable source port settings(Default port: 3039) |
0x824 | Used in setsockopt |
0x828 | Source port |
0x82C | Enable sleep time |
0x830 | Enable sleep time |
Description | Content |
---|---|
ConfigTag | 95 82 e3 0e |
Listen mode flag | 0 |
C2 IP | 3.112.192[.]119 |
C2 Port | 443 |
Sleep time | 1250 |
Timeout value | 30 |
Shell filepath | /bin/sh |
String used in shell command | [kworker/0:02] |
String used in thread | /home/bin/dslogd |
String used in node name | null |
Proxy server | 127.0.0.1 |
Proxy user | admin |
Proxy password | admin |
Proxy port | 65500 |
Lower hour limit | 8 |
Upper hour limit | 20 |
Enable source port settings(Default port: 3039) | 0 |
Used in setsockopt | 240 |
Source port | 12345 |
Enable sleep time | 1 |
Enable sleep time | 1 |
Appendix B:コマンド
Value | Contents |
---|---|
0x4 | File download |
0x8 | Set upload file |
0xA | File upload |
0xC | Shell |
0xD | Get shell data |
0xE | Exit shell |
0x11 | Set sleep time |
0x13 | Run proxy |
0x16 | Get proxy data |
0x17 | Stop proxy |
0x18 | Stop all proxy |
0x28 | Forwarding |
0x29 | Stop fowarding |
Appendix C:通信
- DslogdRATの通信: 3.112.192[.]119
Appendix D:マルウェアのハッシュ値
File | Path | Hash |
---|---|---|
DslogdRAT | /home/bin/dslogd | 1dd64c00f061425d484dd67b359ad99df533aa430632c55fa7e7617b55dab6a8 |
Webshell | /home/webserver/htdocs/dana-na/cc/ccupdate.cgi | f48857263991eea1880de0f62b3d1d37101c2e7739dcd8629b24260d08850f9c |
SPAWNSNARE | /bin/dsmain | b1221000f43734436ec8022caaa34b133f4581ca3ae8eccd8d57ea62573f301d |