Webサイトを運営していると、ある日突然、読者から「お前のサイトに変なウイルス警告が出たぞ!」と言われたり、自分自身でサイトを閲覧しているときに突然「ピーッ!」と警告音が鳴って「パソコンがウイルスに感染しました」という画面(いわゆるサポート詐欺画面)が表示されて青ざめた経験はありませんか?
「もしかして自分のサーバーが乗っ取られた(ハッキングされた)のでは…?」
とパニックになる方も多いのですが、結論から言うと、あなたのサーバーが乗っ取られたわけでも、あなたが故意に危険な広告を掲載したわけでもありません。
これは、Googleが厳格に管理しているはずのYouTubeや大手ニュースサイトでさえ、悪質な詐欺広告がすり抜けて表示されてしまうのと全く同じ現象です。
今回は、自身のサイトで実際に発生した「悪意のある広告」をブラウザの開発者ツールや通信ログ(HAR)を使って徹底的に追跡調査しました。
- なぜ天下のGoogleの審査をすり抜けて詐欺広告が表示されてしまうのか?
- クリックした後のURLに隠された巧妙な細工とは?
- 調査で判明した「マウス移動をトリガーにしてブラウザ内で復号する」という驚くべき潜入手口
- サイト運営者・閲覧者が今すぐできる自衛・ブロック対策
これらを初心者ブロガーからWeb技術者まで分かりやすく徹底解説します!

