13.7K Views
October 10, 22
スライド概要
JMLT Vol.04 で発表したスライドです
captive.apple.comってなんだ JMLT Vol. 04 Yuhei Kobayashi @ynstg
captive.apple.comとは キャプティブポータルを検知するためにapple製品がアクセスするFQDN 正確には captive.apple.com/hotspot-detect.html
キャプティブポータル認証とは キャプティブポータルとは、端末がネットワークに接続した際に、ユーザー認証や利用者登 録などを行うまで外部との通信を禁止あるいは制限する仕組み。 Webブラウザなどで外部に接続しようとすると自動的に認証画面へ誘導される。この認証 ページのことを指すこともある。 e-words.jp より
なぜ、キャプティブポータルを利用するのか 認証: 認可する前にUser Credentialを取る 課金: ネットワーク使用にあたる課金 情報: 注意,同意,広告,プロバイダー情報 通知:ユーザーのステータスやアラート
キャプティブポータル認証 よくある実装例 1. 2. 3. HTTP リダイレクト (302->511) ICMP リダイレクト DNSによるリダイレクト(DNSハイジャック) TTL0にすることでDNSキャッシュポイズニングを軽減
キャプティブポータル認証の流れ 1. 2. 3. ネットワークに参加し、どこかのページにアクセス パケットを横取り、認証ページに誘導 任意の認証を完了 →完全に中間攻撃者の振る舞い どこかのページにアクセスするときに認証情報を送信してしまう可能性etc…
各社の対応 → captive portal 検出 1. 2. 3. ネットワークに参加したことを検知し自動的に特定のアドレスにアクセス なんらか転送先アドレスが返答された場合 サンドボックス化したウィンドウを表示し、captiveportal認証を実施 (名前解決を一時停止させる場合もある) →では実際にみてみよう SSID: cap.noko1024.net PASS: captive-portal
キャプティブポータル認証の問題点 1. 2. 3. 4. 5. DNS トンネリングでバイパスできる可能性 MAC スプーフィングでバイパスできる可能性 HTTPSにおける証明書の検証でCNに差異が発生しコケるケース サンドボックス化によってAPIに制限,UserStateを持ち越せない そもそもブラウザが実装されていないハードでは認証を突破できない →UXの低下,セキュリティ面での問題など数多くの課題がある
RFC 8908 - Captive Portal API (2020/09 発行) Captive Portalの認証を自動化する仕組み 1. DHCP optionまたはIPv6 RAs {RFC8910 (RFC7710の修正)} を用いて、 IPアドレスの取得・ローカルの CAPPORT APIサーバーのURLを取得 2. ネットワークにアクセスするために必要な条件を CAPPORT APIサーバーに問い合わせ 3. 必要なプルーフをサーバーに送信 (自分の名前やメールアドレス等 ) 4. ネットワークへのアクセスを許可され、 CAPPORT APIサーバーにステータス問い合わせ可能に
RFC 8952 Captive Portal Architecture (2020/11 発行) RFC 8908等を利用しながら既存の問題を解決しつつ、 構造を解説していく文書(so maybe) CAPPORT WorkGroupで活発に議論されていった結果生まれたRFC
Reference ✱ RFC 8952 Captive Portal Architecture ○ ✱ https://tex2e.github.io/rfc-translater/html/rfc8952.html RFC 8908 - Captive Portal API ○ ✱ Captive Portal Detectionについて ○ ✱ Captive Portal(CAPPORT) APIについて ○ ✱ I-Dを読む。#1 Captive Portal Problem Statement ○ https://ao780.hateblo.jp/entry/2017/02/23/104550