koni blog

東京のウェブエンジニア koni です!ウェブサービスをガシガシ作っていきます!

フィッシング詐欺の偽サイトを作られた上、5000以上のアカウントを乗っ取られた件

whotwiの姉妹サイトで、Twitter 利用料金チェッカーというサイトがあります。

昨日から今日にかけ、このサイトと偽ったスパムツイートをするスパマーが現れ、フィッシング詐欺により、5000人以上のTwitterアカウントを乗っ取っています。

今現在戦っているので、その途中経過を書きます。

Twitter 利用料金チェッカーとは

Twitter 利用料金チェッカー

ツイート数やフォロー数リスト数に応じて、Twitterの利用料金がわかる、というパロディサイトです。 リリース数日で、gigazineさんや、ねとらぼさんなどに取り上げてもらい、数日バズりました。 リリース直後こそ瞬間的に大量のアクセスが来ましたが、それも数日で収まり、以降はたまに小規模のバズりがあり、という感じでした。

このサイトが今日急にバズりました。「お、きたきた」と思って、Twitterの検索ページをしばらくウォッチしていました。 作ったアプリがバズっている様子を見るのはアプリ作者としてとても楽しいんですよ。

スパムツイートとの出会い

3/12 23時頃、ふとTLを眺めていると、自分のサイトの画像が見たことのないURLとともに貼られているツイートがあるではありませんか。 しかも検索すると、大量のユーザーがほぼおなじ文言でツイートをしている。。。

なんだこれ。

f:id:konisimple:20160314234530p:plain:w300

クリックしてみると、認証ボタンがポツンとあるだけのページがでてきます。このボタンを押してみます。

f:id:konisimple:20160314234855p:plain:w300

クリックするとTwitterの認証画面に飛びます。

f:id:konisimple:20160315000141p:plain:w300

非常によく出来てて、「Twitterアカウント利用料金チェッカー」と書いてあります。これではつい認証してしまいますね。 しかも認証後、正しいサイトへリダイレクトされて、普通にサイトは動きます。

Twitter→偽物の認証画面→本物のサイト

と遷移するので、気づきにくいです。あとから、スパムツイートをされてはじめて気がつきます。

上のダイアログの場合、普段から開発でこの画面を見ている人だったら、「必要のないWRITEを求めてきているのはちょっと怪しい」と気づけそうですが、この画面よく見るし、そもそもそんなこと考えたことのないユーザーが大半なんじゃないでしょうか。

ちなみにTwitterの権限委譲の仕組み(OAuthといいます)は、以下の3種類があります。

  • READ(DM以外の全データが見られる。ツイートはできない)
  • READ/WRITE(DM以外の全データを見たり変更したりできる。ツイートしたりフォローしたりできる)
  • READ/WRITE/DM(DMを含めなんでもできる)

読み取りだけでいいのにWRITEを求めてくるアプリは怪しいです。ちなみにALLにする場合はTwitter社の審査があります。

注意喚起の開始

すぐに注意喚起のツイートをしました。@whotwi には4万人弱のフォロワーがいるので一定の効果があったと思います。こういうときTwitterアカウントを運用していると、初動でしっかり動けますね。

また、上のツイートは見ていない人もいることが想定されるので、サイト上にも注意喚起を開始しました。

f:id:konisimple:20160314235625p:plain:w300

この時点では、スパムツイートは検索して出てくるもので大体数十件くらいだったので、これで収まるだろうと思っていました。

巧妙すぎるスパムツイートの進化

翌日(3/13)、再度例のサイトを見てみると、昨日までは認証画面の前に認証ボタンだけあるページを挟んでいたのが、なくなっていました。

  • Before: ツイートなどのリンク→偽サイト→偽Twitter認証画面→本物サイト
  • After: ツイートなどのリンク→偽Twitter認証画面→本物サイト

疑う材料がない!

いままではこの偽サイトが、いかにもフィッシング、という感じだったので非常に怪しかったんですが、これがなくなるともう、巧妙すぎて、サイト上に注意喚起がなければ気づくタイミングがないですよね。

あまりネットに慣れていない人だと、Twitterのサイトが出てくるので公式のサービスであると誤解したり、リテラシーのある人でも、SSL(https)のtwitter.comのページに「Twitterアカウント利用料金チェッカー」って書いてあるから大丈夫だろうと考えてしまったりするのではないでしょうか(実際にはTwitter社は何も審査したりしていません。)。

ツイートから認証画面にいきなり飛ぶのはあやしすぎるとすぐにわかるのですが、「なんか面白そうだし、ワンクリックだけ押してもいいか」と思ってひっかかったユーザーを責めることはできないと思います。

注意喚起の強化

収まるだろうという予想とは裏腹に、被害はどんどん拡大していきました。

3/13の11時台のスパム投稿件数は、1時間に1000件に達していました。

そこで、これまでサイトに掲載していた注意喚起では読まない人もいそうだったので、全員が必ず注意喚起の画面を通過する仕組みに変えました。

f:id:konisimple:20160315014352p:plain:w250

より訴えかけるよう、サイトのトンマナを無視し、真っ赤な大きな字の警告画面を追加しました。 こんなしつこいモーダル見たこと無い、と個人的には思いますw

昔三菱東京UFJ銀行がフィッシング詐欺で、「公式が逆に怪しい」と言われるようなデザインの注意喚起をしている、と話題になっていましたが、気持ちがわかった気がします。 変化をつけなきゃ読んでもらえないですからね。

cards.hateblo.jp

Twitterの反応

Twitterでもこのスパムに関して数千ツイートされていました。気づいて注意喚起している人、勘違いしている人と反応は様々でした。

