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

WordPressハッキング対策完全ガイド:検出から除去・再発防止までの全手順

WordPressサイトがハッキングされ、異常な挙動や改ざんの兆候が現れていませんか?

ハッキングの正確な検出と除去は決して簡単ではありません。そこで本記事では、WordPressサイトへの不正侵入(ハッキング)を迅速に検出し、除去するための包括的なガイドをご紹介します。ハッキングの症状、検出方法、除去手順に加え、被害の原因や攻撃の種類についても詳しく解説します。すぐに除去手順を確認したい方は、こちらへお進みください。

ハッキングされたWordPressサイトの症状

サイトの改ざんなど目立つ被害であれば気づきやすいですが、中には一見すると分かりにくい微細な兆候もあります。こうした兆候は一般ユーザーには気づかれにくいものの、サイトに深刻な損害をもたらします。少しでも異変を感じたら、速やかに対応することが重要です。

1. 警告メッセージが表示される

  • ホスティング会社からのアカウント停止警告: ハッキングされたWordPressサイトの多くは、ホスティングプロバイダーからアカウント停止に関する警告メールを受け取ります。このようなメッセージが届いた場合、サイトがハッキングされている可能性があります。
  • Googleからの警告表示: Googleで検索した際、サイト名の下に「このサイトはコンピュータに害を及ぼす可能性があります」などの警告が表示されることがあります。
  • アクセス数の急激な減少: スパムや悪意あるスクリプトの配信などを理由に、Googleなどの検索エンジンからブラックリスト登録されると、トラフィックが急落します。
  • セキュリティサービスからの通知: Astra Securityなどのセキュリティサービス利用者は、スキャンで悪意あるコードが発見された際に警告メールを受け取ることがあります。

2. サイトの挙動がおかしくなる

以下のような症状が見られる場合、WordPressサイトがハッキング被害を受けている可能性が非常に高いです。

  • 意図しないリダイレクト: ユーザーが別のページへ勝手に転送される場合は、明確なハッキングの兆候です。「buyittraffic」「digestcolect」「outlook」リダイレクトハックなどの被害例があります。悪質なドメインとしては buyittraffic[.com]、cuttraffic[.com]、digestcolect[.]com、travelinskydream[.]ga などが知られています。
  • 管理画面にログインできない: 攻撃者が設定を変更し、管理者を締め出している可能性があります。
  • 広告ブロッカーによる遮断: 暗号通貨マイニングスクリプトが仕込まれていると、AdBlockerなどがサイトをブロックします。
  • 不明なポップアップや悪質な広告: サイト上に見覚えのないポップアップや悪意ある広告が表示され始めます。
  • 不適切なプッシュ通知: 露骨な内容のプッシュ通知が訪問者に届くようになります。
  • 不審なcronジョブやサーバーログ: 実行待ちの怪しいcronジョブが存在する、またはサーバーログに不審なアクティビティが記録されている。
  • 日本語の文字化けや意味不明なコンテンツ: 日本語キーワードハックやファーマハックなどの被害を示唆します。
  • スパムメールの送信: 自サイトのドメインからスパムメールが送信されている。
  • 予期しないエラーとパフォーマンス低下: エラーメッセージが頻発し、サイトが極端に遅くなる、または応答しなくなる。
  • サーバーリソースの異常消費: アクセス数が少ないのにサーバーのCPU使用率が常に高い状態が続く。

3. ファイルに変更が見られる

ファイルの変更を確認することは、ハッキング被害を把握する最も確実な方法の一つです。以下の点に注目してください。

  • wp-admin および wp-includes ディレクトリ内の未知のファイル: これらのコアディレクトリに新しいファイルが追加されることは稀です。
  • テーマ・ヘッダー・フッターファイルの改ざん: リダイレクト処理が組み込まれている。
  • データベースに未知の管理者アカウントが出現: 覚えのないadminユーザーが作成されている。
  • 検索結果のmeta descriptionが不正: Googleの検索結果に表示される説明文が書き換えられている。
  • コアファイル内の悪質なリンク: スパムリンクの注入はWordPressサイトへの最も一般的な攻撃手法の一つです。
  • 見慣れない.phpファイルの追加: 人気プラグインの複製ファイルで、ファイル名がわずかに変更されているケースもあります。近年の「Monetization」ハック(monit.php)がその典型例です。

WordPressハッキングの修正手順

ハッキング被害を確信できたら、以下の手順で除去作業を進めましょう。

1. サイトのバックアップを作成する

まずサイト全体の完全バックアップを取得しましょう。万が一の際に復元できるよう、バックアップが正常に機能することを必ず確認してください。

