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

HNに聞く: なぜアメリカのビザ申請ウェブサイトは私のネットワークをポートスキャンするのか?

279日前

概要

  • Port Authority 拡張機能をFirefoxにインストールした経緯
  • ceac.state.gov 訪問時にプライベートネットワークへのポートスキャン通知
  • ウェブサイトによる ポートスキャン の一般性についての疑問
  • uBlock Origin の「Block Outsider Intrusion into LAN」リスト未有効状態の発見
  • 安全対策や今後の対応策についての要点整理

ウェブサイトによるポートスキャンの一般性

  • 一部のウェブサイトは JavaScript を利用してユーザーのローカルネットワークに対し ポートスキャン を試みる場合あり
  • 主な目的は セキュリティチェックボット検知VPN利用の判定 など
  • 一般的な行為ではないが、特に 金融機関政府関連サイト で稀に見られる傾向
  • 悪意あるサイト の場合は、個人情報やネットワーク情報収集を狙うケースも存在
  • 通常の閲覧では頻繁に起きるものではなく、 特定用途のサイト でのみ発生

uBlock Originの「Block Outsider Intrusion into LAN」リストについて

  • uBlock Origin はデフォルトでローカルネットワークへのアクセスを完全にはブロックしない仕様
  • Block Outsider Intrusion into LAN」リストを有効化することで、外部サイトからの自宅LANへの アクセス試行 をブロック可能
  • このリストは uBlock Originのフィルター設定 で手動で有効化が必要
  • 有効化後、 JavaScript経由でのローカルIPスキャン なども防止可能
  • セキュリティ意識が高い場合、 有効化推奨

今後の対策と推奨事項

  • Port Authority などの拡張機能で通知を受けた場合、 サイトの信頼性 を再確認
  • uBlock Origin や他のセキュリティ拡張機能の 設定見直し を実施
  • 不審な挙動を示すサイトは アクセスを控える 判断も重要
  • ブラウザや拡張機能のアップデート を常に最新に保つ
  • 必要に応じて VPNファイアウォール の利用検討

まとめ

  • ウェブサイトによる ポートスキャン は一般的ではないが、特定サイトで発生する場合あり
  • uBlock Originのフィルター強化 で大半のスキャン行為を防止可能
  • 拡張機能やブラウザの セキュリティ設定の見直し が重要
  • 不安な場合は 専門フォーラムや公式サポート で追加情報収集

Hackerたちの意見

いろんなサイトがやってるよね。多くの標準デバイスフィンガープリンティングや匿名性対策のSAASに含まれてるし。eBayやFacebookとかもやってる!でも、これは広告ブロックを防ぐためのファーストパーティみたいだね。1MBの難読化されたフィンガープリンティングにポートスキャン、WebGLも使ってる。でも、変なのは、これがBurp Suite特有のルートを探してるみたい。

なんてこった!どうやってネットワークを強化すればいいの?

銀行が、新しいカードをアクティベートするために送ってきたサイトでこれをやったよ。

こんなことがあるなんて知らなかったって言うのが恥ずかしい。フィンガープリンティング以外に悪用されることってあるの?

https://files.catbox.moe/g1bejn.png macOSのSafariからそのサイトに行くと、コンソールにこれが表示されるんだ。ポート8888を使ってる特定のサービスってあるの?

脆弱なURLを持つルーター。検索するなら「router」「authentication bypass」って感じかな。

主にトラッキングには最適だけど、データを外部に持ち出すためにも使えるかもしれないね(例えば、ユーザーがlocalhostで何か敏感なものを動かしている場合)。 https://www.digitalsamba.com/blog/metas-localhost-spyware-ho...

そうそう。FacebookはAndroidでこの手を使ってたんだ。MetaのAndroidアプリはローカルホストにサーバーを立てて、サイトがそのローカルサーバーと通信して、通常ならAndroidのブラウザ保護でブロックされるトラッキング情報を渡してたんだと思う。これもフィンガープリンティングだけど、かなり極端なやり方だね。https://news.ycombinator.com/item?id=44169115

ビザ申請は詐欺だらけだよね。価格を2倍にする簡単なウェブサイトから、拒否されたって言って書類を偽造して入国させるサイトまで。だから、彼らはあなたがそういうウェブサーバーじゃないか、彼らのプロキシか、既知のC2チャネルを検出しようとしてるんだろうね。

すごく賢い回答だね。

もう一つのデータポイントだけど、インドのビザシステムも似てるよ。見つけにくい.gov.inで終わる公式サイトがあって、10ドルでビザを取得できて、手間も少ない。詐欺サイトはSEOが良くて、同じものを80ドルで売ってる。彼らは実際のサイトにあなたの申請を代理して、差額をポケットに入れてるだけ。インド政府が詐欺師をブロックできればいいけど、今はあまり優先順位が高くないんだろうね。

