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

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

スポンサーリンク

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

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

総当たり攻撃(そうあたりこうげき)とは、暗号解読方法のひとつで、可能な組合せを全て試すやり方。力任せ攻撃、またはカタカナでブルートフォースアタック(英: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サーバーのアクセスログを見れば攻撃に気がつくだろうが、ログなんてどれくらいの人が毎日見ているだろうか?

例えば、「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]
プラグインを使わずに不正アクセスを防ぐ方法[WordPress]
不正アクセスって何?「不正アクセス」という言葉をよく聞くようになりました。イヤな世の中だよね。「不正」なんだよ。正しくないわけね。 ...

実際に、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

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

この記事は、まろろぐの「勝手に相談室から転載したものです。

WEBのシステムを作ったり保守したりするSE/プログラマというものをしています。
ブログやってますがブロガーではありません。週末WEB随筆家です。
まろと呼んでください。
スポンサーリンク

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

フォローしていただけるとうれしいです