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

WordPressバックドアハッキングとは?症状・発見方法・対処法を完全解説

WordPressのバックドア(Backdoor)とは?

毎年、数千ものWordPressサイトが感染被害を受けており、その数は年々増加しています。ハッキングされたサイトは、詐欺行為やスパムの拡散に悪用されることが少なくありません。しかも、多くの場合、サイトの所有者や開発者は感染に気づいていません。感染は持続的な場合もあれば、そうでない場合もあります。そこで問題になるのが「バックドア」です。WordPressのバックドアとは、攻撃者にサーバーへの不正かつ永続的なアクセスを許してしまうコードのことです。多くの場合、どこかに隠された悪意のあるファイルとして存在し、時には感染したプラグインであることもあります。毎月のように新しい亜種が発見されており、油断は禁物です。

ハッカーは常に機会をうかがい、WordPressにバックドアを仕込もうとしています。これまでにも複数のプラグインが感染拡大の経路として利用されてきた実績があり、脅威はどこからでもやってくる可能性があります。バックドアの除去は時間とリソースを大量に消費する作業になりがちですが、予防策を講じれば被害を最小限に抑えることができます。セキュリティ対策をしっかり施したWordPressサイトなら、攻撃を防げないまでも大幅に遅らせることは可能です。本記事では、WordPressバックドアの見つけ方と修復方法について詳しく解説します。

関連ガイド:WordPressセキュリティ完全ステップバイステップガイド(ハッキングされるリスクを90%削減)

WordPressバックドアハッキングの原因は?

WordPressサイトの構築は非常に手軽ですが、いくつかのセキュリティ上の隙間がバックドア侵入の道を開いてしまうことがあります。主な原因を以下にまとめます。

  • 脆弱性を抱えたプラグインやテーマを使用している
  • ログイン情報が脆弱、またはデフォルトのままになっている
  • ファイルパーミッションが緩く、機密ファイルが露出している
  • ファイアウォールやセキュリティソリューションを導入していない
  • ソフトウェアが古いまま更新されていない
  • 他のサイトと感染済みサーバーを共有している(サブネットについてはホスティング業者に確認を)

WordPressバックドアを見つける方法

テーマ内のバックドアを探す

使用していない(非アクティブな)テーマは、バックドアを隠すのに格好の場所です。ハッカーもこの点をよく理解しており、あなたのサイトでこうしたテーマを積極的に探します。非アクティブなテーマには滅多に目を通さないだろうと踏んでいるからです。WordPressのテーマには functions.php という重要なファイルが含まれており、このファイルはネイティブPHPやWordPressの各種関数を呼び出す役割を担っています。つまり、あらゆる種類の処理を実行できるため、攻撃者はここにコードを注入してバックドアを作ろうとすることがよくあります。

たとえば、functions.php 内に仕込まれた悪意あるコードは、攻撃者が www.yoursite.com/wp-includes/registration.php のURLにアクセスすることで起動し、次のような管理者ユーザーを新規作成します。

ID: backdooradmin
パスワード: Pa55W0rd.

このユーザーを削除しても、同じURLにアクセスされれば再び作成されてしまいます。これが典型的なWordPressバックドアの一例です。ただし、このようなコードを挿入するには、まずサーバーへのアクセス権限が必要となります。開放されているFTPポートなど、別の脆弱性が利用された可能性があります。

プラグイン内のバックドアを探す

WordPressのバックドアハッキングは、多くの場合、脆弱なプラグインが原因です。これまでにも複数のプラグインに脆弱性が見つかってきました。近年ではContact Form 7(500万以上のアクティブユーザーを持つプラグイン)でも脆弱性が報告され、権限昇格につながる事例がありました。プラグインファイルが改ざんされても、ダッシュボード上では気づきにくいですが、FTPで検索すれば不正ファイルを発見できます。正規のファイルに見せかけるため、バックドアファイルはヘルプファイルなどの名前をつけられることもあります。

