メインコンテンツまでスキップ

HarmonyPotから考える、観測データをCTIに変える3段階

文書番号:2609.00004

HarmonyPotの現在地​

2026年9月3日時点のHarmonyPotは、Cloudflare Workers上で動く低対話型Webハニーポットであり、脅威インテリジェンス活動としては「レベル1: 公開観測」に位置付けられるのだ。

一般利用者や自動scannerには一貫した認証ポータルに見えるのだ。一方、技術に詳しい第三者には、harmonypotというhost名、蜂蜜favicon、不可視のdiagnostics link、robots.txtから、デコイである可能性が高く見えるのだ。この公開性は欠陥と断定できず、秘匿収集ではなく研究、抑止、不確実性を目的にするなら整合するのだ。

重要なのは、見た目や取得量でレベルを決めないことであるのだ。

活動レベル問い得られる価値言えないこと
1 公開観測独立した公開囮へ何が到達するか背景活動、探索面、Payload、収集基盤の検証自社が狙われたとは言えない
2 指向型収集特定の脅威仮説に対して何が観測されるか比較、仮説評価、検知候補、TTP理解保護対象の名前空間宛てとは言えない
3 保護対象ドメイン指向型収集守るべき名前空間へ何が到達するか組織適合性、固有の監視・防御優先度到達だけで標的意図・本人性・侵入成功は示せない

現在のHarmonyPotは、レベル1として探索系列や限定Payloadを安全に観測する基礎センサーであるのだ。レベル2へ進むには具体的なPIRと比較設計が、レベル3へ進むには保護対象の実サブドメイン、内部telemetryとの相関、法務・経営を含む追加承認が必要なのだ。

まず、混同しやすい四つの軸を分ける​

「レベル」という言葉は混ざりやすいのだ。少なくとも次の四つは別に考えるのだ。

軸表すもの例
活動レベル保護対象への指向性とCTI活動の能動性レベル1〜3
対話レベル囮が送信者へ許す機能・操作の深さ低対話、高対話、Hybrid
配置形態センサーを置く場所Internet、内部、研究網、実環境統合
CTI組織成熟度人員、process、技術、共有能力組織のProgram maturity

低対話型でも、保護対象の実サブドメインを使い、組織固有のPIRへ答え、防御判断へ接続すればレベル3になり得るのだ。逆に、高対話型で大量のコマンドを取得しても、問い、分析、配布、Feedbackがなければ上位にはならないのだ。

外部からはどう見えたか​

第三者観測は、公開画面、HTML、CSS、JavaScript、HTTP応答、公開metadata、架空credentialによる3回の認証失敗だけを対象にしたのだ。repository、内部log、管理画面、Cloudflare accountは参照していないのだ。

確認できた外形は次のとおりであるのだ。

  • Secure Access Portalという英語の認証画面
  • Email、Password、Remember this device、MFA案内
  • password reset、help、status、release notes、admin console
  • XSRF-TOKEN、laravel_session、CSRF token、Vite風asset path
  • 401、429、403、404、503を使い分ける応答
  • 同一sessionで3回目の認証試行を429へ変える状態
  • responsiveなdesktop・mobile画面
  • CSP、HSTS、X-Frame-Optionsなどのsecurity header
  • 同一sessionの正しいdiagnostics tokenへ204、推測値へ404を返す挙動

これらは、Laravel/Vite風のSecure Access Portalという一つの人格を支えていたのだ。実際のbackend技術を証明するものではないが、外形の整合性は高いのだ。

一方、デコイ性を示す手掛かりも明瞭だったのだ。

  • host名にharmonypotを含む
  • faviconが蜂と蜂蜜を示す
  • 組織名、logo、連絡先、法的表記がない
  • statusとrelease notesが短く汎用的である
  • robots.txtが/admin、/api/、/storage/、/vendor/を列挙する
  • 画面上で不可視のdiagnostics linkがHTMLから見つかる

したがって第三者には、「本物へ隠密に擬態するサイト」というより、「実サービスらしい外形を持ちつつ、ハニーポットと識別できる観測センサー」に見えたのだ。この判断の分析確信度はHighであるのだ。ただし、内部の観測能力や活動効果は外部から確認できないのだ。

公開性は目的によって意味が変わる​

ハニーポットだと識別されれば、回避、無害な通信への切替、誤誘導用Payloadの投入が起こり得るのだ。観測結果には「知らずに接触した活動」と「ハニーポットだと理解して接触した活動」が混ざるselection biasがあるのだ。

それでも公開性が直ちに失敗とは限らないのだ。公開した欺瞞によって相手へ不確実性を与える、研究センサーとして挙動を説明可能にする、といったOperational Objectiveもあり得るからであるのだ。

秘匿性をKPIにする活動なら、host名やfaviconは弱点になるのだ。研究、抑止、公開された観測面を目的にするなら、意図した設計になり得るのだ。成否は「本物に見えたか」ではなく、PIRと評価指標に照らして判断するのだ。

観測時点の実装条件​

