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

WordPressバックドアハックとは?原因・発見方法・修正手順を徹底解説

WordPressのバックドアとは?

WordPressのバックドアとは、攻撃者がサーバーへの不正アクセスを継続的に行えるようにする悪意のあるコードのことです。多くの場合、どこかに隠された悪意あるファイルとして存在し、感染したプラグインであることもあります。新しいタイプのWordPressバックドアは毎月のように発見されており、油断できません。

ハッカーは常にWordPressにバックドアを仕掛ける機会をうかがっています。これまでにも、感染を広めるために悪用されたプラグインが複数確認されています。つまり、脅威はどこからでもやってくる可能性があるのです。一度侵入されると、バックドアの除去には時間と労力がかかりますが、予防策を講じることで被害を最小限に抑えることができます。セキュリティ対策の整ったサイトなら、攻撃を完全に防げないまでも、少なくとも遅らせることは可能です。この記事では、WordPressバックドアの見つけ方と修正方法について詳しく解説します。

WordPressバックドアハックの主な原因

WordPressサイトの構築自体は比較的簡単ですが、複数のセキュリティ上の抜け穴がバックドア侵入への道を開いてしまいます。主な原因を以下にまとめました。

  • 不具合のあるプラグインやテーマを使用している
  • ログイン認証情報が脆弱、または初期設定のままになっている
  • ファイルパーミッションが緩く、機密ファイルが露出している
  • ファイアウォールなどのセキュリティソリューションを導入していない
  • WordPress本体やプラグインが古いまま更新されていない
  • 感染したサーバーを他サイトと共有している(プロバイダーにサブネット化について相談しましょう)

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

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:02」のダンプ例です。このバックドアは検知が非常に難しく、ログにも表示されません。パスワードやその他の情報を盗み出すために使われます。

<?php
$auth_pass = "";
$color = "#df5";
$default_action = "FilesMan";
$default_charset = "Windows-1251";
preg_replace("/.*/e","x65x76x61x6Cx28x67x7Ax69x6Ex66x6Cx61x74x65x28x62x61x73x65x36x34x5Fx64x65x63x6Fx64x65x28'7b1tVxs50jD8OXvO9R9Er3fanhhjm2Q2Y7ADIZCQSSAD5GUC3N623bZ7aLs93W0Mk+W/31Wll5b6xZhkdq/7OedhJtDdKpVKUkkqlapK3rDM1tzJLL4tl7qn+ycf90/O7ddnZ++7H+Ctu/t..NRCty4s8Uh1VQKxLg+xQC0T93+IV4sxw/c08okR1wKtoyadLX6Dl6tDg3WxVxFoHhkj6Yn/xc='x29x29x29x3B",".");
?>

たとえば6行目のコードは16進数形式で書かれており、デコードすると preg_replace("/.*/e","eval(gzinfla\ のようになります。16進数をデコードできるオンラインツールが公開されているので、積極的に活用しましょう。また、攻撃者はbase64エンコーディングを使ってコードを隠すこともあります。こちらも同様に扱ってください。上記の例では4行目に FilesMan というキーワードが含まれており、この亜種には共通してこのキーワードが現れます。場合によっては .htaccess のような機密ファイルが改ざんされていることもあるので、必ず丁寧に確認してください。

WordPressバックドアハックの修正方法

チェックサムの比較

最初のステップはチェックサムの比較です。これはファイル整合性をヒューリスティックに判定する手法です。手動での確認も可能ですが、無料で使える自動ツールもあります。コアファイルだけでなく、プラグインやテーマ用のチェックサムも用意されています。さらに、公開されているリストを利用して独自のブラックリストを作成・管理することも有効です。チェックサムが一致しなかった場合は、手動でバックドアの除去作業に進みます。

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

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

$ mkdir WordPress

$ cd WordPress

このコマンドで WordPress というディレクトリを作成し、そこへ移動します。

$ wget https://github.com/WordPress/WordPress/archive/4.9.8.zip

$ tar -zxvf 4.9.8.zip

最初のコマンドで最新版のWordPress(ここでは4.9.8)をダウンロードし、2番目のコマンドで展開します。ここからが重要なステップです。$ diff -r path/to/your/file.php /Wordpress/wp-cron.php を実行すると、2つのファイルの差分が表示されます。バックドアによってファイルが編集されていれば、その変更箇所が明らかになります。ただし、xmlrpc.php のように動的なファイルもある点に注意が必要です。このファイルはRPCを通じてユーザーやサービスとのやり取りを可能にするもので、ハッカーはその特性を知っており、しばしばここにバックドアを隠そうとします。念入りにチェックして、バックドアを確実に除去しましょう。

エンコーディング(base64など)の検索

ファイルに変更が加えられているものの、内容を読み取れない場合は、base64エンコーディングの検索から清掃作業を始めましょう。ここで grep コマンドが威力を発揮します。次のコマンドを使用してください。

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

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

サーバーログの活用

サーバーログもバックドア除去に役立ちます。まず、特定の日付以降に編集されたファイルを確認します。また、FTPログを見て、サーバーに接続したことのあるIPアドレスを調べましょう。最近編集されたファイルには常に注意を払い、特に画像フォルダには目を光らせてください。画像フォルダに実行ファイルが存在するのは不自然です。しかも画像フォルダは書き込み可能な場合が多く、ハッカーがバックドアを隠すのに好んで使う場所だからです。さらに、機密ファイルのパーミッションが適切に設定されているかも確認してください。444(r–r–r–) または 440(r–r—–) に設定するのがおすすめです。特に画像フォルダ内の変更有無を重点的にチェックしましょう。

更新とバックアップ

WordPressサイトを常に最新の状態に保つ重要性は何度も強調されてきました。古いインストール環境は、感染済みの環境とほぼ同じくらい危険です。

バックドアハックの原因を特定できない場合は、現在のサイトのバックアップを取得した上で、以前のバックアップから復元し、両者を比較してみてください。

既存のバックアップがない場合は、現在のサイトをバックアップした後、WordPressコアファイルをクリーンなものに入れ替えましょう。そのためには、現在のサイトをバックアップした上で、WordPressを手動で更新する必要があります。

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

WordPressバックドアスキャナーの活用

人間の手作業にはどうしてもミスがつきものです。手動での調査は手間がかかる上に見落としやすく、バックドアハックが再発する原因にもなりかねません。そこで有効なのが自動化です。現在の市場には高度なツールが数多く存在しており、これらのスキャナーは隠されたバックドアの位置を検出し、除去のための手順まで提示してくれます。

  1. Google検索結果に日本語キーワードが表示される?日本語キーワードハック(日本語SEOスパム)の原因と対処法

    ウェブサイトの検索結果に見覚えのない日本語テキストが表示されていませんか?もしそうであれば、あなたのサイトは「日本語SEOスパム」、いわゆる「日本語キーワードハック」の被害を受けている可能性があります。この種の攻撃について不安を抱くサイト運営者から、私たちは数多くのご相談を受けています。本記事では、この攻撃の仕組みと具体的な修復方法を詳しく解説します。 日本語キーワードハック(日本語SEOスパム)とは? 日本語キーワードハックとは、サイト上に自動生成された日本語テキストが表示され始める攻撃です。このブラックハットSEO手法では、感染したページのタイトルやディスクリプションに日本語の単語を表示さ

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

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