tike blog

セキュリティで気になった事をダラダラと。

カード情報詐取を狙った国内向けフィッシングサイトの機能について

 

 

 

はじめに

 

 

ここ最近、PayPayを騙ったフィッシングサイトが活発化しています。

 

 

piyolog.hatenadiary.jp

 

 

このようなフィッシングサイトでは、攻撃者がフィッシング用のコンテンツを纏めたzipファイル(フィッシングキット)を公開ディレクトリに放置するケースが散見されます。

本記事では、このような形で残されていたフィッシングキットを元に、PayPayのフィッシングサイトに実装された機能を簡単に説明したいと思います。

 

 

 

ルートディレクトリでのカモフラージュ

 

 

ルートディレクトリのインデックスファイル(/index.php)には、カモフラージュを目的とした以下の処理が記載されています。

 

 

f:id:tiketiketikeke:20190916170315p:plain

 

 

サーバ側で動的に取得した無関係なコンテンツをレスポンスとして返却することで、フィッシングサイトを隠ぺいしようとする意図が見て取れます。

 

この処理は昨年から度々観測されていたAmazonを騙ったフィッシングサイトで用いられていました。

 

 

 

 

しかしながら、このコンテンツ自体が目印となることから、現在では0バイトのレスポンスが返るようになっています。

  

この処理に限らず他にも共通する部分が多いことから、日本をターゲットとしたAmazonのフィッシングキットの一つがPayPay用に改変、展開されたものであると思われます。

 

 

 

日本からのリクエストにのみ応答するランディングページ

 

 

 

SMSから誘導されるランディングページ(/app/signin.php)には、日本国外からのリクエストを別の無害なサイトにリダイレクトする仕掛けがあります。

 

 

f:id:tiketiketikeke:20190916172147p:plain




リクエストの送信元IPアドレスを元にIP-API.comからジオロケーション情報を取得し、国名コードがJPに該当する場合のみ次の処理に進みます。

 

 

 

f:id:tiketiketikeke:20190916172818p:plain

 

 

 

日本以外の地域からリクエストを受けた場合は  Amazon アソシエイトプログラム オフィシャルブログ(affiliate-blog.amazon.co.jp)に遷移するため、urlscan.io など海外のサービスでは正しくスキャンできないという影響が発生しています。

 

 

 

f:id:tiketiketikeke:20190916173809p:plain

 

 

 

コンテンツの暗号化

 

 

 送信元の検証を経て偽のログイン画面が表示されます。

 

 

f:id:tiketiketikeke:20190916180058p:plain

 

 

このコンテンツは以下の処理により暗号化された形でクライアント側に送信されます。

 

 

 

f:id:tiketiketikeke:20190916181414p:plain

 

 

 

これがクライアント側に転送される暗号文です。

javascriptで復号することで、偽画面が表示されます。

 

 

 

f:id:tiketiketikeke:20190916182250p:plain

 

 

 

これは、jsを解釈できない検索エンジンへの対策だと考えられます。

フィッシングサイトの検索エンジン対策については @ninoseki さんが昨年公開した記事で触れらていますので、一読をお勧めします。

 

 

ninoseki.github.io

 

 

電話番号およびパスワードの詐取

 

 

 

この偽画面で入力された情報は、同階層のテキストファイルに出力しつつ、リアルタイムに攻撃者にメール送信されます。

 

 

 

f:id:tiketiketikeke:20190916201053p:plain

 

 

 

件名は"PayPay Login"、Fromの表示名が"BAKAYARO"となっています。

 

ユーザが入力した情報が出力されるファイル名は伏せましたが、インドネシア語が使われていました。

 

 送信先のメールアドレスはフィッシングキット上では gmail.com ドメインのものが記載されていますが、公開用コンテンツでは別のメールアドレスに変更されている可能性もあります。

 

この後、クレジットカード情報を入力する画面に遷移します。

 

 

 

クレジットカード情報の詐取

 

 

 

カード情報入力画面に遷移する前に、ここでも送信元IPアドレスによる国名コードの判定が行われれます。

 

この判定で日本からのアクセスであることを確認した上でクレジットカード情報の入力画面(/app/verification-v3/sign.php)に遷移します。

 

 

f:id:tiketiketikeke:20190916202737p:plain

 

 

 

この画面で入力された情報のPOST先(/app/verification-v3/result2.php)で、ログイン画面同様テキストファイルへの出力、メール送信が行われます。

 

 

 

f:id:tiketiketikeke:20190916204346p:plain

 

 

 

追加本人認証情報の詐取

 

 

さらにこの画面では、カード番号の上位6桁を BIN Codes (bincodes.com)に問い合わせることでカード発行会社の情報を取得し、それぞれに応じた画面に遷移するという機能を有します。

 

 

f:id:tiketiketikeke:20190916205847p:plain

 

 

 

ここで得たccbank(カード発行会社)の値により遷移先を決定する訳ですが、遷移先が準備されている発行会社名は以下の通りです。

 

 

 

f:id:tiketiketikeke:20190916210359p:plain

 

 

 

それぞれの会社のロゴが表示された本人認証用の偽画面に遷移します。

 

 

f:id:tiketiketikeke:20190916212203p:plain

 

f:id:tiketiketikeke:20190916212235p:plain

 

f:id:tiketiketikeke:20190916212303p:plain

 

f:id:tiketiketikeke:20190916212330p:plain

 

f:id:tiketiketikeke:20190916212401p:plain

 

f:id:tiketiketikeke:20190916212424p:plain

 

f:id:tiketiketikeke:20190916212456p:plain

 

 

ここで入力された情報も他の情報と同様、テキスト出力とメール送信が行われます。

 

 

f:id:tiketiketikeke:20190916213049p:plain

 

 

 

更なる本人認証

 

 

今回のPayPayのフィッシングサイトでは使われていないようですが、このフィッシングキットには、クレジットカードの両面の画像をアップロードさせるような機能も実装されています。

 

 

 

まとめ

 

 

 

今回は国内向けのフィッシングサイトの機能について、PayPay/Amazonフィッシングキットの内容を例に挙げてご説明しました。

特に目新しい機能はありませんが、フィッシングサイトとはこんなものだという雰囲気は掴んで頂けたのではないでしょうか。

 

最後までご覧いただきありがとうございました。

 

 

 

以上 

 

 

更新履歴
2019年9月16日 初版作成