SecurityHeroblog

叩いた回数は平凡だったのに、入り込んだ後がすべて最高値だった

昨日、私たちのサーバーのドアを叩いた回数そのものは平凡でした。ところが、ドアが開いた後の行動три つが同じ日に揃って10日間の最高値を記録しました。他人の名前を入館名簿に載せたのが69回、立ち寄った記録を消したのが70回 — ちょうど1つ差でした。

大きなビルの1階には、たいてい帳簿が2つあります。

ひとつは常時入館登録名簿です。ここに名前が載っていれば、毎回確認を受けずにそのまま入れます。入居企業の社員、契約した清掃業者、定期配送のドライバー。一度載せておけばずっと有効です。

もうひとつは訪問記録簿です。誰が何時に入って何時に出たかを書き留めておく紙です。後で何か起きたときに遡って見るためにあるものです。

ビルのセキュリティを考えるとき、私たちはたいてい玄関ドアだけを見ます。鍵はかかっているか、パスワードは難しいか、誰かがしきりにドアノブを回していないか。ところが実際に事故が起きた後に問題になるのは、ドアではなく2つの帳簿です。名簿に知らない名前がいつ載ったのか、記録簿のどの行が消えたのか。

昨日、私たちのサーバーに残った記録がまさにその話でした。ドアを叩いた回数は平凡でした。帳簿2つに手を入れた回数が最高値でした。

昨日、帳簿側の数字だけが跳ねました

事実 まず跳ねなかった数字から置いておきます。昨日私たちが観測したセッションは1,652件、ログイン試行は1,229回です。1日をきっちり割るとおよそ1分10秒に1回の割合で誰かがドアノブを回してみた計算になります。この程度は普段と大きく変わりません。

事実 実行されたコマンド1,329個のうち**「偵察 — システム」が899回で約67.6%**です。これは入ってきて「ここは何のマシンだ?」を確認する行動です。ファイルダウンロード89回、ダウンロード後の実行82回も特別に高い値ではありません。

事実 ところが3項目が跳ねました。

昨日の行動 昨日 直近10日の最大値 倍率
永続化 — SSH鍵の植え込み 69回 22回 (8/24) 約3.1倍
痕跡削除 70回 21回 (8/24) 約3.3倍
防御無力化 2回 1回 10日間で初めて出た2

事実 前の2項目が10日間どんな値だったかをそのまま書き写すとこうです。「SSH鍵の植え込み」は 8/16 9 · 8/17 13 · 8/18 18 · 8/19 16 · 8/20 9 · 8/21 11 · 8/22 9 · 8/23 7 · 8/24 22 でした。「痕跡削除」は 8/16 9 · 8/17 13 · 8/18 19 · 8/19 13 · 8/20 8 · 8/21 12 · 8/22 8 · 8/23 7 · 8/24 21 でした。10日間ずっと1桁から20数回の間を行き来していた値が、昨日突然69と70になりました。

事実 69回なら1日を割っておよそ21分に1回です。70回は約20分30秒に1回です。出勤してコーヒーを1杯飲む間に1回ずつ、1日中です。

推定 そして2つの数字はちょうど1つ差です。名簿に名前を載せたのが69回、記録簿の行を消したのが70回。私たちはこの2つの値が一対で実行されたと言うことはできません — 後の「私たちが分からないこと」で改めて押さえます。ただ、この10日間のうち侵入以降の段階が3つ同じ日に同時に最高値を記録したのは昨日が初めてです。「入ろうとする試み」ではなく「入った後に居座る行為」が増えたという方向で読みます。

昨日一日を時系列で

