世界を動かす技術を、日本語で。

Show HN: Knock-Knock.net – サーバーの扉を叩くボットを可視化する

概要

  • KNOCK-KNOCK.NET は、インターネットサーバへのボット攻撃を可視化するサイト
  • リアルタイム でボット活動を観察可能
  • 過去の攻撃データや統計情報の提供
  • 攻撃元やよく使われるユーザー名・パスワードの分析
  • 問い合わせ先も案内

KNOCK-KNOCK.NETの概要

  • インターネット上で 保護されていないサーバ を公開した際に発生するボット攻撃の可視化サイト
  • サーバの ドアをノックするように 多数のボットがアクセスを試みる現象の観察
  • この現象は「 インターネットのバックグラウンド放射線」とも呼ばれる

主な機能

  • リアルタイム でボットによる攻撃の可視化
  • 攻撃の 履歴統計情報 の提供
    • 攻撃元の 地理的位置
    • よく使われる ユーザー名やパスワード のリスト
    • 最も多く攻撃を仕掛けている ISP(インターネットサービスプロバイダ)
    • 一部のケースでは、なぜそのユーザー名やパスワードが選ばれたかの 解説

使い方・楽しみ方

  • 攻撃の リアルタイム観察 によるセキュリティ意識の向上
  • サイバー攻撃の 傾向分析 や教育用途での利用
  • サイトへの 質問やコメント は指定の連絡先へ送信

Hackerたちの意見

OPです。サイト: https://knock-knock.net ポート22が開いてるサーバーは、SSHをブルートフォースしようとするボットにめちゃくちゃ攻撃されてるよ。接続を受け入れて、試された認証情報を記録して、3D地球儀のライブダッシュボードに表示するハニーポットを作ったんだ。面白いことに気づくと思うよ: - ボットはどこでも同じパスワードを試す — 「admin」、「123456」、「password」が定番。スペースボールのパスワードもトップ10に入ってるよ。 - 特定の国やISPがリーダーボードを支配してる - 攻撃は波のように来る — 1分間何もないと思ったら、1つのIPから50回のバーストが来たりする - ジョークパネルもあるよ、だって我慢できなかったから。子供たちが「誰があなたのコンピュータにログインしようとしてるの?」って聞いたのがきっかけ。スタックはPython(ハニーポット用にFastAPI + paramiko)、リアルタイム更新にRedis pub/sub、統計用にSQLite、可視化にglobe.glを使ってる。WebSocketで、ノックが発生するたびにブラウザにプッシュされるよ。全体で$6.75/年のVPSで動いてる。ドメインの方がサーバーより高い。ソース: https://github.com/djkurlander/knock-knock

いいね!これを多くの人が使ってくれるのを楽しみにしてるよ。みんなが自分のURLを./contribディレクトリに追加できるといいな。フィードストアから帰ったら、これをセットアップするかもしれない。

よくやった、OP。

これいいね。どのVPSサービスを使ってるの?シンプルなウェブアプリをデプロイするために小さなEC2インスタンスを立ち上げるのをやめたいんだ。

誰があなたのコンピュータにログインしようとしてるの? それが質問に答えるのにどう役立つと思う?最近はプロキシが簡単に手に入るから、回転してるとその背後に何があるか特定するのが難しいよね。

すごい、面白かった!シェアしてくれてありがとう。10年以上前にボットを追いかけてたことを思い出したよ。オランダがボットの王者で、次にアメリカが続くって感じだった。今もオランダが強いね。

いいプロジェクトだね!でも、https://objective-see.org/products/knockknock.html と knockd: https://wiki.archlinux.org/title/Port_knocking についても教えておきたかった。ちょっと差別化したいなら、一般的な名前だよ。

公開鍵認証だけでログインを許可するSSHサーバーについて何か知見はある?ボットはパスワードが使えないとわかるとすぐに去るのかな?

わお、めっちゃ美しいね、マジで。これ好きだわ!$6.75/年のVPSってどれ使ってるの?

美しいね。ユーザーがスループットや出現感を感じられる「特定のタイムラインを再生する」機能を追加することを考えたことある?Gourceがgitに対してやったみたいに。[1] https://gource.io/

これすごく興味深いんだけど、ほとんどのボットはすでに侵害されたサーバーで動いてるのかな?もしそうなら、オランダやDigital Oceanが一番多い組み合わせなの?普通の人が使ってるからかな、それとも他に理由があるの?

多くのボットは侵害されたサーバーだよ。DigitalOceanは確かに大きなISP/プロバイダーの一つだけど、もしASNのIPあたりのノックの比率を見たら、DigitalOceanがまだトップにいると思うよ。調べてみるね。プロバイダーは悪用されているIPをシャットダウンできるから。毎晩、攻撃をabuseIPDB.comに報告するスクリプトを回してるよ(knock-knockのGitHubリポジトリのextrasフォルダに含まれてる)。でも、プロバイダーによっては全然気にしないところもある。