バックアップにはWPコアファイル、データベース、プラグインファイル、テーマファイル、.htaccessファイルを含める必要があります。多くのホスティングサービスはバックアップ機能を提供しています。詳細はホスティングプロバイダーに問い合わせるか、FileZillaなどのSFTPクライアントを使って手動でバックアップを取得することも可能です。

サイトファイルのバックアップ方法

① プラグインを使用する

UpdraftPlusなどのバックアッププラグインを使えば、ファイルとデータベースを含むサイト全体を簡単にバックアップできます。

  • プラグインをインストールして有効化する
  • バックアップを実行し、ローカルまたはクラウドに保存する
② SSH経由でバックアップする
  • SSHでサーバーに接続する
  • 以下のコマンドを実行する:zip -r backup-pre-cleanup.zip

これによりサイト全体のzipファイルが作成されるので、PCにダウンロードしましょう。

③ SFTP経由でバックアップする
  • FileZillaなどのSFTPクライアントでサーバーに接続する
  • PC上にバックアップ用フォルダを作成し、ファイルをコピーする

手動作業のため、他の方法より時間がかかる点に注意してください。

データベースのバックアップ方法

① プラグインを使用する

前述のUpdraftPlusプラグインでデータベースも同様にバックアップできます。

② phpMyAdmin経由でバックアップする
  • phpMyAdminでWordPressデータベースにアクセスする
  • データベース全体をエクスポートし、PCに保存する
③ SSH経由でバックアップする
  • SSHでサーバーに接続する
  • 以下のコマンドを実行する:mysqldump -p -h hostname -u username database > backup-pre-cleanup.sql

注意: コマンド実行前に認証情報(ユーザー名、パスワード、ホスト名など)を実際の環境に合わせて変更してください。また、ローカルに保存した後はサーバー上のコピーを削除することを忘れずに。

2. メンテナンスモードを有効にする

悪意あるアクティビティを検出したら、サイトをメンテナンスモードに切り替えるのが賢明です。これにより、訪問者がハッキングの影響を受けないようにできます。また、クリーンアップ作業中の変更が稼働中のサイトのパフォーマンスに影響を与えるのを防ぐこともできます。

Coming Soonプラグイン(SeedProd)などを使えば、ハッキング対応中であることを悟られずに、おしゃれなメンテナンス画面を訪問者に表示できます。

  • プラグインをインストールして有効化すると、管理画面の左パネルに「SeedProd」として表示されます
  • メンテナンスモードを有効にする

ブランドのロゴやメッセージを追加して、メンテナンスページをカスタマイズすることも可能です。

3. すべてのパスワードを変更する

まだサイトにアクセスできる場合は、直ちにすべてのパスワードを変更し、攻撃者のアクセスを遮断しましょう。対象には管理画面、ホスティングアカウント、データベース、その他すべての関連アカウントが含まれます。チームメンバーが管理画面を使用している場合は、全員にパスワード変更を依頼してください。

さらに、全ユーザーアカウントの再認証を強制するのも有効です。これにより全ユーザーが自動的にログアウトされ、再度認証が必要になります。不正ユーザーからアクセスを奪うもう一つの手段です。

LastPassやKeePassなどのパスワード管理ツールを使って、各アカウントに強力なランダムパスワードを自動生成するのもおすすめです。

注意: データベースの認証情報を変更した際は、wp-config.phpファイルの更新をお忘れなく。

4. プラグインの脆弱性を確認する

サードパーティ製プラグインの脆弱性は、WordPressハッキングの主要な原因の一つです。実にWordPressハッキングの約56%がプラグインの脆弱性に起因するという調査結果もあります。

クリーンアップ作業に入る前に、使用中のプラグインのバージョンに脆弱性がないか確認しましょう。WordPress公式フォーラムやセキュリティ関連ブログで最新情報をチェックできます。大規模なプラグイン脆弱性が発見された際は、多くの場合フォーラムで対策が議論されています。特定の脆弱性についてGoogleで検索すれば、詳細な対処法を見つけられるでしょう。

5. ファイルを診断する

5.1 マルウェアスキャナーで悪意あるコードを検出する

マルウェアスキャナー(Astraなど)でサイトをスキャンすれば、悪意あるコンテンツを含むすべてのファイルの詳細を取得できます。手動でのスキャンも可能ですが、非常に時間がかかります。

不審なファイルが見つかった場合は、オンラインツールで内容をデコードできます。phpMyAdminを使ってデータベース内の不審なコードを調査することも可能です。phpMyAdminはデータベースのクリーンアップにも役立ちます。

不審なものを見つけたものの、それが何をするのか判断できない場合は、専門家に相談することをおすすめします。

