SecurityHeroblog

同じ保冷バッグ、惣菜九つの容器はすべて中身を入れ替えてあった

9月27日、五日前に記録しておいたマルウェア配布アドレスが再びファイルを送り出しました。先頭のインストールスクリプトは8月21日から37日目、1ビットも変わっていません。後に続いた実行ファイル九つはすべて初めて見るファイルで、うち三つはサイズがバイト単位まで同じなのに中身だけが違っていました。

惣菜の定期配達を受けたことがありますか? 週に一度、玄関前に保冷バッグが置かれます。バッグは毎週同じです。色も同じで、ジッパーの取っ手についた店の名札も同じです。変わるのは中に入っている惣菜です。先週はいりこ炒めで、今週は煮しめかもしれません。

昨日、私たちのサーバーの前にもこんなバッグが一つ置かれました。ところがこのバッグはすでに二度見たバッグでした。8月21日に初めて見て、五日前の9月22日にもう一度見ました。バッグはそのときと糸一本も違いませんでした。中に入った惣菜の容器は六つから九つに増えました。そして九つすべてが新しく詰め直されたものでした。

今日はこのバッグを一つずつ開けてみます。

まず、私たちのサーバーはわざと戸を開けておいた家です

事実 私たちはハニーポットを運用しています。ハニーポットはわざと隙だらけにしておき、誰が入ってきて何をするのかを見守るおとりサーバーです。ですから以下の話は実際の被害ではなく観察記録です。サーバーは二台です。一台目(センサー01)は戸が実際に開きます。二台目(センサー02)は誰が戸を叩いたかだけを記録します。

事実 昨日バッグを持ってきたのは ATK-9D3922 です。私たちが付けた別称です。出発地 IP は 108.59.x.x と伏せて記します。この別称は私たちの記録に初めて出てきました。Telnet で入ってきました。Telnet は遠くにある機械に文字で命令を送る古い遠隔接続方式です。やり取りされる内容は暗号化されません。最近は主にルーターや CCTV のような小さな機器に残っています。ポートは2223番で、ログインに成功しました。Telnet なので接続プログラムの標識(フィンガープリント)は残りません。

47秒、バッグ一つを開けるのにかかった時間

事実 午後4時11分7秒に入ってきて47.12秒で出ていきました。その間に命令を11個打ちました。4.3秒に一行の割合です。ファイルも11個受け取りました。やはり4.3秒に一つずつです。私たちの分類器はこのセッションの行動に三つの名前を付けました。ファイルダウンロード → 実行権限付与 → ダウンロード後の実行の順です。「実行権限付与」は受け取ったファイルをプログラムとして動かせるように許可する段階です。

事実 記録がどれだけ密かを、私たちは completeness(記録の密度)というスコアで付けます。このセッションは46点で昨日の1位でした。画面録画も残りました。ただし録画内容自体は私たちの材料にありません。

事実 受け取った11個は三種類です。

  • 保冷バッグ一つ — kla.sh。シェルスクリプトです。シェルスクリプトは命令を何行かひとつのファイルにまとめたものです。実行すると書かれた命令が順に動きます。サイズは3,013バイトです。A4一枚ほどの文字数です。
  • 惣菜の容器九つ — 実行ファイルです。Linux で使う ELF という形式のプログラムです。九つを合わせると1,725,652バイト、約1.7メガバイトです。携帯電話の写真一枚ほどのサイズです。
  • メモ一枚 — 9バイトの文字ファイルです。英字九文字分です。

推定 こうした攻撃では先頭のスクリプトが通常バッグの役割をします。後に続く実行ファイルを持ってきて、一つずつ開けさせるわけです。ただし kla.sh の中に何が書かれていたかは私たちの材料にありません。これは似た構造に照らした解釈です。

食べる人が分からないから、九種類

事実 コンピューターの頭脳である CPU には何種類もあります。CPU が違えばプログラムもその CPU に合わせて別々に作らないと動きません。惣菜で言えば食べる人に合わせた献立です。赤ちゃんには離乳食を、おばあさんには柔らかいお粥を出さなければならないのと同じです。昨日降ってきた九つの容器は CPU の種類がすべて違いました。真ん中の欄を見てください。

ファイル名 どの CPU 用か サイズ 家のスプーンが必要か
px86 Intel 80386 (x86) 133,292バイト いいえ (静的リンク)
pmips MIPS-I · ビッグエンディアン 244,836バイト いいえ (静的リンク)
pmpsl MIPS-I · リトルエンディアン 248,932バイト いいえ (静的リンク)
parm ARM 183,488バイト いいえ (静的リンク)
parm5 ARM 83,344バイト はい (動的リンク)
parm6 ARM EABI4 199,324バイト いいえ (静的リンク)
parm7 ARM EABI4 259,684バイト いいえ (静的リンク)
pppc PowerPC · ビッグエンディアン 179,536バイト いいえ (静的リンク)
pm68k Motorola 68020 (m68k) · ビッグエンディアン 193,216バイト いいえ (静的リンク)