独自の実装・観測記録として、2026年9月3日時点のHarmonyPot v1.3の設定条件を以下に示すのだ。各値はこの版の設計値であり、現在のサービス状態やすべての異常入力に対する保証を意味しないのだ。

Internet
|
v
Cloudflare DDoS Protection / WAF / Rate Limit
|
v
Honeypot Worker
|-- 固定応答と行動分類
|-- 外部fetch、実認証、実command、uploadなし
|
+--> Analytics Engine: 匿名・正規化event
+--> Workers Logs: 高関心・異常eventのみ
+--> Durable Objects: 認証試行状態とRaw件数上限
+--> Private R2: 条件付きRaw、短期保持

主な境界は次のとおりであるのだ。

対象確認した制御
Raw Body最大16KiB
Raw Path / Query各最大4KiB
Raw保存件数15,000 objects / UTC day
Raw保存先・保持private R2、最大7日
通常event生IP、生User-Agent、生Referer、Cookie、Authorizationを保存しない
匿名相関visit IDとpath fingerprintでHMACの用途を分離
認証状態3回でlock、作成から6時間で削除
危険機能外部URL fetch、upload、実command、実脆弱性、実DB、実認証なし
障害時Analytics、R2、状態管理の障害で公開応答を500にしない

HMAC化は匿名化を保証しないのだ。鍵管理、rotation、アクセス制御、保持制限は別に必要であるのだ。interestScoreも悪性度ではなく、機微path探索やCanary到達など、分析対象としての関心度を表すのだ。

本番Analyticsから確認できたこと​

2026年9月3日に本番Analytics Engineの集計と個別eventを確認できたのだ。集計期間は2026年8月23日12:38:24から9月3日11:55:27 UTCで、同日12:06 UTC以降に行ったSynthetic validationは集計から除外したのだ。件数はsamplingを考慮し、SUM(_sample_interval)で算出しているのだ。

集計を読み直すときは、上記UTC期間、event分類、interestScore、degraded、匿名visit IDを区別するのだ。event数はsample intervalの合計であり、visit IDの異なり数とは集計単位が異なるのだ。公開表から計算する高関心率は24 / 476 ≒ 5.0%なのだ。公開表だけでは個別eventや設定実装を第三者が再実行できず、その範囲までの再現性は主張しないのだ。

指標実測値
推定event数476
匿名visit ID数423
interestScore >= 424
高関心率約5.0%
degraded=true0

主な内訳は、backup系Pathへのscanが106件、認証画面系のpage_viewが88件、robots.txtやsitemap.xmlなどのcrawler_discoveryが65件、既知分類に入らない404が49件だったのだ。機微Pathを403で拒否したsensitive_probeは21件、認証POSTは401が9件と429が3件、発行済みCanaryへの同一session内の到達は3件記録されていたのだ。

Client粗分類はbrowser 141件、User-Agentなし129件、bot/scanner 92件、other/unknown 72件、HTTP client/script 42件だったのだ。ただし、分類は送信主体、悪意、本人性を示さないのだ。認証試行とCanaryの一部には、ガイド作成や第三者観測のために実施した承認済み検証が含まれるため、すべてを自然到達として扱えないのだ。

実ログで見えた短時間探索​

2026年9月2日14:03:30から14:03:41 UTCまでの11秒間に、backup系Pathへ106件が集中したのだ。すべてCloudflareの国分類はNL、User-Agentなし、automationClass=unknown、reasonCodes=backup_route、interestScore=2で、HMAC Path fingerprintは52種類だったのだ。

この集中は、短時間に複数のbackup系Pathを試す自動探索と整合するのだ。ただし、Cookieを持たない各requestには別の匿名visit IDが付与されたため、106 visitとして記録されたのだ。106人、106端末、106攻撃者とは解釈できないのだ。国分類も接続元の粗い属性であり、攻撃者の所在地や帰属を示さないのだ。

別の本番eventでは、機微Path分類に一致するrequestがWorkerへ到達し、403を返し、interestScore=4、captureDisposition=planned、degraded=falseとして記録されたのだ。ここから分かるのは分類、応答、Raw captureを試みる計画、処理状態までであるのだ。plannedはR2への保存成功を単独では証明せず、送信者の悪意や脆弱性悪用の意図も示さないのだ。

認証状態遷移を実データで確かめた​

承認済みのSynthetic validationでは、架空IDとpasswordによる同一sessionの認証POSTが401、401、429へ遷移したのだ。3件ともdegraded=falseで、authAttemptOrdinalは1、2、3と記録され、captureDisposition=plannedだったのだ。

アプリケーションの構造化logには、架空credential、Cookie、生IP、Raw Path値、Raw Query値は含まれなかったのだ。一方、管理者向けTrace Eventにはrequest URL、生IP、User-Agent、接続地域、TLS metadataが含まれるのだ。Trace Event全体を公開report、Issue、chat、外部AIへ貼り付けず、必要な項目だけを選び、識別子を除外して共有する必要があるのだ。

レベル1: 公開観測​

レベル1は、保護対象から独立した公開センサーで、不特定の送信元から到達する探索、認証試行、Payload、Canary到達を観測する活動であるのだ。

