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

PHPバックドア・Webシェルとは?仕組みと検出・削除・対策方法を徹底解説

現在、PHPはWordPressやPrestaShop、Magentoなど、主要なCMSのほとんどを動かしている中核的な技術です。このサーバーサイドスクリプト言語は非常に普及しており、インターネット上のWebサイトの約80%がPHPで動作しているとも言われています。しかし、その人気ゆえに、PHPを使用したサイトはハッカーにとって格好の標的となっています。1つの脆弱性を突く手法が多数のサイトに横断的に通用するためです。攻撃者はしばしば巧妙な手法を駆使し、サイトの裏側で悪意ある活動を行います。PHP Webシェルバックドアは、そうした悪意あるスクリプトの一つで、Webサイトに密かに感染することを目的としています。

PHP Webシェルバックドアとは?なぜ感染してしまうのか?

PHP Webシェルバックドアとは、Webサイト上でさまざまな悪意ある操作を実行するために設計された不正スクリプトやプログラムのことです。シンプルなWebシェルはコマンドベースのスクリプトであり、攻撃者はインターネット上のURLを通じてアクセスし、PHPサーバーの管理を遠隔操作できます。より複雑なWebシェルになると、メモリへの直接アクセスすら可能になります。

こうした感染は、駆除後も再発することが少なくありません。持続的なアクセスを維持できるよう設計されているためです。多くのバックドアは検知を逃れるためにさまざまな難読化技術を用いており、中には複雑なアルゴリズムによってメモリ内に直接潜むものさえあります。

PHP Webシェルがサイトに潜伏する経路は多岐にわたります。特に感染を許してしまう代表的なセキュリティ問題は以下の通りです。

  • 弱いパスワードまたは初期(デフォルト)パスワードの使用
  • 制限されていないPHPファイルのアップロード
  • 入力値検証が不十分など、PHPサイトのコーディング品質の低さ
  • 古いPHPバージョンの使用
  • 不適切なPHP設定
  • 機密ファイルに対する緩いファイル権限
  • 不適切なエラー報告によるコードの露出

PHP Webシェルバックドアに何をされるのか?

一般的なPHP Webシェルバックドアは、攻撃者が管理者のようにPHPサーバー上でコマンドを実行できる状態を作り出します。場合によっては、さらなる権限昇格も試みられます。このシェルを利用することで、攻撃者は以下のような行為が可能になります。

  • サーバー上のあらゆる種類のデータへのアクセス
  • サーバーを暗号資産(仮想通貨)のマイニングに利用される
  • サーバーがボット化され、攻撃者の指示に従って大量のスパムを送信させられる
  • その他、さまざまな悪意ある行為

PHP Webシェルバックドアのコード解析

一般的なPHP Webシェルバックドアは、おおむね次のような手順で動作します。

まず最初にシステム変数を初期化します。この際、検知を避けるためにエラーメッセージが出力されないよう細工が施されます。具体的にはx_die関数が作成され、エラー発生時にはそのメッセージがこの関数を通じて処理されます。この関数はPHPのdie()関数を呼び出して、現在のスクリプトを終了させます。

次に、WebシェルがPHPサーバー上でコマンドを実行できるかどうかを確認します。そのために、exec()system()など、PHPの各種コマンド実行関数の存在をチェックします。

続いて、システム設定を確認し、それらがWebシェルによって変更可能かどうかを調べます。設定用の関数が存在しない場合は、「can not config」というメッセージをx_die()関数に渡します。

さらに、PHPサーバーのセーフモード(safe_mode)の有無も確認します。セーフモードは共有サーバーでよく有効化されている機能で、特定のファイルを開いたプロセスが正当なユーザーによって実行されているかを検証するものです。セーフモードが有効な場合、Webシェルはそれ以上の実行を停止します。

if(x_ini_get('safe_mode')){x_die('can not exec: safe mode active');}

これらの条件がすべて満たされると、WebシェルはWindowsシステムのSuperfetchサービスを利用してコマンドを実行します。