事実 x86、MIPS、ARM、PowerPC、m68k まで五系統です。ARM は四着、MIPS は二着です。エンディアンは CPU が数字を前から読むか後ろから読むかの違いです。同じ MIPS でも読む方向が違えば別の惣菜が必要です。

事実 右の欄の静的リンクは必要な部品をファイルの中に全部入れておいた状態です。惣菜の容器の中にスプーンまで一緒に入れて送ったのと同じです。受け取る家にスプーンがなくても食べられます。九つのうち八つがこれです。parm5 一つだけが動的リンクです。受け取る機器に /lib/ld-uClibc.so.0 という部品があらかじめなければ動きません。家にあるスプーンを出さないと食べられない惣菜というわけです。

推定 バッグを送った側は私たちのサーバーにどの CPU が入っているか分からなかったのでしょう。受け取る家に誰が住んでいるか分からないので、献立を九種類全部入れたのです。そしてこの構成は一般的なコンピューターよりもルーターや CCTV のような小さな機器に合う側です。そうした機器をボットネットに引き込もうとする構成と符合します。ボットネットは持ち主の知らないうちに遠隔で操られる機械の群れです。

バッグは37日目そのまま、惣菜はすべて新しく

事実 ファイル11個のうち10個はすべて同じアドレスから受け取りました。hxxp://176[.]65[.]139[.]196/bins/ です。五日前の9月22日の記事に記しておいた、まさにそのアドレスです。つまり同じ惣菜店です。

事実 ファイルごとにハッシュという値があります。ファイルの内容全体から計算した固有の番号です。一文字違うだけで全く違う値が出ます。惣菜で言えば容器の中を撮った精密な写真です。ごま一粒動かしても別の写真になります。五日前と昨日の写真を並べてみました。一番右の欄を見てください。

ファイル 9月22日 9月27日 (昨日) 変わったもの
kla.sh (バッグ) 3,013バイト · bb36568c… 3,013バイト · bb36568c… なし (8/21 とも同じ)
px86 133,292バイト · 2461a317… 133,292バイト · 98c6780a… サイズ同じ · 写真だけ違う
parm5 83,344バイト · 13e3e131… 83,344バイト · a273cd0b… サイズ同じ · 写真だけ違う
parm6 199,324バイト · 7aa4efe5… 199,324バイト · 62a434f7… サイズ同じ · 写真だけ違う
pmips 244,740バイト 244,836バイト 96バイト増加 · 写真違う
pmpsl 248,836バイト 248,932バイト 96バイト増加 · 写真違う
parm 182,976バイト 183,488バイト 512バイト増加 · 写真違う
parm7 · pppc · pm68k (なかった) 新たに登場 このアドレスで初めて見る名前

事実 バッグ kla.sh は8月21日から昨日まで37日間1ビットも変わりませんでした。逆に惣菜九つの容器の写真はすべて初めて見る値です。アーカイブ30日分(8/16~9/22)を全部探してもありません。名前が同じ六つの容器も、どれも詰め直されていました。96バイトはショートメッセージ一通ほどのサイズです。それだけしか増えていない容器も写真は完全に変わりました。

重さまで同じ惣菜三つの容器

事実 上の表で最もおかしい行は二行目から四行目です。px86、parm5、parm6 の三つはサイズがバイト単位まで五日前と同じです。ところが写真(ハッシュ)は違います。秤に載せればグラムまで同じなのに、蓋を開けて撮った写真は別物の惣菜の容器三つ、というわけです。

推定 同じ名前で同じサイズなのにハッシュが違うなら、可能性が一つ浮かびます。ファイルの長さはそのままにして内側の内容の一部だけを変えて作り直した可能性があります。容器のサイズはそのままにして惣菜だけ少し変えて詰めたように。しかしファイルの内容が私たちの材料にありません。ですから何が変わったのかは言えません。

レシピのメモが付いたまま来た容器一つ

事実 新たに追加された三つの容器のうち parm7 は九つの中で最も大きいです(259,684バイト)。そして九つの中で唯一デバッグ情報を消さないまま来ました。デバッグ情報はプログラムを作った人が誤りを直すときに見るために残しておく説明のメモです。通常は出す前に取り外します(stripped)。pppc、pm68k は取り外した状態でした。parm7 はレシピのメモを容器に貼ったまま配達されたわけです。

事実 同じ名前の惣菜が別の店からも来ました。ATK-60335A という別の訪問者が hxxp://64[.]89[.]160[.]48:80/bins/parm7 から60,088バイトの ARM 実行ファイルを受け取っていきました。私たちの記録になかったアドレスで、なかったハッシュ(40b497bc…)です。サイズは昨日の主役の parm7 の4分の1にもなりません。このファイルには「no section header」(目次なし)という表示が付いていました。

推定 「目次なし」は圧縮でぐるぐる包んだ実行ファイルによく見られる姿です。だとすればサイズが小さいことも説明がつきます。しかし今日の材料には圧縮の有無を知らせる欄がありません。ですから確定しません。二つの parm7 が互いにどんな関係なのかも分かりません。