そもそもWeb広告(Google AdSense)はどうやって表示されるのか?
まずは前提として、一般的なWebサイトでGoogle AdSenseなどの広告がどのように画面に現れるのか、その仕組みをおさらいしておきましょう。
サイトに埋め込まれているAdSenseコード(自動広告の場合)
ここでは、多くのサイト(私のサイトも)で導入されているAdSenseの「自動広告」を例に説明します(※個別の広告ユニットを手動で配置している場合はコードの形式が異なります)。
自動広告を利用しているサイトのHTMLソースコード(ブラウザで Ctrl + U を押すと見られます)を確認すると、<head> タグ内などに以下のようなスクリプトが配置されています。
<!-- Google AdSense 自動広告スクリプト(例) -->
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-xxxxxxxxxxxxxxxx" crossorigin="anonymous"></script>
(※ ca-pub-xxxxxxxxxxxxxxxx は運営者(サイトの持ち主)ごとに発行されるパブリッシャーIDです)
ブラウザがページを読み込むと、このJavaScriptが実行され、Googleのサーバーへ「このページに適切な広告を配置してちょうだい」と通信を行い、Google側がページ構造を解析して自動的に広告枠を挿入します。
つまり、「どの広告を表示するか」を決めているのはサイト運営者ではなく、すべてGoogleの配信システムなのです。
(手動広告の場合は、広告の表示位置をサイト運営者が決めているだけで、配信される広告は同じく選べません。)
ブラウザのセキュリティ機能でブロックされる例
例えば、Microsoft Edgeの「トラッキング防止」設定を「厳重」にしている場合、この通信が遮断されます。開発者ツールのConsole(コンソール)タブを見ると、以下のようなログが出力されます。
xGET https://pagead2.googlesyndication.com/... net::ERR_BLOCKED_BY_CLIENT
これは「ブラウザ側が広告スクリプトの実行をブロックした」ことを示しており、この場合は広告枠自体が表示されません。
コラム:なぜEdgeでは簡単にブロックできて、Chromeではできないのか?
Edge(Microsoft)の設定画面では、トラッキング防止を「厳重」にするだけで簡単にGoogle広告の通信をブロックできます。
なぜこんなにも簡単に設定できるのかといえば、MicrosoftにとってGoogleの広告収益に貢献する義理など何一つないからだと言えます。ライバル企業が儲かる仕組みなど、自社ブラウザの標準機能で遠慮なく遮断してしまえばいいわけです。
一方、Googleが開発しているChromeでは、標準設定でGoogle広告を簡単に一発ブロックできるような親切なボタンは用意されていません。Google(Alphabet)の売上の大半は広告収入が支えているため、自社の生命線を自ら断つような機能をChromeに組み込むわけがないのです。ブラウザごとの力関係やビジネスモデルの違いが、こうしたセキュリティ設定の設計にも透けて見えて面白いところです。
広告をクリックしたときの「URL」を解剖してみる
では、表示された広告をクリックした際、ユーザーはどのような経路をたどって広告主のページへ連れて行かれるのでしょうか?
不審な広告を見かけた際、広告リンクを右クリックして「リンクのアドレスをコピー」し、テキストエディタに貼り付けてみると、以下のような非常に長いURLになっていることが分かります。
https://www.googleadservices.com/pagead/aclk?sa=L&ai=CKH...(中略)...&adurl=https://suspicious-landing.example.com/%3Fgad_source%3D5%26gad_campaignid%3D0000000000%26gclid%3DEAIaIQobChMI_dummy_gclid_sample_xxxxxxxxxxxxxxxx_BwE
(※ドメインや各種パラメータ値は安全のためダミーに置き換えています)
このURLは、大きく2つのブロックに分かれています。
- 【前半】ユーザーがクリック ➔ ① Google計測サーバー(
googleadservices.com/aclk) - 【後半】Googleによる自動転送 ➔ ② 広告主の着弾URL(
adurl=以降)
① クリック計測用のURL(前半部分)
https://www.googleadservices.com/pagead/aclk?... から始まる前半部分は、Googleの広告クリック計測サーバーです。
ここでは「どの広告枠で、いつ、誰がクリックしたか」を正確にカウントし、コンバージョン計測やサイト運営者の不正クリック(クリック詐欺)の防止処理を行っています。この処理を一瞬で行った後、ユーザーを後半のURLへ自動転送(リダイレクト)します。
② 実際の広告主URL(後半の adurl= 以降)
URLの後半にある adurl= という部分に注目してください。ここに入っているURLこそが、最終的にユーザーが移動する広告主のページ(ランディングページ / LP)です。
URLエンコードされた記号(%3F は ?、%3D は =、%26 は &)を元に戻すと、以下のようなパラメータが付与されています。
| 付与されているパラメータ | 意味と役割 |
|---|---|
gad_source | トラフィックの発生元を示す識別番号(検索結果、ディスプレイネットワークなど) |
gad_campaignid | どのGoogle広告キャンペーンから配信されたかを示すID |
gclid (Google Click ID) | クリック1回ごとに自動発行される一意のID(コンバージョン追跡用) |
ポイント:
これらのパラメータはGoogle広告が正規に自動付与しているものです。暗号やハッキング用のコードではなく、一般的な広告計測タグです。
問題は、この adurl= に指定されている移動先のサイトが、悪意を持った挙動をするという点です。
なぜGoogleの審査をすり抜けるのか?悪質業者の手口
Googleは世界最高峰のセキュリティ部隊と自動審査システムを持っています。それにもかかわらず、なぜ「サポート詐欺」のような悪質なサイトへの誘導広告が審査を通過してしまうのでしょうか?
鍵を握っているのが、先ほど登場した adurl=(着弾先URL) の使われ方です。
adurl= にセットされる3つのパターン
本来、adurl= には「広告主の自社サイト」が入るはずですが、実際には以下の3パターンが存在します。
- 【パターン1】正規の広告主サイト(本来の正しい使い方)
- 企業の公式通販サイトや製品紹介LPなど。中間に余計なサーバーを挟まず、Googleのクリック計測後に直接そのページへ移動します。
- 【パターン2】正規のアクセス解析・トラッキング業者(健全な中間業者)
- 大規模な広告運用において、Googleの計測とは別に第三者の分析ツール(AdjustやAppsFlyerなど)を一度中継してから自社サイトへ転送する手法。これも正規のビジネス用途として認められています。
- 【パターン3】不正なリダイレクト・判定業者(悪質なおとり中間業者)
- 審査をすり抜けるために用意されたダミーサーバー。
- 審査時には無害なサイトを表示し、一般ユーザーがクリックした時だけ詐欺サイトへ飛ばす分岐点(クッションページ)として悪用されます。
審査を欺く4大テクニック(3つのパターンとの関係)
悪質業者は、上記「3つのパターン」の信頼性や仕組みを巧みに悪用・偽装してGoogleの審査をすり抜けています。それぞれのテクニックがどのパターンに当てはまるのかを見てみましょう。
① クローキング(Cloaking) ➔ 【パターン3:悪質なおとり業者の直球手口】
- 該当パターン: 純粋な「パターン3(不正なおとり中間業者)」です。
- 手口の仕組み:
adurl=にセットされたサーバー自身が「アクセス元を判別する判定ロジック」を持っています。Googleの審査ボット(クローラー)がアクセスしてきた時は「当たり障りのない無害なショップやブログ」を表示し、一般ユーザー(特定の地域・言語・OS・ブラウザ条件に一致した人)がクリックした時だけ詐欺サイトへリダイレクトする「二枚舌」の仕組みです。
② 多段リダイレクト ➔ 【パターン2(健全な解析ツール)を装ったパターン3】
- 該当パターン: 「パターン2(正規の計測業者)」のふりをした「パターン3」です。
- 手口の仕組み: Google広告の仕様上、外部のアクセス解析ツールを挟むこと自体は正規のビジネス(パターン2)として広く認められています。悪質業者はこの仕組みを隠れ蓑にし、「単なる効果計測用のリダイレクトです」という顔をして
adurl=に登録します。しかし実際には裏で何段階ものアドテク業者や転送サーバーを経由させ、訪問者の時間帯やリファラ、デバイスによって最終的な着弾先を動的に詐欺サイトへと切り替えます。
③ 正規サイト・CMSの乗っ取り ➔ 【パターン1(正規の広告主サイト)の悪用】
- 該当パターン: 本来は安全であるはずの「パターン1(正規の広告主サイト)」の悪用・偽装です。
- 手口の仕組み: 実在する企業や個人の古いWordPressサイト、脆弱性のあるWebサーバーがハッキングされ、不正なリダイレクトスクリプトを仕込まれてしまうケースです。
adurl=に登録されているドメイン自体は長年運営されている本物の正規サイト(パターン1)なので、Googleのドメイン評価も高く、審査を簡単にパスしてしまいます。サイト運営者自身も被害者であり、自分のサイトが悪用されていることに気づいていないことも珍しくありません。
④ 広告主アカウントの乗っ取り ➔ 【パターン1の信用を奪い、パターン3をねじ込む】
- 該当パターン: 「パターン1の優良アカウント」を乗っ取り、「パターン3」へすり替える手口です。
- 手口の仕組み: 過去に違反歴がなく審査が通りやすい「優良な正規広告主のGoogle広告アカウント」が不正ログイン等で乗っ取られます。攻撃者はその信用あるアカウントを悪用し、広告のリンク先(
adurl=)だけを悪質なおとりサーバー(パターン3)に差し替えて出稿します。「過去の実績がある安全な広告主からの出稿」に見えるため、自動審査システムの警戒をかいくぐってしまいます。
【実録検証】HARログ解析で判明した「巧妙すぎる潜入手口」
ここからは、実際にサイトに表示された悪質広告を技術的に追跡・調査したレポートをお届けします。
最終的に着弾したのは、情報処理推進機構(IPA)の注意喚起でも有名な「パソコンに偽のウイルス感染警告を表示させて電話をかけさせようとするサポート詐欺」の画面でした。
どうやって調査したのか?
- ブラウザの開発者ツールを開き、Network(ネットワーク)タブで通信ログを記録状態にする。
- 該当の怪しい広告をクリックする。
- 一連の通信ログを
.harファイル(HTTP Archive形式)としてエクスポートする。 - Pythonスクリプトを作成し、AI(Claude)と協力しながらリダイレクト連鎖や難読化スクリプトを詳細解析。
解析で判明した「6段階のステルス攻撃フロー」
調査の結果、静的なセキュリティスキャンを完全に欺く、驚くほど巧妙な手口が明らかになりました。
- 【ステップ1】Google広告をクリック
- 【ステップ2】クラウドストレージ(CDN)上の静的サイトに着地
- 例:
https://cloak-dummy-site.cdn-storage.example.com/index.html - 実際に開いたのは「バイクガレージの紹介サイト」のような、ごく平凡で無害なページでした。Googleの自動巡回ボットはこれを見て「安全なサイトである」と判断して審査を通します。
- 例:
- 【ステップ3】「マウスの移動(ユーザー操作)」をトリガーに設定
- ページ読み込み直後には怪しい通信は一切発生しません。ユーザーがマウスを1ミリでも動かした瞬間(
mousemoveイベント等)にはじめて次のスクリプトが発動します。自動化された審査ボットはマウス操作をしないため、これだけでボットを確実に振り落とせます。
- ページ読み込み直後には怪しい通信は一切発生しません。ユーザーがマウスを1ミリでも動かした瞬間(
- 【ステップ4】裏でバックエンドAPIへ問い合わせ
- ユーザーに気付かれないよう、裏で外部サーバー(例:
stealth-api-node.cloud-app.example.com/data?platform=win)へ通信を行います。
- ユーザーに気付かれないよう、裏で外部サーバー(例:
- 【ステップ5】ブラウザ内で暗号化データをその場で復号
- サーバーから送られてきたのは一見無意味な暗号文です。これをブラウザ内のJavaScriptがその場で復号(デコード)し、本物の詐欺ページ用HTMLをメモリ上で動的に組み立てます。
- 【ステップ6】
blob:形式のiframeで画面をジャック- 復号された詐欺HTMLは、ブラウザのアドレスバーにURLが残らない特殊な形式(
blob:URL)を使って全画面のインラインフレーム(iframe)として展開されます。
- 復号された詐欺HTMLは、ブラウザのアドレスバーにURLが残らない特殊な形式(
なぜこの手口が恐ろしいのか? …というか、手動で1回クリックすれば分かるのでは?
この手口の技術的な恐ろしさは以下の点にあります。
- URLブラックリストに引っかからない: 最終的な詐欺画面に固有のWeb URLが存在しないため、セキュリティソフトやURLフィルターが検知できない。
- 自動審査ボットを完全に欺く: マウス操作がない限り通信すら発生しないため、最先端の静的・動的解析AIでも「無害なバイクガレージの紹介ページ」にしか見えない。
…と、技術的には非常に小難しい偽装工作をしているわけですが、一連のログを追っていて思わず突っ込みたくなったのは、
「いやいや、人間が実際に広告をクリックしてマウスを1ミリ動かせば、1秒で悪質なサポート詐欺画面が出るんだから、手動でクリックして検査すれば一発で分かるじゃん!」
ということです。
天下のGoogleが誇る最先端のAI審査や自動巡回システムが、こうした「マウスを動かしたら動的通信する」という古典的な仕掛けにまんまと騙され、人間が1回ポチッと押せば即座に見破れるような詐欺広告を世界中にばら撒いてしまっている――。皮肉にも、過度な自動化やAI任せの審査が抱える盲点が浮き彫りになった瞬間でした。
サイト運営者が今すぐできる「悪質広告ブロック対策」
サイト運営者として「自分のサイトでこんな詐欺広告を出させたくない!」と思うのは当然です。私たちがAdSense管理画面から行える具体的な対策は以下の通りです。
対策①:広告URLを拾って「ブロック コントロール」に登録する
わざわざ詐欺ページを踏んで確かめる必要はありません。
- サイト上に怪しい広告が表示されたら、広告バナーの上で右クリック >「リンクのアドレスをコピー」を選択します。
- メモ帳などに貼り付け、
adurl=以降に書かれているドメイン部分(例:suspicious-redirect-domain.example.comなど)を確認します。 - Google AdSense管理画面にログインします。
- 「ブランド保護」>「コンテンツ」>「ブロック コントロール」>「広告主のURL」を開きます。
- 特定したドメインを貼り付けて「ブロック」に設定します。
これで、そのドメインをランディングページや中継点にしている広告は二度と配信されなくなります。
(この作業はGoogleが手動で、やってくれればいいと思うのですが。)
対策②:「広告レビュー センター」で目視チェック&ブロック
- AdSense管理画面の「ブランド保護」>「コンテンツ」>「広告レビュー センター」を開きます。
- 最近サイトに配信された広告の一覧が画像付きでプレビュー表示されます。
- 明らかに怪しい広告(「今すぐスキャン」「システム警告」風のバナーなど)を見つけたら、プレビューの左下にあるブロックボタン(禁止マーク)をクリックして配信停止にします。
(これは対策①の半自動化に該当すると思いますが、実際に出てくる広告が出てこないことが多いので、やはり手動でやったほうがいいのでは・・・)
対策③:デリケートなカテゴリ・特定の広告ジャンルをオフにする
- 「ブロック コントロール」>「デリケートなカテゴリ」から、トラブルの多いジャンル(出会い系、消費者金融、ギャンブル、一部のユーティリティソフト関連など)を制限しておくことも有効な予防策になります。
サイト閲覧者(読者)ができる自衛策
最後に、サイトを訪れる一般の読者・ユーザー側ができる自衛策も紹介します。
① ブラウザのセキュリティ・トラッキング防止を高める
- Microsoft Edgeの場合: 設定の「プライバシー、検索、サービス」から、トラッキング防止を「厳重」に設定すると、悪質な追跡タグや不審な広告通信のかなりの部分が自動遮断されます。
※注意:広告ブロッカーやブラウザ拡張機能の導入には要注意!
広告を消すために「広告ブロッカー」の拡張機能を導入する方も多いですが、拡張機能そのものの信頼性の見極めには十分な注意が必要です。
過去には「広告をブロックします」と謳いながら、裏でユーザーの閲覧履歴や個人情報を抜き取って販売していた悪質な偽ブロッカーや、開発者が売却された後にスパイウェア化してしまった拡張機能の事件が何度も起きています。
安易に名前を聞いたこともない無料ブロッカーを入れると、かえって危険を招く本末転倒な事態になりかねません。もし導入する場合は、開発元が明確で圧倒的な実績と信頼があるオープンソースのもの(例: uBlock Originなど)に厳選し、評価やパーミッション(要求される権限)を必ず確認しましょう。
② Google「マイ アド センター」で広告をカスタマイズする
Googleの広告枠の右上には、小さな「i」マークや「縦の3点リーダー(︙)」が表示されています。
ここをクリックするとメニューが表示され、「この広告の表示を停止」を選択したり、Google マイ アド センター から興味のない・不快なカテゴリの露出を減らすよう設定できます。
(※ただし、これはGoogleから配信されている広告にのみ有効で、他社のアドネットワークによる広告には効果がありません)
③ 万が一、偽警告画面が出てしまったら?
もし「ウイルスに感染しました!今すぐ電話してください!」という大音量の警告画面が出てしまっても、絶対に表示されている電話番号に電話をかけてはいけません。
- キーボードの
Ctrl + W(MacはCommand + W) を押してタブを閉じる。 - 全画面表示で閉じられない場合は、
Escキーを長押しして全画面を解除してから閉じる。 - それでも閉じない場合は、タスクマネージャー(
Ctrl + Shift + Esc) を起動してブラウザ自体を強制終了する。
これだけで被害は100%防げます。パソコンは実際には感染していません。
まとめ:詐欺業者と広告システムの「いたちごっこ」に立ち向かう
今回の検証を通して、悪質広告がいかに手の込んだ技術(クローキング、マウス操作トリガー、インブラウザ復号、blob iframe)を使ってGoogleの審査網をくぐり抜けているかがよく分かりました。
最先端のAI審査を過信せず、サイト運営者側としては、
- 怪しい広告の
adurlを特定してAdSenseで地道にブロック登録する - 広告レビューセンターを定期的に巡回して目視ブロックする
といった地道なメンテナンスを行うことが、読者に安心して訪れてもらえるクリーンなサイト環境を守る確実な防衛策になります。
Googleに希望することとしては、サイト運営者が表示できる広告を積極的に選べるしくみにしてほしいです。
読者の皆さんも「怪しい警告画面が出ても焦らずブラウザを閉じる」という基本を徹底し、安全にWebを活用していきましょう!
この記事を書いたイチゲを応援する(質問でもokです)
Vプリカでのお支払いがおすすめです。