WordPressサイトが乗っ取られるまでの5つの段階

攻撃の全体像

WordPressサイトの乗っ取りは、ある日いきなりすべてが起こるわけではありません。多くの場合、標的を探す → 侵入する → 居座る → 悪用する → 隠れる という5つの段階を順に踏んで進みます。持ち主が目にする「おかしなページ」や「勝手な転送」は4つ目の段階の結果で、その手前ではすでに3つの段階が終わっています。

用語集では個々の手口を1語ずつ解説しています。この記事では、それらがどの順番で、なぜつながっているのかを見ていきます。

段階1 標的を探す

最初の段階では、人間ではなくプログラムが動いています。プログラムはインターネット上のサイトを次々に訪れ、WordPressで作られているか、どのバージョンか、どのテーマやプラグインを使っているかを調べます。こうした情報は、ページのソースや決まった場所にあるファイルから、外部からでもある程度読み取れてしまいます。

攻撃者がこれを自動で行うのは、効率のためです。一つひとつのサイトを人が調べるのではなく、すべてのサイトを機械的に調べ、「弱点が見つかったサイト」だけを次の段階に回します。サイトの規模や業種は、この時点ではほとんど関係ありません。この点は「小さなサイトは狙われないのは本当か」で詳しく扱っています。

持ち主の側では、サーバーのアクセスログに、存在しないファイルや入れていないプラグインのフォルダへのアクセスが並んでいることで、この段階の様子がうかがえます。ただ、こうした下調べはほぼすべてのサイトが日常的に受けているもので、それ自体は異常ではありません。

この段階で持ち主ができるのは、調べられても弱点が見つからない状態にしておくことです。使っていないプラグインやテーマを削除し、残したものは最新に保つ。それだけで、多くの自動スキャンは素通りしていきます。

段階2 侵入する

弱点が見つかったサイトには、実際に入り込もうとします。入口は大きく分けて2つです。

  • ソフトウェアの弱点:WordPress本体・テーマ・プラグインの脆弱性を突く。修正版(パッチ)が出ているのに更新していないサイトが主な標的になります
  • パスワード:管理画面のログインを突破する。推測されやすいパスワードや、ほかのサービスと同じパスワードを使っていると破られやすくなります

見落とされやすいのが、WordPressの外側にある入口です。レンタルサーバーの管理画面やFTPのパスワードが漏れると、WordPressのログイン画面を通らずに、サーバー上のファイルを直接書き換えられてしまいます。

侵入の瞬間に画面が変わることはほとんどなく、持ち主がこの段階で気づくのは困難です。そのため対策は「入られないようにする」が中心になります。それぞれの入口については、「脆弱性が公表されてから攻撃が始まるまで」と「パスワードが破られる3つの経路」で解説しています。

段階3 居座る

侵入に成功した攻撃者が最初に行うのは、多くの場合、改ざんではありません。あとから何度でも入り直せる裏口を作ることです。

入口に使った脆弱性は、いずれ更新で塞がれるかもしれません。漏れたパスワードも、変更されるかもしれません。そうなっても侵入を続けられるように、侵入の直後に別の出入り口を用意しておきます。この作業はプログラムで自動的に行われることも多くあります。

  • バックドア:攻撃者だけが使える隠れた出入り口。テーマの functions.php に数行だけ書き加えられることもあります
  • Webシェル:ブラウザからサーバーのファイルを操作できる不正なプログラム。本来は画像しか置かれない wp-content/uploads/ に .php ファイルとして置かれることがあります
  • 管理者ユーザーの追加:攻撃者用の管理者アカウント。一覧に表示されないよう細工されていることもあります

こうした不正なプログラムは、まとめてマルウェアと呼ばれます。

この段階では、まだサイトの見た目に変化がないこともあります。気づくきっかけになるのは、ユーザー > ユーザー一覧 に見覚えのない管理者がいる、最近触っていないファイルの更新日時が新しくなっている、といった細かな変化です。ファイルの改ざん検知を入れていれば、新しいファイルが置かれた時点で知らせを受けられます。管理者ユーザーに関する症状は「管理画面に入れない・不審なユーザーがいる」にまとめています。