惣菜の名前はすでに知っていた名前だった

事実 私たちは以前 UPX で圧縮されたマルウェアを解いたことがあります。UPX は実行ファイルを包んでかさを減らすツールです。包んだ状態では外側にアドレスが一つも見えません。解いて初めて出てきたファイル名が12個あります。すべて 31[.]77[.]227[.]121/bins/ 以下の名前です。

parm · parm5 · parm6 · parm64 · parm7 · pm68k · pmips · pmpsl · pppc · psh4 · pspc · x86_64

事実 昨日の九つの容器のうち八つの名前がこのリストと文字まで同じです。重ならないのは px86 一つです。五日前は六つのうち五つが同じでした。リストにだけあってまだ出ていない名前は parm64 · psh4 · pspc · x86_64 の四つです。

推定 あらかじめ解いて名札の規則を知っておいたから見分けられました。店のアドレスが違うのに同じ名前の付け方だということを。外側だけ見ていたなら「初めて見るファイル九個」としか記されなかったでしょう。

事実 ここで線を二つ引きます。第一に、昨日のアドレスはセッションで**そのまま見えました。**圧縮を解いて得たものではありません。解いた経験が与えたのはアドレスではなく名前の規則です。第二に、**名前の規則が同じだというのは同じ系統の公開された作成ツールを使ったという意味にすぎません。**同じ人や同じ組織だという意味ではありません。同じミールキットを使うからといって同じ食堂ではないのですから。

写真のリストで防げただろうか

推定 こう考えてみましょう。五日前に「この写真と同じ惣菜は受け取らない」という写真のリストを作っておきました。ハッシュで作った遮断リストがまさにこの方式です。昨日入ってきた11個のうちこのリストに引っかかるのは何個でしょうか? **バッグ(kla.sh)と9バイトのメモ、二つだけです。**惣菜九つの容器は一つも引っかかりません。全部詰め直したからです。

推定 逆に**「この店から来るバッグは受け取らない」**という規則だったらどうでしょうか? アドレスが記録された10個がすべて引っかかります。写真は五日で九枚すべてが変わりました。店のアドレスは37日目そのままでした。

時間順に並べると

昨日一台目のサーバーで起きたことを時間順に並べるとこうです。16:11 の三行に注目してください。入ってから出るまで1分もかかりませんでした。

  1. 事実 ATK-BDB53E(160.119.x.x) Telnet ログイン成功。15.66秒間に命令7個 · ダウンロード2件。検体は hxxp://160[.]119[.]66[.]206/bins/kla.sh(3,241B · 39be6853…)と net.x86_64(192,328B · 2cebccdc…)で、9/20 · 9/22 と同じハッシュ。新しいものはない
  2. 事実 主題セッション開始。ATK-9D3922(108.59.x.x) Telnet ログイン成功。アーカイブになかった別称。Telnet なので接続プログラムの標識が空文字列だ
  3. 事実 47.12秒間に命令11個 · ダウンロード11件。意図3個(ファイルダウンロード · 実行権限付与 · ダウンロード後の実行)。記録の密度46で今日最高。画面録画あり(内容は含まれない)。この別称が配達者として記された検体は kla.sh 1 + ELF 9 + 9バイトテキスト 1 = 11 でダウンロード数と合う
  4. 事実 hxxp://176[.]65[.]139[.]196/bins/kla.sh · 3,013B Bourne-Again シェルスクリプト · bb36568c…。8/21 · 9/22 と URL · サイズ · ハッシュがすべて同じ。8/21 から37日目、変わっていない
  5. 事実 px86 133,292B(2461a317… → 98c6780a…) · parm5 83,344B(13e3e131… → a273cd0b…) · parm6 199,324B(7aa4efe5… → 62a434f7…)はサイズが同じでハッシュだけが違う。pmips 244,836B(+96B) · pmpsl 248,932B(+96B) · parm 183,488B(+512B)はサイズもハッシュも変わった
  6. 事実 parm7 259,684B(ELF32 LSB ARM EABI4 · 静的 · with debug_info, not stripped) · pppc 179,536B(ELF32 MSB PowerPC · 静的 · stripped) · pm68k 193,216B(ELF32 MSB m68k 68020 · 静的 · stripped)。ELF 9個の合計 1,725,652B。動的リンクは parm5(/lib/ld-uClibc.so.0)一つ、デバッグ情報が残っているのは parm7 一つ
  7. 事実 9バイトの ASCII テキスト(0dc95fb4… · URL 未記録)。今日5回 · 出発地3か所(ATK-9D3922 · ATK-EA3D92 · ATK-377ED5)。9/17 · 9/20 · 9/22 にも別の別称たちが残した同じハッシュ
  8. 推定 ファイルの長さを変えない範囲内で内部の内容の一部だけを差し替えて再ビルドした可能性がある。検体の内容がないため何が変わったのかは言えない
  9. 推定 9/22 のハッシュで作った遮断リストはこのセッションのファイル11個のうち kla.sh と9バイトテキストの2個だけを捕らえ、実行ファイル9個は一つも捕らえられない。ホスト · パス基準の規則だったなら URL が記録された10個をすべて捕らえる
  10. 事実 ATK-EC7309(160.250.x.x) Telnet。40.68秒 · 命令17個 · 意図5個(偵察—システム · ファイルダウンロード · 実行権限付与 · ダウンロード後の実行 · SSH 鍵の植え込み)。ダウンロード0 · 記録の密度17
  11. 事実 ATK-CA5936(130.12.x.x) SSH。4.11秒 · 命令1個 · 意図5個 · ダウンロード2件(54B テキスト 00b6f15c… · 399B OpenSSH 秘密鍵 43728fbf…)。フィンガープリント 16443846… · 接続プログラム 'SSH-2.0-Go'。別称 · フィンガープリント · 検体ハッシュが 8/19 以降繰り返し記録されたものと同じ
  12. 事実 ATK-015624(2.29.x.x) Telnet。61.79秒 · 命令17個。意図5個が ATK-EC7309 と同じ組み合わせで、ダウンロード0 · 記録の密度17 も同じ。両方の別称ともアーカイブにない
  13. 事実 ATK-60335A が hxxp://64[.]89[.]160[.]48:80/bins/parm7 から 60,088B ELF(ARM EABI4 · no section header)を受け取った。ホスト · ハッシュ(40b497bc…) · 別称すべてアーカイブにない。この別称は主要セッション一覧にない
  14. 事実 セッション 5,617 · 固有出発地 203 · ログイン試行 5,233 · 命令 9,747 · 画面録画 5,079。SSH 4,989(ポート2222) · Telnet 628(ポート2223)。9/22(セッション829 · 命令790)比でセッション約6.8倍 · 命令約12.3倍。意図分類の合計 6,682 で命令数と 3,065 の差
  15. 事実 389バイトの公開鍵(a8460f44…)出発地21か所21回。345gs5662d34 の組み合わせ22か所。libssh_0.9.6 フィンガープリント(f555226d…)今日22か所 · 累計520か所。9/22 の 24 · 23 · 24 と似た水準
  16. 事実 セッション 54,243 · 固有出発地 433。VNC 53,038(97.8% · 出発地211) · RDP 567(113) · SMB 181(74) · MSSQL 30(10) · LDAP 19(10) · ADB 408。02 検体0件。9/22 に11,698件だった RDP が567件に約95%減った

