サイトがハッキングされた場合、ウイルスとロードされたPHPシェルを削除するだけでは不十分です。 また、ハッキングが発生した理由を見つける必要があります。そうしないと、1、2日後にはこの分野での経験があり(平均して、当社のテクニカルサポートは週に1回サイトをハッキングする理由を探しています)、蓄積された情報を体系化しました。
では、なぜサイトをハッキングするのでしょうか? また、サイトがハッキングされた場合、その理由を見つけて、その後の攻撃から身を守る方法は?
サイトをハックする理由
サイトをハッキングするプロセスは現在ストリームにあります。 ボットネットは、一般的なCMSの既知のエクスプロイトを使用してサイトをハックし、独自のスクリプトをインストールしてから、ハッキングされたサイトをあらゆる目的で使用できます。 ウイルスはFTPからパスワードを盗み、サイトに接続してウイルスに感染し、それがサイト訪問者に感染し、その後サークルが繰り返されます。 ほとんどの場合、サイトをハッキングした後、次のことが発生します。
- ウェブサイトの改ざん。 むしろ、いたずらと呼ぶことができ、物事はしばしば汚損を超えない。
 - サイトページのウイルス感染。 ウイルスは、単にサイトの各ページの最後に追加するか、非常に高度なものにすることができます。 たとえば、ブラウザにデータを出力する特定のJoomlaクラスに感染したウイルスに遭遇しました。
 - 隣接するフォルダー内の他のサイトとその感染を検索します。
 - スパム
 - PHPシェルをダウンロードし、任意のアクションを実行する-たとえば、オペレーティングシステムの既存のエクスプロイトを使用してサーバーをハッキングしようとする。
 - IRCサーバーに接続し、任意の「ホスト」コマンドを実行できるボットをインストールします。たとえば、他のサイトからDDoSを生成します。
 
ハック理由検索アルゴリズム
アルゴリズム自体は非常に単純です。
- ハッキングの痕跡を見つけます。
 - ハッキングの正確な時間を決定します。
 - サイトがどの程度正確に破損したかをログで検索します。
 
ハックマークを検索する方法
ハッキングはほとんどの場合、トレースを残します。たとえば、PHPシェルなど、攻撃者が使用していたファイルです。 CMSをハッキングする古典的な方法:
- 脆弱性を介してPHPシェルをダウンロードします(または脆弱性を介してCMS管理者にアクセスし、ファイルマネージャーを介してPHPシェルをダウンロードします)。
 - PHPシェルを使用して、残りを行います。
 
- wzxp.php
 - gwd.php
 - a10881d.php.2046
 
- ./w.sh
 - ./env
 - ./env.c
 - ./program.c
 - ./program.o
 - ./w00t.so.1.0
 - / tmp / sh
 - / tmp / sh2
 
