Compact
true
担当領域:サイバーセキュリティインテリジェンス
CyIOCサービスにてCTIアナリストとして従事。

本記事は、OSINTを用いたC2(Command and Control)サーバハンティングの実例として、Shodanで観測された管理パネル「Stealer Panel」を起点に、関連するサーバや検体を分析したものです。調査を進めた結果、これらは単一の攻撃基盤ではなく、3つの異なる攻撃活動に分類されると考えています。

本記事では、個々のマルウェアの詳細解説よりも、1つの気になる観測から出発して、検体やインフラの特徴を手がかりに関連ホストへ「ピボット」し、それらを慎重に切り分けていく調査プロセスをご紹介したいと考えています。

本レポートで扱う3つの攻撃活動
攻撃活動A:Django製の Stealer Panel 群。配布・収集API・管理画面が役割分担された情報窃取基盤。
攻撃活動B:Hidden0wn / EsqueleSquad 系。Node.js製の窃取・RAT基盤で、2023年の攻撃者名が検体内に残存。
攻撃活動C:SheetRAT / NonEuclid RAT 系。C2サーバの管理パネル名称は「Stealer Panel」だが、実態はRAT運用基盤。
1
1
これら3つは、共通の公開ツール(ChromElevator)や「Stealer Panel」という一般的な名称を使う点で繋がりがありますが、検体の実装・ハッシュ・送信方式・パネルの構成などが異なります。
これらを同一の攻撃者として束ねる訳ではなく、「似ているツールを使う別々の攻撃活動」として切り分けて扱います。
1
1

1. 本稿の目的:ハンティングとクラスタリング

本稿では、OSINT調査手法の1つであるC2サーバハンティングの一例を解説します。C2サーバハンティングとは、攻撃者が攻撃に使用するために準備している公開サーバを、能動的な侵入行為を伴わずに、Shodanなどの検索エンジン型サービスや受動的な脅威情報から事前に検出する取り組みを指します。

攻撃インフラを準備段階で捕捉できれば、次のような対応が可能となります。

本稿でもう1つ重視するのが 「クラスタリング」 です。ピボットで関連しそうなホストが増えていくと、つい1つの大きな攻撃基盤として描きたくなります。しかし、表面的に似ているだけのものを安易に束ねると、誤った全体像や誤帰属につながります。本稿では、何をもって「同じ」とし、何をもって「別」とするかを意識しながら、観測を独立した攻撃活動へ切り分けていきます。

2. 起点:Stealer Panel の発見

調査の起点は、Shodanで確認された管理パネル「Stealer Panel」です。次のクエリで該当ホストを列挙できます。

title:"Stealer Panel"
1
1
図1 Shodanで確認した Stealer Panel の検索結果[1]
https://www.shodan.io/search?query=title%3A%22Stealer+Panel%22
50
図2 Stealer Panel のログイン画面
50

該当したホストのうち、調査時点でアクセス可能だったものは限られていました。攻撃インフラは短命であることが多いため、観測できた時点で速やかに記録・保全することが重要です。ここでは、そのうち中身を確認できたホストを起点に調査を進めます。

3. 攻撃活動A:Django Stealer Panel 群

最初に観測内容を具体的に確認できたのは 167.99.146[.]109 です。このホストは、Shodanの観測情報から、次のようなサービスを公開している(または公開していた)ことが分かりました。

ポート
1
1
観測内容
1
2
Column3
1
1
役割
1
1
1975/tcp
1
1
Directory listing(SimpleHTTP/0.6 Python/3.12.3)
1
2
Column3
1
1
検体・ペイロードの配布
1
1
8000/tcp
Login — Stealer Panel(WSGIServer/0.2 CPython)
2
Column3
管理画面(Django)
8080/tcp
Login — Stealer Panel
2
Column3
管理画面(Django・別ポート)
443/tcp
マルウェアが POST /api/receive/
2
Column3
窃取データの収集API
図3 Shodanで確認した 167.99.146[.]109 のオープンディレクトリ(1975/tcp)[2]
https://www.shodan.io/host/167.99.146.109
50

記載の通り、中にはオープンディレクトリになっていたサービスも存在していました。

このオープンディレクトリには、Shodanで確認する限り次のようなファイルが並んでいました。単なるブラウザ情報窃取ツールにとどまらず、シェルコード的なペイロードやWebDAV連携スクリプトも含まれています。

VirusTotalで関連検体を確認すると、これらのファイルは実際にマルウェアのコールバック先として参照されていました。収集APIへの送信も含め、配布・収集・管理が同一ホスト上で完結する構成です。

図4 VirusTotalで確認した検体のコールバック先(167.99.146[.]109:1975)[3]
https://www.virustotal.com/gui/file/1958f58afa200959029990e27bb5fcb180065e3e6eba99430e0b7a59d6d9c428/relations
50

