Sucuriはこのほど、「Whitespace Steganography Conceals Web Shell in PHP Malware」において、PHPファイルに人間には見えないようにタブと空白で記述されたマルウェアを発見したと伝えた。license.phpというライセンステキストに見せかけたファイルで、一見すると完全なマルウェアのようには見えないものの、実際にはファイルの末尾にタブと空白で構成された見えないようにエンコードされたPHPのコードが仕込まれていたと説明している。

  • Whitespace Steganography Conceals Web Shell in PHP Malware

    Whitespace Steganography Conceals Web Shell in PHP Malware

ライセンスファイルを装ったこのファイルは、コメントの形でライセンス契約のテキストが掲載されていたという。しかし、途中でコメントを区切る形でPHPのコードが挿入されている。コード自体はそれだけでは完結するような内容にはなっておらず、分析した結果、ファイルの末尾にタブと空白で構成された見えないコードが用意されており、そのコードによってマルウェアとして動作する仕組みになっていたとされている。

攻撃者はマルウェアとして検 出されないようにソースコードの難読化を行う。タブと空白に置き換えるというアプローチは難読化手法のひとつということになる。Sucuriは以前、CSSファイルにタブ、空白、改行で構成された見えないコードが仕込まれていることを発見している。今回Sucuriが発見したコードには改行は含まれておらず、無意味に長い空行が続くといったことにはなっていなかった。

人間はコードを目視することはできないが、こうしたコードを復元するのは難しくない。ソースコードをタブや空白に置き換えるプログラムはStackOverflowなどからコピーして使える状態にある。また、認識できる内容と比べてファイルサイズが異様に大きくなるなどかなり疑わしい状態になると指摘している。