クリックジャッキングとは?攻撃手法と被害実例、対策

本記事では、「クリックジャッキング」の攻撃手法や被害実例、最低限やっておきたい対策方法を紹介します。

「クリックジャッキング」とは、ユーザーをだまし、特定の場所をクリックさせることで攻撃を行う手法のことです。

この攻撃を受けると、金銭がらみのサイバー犯罪に巻き込まれたり、アカウント情報を盗まれたりといった被害に遭う可能性があります。

まず、「クリックジャッキング」の概要から説明していきます。

「クリックジャッキング」とは?

「クリックジャッキング」とは、Webブラウザーを悪用して、ユーザーに不利益をもたらす攻撃手法のひとつです。

Webページを閲覧しているユーザーに、特定の場所をクリックさせることで攻撃を行います。

通販サイトを例に挙げます。ユーザーは購入ボタンをクリックしたつもりですが、実はこのボタン、“ユーザーのアカウント情報を削除する”ものでした。

Webページの見た目は間違いなく、通販サイトの購入ページです。ユーザーは商品を購入することができず、自らの思いに反してアカウント情報を削除されてしまいました。

ユーザーをうまくだまし、特定の場所をクリックさせることで攻撃を行う。これを「クリックジャッキング」と呼びます。

クリックジャッキングの仕組み

クリックジャッキングの仕組み

クリックジャッキングは、本物のWebページの上に、偽物のWebページを置くことでユーザーをだます攻撃手法です。

しかし、偽物のWebページを置くだけでは、ユーザーに気付かれてしまいます。そこで、偽物のWebページを透明化し、本物のWebページの上に置きます。

すると、ユーザーからは本物のWebページだけが見えている状態です。図を例に挙げると、ユーザーは購入ボタンをクリックしたつもりになっていますが、実際にクリックしたのは攻撃ボタンです。

ユーザーは商品を購入することができない上に、攻撃を受けてしまいます。

クリックジャッキングでどういうことが行える?

  • 不正に送金される
  • 勝手に商品を購入される
  • 登録していたホームページから、勝手に退会させられる
  • 勝手にホームページに新規登録される
  • ユーザー情報を書き変えられる
  • ホームページの管理画面を盗み見られる
  • ホームページの管理パスワードを勝手に変えられる
  • 掲示板に不適切な内容を書き込まれる etc.

挙げるときりがないほど、クリックジャッキングには攻撃のバリエーションがたくさんありますので、ぜひ対策していきたいところです。

クリックジャッキングの攻撃手法

クリックジャッキングはフレームというHTMLタグを使います。

クリックジャッキングの仕組み

たとえば上の図のように、Webページを分割したい場合、方法のひとつとして、フレームを使用することがあります。

これを応用すると、クリックジャッキングが行えます。

「クリックジャッキング.html」

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html lang="ja">
<head>
<meta charset="utf-8">
<title>フィッシングページ</title>
</head>
<frameset cols="100%,*" onmouseover="
alert('「OK」を押すとGoogleのトップページへアクセスします。');
location.href='https://www.google.co.jp/';
">
<frame src="http://www.example.com/"></frame>
<noframes>
<body>
<p>代替ページ</p>
</body>
</noframes>
</frameset>
</html>

上記のソースコードは、「クリックジャッキング.html」へアクセスすると、“「OK」を押すとGoogleのトップページへアクセスします。”と書かれたアラートが表示されるものです。

アラートに書かれている通り、「OK」をクリックすると、強制的にGoogleのトップページへアクセスします。実害はありません。

注意点
第三者のホームページを対象にし、許可なく脆弱性を探したり、攻撃を行ったりすると、法律違反になる可能性があります。

過去に脆弱性を発見した者が逮捕され、有罪判決を受けてしまった例があります。

実際にWebページの脆弱性を探したり、攻撃を行ったりする場合、必ずご自身のホームページを対象にしてください。

とは言え、意味がわからないままソースコードを使用するのは不安かと思います。内容をわかりやすく解説していきます。

タグの解説

