ブルートフォースアタックで感染した!?[WordPress]

スポンサーリンク

ブルートフォースアタックって?

WordPewssの管理ページに不正にログインされてしまい、ブログにアクセスするとウイルスがダウンロードされるようになってしまった、という相談をある方から受けました。

みなさんは「ブルートフォースアタック」という言葉をご存知でしょうか?

総当たり攻撃(そうあたりこうげき)とは、暗号解読方法のひとつで、可能な組合せを全て試すやり方。力任せ攻撃、またはカタカナでブルートフォースアタック(英:Brute-force attack)とも呼ばれる。
参考URL総当たり攻撃(ウィキペディア)

相談者の方の証言や昨今のインターネットのセキュリティ事情から考えると、この攻撃によってWordPressの管理ページに侵入され、プログラムのソースを書き換えられてしまった、ということだと考えられます。この方のブログをブラウザで閲覧することで、ブラウザの弱点を突いてウイルスやマルウェアと呼ばれる悪意を持ったプログラムを知らないうちにダウンロードしてインストールされてしまう。

ブルートフォースアタック自体は珍しい攻撃ではなく、ぼくが管理している会社のWebサーバーも毎日のように攻撃を受けています。

攻撃を受けているからといって野放しにしているのではなく、ファイアーウォールというネットワークの番人が攻撃に対処してくれています。

ネットワークを通過する信号が異常なとき、あ!これはブルートフォースアタックだ!とファイアーウォールが判断したらその通信をブロックするようになっています。ぼくの会社のWebサーバーはファイアーウォールによる自衛権発動により守られています。

このファイアーウォールはなかなか賢くて、新たな攻撃手法が見つかったとしても、自分で自分をバージョンアップしてくれるようになっています。

すごいね。

ただ、軽く高級外車が買えるくらいの値段がするので、なかなか手をだすことができません。レンタルサーバー会社でも導入しているところは少ないと思われます。ぼくも毎日管理画面は見てるけど、実際に機械に触ったことは、まだありません。

ブルートフォースアタックを受けるまで

このブルートフォースアタックは、おそらく、相談者の方のWordPressの管理ページを特定して攻撃をしたものと考えられます。攻撃者とてやたら滅法攻撃を加えても、効率が悪いですから。

たとえば泥棒も適当な家にいきなり侵入しないっていうじゃないですか?まずは侵入しやすい家を探すらしいです。

インターネットでの攻撃も同じで、まずは攻撃しやすいブログを見つけることから始めるそうです。今回の場合はWordPressの管理ページが攻撃対象だから、WordPressで動いているブログを見つければいいわけです。

そのブログがWordPressで動いているかどうかの判断は、

/wp-admin/

もしくは

/wp-login.php

というページがあるかどうか調べればいいわけです。
ページがなければ

404 Not Found

というステータスがWebサーバーから返るから、攻撃者はスルーして次のサーバーを探します。

ページがあれば、

200 OK

というステータスがサーバーから返ってきます。攻撃者はここですぐさま攻撃を開始するのではなく「攻撃対象リスト」に載せているらしいです。

そして後日、「攻撃対象リスト」に載っているブログを順番に攻撃し始めます。攻撃手法はブルートフォースアタック。ユーザー名、パスワードを次々と変えながら入力し、ログインしようとします。辞書に載っていそうな単語から、機械的に自動的に創りだされた文字列まで、さまざまな文字列がログインに試されます。

もしこの攻撃でログインできてしまったら。

もし、この攻撃でログインできてしまったら、管理ページを乗っ取られてしまうことになります。WordPressのソースが書き換えられ、ブラウザであなたのブログを閲覧した時に、別のサーバーからウイルスやマルウエアといった悪意を持ったプログラムがダウンロードされ、インストールされてしまうことになってしまいます。

ウイルスやマルウエアに”感染“してしまったパソコンは、さらなる攻撃を加える仲間を増やすために活動したり、大企業や政府関係のサーバーを攻撃するためのbotとして使われてしまいます。

相談者のWordPressの管理ページにブルートフォースアタックを加えたのも、こうしたbot化したパソコンだったと思われます。こうして攻撃者は世界中に攻撃の手足となるbotを増やしていくのです。

攻撃者は、ブログを書き換えてよろこんでいるような愉快犯ではありません。もっと大きなことを目指しているわけです。

ブログへの攻撃が成功していたら

実際にブログが攻撃されてWordPressのソースが攻撃者によって書き換えられたとしても、見た目にブログは何も変わりません。Webサーバーのアクセスログを見れば攻撃に気がつくかもしれませんが、Webサーバーのアクセスログなんてどれくらいの人が毎日見ているでしょう?(ぼくも見ていませんw)

例えば、「Crazy Bone (狂骨)」といった、ログインの履歴を保存するようなプラグインを入れていれば、変なアクセスに気がつくことができます。ブルートフォースアタックを受けると大量のログインエラーが発生します。見覚えのない(自分のプロバイダではない)IPアドレスからのログインが見つかります。

あるいは、GoogleのSearch Consoleの「セキュリティの問題」のところで、「ハッキングされている」とか、「クロスサイト」「マルウエア」といった問題が発生して異常に気がつくかもしれません。

またあるいは、Google AnalyticsでPVが減ってる!あるいは、なくなった!ということで気がつくかもしれません。

