目次
不幸(クラッキング)は突然やってくる
アナログエンジンは大体滋賀県内だけでも700社以上のお客様にレンタルサーバーをご利用いただいています。全国では1000社以上。運用中のウェブサイトだけでなく、クラッキングの復旧も行なっているため、ほぼ毎週のようにクラッキング被害の報告を受けます。
WordPressは世界中のウェブサイトの60%で利用されているCRM(ホームページ管理ツール)。有名が故に、有名税をお支払いすることも。Wordpressにインストールした有名プラグインも脆弱性が露呈すると侵入路になりやすく、ハッキング被害に繋がります。
クラッキングの原因チャート(2023年現在)
侵入原因別クラッキング発生率
2023年までに実際に弊社が受注した198件を対象としたwordpressのクラッキング要因。不正な侵入というより、wordpressのメンテナンス不足やパスワードクラックなどが大多数を占めている事がわかります。その他の被害ではSSL/FTPの乗っ取りがありました。
No Data Found
以下の画像は、弊社のクライアントがクラッキング被害に合った時のログです。見やすいようPleskの画像を引用しました。こちらは弊社が制作したウェブサイトに外部の広告業社がインストールしたプラグインが起因となり被害にあいました。
上記の画像に見えるたくさんの赤い文字がハッキングで不正な処理が埋め込まれた部分です。
合計で数十箇所あります。最近のgoogleではウィルスを検知すると検索結果に「このサイトは第三者によってハッキングされている可能性があります。」との表示とともに、詳しい対策を掲載したサイトへリンクを貼ってくれます。(https://support.google.com/websearch?p=ws_hacked)
でもこんな表示がされたのでは、誰もホームページにアクセスしてくれませんよね。
WordPressで確認されたハッキング被害
アナログエンジンのクライアントでよく確認される被害は下記のとおりです。
- ウィルスをバラ撒かれる(主にトロイの木馬)
- 不正な詐欺サイトに誘導される
- 踏み台にされ、他のウェブサイトをクラック
- 会員制の場合、個人情報やログイン情報を抜かれる
よくある被害が1番目のウィルスをバラ撒かれる、です。対象のWordpressを利用したホームページにアクセスすると、自動的にファイルをダウンロードして、訪問者に感染します。
信用ある企業のホームページの場合、大きな信用を失うことになります。
2番目の不正なサイトに誘導される、もよくある被害。なぜか弊社のお客様はバイアグラの通販サイトに誘導されることが多いようです。ただ、いらない商品ならまだしもamazonや楽天を装ったホームページにアクセスしてしまい、ログイン情報を入力してしまえば、クレジットカードなどの不正使用に繋がります。
3番めの会員情報を抜かれる、は以前良くあった被害です。Wordpressにハッキングされ、通販サイトなどの顧客情報を抜かれてしまった事もあります。
万全の対策をしているつもりなのですが、Wordpressなどのホームページ更新システムは、お客様自身のカスタムにより被害に合われることがとても多いです。
ハッキングの侵入経路
ワードプレスの脆弱性または古いプラグイン
WordPressを更新しないままでいると、見つけたウィークポイント目指してハッキングされます。特にWordpressのような大きいシステムは、脆弱性(弱点)も有名になります。それを見つけてから対策されるまで多少の時間もかかります。その期間は悪いやつにとってはホームページを改ざんすることができるチャンス期間になりますよね。
できる限り、ワードプレスとプラグインは最新版に更新することをおすすめします。
予測されやすいパスワード(再重要)
そんなの分かってるよ!という声が聞こえてきそうですが、最重要な理由はパスワードを複雑化する以前にあります。ワードプレスはホームページを管理するためのシステムですので、誰でもが使えないように管理用のログイン機能があります。
アナログエンジンがホームページを納品するときは難解なパスワードをかけてお客様に提供するのですが、管理の都合上、お客様が簡単なパスワードに自分で変更してしまうこともあります。
「123456」とか「password」とか。
本気でこんなパスワード使う人いないと思ってたのですが、一部のハッキング被害では正に「password」というパスワードを使われていました。現在はレンタルサーバ側でも難読化されたパスワードではないと登録されないような仕組みを導入しています。(Pleskなどのコントロールパネル)
しかしながら、弊社が実際に体験している改竄復旧処理では、お客様に割り当てられたパスワードが問題なのではなく、ホームページ制作業社が制作用またはテスト用に作成したアカウントからの侵入が60%を超えています。(アカウント:test、パスワード:test、など)
人的なミスに起因するクラッキング被害が多いというお話です。
ブルートフォースアタック
悪意のあるプログラム、または悪意のあるプログラム(ウィルス)に感染したパソコンやホームページが、対象のログイン画面に総当りパスワードでアタックを仕掛けます。「aaaa1111」「aaaa1112」「aaaa1113」「aaaa1114」…みたいな感じですね。この過程でサーバーの負荷が上がり、次のDoS攻撃を引き起こし、ホームページが見られなくなることもあります。
DoS攻撃・またはDDoS攻撃
まぁまぁ頻繁に見られるこの攻撃。手数を駆使し、サイトをダウンさせに来ます。ホームページが重いなと思ったら、実はアタックされていた、というのはアナログエンジンではよく見る光景。
バックドアを作りに来る
バックドアはそのまま裏口のこと。表から見えないファイルにアクセスし、進入路を作りに来ます。「xmlrpc.php」のように外と通信するファイルなんかよく狙われてますね。
クロスサイトスクリプティング (XSS)
一時はこの被害がとても多く、国が動いて被害を防ぎにきたこともある被害。メールフォームなど入力が必要なページにプログラムを送信し、不正なファイルを置きに来たり、SQLインジェクションといって、Wordpressのデータ格納庫にアタックを仕掛けてきたりします。
案外、動く系のホームページに使われているソースコードも狙われたりします。
ハッキングの犯人
知りたいのは犯人。身内の犯行か、はたまた怨恨を持つものの仕業か・・・・。
特定のWebシステムを狙ったクラッキングも存在しますが、ターゲットを明確に特定して脆弱性から侵入するクラッキングは一部です。
実際にはロボット化されたウィルスやプログラムが自動的にインターネット上にあるウェブサイトを巡回し、改ざんします。特定の個人や企業がターゲットではなく、脆弱性があるウェブサイトが狙われるのです。
クラッキングからの復旧方法(最速簡易版)
基本的には悪さをしているファイルやウィルスを削除するだけですが、悪さをするファイルを誘導する、悪いファイルもいます。例えばウィルスをダウンロードされるため、ウィルスファイルを削除しても、それを自動的に設置するファイルが残っていれば、永遠に被害を受け続けることになります。こういった侵入路をバックドア(裏口)と言います。原因と予防策をしっかり行いましょう。
原因がどうでもいいならコンテンツをまずは保全
最速簡易版はご自身でWordpressを利用してウェブサイトを公開しているような個人の方向けです。可能なら下部に記載する「通常版」をよく読んで実行してください。
本来ならクラッキングとなった要因を見つけ出し、脆弱性対策をしっかりと行いウェブサイトを公開したいところですが、弊社に緊急でご依頼をくださる方の多くは、いざ急ぎの情報を公開しようと思ったら被害に気づいた場合がほとんど。原因追及はいいからいち早く復旧したいと望まれる方が多いです。その場合はコンテンツのみ保全し、Wordpress自体を入れ替えてしまうのが一番です。
- まずはコンテンツに異常がないかを目視でチェック
- 可能であればmysqlのDBを確認、wp_postsのslugの書き換えをチェックしてください。
- (ここでDBに異常があれば、プロに委託するしかありません)
- FTPにてwp-contentを保存、または別スペースへ保全
- wp-includes/version.phpの記述から「$wp_version = '6.3.x';」を発見しwordpressのバージョンを確認する。
- https://ja.wordpress.org/から上記で発見したものと同じバージョンのwordpressをダウンロードし、先ほどのwp-contentとwp-config.php以外を入れ替えます。この2つ以外はあきらめましょう。
- 過去のwordpressリリースはこちらからダウンロード可能です。
- wp-contentの中に原因がある場合が多いのでtheme/uploadsを中心に原因となるファイルを削除
- プラグインは可能なら削除してもう一度入れ直す
- ウェブサイトの表示を確認しつつ調整。Wordpress/プラグインのアップデートを行う。マイグレーション表示が出るならマイクレーションも実行する。
wp-includeの中にある怪しいファイルの削除方法は?
wp-includeファイルの中には、wordpressを動かすための非常にコアなソースコードが格納されています。こちらのファイルを編集するのは大変危険です。失敗するとwordpressが使用するデータベースなどにアクセスが不可能になってしまいます。
しかしながら、対処は簡単。このフォルダの中にはユーザーが独自に作成し使用するファイルは含まれていませんので、同じバージョンのwordpressをダウンロードして、丸ごと上書きしてしまいましょう。
FTP以外のアクセスが不能になっており、正式なバージョンがわからない場合は、FTPから「version.php」にアクセスして開いていただければ、
$wp_version = '6.0.2';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
*
* @global int $wp_db_version
*/
$wp_db_version = 53496;
/**
* Holds the TinyMCE version.
*
* @global string $tinymce_version
*/
$tinymce_version = '49110-20201110';
/**
* Holds the required PHP version.
*
* @global string $required_php_version
*/
$required_php_version = '5.6.20';
のように、バージョン情報が書き込まれていますので、参考にして上書きしてください。
この方法は多くの重要な要素を除いた簡易版です。サイト自体が複製できるなら、一時復旧としてしか利用できない方法ではありますが、簡易なウェブサイトはこれで十分な場合もあります。ただし、クラッキングの要因が取り除かれたわけではありませんので、アップデート・パスワードの変更などをしっかりと行いましょう。
またACFなどを利用した上でDBのスラッグを書き換えられている場合は簡易復旧を行うと投稿自体の消失につながります。あくまで簡易版ですので、大規模サイト、複雑な設定は以降の説明をしっかり読んでください。
クラッキングからの復旧方法(通常版)
まずはウェブサイト自体の保全とセキュリティ強化
有人クラックの場合は異なるバックドアを仕込まれる可能性がありますので、サイト運用しながらの修復が望ましいです。ログを取りながら復旧作業を行うと良いと思います。
公開ゾーンではまず下記のことを行なってください。
- デフォルトのままだったディレクトリへのアクセスを制限。ディレクトリブラウジング禁止に変更。
- wpdbのプレフィックス、WP標準セキュリティキーを変更(wp-config.phpに記載のリンクより)
- wp-includes / wp-content/uploads /キャッシュディレクトリPHP実行を禁止
- wp-config.php、.htaccess、xmlrpc.phpへのアクセスをブロック。xmlrpc.php は削除せずhtaccessから404が望ましいです。
- WordPress 管理画面でのファイル編集無効化
- ピンバック・ボット対策巡回禁止
- 投稿者スキャン禁止(ユーザー毎投稿閲覧は不可になります)
サーバ側のセキュリティアップデート
また可能であればレンタルサーバからの侵入路を防ぐためにサーバのセキュリティアップデートまたはWAFの強制アップデートを行なってください。弊社ではImunify360を利用しているので強制的な書き換えは下記のコマンドを利用しています。(よろしければセキュリティの高い弊社レンタルサーバもご検討ください。)
# imunify360-agent update --force modsec-rules
DBを保全しつつ確認
mysqlのdumpで発覚時のdumpデータを保存します。上記でプレフィックスを変更した場合は反映を忘れないようにしてください。
plefix_postsでは、異常のあるファイルをsqlコマンドで探してください。guid/slugやpost_contentあたりが変更されていますが、リビジョンも対象に入ることに注意してください。
大概の場合はテーマファイルとプラグインファイルを疑う
WEBアクセスと同時にウィルスをダウンロードさせたり何かしらのアクションが発生する改ざんについては、かなりの確率でアクセスと同時に動くファイルに何かが仕込まれています。wp-contentの中でも、プラグインと同時に動くものであれば、tinymceの中や、テーマファイルの中に仕込まれていることが多いです。テーマファイルの場合は、一見外からではわからない部分に
$efsdqlj[] = $hpghqk[21] . $hpghqk[32] . $hpghqk[34] . $hpghqk[37] . $hpghqk[26] . $hpghqk[36] . $hpghqk[46] . $hpghqk[32] . $hpghqk[9] . $hpghqk[1] . $hpghqk[36] . $hpghqk[46] . $hpghqk[35] . $hpghqk[9] . $hpghqk[21] . $hpghqk[7] . $hpghqk[36] . $hpghqk[37] . $hpghqk[9] . $hpghqk[16] . $hpghqk[1] . $hpghqk[26] . $hpghqk[35] . $hpghqk[9] . $hpghqk[37] . $hpghqk[34] . $hpghqk[46] . $hpghqk[16] . $hpghqk[16] . $hpghqk[37] . $hpghqk[7] . $hpghqk[45] . $hpghqk[32] . $hpghqk[11] . $hpghqk[21] . $hpghqk[46];
$efsdqlj[] = $hpghqk[50] . $hpghqk[49] . $hpghqk[24] . $hpghqk[49] . $hpghqk[31] . $hpghqk[15] . $hpghqk[38] . $hpghqk[13] . $hpghqk[4] . $hpghqk[29] . $hpghqk[13] . $hpghqk[18] . $hpghqk[12] . $hpghqk[6] . $hpghqk[6] .
のようなソースコードが書き込まれています。これはエンコードされた悪質なソースコードで、WEBサイトにアクセスが発生すると同時に動き出します。
1つ見つけたら類似ファイルを検索する
怪しいファイルxxx.phpなどを発見したら、改竄スクリプトの内容から類似のファイルを検索します。
find /var/www/vhosts/domain/ -type f -print | xargs grep 'rawurldecodeなどの怪しいコード'
また改竄スクリプトが設置された日の予測が付くようであれば下記からアタリを付けていいと思います。
# find ./ -newermt 'YYYY/MM/DD HH:MI:SS' -and ! -newermt 'YYYY/MM/DD HH:MI:SS'
アクセス権限・ユーザーの違いを見つけよう
パスワードが漏れてwordpressを改ざんされた場合は、基本的に「public_html」や「httpdocs」などと同じ権限で、ファイルが設置されています。しかし、サーバ的要因で侵入された場合は、公開エリアにapacheユーザ権限でファイルが上がっている場合も多いです。ユーザを特定して、ファイルを見つけるのもいい方法かと思います。
改竄スクリプト設置の一例
wp-includes/theme-compat/qpmmibdh.php
wp-includes/sodium_compat/namespaced/locujngw.php
wp-includes/blocks/paragraph/mqdlwqyz.php
wp-includes/blocks/post-excerpt/vvgemctk.php
wp-includes/blocks/latest-posts/wjzceshx.php
wp-includes/js/tinymce/utils/huaflweb.php
wp-includes/js/dist/wxekffza.php
wp-includes/js/swfupload/jykggqtk.php
wp-includes/css/zmrqymdc.php
wp-content/themes/twentytwentyone/classes/rboksetz.php
wp-content/themes/ucdnpdlqoh/zddazpcsfb.php
wp-includes/sodium_compat/namespaced/locujngw.php
wp-includes/blocks/paragraph/mqdlwqyz.php
wp-includes/blocks/post-excerpt/vvgemctk.php
wp-admin/css/colors/coffee/pmzzrfxu.php
wp-content/plugins/akismet/_inc/oluzzyne.php
tiny系は改竄されやすくエディタ機能を持つプラグインなどは要注意かと思いますが、設置後のスクリプトは本来XSSされにくいはずのプラグインフォルダによく設置されています。騙そうとする側の心理だとは思いますが。
復旧の順番を間違えないこと
大きなセキュリティホールから塞 がないと、動作チェックの段階でバックドアや二次スクリプトが稼働し、より大きな被害や、復旧後の再感染に繋がります。
サーバ>権限・設定>Wordpressの順番で復旧をしてください。
WordPressを守るための対策
常に最新版を利用すること
ホームページが改ざんされる原因はほとんど古さ。進化するシステム・ネットワーク環境にそぐわない古いWordpressやプラグインが狙われる対象になります。制作環境の都合上、更新をできない場合もあるでしょうが、何か被害にあってからでは遅いです。常に最新版を使うよう心がけましょう。
WAF(ウェブアプリケーションファイアウォール)を利用すること
WAFを導入したまま、更新されていない場合や、RBLとの連動が取れていないためブルーとフォースアタックを受ける場合があります。24時間に一度の更新を自動化してください。
常に最新版を利用すること
お客様が多くなってから、一つ一つのホームページを丁寧に監視してハッキングを見つけることは困難になりました。また、目視ではハッキング被害にあってから発覚することが多く、改ざんされた痕跡を修復するには遅すぎる場合もあります。
ですのでアナログエンジンのレンタルサーバーでは自動で2日に1回、ウィルスチェッカーの自動巡回を行い、必要であれば自動でホームページを停止したり、内容によっては自動修復を行うツールを導入して、できるかぎり被害が発生しない環境を構成しています。
また、Wordpressやプラグインについては遠隔にて最新版への更新ができる仕組みを採用しており、数世代古くなると強制的に最新版のものへと置き換えます。
多くのホームページを管理していると、どうしても確認漏れがでるので、システム的にサーバー側で一括管理するのが一番です。
ご自身で修復が不可能な場合はご相談ください
ご自身で修復作業を行われるのも良いですが、常にwordpressのアップデートやサーバ側での対策に目を光らせるのも難しいと思います。弊社のレンタルサーバでは基本的にアップデートを無償で行い(弊社保証のプラグイン:オーガナイゼーションで更新されているプラグインが基本です)ウィルス検知も初期状態で機能に含んでいます。ご自身での復旧が困難な方はお問い合わせください。(電話の方が早いです:077-514-0220)
1999年創業、創業20数年のホームページ制作&Webシステム制作会社。滋賀県のみならず、北は秋田、南は鹿児島まで広い地域でお客様がいます。デザインからシステム、コンサルティングや補助金のご相談までお任せください。認定DXアドバイザー在籍。