ワードプレスの改ざんによって埋め込まれたマルウェアのコードの特徴と、そのコードを読みやすくして内容を解析する方法を解説いたします。
ワードプレスに埋め込まれるマルウェアのコード
ワードプレスは様々な要因で、ハッカーによりサイトの改ざんを受けることがあります。このことにより、サイトの運営者の意図しない悪意のある活動をするプログラムコードを総称してマルウェアと言います。
マルウェアのコードは多くの場合非常に特徴があり、例えば下記のような意味不明な文字列が一行で連なっていることがほとんどです。
$WDP0PDP00D=$WPDD0D0P0P[14].$WPDD0D0P0P[25].$WPDD0D0P0P[6].$WPDD0D0P0P[11].$WPDD0D0P0P[8].$WPDD0D0P0P[18].$WPDD0D0P0P[34].$WPDD0D0P0P[32].$WPDD0D0P0P[24].$WPDD0D0P0P[18].$WPDD0D0P0P[8].$WPDD0D0P0P[34].$WPDD0D0P0P[20].$WPDD0D0P0P[19].$WPDD0D0P0P[11].$WPDD0D0P0P[8].....
/*12236*/ @include "7hom5/fu6tre7fun4re.3om/0ubl.....
%3BVZ%0FDK%07%17%1C%0E%17%1C%1F%1FQP%07Y%40%0CKHHYYS%3BE%40%15oM%06%0D%1BK%5EAED%12%19A%01%07RG%00_SY%5E%02%15%08A%17%1D%0DUW%1B%01S%06I%04%02%04%06%03%5DW%5E%1E%1DW%0F%06V%18QU%1C%5E%00%5EH%08%07P%02%0D%12ZWB%06%01%0EB%10%11Y%15VY%09V%15%0F%16%01MD%5CY%0A%15%5C%0CBY%1F%07%15%
なぜこのような文字列がマルウェアとして動作するのでしょうか?
マルウェアの多くは難読化処理されている
前述のようなコードは、一般的なPHPのプログラムコードに難読化という処理が加えられ、プログラミングの知識があってもどのように動作するのかが、わかりにくくされています。
PHPは機械的に実行されているものですので、機械は処理を実行できるけど、人がコードの動作の機構がわからないようにされています。
また、難読化されたコードに、コメントを方々にさし込んでマルウェアスキャナーを回避する処理も同時に加えられていることもあります。
/*ydhr6ei*/"base"./*ydhr6ei*/."64_"./*ydhr6ei*/."decode"
難読化を解除するには?
このようなコードを難読化解除するのは困難を伴います。下記のような手法を複合的に使い難読化解除できる場合があります。
・base64_decode を手作業でbase64_encodeする(その他str_rot13 urlencode等も同様)
・文字列の難読化されたものをechoで直接出力させる
・キーとなっているファイルやハッシュ値を手作業で代入しechoで出力してみる
・eval の形になっているものを echo に書き換えて実行されるコードを出力してみる
・難読化解除のプログラムを利用する(Githubなどに複数公開されています)
上記作業をある程度自動でオンラインで難読化解除してくれる php-decoder.site を利用していただくことも可能です。