12/9頃~12/25早朝まで艦娘所有一覧・刀剣男士所有一覧がアクセスできなくなっていた件について

はじめに(利用者のみなさまへのお詫びとお願い)

題記の通り、2021/12/9頃~12/25早朝の間、艦娘所有一覧(http://dunkel.halfmoon.jp/kancolle/index.php)および刀剣男士所有一覧(http://dunkel.halfmoon.jp/touken/index.php)の結果URLへのアクセスが「403」エラーによりできなくなっておりました。
長期間アクセス不能だったにも関わらず、また、12日の時点で一報をいただいていたにも関わらず気づくことができず大変申し訳ありません。

また、お願いがあります。
詳細は後述しますが、本エラーの原因がマルウェア(ウィルスの一種)であることが確認できました。
内容としては私がレンタルしているサーバーを踏み台にした第三者サイトへの何らかのアクセスと推測され、艦娘所有一覧および刀剣男士所有一覧の閲覧者のみなさまには直接の影響はない認識です。(アクセスするだけで感染するウィルスの類ではありません)
しかしながら絶対に影響がないとは断言できないため、上記期間にいずれかの所有一覧にアクセスし、かつ、結果が表示できなかった方は、大変お手数をおかけしますがお手持ちの端末のウィルスチェックを実行いただきますようお願いいたします。

以下は、対応に関する備忘録や何が問題だったのかなどのメモになります。主に自分と、同じような不具合が発生している方のための記録となりますのでご興味のある方はご覧ください。(所有一覧を利用していただけの方は読まなくても問題ございません)

対応、その前に

(小声)たぶんセキュリティ知識のある方から見ればかなり杜撰な対応だと思います。私もエンジニアの端くれではありますがWeb・サーバ系に関しては趣味レベルの知識しかないため、検索をかけながら手探りで進めるしかありませんでした。なので、厳しいツッコミはご容赦いただけると……すみません……。

対応

対応開始まで

2021/12/5 ふと思い立って自サイト(所有一覧とは別の小説サイト)にアクセスしようとして繋がらないことを確認。様々設定をいじった結果、最終的に.htaccessのリダイレクト設定が誤っているのでは?と結論付け、wwwフォルダから.htaccessを削除(厳密にはリネームして置いていただけ)サイトは正常に閲覧できるようになった。

2021/12/9 Twitter検索結果によると、この辺りまでは正常に所有一覧にアクセスできている模様

2021/12/12 Twitterリプライにて「結果が閲覧できない」旨の連絡あり。しかしながらフォロー外リプライの通知をオフにしていたため気づかず。

2021/12/25 5時頃 深夜にメッセージボックス(Privatterの機能で、FF外からの連絡用に置いています)にて「結果が403エラーとなっている」旨の連絡が来ていることに気づく。この時点では12/5の.htaccessを元に戻せば直ると認識していた。

6時頃 対応開始。削除したはずの.htaccessが存在することに気づく(ファイル更新日付は12/10)。中身を確認すると明らかに自分で書いた覚えのない記述が存在する。ひとまずリネームして.htaccessとしての機能を失わせたあと改めて内容確認。

覚えのない.htaccess(リネーム後にスクショ)

一応この時点ではまだ「自分がど忘れしてなにかやったのでは」「さくら側の自動生成かなにかなのでは」と疑っていた。

が、そもそも知らないフォルダが存在することに気づく。フォルダ名で検索をかけても有名なcgiやレンタルサーバ公式FAQなどが引っかかってこない。意味のある言葉としても引っかかってこないためでたらめな文字列の模様。
ここでようやく何らかの不正アクセスの可能性に思い至り、サーバーのコントロールパネル側にログイン、パスワード変更。(本来ならまずPCのウィルスチェックをやるべきなのですが、セキュリティソフトは常時稼働させているので済んでいるとみなしました)(また、外部からのアクセスも全制限すべきだったのですがやり方がわからなかったため断念)

ログイン履歴を確認し、12/5と12/25以外のログインがないことを確認。
(ログイン時にはメールが届くようになっているためサーバー側のIDPASSが抜かれていたらおそらくその時点で気づいたと思います。それがなかったのは幸いでした。念のために二段階認証をかけました)
最優先でその「知らないフォルダ」の中身を確認することに。

知らないフォルダの中身

知らないフォルダの中身

4つのファイルが入っており、うち3つがESET先生によりダウンロードした瞬間に削除されました。以下は検知ログからの内容推測です。

eslammailer.php:php/mailar.i(メールを送る)
masterxOqSE.php:PHP/Webshell.NGH(シェルを実行する)
mycommand.php:こいつはウィルス検知なし。おそらくこれが自動起動されるようになっている。とあるサイトにアクセスしている模様。
サイト自体の危険性についてはaguse.jpで調べた限りでは問題なし。
ws.php:PHP/Kryptik.AB(詳細がはっきりしなかったのですがトロイの木馬の模様)

内容を確認し、うむ、消す!でフォルダごと全部消しました。

次に「about.php」というやはり見慣れないファイルを中身一応確認して即消しました。何が書かれているのかもよくわからない謎英数字の羅列でした。(公開してよいのかも判断がつかないためスクショ省略)

ここで「about.php」の検索結果から以下のサイトを発見します。
そういえば遥か昔にWordPressを設置して…そのまま放置しているような…

WordPress原因説

WordPressはブログを作るツールで、確か村感想とかを書いていた気がしますが、ここ5年以上全く使っていませんでした。何があるのかも思い出せない、閲覧する人は誰もいない、そもそもURLも自分でわからない。
そんな状態のものがおそらく狙われたのだと思います。

上記サイトを見て「index.phpが改竄されている」とあったので、内容確認。index.phpは2020年の日付になっていたので油断していました(おそらく更新日付が反映されてない模様)。確認し、上記サイトと同じような状態になっていたため削除。無害なindex.htmlと差し替えました。

ここまできて更新日付が古いから大丈夫とはとても言えなくなったので、www配下に直接置いてあるファイルについては内容を全確認。PHP.iniの中身がヤバかったので作り直しました。

PHP.ini(execとかshell_execとか結構ヤバいものがONになってる)

そしてWordPressフォルダをフォルダごと全削除しました。
上記サイト(についたコメント)によると完全復活にはクリーン&再構築が必要なようで、使ってないものにそこまでしたくないなと思ったのと、WordPress内の何かが書き換えられているのはほぼ確実だと思ったためここは思い切りました。ついでに使ってなかったMovableTypeも消しました(とばっちり)

ここで.htaccessが不正な状態に上書きされていることに気づいたのでもう一度正しい状態に戻しました。
おそらくwordpressフォルダを最初に対処しなかったために再度書き換えられたのでしょう……。これ以降は.htaccessの書き換えが発生しなかったため、他のフォルダにあるphpなどの中身を確認・使ってない掲示板スクリプトなどは思い切って削除し、最後にwwwファイルの中身をすべてローカルにDLしたあとウィルスチェックと不審なファイルをgrepで探して終了しました。
(ローカルDLしたらradio.phpとかがcgi-binフォルダからも検知されました。ギャー!DL即ESET先生が削除したのでログファイルから辿ってサーバーファイルも削除しました)
(アクセスログから不審なIPも弾こうかと思ったんですが直近1000件が全部googleやmsnのBOTだったので断念)

結局なんで所有一覧は動かなくなったのか

wwwフォルダの.htaccessが書き換えられたのが原因でした。各所有一覧のフォルダにも.htaccessは設置してあったのですが、FilesMatchの設定は記載してなかったのでwwwフォルダの不正.htaccessの設定が反映された結果動かなくなったということになります。

<FilesMatch ".(py|exe|php)$">
 Order allow,deny
 Deny from all
</FilesMatch>

ここを要約すると「py、exe、phpファイルへのアクセスは全部拒否」
そして続く、

<FilesMatch "^(about.php|radio.php|index.php|content.php|lock360.php|admin.php|wp-login.php|wp-l0gin.php|wp-theme.php|wp-scripts.php|wp-editor.php)$">
 Order allow,deny
 Allow from all
</FilesMatch>

ここでabout.php~wp-login.phpまでを動作させるようにしています。

所有一覧はいずれも「index.php」でキャラ選択、「result.php」で結果表示という構成になっていました。このためキャラ選択画面は正常に表示できるが、結果表示をしようとするとresult.phpはアクセス拒否されてしまい実行不可……となっていたようです。
(「動かなくなった(403 Forbidden)」のは不幸中の幸いでした。利用者から通報を受けられたのと、動いていないために利用者の環境に不正なファイルがダウンロードされるなどの被害はなかったと断言できるからです。ちなみに所有一覧のindex.phpはいずれも無事でした。ここ書き換えられてたら終わってたかも)

まとめ

しばらくは経過観察しつつ、セキュリティについてお勉強しながら順次対処していこうと思います。
存在すら忘れていたWordPressからやられると思ってませんでした。「念のために残しておくか」はダメですね。ローカルのファイルじゃないんだから。
セキュリティについてはないがしろにしていたつもりはなかったんですが、レンタルサーバーだしパッチ当てとかはサーバー側でやってくれるだろとぼんやりしていたのも事実です。ここは本当に反省しないとダメですね……畑違いとはいえ私もシステムエンジニアなのに……。(文章軽めですが割とマジで凹んでます。クリスマスの朝最初にやることがこれか…!そろそろ11時なのに朝ごはん食べてないし…)

そして改めて、ご連絡くださった方にお礼申し上げます。なんとか数時間で対応できる範囲で事を終えることができました。コンテンツの更新が滞っていますがいい機会なので今日中にやります。こんな放置気味ツールを使ってくださる皆様にご迷惑おかけして申し訳ありません。ありがとうございました。


この記事が気に入ったらサポートをしてみませんか?