事実 主題セッション以外にも、昨日ログインに成功した主要セッションが四つありました。主題に選ばなかった理由を記しておきます。ATK-BDB53E はファイル二つが9月20日・22日と同じでした。ATK-CA5936 は8月19日から繰り返された3~4秒のセッションで、ファイルもそのときと同じです。ATK-EC7309 と ATK-015624 は行動の名前が五つで最も多かったです。しかし受け取っていったファイルが0個なので、覗いてみる物がありません。

昨日出てきた値 — 書き留めるもの

防御に使えるように値をそのまま移します。**値を押すとコピーされます。**アドレスは誤って接続されないよう変形(デファング)してあります。http の代わりに hxxp、点の代わりに [.] を使った形です。そのままにして使ってください。**二行目から十行目までが昨日初めて見た写真(ハッシュ)**です。

sha256
bb36568c1f0a4f4d604cc67f8692506291eb1ffd217a451ffc846c94daa09440kla.sh · 3,013バイトの Bash スクリプト · 出所 ATK-9D3922 · 8/21 · 9/22 と同じハッシュで37日目そのまま
sha256
98c6780a3a6d276994b02ab89f80671f5c347f029ca76472e7095a9407761b08px86 · 133,292バイト ELF32 i386 静的 · 9/22 とサイズ同じでハッシュ違う
sha256
6d91ecbff02877062add12ff8647a1c85dad1e2429aad08095e0421bceff0edepmips · 244,836バイト ELF32 MSB MIPS-I 静的 · 9/22 比 +96バイト
sha256
5be047ede1d06e807c9d52aa65fe899eda0720c784d51e3715395146e25b843cpmpsl · 248,932バイト ELF32 LSB MIPS-I 静的 · 9/22 比 +96バイト
sha256
32ad236fe419a677de7d6cc56a7d774641bc5174aff5d198af0bced92b8fc488parm · 183,488バイト ELF32 LSB ARM 静的 · 9/22 比 +512バイト
sha256
a273cd0b39df9ce7debccf814615357e33af32ae42231fb9bf9db2921b3346e6parm5 · 83,344バイト ELF32 ARM 動的リンク(uClibc) · 九つの中で唯一の動的リンク · 9/22 とサイズ同じでハッシュ違う
sha256
62a434f7061eb5b4ec075be4794dc268968f7e6c7eff530583a30ed9809bdd7dparm6 · 199,324バイト ELF32 ARM EABI4 静的 · 9/22 とサイズ同じでハッシュ違う
sha256
2114dad45995ce2208cdd57701bcc4489daa093b35072ca52e08ff2f73fd160dparm7 · 259,684バイト ELF32 ARM EABI4 静的 · デバッグ情報残存(not stripped) · このホストで初めて見る名前
sha256
b8a95987f0fa415d5091b60589c0d3cea9f9b99f408c60bde7a2ace9454550a5pppc · 179,536バイト ELF32 MSB PowerPC 静的 · このホストで初めて見る名前
sha256
49b0bc6e09ab3f485f3a45fba571a19e83b5071a22124e8050d9fdabff10ad79pm68k · 193,216バイト ELF32 MSB m68k 静的 · このホストで初めて見る名前
sha256
0dc95fb4077cce0bff19aa1a77109d059dff6503bbf6c1b0dd2f41fc0a4c88e79バイトの ASCII テキスト · URL 未記録 · ATK-9D3922 · ATK-EA3D92 · ATK-377ED5 が残した · 9/17 · 9/20 · 9/22 にも出たハッシュ
sha256
40b497bc232886341613fdcfd84adaf326aba1336bf42b2ad2cab26f8fc00d9dparm7(別の配布元) · 60,088バイト ELF32 ARM EABI4 · no section header · 出所 ATK-60335A · 主題セッションとは別
url
hxxp://176[.]65[.]139[.]196/bins/kla.sh上記シェルスクリプトの配布元 · 8/21 · 9/22 と同じ URL
url
hxxp://176[.]65[.]139[.]196/bins/px86上記 px86 の配布元
url
hxxp://176[.]65[.]139[.]196/bins/pmips上記 pmips の配布元
url
hxxp://176[.]65[.]139[.]196/bins/pmpsl上記 pmpsl の配布元
url
hxxp://176[.]65[.]139[.]196/bins/parm上記 parm の配布元
url
hxxp://176[.]65[.]139[.]196/bins/parm5上記 parm5 の配布元
url
hxxp://176[.]65[.]139[.]196/bins/parm6上記 parm6 の配布元
url
hxxp://176[.]65[.]139[.]196/bins/parm7上記 parm7 の配布元 · このホストで初めて見る名前
url
hxxp://176[.]65[.]139[.]196/bins/pppc上記 pppc の配布元 · このホストで初めて見る名前
url
hxxp://176[.]65[.]139[.]196/bins/pm68k上記 pm68k の配布元 · このホストで初めて見る名前
url
hxxp://64[.]89[.]160[.]48:80/bins/parm7別の配布元の parm7 · アーカイブになかったホスト