<!DOCTYPE html>
「HTML文書を書いていきます」という意味の宣言です。HTMLのバージョンを記述すると、「HTML文書を、このバージョンに乗っ取って書いていきます」という意味の宣言になります。

上記のソースコードは、「HTML 4.01」に乗っ取って書かれています。Webページ内でフレームを使いたいので、「Frameset」も宣言しています。

<html>~</html>
「ここからここまでHTML文書です」という宣言です。ここでは言語を設定することもできます。<html lang="ja">と書くと、日本語のWebページになります。
<head>~</head>
文書のヘッダ情報をここに書いていきます。この記事での「ヘッダ」とは、このHTML文書を説明するためのもの、と解釈してください。

上記のソースコードは、“文字コードは「UTF-8」”、“ページのタイトルは「フィッシングページ」”という説明が書かれています。

<frameset>~</frameset>
Webページをフレームで分割するためのタグです。ここにフレームの設定を細かく書いていきます。
<frame>~</frame>
分割されたフレームの中に、どんなファイルを表示させるか指定するタグです。「src」は、フレームの中に表示させるWebページを、URLで指定します。

ここにご自身のホームページのURLを入れると、クリックジャッキングのテストを行うことが可能です。

<noframes>~</noframes>
フレームに対応していないブラウザーで、「クリックジャッキング.html」へアクセスしたとします。すると、「代替ページ」とだけ記載されたWebページが表示されます。
<body>~</body>
HTML文書の本体部分です。つまり、Webページの内容はここに書くことになります。フレームを使用する場合は、フレームに対応していないブラウザー向けのWebページを作る必要があります。

実際に「クリックジャッキング.html」へアクセスすると、以下のようなページが表示されます。

クリックジャッキングの仕組み

アラートの背後にご自身のホームページが表示された場合、「クリックジャッキング攻撃が行える」ということです。

イメージとしては、以下のようになります。

クリックジャッキングの仕組み

クリックジャッキングの被害実例

2009年、Twitterで「クリックしてはいけない」

2009年、Twitterにて、「クリックしてはいけない」というメッセージ付きのリンクが、Twitterアカウントに掲載される被害が相次ぎました。

「クリックしてはいけない」というメッセージ付きのリンクには、クリックジャッキングの仕掛けが施されていたようです。

リンクをクリックしてしまうと、自分のTwitterアカウントにも同じリンクが掲載されます。それを他のユーザーもクリックしてしまい、結果的に被害が広がってしまった模様です。

被害はリンクの掲載がくりかえされるだけでしたが、Twitterはこの件を深刻に受け止め、クリックジャッキング対策を行いました。

2011年、「Facebook」は狙われ続けるSNS

2011年、トレンドマイクロは、『2010年を振り返る - 2)使用には要注意! 最も悪用されやすいデバイス/ツールとは?』を発表しました。

その中で、“2010年に最も危険だったSNS”として、Facebookが挙げられたのです。サイバー犯罪者の標的となっているFacebookですが、その中に、“クリックジャッキング攻撃による被害”も含まれていました。

具体的な内容として、攻撃者は、ユーザーが興味を持つことやニュースを利用し、ウォール(掲示板のような機能)にメッセージを投稿します。

そのメッセージに含まれているリンクをユーザーにクリックさせることで、自動的にユーザーの「友達」のウォールにメッセージが投稿されていきます。

こうしたことをくりかえし、感染を拡大していく、といった被害が起きました。こうした事例は珍しいことではありません。

よくある事例としては、“魅力的なドメイン名を持ったWebページに、ユーザーを誘導する”といったことです。

たとえば、有名な歌手の名前を部分的に抜き出し、ドメイン名として使います。それをWebページのリンクとして使い、メッセージに投稿することで、ユーザーにリンクをクリックさせる狙いがあるのです。

また、「この男性は8年間、毎日自分の顔の写真を撮りました」などといった、ユーザーが興味を持ちそうなメッセージを投稿する場合もあります。

メッセージの内容と、リンクのドメイン名を関連性のあるものにし、ユーザーにリンクを踏ませる狙いがあります。

こういった場合のリンク先は、悪意のある者によって作られたWebページです。デザインが有名動画サイトとそっくりであるなど、見た目だけで偽のWebページと見抜くことは難しいでしょう。

