- 印刷する
- PDF
ウェブシェルファイルの追跡
- 印刷する
- PDF
VPC環境で利用できます。
ウェブシェル侵害事故発生時、ウェブシェルファイルを見つけ出す際に以下の内容をご参照ください。
コンソールで疑わしいファイルを確認できる場合
検知されたウェブシェル行為と一緒に収集されたウェブシェルと疑われるファイルリストは、ウェブシェル行為が発生した時点で様々な条件をもとに導き出したリストです。ウェブシェル行為が発生した時点でアクセス履歴が存在するファイル、ファイルの作成時間、ファイルの所有者など様々な条件を比較し、加重値を計算して提供します。疑わしいファイルリストの中にウェブシェルファイルがある可能性が比較的高いため、優先的に確認するとスピーディーに対応できます。
コンソールで疑わしいファイルを確認できない場合
サーバ環境または状況によって、コンソールで疑わしいファイルリストを確認できない場合があります。この場合、ウェブシェル行為が検知された時間を参考にしてWASのAccess Logでウェブシェルと疑われるファイルを見つけることができます。以下のような条件をご参照ください。
- ウェブシェルが検知された時点でアクセスしたファイルは、ウェブシェルである可能性があります。
- アクセスしたファイルの拡張子がWASで実行できる拡張子、あるいは意図しなかったファイルである場合、ウェブシェルである可能性があります。
- アップロードできるパスに存在するファイルにアクセスした履歴があれば、ウェブシェルである可能性があります。
- ウェブシェルが実行したコマンドがURLクエリストリング(Query String)に残っている場合、ウェブシェルである可能性があります。
例:webshell.php?cmd=cat%20/etc/hosts
ファイルの拡張子がサーバで実行できる拡張子なのかを確認
WASで実行するように認識される拡張子(.php、.jspなど)の場合、ウェブシェルの可能性があります。
サービスまたはハッカーにより、一般的にWASで実行されない拡張子であっても設定によって実行される場合があります。サーバ設定を確認し、WASで実行するように認識される拡張子を把握してから確認する必要があります。
.ppp拡張子をphpと認識するように設定した例:
AddType application/x-httpd-php .php .ppp
サービスのために開発したファイルなのかを確認
ファイル名、作成日などを参考にし、サービスのために開発した正常なファイルかどうかを確認します。顧客が作成したファイルではない場合、ウェブシェルの可能性があります。
顧客が作成したファイルであっても、作成日や修正日、またはファイルの内容を確認した際に改ざんされた痕跡が見つかった場合、ウェブシェルの可能性があります。
ファイル所有者を確認
一般にウェブシェルはウェブサービスの脆弱性を通じてアップロードまたは作成されることが多いため、ウェブシェルファイルの所有者はウェブサービスの実行権限と同じである場合がよくあります。
ウェブシェルファイルの所有者と権限の例:
- httpdプロセスがnobodyで実行されている場合、ウェブシェルファイルの所有者はnobody
- WASプロセスがapacheで実行されている場合、ウェブシェルファイルの所有者はapache
- WASプロセスがrootで実行されている場合、ウェブシェルファイルの所有者はroot
ファイルの所有者がWASプロセスの実行権限と同じならば、ウェブサービスによって作成されたファイルの可能性があります。こういったファイルは顧客が直接作成したファイルではないかもしれないので、ウェブシェルである可能性が高いです。
ファイルの作成日を確認
ファイルの作成日がウェブシェル行為が発生した時期と近い場合、ウェブシェルの可能性があります。だいぶ前に作成されたファイルの場合でもウェブシェルである可能性があります。以下の状況を参考にして確認してください。
- だいぶ前にアップロードされて継続して攻撃してきたが、最近になって検知された場合
- だいぶ前にアップロードされたが、新しい攻撃者がそれを発見/アクセスして攻撃に使用した場合
ファイルはサーバサイドスクリプトで作成されたかを確認
ファイルの内容がサーバサイドスクリプトで作成された場合はウェブシェルの可能性があります。また、サーバで起動中のWASによって実行できる言語である場合、可能性は高まります。
ファイルの内容を確認する際は、疑わしいファイルが実行されないようにテキストエディタを通じて確認してください。
アップロードディレクトリなど意図しないパスにサーバサイドスクリプトで作成されたファイルが存在する場合、ウェブシェルの可能性があります。
ファイルの内容がウェブシェルで主に使用するパターンなのかを確認
一般的なウェブシェルの場合、ウェブサービスを通じて攻撃者の命令を受けてシステムコマンドを実行するように構成されています。このとき、システムコマンドを実行できる関数が使用されるため、その関数が存在する場合はウェブシェルの可能性があります。
システムコマンドを実行できる関数、またはコードの実行や難読化の際に使用される関数の例:
Runtime.getRuntime().exec()
shell_exec, passthru, system, exec, popen
eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13, ...
攻撃者の命令を受けずにランサムウェアなど悪意のある行為をするウェブシェルである場合、システムコマンドを実行できる関数が存在しない可能性も考えられます。また、ウェブシェルを分析しにくくするために攻撃者がファイルの内容を難読化したり、通信を暗号化する場合もあります。
その場合、直接分析するのは難しいため、専門家に依頼するか、上記で紹介した様々な方法を対応上の参考にすることができます。
ウェブサービスを提供するために顧客が作成したファイルではないことが確実で、ウェブサービスに不要なファイルであり、なおかつウェブシェルと疑われる根拠が十分と思われる場合は、ウェブシェルとみなして対応できます。
ウェブサービスを通じてウェブシェルにアクセスしてウェブシェルかどうかを確認する方法もありますが、攻撃者がどんな仕掛けをしておいたのか分からないため、注意が必要です。この方法はお勧めできません。
例:攻撃者でない人がアクセスすると分析や追跡ができないように、ウェブシェルファイルを削除するか、サーバファイル/DBを削除する