ウェブシェルファイルの追跡ガイド

ウェブシェル侵害事故発生時、ウェブシェルファイルを見つけ出す際に参考にできるガイドです。

1. コンソールで疑わしいファイルを確認できる場合

検知されたウェブシェル行為と一緒に収集されたウェブシェルと疑われるファイルリストは、ウェブシェル行為が発生した時点で様々な条件をもとに導き出したリストです。

ウェブシェル行為が発生した時点でアクセス履歴が存在するファイル、ファイルの作成時間、ファイルの所有者など様々な条件を比較し、加重値を計算して提供します。

疑わしいファイルリストの中にウェブシェルファイルがある可能性が比較的高いため、優先的に確認するとスピーディーに対応できます。

security-17-191

2.コンソールで疑わしいファイルを確認できない場合

お客様のサーバ環境または状況によって、コンソールで疑わしいファイルリストを確認できない場合があります。

この場合、ウェブシェル行為が検知された時間を参考にして、WASのAccess Logでウェブシェルと疑われるファイルを絞り込むことができます。

Access Logでウェブシェルと疑われるファイルを探すとき、以下のような条件を参考にできます。

  • ウェブシェルが検知された時点でアクセスしたファイルは、ウェブシェルである可能性があります。
  • アクセスしたファイルの拡張子がWASで実行できる拡張子、あるいは意図しなかったファイルである場合、ウェブシェルの可能性があります。
  • アップロードできるパスに存在するファイルにアクセスした履歴があれば、ウェブシェルである可能性があります。
  • ウェブシェルが実行したコマンドがURLクエリストリング(Query String)に残っている場合、ウェブシェルである可能性があります。 例:webshell.php?cmd=cat%20/etc/hosts

3.ファイルの拡張子がサーバで実行できる拡張子か?

WASで実行するように認識される拡張子(.php、.jspなど)の場合、ウェブシェルの可能性があります。

ただし、サービスまたはハッカーによっては、一般的にWASで実行されない拡張子であっても設定によって実行される場合があります。
サーバ設定をしっかりと確認し、WASで実行するように認識される拡張子を把握してから確認する必要があります。

“.ppp”拡張子をphpだと認識するように設定した例

AddType application/x-httpd-php .php .ppp

4.サービスのために開発したファイルか?

ファイル名を確認し、サービスのために開発した正常なファイルかどうかを確認する必要があります。
ファイル名、作成した日付などを参考にし、お客様が必要に応じて作成した正常なファイルかどうかを確認します。

お客様が作成したファイルではない場合、ウェブシェルの可能性があります。
ただし、お客様が作成したファイルであっても、作成/修正日時またはファイルの内容を確認した際に改ざんされた痕跡が見つかった場合、ウェブシェルの可能性があります。

5.ファイルの所有者

一般に、ウェブシェルはウェブサービスの脆弱性を通じてアップロードまたは作成されることが多いため、 ウェブシェルファイルの所有者はウェブサービスの実行権限と同じ場合がよくあります。

例) httpdプロセスがnobodyで実行されている場合、ウェブシェルファイルの所有者はnobody。 WASプロセスがapacheで実行されている場合、ウェブシェルファイルの所有者はapache。 WASプロセスがrootで実行されている場合、ウェブシェルファイルの所有者はroot。

ファイルの所有者がWASプロセスの実行権限と同じならば、ウェブサービスによって作成されたファイルの可能性があります。
これは、お客様が直接作成したファイルではない可能性があるため、ウェブシェルの可能性があります。

6.ファイルの作成日時

ファイルの作成日時がウェブシェル行為の発生した時期と近い場合、ウェブシェルの可能性があります。ただし、作成日時がかなり前でもウェブシェルの可能性がないとは言い切れないため、以下のような場合を参考にして確認することをお勧めします。

  • かなり前にアップロードされて継続して攻撃してきたが、最近になってそれを検知した場合
  • かなり前に誰かがアップロードしたが、新しい攻撃者がそれを発見/アクセスして攻撃に使用する場合

7.ファイルはサーバサイドスクリプトで作成されたか?

ファイルの内容がサーバサイドスクリプトで作成された場合、ウェブシェルの可能性があり、サーバで起動中のWASによって実行できる言語である場合、可能性は高まります。

ファイルの内容を確認する際は、疑わしいファイルが実行されないように、テキストエディタを通じて確認することをお勧めします。

アップロードディレクトリなど意図しないパスにサーバサイドスクリプトで作成されたファイルが存在する場合、ウェブシェルの可能性があります。

8.ファイルの内容がウェブシェルで主に使用するパターンか?

一般的なウェブシェルの場合、ウェブサービスを通じて攻撃者の命令を受けてシステムコマンドを実行するように構成されています。
その場合、システムコマンドを実行できる関数が使用されるため、当該関数が存在するときはウェブシェルの可能性があります。

システムコマンドを実行できる関数、またはコードの実行や難読化の際に使用される関数の例
Runtime.getRuntime().exec()
shell_exec, passthru, system, exec, popen
eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13, ...

ただし、攻撃者の命令を受けずにランサムウェアなど悪意のある行為をするウェブシェルである場合、システムコマンドを実行できる関数が存在しない場合があります。

また、攻撃者はウェブシェルを分析しにくくするためにファイルの内容を難読化したり、通信を暗号化することがよくあります。 security-17-192

そのような場合、直接分析するのは難しいため、専門家に依頼するか、上記で紹介した様々な方法を対応上の参考にできます。

ウェブサービスを提供するために顧客が作成したファイルでないことが確実で、ウェブサービスに不要なファイルであり、 ウェブシェルと疑う根拠が十分だと思われる場合、ウェブシェルと見なして対応できます。

※ ウェブサービスを通じてウェブシェルにアクセスしてウェブシェルかどうかを確認する方法もありますが、攻撃者がどんな仕掛けをしておいたのか分からないためお勧めできません。注意が必要です。

例) 攻撃者でない人がアクセスすると分析や追跡ができないように、ウェブシェルファイルを削除するかサーバファイル/DBを削除する

に対する検索結果は~件です。 ""

    に対する検索結果がありません。 ""

    処理中...