WordPressマルウェア駆除後にアクセスログで再侵入を確認する方法

WordPressマルウェア駆除後のアクセスログから再侵入を調べるイメージ

「WordPressのマルウェアを駆除したのに、攻撃者がまた入ってきていないか不安」と困っていませんか?
見た目が正常に戻っても、アクセスログには大量の海外IPや不審なURLが並び、どれが本当に危険なのか分かりにくいものです。

駆除後もログイン画面への試行や存在しないファイルへのアクセスは続きます。
そのため、怪しい記録が1件あるだけで「再侵入された」と判断すると、正常なBotや遮断済みの攻撃まで被害として数えてしまいます。

一方で、ログを確認せず「画面が直ったから完了」と考えるのも危険です。
残った認証情報、バックドア、外部連携を使われると、駆除後に新しい管理者や不審ファイルが作られることがあります。

よこやま良平

WordPressの復旧を多数手がけてきたよこやま良平です。わたしの現場経験をもとに、駆除後のアクセスログを安全に保存し、再侵入の疑いを見分ける手順を解説します。

この記事でわかること
  • アクセスログだけで再侵入を断定できない理由
  • 駆除後のログを失わずに保存する方法
  • 優先して確認するURL・応答・アクセスの流れ
  • ファイル・データベース・ユーザーとの照合手順
  • 再侵入が疑われる時の安全な初動と監視期間

結論から言うと、WordPressマルウェア駆除後の再侵入は、アクセスログの1行ではなく「駆除完了後の一連のリクエスト」と「同時刻のサイト内部の変化」を結び付けて判断します。

まずログ原本を保存し、時刻をそろえ、疑わしい要求の前後を追ってください。
そのうえでファイル更新、管理者追加、Cron、データベース変更が重なれば、再侵入の疑いは強くなります。

目次

【無料プレゼント】
WordPress緊急チェック50

「自分のサイトは今、安全なのか?」
自信を持って答えられますか?

WordPress緊急チェック50

こんなお悩みはありませんか?

  • ある朝、サイトを開いたら真っ白画面になっていた
  • 管理画面にログインできなくなって手が止まった
  • 身に覚えのない記事やページが勝手に増えていた
  • プラグインを更新したらサイト全体が崩れてしまった
  • 以前バックアップを取ったか自分でも覚えていない

累計1,000件以上のWordPressトラブル対応の経験から、「壊れる前に備える」ためのチェックリストを1冊にまとめました。
ログイン・本体・バックアップ・サーバー・運用の5分野を、50項目で「危険度・確認方法・対処法」まで解説しています。

セキュリティプラグイン・WordPressの教科書も含めた3大特典を、
今なら無料で受け取れます。

今すぐ無料ダウンロードする →

※登録後すぐにメールで特典をお届けします

WordPressマルウェア駆除後の再侵入はアクセスログだけで断定しない

WordPressマルウェア駆除後の再侵入は、アクセスログだけを見て即断しないことが重要です。
アクセスログは「サーバーへ届いた要求」を記録しますが、その要求によってログインやコード実行が成功したかまでは、常に示してくれるわけではありません。

アクセスログは誰がどこへ何を要求したかを見る記録

一般的なアクセスログには、接続元IP、日時、HTTPメソッド、要求URL、応答ステータス、送信バイト数、参照元、User-Agentなどが記録されます。
ただし、項目名や並び方、保存期間はサーバー会社や設定によって異なります。

最初に確認するログ項目
  • アクセスが届いた日時とタイムゾーン
  • GET・POSTなどのHTTPメソッド
  • 要求されたURLとクエリ文字列
  • 200・302・403・404・500などの応答
  • 接続元IP、User-Agent、Referer
  • 同じ接続元による直前・直後の要求

403や404は遮断された試行で200も成功の証明ではない

403はアクセス拒否、404は対象が見つからない応答なので、多くの場合は攻撃がその要求では成功していないことを示します。
同じURLへの403が続いていても、それだけでWordPress内部へ入られたとは言えません。

反対に200は、Webサーバーが何らかの正常応答を返したという意味です。
ログイン画面を表示しただけ、REST APIがエラーメッセージを200で返しただけ、キャッシュが応答しただけという場合もあり、侵入成功とは限りません。

HTTPステータスは入口です。要求URL、メソッド、応答サイズ、前後の流れ、サイト内部の変化をそろえてから判断してください。