もしそのプロキシ詐欺がちょっと賢いなら、別のIPでプロキシを運営するだろうね。

え、どうやってそれが機能すると思ってるの?この「スキャン」はクライアントサイドのJavaScript内で行われてるから、プロキシを通してファイルを送ってもプロキシについては「検出」できないんじゃない?

それは、すごくひどいウェブサイトにしてはかなり賢いね。こないだ、トルコ国籍の彼女がビザ申請をしてたんだけど、30分もかけて丁寧にフォームを埋めた後に、システムが彼女を追い出しちゃったんだ。セッションがタイムアウトするのか何かだと思う。アカウントを作ってなかったり、現在の申請IDを書き留めてなかったら、全部失われちゃうんだよね。その過程で、彼女は非.govのウェブサイトに誘導されたりもして、詐欺にあってるのかと思ったけど、そうじゃなかった。実際、こういうひどい体験を少しでも楽にするための有料サービスがあるのは納得できるよね。彼らはVFS Globalと連携して申請書や関連書類を集めてるけど、VFS Global自体もひどいもので、フォームの記入を手伝ってくれるわけじゃないし。最近、EUはトルコ国籍者向けにシェンゲンビザの申請プロセスを簡素化したんだけど、公式のビザ代理店は実際には何も手伝ってくれなくて、ビザの予約の「良い時間」を闇市場で売って詐欺を働いてるんだ。これが理由で代理店が排除されたり、申請プロセスを簡素化する理由の一つになってる。アメリカやEUでは、待ち時間がひどくて、奨学金を失ったりしてる人もいるよ。時には数年待たされることもあるし、申請処理のシステムに問題があったりもするしね。こういう問題を解決するチャンスがあると思うし、音訳や文字エンコーディングのような小さなことも一緒に解決できるかもしれない。中には詐欺サイトじゃなくて、実際に助けてくれるところもあるのかな。AIエージェントが役立つかもしれないね。

ネットワーク関連のことはあまり詳しくないんだけど、ポートスキャンで何が検出されれば詐欺師だとわかるの?

詐欺だらけだし、あなたが言ってることを検出できるなんて考えるのはすごく愚かだよ。まるで詐欺について全く理解してないみたい。もしビザ詐欺にプロキシが必要だと思ってるなら、どう修正すればいいのかも分からない。完全に無知なプライバシー侵害だよ。多分、他の手段でポートを開けて、FacebookみたいにサイドチャネルIDに使ってるんじゃないかな。どんなドキュメント詐欺でも、唯一の弱点は「ラストマイル」だから、必ず人間の面接官がいるんだ。ビザプロセスはひどくて非現実的で、人々はどんな障害も乗り越えるから、彼らのKPIは全く影響を受けない。どれだけひどいプロセスを作ってもね。無駄なプライバシー侵害技術を実装する子供たちがどれだけいるかってことだよ。

uMatrixを使ってて、デフォルトでリクエストしたサイトと親ドメイン以外の接続を全部ブロックしてる。例えば、https://mail.yahoo.comをリクエストすると、yimg.comへの接続がブロックされる。各ウェブサイトごとにCDNを手動で許可しないといけないから、この攻撃やプロファイリングは効かないんだ。最初はuMatrixを使うのがすごく面倒だったけど、ほとんどのウェブサイトがCDNなしだと壊れちゃうからね。でも数ヶ月経つとホワイトリストが増えて、訪れるウェブサイトの90%をカバーするようになった。私のシステムでは、https://ceac.state.gov/genniv/がcaptcha.com、google-analytics、googletagmanager、127.0.0.1、そして「burp」(私のネットワークには存在しないローカルホスト名)に接続しようとしてる。面白いことに、ブラウザのコンソールにはlocalhostやburpへの接続試行が表示されない。127.0.0.1と「tcpdump -i lo」を許可すると、ポート8888への接続が見えるけど、そこは開いてないんだよね。

どうやってネットワークタブから127.0.0.1へのリクエストを隠してるの?

uMatrixはFacebookのトラッキングピクセルや、代わりのConversions API Gatewayをどう扱ってるの?これはFBが提供するコンテナで、あなたのドメインの下にホストされるんだ(メインドメインでもOK)。ユーザーデータを吸い上げてサーバーサイドからFacebookに送信するんだよ。ウェブサイトにJSを埋め込むと、データをどんどん集めてくれる。

どうやら、彼らのウェブアプリケーションでBurp Suiteを使ってるかチェックしようとしてるみたい。

私のシステムでは、https://ceac.state.gov/genniv/がcaptcha.com、google-analytics、googletagmanager、127.0.0.1、そして「burp」(私のネットワークには存在しないローカルホスト名)に接続しようとしてる。これがそのburpだよ: https://portswigger.net/burp/documentation/desktop/tools/pro... 彼らは自分たちのサイトを分析されるのを嫌がってるみたいだね。