時系列に並べるとこうなります。行は長いですが、4行目・5行目の時刻と、6行目・7行目の時刻に注目してください。分ではなく秒単位で重なります。

  1. 事実 「永続化 — SSH鍵の植え込み」意図69回。389バイトのOpenSSH RSA公開鍵(sha256 a8460f44…)が互いに異なる出所21か所で観測された。この指紋は8/16〜8/24の記録と同じで、10日連続で同一のファイルである。出所数の推移は 8/16 10か所 → 8/17 12か所 → 8/18 16か所 → 8/19 12か所 → 8/20 8か所 → 8/21 10か所 → 8/22 8か所 → 8/23 6か所 → 8/24 19か所 → 昨日 21か所で、昨日が確認区間の最大値である
  2. 事実 「痕跡削除」意図70回。8/16 9 · 8/17 13 · 8/18 19 · 8/19 13 · 8/20 8 · 8/21 12 · 8/22 8 · 8/23 7 · 8/24 21 回から昨日70回へ、確認区間の最大値の約3.3倍である。永続化69回とは1回差である
  3. 事実 「防御無力化」意図2回。8/16・8/17・8/18・8/22 はそれぞれ1回、8/19 は0回、8/20・8/21・8/23・8/24 は項目自体がなかった。確認区間でこの値が2になったのは昨日が初めてである
  4. 事実 ATK-31C779(94.154.x.x)、テルネットログイン成功。約8.06秒間にコマンド5個、ダウンロード6件。意図4種 — 偵察(システム) · ファイルダウンロード · 実行権限の付与 · ダウンロード後の実行。completeness 33。TTY録画あり(内容は非収録)。テルネットのため指紋・クライアント値は空文字列である
  5. 事実 同じ別名 ATK-31C779 が最初のセッション開始から約1分48秒後に再び入ってきた。約8.08秒、コマンド5個、ダウンロード6件、意図4種、completeness 33 — 最初のセッションとすべての値が同じである。二度ともログイン成功であり、二度とも阻止されなかった
  6. 事実 ATK-C53A45(45.224.x.x)、テルネットログイン成功。約72.10秒間にコマンド22個、ダウンロード11件。意図は「防御無力化」単独。completeness 42 で昨日の最高値。TTY録画あり
  7. 事実 ATK-7A654C(124.168.x.x)、テルネットログイン成功。約75.06秒間にコマンド22個、ダウンロード11件、意図「防御無力化」単独、completeness 42 — 前のセッションとマスクされた発信元だけが異なり、5つの値がすべて同じである。2つのセッションは 04:29:02 から 04:29:34 まで約32.38秒間、同時に開いていた
  8. 事実 ATK-50016C(220.135.x.x)、テルネットログイン成功。約24.06秒間にコマンド20個、ダウンロード11件。意図の配列は空なのに completeness は 40 である。TTY録画あり
  9. 事実 同じ別名 ATK-31C779 のセッションが3日連続で観測され、規模が大きくなった。8/23 の記録は約5.1秒・コマンド3個・ダウンロード4件・completeness 25、8/24 の記録は約4.79秒・コマンド3個・ダウンロード3件・completeness 22、昨日は約8.06秒・コマンド5個・ダウンロード6件・completeness 33。別名は記録の間で同じ発信元を指す値であり、身元ではない
  10. 事実 「テルネット · ログイン成功 · コマンド22個 · ダウンロード11件 · 意図は防御無力化単独 · 11件すべて1バイトの空ファイル · completeness 42」という組み合わせは、8/18 の記録(ATK-ABE8B7、約75秒)と 8/22 の記録(ATK-F604B7、約19.7秒)にそれぞれ1件ずつ単独で残っている。昨日はこの組み合わせが1日に2件、互いに異なる発信元から、時間まで重なって現れた。継続時間(72.1秒・75.1秒)は 8/22 の19.7秒よりも 8/18 の約75秒に近い
  11. 事実 1バイト・マジックナンバーのない空ファイル(sha256 01ba4719…)のダウンロードイベントは33回であり、配信元は ATK-C53A45 · ATK-7A654C · ATK-50016C の3か所だけである。3セッションのダウンロード数がそれぞれ11件なので、11×3=33 で正確に一致する
  12. 事実 176[.]65[.]139[.]202 のローダー telnet.sh は sha256 ad19b70c…・2,107バイトで、8/23・8/24・昨日の3日連続で指紋とサイズが完全に同じである。一方、同じホストの daredevil ELF 5種は 8/24 と指紋がすべて異なり、サイズは5種すべて増えた — armv7l +852、mips +1,140、mipsel +1,268、armv5l +832、armv6l +856 バイト。5種の合計は 8/24 の259,344バイトから昨日264,292バイトである。狙うアーキテクチャは 8/23 3種 → 8/24 5種 → 昨日 5種で維持された
  13. 事実 hxxp://5[.]182[.]210[.]174/ok から1,608バイトのBourne-Againシェルスクリプトが、昨日2つの互いに異なる指紋(dae728b8…、4c0c071d…)でそれぞれ1回ずつ降ってきた。8/24 までに集計したこのURLの累積指紋8種に昨日2種が加わって10種であり、8/17 の初観測以降サイズは毎回正確に1,608バイトである。9日間で10回作り直されたのに、ファイルサイズは1バイトも変わっていない
  14. 事実 31バイトのASCIIテキスト(sha256 a2f3d6d2…)が46回で昨日の最多ダウンロード検体だが、配信元は ATK-E150E4 の1か所だけであり、この別名は主題セッション一覧にない。URLは記録されていない
  15. 事実 399バイトのOpenSSH秘密鍵(sha256 43728fbf…)が ATK-CA5936 · ATK-2DE05A の2つの出所で2回観測された。同じ2つの出所が54バイトのASCIIテキスト(00b6f15c…)も併せて残した。この指紋は 8/23 の記録にもある
  16. 事実 SSHクライアント指紋11種が記録された。最多は acaa53e0…(SSH-2.0-OpenSSH_7.4)で昨日125か所・累積139か所、次が f555226d…(SSH-2.0-libssh_0.9.6)で昨日24か所・累積245か所である。11種のうち実際に検体を送り込んだのは 16443846…(SSH-2.0-Go、昨日4か所・累積28か所)ただ1つだけである。昨日ログインに成功した主題セッション5件はすべてテルネットのため、指紋の値が空である
  17. 事実 集計値: セッション1,652件、ユニークな発信元361か所、ポート2222 1,387件 · ポート2223 262件、プロトコルSSH 1,387件 · テルネット262件、ログイン試行1,229回、コマンド1,329個、TTY録画1,007件。テルネットの比率は約15.9%で、8/24 の約36.7% から下がった。コマンド1,329個のうち「偵察 — システム」899回は約67.6%である。検体は15種・ダウンロードイベント134回であり、外部URLが記録された配布元は 176[.]65[.]139[.]202(6種) · 185[.]93[.]89[.]72(1種) · 5[.]182[.]210[.]174(2種) の3か所である
  18. 事実 ログイン試行1,229回のうち、互いに異なるIP3か所以上で観測され原文の引用が可能な組み合わせは20種であり、単一の出所でのみ観測され公開しなかった組み合わせが1,017種である。最多は 345gs5662d34/345gs5662d34 で18か所、次が admin/admin 13か所、root/admin 7か所、root/3245gs5662d34 7か所である

事実 表で目に留まるのは2か所です。ひとつは01:54 と 01:56 — 同じ発信元が約1分48秒間隔で二度入ってきて、二度とも開きました。もうひとつは04:28 と 04:29 — 互いに異なる2つの発信元が約32秒間、同時に開いていました。

