改ざんの標的となるCMS内のPHPファイル(2016-02-25)
JPCERT/CCでは、コンテンツマネジメントシステム(以下「CMS」といいます。)で作成された国内Webサイトが類似した改ざんを受けた事例を継続的に確認しています。さらに海外でも同様の改ざん事例が確認されています[1],[2]。これらの事例では、CMSを構成している一部のPHPファイルが改ざんされ、その影響でWebサイトが生成するコンテンツの改ざんが生じていたことが分かっています[3]。
今回は、複数の調査事例から得られた知見をもとに、標的となっていたCMSを構成するファイルの改ざんについて紹介します。
改ざんされていたファイル
JPCERT/CCで確認したところ、標的となっていたCMSはいずれも構成要素としてPHPファイルを含み、その一部が改ざんされていました。CMSの名称と、それぞれについて改ざんされていたPHPファイルを表 1に示します。
表 1: CMS名と改ざんされていたPHPファイル
CMS名 | 改ざんされていたPHPファイル |
WordPress | /wp-includes/nav-menu.php /wp-admin/includes/nav-menu.php |
Joomla! | /includes/defines.php /administrator/includes/defines.php |
Drupal | /includes/bootstrap.inc |
MODX | /manager/includes/protect.inc.php |
調査の結果、これらのPHPファイルが改ざんされたことにより、Webサイトからのレスポンス内に不正なコードが、閲覧者のアクセス毎に動的に挿入されていたことが判明しました。
改ざんされたPHPファイルによって不正なコードが挿入される仕組み
改ざんされたPHPファイルには、「//istart」および「//iend」というコメントに挟まれた、図 1のような不正なPHPコードが挿入されていました(不正なPHPコードが難読化されている場合も確認しています)。
この不正なPHPコードは、外部から取得したコードを挿入する機能を持っており、特定のURLから不正なコードを受け取り、特定の位置に挿入します。
挿入される不正なコード
Webサイトに閲覧者がアクセスすると、改ざんされたPHPファイル中の不正なPHPコードは、図 2のようなdivタグおよびJavaScriptからなる不正なコードを外部から取得し、Webサイトが閲覧者に返すレスポンス内に挿入します。コードが挿入される位置はCMSによって異なり、WordPressではbodyタグの直後、Joomla!、Drupal、MODXでは、HTMLの冒頭部です。
不正なコードには難読化されたJavaScriptが含まれており、これが閲覧者のブラウザ上で実行されると、閲覧者を攻撃サイトに誘導するiframe等のタグが生成されます。閲覧者のWebブラウザやプラグイン等に脆弱性が存在した場合には、閲覧者のPCがランサムウエア等のマルウエアに感染してしまう可能性があります。
おわりに
不正なコードが動的に挿入される今回紹介したような事例では、改ざんされたコンテンツを閲覧者に提供していることをWebサイトの管理者が気づきにくいと考えられます。表 1のPHPファイルをはじめ、管理しているWebサイトのPHPファイル内に図 1のような不正なPHPコードが存在していないか、今一度ご確認をお願いします。
PHPファイルが改ざんされる経緯をJPCERT/CCではまだ特定できていませんが、CMSやCMSが利用しているプラグインの脆弱性が悪用されている可能性が考えられるため、CMSやプラグインを常に最新版にアップデートするようお勧めします。
今回紹介した事例だけでなく、国内のWebサイトが改ざんされ、攻撃サイトへの入り口にされる事例は継続的に確認しています。ソフトウエアのアップデートやパスワードの管理を適切に行い、あなたが管理するWebサイトが攻撃に加担しないように留意していただけたら幸いです。
分析センター 船越 絢香
参考情報
[1] Sucuri Inc
WordPress Malware Causes Psuedo-Darkleech Infection
https://blog.sucuri.net/2015/03/pseudo-darkleech-server-root-infection.html
[2] DAVISEFORD.COM
DarkLeech: Finally Under Control?
http://daviseford.com/node/58
[3] JPCERT/CC
JPCERT/CC インシデント報告対応レポート[2015年10月1日~2015年12月31日]
https://www.jpcert.or.jp/pr/2016/IR_Report20160114.pdf