事実 二十三行をもう一度見てください。ハッシュの行十二個のうち十個が昨日初めて見た値です。一方、アドレスの行十一個のうち十個は前の部分 hxxp://176[.]65[.]139[.]196/bins/ が同じです。写真は毎回新しく撮っておかなければなりません。店のアドレスは一行で済みます。

このパスワードを使っていますか

事実 昨日、一台目のサーバーへのログイン試行は5,233回でした。一日で割ると16.5秒に一度の割合で誰かがドアノブを回してみたことになります。歌一曲を聴く間に十回以上回したわけです。

事実 試行された ID・パスワードの組み合わせのうち、この記事に移すのは20種だけです。互いに異なる IP 三か所以上で繰り返された組み合わせだけを原文で記すのが私たちの規則です。この基準に届かなかった**356種は個数だけを数え、値は記しません。**一か所からだけ出てきた組み合わせは、どこかから漏れた誰かの本物のアカウントかもしれないからです。以下の20種は複数の場所が同じように入れてみた、誰のものでもないありふれた値です。一行目の数字を見てください。

ID パスワード 互いに異なる出発地
admin admin 32か所 (368回 · 1か所あたり約11.5回)
345gs5662d34 345gs5662d34 22か所 (1か所あたり1回)
root 3245gs5662d34 10か所
root password 8か所
root root 7か所
root 12345 7か所
root (空欄) 6か所
root P@ssw0rd 6か所
user user 6か所
root admin 6か所
root 000000 6か所
daniel daniel 5か所
root 123456789 5か所
oracle oracle 5か所
ftpuser 123456 5か所
admin admin123 5か所
admin P@ssw0rd 5か所
root 123456 5か所
root 12345678 5か所
root 1112 5か所

事実 admin/admin は32か所から368回入ってきました。一か所が11回以上同じ組み合わせを入れてみたことになります。二行目のおかしな文字列は正反対です。22か所がちょうど一度ずつだけ入れました。パスワード欄がまったく空の root も6か所から入ってきました。

昨日一日の全体

事実 戸が実際に開く一台目のサーバーの一日の集計です。**右の欄も一緒に見てください。**数字一つだけでは規模がつかみにくいです。

項目 9月27日 比べるもの
セッション 5,617件 15.4秒に一度 · 9/22(829件)の約6.8倍
固有出発地 203か所 1か所あたり平均27.7セッション
ログイン試行 5,233回 16.5秒に一度
命令 9,747個 8.9秒に一つ · 9/22(790個)の約12.3倍
ポート2222 (SSH) 4,989セッション 全体の88.8%
ポート2223 (Telnet) 628セッション 11.2% — ところがファイルを受け取っていった二つのセッションはどちらも Telnet

