サイトにはどの穴が開いていましたか?

画像 サイトがハッキングされた場合、ウイルスとロードされたPHPシェルを削除するだけでは不十分です。 また、ハッキングが発生した理由を見つける必要があります。そうしないと、1、2日後にはトルコの美しい外国の旗が元気いっぱいの音楽に再び舞い上がります。 最も一般的な理由は、盗まれたFTPパスワード、古いバージョンのCMSまたはそのプラグインですが、侵入に使用されたものを正確に調べるにはどうすればよいですか?



この分野での経験があり(平均して、当社のテクニカルサポートは週に1回サイトをハッキングする理由を探しています)、蓄積された情報を体系化しました。



では、なぜサイトをハッキングするのでしょうか? また、サイトがハッキングされた場合、その理由を見つけて、その後の攻撃から身を守る方法は?



サイトをハックする理由



サイトをハッキングするプロセスは現在ストリームにあります。 ボットネットは、一般的なCMSの既知のエクスプロイトを使用してサイトをハックし、独自のスクリプトをインストールしてから、ハッキングされたサイトをあらゆる目的で使用できます。 ウイルスはFTPからパスワードを盗み、サイトに接続してウイルスに感染し、それがサイト訪問者に感染し、その後サークルが繰り返されます。 ほとんどの場合、サイトをハッキングした後、次のことが発生します。

  1. ウェブサイトの改ざん。 むしろ、いたずらと呼ぶことができ、物事はしばしば汚損を超えない。
  2. サイトページのウイルス感染。 ウイルスは、単にサイトの各ページの最後に追加するか、非常に高度なものにすることができます。 たとえば、ブラウザにデータを出力する特定のJoomlaクラスに感染したウイルスに遭遇しました。
  3. 隣接するフォルダー内の他のサイトとその感染を検索します。
  4. スパム
  5. PHPシェルをダウンロードし、任意のアクションを実行する-たとえば、オペレーティングシステムの既存のエクスプロイトを使用してサーバーをハッキングしようとする。
  6. IRCサーバーに接続し、任意の「ホスト」コマンドを実行できるボットをインストールします。たとえば、他のサイトからDDoSを生成します。
つまり、クラッカーのアクションは、ボットのさらなる配布、ネットワーク(ボットネット)の作成、およびそれ自体の目的でのさらなる使用を目的としています。



ハック理由検索アルゴリズム



アルゴリズム自体は非常に単純です。

  1. ハッキングの痕跡を見つけます。
  2. ハッキングの正確な時間を決定します。
  3. サイトがどの程度正確に破損したかをログで検索します。
複雑さは、パラグラフ1および3の実装です。これらについては、さらに詳しく説明します。



ハックマークを検索する方法



ハッキングはほとんどの場合、トレースを残します。たとえば、PHPシェルなど、攻撃者が使用していたファイルです。 CMSをハッキングする古典的な方法:

  1. 脆弱性を介してPHPシェルをダウンロードします(または脆弱性を介してCMS管理者にアクセスし、ファイルマネージャーを介してPHPシェルをダウンロードします)。
  2. PHPシェルを使用して、残りを行います。
したがって、まず、そのようなファイルを探す必要があります-明らかにサイトに属していないファイル。 原則として、ロードされたスクリプトは非常に珍しいと呼ばれ、独自のCMSスクリプトの中で際立っています:

サーバーをハッキングするために起動されたエクスプロイトの結果は次のようになります。

これらのファイルは、サイトのルートと、tmp /またはcache /フォルダーの両方に配置できます。 また、画像/、アップロード/、user_files /などのフォルダでそれらを探す必要があります-多くの場合、エディタまたは写真ライブラリの脆弱性を介して、スクリプトは通常写真がダウンロードされる場所または一時ファイルが保存される正確な場所にダウンロードされます。



サイトファイルに加えて、一般的な/ 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スクリプトで注意すべき重要なポイント:

最終的には、ブラウザに移動して、このスクリプトの機能を確認できます。



ファイルを手動で検索することもできますが、ハッキングが最近発生した場合は、より高速に、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ハッキングがどのように発生するかを検討してください。

  1. 攻撃者は、サイトに潜在的に脆弱なCMSまたはそのプラグイン、または他のソフトウェア(古いJoomla、phpMyAdmin、WYSIWYGエディター、フォトギャラリーなど)があると判断します。
  2. 彼は、このソフトウェアの有名なエクスプロイトを整理し始めました。 目標は、何らかの方法でファイルをサイトにアップロードすることです。
  3. 脆弱性が見つかると、クラッカーはPHPシェルをロードします。
  4. PHPシェルに接続することで、クラッカーはサイトへのフルアクセスを取得し、あらゆる目的で引き続き使用できます。
重要なポイントは、PHPシェルをロードすることです。 前のパートでは、悪意のあるスクリプトがサイトにアップロードされた時間を特定しました。 これで、Webサーバーログでそれらへのアクセスを見つけるだけで十分です。 これにより、攻撃者のIPアドレスを特定できます。 これは、PHPシェルファイルの名前でaccess.logの単純なgrepを使用して実行できます。



IPアドレスを判別できた場合


クラッカーのIPアドレスを特定したら、WebサーバーのログでこのIPアドレスを検索し、彼が実行したすべてのアクションを確認します。 PHPシェルへのアピールの瞬間に近いどこかで、サイトの脆弱性がうまく利用されるでしょう。



IPアドレスを特定できなかった場合


上記の方法は、ハッキング後にサイトが使用された特定のファイル名を知っている場合に機能します。 ただし、この名前は常に知られているわけではありません。 この場合、ハッキングの瞬間をもう少し探す必要がありますが、それでも見つけることができます。



ほとんどの場合、ハッキングの大半はHTTP POSTリクエストによって特徴付けられます。これは、ハッキングされたサイトにファイルがダウンロードされるためです。 攻撃者はPOSTを介して、パスワード入力フォームをクラックしたり、盗まれたパスワードで管理セクションにアクセスしたりすることもできます。



サイトのハッキング時間がわかっている場合(既にわかっている場合)、ハッキングの時間に近いすべてのPOSTリクエストについてウェブサーバーログを調べる必要があります。 特別なアドバイスはありません-見た目は完全に異なるかもしれませんが、どのような場合でも異常に見えます。 たとえば、「../../../../」を含むクエリや、ファイル名やSQLクエリを含む長いクエリなどです。



何も見つからない場合



それもそうかもしれません。 この場合、CMSとその拡張機能のクリーンな再インストールと、その後のデータのインポートのみを推奨できます。 CMSとその拡張機能の最新バージョンであることを確認してください。



そしてその拡張機能! ほとんどの場合、ハッキングはコンテンツ管理システムのコアではなく、作成者が長い間開発を断念していた古いプラグインを介して実行されます。



もちろん、サイトと関係のあるすべてのパスワードを変更します。



愛人メモ




All Articles