template-wa.php

アーカイブ動画

--------------------------------

TL;DR: 私たちは、トラフィックが1日の各時間帯にどれだけ均一に分布しているかを測定することで、ボットを検出するためにエントロピーを活用しました。正規のユーザーからの夜間のアクセスは減りますが、ボットは関係なく動いています。エントロピーのしきい値を3.9に設定すると、既存の検出システムとの照合率は99%に達し、同時に、他のあらゆる手法をすり抜ける高度なボットも検知できます。分析対象は、3,500万IPにわたる2億5,300万件のイベントです。

現代のボットが抱える問題

高度なボットは、検出を回避する能力を驚くほど高めています。ユーザーエージェントをローテーションし、人間のクリックパターンを模倣し、レジデンシャルプロキシネットワークを使って正規トラフィックに紛れ込むケースも増えています。既存の検出システムはこうした脅威の大部分を捕捉していますが、私たちは防御をさらに強化するための補完的なシグナルを常に探し続けています。

しかし、ボットには決して偽装できないことがひとつあります。ボットは眠らないのです。

多くの検出システムがトラフィックの「見た目」に注目する一方で、私たちはトラフィックが「いつ」発生するかにも、同じくらい説得力のあるストーリーが隠れていることを発見しました。この洞察から、既存の手法を補完し、エッジケースをカバーする、エントロピーに基づく新たな検出レイヤーを開発しました。

鍵となる洞察:人間にはリズムがある

正規のユーザーには、必ず自然な行動パターンがあります。朝起きて、通勤中にスマホをチェックし、昼休みにブラウジングし、夜にはくつろぐ。どんなに夜型の人でも、最終的には眠ります。週末の動きは平日とは異なります。こうしたパターンは単なる個人の癖ではなく、人間の行動の根幹をなすものです。

これは個々のユーザーに限った話ではありません。企業のNATやレジデンシャルプロキシの背後にある共有IPアドレスを考えてみてください。数十人のユーザーが同じIPを共有していても、通常は同じタイムゾーンにいて、同じ文化的リズムに従っています。ニューヨークのオフィスビルからのトラフィックは、何人の従業員が接続を共有していようと、東部時間の営業時間中にピークを迎え、午前3時にはほぼゼロになります。

ボットやプロキシネットワークの動きは異なります。彼らが最適化しているのはスループットであって、「本物らしさ」ではありません。24時間365日リクエストをルーティングするプロキシサービスは、不自然なほど均一なトラフィックを生み出します。感染デバイス間で連携するボットネットは、あらゆる時間帯にアクティビティを発生させます。これはブロックリストに登録できるシグネチャではなく、不正の経済構造そのものから生まれる行動パターンです。

毎時間きっかり4.17人の客が、完全に等間隔で訪れる小売店を想像してみてください。火曜日の午前3時であっても、です。それは自然な客足ではありません。スクリプトです。

シャノンエントロピー:均一性を測る

この直感を定量化するために、私たちは情報理論に目を向けました。クロード・シャノンが1948年に発表した通信に関する研究は、分布のランダム性や均一性を測るための数学的フレームワークを与えてくれます。

エントロピーは、分布がどれだけ分散し、均一化しているかを測る指標です。式は次のとおりです。

H = -Σ p(x) × log₂(p(x))

ここでp(x)は、タイムスロットxでイベントが発生する確率です。エントロピーが高いほど分布は均一に近く、低いほどトラフィックが特定の時間帯に集中していることを意味します。

24時間にわたる時間別トラフィック分布の場合、エントロピーの理論上の最大値はlog₂(24) ≈ 4.58ビットです。これは完全に均一なトラフィック、つまり1日のすべての時間帯でイベント数がまったく同じ状態を表します。

実際のエントロピー値が意味するもの:

エントロピー 解釈
~2.0 1日あたり約4時間アクティブ – 典型的な個人ユーザー
~3.0 1日あたり約8時間アクティブ – アクティブなユーザー、または小規模な共有IP
~3.5 1日あたり約12時間アクティブ – 非常にアクティブ、または中程度に共有されたIP
~4.0+ ほぼ24時間アクティブ – 極めて疑わしい

エントロピーの強みは、単なる要約統計量ではなく、分布の「形」そのものを捉えられる点にあります。1,000件のイベントが24時間に均等に分散しているIPは、高いエントロピーを示します。同じ1,000件でも営業時間帯に集中しているIPは、ボリュームが同一であっても低いエントロピーになります。

左:人間のトラフィックは、起きている時間帯に自然なピークがあり、夜間には谷ができます(エントロピー約3.2)。右:ボットのトラフィックは全時間帯でほぼ均一です(エントロピー約4.5)。