3.1 同一パネルを持つ別ホスト

Shodanで同じパネルのフィンガープリント(title hash・DOM hashなど)を手がかりに探すと、178.128.173[.]9:443 が同一のDjangoアプリケーションを稼働させていることが分かりました。これらのフィンガープリントが一致することから、同一のパネルキットを展開したホストである確度は高いと評価します。

3.2 検体内部から得た予備インフラ

武器化された chromelevator.exeを解析すると、稼働中のホストに加えて 174.138.33[.]139 が、同じ3ポート構成(443, 8000, 8080)と同じAPIパス /api/receive/ とともに埋め込まれていました。旧C2・予備C2・開発環境のいずれかとみています。

4. 検体を起点とした横展開

クラスターAが「配布ディレクトリ+公開ツール」で構成されていることから、同じような公開ディレクトリで検体を配る別のホストがあるのではないかと考え、配布物の1つであるchromelevator.exeをファイル名で横断検索しました。

html:chromelevator.exe
1
1
図5 Shodanで確認した chromelevator.exe を公開するホスト[4]
https://www.virustotal.com/gui/file/1958f58afa200959029990e27bb5fcb180065e3e6eba99430e0b7a59d6d9c428/relations
50

複数のホストが該当しましたが、その中に、まだ調査していなかった 163.245.206[.]209 が含まれていました。このホストは調査時点でもマルウェアを公開していたため、次の対象として掘り下げます。

ChromElevatorは公開されているツールであり、複数の攻撃キャンペーンで再利用されています。したがって、「chromelevator.exe を配っている」という一点だけでは、これらのホストを同じ攻撃者とは判断できません。
実際、後述のとおり 163.245.206[.]209 は攻撃活動Aとは実装・ハッシュ・送信方式・パネルが異なり、別と評価しています。ここではあくまで次の調査対象を見つけるための「ピボットの足がかり」として扱います。
1
1

5. 攻撃活動B:Hidden0wn / EsqueleSquad

163.245.206[.]209 は、:6666 にPython SimpleHTTPの公開ディレクトリを持ち、autoplay.exe・chromelevator.exe・encryptor.exe・hack-browser-data.exe・Windows_Get_Update.exe などを配布していました。

図6 公開継続していたオープンディレクトリのファイル一覧(163.245.206[.]209:6666)
50
図7 VirusTotalで確認した検体のコールバック先(163.245.206[.]209:6666)[5]
https://socket.dev/blog/skeleton-squad-npm
50

5.1 検体内の EsqueleSquad / Hidden0wn 文字列

これらの検体を静的に解析したところ、内部に次の特徴的な文字列が残存していました。

$kull | EsqueleSquad | Hidden0wn
1
1

「EsqueleSquad」は、2023年にPyPIやnpmを介して不正パッケージ経由でマルウェアを配布した攻撃者の名称(別名 Skeleton Squad)です。[6][7][8]

関連ドメイン hidden0wn[.]xyz は2026-03-15に取得されています。以上から、当該攻撃者による新しい活動、あるいは名称の模倣の可能性が考えられます。EsqueleSquad は広く知られた攻撃者とは言い難く、模倣の動機は相対的に小さいと考えられるため、模倣の可能性はやや低いと評価しますが、断定はできません。

5.2 Hidden0wn パネル

:3000 では「Hidden0wn」というタイトルのExpress製HTTPサーバが稼働していました。調査中、このパネルには複数のセッションが表示されました。

図8 Shodanで確認した Hidden0wn のHTTPサーバ(3000/tcp、Express)[9]
https://www.shodan.io/host/163.245.206.209
50
図9 hidden0wn[.]xyz のパネル画面(初観測時 Sessions: 0)
50

パネルには、シェル実行・プロセスやファイルの確認・任意コマンド送信といったリモート操作機能と思われる要素が確認されました。ただし、UI操作で外部へのリクエスト送信が発生しないことから、現状ではモック(見せかけの実装)である可能性が高いと考えます。とはいえ、今後は実際のマルウェア配布とC2運用に転用される可能性があります。

図10 Hidden0wn のパネル画面(Sessions: 5、接続元は一部マスク)
50

5.3 セッションIPの地理的分布

表示されたセッションが実際の感染端末である可能性を考慮し、接続IP(5件)を国ベースで確認したところ、5 IPのうち3つがロシアでした。

図11 セッションとして表示された接続IPの国別分布
50
現時点での解釈(両論併記・留保)
実IPであれば:攻撃対象(被害者)を示している可能性があります。
モックであれば:攻撃者の趣向、場合によっては所属国などを示唆している可能性があります。
いずれにせよサンプル数が少なく、現時点でここから確定的な結論を導くことはできません。
1
1

