クッキー制御のPHP Webシェル: Linuxホスト上のステルス工作技術
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
脅威行為者は、Linuxホスティングサーバー上のPHPウェブシェルに対する隠れた「アクティベーションキー」としてHTTPクッキーを悪用しています。このインプラントは特定のクッキー値が提供されるまで不活性となっており、その後攻撃者が提供するペイロードをデコードして実行します。この方法は、ルーチンのログに明白なインジケーターが少なくなるようにしつつ、持続的なリモートコード実行を可能にします。一般的なサポート技術には、層状の難読化、cronベースの自己修復、標準サーバーユーティリティの利用などが含まれます。
調査
研究者たちは複数の侵害されたホスティングアカウントをレビューし、トリガークッキーが存在する場合にのみBase64エンコードされたブロブから機能を再構築するPHPローダーを発見しました。持続性は、ホスティングコントロールパネル(例えばcPanel)を通じて作成されたcronジョブを介して維持されており、削除された場合にもウェブシェルを定期的に復元します。実行は通常php-fpmや他のウェブワーカーを通じて行われ、シェルインタプリタを生成し、セカンダリーペイロードを取得してアクセスを延長します。
緩和策
ホスティングコントロールパネルと管理アクセス経路にMFAを要求します。ウェブサーバープロセスがシェルを生成したり、base64やcurl、wgetのような一般的なステージングユーティリティを起動できないようにします。cronの作成と変更を注意深く監視し、ウェブディレクトリ内の予期しないファイル書き込みや変更をアラートで通知します。追加の強化策として、jailシェルアクセスを制限し、Linuxサーバーでリアルタイムのエンドポイント保護を有効にします。
対策
発見された場合は、ホストを隔離し、悪意のあるcronエントリを無効化して削除し、疑わしいPHPアーティファクトを削除し、影響を受けたホスティングアカウントの資格情報を回転させます。トリガークッキー値や関連するコマンドラインを含む証拠を保存してレビューし、再展開と再侵害を防止するための強化策を適用します。
"graph TB %% クラス定義 classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef builtin fill:#cccccc %% アクションノード step1_initial_access["<b>技術</b> – T1190 オープンアクセスのアプリケーションを悪用<br/><b>説明</b>: ウェブ向けアプリケーションの脆弱性を活用して、悪意のあるPHPファイルをアップロードし、初期の拠点を獲得します。"] class step1_initial_access action step2_persistence_webshell["<b>技術</b> – T1505.003 サーバーソフトウェアコンポーネント:ウェブシェル<br/><b>説明</b>: アップロードされたPHPファイルがウェブシェルとして機能し、持続的なリモートアクセスを提供します。"] class step2_persistence_webshell action step3_def_evasion_obfuscation["<b>技術</b> – T1027.008 難読化されたファイルまたは情報:削除されたペイロード<br/><b>説明</b>: ローダーコードがパックされ、真の機能を隠すために削除されています。"] class step3_def_evasion_obfuscation action step3b_def_evasion_api["<b>技術</b> – T1027.007 動的API解決<br/><b>説明</b>: 機能名は実行時に再構築され、静的検出を回避します。"] class step3b_def_evasion_api action step4_decode["<b>技術</b> – T1140 ファイルまたは情報の難読化解除/デコード<br/><b>説明</b>: Base64ブロブはサーバー上でデコードされ、悪意のあるペイロードを再作成します。"] class step4_decode action step5_unix_shell["<b>技術</b> – T1059.004 コマンドとスクリプトインタープリタ:Unix Shell<br/><b>説明</b>: ウェブシェルが/bin/shまたはbashを生成し、攻撃者が供給するコマンドを実行します。"] class step5_unix_shell action step6_cookie_cred["<b>技術</b> – ピーマーカン認証クッキー<br/><b>説明</b>: 実行は特定の$_COOKIE値によって制御され、攻撃者がコード実行のタイミングを制御できるようにします。"] class step6_cookie_cred action step7_permission_mod["<b>技術</b> – T1222.002 LinuxおよびMacファイルとディレクトリの権限変更<br/><b>説明</b>: 作成されたPHPファイルには実行可能で削除されにくい権限が付与されます。"] class step7_permission_mod action step8_ingress_transfer["<b>技術</b> – T1105 侵入工具転送<br/><b>説明</b>: curlまたはwgetが追加のツールや第二ステージペイロードをウェブルートにダウンロードします。"] class step8_ingress_transfer action step9_persistence_cron["<b>技術</b> – T1053.003 スケジュールされたタスク/ジョブ:Cron<br/><b>説明</b>: ユーザーレベルのcronジョブが定期的に難読化されたローダーを再作成し、自動修復の拠点を確立します。"] class step9_persistence_cron action step10_def_evasion_cont["<b>技術</b> – 継続的な難読化と限定的な可視性<br/><b>説明</b>: 悪意のある活動は通常のウェブトラフィックの背後に隠され、正しいクッキーでのみトリガーされ、ログの証拠を減少させます。"] class step10_def_evasion_cont action %% ツール/プロセスノード tool_php["<b>ツール</b> – PHPインタープリタ"] class tool_php tool tool_curl_wget["<b>ツール</b> – curl / wget"] class tool_curl_wget tool tool_cron["<b>ツール</b> – Cronスケジューラ"] class tool_cron tool process_apache["<b>プロセス</b> – apache2 / phpu2011fpm"] class process_apache process %% コネクション step1_initial_access –>|リード先| step2_persistence_webshell step2_persistence_webshell –>|有効にする| step3_def_evasion_obfuscation step3_def_evasion_obfuscation –>|使用する| step3b_def_evasion_api step3b_def_evasion_api –>|準備する| step4_decode step4_decode –>|実行する| step5_unix_shell step5_unix_shell –>|確認する| step6_cookie_cred step6_cookie_cred –>|設定する| step7_permission_mod step7_permission_mod –>|ダウンロードする| tool_curl_wget tool_curl_wget –>|ペイロードを格納する| step8_ingress_transfer step8_ingress_transfer –>|トリガー| step9_persistence_cron step9_persistence_cron –>|強化する| step10_def_evasion_cont step10_def_evasion_cont –>|プロセス内を操作する| process_apache process_apache –>|実行する| tool_php "
攻撃フロー
検出
疑わしいウェブサーバーを介したシェル [Linux] (via process_creation)
表示
cronファイルが作成されました (via file_event)
表示
Base64エンコードされた文字列の操作の可能性 (via cmdline)
表示
Cookie制御によるPHPウェブシェル活動の検出 [Webserver]
表示
Linuxサーバー上のCookie制御によるPHPウェブシェル実行の検出 [Linuxファイルイベント]
表示
Linuxプロセスの作成を通じたCookie制御PHPウェブシェルの実行検出
表示
シミュレーション実行
前提条件:テレメトリおよびベースラインの事前フライトチェックが合格している必要があります。
根拠:このセクションでは、検出ルールをトリガーするために設計された敵対者技術(TTP)の正確な実行を詳細に説明します。コマンドとストーリーは、特定されたTTPを直接反映し、検出ロジックが期待する正確なテレメトリを生成することを目的とする必要があります。抽象的または無関係な例は誤診につながります。
-
攻撃のナラティブとコマンド:
すでにウェブサーバーを侵害した攻撃者は、悪意のあるPHPウェブシェル(malicious.php)を取得します。それを有効にするために、攻撃者は細工されたクッキーを注入するHTTPリクエストを発行します。ウェブサーバーのPHPハンドラがクッキーを解釈し、ウェブシェルファイルを実行するBashプロセスを生成します。テストのために、同じ効果をローカルでシミュレートするためにBashを手動で呼び出し、コマンドラインに「.php」を含めます。これにより、Sigmaルールが監視する正確なテレメトリ(シェルインタープリタ+「.php」がコマンドラインにある)が生成されます。- ダミーのPHPウェブシェル(有害なコードはなく、単なる無害な
phpinfo()の可視性のための)を作成します。 - Bashを介してウェブシェルを実行し、コマンドラインに
.phpファイル名を埋め込みます。 - プロセス作成イベントが予期されるフィールドで監査ログに表示されることを検証します。
- ダミーのPHPウェブシェル(有害なコードはなく、単なる無害な
-
回帰テストスクリプト:
#!/usr/bin/env bash set -euo pipefail # 1. 無害なPHPファイル(シミュレーションウェブシェル)を配置します。 WEBROOT="/tmp/webshell_test" mkdir -p "$WEBROOT" cat > "$WEBROOT/malicious.php" <<'EOF' EOF # 2. Bashインタープリタを介して実行をトリガーします(コマンドラインには ".php" が含まれます) echo "[*] Bashを介してウェブシェルを実行して、検出テレメトリを生成しています..." /bin/bash -c "php $WEBROOT/malicious.php" # 3. auditdがログをフラッシュするために少し一時停止 sleep 2 echo "[*] シミュレーション完了。SIEMで次の一致を確認してください:" echo " process.name in (bash, sh, dash, jailshell) AND process.command_line contains '.php'" -
クリーンアップコマンド:
#!/usr/bin/env bash set -euo pipefail WEBROOT="/tmp/webshell_test" echo "[*] テストウェブシェルディレクトリを削除しています..." rm -rf "$WEBROOT" echo "[*] クリーンアップ完了。"