アクセスログ・エラーログ・監査ログの役割を分ける

アクセスログが要求の流れを示すのに対し、エラーログはPHPやWebサーバーで起きた異常を補います。
WordPressの監査ログやセキュリティログがある場合は、ログイン、ユーザー変更、プラグイン操作などの管理画面内の動きを確認できます。

WordPressマルウェア駆除後にアクセスログを保存して基準時刻を作る

WordPressマルウェア駆除後のアクセスログ確認は、最初に原本を保存し、駆除完了時刻を基準として固定するのが正解です。
ログが上書き・圧縮・削除されてからでは、再侵入の有無をさかのぼれません。

ログ原本は加工前に公開領域外へ保存する

ログをExcelへ貼り付けたり、検索結果だけ抜き出したりする前に、元ファイルをそのまま保全します。
圧縮ログがある場合は圧縮状態の原本も残し、調査用コピーを展開して使うと安全です。

保存しておく資料
  • 駆除前後を含むアクセスログ原本
  • 同期間のエラーログと監査ログ
  • 駆除完了日時と実施した作業一覧
  • 正常化直後のファイル一覧・ハッシュ・更新日時
  • 管理者ユーザー、Application Passwords、Cronの一覧

保存先をWeb公開フォルダ内にすると、ログに含まれるIPやURL、場合によっては機密性のあるクエリが第三者から見える危険があります。
パソコンの暗号化された保存領域や、アクセス制限された保管場所を選びましょう。

ログ保全の注意

ログ原本を編集・削除せず、顧客情報、認証用URL、トークンらしき値をチャットや公開サービスへ貼り付けないでください。共有用は必要部分だけを複製し、機密情報を伏せます。

駆除完了時刻とログのタイムゾーンをそろえる

次に「駆除を完了し、正常確認を終えた時刻」を記録します。
ファイルを消した時刻だけではなく、認証情報変更、キャッシュ削除、動作確認まで終わった時点を基準にすると、前後を比較しやすくなります。

サーバーログはUTC、WordPressはJST、CDN画面はブラウザーの現地時刻というように、表示基準が違う場合があります。
すべてJSTなど1つの基準へ換算し、元のタイムゾーンもメモしてください。

WordPressマルウェア駆除完了時刻を基準にアクセスログを保存する流れ

正常化直後の状態を比較用ベースラインにする

ログを読むだけでなく、駆除完了直後の正常な状態を保存してください。
比較対象がなければ、後で見つけたファイルやCronが以前からあった正規機能なのか、駆除後に追加されたのか区別できません。

WordPressマルウェア駆除後のアクセスログで再侵入の痕跡を探す

WordPressマルウェア駆除後のアクセスログでは、書き込みや認証につながり得る要求と、見覚えのない実行ファイルへの直アクセスを優先して探します。
すべての行を最初から読むより、危険度が高い経路から前後を広げる方が効率的です。

POST要求は対象URLと後続の動きをまとめて見る

POSTはログイン、フォーム送信、REST API、Ajax、XML-RPCなどで使われます。
POST自体は正常ですが、駆除後に未知の接続元から短時間で繰り返され、その後に内部変更が起きていれば詳しい確認が必要です。

優先して確認する要求
  • wp-login.phpへの連続POSTと直後の管理画面アクセス
  • xmlrpc.phpへの大量POSTや通常使わない連携要求
  • wp-json配下の認証付き更新系リクエスト
  • admin-ajax.phpへの偏ったPOSTと同じactionの反復
  • uploadsやキャッシュ配下のPHPらしきパスへの要求
  • 駆除対象だったファイル名・URLへの再アクセス

ログの調査用コピーをコマンドで絞り込む場合は、次のような入口があります。
実際のログ名や保存場所はサーバー会社で異なるため、原本ではなく複製したファイルで実行します。

grep -E 'POST .*(wp-login\.php|xmlrpc\.php|wp-json|admin-ajax\.php)' access.log
grep -E 'wp-content/uploads/.*\.php' access.log
zgrep -E 'wp-login\.php|xmlrpc\.php|wp-json|admin-ajax\.php' access.log.*.gz

検索結果には正常な通信も含まれます。
該当行だけで終わらず、その前後数分の要求を確認し、同じ接続元がどのURLをどの順番でたどったかを復元してください。

