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

WordPressバックドアマルウェア「PHP/ApiWord」の検出方法と完全削除ガイド

近年、多くのWordPressサイトで、テーマのfunctions.phpファイルの先頭に悪意のあるコードが挿入されている事例が確認されています。このコードを悪用すれば、攻撃者はサイトに対してほぼ無制限の被害をもたらすことが可能です。この不正コードはApiWordマルウェアによるもので、post.phpfunctions.phpへの改ざんだけでなく、バックドアとして機能するファイル/wp-includes/class.wp.phpを作成する特徴があります。

functions.phpファイルは、WordPressがテーマを認識するために不可欠な存在であり、ページが表示されるたびに必ず実行されます。そのため、悪意あるコードにとって格好の標的となるのです。

ApiWordマルウェアとは

実際の感染事例では、woocommerce-direct-downloadという悪意のあるプラグイン内のfunctions.phpファイルから感染コードが発見されました。このプラグインには、難読化されたPHPコードを含むスクリプト「woocp.php」が仕込まれており、実行されるとすべてのfunctions.phpファイルへ悪意のあるコードが注入されます。

一度感染すると、攻撃者が自由に使えるバックドアが作成されます。このバックドアPHPスクリプトは、以下のような形で悪用される可能性があります。

  • サイト上の投稿を自由に追加・改ざんされる
  • サーバー上のすべてのWordPressサイトへ感染が拡大する
  • ApiWordのドメインから動的に取得したコードを使い、サーバー上に新しいPHPファイルが作成される

ApiWordマルウェアは、wp-includes/post.phpファイルにもコード断片を追加します。さらに、wp-includes/wp-cd.phpというファイルを作成します。このファイルの中身はbase64エンコードされており、デコードすると以下のような内容が現れます。

ApiWordマルウェアの検出方法

まず押さえておきたいのは、悪意のあるコードが、インストールされている各テーマのルートディレクトリにあるすべてのfunctions.phpファイルの先頭に挿入されているという点です。

たとえば、WordPressサイトで「MyTheme」というテーマを使用している場合、悪意のあるコードはwp-content/themes/MyTheme/functions.phpに追加されます。

悪意のあるコードを含むことが知られているファイルパスは、次のような記述です。
“@file_puts_contents($_SERVER[‘DOCUMENT_ROOT’].’/wp-includes/class.wp.php’,file_get_contents)”

このコードには、wp_cd_codeという名前の変数がシグネチャ(識別子)として含まれています。これを手がかりに、感染ファイルを特定できます。

Unix系OSをご利用の場合、サーバーのWebルートディレクトリで以下のコマンドを実行することで、感染ファイルの一覧を抽出できます。

find -iname '*.php' -print0 | xargs -0 egrep -in 'wp_cd_code'

このコマンドを実行すると、すべての.phpファイルを対象に「wp_cd_code」というシグネチャ文字列の再帰検索が開始され、該当するファイルパスと行番号が出力されます。

ApiWordマルウェアのコードが行うこと

簡単に言えば、コード注入者はサイトごとに悪意のあるコードを設定し、ユーザーリクエストごとに実行されるPHPファイルへ注入します。そして、その結果は攻撃者へ報告される仕組みです。このコードは、HTTPリクエストで渡されるaction変数とpassword変数をチェックします。パスワードがハードコードされたハッシュ値(コード注入者が生成)と一致した場合、action変数の内容に応じた処理が実行されます。

攻撃者は、生成されたパスワードを使うことで、通常のログイン手順を経由せずにサイトの管理者権限を奪取できます。これにより、感染サイトへの任意コンテンツの追加や投稿の改ざんなど、さまざまな操作が可能になってしまいます。

PHP/ApiWordマルウェアの駆除手順

