ハッキングされたWordPressウェブサイトまたはブログをクリーンアップする方法
公開: 2021-02-16WordPress Webサイトがハッキングされて現在被害を管理している場合でも、最悪の事態に備えている場合でも、この記事では、ハッキングされたWordPressWebサイトをクリーンアップするプロセスについて説明します。 このプロセスは、次のことを達成するのに役立つ、わかりやすいステップバイステップ形式で文書化されています。
- WordPressWebサイトの制御を取り戻す
- 感染の可能性のある原因を特定する
- 感染と悪意のあるコードを見つける
- マルウェア、バックドア、Webシェルをすべて削除します
- Googleセーフブラウジングデータベースなどのマルウェアリストからドメインを削除します
- 再発防止
ハッキングされたWordPressWebサイトは本当にハッキングされていますか?
たとえば、Webサイトが改ざんされている場合など、WordPressサイトがハッキングされた時期がはっきりしている場合があります。 他の場合には、それはそれほど明確ではないかもしれません。 WordPressのクリーンアッププロセスに着手する前に、WordPress Webサイトが実際にハッキングされていることを確認してください。これは、無関係の技術的な問題ではありません。 WordPressがハッキングされているかどうかを確認する方法の記事を読んで、Webサイトまたはブログがハッキングされているかどうかを判断してください。
コントロールを取り戻す
攻撃の結果として失った可能性のあるアクセスの量に応じて、制御を取り戻すことが始まります。 たとえば、攻撃者はサーバーにアクセスすると、資格情報をローテーションして正当なユーザーがサーバーにアクセスできないようにしたり、WordPress管理者パスワードを変更してWordPress管理者がログインできないようにしたりする可能性があります。
これはセットアップに大きく依存しますが、ホスティングプロバイダーは、共有ホスティング環境またはWebサイトを実行している仮想プライベートサーバー(VPS)へのアクセスの回復を支援できる可能性があります。 WordPress管理者にアクセスできなくなった場合は、管理者パスワードのリセットに関する公式のWordPressガイドに従ってください。
バックアップを取る
WordPressバックアップソリューションを導入している場合でも、現在のWordPressWebサイトのバックアップを作成してください。 この段階でWordPressのバックアップを取ることは、次のような多くの理由から非常に重要です。
- バックアップを使用すると、後の段階で感染を分析できます。
- 一部のホスティングプロバイダーは、マルウェアやスパムの拡散を防ぐための予防措置として、ハッキングされたWebサイトを削除することに頼る場合があります。ホスティングプロバイダーによっては、警告なしにこれが発生する場合があります。
- 現在バックアップ戦略を実施していない場合は、状況が悪化する前に、このバックアップからWebサイトのコンテンツの一部を回収できる可能性があります。
さらに、仮想プライベートサーバー(VPS)でWordPressを実行している場合は、可能であれば仮想マシン全体のスナップショットを作成することを検討してください(これは通常、追加コストが発生することに注意してください)。 スナップショットを作成するときは、WordPressインストールをホストするために外部ボリューム(ネットワーク接続ストレージなど)を使用している場合は、メインのWordPressインストール、 wp-content 、MySQLデータベースを保存するボリュームのコピーも作成する必要があることに注意してください。 、およびWebサーバーのアクセスログとエラーログ。
バックアップからの復元
バックアップ戦略を実施している場合は、今がそれを実行に移すときです。 最近のバックアップにアクセスできると仮定すると、復元がオンラインに戻るための最速の方法かもしれません。ただし、間違いなく、WordPressサイトのバックアップから復元すると、感染が除去され、再び操作できるようになる可能性がありますが、そうではありません。そもそもハッキングされた理由を解決してください。
悪用された脆弱性またはセキュリティ上の欠陥の結果としてWordPressWebサイトがハッキングされた場合、何が起こったのかを理解するために一生懸命努力することが重要な次のステップです(可能な場合)。
バックアップがない場合、またはバックアップを正常に復元できない場合はどうなりますか?
バックアップがない場合は、状況の重大さに応じて、WordPress Webサイトをメンテナンスモードにして、サイトの復元に取り掛かることができ、訪問者に後で確認する必要があることを知らせることができます。 それまでの間、このガイドの残りの部分に従ってください。 wp_maintenance() 1を使用して、Webサイトをメンテナンスモードにする関数の場合、WordPressは503HTTPステータスコードを返します。 503ステータスは、ページで問題が発生したことをGoogleや他のクローラーに示しており、後でもう一度確認する必要があります。
503 HTTP応答は、Webサイトが一時的にダウンした場合に検索ランキングが損傷するのを防ぐため、SEOにとって重要です。 503 HTTPステータスコードとSEOでのその重要性の詳細については、このトピックに関するYoastの記事をご覧ください。
WordPressがどのようにハッキングされたかを特定する
サイトがバックアップされたら、次に何が起こったのか、つまり、攻撃者がWordPressインストールにアクセスするために悪用したセキュリティの弱点をできるだけ詳しく調べることが重要です。
アクティビティログ、Webサーバー、FTPサーバーのログを確認する
WordPressのアクティビティログを保持している場合、これは分析を開始するのに最適な場所である可能性があります。 疑わしい動作を特定できるかどうかを確認します。 新しく作成されたユーザーのイベント、またはユーザーパスワードの変更を探します。 また、WordPress、プラグイン、またはテーマファイルが変更されていないかどうかを確認してください。
また、Webサーバー、FTPサーバー、およびオペレーティングシステムのログファイルで、異常な動作や疑わしい動作がないかどうかを確認する必要があります。 これはやや圧倒的なプロセスかもしれませんが、単一のIPアドレスからの奇妙なトラフィックがあるかどうかを確認することから始めたいと思うでしょう。 これは、さまざまなユーティリティシェルスクリプトと1つのライナーを使用して実行できます。 Webサーバーのログをリアルタイムで表示するには、GoAccessが便利な場合があります。
未使用で古いWordPressプラグインとテーマ
WordPressダッシュボードとディレクトリ/ wp-content / plugins /の両方から、インストールされているプラグインのリストを確認します。 すべてのWordPressプラグインが使用されていますか? それらはすべて最新ですか? テーマとテーマディレクトリ/ wp-content / themes /も確認してください。 使用しているテーマを1つだけインストールする必要があります。 子テーマを使用している場合は、2つのディレクトリがあります。
未使用のWordPressコードとインストール
残りの未使用のコードは、もう1つの一般的な問題です。 開発者やシステム管理者がサーバー上で直接ファイルを更新し、拡張子が.old 、 .orig 、 .bakなどの元のファイルのバックアップを取る場合があります。 攻撃者はこの悪い習慣を頻繁に利用し、そのようなバックアップファイルを探すためのツールは広く簡単に利用できます。
これが機能する方法は、攻撃者がindex.php.oldなどのファイルにアクセスしようとすることです。 通常、 .phpファイルはPHPインタープリターによって実行されるように構成されていますが、ファイルの末尾に.old (またはその他の)拡張子を追加すると、Webサーバーがファイルをユーザーに提供します。 攻撃者は、バックアップファイルの名前を推測するだけで、機密情報を含む可能性のあるソースコードをダウンロードしたり、攻撃者に悪用するためのヒントを提供したりする可能性があります。
同様の問題は、WordPressの古いインストールを保持することです。 システム管理者がWebサイトを再構築すると、古いWordPressインストールのコピーが/ old /サブディレクトリに残ることがあります。 WordPressのこれらの古いインストールは通常、インターネット経由でアクセス可能であるため、攻撃者がプラグインとともに古いバージョンのWordPressの既知の脆弱性を悪用するためのジューシーなターゲットです。
未使用のコード、WordPressのインストール、WordPressプラグイン、WordPressテーマ、その他の古いファイルや未使用のファイルを削除することをお勧めします(誤って削除したものを復元する必要がある場合は、いつでもバックアップを利用できます)。 Webサイトには、必要なファイルのみを含める必要があります。 余分なものや未使用のものは、追加の攻撃対象領域として扱う必要があります。
WordPressのユーザーと役割
すべてのWordPressユーザーが使用されていることを確認します。 新しい不審なものはありますか? すべての役割が損なわれていないことを確認してください。 WordPressのユーザーと役割のガイドラインに従う場合は、WordPress管理者の役割を持つユーザーは1人だけにする必要があります。
共有ホスティングプロバイダー
WordPressが共有ホスティングプロバイダーで実行されている場合、ハッキングのソースは、たまたま同じサーバーで実行されている別のWebサイトである可能性があります。 この場合、最も可能性の高いシナリオは、攻撃者が特権をエスカレートすることに成功したことです。 その結果、サーバー全体にアクセスし、次にWordPressWebサイトにアクセスできるようになります。 このような攻撃が行われたと思われる場合は、Webサイトをバックアップした後、すぐにホスティングプロバイダーに連絡するのが最善の方法です。
.htaccessファイル
.htaccessファイル(ディレクトリレベルのApache HTTPサーバー構成ファイル)も、ハッカーの一般的な標的です。 これらは通常、ユーザーを他のスパム、フィッシング、またはその他の悪意のあるWebサイトにリダイレクトするために使用されます。 WordPressで使用されていないファイルも含め、サーバー上のすべての.htaccessファイルを確認してください。 一部のリダイレクトは、見つけるのが難しい場合があります。
特定のユーザーエージェント文字列に基づいてHTTPリクエストをリダイレクトする構成に特に注意してください。攻撃者は特定のデバイス(モバイルユーザーなど)をターゲットにしている場合もあれば、検索エンジンクローラーに対して異なる応答をするようにWebサーバーを構成することでブラックハットSEOに関与している場合もあります。
可能であれば、Apache HTTPサーバー内の.htaccessファイルに依存するのではなく、グローバル構成を採用することを検討してください。 .htaccessファイルはパフォーマンスを低下させるだけでなく、攻撃者がこれらのファイルの内容を読み取ったり、最悪の場合は書き込んだりする可能性がある場合、WordPressWebサイトをさまざまなセキュリティの脆弱性にさらします。 ApacheHTTPサーバーのドキュメントによると2 、メインのhttpd.confファイルでAllowOverrideディレクティブをnoneに設定することにより、 .htaccessファイルの使用を完全に無効にすることができます。
他のエントリポイントを確認する
Webサーバーには他にもいくつかのエントリポイントがあります。 FTPサーバー、SSH、Webサーバーなど、それらすべてを確認してください。
WordPressの感染と悪意のあるコードを見つける
始める前に:WordPressのハッキングには、通常、WordPressのテーマ、プラグイン、またはコアファイルへのコードの挿入が含まれます。 したがって、クリーンアップを続行するには、コードの変更に慣れている必要があります。 そうでない場合は、WordPressのセキュリティ専門家を雇ってください。
ハッカーの侵入ポイントを特定すると、通常、感染を見つけるのは比較的簡単です。 まだ感染を発見していない場合に備えて、感染を発見するために使用できるいくつかの方法があります。 ここにいくつかあります。
過去数日間に変更されたファイルを確認する
理想的には、WordPressインストール全体でファイルの変更を監視し、すぐに警告するWordPressファイル監視プラグインを使用する必要があります。 File Integrity Monitoring(FIM)プラグインがない場合は、ファイルの変更を手動で探す必要があります。
サーバーにSSHでアクセスできる場合は、WordPressWebサイトのどのファイルが最近変更されたかを確認してください。 通常、ハッキングが通知されてから5日以内に変更の検索を開始し、必要に応じて検索範囲を広げることをお勧めします。 これを行うには、WordPress Webサイトが配置されているディレクトリに移動し、findコマンドを使用します。
find .mtime -5 –ls
上記のコマンドは、過去5日間(-5)に変更されたすべてのファイル(.mtime)を一覧表示(-ls)します。 リストが長すぎる場合は、より簡単にリストを参照および検索するために、より少ないポケットベルを使用してください。
find .mtime -5 –ls | less
プラグインまたはテーマを最近更新した場合、関連するファイルの変更は検索結果に表示されます。 ログ、デバッグファイルも頻繁に更新されるため、結果にも表示されます。 その結果、目的のファイル変更を見つけるために、結果の広範なフィルタリングを実行する必要がある場合があります。 WordPress用のWordPressFile Changes Monitorプラグインなどの特殊なプラグインは、このような誤検知を自動的に取り除くように特別に設計されていることに注意してください。 プラグインはWordPress用に意図的に構築されており、WordPressコアからのファイルの変更、プラグインまたはテーマの更新、インストールまたはアンインストールを識別できます。
すべてのHTMLファイルをチェックする
WordPressには、HTMLファイルがほとんどなく、ハッカーはそれらを利用したいと思っています。 WebサイトですべてのHTMLファイルを検索し、それらのコンテンツを分析します。 WebサイトにあるすべてのHTMLファイルが正当であり、それらが何に使用されているかを知っていることを確認してください。
WordPressディレクトリ(およびサブディレクトリ)内のすべてのHTMLファイルを一覧表示する簡単な方法は、次のコマンドを使用することです。
find . -type f -name '*.html'
感染テキストの検索
Webサイトが改ざんされている場合、または感染の結果としてWebサイトにテキストが表示されている場合は、grepツールを使用してWebサイトを探します。 たとえば、「ハッキングされた」というテキストが表示された場合は、Webサイトのルートディレクトリに移動して、次のコマンドを発行します。
grep –Ril "hacked by"
上記のコマンドは、「ハッキングされた」コンテンツを含むファイルのリストを返します。 感染したファイルのリストを取得したら、コードを分析して感染を取り除くことができます。
grepスイッチはどういう意味ですか?
- -Rは、grepが再帰的に検索することを示します(すべてのサブディレクトリとシンボリックリンクを含むディレクトリ構造全体を検索します)。
- -iは、検索で大文字と小文字を区別しない(つまり、検索語の大文字と小文字を無視する)必要があることをgrepに示します。 Linux / Unix環境では、これは非常に重要です。Windowsとは異なり、Linuxファイルシステムでは大文字と小文字が区別されるためです。
- -lは、ファイルの内容ではなくファイル名を返す必要があることをgrepに示します。 WordPressサイトがハッキングされた場合、これは他の悪意のあるコードです。
明らかな「ハッキングされた」文字列とは別に、以下はハッキングされたWordPressWebサイトで通常使用されるコードとテキストフレーズのリストです。 grepツールを使用して、以下を探すことができます。
- base64_decode
- is_admin
- eval
- gzuncompress
- パススルー
- exec
- shell_exec
- 主張する
- str_rot13
- システム
- phpinfo
- chmod
- mkdir
- fopen
- fclose
- 読み取りファイル
grepを使用してこれを実現する簡単な方法は、次のgrepコマンドを使用することです。このコマンドは、ファイルを再帰的に検索し(シンボリックリンクをたどります)、指定されたPCRE正規表現に一致する文字列を検索します3 。 、および一致が発生した行番号と同様にテキストの一致を返します。
grep -RPn "(base64_decode|is_admin|eval|gzuncompress|passthru|exec|shell_exec|assert|str_rot13|system|phpinfo|chmod|mkdir|fopen|fclose|readfile) *\("
注:このコードの一部は正規のコードでも使用できるため、コードを適切に分析し、感染またはハッキングのフラグを立てる前に、コードがどのように使用されているかを理解してください。
ファイルを元のWordPressインストールと比較します
これは昔ながらの方法であり、多少時間がかかりますが、驚異的に機能します。 Webサイトのファイルを改ざんされていないWebサイトのファイルと比較します。 したがって、Webサイトのバックアップコピーがある場合は、改ざんされたWebサイトを比較してください。 そうでない場合は、WordPressの新しいコピーと、感染したWebサイトにあるプラグインを別のホストにインストールし、それらを比較します。
ファイルを比較するために使用できるツールがいくつかあります。 この例では、Beyond Compareと呼ばれる商用ツールを使用していますが、無料の代替手段がいくつかあります。 以下は、サンプル比較のスクリーンショットです。
2つのWordPressWebサイトのルートディレクトリを比較すると、ツールはファイルindex.php 、新しい.htaccessファイルとwp-config.phpファイルの内容の違い、およびサブディレクトリの違いを強調します。
ファイルindex.phpをダブルクリックすると、違いがわかります。
WordPressファイル比較で何を探すべきですか?
WordPressコアの一部ではないファイルを探します。 ほとんどの感染は、WordPressインストールのルートまたはwp-contentディレクトリにファイルを追加します。 ハッキングが脆弱なプラグインの結果である場合、プラグインのファイルが変更されている可能性があります。
WordPressハックをクリーンアップする
WordPressのハッキングの原因がわかり、感染が見つかったら、以下の手順に従ってクリーンアップを開始します。
WordPressサービスで感染を自動的に見つける
上記を処理するには多すぎると思われる場合でも、絶望しないでください。 Webサイトをスキャンしてマルウェアやその他の感染を検出するために使用できるWordPressセキュリティサービスとプラグインがいくつかあります。 MalcareWordPressセキュリティサービスをお勧めします。
ただし、そのようなプラグインには、検索するマルウェアシグネチャのリストが限られていることに注意してください。 そのため、WordPress Webサイトに影響を与えた攻撃がそれほど一般的でない場合、これらのプラグインは感染を識別できない可能性があります。 WordPressのマルウェアプラグインが何も問題を特定しなかったという攻撃の犠牲になったWordPressWebサイトのWordPress管理者からフィードバックを受け取ることは前例のないことではありません。
ここでのポイントは、効果的なセキュリティ制御には、防御と検出の複数の層が含まれることです。 手動分析は、ほとんどの場合、実行できる場合に最善の方法です。 これらのプラグインも過小評価されるべきではありません。それらは引き続き使用でき、いつか役立つでしょう。
バックアップからWordPressを復元する
WordPress Webサイトまたはブログのバックアップがある場合は、それを復元します。 コードを手動でクリーンアップするよりも、常にはるかに簡単です。
すべてのパスワードを変更し、未使用のユーザーを削除し、WordPressユーザーの役割を確認します
WordPress、CPanel、MySQL、FTP、および自分のパーソナルコンピューターを含むすべてのユーザーとサービスのすべてのパスワードを変更します。 FTP、WordPress、MySQL、およびその他のサービスのユーザーのリストをチェックして、すべてのユーザーが正当であることを確認します。 使用されなくなったユーザーがいる場合は、それらを削除します。 すべてのWordPressユーザーが正しい役割と権限を持っていることを確認してください。
WordPressコア、プラグイン、テーマ、その他のソフトウェアのアップグレード
WordPressWebサイトの実行に必要なすべてのソフトウェアの最新バージョンを実行していることを確認してください。 これは、WordPress自体だけでなく、プラグイン、テーマ、オペレーティングシステムのパッチ、PHP、MySQL、Webサーバー(Apache HTTPサーバーやNginxなど)、および実行しているFTPサーバーにも適用されます。
WordPressウェブサイトのバックアップ
この段階で、実際に感染したコードを削除する前に、WordPressWebサイトのバックアップを取ります。
Googleセーフブラウジングマルウェアアラートを削除します
ウェブサイトがGoogleセーフブラウジングによって拒否された場合は、セキュリティレビューを申請してアラートを削除できます。
WordPressハックを削除したら…
おめでとうございます。WordPressのウェブサイトをハッキングから回復しました。 ここで、それが二度と起こらないことを確認する必要があります。 ここにあなたがすべきことに関するいくつかのヒントがあります:
- WordPressアクティビティログプラグインをインストールして、WordPressWebサイトで発生しているすべてのことを追跡します。
- バックアップソリューションがない場合は、入手してください。
- WordPressセキュリティスキャンサービスを使用します。
- データベースと管理者のパスワードをローテーションし、強力なWordPressパスワードセキュリティを強制します。
- WordPress、WordPressプラグイン、テーマ、および使用するその他のソフトウェアを常に最新の状態に保ちます。
- 古いWordPressインストール、未使用のWordPressプラグイン、テーマ(未使用のデフォルトのWordPressテーマを含む)などの未使用のファイルをすべて削除します。 未使用のコンポーネントとソフトウェアは不要な攻撃対象領域を追加するため、理想的には削除する必要があります。
- WordPressのセキュリティ強化ガイドに従って、Webサイトで発生する可能性のあるすべてのセキュリティ問題に対処してください。