5.2 「find」コマンドで最近の変更を確認する

攻撃者によって変更されたWordPressファイルを特定するには、SSHでサーバーにアクセスし、以下のコマンドを実行します。

find . -mtime -2 -ls

このコマンドは過去2日間に変更されたすべてのWordPressファイルを一覧表示します。日数を増やしながら、不審な変更が見つかるまで遡って調査しましょう。さらにgrepコマンドと組み合わせれば、base64形式でエンコードされたコードを検索できます。

find . -name "*.php" -exec grep "base64" {} \; -print &> hiddencode.txt

5.3 オリジナルのWordPressファイルと比較する

WordPress.orgから自分のバージョンに合った新鮮なWordPressファイルをダウンロードし、バックアップと比較する方法もあります。Diffcheckerなどのオンラインツールを使えば、ファイル間の差分を簡単に特定できます。必ず使用中のWordPressバージョンに対応したファイルをダウンロードしてください。

差分を記録して分析し、悪意ある注入リンクが見つかったら即座に削除しましょう。また、以下のような危険なキーワードがファイル内に含まれていないか確認することも有効です。

eval、exec、strrev、assert、base64、str_rot13、stripslashes、preg_replace(/e/修飾子付き)、move_uploaded_file など

キーワード検索はコマンドでも実行できます。例えば「base64」を含むファイルを検索するには:

sudo grep -ril base64 /

「base64」を他のキーワードに置き換えて同様に検索し、該当ファイルを慎重にレビューしてください。

5.4 診断ツールで確認する

Google Search Consoleなどのウェブマスターツールは、ハッキングの検出において迅速かつ正確です。「セキュリティ」タブに問題が一覧表示されるため、ハッキングの種類や影響を受けたファイル・ページを特定するのに役立ちます。

6. WordPressファイルから悪意あるスクリプトを除去する

徹底的な診断が完了したら、すべての調査結果をリストアップしましょう。ファイルの差分、最近の変更、偽のユーザー/管理者アカウントなど、一つひとつ慎重に確認します。wp-config.php、wp-content/uploads、プラグインファイル、テーマファイル、データベースなどのコアファイルをクリーンアップしてください。

以下は、WordPressハッキングの症状別に特化した詳細な除去ガイドです。それぞれの状況に応じて参照してください。

  • WordPressリダイレクトハックの修正(スパムページへの転送が発生している場合)
  • wp-vcdマルウェアの駆除(functions.phpに不審なスクリプトがある場合)
  • 日本語SEOスパムの修正(Google検索結果に日本語が表示される場合)
  • ファーマハックの修正(バイアグラなどの医薬品スパムが表示される場合)
  • JavaScriptマルウェアの除去(スパムJSを読み込む、ブラックリスト警告が出る場合)
  • Googleブラックリストからの解除(赤い警告画面が表示される場合)
  • WordPress管理画面ハックの修正(改ざん、ログイン不可の場合)
  • バックドアの検出と除去(再感染を繰り返す場合)
  • Monetizationハックの修正(monit.phpという不審なファイルが出現する場合)
  • プッシュ通知ハックの修正(訪問者に悪質な通知が届く場合)

7. サイトマップをクリーンアップする

sitemap.xmlに悪意あるスクリプトが潜んでいるケースもあります。XMLサイトマップはGoogleがサイト内の重要ページをクロールするためのファイルですが、ハッカーが悪質なリンクを注入することがあります。サイトマップをスキャンし、通常とは異なるものがあれば削除しましょう。

8. データベースをクリーンアップする

WordPressデータベースには、ユーザー情報、ページコンテンツ、機密性の高い認証情報などが保存されています。攻撃者にとって格好の標的となるため、データベースのスキャンは極めて重要です。マルウェアスキャナーを使えば、wp_dbファイル内の感染状況を正確に把握できます。

手動で確認する場合は、11個すべてのテーブルをスキャンし、不審なリンクやiframeを探して削除する必要があります。

9. 再インストールする

感染が深刻な場合は、ファイルを削除して新しいものと入れ替えるのが得策です。再インストールはファイルだけにとどまらず、クリーンアップ後にすべてのプラグインも再インストールしましょう。使わなくなった古いプラグインを放置していると、ほぼ必ず脆弱性が残っているため、攻撃者の格好の餌食となります。

「サイト全体を削除してゼロから作り直す方が良い」と考えるサイトオーナーもいますが、それはおすすめできません。適切なクリーンアップと再インストールの方が、はるかに効率的で安全です。

10. 専門家のサポートを活用する

Astra Proの顧客であれば、心配無用です。専門チームがハッキング除去を完全にサポートします。