uMatrixはアーカイブされてて、今はuBlockOriginを使うのが推奨されてるよ(高度な設定を有効にするとuMatrixが使える)。もっと色々ブロックしたい人はハードモードを有効にして、リラックスブロックモードのショートカットを設定するといいよ。フィルターリストも有効にすることをおすすめする(yokoffing/filterlistsや自分の地域/言語のリストを使うといいよ)。https://github.com/gorhill/uBlock/wiki/Blocking-mode:-hard-m...

ホワイトリスト化が良さそうだね。IPv6やISPの家庭用ルーターが許可する範囲のOS生成IPを使えば、かなり効率的になるかも。

ちょっと余談だけど、この文脈では、ウェブサイトがローカルポートに接続しようとするのは理にかなってるかも。カードリーダー(端末)を使ってるかもしれないからね。これは、IDカードにチップが入ってるEU諸国や、車両登録カードでも同様で、政府のウェブサイトで敏感な情報にアクセスしたり、特定の管理タスクを行ったりするのに使えるんだ。ただ、個人的な経験から言うと、昔はJavaが必要で、Internet Explorerでしか動かなかったんだよね。それが引退してChromiumに置き換わったから、今はどうやって動かすのか分からない。前回必要だった時に使えなかったから。

前に、パスポートのNFCチップを読み取るためにiPhoneやAndroidのアプリを使うように言われたことがある。これがIEやJavaの現代的な代替品なんだろうね。

「ポートスキャン」は、127.0.0.1:8888へのローカル接続みたいだね。このページで何の目的があるのかは分からないけど、うちの政府のウェブサイトは、デジタル署名のためにネイティブソフトウェアと通信するのにこの技術をよく使ってるよ。他のIPへの接続試行も見えてる?

カードリーダーやデバッグサーバーの可能性もあるね。無能なだけかも :D 俺が修正するまで、ローカルマシンからデプロイすると、埋め込まれたURLの一つがパブリックホストじゃなくてlocalhostになっちゃってた。彼らのローカル開発サーバーはポート8888にあるかもしれないね。驚かないけど。

これは、おそらく自分のデバイス上のウェブサーバーに接続してデータを収集したり、トラッキングをする試みだと思う。6月にFacebook/Metaが、AndroidのMessengerやInstagramを通じてユーザーをトラッキングしてたのがバレたの覚えてる? 同じことだよ。詳しくはここを見てね: https://news.ycombinator.com/item?id=44169115 と https://news.ycombinator.com/item?id=44175940

これはF5のスクリプトから来てるんだ。F5はアンチボット保護を売ってる会社なんだよね。(/TSPDの難読化されたスクリプトから来てる、これもF5のやつ。)https://www.f5.com/

TSはTrafficShieldの略っぽいね(F5が2000年代初頭に買収した会社の製品)で、PDはProactive Defenseかな?

どうしてブラウザはこれを許可するの?マイクロフォンのアクセスみたいに、同じように許可を求めないのが不思議だよ。ランダムなウェブサイトが私のLANをポートスキャンするのを許すなんて、マジで狂ってる。これが「機能」じゃなかったら、高Severityの脆弱性だと思ったよ。

Chromeはこれを許可してないよ。ローカルネットワークサービスは公開サイトから取得できるようにオプトインしなきゃいけないんだ(https://github.com/WICG/private-network-access)。ただ、ユーザーの許可に基づくアプローチに置き換えようとしてるみたい(https://github.com/WICG/local-network-access)。ネット上にはPNAが実際にはリリースされてないって言ってる情報もあるけど、数年前に安定版のChromeで自分で体験したから、今の状況はよくわからない。Firefoxはどちらのアプローチも実装してないみたいで、開発リソースが足りないってことかな。

「調べてみたら、uBlock Originにはデフォルトで「LANへの外部侵入をブロック」があるけど、無効になってた。」こんなのがあったなんて知らなかった。ありがとう!

ライトバージョンでも使えるの?オリジンJSが段階的に廃止されてる今、どうなんだろう。

その拡張機能には「すべてのウェブサイトのデータにアクセスする」って書いてあるけど、どうして有名じゃない人や、悪いことしないって言ってるuBOの開発者みたいな有名な人以外にそんな権限を与えられるのか理解できない。 "Hacks and Hops"なんて有効なホームページすらないし、拡張機能はhttps://g666gle.me/にリンクしてるけど、そんなサイト存在しない。ドメイン名自体が、すべてのウェブサイトのデータにアクセスさせたくないって思わせる。どんなにこの拡張機能が良さそうに見えても、絶対にインストールすることはないね。