ApiWordマルウェアへの対処には、テーマディレクトリ内のすべてのfunctions.phpファイルからバックドアコードを徹底的に除去することが必要です。以下のチェックリストを参考にしてください。

  1. すべてのfunctions.phpファイルを確認し、悪意のあるコードを探す。該当コードはPHPファイル冒頭の<?php ?>ブロック内に存在するため、このブロック全体を削除するのが確実です。
  2. コード注入元が残っていれば即座に削除する。たとえばwoocommerce-direct-downloadプラグインの場合、コード注入元はwoocp.phpというファイルに含まれているため、このファイルを削除してください。
  3. <wp_prefix>_datalistおよび<wp_prefix>_install_metaテーブルを確認する。これらのテーブルは、改ざんされた投稿を特定する手がかりになります。確認後は必ず削除してください。
  4. すべての投稿をスキャンし、「wp_cd_code」というシグネチャ変数を探して、該当するDIV要素を削除する。
  5. サーバー上で最近変更されたファイルをチェックする。SSHでWebサーバーにログインし、以下のコマンドを実行して最近変更されたファイルを特定してください。

    find /path-of-www -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r

ApiWordマルウェアへの感染を防ぐ方法

  1. ファイルの所有者とパーミッションを見直す。サイトのファイル権限をより厳格に設定しましょう。フォルダとファイルの推奨パーミッションはそれぞれ750と640です。FTP/SFTPクライアントから変更できるほか、コマンドラインから再帰的に変更する場合は以下のコマンドを使用します。
    • ディレクトリの場合:
      find /path/to/your/wordpress/install/ -type d -exec chmod 750 {} \;
    • ファイルの場合:
      find /path/to/your/wordpress/install/ -type f -exec chmod 640 {} \;
  2. サーバー上に新しく作成されるファイルを監視する。AstraのようなWAF(Webアプリケーションファイアウォール)を導入すれば、サーバー上で新規作成・削除・変更されたファイルを常時監視し、定期的にマルウェアスキャンを実行できます。
  3. 海賊版テーマの使用を避ける。テーマは必ず公式かつ信頼できるソースから入手するようにしましょう。
  4. WordPressのアップデートは速やかに適用する。WordPressは判明した脆弱性への対策として、本体やプラグインのアップデートを定期的にリリースしています。AstraのWordPressセキュリティ機能を利用すれば、アップデート情報をタイムリーに受け取れます。

まとめ:ApiWordマルウェア対策の重要性

マルウェアは常に進化しており、あなたのウェブサイトだけでなく、ブランドの評判までも脅かしかねません。サイトからマルウェアを除去することも重要ですが、再感染を防ぐには、Astraのセキュリティスイートのような恒久的な対策が必要です。

WordPressコミュニティの最新動向やアップデート情報を受け取りたい方は、WordPressセキュリティに関するブログの購読をおすすめします。

Astraセキュリティスイートについて

Astraは、ハッカーやインターネット上の脅威、ボットからサイトを守るための総合的なWebセキュリティスイートです。WordPress、OpenCart、Magentoなど主要CMSで稼働するウェブサイトにプロアクティブなセキュリティを提供しており、サポートチームが年中無休24時間体制でお客様のご質問にお答えします。

  1. WordPressプラグインに潜むPHP実行型マルウェアの駆除・対策ガイド

    最近、WP Super Cache、Akismet、Elementorといった人気WordPressプラグインが生成するファイルと酷似したファイル名・内容を持つ悪意あるファイルを、ハッカーが密かに仕込んでいるサイトが複数確認されました。これらのファイルに含まれるコードは、リダイレクトハック、サーバー上への不正ファイルの作成、お問い合わせフォームやメールマガジンへのスパム送信を引き起こし、最悪の場合はホスティング会社によるアカウント停止につながることもあります。本記事では、プラグインに潜むこの隠蔽マルウェアの実態と、その除去方法について詳しく解説します。 WP Super Cacheプラグイン

  2. Windows 10のパスワードを削除して自動サインインする方法

    強力なパスワードでPCを保護することは、セキュリティ対策として非常に重要です。しかし、だからといってすべてのWindows環境にパスワードが必要だとは限りません。 たとえば仮想マシンを構築する場合、ゲストOS側のパスワードを削除しておけば、起動後すぐにサインインできるようになり、セキュリティはホストマシンのパスワードによって守られます。検証用端末や一時的なテスト環境などでも便利です。 理由は何であれ、パスワードの削除自体は簡単な作業です。ただし、この操作ができるのはローカルアカウントを使用している場合のみです。オンラインのMicrosoftアカウントは、常にパスワードで保護される仕様になってい