Astraをまだ利用していない方も、今すぐ登録すれば、マルウェアスキャナーがサイト内の隠れたマルウェアやバックドアをすべて検出します。

WordPressがハッキングされる主な原因

サイトのセキュリティは、あなたが講じる対策次第で大きく変わります。基本的なセキュリティルールを守るだけで、オンライン上のリスクを大幅に減らせます。ここでは、ハッキング被害につながりやすい原因と、再発防止のためのベストプラクティスを紹介します。

1. WordPressを更新していない

最新版への更新を怠ることは、WordPressハッキングの第1の原因です。既知の脆弱性はアップデートで修正されるため、常に最新のパッチ済みバージョンに速やかに更新しましょう。

2. 共有サーバーでのホスティング

共有サーバーはコスト面で有利ですが、一度ハッキングされると他のサイトへの波及など深刻な事態になりかねません。信頼できるホスティングプロバイダーを選び、セキュリティ基準を満たしているか確認しましょう。

3. 弱いパスワードとユーザー名の使用

自分の名前やサイト名のみで構成され、数字や特殊文字を含まないパスワードは極めて脆弱です。以下の項目には必ず強固なパスワードを設定してください。

  • wp-admin 管理画面
  • サーバーホスティングパネル
  • データベース
  • FTPアカウント
  • 主要なメールアカウント

また、デフォルトのユーザー名(admin、自分の名前、サイト名など)は推測されやすいため、独自のものに変更しましょう。

4. 不適切なファイル権限

緩いファイル権限は、攻撃者によるアクセス、改ざん、削除を許してしまいます。最小権限の原則に従い、推奨される権限を設定してください。

  • ファイル: 644
  • ディレクトリ: 755

5. wp-adminディレクトリへの無防備なアクセス

wp-adminディレクトリはサイトを制御する中枢です。役割(ロール)ごとに権限を定義してアクセスを制限し、二要素認証(2FA)などの追加の認証レイヤーを設けることで、セキュリティを大幅に強化できます。

6. 古いプラグインやテーマの使用

多くのWordPressサイトが古いプラグインやテーマを使い続けています。これらには既知の脆弱性が含まれていることが多く、ハッカーにとって格好の攻撃対象です。開発元がアップデートを公開したら、速やかに適用しましょう。

7. 平文FTPの代わりにSFTP/SSHを使用していない

平文FTPはパスワードを暗号化せずに送信するため、盗聴のリスクが高まります。一方、SFTP(SSH File Transfer Protocol)はデータを暗号化して送信します。サーバーに接続する際は、必ずプロトコルを「SFTP – SSH」に設定しましょう。

ハッカーはどのようにWordPressサイトを攻撃するのか?

1. SQLインジェクション

WordPress 4.8.3以前のバージョンにはSQLインジェクションの脆弱性が発見されました。皮肉なことに、安全なクエリを準備するために使われる$wpdb->prepare()メソッド自体が脆弱だったのです。この関数を使ってクエリを生成していたプラグインやテーマも、潜在的にSQLi攻撃の危険にさらされていました。

30万以上のダウンロードがあるWP StatisticsプラグインにもSQLi脆弱性がありました。攻撃者はSQLインジェクションを通じて、wp_usersテーブルなどの機密データを読み取れます。パスワードは暗号化されて保存されていますが、復号ツールで解析される恐れがあります。最悪の場合、リバースシェルをアップロードされ、サイトを完全に乗っ取られることもあります。

2. クロスサイトスクリプティング(XSS)

WordPress 5.1.1以前にはXSS、CSRF、RCEの脆弱性が存在しました。これは保存型XSS(Stored XSS)であり、コメントをサニタイズするwp_filter_kses()関数が、<a>タグとhref属性など一部のHTMLタグを許可していたことが原因です。攻撃者は<a title='XSS " onmouseover=evilCode() id=" '>のようなペイロードを仕込み、データベースに保存させ、ユーザーがページを訪れるたびに実行させることができました。

3. クロスサイトリクエストフォージェリ(CSRF)

WordPressはトラックバックやピンバック機能を妨げないよう、CSRFトークンを全面的には実装していません。代わりに、コメントフォームでは管理者と一般ユーザーを区別するためにnonceを使用しています。nonceが正しければコメントはサニタイズなしで作成され、誤っていればサニタイズされます。しかし、wp_filter_post_kses()関数は本来許可されるべきでないHTMLタグや属性を多数許容してしまうため、攻撃者がCSRF攻撃を仕掛ける隙となりました。

4. リモートコード実行(RCE)