事実 セッションは五日前の7倍近く、命令は12倍以上に増えました。なぜこれほど増えたのかは後の「私たちが分からないこと」に記しました。サーバーの中で打った命令を種類別に分けるとこうです。

何をしようとしたか 回数
偵察 — システムを調べる 4,481回
実行権限付与 2,099回
永続化 — SSH 鍵の植え込み 25回
痕跡の削除 23回
ファイルダウンロード 22回
偵察 — ネットワーク 18回
ダウンロード後の実行 14回

事実 七行を足すと6,682です。命令9,747個と3,065個の差が出ます。その3,065個が何なのかは材料に説明がありません。「SSH 鍵の植え込み」はサーバーにパスワードなしで再び入ってこられる鍵をこっそり登録しておくことです。その鍵ファイル(389バイトの公開鍵 a8460f44…)は21か所から一度ずつ、全部で21回入ってきました。389バイトはショートメッセージ三、四通分です。libssh_0.9.6 という接続プログラムのフィンガープリント(f555226d…)は昨日22か所で見られました。これまでで全部520か所です。五日前と似た水準です。

事実 二台目のサーバー(センサー02)は戸を開けず、誰が叩いたかだけを記録します。ですからログイン成功も、命令も、認証情報もここにはありません。昨日は54,243件が433か所から来ました。1.6秒に一度です。そのうち97.8%の53,038件が VNC でした。VNC は遠くから別のコンピューターの画面を見て操作する機能です。リモートデスクトップ(RDP)は五日前の11,698件から昨日567件へ**約95%減りました。**受け取っていったファイルは0件です。

同じ日の二台目のサーバーの話は映像で別に作りました。互いに異なる二か所が叩いた回数が一桁まで同じだった件です。

攻撃者が使った手口を国際分類表に対応させると

MITRE ATT&CK は攻撃の手口ごとに番号を付けておいた国際的な一覧です。昨日見た行動をその番号に合わせるとこうです。**ID を押すと原文の説明に飛びます。**私たちの言葉をそのまま信じず、直接確認してみてくださいという意味でリンクを張ります。

  • T1110.001Brute Force: Password Guessing — ログイン試行5,233回、admin/admin 32か所368回推定
  • T1078.001Valid Accounts: Default Accounts — 主要セッション5件すべてログイン成功、引用した組み合わせが初期値系列推定
  • T1059.004Command and Scripting Interpreter: Unix Shell — Telnet シェルで命令11個、シェルスクリプト kla.sh推定
  • T1105Ingress Tool Transfer — 「ファイルダウンロード」の意図、検体11件推定
  • T1222.002File and Directory Permissions Modification: Linux and Mac — 「実行権限付与」の意図推定
  • T1082System Information Discovery — 一日全体の「偵察 — システム」4,481回。主題セッションの意図にはない推定
  • T1098.004Account Manipulation: SSH Authorized Keys — ATK-CA5936 · EC7309 · 015624 の意図、公開鍵21か所。主題セッションとは関係ない推定
  • T1070Indicator Removal — 一日全体の痕跡削除23回。主題セッションとは関係ない推定

事実 八行すべてが**[推定]です。私たちの手にあるのは命令の「意図分類の結果」と回数、そしてファイルの名前・サイズ・種類までです。命令の原文もファイルの内容もありません。分類表に合わせるのは常に解釈です。そして下の三行(T1082 · T1098.004 · T1070)は昨日の保冷バッグとは関係のない**一日全体の話です。

以前こんな形があった

推定 **Mirai ボットネットとその派生系列 (2016~)。**Telnet の初期アカウントで入ります。その次に /bins/ のようなウェブパスから CPU の種類別の実行ファイルを何着も受け取ります。そのうち合うものが実行されるようにする構造です。ただしソースコードが公開された系列なので、互いに関係のない運用者たちも同じ名前の規則を使います。(出典の類型: 米国司法省の有罪答弁記録、複数のセキュリティ企業の公開分析レポート)

**Gafgyt(Bashlite) 系列 (2014~)。**シェルスクリプト一つが CPU の種類別の静的実行ファイルを順に受け取って実行する構造です。「バッグ一つ + 惣菜の容器いくつか」が一つのセッションで降ってきた昨日の姿と見た目が同じです。(出典の類型: 複数のセキュリティ企業の公開分析レポート)

事実 ここで止まります。検体分類サービス(VirusTotal)が連携されていません。MalwareBazaar のタグも今日の材料にありません。ですから**昨日のファイルが Mirai 系列だという判定はしません。**似ているのは構造と名前の付け方までです。

それで何をすべきか

バッグを送る側は私たちには止められません。変えられるのは玄関の戸が開いているか、店から来る配達を受け取るかです。

事実 1. 初期アカウント・簡単なパスワードをそのまま使っている · 可能性 高 昨日の主要セッション五件はすべてログインに成功しました。上の表の admin/admin は32か所が368回入れてみました。空のパスワードの root も6か所から入ってきました。昨日確認できる侵入経路は認証情報だけでした。主題セッションはログイン後47.12秒で CPU 種類別の実行ファイル九個を手に入れました。