検出アルゴリズム

私たちのアプローチは、コンセプトとしてはシンプルです。

  1. IPアドレスごとに24時間分のトラフィックデータを収集する
  2. 時間別エントロピーを計算する – トラフィックは各時間帯にどれだけ均一に分布しているか?
  3. しきい値を超えたIPをフラグする – 高いエントロピーはボット的な挙動を示唆する
  4. ネットワークブロック単位で集約する – 同一の/24サブネット内で複数のIPが同じパターンを示す場合、ブロック全体をフラグする

エントロピーを計算する前提として、IPごとに最低10件のイベントを必要としています。これを下回るとサンプルサイズが小さすぎて、意味のある分析ができません。3つの異なる時間帯に3件のイベントがあるIPは、疑わしいのではなく、単にデータが疎なだけです。

ネットワークレベルの検出では、疑わしいIPを/24 CIDRブロック(cblock)に集約します。cblockがフラグされるのは、そのブロック内で観測された合計5つ以上のIPのうち、少なくとも3つが疑わしい場合のみです。これにより、単一の異常なIPだけでネットワーク全体をフラグしてしまうことを防ぎつつ、組織化されたインフラを効果的に捕捉できます。

このシステムは本番環境で4時間ごとに実行され、1回の実行あたり約2億5,000万件のイベント、3,500万のユニークIPを分析しています。

科学的なしきい値の選定

重要な問いは、「どのエントロピー値を超えたらフラグを立てるべきか」です。

しきい値が低すぎると、ヘビーユーザー、共有IP、正規の24時間稼働サービスといったエッジケースまで大量にフラグしてしまいます。高すぎると、高度なボットがすり抜けてしまいます。実証的なアプローチが必要でした。

検証フレームワーク

2.0から4.5までのしきい値をテストし、それぞれが既存の検出システムとどの程度相関するかを測定しました。

  1. 照合率(Corroboration Rate):フラグされたIPのうち、独立したシグナルによって裏付けられている割合。高いほど良く、エントロピー検出が既存手法と整合していることを意味します。
  2. 強シグナル率(Strong Signal Rate):6つ以上の独立した検出理由を持つIPの割合。高い確度での捕捉を表します。
  3. 過半数不正率(Majority Fraud Rate):トラフィックの50%超が他の検出手法によってフラグされているIPの割合。

結果

しきい値 フラグされたIP数 照合率 強シグナル率 過半数不正率
2.0 1,062,086 86.5% 36.3% 36.0%
3.0 383,481 93.0% 55.0% 47.1%
3.5 157,323 96.6% 75.2% 63.6%
3.9 79,674 99.2% 92.6% 83.7%
4.1 55,355 99.8% 96.8% 92.0%

しきい値が上がるにつれ、裏付けのない検出(赤)はほぼゼロまで縮小し、強シグナル率(緑)は90%超まで上昇します。

しきい値3.9では、フラグされたIPの大多数が強力な独立シグナル(緑)を示し、裏付けのない検出(赤)は最小限にとどまります。

スイートスポットは3.9

しきい値3.9では、次の結果が得られました。

  • 照合率99.2% – フラグされたIPのほぼすべてに独立した裏付けがある
  • 強シグナル率92.6% – 10件中9件以上が6つ以上の検出理由を持つ
  • 過半数不正率83.7% – フラグされたトラフィックの大半は、すでに既知の悪性

では、まだ強く検出されていない約7%は何でしょうか?それこそが、この手法ならではの価値です。シグネチャベースのシステムを回避しながらも、時間的なフィンガープリントまでは隠せない高度なボットです。

実環境での検証:「見えないボット」の事例

システムをストレステストするために、しきい値3.9でフラグされたIPから無作為に10個を抽出し、手動で調査しました。

**結果:**10個中9個のIPは、翌日に検出率100%を記録した、確定した悪性アクターでした。そして残る1個こそが、興味深い事例でした。

すべてをすり抜けたクラウドIP

フラグされたIPのひとつは、大手クラウドプロバイダーのものでした。その翌日のトラフィックは次のとおりです。

時間別分布:

Hour Events Detected Suspicious Clean

0 847 0 0 847

1 892 0 0 892

2 831 0 0 831

22 879 0 0 879

23 901 0 0 901

アクティブな時間帯:24/24

検出率:0%

**検出はゼロ。**このIPからのすべてのリクエストは、既存のあらゆる検出システムで「クリーン」と分類されていました。ユーザーエージェントは正常に見え、クリックパターンも正当に見え、リクエスト頻度も妥当でした。

しかし、このIPは1日のすべての時間帯でアクティブであり、ボリュームも驚くほど一定でした。それは人間の行動ではありません。自動化です。