場合によっては、Chromeで自分のブログを見てみたら、画面が真っ赤っ赤!(セキュリティアラーとで)ということで気がつくかもしれません。

ソースを書き換えられ、攻撃に加担しているということになれば、Googleの検索結果から弾き飛ばされてしまうことは目に見えています。

対処方法

攻撃を受けてソースを書き換えられているということはわかっても、どのソースのどの部分が書き換えられているのかさっぱりわからないでしょう。その場合はブログを潔く全部消して、一からWordPressをインストールしなおしたほうがいいと思います。その方が、世のため、人のため、あなたのためになります。

データベースはバックップを取って、念のため記事中に変なJavascriptが挿入されていないか、バックアップファイルをテキストエディタで開いて確認する。普通、記事中にJavascriptを直接書くことはないでしょうから、「<script」でタグを検索すればすぐに分かるでしょう。もし挿入されてしまっていたら、全て削除するします。

データベースは編集したバックアップファイルで復元し、テーマやプラグインは一からインストールし直します。WordPressの本体のファイルだけではなく、テーマやプラグインのファイルが書き換えられている可能性もあるからです。

結構大変なことになりますね。

攻撃を回避するために

ブルートフォースアタックを回避するためにはどうすればいいでしょうか?

ユーザー名とパスワードを出来るだけ複雑なものに変える。当然、辞書に載っているような簡単な単語を使っていてはダメ。数字だけ、なんていうのも当然ダメ。

WordPressのデフォルトのユーザー、adminも削除しましょう。ログインユーザー名がadminであるならば、パスワードのみを変化させていけばいいので、不正ログインされる可能性がとても高くなります。

ユーザー名とパスワードをできるだけ複雑にしても、相手はコンピュータ。機械的に自動的に何億通りというようなユーザー名とパスワードを発行してログインを試みます。不幸にして攻撃を突破される可能性は残ります。

では、手をこまねいているしかないのかというと、そういうことではありません。攻撃されないように隠せばいいのです。

先に攻撃者は「404 Not Foundだったらスルーする」と書きましたが、ようは管理ページにアクセスした時にサーバーが「200 OK」を返さないようにすればいいわけです。というわけで書いたのがこちらの記事です。

不正アクセスって何?「不正アクセス」という言葉をよく聞くようになりました。イヤな世の中だよね。「不正」なんだよ。正しくないわけね。 ...

実際に、WordPressで動いているブログを探しているらしき攻撃者の形跡をWebサーバーのアクセスログから見つけました。

行の最後の方をご覧いただければお分かりかと思いますが、ユーザーエージェント(ブラウザの種類)がOperaかFirefoxになっています。ぼくはChromeを使っているのでアクセスしたのはぼくではありません。

いずれも/wp-login.phpというページに対してアクセスしています。このページはWordPressの管理ページのログインページです。ぼくの場合はWordPressの管理ページにBASIC認証という仕組みを追加しているので、管理ページに入る前にも別のユーザー名とパスワードを入力しなければならないようにしています。

401 Unauthorized (認証が必要)

というステータスがサーバーから返っているので、攻撃者は管理ページにはアクセスすることができず、そのまま去ってしまったらしいです。BASIC認証を採用するだけで、攻撃から逃れることができるということです。

WordPressのプラグインで、

  • 一定以上のログイン失敗で数分間ログイン出来ないようにする
  • 同じIPアドレスからの複数回のログイン失敗で、そのIPアドレスからのログインをできないようにする

などの機能を持ったものもありますが、残念ながら攻撃側も巧妙で、

  • 一回の攻撃から一定時間を置いて、再度攻撃する
  • 多数のbotから順に攻撃させ、同じIPアドレスを使わない

という攻撃手法もあるといいますから、そういったプラグインでは防御できない可能性もあります。

WordPressのプラグインでブルートフォースアタックなどの攻撃を防げる可能性があるのは、WAF(Web Application Firewall)と呼ばれるもので、通信内容(通信パターン)から、通常の通信なのか、攻撃なのか判断をし、攻撃であるという判断をしたときは通信をブロックする、というものです。冒頭に書いた会社のWebサーバーを守るファイアーウォールのWordPressのプラグイン版、といったものです。

こちらのプラグインが無料で使えるので、試しにインストールして使っています。
参考URLSiteGuard WP Plugin

脅かすわけじゃないけど、何らかの対応をしなければ、いつかはやられると思っていたほうがいいです。

Googleの2段階認証を使う

今は、管理ページにBASIC認証をかけるのではなく、Googleの2段階認証を使っています。

WordPressでサイトやブログを運営する上で、最も怖いのが「乗っ取り」。WordPressの管理ページの「ユーザー名」と「パ...

XSERVER自体にブルートフォースアタックから守ってくれる機能が備わっているのと、Googleの2段階認証でこの手の攻撃から守られています。

WEBのシステムを作ったり保守したりするSE/プログラマというものをしています。

ブログやってますがブロガーではありません。週末WEB随筆家です。
まろと呼んでください。

いわゆる「画像直リンク」、画像の複製は固くお断りいたします。
スポンサーリンク

シェアしていただけるとうれしいです

フォローよろしくお願いします

NO IMAGE
この記事が気に入ったら
いいねをお願いします!

最新記事をお届けします。