事実 2. 管理ポート、特に Telnet をインターネットに直接開けておいている · 可能性 高 昨日、Telnet は全セッションの11.2%だけでした。ところが主要セッション五件のうち四件が Telnet でした。実行ファイルを受け取っていった二つのセッション(ATK-9D3922 · ATK-BDB53E)もどちらも Telnet でした。家にあるルーターやカメラの設定画面でTelnet がオンになっていないか確認してみてください。

推定 昨日降ってきた ARM・MIPS・PowerPC・m68k の実行ファイルは、Telnet が開いたルーターや CCTV のような機器を狙った構成です。破られれば機器一つが丸ごと渡ります。

事実 3. 外に出ていく接続を止めていない · 可能性 高 昨日「ファイルダウンロード」の意図が22回、「ダウンロード後の実行」が14回でした。主題セッションは 176[.]65[.]139[.]196/bins/ から10件を受け取っていきました。九つの容器のうち八つが静的リンクです。スプーンまで入っているので CPU さえ合えばどの Linux でも動きます。サーバーが外に出ていく道が閉じられていたらどうだったでしょうか? このセッションは**バッグを受け取ってくる段階で終わっていたでしょう。**この記事の比喩で言えば「この店の配達は受け取らない」です。惣菜が何度変わろうと関係ありません。

推定 4. 接続頻度の制限(fail2ban など)がない · 可能性 中 fail2ban は「何度か間違えたらしばらく戸を閉める」ツールです。admin/admin の側は1か所あたり11.5回の割合なので「5回間違えたらロック」のような規則に引っかかったでしょう。一方 345gs5662d34 の組み合わせ(22か所22回)と公開鍵(21か所21回)は1か所あたりちょうど一度です。こういう側は頻度制限では防げません。二種類が混ざっているので「中」にしておきます。初期アカウントをなくすことと併せて使って初めて効果があります。

事実 5. パスワードログインを許可し、鍵方式を使っていない · 可能性 低 主題セッションは Telnet でした。Telnet に鍵方式という選択肢はありません。SSH 側の ATK-CA5936 はログインに成功しました。しかし材料に認証方式の欄がないため、パスワードで入ってきたと確定できません。昨日の主題となった経路である Telnet は切ること以外に答えがありません。

推定 6. ログを集めていない、または異常行動の監視がない · 可能性 中 一日全体で痕跡の削除が23回ありました。主題セッションにはありませんでした。私たちは画面録画が5,079件あったのでセッションの流れを再構成できました。記録がなかったら同じ店が五日で惣菜を全部入れ替えたという事実そのものを知らなかったでしょう。

事実 昨日観測した配布元 176[.]65[.]139[.]196 · 160[.]119[.]66[.]206 · 64[.]89[.]160[.]48 は C-TAS(韓国インターネット振興院のサイバー脅威情報共有体系)への申告対象です。ただし私たちが確認できるのは送信が成功したというところまでです。KISA 側に実際に上がったかは別途確認しなければなりません。

私たちが分からないこと

このブログが他と違う点です。知っていることと同じだけ、分からないことも記します。

バッグと惣菜について

  • [確認不可] アーカイブに 9/9 · 9/11 · 9/12 · 9/14 · 9/16 · 9/18 · 9/19 · 9/21 · 9/23~9/26 のブリーフがありません。「五日で」は 9/22 のブリーフと比較した言葉です。その間にこの店が惣菜を何度変えたかは分かりません。
  • [確認不可] px86 · parm5 · parm6 は 9/22 とサイズが同じでハッシュだけが違います。何が変わったのか(設定値なのか、作った時刻なのか、他の何かなのか)、ファイルの内容が材料にないため判断できません。
  • [確認不可] parm7 だけデバッグ情報が残っている**理由が分かりません。**手違いなのか意図なのか、この材料では選り分けられません。
  • [確認不可] 64[.]89[.]160[.]48 の parm7(60,088バイト、目次なし)が 176[.]65[.]139[.]196 の parm7(259,684バイト)とどんな関係なのか分かりません。「目次なし」は圧縮された実行ファイルによく見られますが、圧縮の有無を知らせる欄がないため確定しません。
  • [確認不可] 九つの容器のうちどれが実際に実行されたのか、記録が区別していません。「ダウンロード後の実行」の意図はありますが、命令の原文と画面録画の内容がありません。
  • [確認不可] ATK-9D3922 とファイル11件をつなぐ根拠は、配達者の欄と個数の合計(11 = ダウンロード数)が合うということです。セッションとファイルを1:1でつなぐ欄はありません。