見覚えのないPHPや駆除済みURLへの直アクセスを追う

画像しか置かないはずのuploads配下や、ランダムな名前のPHPへのアクセスは優先調査対象です。
ただし404なら、攻撃者が既知のファイル名を機械的に探しているだけの場合があります。

重要なのは、そのパスに実ファイルが存在するか、いつ作成・更新されたか、正規機能が生成したものかを確認することです。
200で応答していても、WAFの案内ページやカスタム404が200を返す構成なら、実行成功とは判断できません。

不審パスの確認順
  1. 要求時刻・メソッド・応答・送信量を控える
  2. 同じパスの前後にある要求を並べる
  3. サーバー上の実ファイル有無と更新時刻を確認する
  4. 正規配布物や正常バックアップと内容を比較する
  5. 管理者追加・Cron・DB変更との時間差を確認する

IPだけでなくUser-Agentと要求の順番をグループ化する

たとえばログインPOSTの直後にwp-admin、ユーザー編集、プラグイン編集へ進む一連の動きは、単発の404探索より優先度が高いです。
一方、数秒で無関係なURLを総当たりし、すべて403・404なら、Botが遮断されている可能性が高くなります。

アクセスログとファイルやデータベースの変更を時系列で照合するイメージ

WordPressの再侵入をアクセスログ・ファイル・DBで照合する

WordPressの再侵入を判断するには、アクセスログの時刻と、ファイル・データベース・ユーザー・Cronの変化を同じ時系列へ並べます。
複数の独立した証拠が同じ流れを示すほど、判断の確度が上がります。

疑わしい要求の直後にファイルが変化していないか確認する

最初に、駆除完了後に作成・更新されたPHP、JavaScript、.htaccess、wp-config.php、mu-plugins、キャッシュ関連ファイルを確認します。
ファイルの更新日時だけで感染を断定せず、内容と正規版との差分も必要です。

時系列照合の3ステップ
  1. 駆除完了時刻から疑わしい要求までの流れを抽出する
  2. 要求後に発生したファイル・DB・ユーザー・Cronの変更を並べる
  3. 正規運用で説明できる変更と説明できない変更に分ける

管理者ユーザー・Cron・データベースの変化を確認する

見覚えのない管理者が増えた、既存管理者のメールアドレスや権限が変わった、不明なApplication Passwordsが作られた場合は重要な兆候です。
作成時刻や最終利用情報が確認できるものは、アクセスログと照合します。

また、不審なWP-Cronイベントやサーバー側Cronが追加されると、攻撃者が再アクセスしなくてもマルウェアを復元できることがあります。
「外部からの再侵入」と「内部に残った自動実行による再生成」は対策が違うため、必ず切り分けてください。

データベースでは、新規ユーザーだけでなく、optionsの不審なURL、改変されたホームURL、未知の自動読み込みデータ、予約投稿やスパムページも確認します。
DBを直接修正する前にバックアップを取り、シリアライズされた値を手作業で壊さないよう注意が必要です。

CDN経由のIPをそのまま訪問者IPと決めつけない

CloudflareなどのCDNやリバースプロキシを使うと、オリジンサーバーのログにCDN側のIPが記録されることがあります。
この状態でIP遮断すると、正常な利用者まで広く止めてしまうおそれがあります。

元の訪問者IPを記録する場合は、利用中のCDNとサーバーの公式設定に従い、信頼するプロキシの範囲を限定します。
外部から自由に送れる転送ヘッダーを無条件で信用すると、攻撃者にIPを偽装される可能性があります。

再侵入の判定レベル
  • 正常寄り: 既知の監視・利用者・更新処理で説明でき、内部変更がない
  • 要観察: 不審なPOSTや未知パスはあるが、遮断され内部変更を確認できない
  • 再侵入疑い: 不審要求の直後に未知ファイル、管理者、Cron、DB変更が発生
  • 緊急: 不正転送、スパム生成、権限奪取、情報送信など進行中の被害がある
WordPressの再侵入疑いで証拠保全から監視まで進める対応フロー

WordPressマルウェア駆除後に再侵入が疑われた時の対応

WordPressマルウェア駆除後に再侵入が疑われたら、先に証拠を保全し、その後で被害拡大を止めます。
不審ファイルを見つけるたびに消すだけでは、侵入口や再生成元が残り、原因を追えなくなることがあります。