名簿に載った名前 — 10日目も同じ1行

事実 「SSH鍵の植え込み」が何のことかをここで解いておきます。Linuxのマシンには authorized_keys(許可された鍵の一覧)というファイルがあります。**ここに1行入っていれば、パスワードを聞かずに中へ通します。**ビルで言えば常時入館登録名簿であり、1行が名前ひとつです。

事実 昨日観測された公開鍵は389バイトです。ショートメッセージ2〜3行分の量です。その2行が名簿に入れば、パスワードはもはや関門ではありません。

事実 そしてこのファイルの指紋(sha256)が a8460f44… で、**8/16から昨日まで10日連続でまったく同じです。**残した出所は21か所で、確認区間の最大値です。推移はこうです。

日付 この公開鍵を残した出所
8/16 10か所
8/17 12か所
8/18 16か所
8/19 12か所
8/20 8か所
8/21 10か所
8/22 8か所
8/23 6か所
8/24 19か所
8/25 21か所

事実 同じ名前を10日間ずっと書き続けています。書く手は21本に増えたのに、書く内容はそのままです。参考までに 8/17・8/18 の記録は、このファイルを外部からダウンロードしたのではなくセッションの中で作られたものとして書いてあります。そのためダウンロードアドレスが空の日があります。

推定 ここで重要なのはこれです。ドアノブをいくら何度も回しても、一度失敗すればそれで終わりです。ところが名簿に名前が1行入ると、**その後はずっと有効です。**パスワードを全部変えても名簿はそのまま残ります。昨日の1,229回の試行と名簿の1行は、性格がまったく異なる値です。

事実 そしてこの鍵が10日連続で同じ指紋だということは、10日の間のどの1日でも名簿に書き込まれることに成功したマシンがあれば、今も同じ名前で開くという意味です。

記録簿から消された行 — 70回

事実 2つ目の帳簿です。昨日「痕跡削除」の意図が70回記録されました。前日21回の約3.3倍です。

事実 ただしここで線を引かなければなりません。私たちの記録にはコマンドの原文が含まれていません。意図の分類だけがあります。そのため70回が正確に何を消したのか — ログファイルなのか、受け取ったファイルなのか、コマンド履歴なのか — 言うことができません。後で出てくるMITRE分類で下位テクニックを付けなかった理由がそれです。

事実 「防御無力化」は2回です。小さな数字に見えますが、10日間この項目は毎日0回か1回であり、まったくない日も4日ありました。**2になったのは昨日が初めてです。**これも何を切ったのかは記録にありません。

推定 帳簿の比喩で整理すると、昨日起きたことはこうです。**名簿には名前を載せ、記録簿からは自分の行を消しました。**これから入る道は開けておき、通ってきた道は覆ったのです。この2つが同じ日に揃って最高値だということが、昨日の記録で最も目立つ部分です。

8秒のものが2回、72秒のものが2回

事実 昨日ログインに成功した主要なセッションは5件で、すべてテルネットです。テルネットは非常に古い遠隔接続方式です。分かりやすく言えばインターネットの向こうからそのマシンのコマンド画面を直接叩けるように開けておいた通路ですが、パスワードが暗号化されずにそのまま流れます。

事実 最初の2件は別名 ATK-31C779(94.154.x.x)です。01:54:24 に1回、01:56:12 に1回。約1分48秒間隔です。2つのセッションとも約8.06秒・8.08秒、コマンド5個、ダウンロード6件、completeness 33 で5つの値がすべて同じです。

事実 同じ別名が3日連続で出てきて、規模が大きくなりました。

8/23 8/24 8/25
滞在時間 約5.1秒 約4.79秒 約8.06秒
コマンド 3個 3個 5個
ダウンロード 4件 3件 6件
completeness 25 22 33

事実 completeness(完結性)は、1つのセッションが侵入の最初から最後までのうちどこまで進んだかを点数にした値です。入ってきて見て回るだけで出ていけば低く、ファイルまで受け取って実行すれば高くなります。

事実 ただし別名について線を引かなければなりません。私たちは発信元IPをそのまま使わず、ATK- で始まる別名に変えて記録します。**別名は同じ発信元を指す値であって身元ではありません。**3日の間にそのアドレスを使う主体が変わった可能性を排除できません。

事実 次の2件は 04:28 と 04:29 です。ATK-C53A45(45.224.x.x)が約72.10秒、ATK-7A654C(124.168.x.x)が約75.06秒。コマンド22個、ダウンロード11件、意図「防御無力化」単独、completeness 42。マスクされた発信元だけが異なり、5つの値がすべて同じです。そして2つのセッションは約32.38秒間、同時に開いていました。

事実 この組み合わせは初めて見るものではありません。「テルネット · ログイン成功 · コマンド22個 · ダウンロード11件 · 防御無力化単独 · 11件すべて1バイトの空ファイル · completeness 42」は、8/18 に1件(約75秒)、8/22 に1件(約19.7秒)単独で記録されています。昨日はこれが1日に2件、互いに異なる発信元から、時間まで重なって出てきました。

事実 ここで私たちが普段使っている束ね方が通用しません。SSHで入ってくると、接続プログラムが最初に差し出す挨拶の構成から指紋を作り、「同じツール」同士を束ねることができます。昨日もその指紋が11種取れており、最多の acaa53e0…(OpenSSH_7.4)ひとつが1日にIP125か所を束ねます。**ところが昨日実際に開いたドア5つはすべてテルネットのため、指紋の値が空文字列です。**テルネットにはその挨拶の手順自体がありません。

推定 そのため 04:29 に重なって開いていた2つのセッションが同じツールなのか、指紋では判定できません。根拠はコマンド22個・ダウンロード11件・1バイトの空ファイルという行動の数値が同じだということがすべてです。