現在のHarmonyPotが得意なのは次の領域であるのだ。

  • 通常利用者のいない面で、管理、機微path、Canary到達を優先する
  • 限定Rawから未知の文字列、endpoint、入力形式を調べる
  • 匿名visit内のlanding → discovery → auth → sensitive → canaryを比較する
  • route familyとreason codeをWAFやSIEMの候補条件へ変換する
  • 保存上限、匿名化、degraded動作、Canary、状態管理を検証する

一方、次は分からないのだ。

  • 保護対象企業への標的性
  • 実資産の技術や利用者に対する適合性
  • OS、shell、process、永続化、C2などの侵入後TTP
  • 任意TCP、PCAP、Cloudflare前段で拒否された通信
  • IPから人物や組織を特定する帰属
  • HTTP応答からの脆弱性悪用や侵入成功

harmonypot.area11.orgがサブドメイン形式であるだけでは、レベル3にはならないのだ。親ドメインが正式な保護対象で、その名前空間を使うPIR、承認、隔離、組織内telemetryとの相関がそろう必要があるのだ。

レベル2: 指向型収集​

レベル2では、文書化したPIRや脅威仮説に合わせて、囮のNarrative、技術stack、公開経路、Lure、観測項目、期間を意図的に変えるのだ。保護対象の実サブドメインは使わず、管理下の研究環境で比較するのだ。

たとえば、次のような実験であるのだ。

  • 異なるWeb技術を模した複数センサー間で探索系列を比較する
  • 脆弱性公表前後でPayloadと到達時期の変化を測る
  • 認証面のLureをA/B比較し、Canary conversionの差を評価する
  • 既存WAF・SIEMで未検知の再現可能な系列を検知候補へする

レベル2の必須条件は、具体的PIR、比較可能なbaselineまたは対照、複数情報源との相関、分析確信度、推奨行動、Feedbackであるのだ。画面を特定製品風にしただけ、log項目や保存量を増やしただけではレベル2にならないのだ。

レベル3: 保護対象ドメイン指向型収集​

レベル3は、実際に守るべきドメインの管理下にあるサブドメインを隔離センサーへ割り当て、その名前空間宛ての偵察、探索、認証試行、Payloadを組織内情報と相関する活動であるのだ。

追加で得られるのは、一般的なInternet背景活動ではなく、保護対象の名前空間への到達という組織適合性であるのだ。ただし、Certificate Transparency、DNS辞書探索、検索engine、無差別scanから発見された可能性があるため、到達だけで「当社を狙った」とは言えないのだ。

開始には少なくとも次が必要になるのだ。

  • 親ドメインが正式な保護対象である
  • 独立ドメインではPIRを満たせない理由がある
  • Domain/DNS Owner、Security、Legal/Privacy、経営の承認がある
  • 実認証、SSO、Cookie、secret、業務data、内部networkから隔離している
  • 一般Internet trafficや対照センサーと比較できる
  • WAF、DNS、ID、mail、EDR、脆弱性管理、IRと相関できる
  • 誤到達、brand、個人情報、有害data、外向き悪用のriskを受容している
  • 24時間連絡先、停止、DNS切離し、保全、廃止のrunbookがある

組織を意識した活動の可能性は、宛先host、組織固有の名称・経路・文書、到達順序、時間集中、他の保護対象での同時観測など、独立性を確認した複数証拠で評価するのだ。帰属、実行、権限取得、侵入成功には、それぞれを直接示す別証拠が必要なのだ。

レベルを上げる前のgate​

移行必要な証拠
L1 → L2承認済みPIR、脅威仮説、対照、変更したNarrative・Monitoring、完了したCTI cycle、検知・防御へのFeedback
L2 → L3保護対象ドメインの正式指定、実サブドメイン利用承認、隔離・出口制御・データ保護の検証、組織内相関、追加risk受容、撤去手順

DNSを向けただけではレベル3にならないのだ。必須条件を満たせなくなった場合は、活動を停止するか、満たせる下位レベルへ戻すのだ。昇格は機能追加ではなく、問い、証拠、責任、危険の範囲が変わる承認なのだ。

観測結果を書くときの境界​

HarmonyPotのような単一センサーから強く言えるのは、「その時点に、そのセンサーが、そのrequestを受け、所定の応答や分類を行った」という事実であるのだ。

次の表現は分ける必要があるのだ。

観測言えること追加証拠なしでは言えないこと
HTTP 200requestへ200を返したPayloadが実行された、侵入した
認証POSTformへ入力が送信された実credentialである、認証突破した
Canary到達誘引経路へrequestが来た人が意図的に探索した
送信元IPnetwork上の送信元として観測した人物、組織、所在地、帰属
匿名visit系列同じ相関子でeventが続いた同じ人物・端末・組織である
captureDisposition=plannedRaw保存を試みる計画が記録されたR2への保存が成功した

事実、分析判断、未確認事項を分けるだけで、ハニーポットのreportはかなり強くなるのだ。派手な帰属より、どの証拠が次の判断を変えるかを明記する方が、長く使えるCTIになるのだ。

関連記事​

参考資料​