名札を付け替えた — リストは二日で外れた
昨日、私たちのハニーポットに二日ぶりで実行ファイルが戻ってきました。二日前の配布元とアドレスの先頭が同じ隣の番地から、ファイル名の規則だけそっくり変わった状態で。あらかじめ書き留めておいた悪性ファイル名12個は一つも引っかからず、代わりに一日に三度繰り返された5秒間の行動が残りました。

学校で人を見分ける一番早い方法は名札です。胸に付いた文字を何文字か見ればいい。だから「この名前は売店立入禁止」のようなものを作ると、とてもうまく回ります — 名札を付け替えるまでは。
名札は変えられます。ところが変えにくいものもあります。売店に入っていつも同じものを同じ順序で取って出てくる習慣のようなもの。おにぎりが先、牛乳、その次にゼリー。名札を外して新しく付けても、その順序はそのままです。
昨日、私たちのサーバーに残った記録がまさにその場面でした。名札は替わり、取って出てくる順序はそのままでした。
まず、私たちが書き留めておいた名札のリスト
事実
私たちは悪性ファイルが置かれているアドレス 12個を監視リストに載せています。すべて hxxp://31[.]77[.]227[.]121/bins/ 配下の parm・parm5・parm6・parm64・parm7・pm68k・pmips・pmpsl・pppc・psh4・pspc・x86_64 です。アドレスはわざと壊して書きました(hxxp://, [.]) — そのままコピーして貼り付けても接続されません。
事実
規則が見えますか。/bins/ というフォルダ名、そして p の後ろに CPU の種類を付けたファイル名。 これが私たちの持っていた名札のリストです。
事実 この12個はただで得られたものではありません。UPX という圧縮で包まれていたファイルを解かなければ出てこなかったアドレスです。圧縮された外側だけ見てもアドレスは一つも見えません。かなり手のかかったリストです。
事実
そして一昨日(8/21)初めて現れた配布元 176[.]65[.]139[.]196 は、この規則と文字まで合致しました。 /bins/ のパスに px86・pmips。初めて見るアドレスなのに初日にすぐ同じ系列だと見分けられた理由がそれです。
事実
昨日、実際に落ちてきたファイル名はこうでした。telnet.sh・daredevil.armv7l・daredevil.mips・daredevil.mipsel。フォルダのパスもありません。12個のリストのどの名前とも重なりません。
推定 名札を付け替えたのです。二日です。名前だけで作ったリストの賞味期限がこれだけでした。
ところが学籍番号の先頭は同じでした
事実
昨日そのファイル四つがすべて落ちてきた場所は hxxp://176[.]65[.]139[.]202 一か所です。このアドレスは8/16から8/22まで七日分の記録のどこにもありません。 昨日が初めてです。
事実
ところが一昨日の配布元は 176[.]65[.]139[.]196 でした。前の三節が同じです。 IP アドレスはドットで区切られた四節ですが、前の三節が同じということは同じアドレスブロックの中にあるという意味です。学籍番号の先頭が同じなのと似ています。
事実 ここから一歩踏み込んではいけません。同じクラスだからといって同じ人ではありません。 インターネットアドレスを貸し出す会社は、隣り合ったアドレスを互いに何の関係もない人たちに分け与えます。隣の番地に住んでいることと同じ家に住んでいることは違います。
事実 その上、私たちにはその二つのアドレスが同じ会社の所属かどうか確認する手段さえありません。 どの事業者のアドレスかを教えてくれるデータベースを持っていません。だからこの場では「分からない」が正解です。
昨日一日を時間順に
一日分を順に並べるとこうなります。一番上の二行と一番下の 10:19 の行、この三行の数字が互いにどれほど同じか注目してください。 秒単位まで似ています。
- 事実 昨日の主題セッション①。ATK-31C779(94.154.x.x)、テルネットログイン成功。約5.11秒の間にコマンド3個、ダウンロード4件。意図4種 — 偵察(システム) · ファイルダウンロード · 実行権限付与 · ダウンロード後実行。completeness 25。TTY 録画あり(内容は含まない)。テルネットなので指紋・クライアント値は空文字列だ
- 事実 ATK-31C779 が唯一の配信元である検体は正確に4種でそれぞれ観測3回だ。① hxxp://176[.]65[.]139[.]202:80/telnet.sh — 2,107バイト POSIX シェルスクリプト(ad19b70c…) ② hxxp://176[.]65[.]139[.]202/daredevil.armv7l — 48,352バイト ELF 32-bit LSB ARM EABI4, statically linked, no section header(c71d74ce…) ③ hxxp://176[.]65[.]139[.]202/daredevil.mips — 57,104バイト ELF 32-bit MSB MIPS-I, statically linked, no section header(344bbdca…) ④ hxxp://176[.]65[.]139[.]202/daredevil.mipsel — 58,848バイト ELF 32-bit LSB MIPS-I, statically linked, no section header(9f1897ce…)。四件合計166,411バイト
- 事実 主題セッション②。同じ別名 ATK-31C779 が最初のセッション終了から約53.8秒後に再び入ってきた。約5.03秒、コマンド3個、ダウンロード4件、意図4種、completeness 25 — 最初のセッションとすべての値が同じだ
- 事実 ATK-F2B80A(121.161.x.x)、テルネットログイン成功。約32.6秒の間にコマンド48個(昨日最多)、ダウンロード12件(昨日最多)、completeness 43(昨日の最高値)。ところが意図の配列が空だ。この別名が唯一の配信元である検体は1バイトの空ファイル(01ba4719…、11回)と202バイト POSIX シェルスクリプト(0c99433c…、1回)であり、11+1=12 でダウンロード数と一致する。アーカイブ照合上、8/21 の ATK-792ADF とコマンド48個・ダウンロード12件・検体ハッシュ2種・意図0個・completeness 43 がすべて同じで、継続時間だけが約23.7秒から約32.6秒に伸びた
- 事実 ATK-ADE2BE(45.43.x.x)、テルネットログイン成功。約60.6秒の間にコマンド17個。意図5種で昨日最多 — 偵察(システム) · ファイルダウンロード · 実行権限付与 · ダウンロード後実行 · 永続化(SSH 鍵の埋め込み)。ところがダウンロード数は0だ。completeness 17。8/18(ATK-C17F4E) · 8/19(ATK-103570) · 8/20(ATK-B4B2E2) · 8/21(ATK-4CA329) · 8/22(ATK-5A0689)に続いて六度目の同じ形であり、コマンド17個・意図5種・ダウンロード0件・completeness 17 まで8/21 と完全に一致する
- 事実 主題セッション③。ATK-31C779 の三度目の訪問。二度目のセッション終了から約10時間6分40秒後だ。約4.91秒、コマンド3個、ダウンロード4件、意図4種、completeness 25 — 前の二つのセッションとすべての値が同じだ。未明に二度、昼に一度、三度とも阻止されなかった
- 事実 配布元 176[.]65[.]139[.]202 は8/16~8/22 の七つの記録のどこにもない。8/21 に初観測として記録した 176[.]65[.]139[.]196 と前の三節が同じだが規則は異なる — 8/21 は /bins/ パス・'p+アーキテクチャ' 名(px86・pmips)・statically linked stripped・133,452~244,420バイトであり、昨日はパスのないルート・'daredevil.アーキテクチャ' 名・no section header・48,352~58,848バイトだ。8/22 は ELF が0件だったので二日ぶりの再登場だ
- 事実 hxxp://5[.]182[.]210[.]174/ok から1,608バイト Bourne-Again シェルスクリプトが昨日も落ちてきたが、同じ URL・同じサイズで互いに異なるハッシュ2種が記録された — d3e76949… と 31283c34…、どちらも配信元 ATK-10149C 一か所・それぞれ1回。一日のうちに2種が出たのは8/21 に続いて二度目であり、この URL のハッシュは8/18~昨日までで累計7種だ(6aa5054a · b7728639 · c850a285 · 7a5dcc03 · 6ff53177 · d3e76949 · 31283c34)
- 事実 389バイト OpenSSH RSA 公開鍵(a8460f44…)を互いに異なる配信元6か所が残した。このハッシュは8/16~8/22 にもあったので八日連続だ。配信元数は8/20 8か所 → 8/21 10か所 → 8/22 8か所 → 昨日6か所だ。意図分類の「永続化 — SSH 鍵の埋め込み」は7回で、8/21 11回 → 8/22 9回 → 昨日7回と三日連続で減っている
- 事実 コマンド意図の分布 — 偵察(システム) 980回で全コマンド1,863個の約52.6%(8/22 は26.1%)、実行権限付与212回、ファイルダウンロード55回、ダウンロード後実行50回、痕跡削除7回、永続化(SSH 鍵の埋め込み)7回、偵察(ネットワーク)1回。8/22 に1回記録された「防御の無力化」は昨日は項目自体がない。意図分類の合計は1,312回でコマンド総計と551の差がある
事実
表で目に留まる行が二つあります。一つは 02:13 の ATK-F2B80A — コマンドもダウンロードも昨日最多なのに意図が一つも分類されていません。 もう一つは 06:52 の ATK-ADE2BE — 意図は5種で最も広いのに取得したファイルは0件です。どちらも数字は大きいのに、何があったのかを説明する根拠がありません。だから昨日の主題にはしませんでした。
5秒、一日に三度、値が一つも違わない
事実
昨日の主題にしたのは ATK-31C779(94.154.x.x)です。テルネットで入ってきました。テルネットはとても古い遠隔接続方式です。簡単に言えばインターネットの向こうからその機械のコマンド画面を直接叩けるように開けておく通路ですが、パスワードが暗号化されずそのまま流れます。
事実 滞在時間は約5.11秒です。その間にコマンド3行を入れ、ファイル4個を取得しました。ラーメンの袋を開けるのにかかる時間くらいです。
事実 そして53.8秒後に再び入ってきました。 約5.03秒、コマンド3個、ダウンロード4件。値が一つ目と一つも違いません。
事実
三度目は約10時間6分後の 10:19:30 です。約4.91秒、コマンド3個、ダウンロード4件。やはり同じです。未明に二度、昼に一度。三度ともログインに成功し、三度とも何も止めませんでした。
事実 売店に入っていつも同じものを同じ順序で取って出てくる、あの習慣がここにあります。偵察 → ファイル取得 → 実行権限付与 → 実行。三度とも意図4種が同じで completeness 値も25で同じです。
推定 人が手でやるとこうはなりません。5秒のものを三度繰り返しながらコマンド数とファイル数が一度も違わないのは、決められた順序がそのまま再生されたという意味に近いです。
事実
ただしここでも線を引かなければなりません。私たちは出発地 IP をそのまま残さず、ATK- で始まる別名に変えて記録します。このときソルト(salt)という値を混ぜるので、日付が違えば同じ IP でも別の別名になります。そしてマスキングで残るのは前の二節だけです — 94.154.x.x 帯域だけでもアドレスが65,536個もあります。8/21に実行ファイルを取得したセッションも表記が 94.154.x.x でしたが、同じ場所だとは言えません。
取得した四つが何だったのか
事実 四つの正体はこうです。
| ファイル | サイズ | 正体 |
|---|---|---|
telnet.sh |
2,107バイト | POSIX シェルスクリプト |
daredevil.armv7l |
48,352バイト | ELF 32-bit LSB ARM EABI4 · statically linked · no section header |
daredevil.mips |
57,104バイト | ELF 32-bit MSB MIPS-I(ビッグエンディアン) · 上と同じ |
daredevil.mipsel |
58,848バイト | ELF 32-bit LSB MIPS-I(リトルエンディアン) · 上と同じ |
聞き慣れない言葉が四つあるので、その場で解きます。
- シェルスクリプト — コマンドを順に書き留めておいたメモ用紙です。人が一行ずつ打つ代わりにファイル一つを実行すると、書かれた順に動きます。2,107バイトなら A4 一枚に満たない文字量です。
- ELF — Linux で使う実行ファイル形式です。Windows の
.exeに相当すると考えればいいです。 - statically linked(静的リンク) — 必要な部品を全部中に入れて持ち歩くという意味です。外から何も借りないので、その CPU を使う Linux なら種類・バージョンに関係なく動きます。
- no section header(セクションヘッダなし) — ファイル内の区画を分けて書いておいた案内板を取り外したという意味です。解析する側を難しくします。
事実
armv7l・mips・mipsel はすべてCPU の種類です。互いに互換性がありません。だから三つとも取得したのです — どれが合うか分からないので三つとも確保するやり方です。
事実 ここで昨日のデータの特徴が一つ出てきます。一般 PC・サーバーで動く x86 系の実行ファイルは一件もありません。 ARM・MIPS・MIPSEL はルーター・IP カメラ・NAS のような機器側でよくある規格です。8/21には x86 と MIPS が一緒に来ていましたが、昨日は機器側だけが来ました。
事実 四つを合わせると166,411バイトです。写真一枚が普通これよりずっと大きいです。それが約5秒で入ってきて、三度合わせると約487KB が通過しました。
推定 昨日このホストを続けて見られるようにしてくれたのは名前ではありません。 ① アドレスの前三節が二日前のホストと同じという点、そして ②「テルネットでログイン → 小さなシェルスクリプト一つ → CPU 種類別の静的リンク実行ファイル」という行動の形でした。名札ではなく取って出てくる順序の方です。
指紋が取れる層と、実際に破られる層
事実 SSH で入ってくる接続にはクライアント指紋が残ります。接続プログラムが最初に交わす挨拶の構成がツールごとに少しずつ違うので、その値をまとめると「出発地は違っても同じプログラム」だと分かります。昨日この指紋のまとまりは40個で8/22 と同じ、記録上最多タイです(8/17 33 → 8/18 36 → 8/19 37 → 8/20 37 → 8/21 38 → 8/22 40)。
事実
最大のまとまりは f555226df1963d1d3c09daf865abdc9a(SSH-2.0-libssh_0.9.6)で、昨日 IP 7か所・累計201か所です。8/22 には8か所・累計182か所だったので、累計が一日で19か所増えました。
事実 ところがリストに載った9個のまとまりは一つも検体を落としませんでした。 三日連続0個です。
事実 逆に昨日実行ファイル三つを実際に取得したセッションはテルネットなので指紋・クライアント値が空文字列です。完結性上位5つのセッションが全部そうです。テルネットにはその挨拶の手順がそもそもありません。
推定 まとめると指紋が取れる層(SSH · 1,246セッション)と実際に物が落ちてくる層(テルネット · 277セッション)が三日連続で分かれています。指紋のまとまりを40個も数えてみても、昨日実行バイナリがどこから入ってきたのかはその40個が教えてくれません。
事実
だから昨日の三つのセッションを一つにまとめた根拠は指紋ではありません。別名(ATK-31C779)とセッションの形(コマンド3個・ダウンロード4件・意図4種・completeness 25)、そして四つの検体の配信元がこの別名一か所だけだという点です。これは同じツール・同じ自動実行順序を使ったという意味であって、同じ組織・同じ人だという意味ではありません。 指紋の値もまたビルドの指紋であって人の指紋ではありません — 同じディストリビューションの標準接続プログラムを使う、互いに知らない人たちも同じ値を持ちます。
どうやって入ってきたか — 昨日もパスワードです
事実 昨日のログイン試行は1,187回です。観測区間を一日として見ると約73秒に一度の割合で誰かがドアノブを回してみた計算になります。セッション1,523件は約57秒に一度の割合で新しい接続が入ってきたということです。(ただしこの記録に観測区間が明示されていないため、一日全体を仮定した計算です。)
事実 出発地は222か所です。8/18(249か所)以降で最も多いです。一か所あたり平均約6.9セッション、約5.3回の試行です。
事実 互いに異なる IP 3か所以上で観測された組み合わせだけを抜き出すとこうなります。
| ID | パスワード | 観測された IP 数 |
|---|---|---|
| admin | admin | 17か所 |
| 345gs5662d34 | 345gs5662d34 | 7か所 |
| root | admin | 6か所 |
| root | root | 6か所 |
| root | 12345 | 5か所 |
| root | 1234 | 5か所 |
| root | admin123 | 4か所 |
| root | (空のパスワード) | 3か所 |
| root | passw0rd | 3か所 |
| root | 123 | 3か所 |
| admin | admin123 | 3か所 |
| admin | 1234 | 3か所 |
| root | 123456 | 3か所 |
| ftp | ftp | 3か所 |
| root | vizxv | 3か所 |
事実 八行目を見てください。パスワード欄が空です。 互いに異なる三か所がそれぞれ「ただの空欄」でログインを試みました。それが通る機械があると知っているという意味です。
事実 そして1,007個の組み合わせは載せませんでした。互いに異なる IP 3か所未満でのみ出たものです(8/16 934 → 8/17 830 → 8/18 1,388 → 8/19 848 → 8/20 440 → 8/21 806 → 8/22 703 → 昨日 1,007)。一か所からのみ出た組み合わせは、どこかで実際に流出した誰かのアカウントである可能性があるので、値は書かず個数だけ数えます。
事実 ここに奇妙な点が一つあります。ログイン試行の総量は8/22の約3分の1に減ったのに、「一、二か所からのみ出た組み合わせ」はむしろ1.43倍になりました。ボットたちが互いに重ならないリストを回したという意味かもしれませんが、データが確認してくれません。
事実 そして上の表に載った15個の組み合わせの試行を全部合わせても97回です。全体1,187回の約8.2%。私たちが公開できるのは昨日の観測の一部だという意味です。
事実 昨日も CVE やエクスプロイトを参照した侵入経路はありませんでした。全部が資格情報でした。
残していったもの
昨日観測された検体とアドレスの全部です。値を押すとコピーされます — ハッシュは読むためにあるのではなく遮断リストに入れるためにあります。hxxp:// と [.] はそのままにしてあります。
ad19b70c4e523ef24baf5e062d2200e139b619b56049219d41cd0397faff2c402,107バイト POSIX シェルスクリプト · 配信元1か所(ATK-31C779) · 3回 · 8/16~8/22 になかった新規ハッシュかつ新規ホストhxxp://176[.]65[.]139[.]202:80/telnet.sh上のスクリプトのアドレス。このホストは昨日が初観測だc71d74ce79b23052d26619ccc3c967fa46d2fd97328369b22565ac84f902888248,352バイト ELF 32-bit LSB ARM EABI4 · statically linked · no section header · 配信元1か所(ATK-31C779) · 3回 · 新規ハッシュhxxp://176[.]65[.]139[.]202/daredevil.armv7l上の実行ファイルのアドレス。パスがなく名前の規則が監視リスト12個と重ならない344bbdca6cc3f80f2d996398fa443c3dd7c98575b85cebc26df684ba04aa936957,104バイト ELF 32-bit MSB MIPS-I(ビッグエンディアン) · statically linked · no section header · 配信元1か所(ATK-31C779) · 3回 · 新規ハッシュhxxp://176[.]65[.]139[.]202/daredevil.mips上の実行ファイルのアドレス9f1897ced87b33877e10b8185c97ba0ec386e53b04a82b5e942f05f56db18bd958,848バイト ELF 32-bit LSB MIPS-I(リトルエンディアン) · statically linked · no section header · 配信元1か所(ATK-31C779) · 3回 · 新規ハッシュhxxp://176[.]65[.]139[.]202/daredevil.mipsel上の実行ファイルのアドレス。上の三件と合わせて一セッションあたり166,411バイトだa6296a79f44e21b76604d2d2bbf795d2cf380f70e39d45fbf166707ff3b4a6a4306バイト POSIX シェルスクリプト · 配信元6か所(ATK-4DB3DE · ATK-862D72 · ATK-C1543C · ATK-F0EFFC · ATK-A840CC · ATK-34F42D) · 6回 · 8/17~8/22 と同じハッシュで七日連続であり、配信元数は8/22 15か所から6か所に減ったhxxp://185[.]93[.]89[.]72/wget上のスクリプトのアドレス。七日連続で同じアドレス・同じハッシュa8460f446be540410004b1a8db4083773fa46f7fe76fa84219c93daa1669f8f2389バイト OpenSSH RSA 公開鍵 · 配信元6か所(ATK-2AE2F2 · ATK-86A608 · ATK-77F398 · ATK-C26F79 · ATK-38BDE5 · ATK-B69AB0) · 6回 · URL 未記録 · 8/16~8/22 と同じハッシュで八日連続。8/17 の記録はこのファイルを「外部ダウンロードではなくセッション内で作られたもの」と記していた01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b1バイト、種類を見分ける印のない空ファイル · 配信元1か所(ATK-F2B80A) · 11回 · URL 未記録 · 8/17 121回・配信元2か所、8/18・8/21・8/22 各11回・配信元1か所、昨日11回・配信元1か所で四度目の同じ値だ0c99433c7d433d65ab890dcee20b330f262379d532bc76f91e18f09ecfa5fb54202バイト POSIX シェルスクリプト · 配信元1か所(ATK-F2B80A) · 1回 · URL 未記録 · 8/21 にも同じハッシュが1バイトファイル11件とともに一つのセッションから出たd3e769491e805b832c07c947c928b8ac419d2a9e2bc94ba2dc2dc75637ee4f361,608バイト Bourne-Again シェルスクリプト · 配信元1か所(ATK-10149C) · 1回 · 新規ハッシュ31283c34d08e608bfa2d2f785c6cd4b018635c8c6d5ca01cc8469089b23f1aa41,608バイト Bourne-Again シェルスクリプト · 配信元1か所(ATK-10149C) · 1回 · 上の d3e76949… と同じ URL・同じサイズ・同じ配信元なのにハッシュが違う · 新規ハッシュhxxp://5[.]182[.]210[.]174/ok上の二つのスクリプトのアドレス。アドレスもサイズもそのままなのに中身だけが変わる — 8/18 以来累計7種4af5a5c98ad132095c6fbe7b02c242153a190a01cc321e50a916a0ca46fbaa629バイト ASCII テキスト · 配信元1か所(ATK-BECAD3) · 6回 · URL 未記録 · 8/18~8/22 にも同じハッシュがあった。内容が記録にないため何であるかは判断しないa9b1c85a7bd78dd1112ecc75c9070ea8c53078831a17aa09ebeb287fe6e21b729バイト ASCII テキスト · 配信元1か所(ATK-0C24D1) · 1回 · URL 未記録 · 8/21 にも下の 1193dde1… と対で出たが、そのときは別の別名だ1193dde1c831808bf6f2db6f5b850b846b8a7f870873ec3b8a347f21cc5d96e39バイト ASCII テキスト · 配信元1か所(ATK-0C24D1) · 1回 · URL 未記録 · 上の a9b1c85a… とともにこの別名のダウンロード2件を成すhxxp://31[.]77[.]227[.]121/bins/ 系列12件 (parm · parm5 · parm6 · parm64 · parm7 · pm68k · pmips · pmpsl · pppc · psh4 · pspc · x86_64)圧縮を解かなければ出てこなかった監視リスト。昨日もダウンロード0件で四日連続であり、引き続きリストに載せておく事実
リストの中で hxxp://5[.]182[.]210[.]174/ok の二行が目に留まります。アドレスも同じでサイズも1,608バイトで同じなのにハッシュだけが違います。 一日のうちに二種類です。8/18 以来このアドレス一つだけから累計七種類が出ました。同じ場所に置かれたファイルが静かに入れ替わったという意味です。「このファイルは危険」とハッシュに名札を付けて防ぐやり方がなぜいつも遅れるのか、この二行が答えです。
事実
そして389バイトの OpenSSH RSA 公開鍵が八日目も同じハッシュで出ています。389バイトならショートメッセージ二、三行の分量です。この小さなファイルが authorized_keys(許可された鍵のリスト)に一行として入ると、パスワードなしで入れる鍵が玄関に一つ掛かります。パスワードを全部変えてもその鍵は残ります。
攻撃段階に移すと
観測された行動を MITRE ATT&CK という国際分類表に対応させるとこうなります。ID を押すと原文の説明を直接見られます — 私たちの言葉を信じずに確認していただいて構いません。すべて[推定]です。 私たちが見たのはコマンドであって攻撃者の意図ではありません。
- T1110Brute Force推定
- T1078.001Valid Accounts: Default Accounts推定
- T1059.004Command and Scripting Interpreter: Unix Shell推定
- T1082System Information Discovery推定
- T1016System Network Configuration Discovery推定
- T1105Ingress Tool Transfer推定
- T1222.002File and Directory Permissions Modification: Linux and Mac推定
- T1098.004Account Manipulation: SSH Authorized Keys推定
- T1070Indicator Removal推定
- T1608.001Stage Capabilities: Upload Malware推定
事実
二行に但し書きを付けなければなりません。T1016(ネットワーク偵察)は昨日わずか1回と分類された意図一つだけに根拠があります。T1070(痕跡消去)も7回だけで、コマンドの原文がないため何を消したのか言えないので、より細かい下位技法は付けませんでした。最後の T1608.001 は一つのホストがローダースクリプト1種と CPU 別の実行ファイル3種を一緒に送り出したという事実に基づくものであり、そのホストを誰が運用しているのかは確認できません。
どこかで見た気がするなら
推定
2016年から続く Mirai ボットネット系列およびその派生と進入構造が同じです。テルネットの初期パスワードで入った後、Web サーバーから小さなシェルスクリプトのローダーをダウンロードし、CPU 種類別に別々に作った静的リンク実行ファイルを順に試すやり方です。昨日 ATK-31C779 が取得した組み合わせ — 2,107バイトのローダー一つ + ARM・MIPS・MIPSEL 静的リンク ELF 三つが一つのホストから一セッションで一緒に落ちてきたこと — がこの構造と合い、引用した資格情報15個がすべて初期値・単純な組み合わせであり、完結セッション5件が全部テルネット・パスワード経路だという点も合います。米国司法省の起訴・有罪答弁の記録が残っており、複数ベンダーの公開分析レポートがある事件です。
推定 Gafgyt(Bashlite/Lizkebab)系列とも噛み合います。テルネット・弱いパスワードで Linux 機器に入った後、シェルスクリプトが CPU 別の静的リンク実行ファイルをダウンロードして実行させる構造です。昨日観測された三つの規格がサーバー用の x86 なしで機器系列のみで構成されている点、検体サイズが48~59KB と小さい点がこの構造と合います。
事実 二つの事例がただ一つ指摘してくれることがあります。どちらもソースが公開された系列なので、互いに何の関係もない運用者がそれぞれ配布元を立てて同じ順序を回すことがよくあります。 昨日「二日前と違う名前の規則を使う新しいホスト」が出てきたのも、この方向と矛盾しません。
事実
ただしこれらの事例が昨日の個別の判断まで確認してくれるわけではありません。 二つのホストの関係も、daredevil という名前がどの系列なのかも同じです。ファイル名は名前でしかなく、系列の名称ではありません。
では何をすべきか
推定 昨日のデータが指し示す順序です。
- 初期アカウント・初期パスワードを変えます。 ログイン試行1,187回、完結セッション5件は全部ログイン成功です。昨日実行されたコマンド1,863個は全部ログインに成功した後に実行されたものです。主題セッションはログイン成功から実行ファイル三つの確保まで約5.1秒かかり、同じことを一日に三度繰り返しました。上の表の組み合わせをお使いなら、それがすべてです。
- 機器が外からファイルを取得できないように塞ぎます。 昨日のファイルダウンロード55回、実行権限付与212回、ダウンロード後実行50回です。外に出る接続が塞がれていたなら
ATK-31C779の三つのセッションとATK-F2B80Aはダウンロードの段階で全部切れます。 ログインはすでに破られた後なので、ここが実際の被害を防ぐ最後の地点でした。その上、昨日落ちてきた三つの実行ファイルは静的リンクなので Linux の種類・バージョンと無関係に動き、セクションヘッダがないため解析も難しいです。 - テルネットのような遠隔接続を切ります。 昨日のテルネットは全セッションの18.2% です。8/22 の33.9%から戻りました。ところが実際に破られてコマンドが実行されたセッションの割合は8/22 も昨日も100%です。 トラフィックの割合で防御の順序を決めると毎日外れます。ルーター・ホームカメラの設定で「遠隔接続」「Telnet」「リモート管理」を探して切っておけばいいです。テルネットはパスワードがそのまま流れ、鍵認証という選択肢自体がありません — 切る以外に方法がありません。
- ログイン失敗の回数を制限します。
admin/admin一つの組み合わせが17か所から37回叩かれたのに何も引っかかりませんでした。同じ出発地が1分以内に二度、そして十時間後に三度目として入ってきても止められませんでした。同時にセッション一つが5秒で終わるので、「長くつながっている接続」や「ゆっくり積み上がる試行」を基準にした閾値にはそもそも引っかかりません。 遮断の判断が5秒より遅ければ、その遮断は事後措置です。 ~/.ssh/authorized_keysファイルが変わったら通知を受けます。 昨日の鍵埋め込みの意図7回、同じハッシュの公開鍵を残した配信元6か所です。ATK-ADE2BEは検体を一件も保存できなかったセッションなのに、鍵の埋め込み段階まで分類されました。ファイルを一つも取得しなかったセッションにはウイルス対策が検査する実行ファイル自体がありません。 鍵ファイルを直接覗き込まなければ、破られたという事実自体が分かりません。- ログを機器の外に保存します。 痕跡削除が7回観測されました(8/18 19 → 8/19 13 → 8/20 8 → 8/21 12 → 8/22 8 → 昨日 7)。そして昨日この記事が成立した理由がログです。 TTY 録画のおかげで5秒のセッションの中でコマンド3個とダウンロード4件がどう流れたのかを辿ることができ(内容はこの記事に含めません)、七日分の記録を消さなかったからこそ「新しい配布元が二日前のホストと前三節が同じでありながら名前の規則だけが違う」ことと「
ATK-F2B80Aセッションが8/21 のセッションと五つの値が同じ」ことが分かりました。一日分だけ見ればどちらも「初めて見るもの」として記録されます。 - ファイル名・ハッシュのリストだけで作った遮断ルールには賞味期限があると前提して運用します。 昨日がその証拠です。12個のリストに引っかかったのは0個でした。
事実 「パスワードの代わりに鍵認証を使ってください」は昨日のデータでは中程度の推奨です。昨日ログインに成功した完結セッションは全部テルネットであり、テルネットには鍵認証がありません。 そして1,187回のうち SSH の分がどれだけかをデータが分けてくれないため、「鍵認証を有効にしていたら昨日の侵入は防げた」と言う根拠がありません。
昨日一日の全体
| セッション | 1,523件 |
| ユニーク IP | 222か所 |
| ログイン試行 | 1,187回 |
| 実行されたコマンド | 1,863個 |
| SSH (2222) | 1,246件 |
| テルネット (2223) | 277件 |
出発地一か所あたり平均約6.9セッション、約5.3回の試行です。
事実 8/22 と並べて置くと、セッションは3,553→1,523、コマンドは7,574→1,863、ログイン試行は3,324→1,187 と全部戻りました。 テルネットも1,203→277 と約4.3分の1になり、8/19・8/20・8/21 の299・297・281 と同じ帯に復帰しました。減った日に実行ファイルが戻ってきました。 トラフィックの総量と実際の被害は同じ方向に動きません。
昨日観測された配布元・C2(176[.]65[.]139[.]202, 185[.]93[.]89[.]72, 5[.]182[.]210[.]174)と監視リストの 31[.]77[.]227[.]121 は C-TAS に通報しました。昨日の通報分の核心は新規ホスト 176[.]65[.]139[.]202 とそのホストが送り出した検体4種のハッシュです。伝送レイヤーの成功のみ確認されており、KISA 側での取り込みの有無は別途確認が必要です。
60秒で見る
同じ観測分を短い映像でも作りました。映像はあらかじめ書き留めておいた名前12個が一つも引っかからなかったという側に焦点を当てました。
私たちが分からないこと
このブログは分かっていることと分からないことを分けて書きます。昨日の観測分で確認できなかったことです。
176[.]65[.]139[.]202(昨日)と176[.]65[.]139[.]196(8/21)が同じ運用者なのか。 前三節が同じですが、同じアドレスブロックの無関係な隣人である可能性があります。インターネットアドレスを貸し出す会社は、隣り合ったアドレスを互いに無関係な利用者に割り当てます。その上、私たちには事業者情報がないため二つのアドレスが同じ会社の中にあるかどうかさえ確認できません。- 8/21 のホスト(
.196)が昨日も記録にない理由。 二日連続0件です。消えたのか、生きているのに私たちのハニーポットへ要求が来なかったのかを区別できません。8/22 に残した同じ項目が昨日も解けませんでした。 - 監視リスト12個が四日連続0件の理由。 同様に配布元が止まったのか私たちの方に来なかったのかを区別できません。
daredevilが何なのか。 観測されたファイル名でしかありません。マルウェアの系列名やキャンペーン名として解釈しておらず、データがその根拠を与えてくれません。ATK-31C779の三つのセッションでコマンドは3個なのにダウンロードが4件である理由。 コマンド一つが複数のファイルを取得したのか別の理由なのか、コマンドの原文がないため言えません。四つの検体の配信元がこの別名一か所だけであり各観測が3回なので三つのセッションとぴったり合いますが、データがセッションと検体を直接つなぐ項目はありません — 個数が合うということに基づく推論です。- なぜ一日に三度、そのうち二度は1分以内に繰り返されたのか。 前のセッションが失敗して再試行したのか、元々そう回るのかを区別する根拠がありません。三度ともログインに成功し、ダウンロード数も同じです。
ATK-F2B80Aの意図がなぜ一つも分類されなかったのか。 コマンド48個なのに意図の配列が空で、completeness は43 と昨日の最高値です。計算式がデータにないため説明できません。8/18・8/21・8/22 にも同じ項目が残っています。- 1バイトの空ファイルが11回繰り返し保存された理由。 ダウンロード失敗の結果なのか意図された動作なのか分かりません。8/17・8/18・8/21・8/22 にも同じ項目が残っています。
ATK-ADE2BEがダウンロードに失敗したのか、取得したのに保存できなかったのか。 意図には「ファイルダウンロード」「ダウンロード後実行」があるのにダウンロード数は0 です。8/18 以来六度目です。- 昨日の
ATK-F2B80Aセッションと8/21 のATK-792ADFセッションが同じ出発地なのか。 五つの値が一致しますが、別名はソルトを混ぜて作るので突き合わせられません。確認できるのはセッションの形と検体ハッシュが同じだというところまでであり、これは同じツール・同じ自動実行順序を使ったという意味であって、同じ組織・同じ人だという意味ではありません。 継続時間が約23.7秒から約32.6秒に伸びた理由も分かりません。 - 8/21 の実行ファイルを取得したセッションと昨日の主題セッションが同じ場所なのか。 どちらもマスキング表記が
94.154.x.xです。しかしマスキングで残るのは前の二節だけなので、この帯域だけでもアドレスが65,536個あり、別名は日付間の比較が不可能です。同じ出発地だとは言えません。 hxxp://5[.]182[.]210[.]174/okが一日に二種類を送り出した理由。 要求のたびに新しく作られるのか短い周期で入れ替えられるのか分からず、内容を保持しないため何が変わったのかも言えません。8/18 以来このアドレスのハッシュは累計7種です。- 同じハッシュの公開鍵を6か所が残した理由。 同じツールを使った結果なのか鍵を共有した結果なのか分かりません。別名のせいで日付間の配信元数を合算したり同じ出発地として追跡したりすることもできません。
- 9バイト ASCII テキスト3種(
4af5a5c9…・a9b1c85a…・1193dde1…)が何なのか。 内容が記録にありません。a9b1c85a・1193dde1は8/21 にも一つの別名から対で出ましたが昨日は別の別名であり、別名は日付間の照合が不可能です。 - コマンド総計1,863個と意図分類の合計1,312回の差551 がなぜ生じるのか。 一つのコマンドが複数の意図に分類されるのか、分類されないコマンドがあるのか説明がありません。偵察(システム)の割合が8/22 の26.1%から昨日52.6%に戻ったのも同じ原因かもしれませんが確認できません。
- 引用しなかった1,007個の組み合わせの試行回数。 引用した15個の試行合計は97回で全体の約8.2%です。1,007個は「組み合わせの数」であって「試行の数」ではないので、残り1,090回がどう分布するのか計算できません。
- テルネットが1,203件から277件に減ったのにユニークな出発地は205か所から222か所に増えた理由。 8/22 の急増が何だったのか、昨日の減少が何によるものなのか説明がありません。
- 指紋のリストが上位何個なのか全数なのか。 クラスタの総計は40 なのにリストは9個です。したがって「昨日検体を配信したクラスタがない」というのはその9個の範囲内での事実です。
0425c279…(SSH-2.0-PuTTY_Release_0.70)の累計集計。 昨日は当日2か所・累計3か所ですが、8/21・8/22 の記録は当日3か所 = 累計3か所でした。累計集計の開始時点と更新方式が明示されていないため日付間の解釈が不可能です。SSH-2.0-ZGrab ZGrab SSH Survey(指紋dd9bcf09…、昨日 IP 2か所・累計42か所)の性格。 公開されたインターネットスキャナーツールの名前ですが、研究・測定目的なのか攻撃準備なのかこのデータでは区別できません。- Discord Webhook URL 1件。 どのセッション・どの検体とつながるのか明示されていないため、昨日の事実関係に入れませんでした。8/20・8/21・8/22 も同じ理由で除外しました。Webhook のトークン文字列はそれ自体が悪用され得る値なので本文に移しません。
- 集計数値が一日全体を覆うのか。 主要なセッションが UTC 00:11~10:19 にわたっており、生成時刻は15:05Z です。観測区間が明示されていません。上で「約73秒に一度」と書いたのも一日全体を仮定した計算です。
tty_recordings_available(148)・samples_on_honeypot(52)と集計 TTY 録画(1,063件)・検体13種の関係。 説明がありません。- 背景の脆弱性統計が一日で増えた理由。 追跡 CVE が4,556件から6,548件へ1,992件増え、CISA KEV の登載も345→385、ランサムウェア関連も95→98 に増えました。収集範囲が変わったのか実際の増加なのか説明がありません。これは KISA セキュリティ公示に基づく背景統計であり昨日の観測と直接つながりません — 昨日観測された侵入経路は全部が資格情報でした。
- C-TAS 通報の取り込み・活用の有無。 伝送レイヤーの成功のみ確認されました。
- 意図のリストが実行順序を意味するのか。 明示されていないため、この記事は意図の配列の順序を段階の進行順序として読みませんでした。
そしてそもそも確認する手段がないものです。これは分からないこととは違います — 推定しない方が正解です。
- ASN・ISP — GeoIP・ASN データベースを持っていません。推定しません。新しい配布元
176[.]65[.]139[.]202と8/21 の176[.]65[.]139[.]196が同じ事業者・同じネットワークにあるのかも言えません。 - 地理位置 — 同じです。IP の地理情報はそもそも帰属の根拠にもなりません。昨日三度入ってきた出発地がどこなのか言えず、特定の国・企業・個人を攻撃者として名指ししません。
- VPN・Tor・クラウドかどうか — 判別する手段がありません。同じ出発地が一日に三度入ってきたのが固定回線なのか一時的に借りたものなのかを区別できません。
- VirusTotal の検出結果 — 未連携です。昨日保存された検体13種、特に ELF 3種がどの系列として検出されるのかこのデータでは言えません。検体の分類は MalwareBazaar のタグを使います。
- User-Agent — SSH・テルネットには User-Agent 自体が存在しません。配布元へ出た要求がどのツールだったのかもこのソースでは分かりません。HTTP 攻撃は別のソースです。
- CVE との関連 — SSH・テルネット攻撃は脆弱性を参照しない場合がほとんどで、昨日の観測分も全部がパスワードを狙ったものでした。
名札の話で始めました。
昨日分かったのはちょうどその程度です。名札は二日で替わりました。 私たちが手で圧縮を解きながら書き留めておいた12個は一つも引っかかりませんでした。学籍番号の先頭が同じだということは分かりましたが、同じクラスだからといって同じ人ではありません。
残ったのは順序でした。テルネットで入ってきて、メモ用紙一枚を受け取り、CPU 種類別に実行ファイル三つを確保して、5秒で出ていきます。それを一日に三度やりました。名前は変えられますが、順序は変えにくいです — 変えたら動かないからです。
そしてその三つは全部PC 用ではなく機器用でした。今この記事をご覧の画面の裏でインターネットをつないでいるルーター、居間の隅のホームカメラ、机の下の NAS。昨日5秒の間に三度確保していったのが、その機械たちで動く物です。
この記事は 2026-08-23 のハニーポット観測分をもとに作成されました。出発地 IP はブリーフのマスキング形態のまま表記し、配布アドレスは接続されないように変形(defang)しました。引用した資格情報は互いに異なる IP 3か所以上で観測された15個の組み合わせのみを含めており、それ未満でのみ観測された1,007個の組み合わせは個数だけを明かし値は載せていません。