ログと現状を保存してから公開範囲を制限する

まずアクセスログ、エラーログ、現在のファイルとDB、ユーザー一覧、Cron一覧を保存します。
進行中の不正転送や情報送信が疑われる場合は、業務影響を確認しながらメンテナンス表示、WAF、アクセス制限などで公開被害を抑えます。

再侵入疑いの初動順
  1. ログ原本と現在のサイト状態を保全する
  2. 進行中の被害と利用者への影響を確認する
  3. 必要な範囲で公開・管理画面・外部連携を制限する
  4. 安全な端末から認証情報とセッションを失効する
  5. 侵入口・残存バックドア・同一アカウント内を再調査する

パスワード・セッション・外部連携を安全な端末から失効する

WordPress管理者だけでなく、サーバー、FTP・SFTP、データベース、メール、ドメイン、CDN、バックアップサービスの認証情報を見直します。
同じパスワードの使い回しがあれば、影響範囲を広げて変更してください。

WordPressの全セッションを切り、見覚えのないApplication PasswordsやAPIキーを無効化します。
感染した可能性があるパソコンやブラウザーから変更すると、新しい認証情報まで盗まれるおそれがあるため、端末の安全確認も必要です。

失効対象の確認
  • WordPress管理者と全ユーザーのセッション
  • 見覚えのないApplication PasswordsとAPIキー
  • サーバー・SFTP・DB・メール・ドメインの認証情報
  • CDN、バックアップ、監視、外部投稿ツールの連携
  • 共有されている管理アカウントと退職者・旧担当者の権限

ファイル1個の削除で終わらせず侵入口まで再調査する

再侵入が疑われる場合は、WordPress本体、テーマ、プラグイン、mu-plugins、uploads、.htaccess、wp-config.php、データベースを再確認します。
同じサーバーアカウントに古いWordPressや別CMSがあれば、そこから戻されていないかも調べます。

正常な公式配布物へ差し替える作業と、利用者データを残す作業を分けて考えてください。
バックアップを戻す場合も、感染前である根拠、復元後の認証情報変更、ログ比較までセットで行います。

わたしの実務では、不審ファイルの削除より「何がそのファイルを作ったか」を追う方が、再発を止めるうえで重要です。

WordPressマルウェア駆除後の監視を24時間・72時間・7日で続ける

WordPressマルウェア駆除後は、24時間・72時間・7日を区切りとしてアクセスログと内部変更を監視します。
一度の確認で終わらせず、通常のアクセス傾向を基準にして変化を見つける運用へ移してください。

最初の24時間は駆除対象と認証経路を重点確認する

最初の24時間は、駆除したファイル名・URL、wp-login.php、xmlrpc.php、wp-json、admin-ajax.phpへのアクセスを重点的に見ます。
管理者追加、ファイル更新、Cron再登録が起きていないかも、数時間ごとに確認します。

公開ページ、検索経由、スマホ、問い合わせフォームなど、感染時に異常が出た条件も再現確認してください。
管理者として見た時だけ正常でも、検索結果から来た利用者だけが転送されるケースがあります。

72時間は同じ要求の再発と内部変更の有無を比較する

72時間では、同じIPだけでなく、同じURL順序やUser-Agent、同じ時間帯の繰り返しを見ます。
接続元が変わっても同じ攻撃手順が続く場合があるため、パターンで比較することが大切です。

遮断済みの403・404だけが続き、ファイルやDBに変化がなければ、攻撃試行は届いているものの防御できている可能性があります。
逆に新しい200応答と内部変更が重なるなら、直ちに再調査へ戻します。

7日後は通知条件と正常な基準値を運用へ組み込む

7日分の正常傾向が集まったら、管理者追加、重要ファイル変更、ログイン失敗急増、不審Cron、通常使わない国や時間帯からの管理操作などを通知条件へ組み込みます。
通知が多すぎると見逃しにつながるため、正常処理の除外も調整してください。

継続監視する項目
  • 管理者・Application Passwords・ログインセッションの変化
  • 重要ファイルとuploads配下の実行ファイル
  • WordPressとサーバー側のCron・自動実行
  • 検索結果、リダイレクト、警告、フォーム送信
  • アクセスログとエラーログの異常パターン