サイトファイルに加えて、一般的な/ tmpサーバーも確認する必要があります。これには、ハッキングやボットの起動に使用される一時ファイルが含まれている場合があります。
必ず.htaccessファイルを確認してください。ウイルスを拡散する他のサイトへのリダイレクトを追加できます。 この場合、.htaccessファイルはサイトのルート以上に配置できるため、アカウントのすべてのディレクトリを見るのを怠らないでください。
言い換えれば、あなたはすべての珍しい/理解できないものを探し、すべての疑わしいファイルの中を見る必要があります。 PHPシェルは次のようになります。
<?php #v2.3 //Version 
      
        
        
        
      
     $auth_pass = ""; //75b43eac8d215582f6bcab4532eb854e 
      
        
        
        
      
     $color = "#00FF66"; //Colour 
      
        
        
        
      
     $default_action = "FilesMan"; 
      
        
        
        
      
     $default_charset = "Windows-1251"; 
      
        
        
        
      
     preg_replace("/.*/e","\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28\x62\x61\x73\x65 
      
        
        
        
      
     \x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28'7b1tVxs50jD8OXvO9R9Er3fanhhjm2Q2Y7ADIZCQSSAD5 
      
        
        
        
      
     GUC3N623bZ7aLs93W0Mk+W/31Wll5b6xZhkdq/7OedhJtDdKpVKUkkqlapK3rDM1tzJLL4tl7qn+ycf90/ 
      
        
        
        
      
     // ...    base64 
      
        
        
        
      
    
      
      PHPスクリプトで注意すべき重要なポイント:
- Co0lHaZZkeRテキストの記述スタイル。
 - エクスプロイトとシェルという言葉の存在。
 - base64に大量のコードが存在する。
 - 最初の引数に/ eスイッチを指定したeval()またはpreg_replace()関数の存在。
 
ファイルを手動で検索することもできますが、ハッキングが最近発生した場合は、より高速に、findコマンドを使用します。
# find ./public_html -mtime -3d 
      
        
        
        
      
     # find ./public_html -mtime -10h 
      
        
        
        
      
    
      
      (find構文はFreeBSDに指定されています)。 これらのコマンドは、それぞれ過去3日間および過去10時間に変更されたファイルを表示します。
他のすべてが失敗した場合は、次のように、base64でエンコードされたコンテンツを含むすべてのファイルを単純に検索できます。
# find ./ -name '*.php' | xargs grep -E '[0-9a-zA-Z/]{80}' 
      
        
        
        
      
    
      
      このコマンドは、長さが80文字以上のbase64に類似した文字列を含むすべてのPHPスクリプトを検索します。
ハッキング時間の検出
ファイルが見つかった場合、ハッキングの時間を判断するのは非常に簡単です-最も古いファイルの変更の時間を見てください。
疑わしいファイルは見つからなかったが、サイトがウイルスに感染している場合は、index.php、index.html、またはウイルスが検出されたファイルが変更された日付を確認してください。 この場合、おそらくFTPからパスワードを盗むことでサイトがハッキングされました。
検索サイトのハッキングログ
今最も重要なことは、これらの雑誌が利用可能であるということです!
サイトが改ざんされているだけであるか、またはすべてのindex.htmlファイルにウイルスが追加されている場合、サイトはFTPパスワード(またはあまり一般的ではないがSSH)の盗難によってハッキングされた可能性があります。 ハッキング中にFTPおよびSSH接続ログを確認します-未知のIPアドレスまたはサイトへの接続に成功した多数の異なるIPアドレスの存在は、パスワードが盗まれたことを意味します。
この場合、サイトのアクセス元のコンピューターでウイルスをチェックし、FTPパスワードを変更し、FTPクライアントにパスワードを保存しないでください。
サイトにPHPシェルまたは悪意のあるスクリプト(スパム送信など)が含まれている場合、CMSまたはそのプラグインのいくつかの脆弱性を介してサイトがハッキングされた可能性があります。 この場合、Webサーバーのログを分析する必要があります。
何を探す必要があるかをよりよく理解するには、CMSハッキングがどのように発生するかを検討してください。
- 攻撃者は、サイトに潜在的に脆弱なCMSまたはそのプラグイン、または他のソフトウェア(古いJoomla、phpMyAdmin、WYSIWYGエディター、フォトギャラリーなど)があると判断します。
 - 彼は、このソフトウェアの有名なエクスプロイトを整理し始めました。 目標は、何らかの方法でファイルをサイトにアップロードすることです。
 - 脆弱性が見つかると、クラッカーはPHPシェルをロードします。
 - PHPシェルに接続することで、クラッカーはサイトへのフルアクセスを取得し、あらゆる目的で引き続き使用できます。
 
IPアドレスを判別できた場合
クラッカーのIPアドレスを特定したら、WebサーバーのログでこのIPアドレスを検索し、彼が実行したすべてのアクションを確認します。 PHPシェルへのアピールの瞬間に近いどこかで、サイトの脆弱性がうまく利用されるでしょう。
IPアドレスを特定できなかった場合
上記の方法は、ハッキング後にサイトが使用された特定のファイル名を知っている場合に機能します。 ただし、この名前は常に知られているわけではありません。 この場合、ハッキングの瞬間をもう少し探す必要がありますが、それでも見つけることができます。
ほとんどの場合、ハッキングの大半はHTTP POSTリクエストによって特徴付けられます。これは、ハッキングされたサイトにファイルがダウンロードされるためです。 攻撃者はPOSTを介して、パスワード入力フォームをクラックしたり、盗まれたパスワードで管理セクションにアクセスしたりすることもできます。
サイトのハッキング時間がわかっている場合(既にわかっている場合)、ハッキングの時間に近いすべてのPOSTリクエストについてウェブサーバーログを調べる必要があります。 特別なアドバイスはありません-見た目は完全に異なるかもしれませんが、どのような場合でも異常に見えます。 たとえば、「../../../../」を含むクエリや、ファイル名やSQLクエリを含む長いクエリなどです。
何も見つからない場合
それもそうかもしれません。 この場合、CMSとその拡張機能のクリーンな再インストールと、その後のデータのインポートのみを推奨できます。 CMSとその拡張機能の最新バージョンであることを確認してください。
そしてその拡張機能! ほとんどの場合、ハッキングはコンテンツ管理システムのコアではなく、作成者が長い間開発を断念していた古いプラグインを介して実行されます。
もちろん、サイトと関係のあるすべてのパスワードを変更します。
愛人メモ
- サイトの脆弱性を検索するプロセスで、訪問者がアクセスするのをブロックする方法がない場合、少なくともPOST要求をブロックします。 これにより、ほとんどの標準的なエクスプロイトが使用されなくなります。
 - 古いバージョンのCMSとそのプラグインを使用しないでください。 お楽しみに!
 - ハッキングの理由を特定した後、見つかったスクリプトを削除するだけにとどまらないでください。攻撃者が追加した侵入ポイントは隠れている可能性があります。 ハッキング後にサイトを復元するための最適なスキームは、訪問者のアクセスをブロックし、ハッキングの理由を見つけ、バックアップからサイトを復元し(これにより、攻撃者が行った可能性のあるサイトへの変更を排除します)、CMSを更新し、脆弱なコンポーネントも更新されるようにします。サイトへのアクセスを再度開きます。