段階4 悪用する

出入り口を確保した攻撃者は、いよいよサイトを自分の目的に使い始めます。持ち主が「何かおかしい」と気づくのは、たいていこの段階です。

攻撃者が欲しいのはサイトの内容ではなく、ドメインの信頼や訪問者、サーバーの処理能力といった「資源」です。そのため、持ち主の会社とまったく関係のない宣伝や偽ページが置かれます。

この段階では、外からの知らせで気づくこともあります。Googleセーフブラウジングによる警告(Googleで「ハッキングの可能性」と表示される)、Google Search Consoleの「セキュリティの問題」、サーバー会社からの連絡(サーバー会社から停止・警告の連絡が来た)などです。

段階5 隠れる

悪用を長く続けるには、持ち主に気づかれないことが欠かせません。気づかれれば掃除されてしまうからです。そこで、悪用と同時に、異変を目立たなくする細工が施されます。

  • クローキング:検索エンジンのロボットにだけスパムを見せ、人がブラウザで開いたときは普通のページを見せる
  • 条件付きの転送:スマートフォンで検索結果から来た人だけを転送し、ログイン中の管理者や、ブックマークから開いた人には何もしない。同じ人を二度は転送しないものもあります
  • 目立たない置き方:WordPress本体に似たファイル名を付ける、.htaccessに条件を書き加えて特定のアクセスだけを振り分ける、など

この細工があるため、持ち主がいつものパソコンでサイトを開いても、何も起きていないように見えます。確かめるときは、ログアウトした状態や別の端末で、検索結果からサイトを開いてみるのが基本です。Googleで site:自分のドメイン と検索し、見覚えのないページが並んでいないかを見るのも有効です。確認のポイントは「WordPressのマルウェア感染を疑うべき7つの症状」で紹介しています。

なぜ「消しただけ」では再発するのか

スパムページを消す、転送のコードを取り除く。目に見える被害を片付けるのは大切ですが、それは段階4の後始末にすぎません。段階3で作られた裏口と、段階2で使われた入口が残っていれば、攻撃者はいつでも戻ってきます。数日から数週間後に同じ症状がぶり返すのは、たいていこのためです。

バックアップから戻す場合も注意が必要です。乗っ取りに気づくまでの間に取ったバックアップには、すでに裏口が含まれていることがあります。

再発を防ぐには、次の3つをそろえる必要があります。

  • 裏口をすべて取り除く:不正なファイル・管理者ユーザー・既存ファイルへの埋め込みを、漏れなく探し出す
  • 入口を塞ぐ:突かれた脆弱性を更新で直す。漏れたパスワードを変更する
  • 関係するパスワードをすべて変える:WordPress・サーバー・FTP・データベースなど

どれか1つが欠けても、再侵入の余地が残ります。また、慌ててファイルを削除すると、どこから入られたのかを調べる手がかりが失われ、入口を特定できなくなることがあります。気づいた直後の動き方は「サイトの改ざんに気づいたら、最初にやるべき5つの初動対応」を参考にしてください。

段階ごとに、持ち主ができること

止めるのが最も簡単なのは、段階1と2です。プラグインとテーマを必要なものに絞って最新に保ち、パスワードを使い回さず、管理者には二要素認証を設定する。これで、自動化された攻撃の多くは先へ進めなくなります。

段階3より先は、どれだけ早く気づけるかの勝負です。改ざん検知を入れる、ときどきログアウトした状態で自分のサイトを見る、Search Consoleの通知を受け取れるようにしておく。こうした備えで、被害が広がる前に手を打てる可能性が高くなります。

すでに症状が出ている場合は、目に見える部分だけでなく、裏口と入口まで調べることが欠かせません。セキュリティーデスクでは、侵入経路の調査から復旧、再発防止まで対応していますので、判断に迷うときはご相談ください。

無料相談サイトの異変に気づいたら
お気軽にご相談ください

ご相談・お見積りは無料です。

保守・再発防止のご相談はこちら