プラグインにバックドアが潜みやすい理由は以下の通りです。

  • 未使用のプラグインは感染しやすい。長期間バックドアを隠せる場所だから。
  • 信頼性の低い無名プラグインはコーディングが雑なことが多く、バックドアハッキングのリスクが高まる。
  • 古いプラグインは標的になりやすい。多くのユーザーが更新せずに使い続けているから。
  • 脆弱なプラグインは、他のコアファイル改ざんの足がかりにもなり得る。

知らないプラグインには注意し、使っていないプラグインは必ず削除しましょう。

インストールファイル内のバックドアを探す

プラグインが感染すると、次はコアファイルの改ざんが行われることがあります。ベースファイルに不要なコードが混入していたり、見慣れない新規ファイルが現れたりします。バックドアは以下のような形で現れることがあります。

$t43="l/T6\\:aAcNLn#?rP}1\rG_ -s`SZ\$58t\n7E{.*]ixy3h,COKR2dW[0!U\tuQIHf4bYm>wFz<admin@wsxdn.com&(BjX'~|ge%p+oMJv^);\"k9";
$GLOBALS['ofmhl60'] = ${$t43[20].$t43...

このようなコードは既知の手法で難読化されており、人間には読み取りにくくなっています。怪しく見えるコードには注意を払い、それを含むファイルは削除しましょう。また、バックドアは xml.phpmedia.phpplugin.php といった正当なファイル名を装うこともあります。外見が正常に見えても、すべてのファイルをスキップせずにチェックしてください。

さらに、FilesMan というキーワードにも要注意です。これは悪名高いバックドア「FilesMan」に関連するキーワードで、検出が難しくログにも残りません。パスワードやその他の機密情報を盗むために使われます。

<?php
$auth_pass = "";
$color = "#df5";
$default_action = "FilesMan";
$default_charset = "Windows-1251";
preg_replace("/.*/e", "...");
?>

上記の例では、6行目のコードが16進数形式で書かれています。デコードすると preg_replace("/.*/e","eval(gzinfla... のようになります。16進文字列をデコードできるオンラインツールが公開されているので、活用しましょう。また、攻撃者はBase64エンコーディングでコードを隠すこともあるため、同様に対処が必要です。この例では4行目に FilesMan というキーワードが見られます。この感染亜種には共通してこのキーワードが含まれます。さらに、.htaccess などの重要ファイルが改ざんされているケースもあるため、念入りに確認しましょう。

WordPressバックドアハッキングの修復方法

チェックサムを比較する

最初のステップはチェックサムの比較です。これはファイル整合性を判定するヒューリスティックな手法で、手動での確認も可能ですが、自動ツールも公開されています。チェックサムはコアファイルだけでなく、プラグインやテーマについても入手できます。加えて、公開されているブラックリストを参考に独自のリストを作成しておくのも有効です。チェックサムが一致しなかった場合は、手動で作業を進め、WordPressのバックドアを取り除きます。

コアファイルの整合性を確認する

次に、チェックサムが異なるファイルを手動で精査します。バックドアハッキングによってファイルが改ざんされている可能性が高いため、インストールファイルの整合性を検証しましょう。まず、WordPressの新規コピーをダウンロードします。

$ mkdir wordpress-check
$ cd wordpress-check

このコマンドで wordpress-check ディレクトリを作成し、移動します。

$ wget https://github.com/WordPress/WordPress/archive/refs/heads/master.zip
$ unzip master.zip

1行目で最新版のWordPressをダウンロードし、2行目で展開します。準備ができたら、決定的となる次のステップに進みます。$ diff -r /path/to/your/file.php /wordpress/wp-cron.php のように、diffコマンドで両者のファイル差分を比較します。バックドアによってファイルが編集されていれば、その変更箇所が表示されます。ただし、xmlrpc.php のように動的な性質を持つファイルもある点に注意が必要です。このファイルはユーザーや外部サービスがRPC経由でサイトとやり取りするために使われるもので、ハッカーはこの特性を知っており、しばしばここにバックドアを隠そうとします。徹底的にチェックし、見つけ次第除去しましょう。

エンコーディングを調べる

ファイルが改ざんされていても、難読化されていて読めないことがあります。その場合は、Base64エンコーディング を手掛かりにクリーンアップを始めましょう。ここでは grep コマンドが威力を発揮します。

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

このコマンドを実行すると、base64の検出結果がすべて output.txt に一覧表示されます。あとはオンラインツールを使って平文にデコードできます。.php 以外のファイルを調べたい場合は、コマンド内の *.php の部分を置き換えてください。また、悪意あるコードは16進形式で書かれていることもあります。その場合は grep -Pr "[\x01\x02\x03]" を使用します。その他の類似エンコーディングについても同様の手順を繰り返し、悪意あるコードを含むファイルや行を削除してバックドアを駆除しましょう。

サーバーログを活用する

サーバーログも、WordPressバックドアの除去に役立ちます。まず、特定の日付以降に編集されたファイルを特定します。さらにFTPログを調べて、どのIPアドレスがサーバーに接続したかを確認しましょう。最近編集されたファイルに注目すること、そして画像フォルダにも目を向けることが大切です。画像フォルダに実行ファイルがあるのは不自然であり、書き込み可能な設定になっていることも多いため、ハッカーは好んでそこにバックドアを隠します。また、機密ファイルのパーミッションが適切かどうかも確認し、444(r--r--r--) または 440(r--r-----) に設定することをおすすめします。特に画像フォルダ内の変更がないか、入念にチェックしてください。

更新とバックアップを行う

WordPressサイトを常に最新の状態に保つことの重要性は何度強調しても足りません。古いインストールは、感染済みのサイトとほぼ同等だと考えましょう。

バックドアハッキングの原因を特定できない場合は、まず現在のサイトをバックアップしてから復元作業を行い、両者を比較します。バックアップがまだない場合は、現在のサイトをバックアップした上で、WordPressコアファイルを新しいものに手動で置き換えます。

また、使用中のプラグインに脆弱性が報告された場合は、直ちにアップデートしてください。パッチの提供まで時間がかかるようなら、代替プラグインへの乗り換えを検討しましょう。公式ブログなどを定期的にチェックし、パッチ情報をいち早くキャッチすることをおすすめします。

WordPressバックドアスキャナーを活用する

人間の手作業にはミスがつきものです。手動でのチェックは労力が大きく、見落としのリスクも高く、バックドアハッキングの再発につながる恐れがあります。そこで有効なのが自動化です。現在、市場にはかなり高度なツールが登場しており、これらのスキャナーはWordPressのバックドアを検出・除去できます。そのひとつがAstra Malware Cleanerです。サイトのクリーンアップだけでなく、将来の感染からも守ってくれます。価格も手頃で、包括的なレポートを提供してくれるため、貴重なリソースと時間の節約になるでしょう。

  1. WordPressリダイレクトハックとは?スパムリダイレクトの原因と完全な駆除・対策ガイド

    WordPressサイトの訪問者が、見覚えのない危険なサイトへ勝手にリダイレクトされていませんか?もしそうであれば、あなたのサイトはハッキングされている可能性があります。いわゆるWordPressリダイレクトハックは非常によく見られる攻撃手法の一つで、マルウェアによって訪問者をスパムサイト、フィッシングページ、あるいは攻撃者が管理するドメインへ強制的に誘導してしまうものです。 最近では、多くのWordPressサイトが[.com]スペース許可ドメイン→Adaranth[.com]のafu.php→一部の正規サイトという流れで悪質なドメインへリダイレクトされる事例が確認されています。攻撃者はさま

  2. WordPressバックドアハッキングとは?症状・発見方法・修正手順を徹底解説

    WordPressバックドアとは? 毎年何千ものWordPressサイトがマルウェアに感染しており、その数は年々増加しています。ハッキングされたサイトは、詐欺やスパムの拡散に利用されることが多く、サイトオーナーや開発者自身が感染に気づいていないケースも少なくありません。感染は一時的な場合もあれば、長期にわたり潜伏する場合もあります。この「持続性」を支えているのが、まさにWordPressバックドアなのです。 WordPressバックドアとは、攻撃者にサーバーへの不正かつ永続的なアクセスを許してしまうコードのことです。多くの場合、どこかに隠された悪意あるファイルとして存在し、感染したプラグインで