Google検索経由で偽アダルト出会い系サイトへリダイレクトされるマルウェアとは?WordPress・Magento・Joomlaの対処法
近年、Webサイトの訪問者を偽のアダルト出会い系サイトへ強制的に誘導する、新種のリダイレクト型マルウェアが猛威を振るっています。このマルウェアキャンペーンでは、被害サイトに数千件もの偽ページが自動生成され、それらがGoogle検索にインデックスされます。site:example.com のように検索してみると、以下のような不正なページが大量にヒットすることがあります。
このマルウェアは、出会い系サイトだけでなく、エッセイ(代行記事)、医薬品、ローン、メディア、悪意のあるダウンロードスパムサイトなど、さまざまなジャンルの偽ページとリダイレクトを生成することでも知られています。
関連記事:WordPress リダイレクトハックの解説
Google検索でインデックスされたリンクをクリックすると、下記の画像のような露骨なコンテンツやメッセージを掲載したサイトへ強制的にリダイレクトされます。
自社サイトが感染しているかを見分けるチェックポイント
- 自分が作成していないはずのページが、Google検索結果に大量に表示されている
- Googleから自サイトのリンクをクリックすると、アダルト・ギャンブル・出会い系サイトへ飛ばされる
- 覚えのない新しいページがサイトに追加されている
- 管理画面(ダッシュボード)に不明な管理者ユーザーが登録されている
- サイトの表示速度が著しく低下している
- Google Search Consoleから警告メッセージが届いている
Drupalサイトでリダイレクトハックを発見する方法
私たちはDrupal 7サイトで発生した本マルウェアキャンペーンを調査しました。その結果、ハッカーが高度なテクニックを駆使してマルウェアを巧妙に隠蔽しており、悪意のあるコードの特定が非常に困難になっていることが分かりました。
Astraのマルウェアスキャナーでサイトをスキャンしたところ、includes/template.incという不審なファイルが検出されました。
さらに調査を進めたところ、template.incファイルが「Drupalレジストリ」に登録され、すべてのリクエスト時に自動的に読み込まれる仕組みになっていたことが判明しました。この設定値はデータベース内に保存されていました。
悪意あるコードのデコード手順
次のステップとして、検出されたファイル内のコード、具体的にはgetMimeDescription()関数を解析しました。
public function getMimeDescription($documentDir) {
$indicies=array(8, 5, 0, 1, 9, 4, 6, 7, 3, 2);
$mimeMarkers=array('themes', 'Porto', 'loader1', 'light_rounded', 'prettyPhoto', 'all', 'images', 'prettyPhoto', 'sites', 'vendor');
$mimeType='gif';
$selecteds=array();
foreach($indicies as $index) {
$selected=$mimeMarkers[$index];
$selecteds[]=$selected;
}
array_unshift($selecteds, $documentDir);
$cachePath=join('/', $selecteds);
return $cachePath.'.'.$mimeType;
}
}
上記のコード断片を評価すると、実際に稼働している別の悪意あるファイルへのパスが出力されました。
sites/all/themes/Porto/vendor/prettyPhoto/images/prettyPhoto/light_rounded/loader1.gif
PHPのgzinflate()関数で圧縮された文字列を展開すると、base64エンコードされたコードが現れました。
このコードの難読化を何重にも解除していくと、以下のスニペットのように、真の悪意あるコードがついに明らかになりました。
\t$v266=array('essay','pharm','dating','loan','media','download');\n\t\tif(isset($this->v254['theme'])){\n\t\t\t$this->v12->t4(\"page theme: '{\n\t\t\t0\n\t\t}\n\t\t'\",$this->v254['theme']);\n\t\t$v267=strtolower($this->v254['theme']);\n\t\t\tforeach($v266 as$v80){\n\t\t\tif(strpos($v267,$v80)!==false)return$v80;\n\t\t}\n\t}\n\t\telse{\n\t\t$this->v12->t4(\"page has NO theme. old dor\");\n\t}\n\treturn'default';\n}\n\tfunction t170($v268,$v148){\n\t$v269=$this->v255->t147($v268['exit']['url'],$this->v254,$v148);\n\treturn array('name'=>$v268['name'],'exit'=>$v268['exit']['type'],'url'=>$v269[00],'extparams'=>$v269[01]);\n}
このコードを分析すると、「essay」「pharm」「dating」「loan」「media」「download」といったキーワードをもとにページテーマを判定し、それぞれに対応したスパムページを生成・リダイレクトする仕組みが組み込まれていることが分かります。
偽アダルト出会い系サイトへのリダイレクトを止めるには?
偽のアダルト出会い系サイトへのリダイレクトを完全に除去するには、Webサイトのファイルとデータベース全体を対象にマルウェアスキャンを実施する必要があります。今回のハック分析でお分かりいただけたように、ハッカーは多層的な難読化やコード隠蔽テクニックを駆使して、リダイレクトコードを巧妙に隠しています。
自力でマルウェアを駆除したい方は、WordPressマルウェア除去の完全ガイドをご参照ください。
出会い系サイトへのリダイレクトを防ぐためのセキュリティ推奨策
- 復元が必要になった場合に備え、必ずWebサイトのバックアップを取得しておく
- CMS本体、プラグイン、テーマを常に最新バージョンに更新する
- ハックの原因を特定し、脆弱性にパッチを適用する
- 堅牢なファイアウォール(WAF)でWebサイトを防御する
- ファイルやフォルダに777のパーミッションを付与しない。フォルダは755、ファイルは644に設定する
- 管理画面に不明な管理者ユーザーが追加されていないか定期的に確認する
- public_htmlフォルダ内のバックアップファイル(.zip、.sql、.tarなど)を削除する
-
GoogleブラックリストからWebサイトを削除する方法|WordPress・Magento・PrestaShop・OpenCart・Drupal・Joomla・PHP対応
Googleのブラックリストとは?警告を解除する方法 今日、Googleはインターネット検索そのものと言える存在です。それゆえ、Googleはユーザーのオンラインセキュリティを守るために大きな責任を負っています。検索結果に表示されるページの中からスパムやマルウェアを常時監視しており、専用のアルゴリズムを使ってインターネット全体を定期的に分析しています。クロールのたびに、Googleのクローラーは危険と判断したものすべてにラベルを付け、分類します。問題のあるWebサイトが発見されると、Googleによってブラックリストに登録され、サイト運営者はブラックリスト解除のための手続きを行う必要があります
-
WordPressブログが悪意あるドメインへリダイレクト?原因の特定と今すぐできる対処法
WordPressのリダイレクトハックは、長年にわたり多くのサイト運営者を悩ませてきた深刻な脅威です。この手の攻撃は数週間ごとに姿を変え、新たな手法が次々と登場しています。本記事では、その中でも「ブログページの訪問者を悪意のあるドメインへ強制的に転送する」タイプのハックについて、症状の見分け方から駆除・再発防止策まで詳しく解説します。 これまでに確認されている悪意のあるドメインには、adaranth.[com]、buyittraffic.[com]、cuttraffic.[com]、statistic[.]admarketlocation[.]com、planeobservetoo1[.]l