5.4 調査中のインフラ閉鎖

調査を進める中で、攻撃者が自身の運用ミスに気づいたとみられ、オープンディレクトリは閉鎖されました。準備段階のインフラが露出している期間は限られるため、露出を検知した時点での迅速な観測・保全がこの種のハンティングでは特に重要です。

図12 調査中に閉鎖され、到達不能となったオープンディレクトリ
50

5.5 攻撃活動Aとの違い

発見した攻撃活動AとBの違いを考えると、chromelevator.exe という同じ名前のツールを配る点では共通しますが、実体は明確に異なります。

項目
1
1
攻撃活動A(167)
1
2
Column3
1
1
攻撃活動B(163)
1
2
Column5
1
1
ChromElevator
1
1
独自の武器化ビルド
1
2
Column3
1
1
別ハッシュのビルド
1
2
Column5
1
1
外部へのデータ送信
1
1
ツール内から HTTP POST
1
2
Column3
1
1
Node.jsオーケストレータがZIP化し FTP送信
1
2
Column5
1
1
管理画面
Django Stealer Panel
2
Column3
Express Hidden0wn
2
Column5
内部ブランド
(なし)
2
Column3
同じサーバで公開しているWindows_Get_Update内に以下あり
EsqueleSquad / Hidden0wn
2
Column5

評価: 両者は同じ公開技術をそれぞれ別々に武器化した攻撃活動とみるのが妥当です。公開しているファイル名の一致だけでは同一の攻撃者とは言えません。

6. 攻撃活動C:SheetRAT / NonEuclid RAT

SheetRAT / NonEuclid RAT(2.26.99[.]25)
1
1

Stealer Panel を探す過程では、名称は同じでも実態の異なるホストも見つかりました。2.26.99[.]25 は、urlscan.ioの保存結果で「Stealer Panel」を表示していましたが、関連する検体の挙動を確認すると、情報窃取専用パネルというより RAT(遠隔操作型マルウェア)の運用基盤 でした。

このホストの証明書CNは fragment[.]sbs で、直接IPと当該ドメインの保存スクリーンショットは一致していました。

6.1 関連マルウェアの一致

VirusTotal上で、少なくとも4件の関連PEが 2.26.99[.]25:9797 にTCP接続していました。これらは次を共有しています。

これらのファイル名・タスク名・永続化方式は、Triageが SheetRAT(別名NonEuclid RAT) として公開している挙動と一致し、またimphashも一致していました。ファミリー判定の確度は高いと評価します。

攻撃活動Cは、Express/Windows/.NET/:9797 という構成で、Django/Linux/HTTP APIのA、Node.js/Hidden0wnのBのいずれとも一致しません。
「Stealer Panel」というパネルのタイトルは一致するものの、別物であると考えます。
1
1

7. 各攻撃活動の関係評価

以上の観測を、攻撃活動間の関係として整理します。CTIの原則に従い、観測事実と推定を区別し、断定を避けています。

関係
1
1
評価
1
2
Column3
1
1
確度
1
1
主な根拠
1
2
Column6
1
1
167 ↔ 178
1
1
同一パネル実装
1
2
Column3
1
1
高
1
1
title/DOM/Serverの各hash・ヘッダ・本文長が一致
1
2
Column6
1
1
167 ↔ 174
同一設定内の現行・予備インフラ
2
Column3
高
検体内に両IP・同一ポート・同一 /api/receive/
2
Column6
167 ↔ 163
1
1
公開ツール再利用以上は未立証
1
2
Column3
1
1
低
1
1
ビルド・imphash・送信方式・パネルが相違
1
2
Column6
1
1
2.26.99[.]25 ↔ 他
別系統
2
Column3
高
OS・実装・パネル技術・C2ポートが相違
2
Column6

8. まとめ

本事例では、Shodanで見つけた1つの「Stealer Panel」を起点に、検体やインフラの特徴を手がかりにピボットを重ねることで、少なくとも3つの独立した攻撃活動を発見しました。同時に、表面的に似ているものも、詳細に確認すると違いが出ることから、帰属を考える際には慎重な切り分けが重要であることも示しています。

公開サーバを継続的に調査することは、攻撃活動が実行される前にそれを検出する有効な手法の1つです。悪性サーバを早期に検出してブロックすることで、予防的な対策が可能となります。

本レポートが、組織のセキュリティをより堅固にするための一助になれば幸いです。

付録A:IOC 一覧

防御的な検知・ハンティング目的でご利用ください。ネットワークインジケータはデファング表記としています。

A.1 ネットワークIOC