WordPress 4.9.9以前および5.0.1以前の5.x系にはRCEの脆弱性がありました。脆弱な箇所は_wp_attached_file()関数のPost metaエントリで、「.jpg?file.php」のような文字列に操作できるものでした。ただし、この脆弱性を悪用するには投稿者権限が必要でした。攻撃者はPHPコードをExifメタデータに埋め込んだ細工済み画像をアップロードでき、エクスloitコードやMetasploitモジュールも公開されていました。

5. ディレクトリトラバーサル

WordPress 5.0.3にはパストラバーサル攻撃に対する脆弱性がありました。悪用には少なくとも投稿者権限が必要で、脆弱なコンポーネントはwp_crop_image()関数でした。画像をトリミングするこの機能により、任意のディレクトリへ画像を出力でき、ファイル名に「../」を付加することで、攻撃者が取得したいファイルのパスへアクセス可能でした。

6. バグのあるプラグインやテーマ

コーディング品質の低いプラグインが原因でハッキングされるケースも少なくありません。無名の作者によるテーマにはバグだらけのコードが含まれていることがあり、攻撃者自身がマルウェアを仕込んだプラグインやテーマを配布する場合もあります。古いWordPressソフトウェアも脆弱性の温床となります。

WordPressサイトを安全に保つために

1. セキュリティのベストプラクティス

  • 一般的またはデフォルトのパスワードを避け、安全でランダムなパスワードを設定する
  • 古いWordPressインストールのフォルダをサイトから削除する(機密情報漏洩のリスク)
  • 信頼できない作者のヌル(海賊版)テーマやプラグインを使用しない
  • 既存のプラグインとテーマを常に最新のパッチで更新する
  • WordPressホスティングスペースを他サイトと共有する場合はサブネット化を活用する
  • インターネット上に不要なポートが開いていないことを確認する
  • .htaccessを使って機密ファイルのディレクトリインデックスを無効化する
  • 大量のボットトラフィックが検出される国からのIPを制限する
  • 開発者であればセキュアコーディングのプラクティスに従う
  • WordPressサイトにSSL証明書を導入する
  • WordPressサイトのバックアップを常に別途保管する
  • wp-login.phpを固有のスラッグにリネームする
  • ログイン時に二要素認証(2FA)を有効にする

2. セキュリティソリューションの導入

ファイアウォールは、たとえサイトに脆弱性があっても防御に役立ちます。AstraはEssential、Pro、Businessの3つのプランを提供しており、個人ブログから企業サイトまで幅広いニーズに対応します。さらに、Astraのセキュリティソリューションは脆弱なWordPressサイトを自動的にスキャンし、パッチを適用します。プラグインをインストールするだけで、サイトは再び安全になります。

3. セキュリティ監査とペネトレーションテスト

WordPressの脆弱性は今後も発生し続けるでしょう。予防策として、定期的なペネトレーションテストの実施をおすすめします。攻撃者に先んじてセキュリティ上の抜け穴を発見できます。Astraは120以上のアクティブテストを備えた包括的なセキュリティ監査を提供し、自動テストと手動テストの最適な組み合わせでWordPressサイト全体を評価します。

  1. Fitbit Pay完全ガイド:設定方法からお支払い・セキュリティ対策まで徹底解説

    Fitbitは、最も優れたスマートウェアラブルデバイスのひとつです。多彩なモデルと豊富な機能を備えており、その中でも人気の高い機能が「Fitbit Pay」です。Fitbit IonicやFitbit Versaに搭載されたNFC(近距離無線通信)チップにより、非接触決済に対応したあらゆる店舗で、腕時計をつけたまま支払いが可能になります。 この記事では、Fitbit Payの使い方をマスターできるよう、設定方法からセキュリティ対策まで完全ガイドとして詳しく解説します。 Fitbit Payとは? Fitbit Payは、デビットカードやクレジットカードをFitbit IonicおよびVersa

  2. Androidのウイルス除去完全ガイド|感染原因・症状・対処法を徹底解説

    あらゆる場面において、ウイルスへの感染は最大の悪夢です! テクノロジーの世界では、ウイルスやマルウェアといえばデスクトップPCやノートPCを連想しがちですが、実は最も感染リスクが高いOSのひとつがAndroidスマートフォンです。ここ数ヶ月だけでも数多くの脆弱性が悪用されており、研究者の調査によると、全Android端末の87%が少なくとも1つの重大な脆弱性にさらされ、95%の端末はたった1通のSMSメッセージでハッキングされる可能性があることが判明しています。 では、もしスマホがウイルスに感染してしまったらどうすればよいのでしょうか?多くの方が真っ先に思い浮かべるのは「初期化(ファクトリーリ