Web シェル(WebShell)とは、Web サーバーにアップロードされ、ファイルの検索やシステムシェルコマンド等を実行できるようにするファイルである。攻撃者は Web ブラウザを利用してサーバーシステムのファイルを検索し、シェルコマンドを実行できる。悪意のある Web シェルファイルがサーバーにアップロードされるのを防止するには、アップロードファイルの拡張子を制限する等の対応策がある。しかし、攻撃者は以下のような方法でこれを回避することができる。
- サーバーサイドスクリプト(Server-Side Script)の拡張子フィルターを回避するファイルのアップロード
- GIF、PNG、JPEG 画像等のアップロード可能な拡張子のファイルに、不正なスクリプトを挿入してファイルをアップロード
本記事では、上記の2つ目の方法に該当する内容であり、GIF 画像の拡張子ファイルに挿入された Web シェルのマルウェアについて説明する。GIF ファイルは、実際に有効な画像ファイルである時もあり、そうでない場合もある。攻撃者は PHP や ASP 等のサーバーサイドスクリプトを GIF のマジックナンバー(GIF87a/GIF89a)の後ろに挿入するか、ファイルの末尾にあたる TRAILER(3B) の後ろに挿入する。一般的に、サーバーは有効な画像ファイル形式かどうかの確認を、マジックナンバーだけを見て判断する。攻撃者はこれを利用してわずか数バイトのマジックナンバーの後ろに不正なスクリプトを挿入し、画像ファイルの条件を通過する。

これを YARA ルールでシグネチャー化すると、以下のようになる。(実際の V3 製品の診断方式とは異なる)
rule image_webshell {
meta:
info = "画像ファイルを利用したPHP Webシェルによるマルウェア"
strings:
$gif = "GIF87a"
$gif2 = "GIF89a"
$php = "<?php"
$command = "$_GET['cmd']"
condition:
($gif at 0 or $gif2 at 0) and $php and $command
}
AhnLab ASEC 分析チームは、いくつかのタイプの Web シェルファイルを分析し、これを検出できるように診断を反映した。Web サーバーから Web シェルによるマルウェアが検知された場合、これによる追加のマルウェアの発見や侵害の被害が発生する場合があるため、指定検査が必須である。
[ファイル診断]
WebShell/GIF.Backdoor.GEN (2020.12.02.03)
[IOC]
2d1bc085815fcdc994b24ea97cdf1170

Categories:マルウェアの情報