クイックレスキュー365は、不正ログインブロック、ログインURL変更、XML-RPC遮断、ユーザー名漏えい防御、IP拒否、uploadsでのPHP動作禁止など、復旧後の予防を支援します。
ただしマルウェアのスキャン機能はないため、感染確認はログ・ファイル比較・専門調査やスキャン機能を持つ別手段と組み合わせてください。

WordPressマルウェア駆除後のアクセスログでよくある質問

海外IPからのアクセスがあれば再侵入ですか?

海外IPだけでは再侵入と断定できません。攻撃Bot、検索エンジン、VPN、CDNなどの可能性があります。要求URL、メソッド、応答、前後の流れと、ファイル・ユーザー・Cron・DBの変化を照合してください。

アクセスログの200はログイン成功を意味しますか?

意味しません。ログイン画面やエラーメッセージ、キャッシュが正常応答しただけの場合もあります。ログイン後の管理画面遷移、監査ログ、ユーザー変更など、後続の証拠を確認する必要があります。

怪しいIPはすぐ遮断した方がよいですか?

進行中の被害がある場合は遮断を検討しますが、先にログと状態を保存してください。CDNや共有IPを誤って止めると正常利用者へ影響します。IP遮断だけでは、残存バックドアや盗まれた認証情報も解決しません。

アクセスログは何日監視すれば安心ですか?

24時間、72時間、7日を区切りに確認し、その後も重要変更の通知と定期点検を続けます。7日間異常がなくても安全を永続的に保証するものではないため、更新・認証・バックアップ・監視を継続してください。

WordPressマルウェア駆除後のアクセスログ確認まとめ

WordPressマルウェア駆除後のアクセスログは、再侵入の可能性を調べる重要な資料です。
ただし1行だけで判断せず、駆除完了時刻から要求の流れを復元し、サイト内部の変化と結び付ける必要があります。

確認手順まとめ
  • アクセスログ原本と関連ログを公開領域外へ保存する
  • 駆除完了時刻とタイムゾーンをそろえる
  • POST・未知の実行パス・駆除済みURLを優先確認する
  • 要求の前後をIP・User-Agent・URL順でグループ化する
  • ファイル・DB・ユーザー・Cronの変化と照合する
  • 証拠保全後に制限・認証失効・再調査・継続監視を行う

403や404が残っていても、攻撃試行が遮断され内部変更がなければ、再侵入とは限りません。
200があっても同様に、後続の内部変更がなければ成功の証明にはなりません。

判断に迷った時は、ログを消したり不審ファイルだけを削除したりせず、保存した資料と時系列を専門家へ渡してください。
証拠が残っているほど、侵入口と再生成元を正確に調べやすくなります。

WordPressの再侵入を自分で判断できない時は

WordPress修復マルウェア駆除トラブル専門「クイックレスキュー」

アクセスログは残っているが再侵入か判断できない、駆除後に不審ファイルや管理者が増えた、
マルウェアが何度も戻る場合は、クイックレスキューへご相談ください。

こんなお悩みはありませんか?
  • 駆除後のアクセスログに怪しいPOSTが残っている
  • 不審ファイルや管理者が再び増えている
  • CDNやサーバーのログの見方が分からない
  • バックドアやCronの再生成元を特定できない
  • 証拠を残しながら被害拡大を止めたい
  • 自分で駆除したが本当に直ったか不安

ログ保全から再侵入経路の調査、復旧、再発防止までまとめて対応します。
原因が分からないまま操作を続ける前に、まずは状況をご相談ください。

3つの安心保証
  • 万一復旧できない場合やマルウェア駆除できない場合は全額返金保証で安心
  • 90日間再感染保証・動作保証で安心
  • 初期費用・調査費用0円で安心

この記事を書いた専門家

こんにちは!20年以上ITエンジニアとして活動してきた
よこやま良平です。

Wordpress復旧やサイト修復、オンライン講座では
776件以上のレビューを頂いており

「すぐに復旧してくれる!」
「当日行ってくれて助かった!」など

評価は4.9/5.0と非常に高く好評です。

またWordPress、SEO、Officeなど30冊以上の書籍を出版しており、
売上ランキング1位を連続で獲得致しました。

その他これまでに3000以上のサービス・システム・サイトを作成。

多くの方の「できない」や「悩み」を解決してきました。
その観点からわかりやすく解説しています。

目次