これこそが時間分析の力です。シグネチャベースの検出を回避できるほど高度でありながら、「眠っているふり」だけはできないボットを捕捉できるのです。

NATに関する反論

よくある反論があります。「共有IPはどうなのか?NATは?企業ネットワークは?空港は?」

この懸念を提起すること自体はもっともです。だからこそ、私たちは3つの異なる実験で実証的に検証しました。

実験1:ユーザーエージェントの多様性

もし空港やホテルが誤ってフラグされているなら、それらのIPは高いユーザーエージェント(UA)多様性を示すはずです(多数の実ユーザー=多様なブラウザ)。フラグされたIPのUA多様性を測定しました。

カテゴリ 平均ユニークUA数
裏付けあり(既知の悪性) 31.5
裏付けなし(誤検知の可能性) 2.8

裏付けのないIPは、ユニークUA数が91%少ないという結果でした。本物の共有インフラであれば数十種類のUAがあるはずですが、これらにはありません。

実験2:ボリューム分析

本物の空港であれば、膨大なトラフィックボリュームがあるはずです。イベント数を分析しました。

ボリューム区分 裏付けなし率
10〜499イベント 0.3〜1.3%
1K〜5Kイベント 0.09%
10K以上のイベント 0.0%

本物の空港が該当するはずの大ボリューム帯では、裏付けのないIPはゼロでした。裏付けのないIPの正体は、トラフィックの多い共有インフラではなく、低ボリュームの自動化システムだったのです。

実験3:IP分類

フラグされたIPから無作為に100個をサンプリングし、IPレピュテーションAPIで分類しました。

分類 割合
VPN/プロキシ 28%
ISP/レジデンシャル 26%
データセンター/ホスティング 23%
モバイルキャリア 6%
空港/モール/ホテル 0%

サンプルの中に、空港やホテルはひとつもありませんでした。この検出手法は、まさに捕捉すべきもの、つまりVPN、クラウド上のボット、レジデンシャルプロキシを捉えています。

要するに

共有IPであっても、時間的なパターンは現れるはずです。同じNATの背後にいるユーザーは通常同じタイムゾーンにおり、似た文化的リズムに従っています。ニューヨークのオフィスの共有IPが、現地時間の午前3時に突然トラフィックを生成することはありません。もしそうなっているなら、何かが人工的にそのIPへトラフィックをルーティングしている。それこそが、まさに私たちが検出しようとしているものです。

誤検知に関する理論上の懸念は、データの中には現れませんでした。

インフラの発見:個々のIPを超えて

時間分析が明らかにするのは、悪性IPだけではありません。ネットワークインフラの構造まで浮かび上がらせます。

分析の過程で、ある大きなIPレンジにおいて特に興味深いパターンを発見しました。

  • 73の異なる/24サブネットにまたがる5,076個の疑わしいIP
  • サブネットには交互のパターンが見られました:
  • 偶数番号のサブネット(x.x.80.x、x.x.82.x):それぞれ140〜200個の疑わしいIP
  • 奇数番号のサブネット(x.x.81.x、x.x.83.x):それぞれ50〜60個の疑わしいIP

この構造化された割り当ては偶然ではありません。オペレーターがインフラをどのように編成しているかを示しています。おそらく、プライマリとバックアップのIPプールを分けているか、顧客ティアごとにセグメント化しているのでしょう。

ここから導かれるのは、時間分析によって悪性アクターだけでなく、プロキシネットワークのアーキテクチャそのものを特定できるということです。個々のIPを相手にモグラ叩きを続けるのではなく、ネットワークレベルで先回りしてブロックできるのです。

緑色の「New Catches」セグメントは、他の手法では検出されていなかったものの、エントロピーによってフラグされたIPからのトラフィックを表しています。これこそが時間分析ならではの付加価値です。

補完シグナル:時間別エントロピーの先へ

時間別エントロピーは強力ですが、利用できる時間的シグナルはそれだけではありません。

週末比率

正規のトラフィックは通常、週末に減少します。ビジネスユーザーは自宅に戻り、一般消費者もブラウジングの仕方が変わります。週末と平日の比率が1.0に近い場合、そのトラフィックは人間の週次リズムに従っていない可能性があります。

夜間アクティビティ比率

IPのトラフィックのうち、現地時間の午前1時から午前6時の間に発生する割合を計算します。人間は眠りますが、ボットは眠りません。この時間帯にトラフィックの25%以上が発生しているIPは、精査に値します。

日別エントロピー(7日間ウィンドウ)

