WordPressの復旧・トラブル対応を承っている、Web制作エンジニアのWadaHideです。
今回は、実際に私が対応したサイト改ざんの話を書きます。技術的な手順書ではなく、「あの朝、何が起きて、何を見て判断したか」という体験談です。もし今まさにWordPressにログインできなくて困っている方がいたら、どこかで役に立つかもしれません。
始まりは、一通のメールでした
ある朝、チームのディレクターのもとに、WordPressから「パスワードを変更しました」という通知メールが届いていました。
本人には、変更した覚えがありません。
嫌な予感がしてサイトを開くと、ページの上部に文字化けした意味不明な文字列が表示されていました。日本語でも英語でもない、ノイズのような出力です。「なんだこれ」というのが、正直な第一声でした。
ディレクターがログインを試すと、ログイン画面は表示されるのに「パスワードが違います」と弾かれます。一方、私は自分のアカウントで問題なくログインできました。
この「一人だけ入れない」という差が、単なるパスワード忘れではないと判断する決め手になりました。全員が入れないならサーバー側の問題ですが、特定の一人だけが弾かれるということは、そのアカウントが狙われたということです。
幸運だったのは、サーバーの鍵は無事だったこと
状況を確認していく中で、一つ分かったことがありました。WordPressの管理画面は乗っ取られていましたが、サーバーの管理画面とFTPには問題なくアクセスできたのです。
これは大きい。こちら側に主導権が残っているということですから。もしサーバーの管理権限まで失っていたら、打てる手はまったく違っていました。
そこからは、順番の勝負でした。まずサイト全体を一時的に止めて、改ざんされたページが公開され続ける状態を断ちました。次に、WordPress・FTP・サーバー・データベースのパスワードをすべて入れ替え、さらにWordPressの認証キーを差し替えました。
この認証キーの差し替えが、実は重要です。パスワードを変えただけでは、攻撃者がすでに握っているログイン状態は切れません。 認証キーを新しくすると、その瞬間ログイン中の全員が強制的にログアウトされます。相手がまだ中にいたとしても、追い出せるわけです。
文字化けの正体
調査の決め手になったのは、ファイルの更新日時でした。
チームの誰も作業していない時刻に更新されたファイルがある。そこを起点に追っていくと、正規のキャッシュ系プラグインを装った偽物のプラグインが仕込まれていることが分かりました。
これが、あの文字化けの正体でした。この偽プラグインが全ページで実行され、処理の残骸を画面の先頭に吐き出していたのです。中身は、外部から遠隔操作ができる「裏口」でした。
さらにアクセスログを秒単位で追ったところ、攻撃者が侵入してからこの裏口を設置し、動作テストを終えるまで、かかった時間はわずか2分半でした。
そして侵入経路も特定できました。ログイン画面ではありません。WordPressに標準で備わっている機能の裏口から、ログイン試行を束ねて送りつける形でパスワードを破られていました。玄関に頑丈な鍵をかけていても、勝手口が開いていたわけです。
意外だったこと:不正なアカウントは、一つも作られていなかった
「乗っ取られたら、見覚えのない管理者ユーザーが増えているはず」と思っていませんか。私もそういうケースを想定していました。
しかし今回、不正な管理者アカウントは一つも作られていませんでした。 攻撃者がやったのは、既存のアカウントのパスワードを変えて乗っ取ることだけ。新しいアカウントを作れば管理者に気づかれますから、目立たない方を選んだのでしょう。
つまり、「ユーザー一覧が正常だから大丈夫」とは言えません。判断の材料になるのは、身に覚えのないパスワード変更の通知メールと、サイトの表示に出る異変と、パスワードを変えてもまた入れなくなることの3つです。
結果と、そこから学んだこと
発覚したのは朝で、封じ込め・原因の特定・不正プログラムの除去・再発防止まで、その日のうちに完了しました。半日です。
早い段階で動けたので、この時間で済みました。自己流で数日触ってから相談されていたら、状況が複雑になっているぶん、調査にも復旧にも何倍も時間がかかっていたはずです。
ただ、反省もあります。このサイトには、バックアップが残っていませんでした。
結果として復旧できましたが、「最悪これに戻せる」という土台が無い状態で調査を進めるのは、精神的にまったく違います。判断が慎重にならざるを得ないぶん、時間もかかりました。バックアップは「取っているか」ではなく「戻せるか」です。
そしてもう一つ。この対応の中で、依頼主が一番心配していたのは、サイトが直るかどうかではありませんでした。「自分たちのサイトのせいで、見に来てくれた方や関係者に迷惑がかかるのではないか」ということでした。
サイトのトラブルは、技術の問題に見えて、実際には信頼の問題なのだと思います。
いま、ログインできなくて困っている方へ
もし今この瞬間、WordPressに入れなくて焦っているなら、最初にやってほしいことが2つあります。
1つめ。画面に何が出ているかを確認してください。「パスワードが違う」と言われるのか、404なのか、403なのか、ログイン画面に戻されるのか、真っ白なのか。原因を推測するより先に、症状を見分けるほうが早く解決します。
2つめ。再インストールやファイル削除は、絶対にしないでください。ログインできないだけの状態を、本当にデータを失う状態に変えてしまうのは、たいていこの操作です。
ご相談について
「FTPを触るのが怖い」「自分で試したけれど直らない」「改ざんされているかもしれない」——そういう状態でしたら、無理に進めないことをおすすめします。焦って触って状態を悪化させると、かえって復旧の手間も費用も増えてしまいます。
私は、表面を直して終わりにせず、なぜ入られたのかを突き止めて塞ぐところまでを一つの仕事だと考えています。原因が分からないままバックアップから戻すと、脆弱性を抱えたまま復活させることになり、また同じことが起きるからです。
サイトのURLと症状を教えていただければ、状況の確認とお見積りは無料です。
一緒に、原因から解決していきましょう。