security

WordPress 改ざん事故でパスワードクラックされたかを調べる方法

サイト改ざん時にパスワードクラックが原因?!

意外と多いパスワードクラック

WordPress ログイン画面

WordPress の改ざん被害で意外と多いのがパスワードクラックです。インストール時に存在する「 admin 」アカウントが狙われます。調査報告をお客様にした際に「そこまでして侵入する価値があるのですか?」、「そこまでやるのはすごい執念ですね」といった声を聞きます。多くの方が意外と感じるはずです。

ところがパスワードクラックはプログラミングでできることなので攻撃側に負担はありません。ちなみにサイトの規模にもよりますが 1 日で 2 0 回くらいの攻撃が多く、アクセス解析で異常とわかるような「日で 1 万回」みたいな攻撃はありません。パスワードクラックが成功するまでこっそりと地味に攻撃は続きます。

パスワードクラックによる改ざんかどうかはアクセスログでわかります。突破された場合はアクセスログに「 wp-settings-time 」の呪文が入ります。自社とは違う IP アドレスであれば、他人のログイン跡(証拠)です。ただし、サーバ設定によってはログが省略されていることもあり、そして「 wp-settings-time 」の呪文がログから省略されていることも… そこで他にもパスワードクラックされたかを調べる方法はありますのでご説明します。

ちなみに「レンタルサーバから CMS の脆弱性が原因と聞いていて、パスワードはノーマークだった」という声も。こういう案内は定型文(コピペ)であり、根拠にしてしまうと遠回りをしてしまうこともあります。そこでパスワードクラック又は FTP からの不正アクセスを調べるのは簡単であり、ここがシロであれば残りは WordPress やプラグインの脆弱性になります。パスワードクラック調査をしっかりと行い、早期解決に役立ててください。

WordPress パスワードクラックからの改ざんの流れ

WordPress にログインし、管理画面を眺めてみてください。おもちゃにしようにも限度があります。なぜなら、テーマやプラグインの追加や編集はできますが、WordPress のコアファイルをいじったりデータベース情報を盗むことはできないからです。もしこの管理画面に到達することが目的であれば、こっそりと地味に攻撃を続けても非効率であり意味がありません。

まず行うことは不正ツールの埋め込みです。つまり Web サイトへ php で書いたウイルスを置き、そしておもちゃにするわけです。不正ツールの埋め込みは WordPress の管理画面から簡単に行えます。たとえばテーマやプラグインの一部を編集し、不正ツールにしてしまいます。ちなみにテーマやプラグインも含めてほとんどのファイルが php ファイルです。php であるために簡単に不正ツールに書き換えられてしまいます。

不正ツールに書き換えたら URL からアクセスし悪用します。具体的にはその不正ツールへアクセスし、他サイトの攻撃や迷惑メールの送信、データベース情報の漏えいなどを行います。また 2 週間くらいの間隔で Web サイトを改ざんし、訪問したパソコンにウイルスを感染させます。

なお、使っているテーマを書き換えてしまうと表示崩れなどでユーザーに気付かれてしまう恐れもあります。こっそりと地味に攻撃を続けるくらいですから、こんなミスは犯しません。使っていないテーマやエラーになっても気付かれないようなプラグインの一部を不正ツールに書き換えます。

ちなみにですが、はじまりはもともとある php ファイルを不正ツールに書き換えます。その不正ツールを使って、違う不正ツールをアップします。当社で検査した際にはたくさんの不正ツールがあちこちのディレクトリで見つかります。このように不正ツールが削除されたときの予備も埋め込まれます。また不正ツールは主要なウイルス対策ソフトでも検出は難しく、こちらは VirusTotal の結果です。これも踏まえて改ざん復旧方法を書いてありますので WordPress 改ざん時の復旧方法 こちらの記事も読んで復旧してください。

WordPress がパスワードクラックされたかを調べる方法

冒頭で紹介したとおり、WordPress 管理画面のログインに成功するとアクセスログに「 wp-settings-time 」の記録が入ります。このようなログがある場合はパスワードクラックによる改ざんです。しかし、サーバ設定によっては記録が省略されていることも。そこで調べる方法はあるのでしょうか。

アクセスログログインが成功するとアクセスログに「 wp-settings-time 」の記録が残ります。ユーザー名もわかります。画像は admin アカウントです。

攻撃側はログインに成功した後でテーマやプラグインの一部を不正ツールに書き換えます。つまり「 wp-login.php 」の後で「 theme-editor.php 」又は「 plugin-editor.php 」を開きます。見知らぬ IP アドレスでこのようなアクセスログがあれば他人のログイン跡です。

まずは「 wp-settings-time 」の記録があるか抽出します。ssh の使えるサーバなら「 find ./ -type f -print | xargs grep 'wp-settings-time' >> ../wplogin_log 」コマンドで wplogin_log に結果を残し、見知らぬ IP アドレスがないかを確認してください。なお、アクセスログと同じ階層に書き出すとループしますので上の階層に結果を残します。

またサーバ設定で記録が省略されている場合は「 wp-settings-time 」の部分を「 theme-editor.php 」又は「 plugin-editor.php 」に書き換えて作業し、見知らぬ IP アドレスがあれば今度はその IP アドレスで抽出してください。ssh が使えないサーバはちょっと大変ですがテキストエディタで作業するしかありません。なお、不正なログインがなければパスワードが改ざん原因ではありません。

結びになりますが、パスワードクラックが原因の場合ほとんどのケースで「退職された前任が admin を使っていてそのまま残っていた」が該当します。メールなどもそうですが、貸し出しているアカウントは退職時に必ず削除してください。また自宅でも編集を許可している場合は、FTP などのパスワードを変更してください。「そのままになっていた」という事故原因は非常に多くあり、ここは油断せずに管理してください。