1日の中での時間別分布ではなく、曜日ごとの分布を測定します。この場合の最大エントロピーはlog₂(7) ≈ 2.81ビットです。月曜から日曜まで均等にアクティブで、週末の落ち込みがないIPは、疑わしいほど高いスコアを示します。

多層的な検出

これらのシグナルは、組み合わせることで最大の力を発揮します。高い時間別エントロピーに加えて、週末の落ち込みがなく、夜間比率も高い場合、確度は非常に高くなります。個々のシグナルは単独でなら回避できても、3つすべてを一貫して偽装するのは高くつきます。

軍拡競争:ボットが適応してきたら?

当然の疑問があります。ボットのオペレーターがこの記事を読み、人間のパターンを模倣し始めたらどうなるのでしょうか?

考えられる適応

  • 人工的な「睡眠」時間を追加してエントロピーを下げる
  • 週末のトラフィック減少をシミュレートする
  • タイミングにランダムなジッターを導入する

攻撃者にとってこれが難しい理由

  1. コーディネーションのコスト IPごとに、それぞれ「もっともらしい」パターンが必要です。10万IPを抱えるプロキシネットワークが単一の睡眠スケジュールを適用すれば、検出可能な相関が生まれてしまいます。IPごとにユニークで自然なパターンを作り込むのは、運用面で高コストです。
  2. スループットとのトレードオフ 眠っている間は不正ができません。人間らしく見せるためにIPごとに8時間の停止時間を導入すれば、同じボリュームを維持するために50%多くのIPが必要になります。これは無視できないコストです。
  3. 地理的な整合性 パターンはIPのジオロケーションと一致していなければなりません。東京にジオロケーションされたIPが、ニューヨークの営業時間に沿ったトラフィックパターンを示すのは不自然です。これを実現するには、正確なジオロケーションデータとIP単位の設定が必要になります。
  4. 組み合わせの複雑さ 時間別エントロピーだけを偽装するなら、まだ可能かもしれません。しかし、時間別エントロピーに加えて、週末比率、夜間アクティビティ、日別エントロピー、地理的整合性のすべてを同時に偽装するのは、格段に困難です。

カウンター施策

  • 相関検出:異なるIP間で不自然に同期した「睡眠」時間がないかを探す
  • 地理的検証:パターンは、主張されているタイムゾーンと一致しているか
  • 行動シグナルの多層化:時間的シグナルを、ユーザーエージェント分析、クリックパターン、コンバージョン率と組み合わせる
  • 敵対的モニタリング:回避の試みを示唆する、突然の分布変化を監視する

得られた教訓

  1. 行動はシグネチャに勝る 時間的パターンは、人間の活動の根幹です。ユーザーエージェントやフィンガープリントと違い、設定を変えるだけで簡単に偽装することはできません。
  2. エントロピー3.9がスイートスポット 実証的な検証の結果、このしきい値で既存検出との照合率99%超、独立手法による強シグナル率92%超が得られることが分かりました。
  3. 直交するシグナルで検証する エントロピーによるフラグと既存検出との93%の相関は、私たちがパターンを「想像」しているのではなく、実在する悪性アクターを捕捉しているという確信を与えてくれました。
  4. エッジケースに注目する 最も興味深い発見は、10件中9件の確定した悪性アクターではなく、他のすべてをすり抜けた残りの1件でした。検出率0%でありながら完璧な24時間稼働を示したあのクラウドIPこそが、このアプローチ全体の正しさを裏付けたのです。
  5. 反論は実証的にテストする 「空港はどうなのか?」という反論は、理屈の上ではもっともに聞こえます。しかし、3つの異なる実験(UA多様性、ボリューム分析、IP分類)で検証したところ、データの中に空港はひとつも現れませんでした。理論上の懸念を現実の問題だと思い込まず、測定して確かめましょう。

結論

時間的エントロピーは、ボット検出における強力な補完シグナルです。核となる洞察はシンプルです。人間は「予測不能さ」において予測可能です。眠り、働き、週末を過ごします。一方、ボットは「均一さ」において予測可能です。彼らが最適化するのはスループットであって、本物らしさではありません。

時間別エントロピー、週末比率、夜間アクティビティ、日別パターンといった複数の時間的シグナルは、単一の指標として使うよりも、組み合わせたときにこそ真価を発揮します。個々には回避可能でも、組み合わせれば堅牢な行動フィンガープリントを形成します。

「午前3時テスト」を覚えておいてください。**午前3時のトラフィックが午後3時と同じに見えるなら、何かがおかしい。**人間はそういう動き方をしません。スクリプトはそう動くのです。

本分析は、3,500万のユニークIPにわたる2億5,300万件のイベントに基づいています。検出システムは本番環境で4時間ごとに実行されています。

最新の記事