PHP Webシェルバックドアの検出と駆除

  1. すべてのPHPファイルのソースコードを確認し、汎用的なPHP Webシェルバックドアに感染していないかチェックします。
  2. 手作業での検索が困難な場合は、grepコマンドを活用しましょう。
  3. 以下のコマンドで、フォルダ内からWebシェルのコード断片(dump)を検索できます:
    grep -r "dump of web shell" /folderToSearch/
  4. この方法で汎用的なWebシェルは検出できますが、特定の種類のWebシェルしか検索できないという限界もあります。
  5. 他の種類のWebシェルを探すにはソースコードに関する知識が必要です。この課題を克服するには、GitHubで無料公開されているWebシェル検出ツールを利用するとよいでしょう。
  6. PHP Webシェルを検出するため、不審なHTTPリクエストがないかログも必ず確認してください。Webシェルを見つけたら速やかに削除します。
  7. 機密性の高いファイルからPHP Webシェルの痕跡が見つかった場合は、該当箇所をコメントアウトしたうえで、専門家にマルウェアの除去と詳細な分析を依頼しましょう。

PHP Webシェルバックドアへの対策(予防策)

  1. PHPのバージョンは常に最新の状態に保つ。
  2. 初期パスワードや弱いパスワードは使用しない。
  3. サイトの設定ミス(誤設定)がないか常に確認する。
  4. ファイル権限を777に設定しない。誰でもファイルを編集できてしまう危険があります!
  5. PHPファイルの開発時には、セキュアコーディングのプラクティスを徹底する。
  6. 包括的なペネトレーションテスト(侵入テスト)を実施し、PHPサイトの脆弱性を洗い出す。

まとめ

Webシェルを削除するだけでは、サイトの安全は完全には確保できません。脆弱性が残ったままでは、攻撃者は新たなシェルを再びアップロードできるからです。一般のユーザーにとって脆弱性の発見は決して容易ではないため、セキュリティ対策ツールを導入して検出プロセスを自動化することをおすすめします。

Astra Securityの自動マルウェアスキャナーなら、クリックひとつで多数のPHP Webシェルやマルウェアを検出できます。さらに、Astra SecurityのファイアウォールがWebサイトを常時監視し、外部からのセキュリティ脅威をブロックします。ニーズに合ったプランを選んで、今すぐ対策を始めましょう。

  1. Avast Remediation.exeとは?概要とWindows 10での削除方法を徹底解説

    サイバー犯罪の被害に遭うまでは、誰もが「自分は大丈夫」と楽観的に考えがちです。しかし、デジタル上のプライバシーや機密データが突然第三者の手に渡ったり、ネット上に晒されたりしたら――それはまさに悪夢そのものです。どれほど慎重に行動していても、ひと瞬の油断で全てが崩れ去り、深い後悔だけが残ることになりかねません。幸い、多くのユーザーはアンチウイルスソフトを導入してデバイスと大切なデータを守っています。アンチウイルスソフトは盾のような存在であり、システムを悪意ある脅威から保護し、セキュリティを強化することでハッカーの侵入を防いでくれます。アンチウイルスソフトといえば、Avastは無料版と有料版の両方

  2. TrickBotマルウェアとは?感染経路とMacからの完全削除ガイド

    2016年以降、サイバー犯罪者たちは機密データを盗み見るためにTrickBot(トリックボット)マルウェアを使用してきました。当初はデータ窃取に重点を置いていたこのマルウェアは、現在ではネットワークトラフィックを改ざんしてさらなる拡散を図る能力まで備えています。脅威アクターにとってお気に入りのツールであり、長年にわたるアップデートを重ね、より多くのシステムを標的にできるよう進化してきました。そのため、「適応型モジュラーマルウェア」という評価も得ています。 さらに、バンキングトロイの木馬であるTrickBotは、感染したネットワークを経由して拡散する性質を持ち、WindowsのServer Me