いいね!「ノッキング」IPアドレスのリストってどこかに公開してるの?(abuseipdb.comが挙げられてたけど、100kのブロックリストのためにサービスにお金払う必要があるかも)前に関連するHNスレッドでも言ったことあるけど、サービスを動かしてないポートへの着信接続をログに記録する設定をしてるんだ。定期的にログをフィルタリングして、IPアドレスを抽出してブロックリストに追加してる。私の理論は、サービスがないポートにトラフィックが来てるなら(そのトラフィックが存在する理由は全くないから)、それは悪意のあるものだってこと。悪意があるなら、そのIPアドレスからのデータを信頼する理由はないよね。これはOPNSenseファイアウォールのルールとログに基づいてて、ここに適当にドキュメントがあるよ:https://github.com/UninvitedActivity/UninvitedActivity ほとんどのIPアドレスは12ヶ月後にログから消える。自分でキュレーションしたログや他のプロジェクトから得た一般的なインターネットスキャナーのリストも持ってる。自分の小さなホームラボを守ってるだけだから、感染したコンピュータやプロキシを動かしてるコンピュータ、あるいはASNブロックで広範囲のインターネットをブロックしてるかどうかは気にしない。私が設定したのはピッケルみたいなもので、多くの人が本当に必要としてるのはメスなんだ。盲目的に適用しないでね!でも、インターネット上の悪意のあるトラフィックをもっと積極的にブロックすれば、プロバイダーがそれを最小限に抑えようとする動機がもっと生まれると思う。微妙なラインがあるのは認めるけど、何が悪意があるかは主観的だよね。

ボットが訪れたのをabuseipdbに毎日報告してるけど、そうだね、無料の代替案があるべきだよね。これを聞いたのは君が初めてじゃないよ。みんなが無料で取れるファイルを作るのは簡単だと思う。どんな形式が一番いいと思う?プレーンテキストファイルで、過去1ヶ月の悪質なIPを1行に1つずつ?それとも1年分?日付も含めた.csvファイル?一般的に、私はシンプルなものが好きなんだ。

ユーザー: claude パスワード: claude2026! >ユーザー: claude パスワード: claude123 これらは漏洩から来てるのか、それとも誰かがユーザー名に基づいてトップのパスワードを生成するスクリプトを持ってるのかな。

確かに一部のパスワードは漏洩から来てるけど、頻繁なユーザー名の後に123や2026!を付けるのは意外と一般的なパターンだね。サフィックスのバリエーションもたくさんある:123!、2025、2025!、@2025、@123とか。実際、knock-knock.netのTriviaパネルでは、パスワードがユーザー名にサフィックスを付けただけのときに指摘してるよ。

すごいビジュアルだね!今は接続を受け入れてから「クリーンじゃない」状態で閉じてる(FINやRSTパケットなしで)。これは、犯人がまだ接続されてると思ってリソース(時間)を無駄にすることを期待してるんだ。私の考えは、こういう対策を実装するサーバーが増えれば、犯人にとってスキャンするのが非常にコストがかかるようになるってこと。下に書いたように、IPのブラックリストを作るためにログを追加することもできるかも。

いいね、こんなの使ってるの? iptables -I OUTPUT -p tcp --sport 22 --tcp-flags RST RST -j DROP iptables -I OUTPUT -p tcp --sport 22 --tcp-flags FIN FIN -j DROP 残念ながら、リードタイムアウトで簡単に回避できちゃうけどね。

fail2banを使ってるなら、ヒット数は減った?それともログには普通に見えるのかな?

Fail2banを使うと、かなりノイズが減るよね。他のサーバーにもインストールしたし、みんなにもおすすめしてる。でも、そうすると視覚化するための素敵なボットトラフィックがなくなっちゃうね。

個人的には、SSHを各公衆サーバーのランダムな高ポートに移動させてるよ。マジで効果抜群、ログのノイズがなくなった。

いいサイトだね。ボットがサーバーにアクセスしようとするのは、公開されるとすぐだってことは、基本的なチュートリアルでももっと触れられるべきだと思う。初めてウェブサーバーを立てたとき、nginxのログを好奇心で見てたら、めっちゃパニックになったのを覚えてる。サーバーのセキュリティに対する本当の脅威だと思って、ほぼシャットダウンしそうになった(笑)。

T-Potも似たようなことやってるよね:https://github.com/telekom-security/tpotce

指摘してくれてありがとう。T-Potはすごくて、もっと一般的なハニーポットフレームワークだよね。もしかしたら、T-Potの上にknock-knock.netを作れたかもしれないな。

これいいけど、Grafana + Prometheusにはすでにたくさんの機能が含まれてるんじゃない?

私の理解では、彼らはもっと一般的なデータ収集と可視化のフレームワークだよ。あのソフトウェアを使ってこれに似たものを作ることはできるかもしれないけど、knock-knock.netの機能は組み込まれてないんだ。