呼びかけ

Twitter上でもこの状況に気づき、注意を呼びかけてくれている人が多数いました。 8時間で約4500RTされています。

この拡散の速さは、本当にTwitterならではですね。誤った情報もすぐに拡散するけどw

勘違いしている人も。。

残念なことに、正しいサイト自体をすべてスパムだと思い込んでしまっている人も結構いたようです。

サービス運営者としては、ここが一番ショックだったところです。朝からこういうツイートを見るたびに、やるせない気持ちになっていました。

とはいえ、勘違いしてしまうのも仕方ないくらい巧妙な手口でした。

被害件数

今回同じようなツイートが連続していたため、含まれるキーワードをもとにTwitter APIからスパム投稿と思われるツイートを収集するスクリプトを作って調査しました。

その結果、件数は以下のようになりました。

  • スパムツイート件数:5,443件
  • 被害人数:3,038人

(2016/3/15 1:00時点・非公開アカウントは含まない)

これには、非公開の人と、既に削除してしまった人が入っていないので、実際にはもっと多いと思われます。 whotwiのユーザーの場合、約30%が非公開なのと、20%の人がツイートを削除済みと仮定すると、被害件数は以下になります。

  • スパムツイート件数(推定):約10,800件
  • 被害人数(推定):約6,100件

(2016/3/15 1:00時点・30%が非公開アカウント、20%の人がツイートを削除していると仮定した場合)

たった2日で、かなりの被害が出てしまいました。

スパマーの戦略

どうしてこんなに多くの人の被害が出てしまったのでしょうか。

ここではスパマーがどのようにこのスパムを仕掛けたかを見ていきたいと思います。

たくさんのアプリ

スパムツイートを分析したところ、全部で大きく分けて5種類のURLがあることがわかりました。 1つ目と2つ目は認証画面前に1ページ挟むもの、それ以外は、いきなり認証画面に飛ぶものでした。

Twitterでは、成りすましやスパムなど、問題のあるアプリは登録を消す仕組みがあるのですが、 全体が消えるリスクを少しでも低減するため、あえてアプリを分けていると思われます。

アプリ名

Twitterの連携アプリには名前をつけることができ、通常はわかりやすいサイト名「whotwi」などにします。

今回のスパムアプリでは、どれも一見すると、なんのアプリかよくわからないようなアプリ名になっていました。 アプリ連携解除の際、ユーザーは問題のあるアプリを自分で探すわけですが、名前とアイコンくらいしかないので、見つかりづらくするためです。

以下が今回見つかったアプリ名の例です。

  • Account application system
  • Twitter Client OS ver 3.2
  • erased12054076
  • Account application system
  • Account application program
  • The application program
  • erased12054075
  • erased12036533
  • erased12036537
  • The account application program
  • erased12036536

どれも消していいのかダメなのか、よくわからないですね。 またこれは、「このアプリを消してね」と言いづらくする効果もあります。

つい試したくなるツイート

ツイートはいずれも、うちのサイトの画像を3枚セットにし、「芸能人の利用料金がすごいことになるよ、あなたもやってみて」という内容のものでした。

結構普通に行ってしまうような金額を投稿することで、その前後に達したユーザーに「俺芸能人と同じレベル?」と思わせて投稿を誘導しています。 正直うまいと思います。

フィッシングスパムアプリとどう戦えばいいのか

ユーザーとして

ユーザーとしては、とにかく「気をつける」以外にはなさそうです。 認証画面が出たら、以下のことをよく考えます。

  • 信頼できるサイトのものか
  • 許可するのは何なのか?(読み取りだけ?ツイートも可能にする必要ある?)

もし不安であれば、利用終了後、アプリ連携から都度解除する、という方法もあります。

サービス提供者として

これは長い時間がかかるとは思いますが、各サービスが認証画面を適正利用するように心がけることで、変なタイミングで認証画面が出てもユーザーが違和感を持つような環境にしていく、ということしかないと思います。

  • 必要のないパーミッションは取らない
  • パーミッションが必要になる直前に要求する(whotwiではフォローボタンを押した直後にログインが必要になったりします)
  • パーミッションが必要な理由を明示する

あたりかなと思います。このあたりは、Facebookのドキュメントがわかりやすかったです。

User Experience Design - Facebook Login - Documentation - Facebook for Developers

ただやはり残念ながら、直接防ぐ方法は残念ながらないと思います。

whotwiの場合は、4年間の運用のおかげでユーザーの皆様に信頼してもらえて注意喚起のツイートが流れるなど、多くの呼びかけが被害を未然に防ぐことにつながりました。ユーザーさんとそういう関係を維持していくことしかないのかなと思います。

↑こんなことを言ってもらえると嬉しいですね。

アプリのユーザー数・レビューなどの表示があってもいいのでは

認証画面が一番の判断タイミングですが、毎回同じデザインなので、判断が難しいですよね。

そこで、ユーザーがパット見で判断できる指標を入れてくれればいいのになと思います。

せめてユーザー数だけでも。

「ユーザー数:100万」だったら問題ない確率が高いですが、「ユーザー数:500」だったら警戒しますよね。 わかりやすい。

Facebookアプリはこんな感じでいろんなところにユーザー数が表示されるので、そもそも最初から警戒できますね。

f:id:konisimple:20160315033739p:plain:w300

今後

現在もまだスパムアプリは動いています(Twitter社に消されていません)。

また、ひっかかる(ひっかかったあとで連携を解除しない)人もいます。

しかしこちらでできることはやりつくした感があるので、今はTwitter, tinyyrl、レンサバ会社など関係各所にどうにか対応してもらえるように連絡しています。

進展があったらお知らせします。