分類
1
1
インジケータ
1
2
Column3
1
1
備考
1
2
Column5
1
1
A
167.99.146[.]109:1975 / :443 / :8000 / :8080
2
Column3
配布・収集API・管理画面
2
Column5
A
178.128.173[.]9:443
2
Column3
同一Djangoパネル(兄弟ホスト)
4
Column5
A
174.138.33[.]139:443
2
Column3
解析検体からのアクセス先
2
Column5
B
163.245.206[.]209:6666 / :3000
2
Column3
配布ディレクトリ・Hidden0wnパネル
2
Column5
B
hidden0wn[.]xyz
2
Column3
2026-03-15取得
2
Column5
C
2.26.99[.]25:9797
2
Column3
SheetRAT / NonEuclid RAT のC2
2
Column5
C
fragment[.]sbs
2
Column3
同一オリジンの証明書CN
2
Column5

A.2 ハッシュ(SHA-256)

分類
1
1
ファイル名
1
1
SHA-256
1
2
Column4
1
1
A
chromelevator.exe
947bd10c0d49d78c902ac01f2d85ee6ca982c1e4b767296ac7b968872d9c48f0
2
Column4
A
hbd.bin
5a9c0c03def8ae191f14e319ec136e48d2b51a78ba02accc367000d31e3a3cad
2
Column4
A
q8h31ali9.exe
0b2fe271e7fd3a5bd7296b896f78650b11dbd1f73e0ed173322c873e415bbfd0
2
Column4
A
9s6qcsdk.exe
1958f58afa200959029990e27bb5fcb180065e3e6eba99430e0b7a59d6d9c428
2
Column4
C
xdwdSearch.exe, SystemInformerなどの
名称のファイル
078904a2c5769e8a5a01635a122287e8fbb5b0e586c9ba65ab0d71e50596d377
14c2d48751b5c0475a03457edcfdabea1860f07af3210e293be0a5283cb554ef
3f3792bd665e94961087621a2f1c0ded1b47970b0bf33f9c8ce69e9912515f79
9486e101efa0b00ae1013f78baa78cc00337097c00aeb0797035fc0fb1f35295
2
Column4
C
autoplay.exe
baf0f2f6d5c01b8281f8674417373e6ea97534ea6f66dc28486e99dfa3e6a74c
2
Column4
C
Windows_Get_Update.exe
b24c32f41e580b1ea8456de0d0bb2310c3980c82f3dbfa36f9bbfdb850f4d993
2
Column4
C
chromelevator.exe
66d186f2288d877a47278d96860018bbfdc6a3fb44acb9cace1dd0e4bee9c5e9
2
Column4
C
encryptor.exe
6c9b0cd1d20320f8950e6527ecfb2dfc1a2dbc9044afecc7f4758d1b408869dc
2
Column4
C
hack-browser-data.exe
3e628fd15004062a5010589e7d4f76c9ad4cb905522a2cf5c49eca04ac137fc5
2
Column4

参考(2023年 EsqueleSquad 検体):

参考文献

[1] Shodan - StealerPanelを検索
https://www.shodan.io/search?query=title%3A%22Stealer+Panel%22

[2] Shodan - 167.99.146[.]109
https://www.shodan.io/host/167.99.146.109

[3] VirusTotal - 167.99.146[.]109へアクセスする検体情報
https://www.virustotal.com/gui/file/1958f58afa200959029990e27bb5fcb180065e3e6eba99430e0b7a59d6d9c428/relations

[4] Shodan - chromelevator.exeをホストしているサーバの発見
https://www.virustotal.com/gui/file/1958f58afa200959029990e27bb5fcb180065e3e6eba99430e0b7a59d6d9c428/relations

[5] VirusTotal - autoplayfull.exe の検体情報
https://www.virustotal.com/gui/file/fe1a09913268d56b3d54972b54a1557292e95206842cdae27a6ac255a21a79bc/relations

[6] Checkmarx: The “Skeleton Squad” — 5,000超の悪性PyPIパッケージ
https://zero.checkmarx.com/the-skeleton-squad-tracing-the-origins-and-scope-of-5000-malicious-packages-on-pypi-7516c16e4da9

[7] Socket: The “Skeleton Squad” is now targeting NPM
https://socket.dev/blog/skeleton-squad-npm

[8] Sonatype: Attacker Floods PyPI with 450+ malicious packages
https://www.sonatype.com/blog/attacker-floods-pypi-with-450-malicious-packages-that-drop-windows-trojan-via-dropbox

[9] Shodan - 163.245.206[.]209
https://www.shodan.io/host/163.245.206.209

執筆者プロフィール

original
50

大芝 大(おおしば ひろし)
担当領域:サイバーセキュリティインテリジェンス
専門分野:サイバーセキュリティインテリジェンス

CyIOCサービスにてCTIアナリストとして従事。