こういった攻撃の被害に遭うと、金銭絡みのサイバー犯罪に巻き込まれたり、アカウント情報を盗まれ、それを悪用されたりします。

2015年、「ランサムウェア」脅威がモバイルへ拡大中

2015年、日本語表示に対応した、モバイル版のランサムウェアがはじめて確認されました。モバイルの不正アプリによるランサムウェアの脅威は、2014年からはじまっていることがわかっています。

2013年頃から、Android版の不正アプリでは、画面をロックするなどして端末を使わせないようにする、「端末ロック型ランサムウェア」のような動きが確認されていました。

初のモバイル版「端末ロック型ランサムウェア」としては、2014年4月に確認された、「ANDROIDOS_LOCKER.A」が挙げられます。

また、翌5月には、より多彩な活動を持つランサムウェアが確認されています。「ANDROIDOS_LOCKER.HBT」というものです。

これは、「Sex Xonix」というゲームを偽装したものです。ロシア語(キリル文字)のメッセージを表示して、端末をロックします。

また、端末の内部ストレージ、外部ストレージ上にある画像・動画・文書などのファイルを、暗号化して使えないようにします。つまり、「暗号化型ランサムウェア」の活動も同時に行われていました。

2014年8月には、モバイル版ランサムウェア「ANDROIDOS_RANSOM.HBT」が登場しています。これは、ランサムウェア以外のすべてのアプリを終了させ、SDカード内の情報を暗号化するものです。

その後、「ANDROIDOS_SIMPLOCK」「AndroidOS_Svpeng」「AndroidOS_Fusob」「AndroidOS_Whello」「AndroidOS_Ihide」など、モバイル版ランサムウェアシリーズが確認されています。

上記のランサムウェアシリーズは、クリックジャッキング攻撃を使っています。ここでのクリックジャッキング攻撃とは、アプリのインストールを行う際、ユーザーに気付かれずに、デバイス管理APIの権限を取るために使われる手法です。

この手法は、「ANDROIDOS_LOCKER」「AndroidOS_Svpeng」「AndroidOS_Ihide」などで確認されています。

アプリに“デバイス管理APIの権限をあたえる”画面を表示し、その上に、偽のインストール画面を表示させることでクリックを誘導します。

画面には「次へ」ボタンが表示されているので、ユーザーは思わずそのボタンを押してしまうでしょう。しかし、実際は「ACTIVATE」ボタンをクリックしていることになります。

この「ACTIVATE」ボタンは、アプリへ権限をあたえることを許可するものです。不正アプリは、ユーザーをだまし、デバイス管理APIの権限を悪用します。

不正アプリの存在を隠したり、アンインストールを困難なものにしたり、通常では行えない活動が行えるようです。

最低限やっておきたいクリックジャッキングの対策

「X-Frame-Options」

「X-Frame-Options」は、外部からWebページが埋め込まれることを制限するパラメータです。

「X-Frame-Options」の値である「DENY」は、外部から埋め込まれたWebページの表示そのものを拒否します。

「SAMEORIGIN」は、同じドメイン名のWebページのみ表示を許可する値です。

「ALLOW-FROM uri」は、今のところブラウザー側の未サポートや、バグが存在します。あまり実用的ではないので、基本的には「DENY」を設定するとよいでしょう。

Webサーバーの設定ファイルや、.htaccessファイルなどで、ヘッダにパラメータを加えることができます。

「.htaccess」の設定例

<ifModule mod_headers.c>
Header always set X-XSS-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options DENY
Header always set X-Download-Options: noopen
Header always set X-Powered-By: ""
</ifModule>

まとめ

いかがでしたでしょうか。今回は、「クリックジャッキング」の攻撃手法や被害実例、最低限やっておきたい対策方法を紹介しました。概要や仕組みだけでなく、クリックジャッキングで行える犯罪についてわかっていただけたかと思います。

本文中のソースコードは、ご自身のホームページをテストしたい場合のみ使用してください。今回の記事がクリックジャッキング対策を行うきっかけになれば幸いです。