事実 付け加えると、指紋は**ビルドの指紋であって人の指紋ではありません。**同じディストリビューションの標準プログラムを使う、互いに面識のない人同士も同じ値を持ちます。だからこのブログは「同じツール」までしか書かず、「同じ組織」とは書きません。

事実 その1バイトの空ファイルの話も押さえておきます。サイズ1バイト、つまり文字1個分であり、ファイルの種類を示す標識すらありません。昨日33回観測されましたが、配信元は3か所だけで、3セッションのダウンロードがそれぞれ11件なので11×3=33 で正確に合います。何かを受け取ろうとして空のものが来たのか、もともと空のファイルを受け取ったのかは記録が語ってくれません。

配布元 — 一番手前の1枚は3日目もそのまま

事実 外部アドレスが記録された配布元は3か所です。アドレスはわざと壊して書いています(hxxp://、[.]) — コピーして貼り付けても接続されません。

事実 176[.]65[.]139[.]202 からはローダー telnet.sh(2,107バイト)とCPU種別ごとの実行ファイル5種が出てきました。ローダーは実行ファイルを直接抱えておらず、「どこから何を受け取って実行しろ」とだけ書いてあるメモ書きです。このローダーは指紋 ad19b70c…、サイズ2,107バイトで、8/23・8/24・昨日の3日連続で一文字も違いません。

事実 逆に実行ファイル5種は 8/24 と指紋がすべて異なり、サイズは5種すべて増えました。

ファイル 昨日のサイズ 8/24 比
daredevil.armv7l 41,224バイト +852
daredevil.mips 56,788バイト +1,140
daredevil.mipsel 58,724バイト +1,268
daredevil.armv5l 50,928バイト +832
daredevil.armv6l 56,628バイト +856

事実 5つをひとつずつだけ合計すると、8/24 の259,344バイトから昨日264,292バイトになりました。約258KB、スマートフォンの写真1枚より小さいです。これが8秒のセッションの中に入ってきます。

事実 armv5l・armv6l・armv7l・mips・mipsel はすべてCPUの種類であり、互いに互換性がありません。**一般のPC・サーバーで動くx86系は昨日も1件もありません。**ARM・MIPS系はルーター・IPカメラ・NASのような機器でよくある規格です。

事実 3つ目の配布元 5[.]182[.]210[.]174/ok は相変わらず奇妙です。昨日1日だけで互いに異なる指紋2つがそれぞれ1回ずつ降ってきました。8/17 の初観測以降、累積の指紋は10種なのに、サイズは毎回正確に1,608バイトです。9日間で10回作り直されたのに、ファイルサイズは1バイトも変わっていません。なぜそうなのかは、ファイルの内容がないため説明できません。

事実 昨日ダウンロード回数が最も多かった検体は、意外にも31バイトのテキストです。46回。ところが配信元が ATK-E150E4 の1か所だけであり、この別名は主要セッション一覧にありません。アドレスも記録されていません。昨日の最多検体なのに、どんなセッションだったのか分かりません。

どうやって入ってきたか — 昨日もパスワードです

事実 昨日のログイン試行は1,229回、互いに異なる発信元は361か所です。発信元1か所あたり平均で約3.4回です。

事実 互いに異なるIP3か所以上で観測された組み合わせだけ原文を載せます。昨日は20種です。

ID パスワード 観測されたIP数
345gs5662d34 345gs5662d34 18か所
admin admin 13か所
root admin 7か所
root 3245gs5662d34 7か所
root root 4か所
admin password 4か所
root (空のパスワード) 3か所
user 1 3か所
root Aa123456 3か所
root default 3か所
root password 3か所
root qwerty 3か所
root root123 3か所
root rootroot 3か所
guest guest 3か所
username password 3か所
user1 1234 3か所
debian 12345 3か所
config config 3か所
admin P@ssw0rd 3か所

事実 7行目を見てください。**パスワード欄が空です。**互いに異なる3か所がそれぞれ「ただの空欄」でログインを試みました。それが通用するマシンがあると知っているという意味です。

事実 一番上の 345gs5662d34/345gs5662d34 は人が思いつくような文字列ではありません。IDとパスワードが同じで、互いに異なる18か所が正確にこの値を試しました。root/3245gs5662d34 も7か所です。

推定 特定の機器にハードコードされた初期値を一覧として持ち歩いているものと読みます。どのメーカーの機器なのかは私たちの記録にありません。

事実 そして1,017種の組み合わせは載せていません。ただ1か所からしか出てこなかった組み合わせです。1か所からしか出てこなかった組み合わせは、どこかで実際に流出した誰かのアカウントである可能性があるため、値は書かずに個数だけ数えます。

残していったもの

昨日観測された検体とアドレスのすべてです。値を押すとコピーされます — 指紋は読むためにあるのではなく、ブロックリストに入れるためにあります。hxxp:// と [.] はそのままにしてあります。一番上の2行と一番下の行が昨日の話の核心です — 10日連続で同じ公開鍵、そして3日連続で変わらないローダー。

sha256
a8460f446be540410004b1a8db4083773fa46f7fe76fa84219c93daa1669f8f2389バイトのOpenSSH RSA公開鍵 · 出所21か所 · 21回 · URL未記録 · 8/16〜8/24 と同じ指紋で10日連続であり、出所数は確認区間の最大値である。8/17・8/18 の記録は、このファイルを外部ダウンロードではなくセッションの中で作られたものとして書いた。配信元は ATK-7BDE7E · ATK-9CDD7F · ATK-D33E9B · ATK-BFAFF6 · ATK-C79920 · ATK-779578 · ATK-A7AC8D · ATK-533A05 · ATK-DF7CFF · ATK-B2E933 ほか11か所(記録には10か所までしか表記されていない)
sha256
01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b1バイト · very short file / no magic · 33回 · URL未記録 · 出所3か所(ATK-7A654C · ATK-50016C · ATK-C53A45) · 3セッションのダウンロードがそれぞれ11件なので 11×3=33 で合う。8/17・8/18・8/22・8/23 の記録にも同じ指紋がある
sha256
ad19b70c4e523ef24baf5e062d2200e139b619b56049219d41cd0397faff2c402,107バイトのPOSIXシェルスクリプト(ローダー) · 出所1か所(ATK-31C779) · 5回 · 8/23・8/24 と指紋・サイズが完全に同一で3日連続無変更である。この配布元で3日間ずっと変わらなかった唯一のファイル
url
hxxp://176[.]65[.]139[.]202:80/telnet.sh上記ローダーのアドレス。3日連続で同じ場所・同じ内容
sha256
4a9a6cf71efa9793bc277ba6859293f9ea0e927199500958e06a38520b96190141,224バイト ELF 32-bit LSB ARM EABI4 · statically linked · no section header · 出所1か所(ATK-31C779) · 5回 · 8/24 の 29fb2896…(40,372バイト)を置き換えた新規の指紋、+852バイト
url
hxxp://176[.]65[.]139[.]202/daredevil.armv7l名前はそのまま、内容だけが差し替えられた
sha256
66326f22c7f5c6f8f1d4ea8772a61a93d51614a78530143379fffbc2a19bf6a356,788バイト ELF 32-bit MSB MIPS-I(ビッグエンディアン) · statically linked · no section header · 出所1か所(ATK-31C779) · 5回 · 8/24 の 95f5156a…(55,648バイト)を置き換えた新規の指紋、+1,140バイト
url
hxxp://176[.]65[.]139[.]202/daredevil.mips名前はそのまま、内容だけが差し替えられた
sha256
83d490e7d957ade322b6607680a03ef57b902cbd2a78727d1d5385444782db6758,724バイト ELF 32-bit LSB MIPS-I(リトルエンディアン) · statically linked · no section header · 出所1か所(ATK-31C779) · 5回 · 8/24 の 6210a1c6…(57,456バイト)を置き換えた新規の指紋、+1,268バイト
url
hxxp://176[.]65[.]139[.]202/daredevil.mipsel名前はそのまま、内容だけが差し替えられた
sha256
9d7b93ba19385d888464df216ccaaf0155efbba4ebbc119167d1a13b9e1eaf0b50,928バイト ELF 32-bit LSB ARM version 1 · statically linked · no section header · 出所1か所(ATK-31C779) · 2回 · 8/24 の eb05c127…(50,096バイト)を置き換えた新規の指紋、+832バイト
url
hxxp://176[.]65[.]139[.]202/daredevil.armv5l名前はそのまま、内容だけが差し替えられた
sha256
103780f703b680311f9e0e591153c6c7d8cc85478412225c7f4d49547626060a56,628バイト ELF 32-bit LSB ARM EABI4 · statically linked · no section header · 出所1か所(ATK-31C779) · 2回 · 8/24 の 06c0d953…(55,772バイト)を置き換えた新規の指紋、+856バイト。ELF5種をひとつずつだけ合計すると264,292バイトである
url
hxxp://176[.]65[.]139[.]202/daredevil.armv6l名前はそのまま、内容だけが差し替えられた
sha256
dae728b80aec56617055dc84a625ba5fadf6928f0f69dbfbf0c993558db930dd1,608バイトのBourne-Againシェルスクリプト · 出所1か所(ATK-10149C) · 1回 · 新規の指紋
sha256
4c0c071da6754eddbc4585ceb959b514963618180e488d7f179d83719d7167e61,608バイトのBourne-Againシェルスクリプト · 出所1か所(ATK-10149C) · 1回 · 上と同じアドレス・同じサイズなのに指紋が異なる。1日に2種であり、8/24 時点の累積8種に昨日2種が加わって10種である
url
hxxp://5[.]182[.]210[.]174/ok場所もサイズ(1,608バイト)もそのままなのに、内容だけが変わり続けるアドレス。8/17 の初観測以降サイズは毎回正確に同じである
sha256
a6296a79f44e21b76604d2d2bbf795d2cf380f70e39d45fbf166707ff3b4a6a4306バイトのPOSIXシェルスクリプト · 出所2か所(ATK-512192 · ATK-44E538) · 2回 · 8/23・8/24 の記録にも同じ指紋がある
url
hxxp://185[.]93[.]89[.]72/wget3日連続で同じアドレス・同じ指紋
sha256
a2f3d6d2bd82a65939f4e939bce242e8e246014fb3a9a9d5c3769ed7dcfffe2431バイトのASCIIテキスト · 出所1か所(ATK-E150E4) · 46回 · URL未記録 · 昨日ダウンロードイベントが最も多い検体だが、出所が1か所だけであり、その別名は主要セッション一覧にない
sha256
43728fbfb98bb39ff61a2db0fc2905bd6937997062b05b9ab8b186fdee18c09a399バイトのOpenSSH秘密鍵 · 出所2か所(ATK-CA5936 · ATK-2DE05A) · 2回 · URL未記録 · 8/23 の記録にも同じ指紋がある。植えられたものなのか持ち出そうとしたものなのかは記録が区別してくれない
sha256
00b6f15c2274420217ed3098a9f5f00545bf1793d7a324fd18a7809cbbf5b12b54バイトのASCIIテキスト · 出所2か所(ATK-CA5936 · ATK-2DE05A) · 2回 · URL未記録 · 上の秘密鍵と同じ2つの出所であり、8/23・8/24 の記録にも同じ指紋がある。内容が記録にないため何であるかは判断しない
sha256
4af5a5c98ad132095c6fbe7b02c242153a190a01cc321e50a916a0ca46fbaa629バイトのASCIIテキスト · 出所1か所(ATK-BECAD3) · 2回 · URL未記録 · 8/23・8/24 の記録にも同じ指紋がある。内容は非収録

事実 この一覧を上下に読むと、昨日の2つの顔が見えます。真ん中の5行は1日で書き直さなければならなかった値であり、一番上と一番下は10日目・3日目もそのままの値です。同じ一覧に入っていますが、持ちこたえる時間が違います。

攻撃段階に移すと

観測された行動をMITRE ATT&CKという国際的な分類表に対応させるとこうです。IDを押すと原文の説明を直接見ることができます — 私たちの言葉を信じずに確認していただいて構いません。**すべて[推定]です。**私たちが見たのはコマンドであって、攻撃者の意図ではありません。

  • T1110.001Brute Force: Password Guessing — ログイン試行1,229回、ユニークな発信元361か所、引用可能な組み合わせ20種 + 非引用1,017種推定
  • T1078.001Valid Accounts: Default Accounts — admin/admin 13か所 · root/root 4か所 · guest/guest 3か所 · config/config 3か所 など既定値の組み合わせが多数であり、主要セッション5件すべてがログイン成功である推定
  • T1082System Information Discovery — 「偵察 — システム」899回、全コマンド1,329個の約67.6%推定
  • T1105Ingress Tool Transfer — 「ファイルダウンロード」89回、検体15種 · ダウンロードイベント134回、外部配布元3か所推定
  • T1222.002File and Directory Permissions Modification: Linux and Mac — 「実行権限の付与」145回推定
  • T1059.004Command and Scripting Interpreter: Unix Shell — 「ダウンロード後の実行」82回、降ってきた検体のうちシェルスクリプト4種推定
  • T1098.004Account Manipulation: SSH Authorized Keys — 「永続化 — SSH鍵の植え込み」69回、389バイトの公開鍵が出所21か所。ただしこの公開鍵のダウンロードイベントは21回しかなく、69回と合わない推定
  • T1070Indicator Removal — 「痕跡削除」70回。コマンドの原文がなく何を消したのか分からないため、下位テクニックは付けない推定
  • T1562Impair Defenses — 「防御無力化」2回。何を無力化しようとしたのか分からないため、下位テクニックは付けない推定
  • T1608.001Stage Capabilities: Upload Malware — 176[.]65[.]139[.]202 という1つのホストが3日連続でローダー1種とアーキテクチャ別のELFを一緒に送り出し、その間ELFだけが差し替えられた。そのホストを誰が運用しているのかは確認不可である推定
  • T1027.002Obfuscated Files or Information: Software Packing — 圧縮を解いて初めて出てきた指標が記録にある推定

事実 最後の行に但し書きを付けなければなりません。T1027.002 の根拠である「圧縮を解いて初めて出てきた指標」12件は、別のホスト(31[.]77[.]227[.]121)の検体から出たものです。そのホストの /bins/ 配下の12のアーキテクチャを指しており、表面だけを見てもアドレスはひとつも見えません。**昨日の daredevil 5つが圧縮されているかどうかは記録にありません。**そのためこの行は昨日の検体についての判断ではありません。

事実 T1098.004 の行にも食い違う数字があります。意図の分類は69回なのに、公開鍵のダウンロードイベントは21回です。**3倍以上の差があります。**これは昨日の記録で最大の未解決項目なので、下で別途書きます。

どこかで見たような気がするなら

推定 2016年のMiraiボットネットと配布の形態が重なります。テルネットにハードコードされた既定の資格情報の一覧でログインした後、HTTPサーバーに置いてあるアーキテクチャ別の実行ファイルを機器の種類に合わせて受け取っていく構造です。昨日の「テルネットログイン成功 → ローダーのシェルスクリプト → daredevil 5種」という配置と形が同じです。ソースコードが公開されて派生系が多数存在するという点も併せて知られています。米国 US-CERT/CISA の公開警報 TA16-288A と公開されたソースコードが根拠資料です。

推定 2020年のTeamTNTによるLinux・クラウドを対象としたキャンペーンとは、別の地点で噛み合います。authorized_keys に攻撃者の公開鍵を植えて足場を固め、同じ段階でセキュリティプログラムを無力化しログ・履歴を消す組み合わせです。昨日の永続化69回 · 痕跡削除70回 · 防御無力化2回が同じ日に同時に最高値を記録した形と文脈が通じます。複数のセキュリティ企業の脅威レポートが残っています。

事実 ただし私たちのデータには**コマンドの原文がないため、同じツールだと言う根拠がありません。**そのため「形が似ている」までしか書きません。daredevil は観測されたファイル名にすぎず、系統名やキャンペーン名ではありません。

では何をすべきか

推定 昨日のデータが指し示す順序です。

  1. ~/.ssh/authorized_keys を今開いてみてください。昨日は鍵の植え込み69回、同じ指紋の公開鍵を残した出所21か所です。このファイルにご自身で登録した覚えのない行があれば、それがすべてです。パスワードを全部変えてもその行は残ります。そしてこの鍵は10日連続で同じ指紋なので、10日のうちどの1日でも植え込みに成功したマシンなら今も開きます。
  2. ログを機器の外に保存してください。痕跡削除70回、前日の約3.3倍です。ログがそのマシンの中にしかなければ、消された後に戻す方法はありません。そしてこの記事が成り立った理由がログです — 10日分の記録が残っていたからこそ「69が普段の3倍」と言えます。1日分だけを見れば69もただの69です。
  3. 既定のアカウント・初期パスワードを変えてください。主要セッション5件はすべてログイン成功です。上の表の20の組み合わせのうちひとつでもお使いなら、施錠がないのと同じです。ログイン成功から実行ファイルの確保まで約8秒で終わりました。
  4. **テルネットのような遠隔接続を切ってください。**昨日のトラフィックの約84%はSSHですが、実際に開いたドア5つはすべてテルネットでした。テルネットの比率は 8/24 の約36.7% から昨日約15.9% に下がったのに、結果は同じです。比率が減っても破られる側はそのままだという意味です。しかもテルネットはパスワードがそのまま流れ、鍵認証という選択肢自体がありません — 切る以外に方法がありません。ルーター・ホームカメラの設定で「リモートアクセス」「Telnet」「リモート管理」を探して切っておけば大丈夫です。
  5. **管理接続をインターネットに直接開けておかないでください。**昨日は361か所から1,652件がつながりました。特定の帯域やVPNの後ろからのみ接続を許可していたなら、この361か所のうち大半はセッション自体を開けません。
  6. **機器が外からファイルを受け取れないように塞いでください。**ファイルダウンロード89回、実行権限の付与145回、ダウンロード後の実行82回です。ログインはすでに破られた後なので、ここが実際の被害を防ぐ最後の地点です。出ていく道がなければローダーのメモ書きだけが残り、実行ファイル264,292バイトは到着できません。
  7. ログイン失敗・反復接続を制限しつつ、これひとつで終わらせないでください。同じ発信元が1分48秒間隔で二度入ってきて二度とも成功し、04:29 には2つの発信元が32秒間同時に開いていました。ここまではIP単位のブロックで断てる地点です。ところが 345gs5662d34 の組み合わせは18か所から正確に18回、root/3245gs5662d34 は7か所から7回で1か所につきちょうど1回ずつです。このように散らして叩いてくる側にはIP単位の制限がかかりません。2つの形態が昨日一緒に来たので、ブロックひとつでは半分しか防げません。

事実 順序を変えて書きました。普段なら「パスワードから」が1番なのですが、昨日のデータでは名簿の点検とログの持ち出しが先です。パスワードをいくらうまく変えても、名簿に名前がすでに載っていれば意味がないからです。

昨日一日の全体

セッション 1,652件
ユニークIP 361か所
ログイン試行 1,229回
実行されたコマンド 1,329個
SSH (2222) 1,387件
テルネット (2223) 262件

発信元1か所あたり平均で約4.6セッション、約3.4回の試行です。セッション1,652件は1日を割るとおよそ52秒に1回です。

事実 ここに付け加える値が3つあります。TTY録画1,007件、検体15種、ダウンロードイベント134回です。TTY録画は、そのセッションの中でやり取りされた画面をそのまま巻き戻して見られるように残した記録です。8秒のセッションの中でコマンド5個がどんな順序で流れたのかを再構成できたのは、この録画のおかげです。録画の内容自体はこの記事に含めません。

事実 そして昨日観測された配布元・C2(176[.]65[.]139[.]202、185[.]93[.]89[.]72、5[.]182[.]210[.]174)は C-TAS に通報しました。転送レイヤーでの成功までしか確認されておらず、KISA側での取り込みの有無は別途確認が必要です。

60秒で見る

同じ観測分を短い動画にもしました。動画は1,229回の試行と1本の鍵を並べて置く側に焦点を合わせました。

私たちが分からないこと

このブログは、分かっていることと分かっていないことを分けて書きます。昨日の観測分で確認できなかったものです。

  • 69回と21回の差。「永続化 — SSH鍵の植え込み」は69回なのに、389バイトの公開鍵のダウンロードイベントは21回です。3倍以上開いており、記録が意図のカウントと検体のカウントをつないでくれません。69回すべてがこの鍵を植えたものなのか、一部は別の鍵なのか、ダウンロードとして捕捉されない方式なのかを確認できません。この記事のタイトルがこの数字にかかっているので、最大の未解決項目です。
  • **70と69が一対なのか。**2つの値が1回差であることが、同じセッションで一対として実行された結果なのか、無関係な2つの流れが偶然似た値になったのかを判定する根拠がありません。セッションごとの意図のカウントを与える値がありません。
  • 「防御無力化」2回が誰のものなのか。04:28・04:29 の2つのセッションのものと読みましたが、その2つのセッションの意図がそれぞれ「防御無力化」単独であり、昨日の全体カウントも2回だという個数の一致に基づく推論です。記録が明示していません。
  • **セッション3件の行方。**集計は1,652件なのに、プロトコル別の合計(SSH 1,387 + テルネット 262)は1,649件です。3件がどこに分類されたのか分かりません。
  • **コマンド1,329個と意図の合計1,356回の差27。**コマンド1つに意図が複数付くように見えますが、計算式が記録にありません。
  • **どのポートから入ってきたのか。**主要セッションの接続ポートを2223と書いたのは、テルネット262件とポート2223の262件が正確に同じだということに基づいています。記録が個々のセッションとポートを直接つないでくれません。付け加えると、2222・2223 は私たちの観測装置が開けておいたポートであり、一般のサーバーの22・23とは同じではありません。
  • **ATK-31C779 のセッションが何件だったのか。**一覧に載せた2件のダウンロードの合計は12件なのに、この別名が唯一の配信元である検体6種の観測回数の合計は24件(5+5+5+5+2+2)です。一覧にない同じ別名のセッションがさらにあったように見えますが、何件なのか分かりません。
  • completeness の算式。ATK-50016C は意図がひとつもないのに40であり、ATK-C53A45・ATK-7A654C は意図がひとつなのに42です。計算式が記録にないため説明できません。8/18・8/21・8/22 にも同じ項目が残っています。
  • **ELF5つの指紋が変わった理由。**コンパイルオプションが変わったのか、接続先アドレスのような設定値が新たに埋め込まれたのか、まったく別のコードなのかを判断する根拠がありません。サイズが832〜1,268バイトずつ増えたという事実だけが確認されます。検体の内部を解析した結果はこの記録にありません。
  • **5[.]182[.]210[.]174/ok がなぜ常に1,608バイトなのか。**9日間で指紋10種が出ながら、サイズは毎回正確に同じです。同じ長さの文字列を差し替える方式かもしれませんが、ファイルの内容がないため推測にとどまります。
  • 昨日の最多検体がどんなセッションだったのか。ATK-E150E4 の1か所が31バイトのテキストを46回受け取っていきましたが、アドレスもなく、この別名は主要セッション一覧にもありません。
  • **399バイトの秘密鍵がどのようにセッションに現れたのか。**攻撃者が持ち込んだものなのか、サーバーで作られたものなのかを記録が区別してくれません。
  • **Discord Webhook アドレス1件。**どのセッション・どの検体と結びつくのかが明示されていないため、昨日の記述には使いませんでした。8/17 以降8日間、同じ理由で除外してきました。Webhookのトークン文字列はそれ自体が悪用されうる値なので、本文には書き写しません。
  • **背景の脆弱性統計。**追跡CVE 6,579件 · CISA KEV 387件 · ランサムウェア確認98件と EPSS 上位CVE 5件は、KISAのセキュリティ公示から抜き出した背景の数値です。昨日のハニーポット観測と直接つながりません。
  • 8/24 の合計の誤記。8/24 の記録はELF5種の合計を261,451バイトと書きましたが、同じ記録の個別サイズを足すと259,344バイトです。昨日の増減比較は個別サイズを足し直した値で計算しました。
  • **C-TAS 通報の取り込み・活用の有無。**転送レイヤーでの成功だけが確認されました。

そして、そもそも確認する手段がないものです。これは分からないこととは違います — 推定しない方が正解です。

  • ASN・ISP — GeoIP・ASNデータベースを持っていません。176[.]65[.]139[.]202 · 185[.]93[.]89[.]72 · 5[.]182[.]210[.]174 · 31[.]77[.]227[.]121 がそれぞれどの事業者にあるのか、互いに同じネットワークなのかを言うことができません。
  • 地理的位置 — 同様に未保有です。付け加えると、IPの地理情報はそもそも帰属の根拠にもなりません。マスクされた発信元 94.154.x.x · 45.224.x.x · 124.168.x.x · 220.135.x.x から国を読み取りません。
  • VPN・Tor・クラウドかどうか — 判別する手段がありません。361か所が実際に互いに異なる主体なのか、何か所が同じ経由地なのかは確認不可です。
  • VirusTotal の検知結果 — 未連携です。昨日の daredevil ELF5種とシェルスクリプト4種がウイルス対策ソフトでどう検知されるのか、どの系統と呼ばれるのかを**言うことができません。**検体の分類は MalwareBazaar のタグを使います。
  • User-Agent — SSH・テルネットには User-Agent 自体が存在しません。HTTP攻撃は別ソースです。
  • CVEとの紐付け — SSH・テルネット攻撃は脆弱性を参照しない場合がほとんどであり、昨日の観測分もすべて資格情報でした。どのセッションも特定の脆弱性と結びつけていません。
  • 原文の資料 — この記事の根拠には、コマンドの原文・ペイロードの内容・TTYセッションの再生が含まれていません。そのため「痕跡削除」70回が正確に何を消したのか、「防御無力化」2回が何を切ったのかを言うことができません。
  • daredevil という名前 — 観測されたファイル名にすぎません。マルウェアの系統名やキャンペーン名として解釈していません。
  • 誰なのか — 特定の国家・企業・個人を攻撃者として名指ししません。私たちには地理情報すらありません。

帳簿の話から始めました。

昨日分かったのは、ちょうどその程度です。**ドアを叩いた回数は平凡でした。**1,229回、およそ1分10秒に1回。この数字だけを見れば、昨日は静かな日として記録されるところでした。

ところが、ドアが開いた後が違いました。**常時入館名簿に名前を載せたのが69回、訪問記録簿から行を消したのが70回。**どちらも10日間の最高値であり、ちょうど1つ差です。そして10日間ずっと毎日0か1だった「防御無力化」が初めて2になりました。

名簿に載った名前は10日目も同じ1行、389バイトです。ショートメッセージ2〜3行の長さです。その2行がする仕事は、ドアノブを1,229回回すことよりも長く続きます。

だから昨日のデータが勧めることはひとつです。玄関だけを見ずに**帳簿2つを見てください。**名簿に知らない名前がないか、そして記録簿がそもそもそのビルの中にしかないのではないか。消された後に確認すれば、そこには何も残っていません。


この記事は 2026-08-25 のハニーポット観測分をもとに作成されました。発信元IPはブリーフのマスキング形態のまま表記し、配布アドレスは接続されないように変形(defang)しました。引用した資格情報は、互いに異なるIP3か所以上で観測された20の組み合わせのみを含めており、単一の出所でのみ観測された1,017の組み合わせは個数だけを明かし、値は載せていません。