他のセッションと集計について

  • [確認不可] ATK-EC7309 と ATK-015624 は「ファイルダウンロード」の意図があるのにダウンロード数が0です。二つのセッションは命令17個 · 意図5個 · 記録の密度17 がすべて同じです。受け取ろうとして失敗したのか、同じスクリプトを使ったのか分かりません。
  • [確認不可] ATK-CA5936 のフィンガープリント 16443846… が昨日の接続プログラムのフィンガープリント一覧(12個)にありません。その一覧が全体45個の束のうち上位の一部だけを見せているのかは明示されていません。主題セッションは Telnet なのでフィンガープリント自体がなく、**束の分析を適用しませんでした。**フィンガープリントはプログラムの指紋であって人の指紋ではありません。
  • [確認不可] 命令9,747個と意図分類の合計6,682の差3,065個が何なのか、材料が説明していません。
  • [確認不可] 一台目のサーバーのセッションが 9/22 比で**約6.8倍に跳ねた原因が分かりません。**一台目のサーバーには上位出発地の一覧がないため、一、二か所が作った数字なのかも確認できません。
  • [確認不可] 記録の密度(completeness)の計算式が材料にありません。
  • [確認不可] 二台目のサーバーの上位出発地に 176.65.x.x(ATK-D4B7A8、200件)があります。伏せられたアドレスなので配布元 176[.]65[.]139[.]196 と同じ機械なのか分かりません。**復元しません。**別称が二台のサーバーの間で同じ出発地を指すという保証も文書化されていません。
  • [確認不可] VNC 53,038件が私たちの記録の最大値なのかは確認していません。比較した日は 9/22(33,287件)と 9/6(48,605件)だけです。
  • [確認不可] RDP の名札 Administr が 9/22 の5,159回から昨日2回に減った原因が分かりません。
  • [確認不可] 二台目のサーバーの adb の詳細記録が昨日の材料にありません。ADB(Android 機器を接続して操作する通路)408セッションに何が入ってきたのか、何か所から来たのか分かりません。

わざと外したか、つなげなかったもの

  • [除外] 平文の指標として残った Discord Webhook 1件(9/22 にもあった)は、どのセッション・ファイルとつながるのか材料にないため事実関係から外しました。Webhook トークンは他人が悪用しうるので移しません。
  • [確認不可] C-TAS への申告は送信成功までしか確認できません。KISA 側での蓄積・活用の有無は別途確認しなければなりません。
  • [除外] 背景の統計(KISA のセキュリティ公示 CVE 7,642件 · CISA KEV 408件 · ランサムウェア連携の確認101件、EPSS 上位 CVE-2018-13379 · CVE-2022-26134 · CVE-2021-44228 · CVE-2023-4966 · CVE-2024-3400)は**昨日の観測と直接つながりません。**昨日の侵入経路はすべて認証情報でした。

まったく判断しないもの

  • 通信事業者・組織(ASN・ISP) — 関連データベースがありません。推定しません。
  • 地理的位置 — 同じ理由で分かりません。IP の地理情報はそもそも誰がやったのかを指す根拠になりません。この記事はいかなる国家・企業・個人も攻撃者として名指ししません。
  • VPN・Tor・クラウドの有無 — 判別する手段がありません。
  • 検体分類(VirusTotal) — 連携されていません。検体分類は MalwareBazaar のタグを使います。昨日の新しい実行ファイル九個がどの系列として検知されるのか、この記事では言えません。
  • 接続プログラムの文字列(User-Agent) — 二台のサーバーはどちらもウェブ(HTTP)ではありません。一台目は SSH・Telnet、二台目は SMB・RDP・VNC・MSSQL・LDAP・ADB です。ウェブ攻撃は別のソースで扱います。
  • 脆弱性番号(CVE)の紐付け — SSH・Telnet 攻撃はほとんど特定の脆弱性を参照しません。二台目のサーバーも接続規格を合わせる段階なので同様です。

同じ保冷バッグが三度目に来ました。バッグは37日間、糸一本も変わりませんでした。中に入った惣菜の容器は六つから九つに増え、九つすべてが詰め直されていました。三つの容器は重さまでまったく同じなのに中身だけが違いました。一つの容器にはレシピのメモが貼られていました。五日前に撮っておいた写真のリストでは九つの容器のうち一つも見分けられません。

何を入れ替えたのか、誰が送ったのかは分かりません。分からないことは分からないままにしておきます。それでもできることははっきりしています。**玄関の戸(Telnet)を閉め、店から来る配達(外に出ていく接続)を受け取らず、店のアドレスを長く覚えておくこと。**写真は五日で九枚すべてが変わりました。店のアドレスは37日目そのままでした。


観測日は2026年9月27日で、この記事は翌日にまとめました。出発地 IP はブリーフで伏せ処理された形(108.59.x.x、160.119.x.x、160.250.x.x、130.12.x.x、2.29.x.x、176.65.x.x)のまま移し、復元しませんでした。配布元のアドレスは誤って接続されないようデファング(hxxp://、[.])の状態を本文と IOC ブロックの両方で維持しました。認証情報は互いに異なる IP 3か所以上で繰り返し観測された組み合わせ20個だけを原文引用し、残りの356個は個数だけを明かして値は記しませんでした。通信事業者・国籍・VPN の有無のように私たちに計測手段のない項目は推定せず「分からない」として残しておきました。