web-dev-qa-db-ja.com

D7 Webサイトのマルウェア-Googleのブラックリスト

私のDrupal Webサイトへのマルウェア攻撃についてお話ししたいと思います。あなたの提案だけでなく、同じ問題で苦しむ可能性のある人に役立つ何かを作成することもできます。


初期設定

  • Drupal 7.9
  • 有効化されたモジュール:
    • CORE:ブロック、コンテキストリンク、データベースロギング、フィールド、フィールドSQLストレージ、フィールドUI、ファイル、フィルター、画像、リスト、ロケール、メニュー、ノード、番号、オプション、オーバーレイ、パス、PHP =フィルター、RDF、システム、分類法、テキスト、ツールバー、ユーザー
    • CCK:複数選択
    • CHAOS TOOL SUITE:カオスツール
    • DATA/ORA:カレンダー、日付、日付API、日付ポップアップ、日付ビュー
    • FIELDS:メール、フィールド権限、リンク
    • その他:Google Plus One + 1、Pathauto、Token、Weight
    • 共有:これを共有、このブロックを共有
    • 分類メニュー:分類メニュー
    • ビュー:ビュー、ビューPDFディスプレイ、ビューPHP、ビューUI
    • 削除した他のモジュール:CKEDITOR、VIEWS_SLIDESHOW、IMCE、DOMPDF、PRINT、WYSIWIG

セットアップエラー

  • 顧客を満足させるために、いくつかのモジュールを変更しましたが、それらを更新したことはありません(AUCH!)
  • 顧客はログインデータを所持しており、おそらく彼のコンピューターは安全ではありませんでした(MMM ...)
  • プロバイダーの毎週のバックアップ(DOH!)を信頼していたため、webisteのコピーを持っていませんでした。

攻撃の外部症状

  • マルウェアのWebサイトにリダイレクトされたホームページのすべてのリンク
  • Googleがウェブサイトをブラックリストに登録した
  • Googleウェブマスターツールパネルのクリティカルアラート

FTPの症状

  • たくさんの「奇妙な」ファイル:mainma3.php(これはすべてのフォルダで見つかりました!)、functoins.php、sum75.html、wlc.html、aol.Zip、chase.Zip、chaseverification.Zip、501830549263.php、wpルートフォルダーに-conf.phpと多数のwtmXXXXn.php(Xを挿入= numero)。これらのファイルはすべて、多くの悪意のある機能(unescape、base64_decode、evalなど)でした。
  • Install.phpは、悪意のあるコードの長い行で変更されました
  • すべてのJavaScriptファイルに次のコード行が追加されました:; document.write( '');
  • 毎週のバックアップも無力でした
  • Drupalログパネルで見つかった "奇妙な"リクエストの繰り返し(私のドメインは文字列 "-----"で隠されています):
    • index.php?q = ckeditor/xss> Notice:Undefined offset:5 in eval()(linea 29 di /web/htdocs/-----/home/modules/php/php.module(74):eval( ) 'd code(1):eval()' d code)。
    • -----/user?destination = node/add> shadowkeによるログインの失敗
    • カレンダー/週/ 2012-W19?year = 2011&mini = 2012-12>ページが見つかりません
    • misc /]}; P.optgroup = P.option; P.tbody = P.tfoot = P.colgroup = P.caption = P.thead; P.th = P.td; if(!c.support.htmlSerialize) P._default = [1、>ページが見つかりません
    • misc /)h.html(f?c(>ページが見つかりません
    • mail.htm>ページが見つかりません

回復[この記事をありがとう:http://25yearsofprogramming.com/blog/20070705.htm]

  1. 私はウェブサイトをメンテナンスモード(error503.php + .htaccess)にしました。自分のIPアドレスのためだけにトラフィックが開かれる[この便利なガイドを参照してください:http://25yearsofprogramming.com/blog/20070704.htm]
  2. ウェブサイト全体をローカルでダウンロードしました
  3. 奇妙なファイルを検索して削除しました>それらの40を見つけました
  4. これらの世界のファイルを検索しました[フリーウェアAGENT RANSACKを使用]:eval(base64_decode($ POST ["php"]))、eval(、eval(、base64、document.write、 iframe、unescape、var div_colors、var _0x、CoreLibrariesHandler、pingnow、serchbot、km0ae9gr6m、c3284d、upd.php、timthumb。>次のいずれかの方法で行動しました:a) evalをphp_eval()(drupalのevalセーフバージョン)に置き換えましたb)疑わしいモジュールを書き留めました。 c)新しくダウンロードしたモジュールとコードを比較しました。 d)悪意のあるコードをすべて削除しました(上記のJavaScriptを参照)
  5. ファイルシステムでmohangesを検索しました[フリーウェアWINMERGEを使用]
  6. 疑わしいモジュールをいくつか特定しました。上記の4の時点で書かれたリストに感謝し、Google(name_of_the_moduleのセキュリティ問題、name_of_the_moduleのハッキングなど)とSecunia [http://secunia.com]に関するいくつかの研究に感謝します/ community/advisories/search]
  7. コンピュータ(Avast、Search&Destroy、Malwarebytes Antimalware)をスキャンしました>ウイルスやスパイウェアは見つかりませんでした
  8. すべてのログインを変更しました(ftp、cpanel、drupal管理パネル)
  9. ウェブサイト全体をリロードしました
  10. 疑わしいすべてのモジュールを削除しました:CKEDITOR、VIEWS_SLIDEWHOW、PRINT、DOMPDF、IMCE、CAPTCHA、WYSIWIG、WEBFORM。
  11. すべての話をプロバイダーの支援に伝えました
  12. Googleに改訂をリクエストしました(12時間で完了しました)

DRUPAL LOG NOW

これらのメッセージの数十-wtm4698n.php?showimg = 1&cookies = 1>ページが見つかりません-fhd42i3d.html>ページが見つかりません-wp-conf.php?t2471n = 1>ページが見つかりません------/user?destination = node/add> Elovogueによるログインの失敗


学んだ教訓

  • モジュールに触れないでください。更新できます
  • すべてのログインを安全なコンピュータに保存する/安全なコンピュータを使用してFTPで作業する
  • モジュールをインストールする前にセキュリティの問題を検索してください
  • どこかにウェブサイトのきれいなコピーを保管してください

私の質問:

  • どのような攻撃を受けましたか?
  • インストールに他の不明なモジュールがありますか?
  • まだ何ができますか?

お待ちいただき、ありがとうございました。

5
Marco Panichi

どのような攻撃を受けましたか?

言うのは本当に難しいです。デスクトップウイルス、またはモジュールの1つを介したphp実行(または安全でない構成)の可能性があります。あなたがそれをブロックしたように見えるのは良いことです。

インストールに他の不明なモジュールがありますか?

Drupal.orgから各モジュールの「適切な」コピーをダウンロードし、それらを比較する必要があります。まだ変更していない場合は、サイト全体をリビジョン管理(git)にして、ライブサイトをgitからチェックアウトします。これにより、変更があった場合に「git status」を確認し、「git reset --hard Origin/master」をすばやく確認できます。 "変更を元に戻します。

まだ何ができますか?

Gitのアイデアに加えて、 http://drupal.org/project/security_review をインストールして実行することをお勧めします。別の潜在的なヘルパーは: http://drupal.org/project/paranoia

7
greggles

「モジュールに触れないで、更新できるようにする」バグを修正したり、最新の安定版リリースにない機能を追加したりするために、モジュールにパッチを適用しなければならない状況がよくあります。この方法は、注意している限り、通常は問題ありません。

自分が行った変更や他の誰かがこっそり行った変更を追跡するのに役立つため、常にバージョン管理を使用してください。

また、モジュールディレクトリに変更のパッチファイルを含めることをお勧めします。これにより、モジュールが変更されているかどうか、および変更内容を一目で確認できます。

また、パッチファイルをバージョン管理にコミットします。また、更新後にモジュールを再適用できることが多いため、パッチファイルを使用すると、モジュールを更新するときに作業が簡単になります(新しいバージョンに適用されない場合は、手動でパッチを適用して再作成する必要があります)。

パッチファイル名にdrupal.orgの問題ノードIDとコメントIDが含まれていることを確認してください。これにより、パッチが対処する問題の進行状況を簡単に確認できるため、モジュールの新しいバージョンにパッチがすでに含まれているかどうかを確認できます。パッチがない場合は、パッチの新しいバージョンを入手できます。

すべてのログインを安全なコンピュータに保存する/安全なコンピュータを使用してFTPで作業する

はい。また、SFTPまたはSSHを使用してサーバーに接続します。

モジュールをインストールする前にセキュリティの問題を検索してください

これは通常、実行できることではありません。モジュールの最新の安定版リリースがある場合は、最も安全なはずです。まだ修正されていないモジュールのセキュリティ問題を確認する方法はありません(または、モジュールを悪用するのが簡単になります)。これの例外は、開発バージョンやベータ版など、完全リリースのないモジュールです。これらのモジュールは同じセキュリティプロセスを通過しないため、セキュリティ問題が公開問題キューに投稿される可能性があります。ただし、この場合でも、最新バージョンを使用している場合は、最も安全なバージョンを使用する必要があります。

どこかにウェブサイトのきれいなコピーを保管してください

はい。これは再びバージョン管理に帰着します。バージョン管理リポジトリにコードがある場合は、クリーンなバージョンのコードがあります。また、データベースとバージョン管理されていないファイルのオフサイトバックアップも保持する必要があります。緊急の場合はサイトを完全に復元でき、24時間を超えるデータが失われないことを願っています(バックアップを頻繁に実行する場合はそれより少なくなります)。

また、一般的なウェブホストのバックアップに依存しないでください。可能な場合は、別のサーバーに独自のバックアップを行ってください。私は最近、ホスティングプロバイダーにMySQLをダウンさせるサーバーの問題が発生し、多数のサーバー上のデータベースが破損するという事件がありました。その後、夜間のバックアップが行われたため、夜間のバックアップも破損していました。したがって、復元されたデータは、場合によっては1週間前のものでした。

この種のことは、どのホスティングでも発生する可能性がありますが、理論的には、よりハイエンドのホスティングでは発生が少なくなります。この場合、独自のオフサイトバックアップを取ると、トラブルを回避できます。

バックアップに問題が発生する可能性もありますが、異なる場所に2つの大量のバックアップがある場合は、より安全です。

どのような攻撃を受けましたか?

Gregglesが言うように、これに対する答えがわからないほど多くの可能性があります。あなたのホスティングプロバイダーはそれを見つけることができるかもしれません。

インストールに他の不明なモジュールがありますか?

前述のように、バージョン管理により、ハッキングされたものを簡単に確認できます。それとは別に、すべての同じバージョンのモジュールとdrupalコアをダウンロードし、diffまたは同様のコマンドを使用してそれらを比較することができます。次に、すべての違いを確認し、それらがそうであるかどうかを確認できます。あなたのカスタマイズまたはハッカーがした何か。

長いプロセスになる可能性がありますが、確実に確認することをお勧めします。

危険な可能性のあるモジュールについては、すべてのモジュールの最新バージョンを使用することしかできません。これは、一般的に最も安全であるためです。ただし、常により多くのセキュリティ問題が検出されるため、最新の状態に保つ必要があります。セキュリティチームは、セキュリティ更新に関する通知を送信します。

https://drupal.org/security も確認できます。これには、contribおよびdrupalコアのセキュリティ関連情報の3つのタブがあります。

まだ何ができますか?

ここにいくつかあります(もっとたくさんあります):

  • drupalモジュールを常に最新の状態に保つようにしてください。
  • カスタム開発を行っている場合は、drupal&PHPおよびその他の関連するWebテクノロジー)の安全なコーディング方法を習得してください。 is Writing secure code です。
  • サーバーソフトウェアを最新の状態に保ちます(制御できる場合)。
  • サーバーへのアクセスには、常にSFTPなどの安全な接続を使用してください。
  • 常に強力なパスワードを使用し、パスワードを再利用しないでください。
  • ユーザー1には、「admin」などではなく、一意のユーザー名を付けます。
  • ユーザーに1 drupalアカウントを他のユーザーに付与しないでください。管理者がより高いレベルのアクセスを必要とし、ロールを設定して必要なものだけを付与する必要がある場合。
  • 他のユーザー管理者がいる場合は、userprotectモジュールを使用してユーザー1を安全に保ちます。
  • より良いパスワードとロール/アクセス制御管理のための多くの他のモジュールがあり、それはウェブサイトによっては役立つかもしれません。
5
rooby

追加します:1)FTPを使用しません。 2)サーバーでバージョン管理を使用して、そこに配置したコードがわかるようにします。 3)コアモジュールやコントリビュートされたモジュールをハッキングしないでください。また、セキュリティ更新を必ずサブスクライブしてください。 4)Apacheが書き込み可能なファイルに制限されるように、サーバーのファイル権限を正しく設定していることを確認してください。

4
Mike Gifford

どのような攻撃を受けましたか?

サーバーが公開されていなかった場合、おそらく リモートインジェクションエクスプロイト セキュリティを悪用するネットワーク上で機能しました vulnerability 脆弱なシステムへの事前のアクセスなしで(例:- SQLインジェクション[〜#〜] xss [〜#〜] など)。

シナリオ例:

  1. ホスティングプロバイダーは、多数のIPアドレスが特定のファイル(例:/en/printmail/123)。
  2. これは印刷モジュールが原因である可能性があることを確認したので、現在使用しているバージョンを確認する必要があります。
  3. これは、適切なセキュリティ勧告を見つけるのに役立ちました。 SA-CONTRIB-2012-057 と言う:

    • セキュリティリスク:中程度に重要
    • 悪用可能:リモート
    • 脆弱性:クロスサイトスクリプティング
  4. 次に、どのような種類の攻撃があったかを理解し、何が起こったかを把握して問題に対処することで、そこからリスクを把握することができます。

参照: ハッキングされた後で管理ページから悪意のあるスクリプトを削除する方法?

インストールに他の不明なモジュールがありますか?

人気が低いため、適切にテストされていないモジュールをインストールしないようにしてください。特に、動的コードを実行している場合、またはDrupal APIを適切に使用する代わりに、または適切なAPIとPDOを使用する代わりにカスタムSQLクエリを使用する代わりに、独自のカスタムコードを使用している場合。

まだ何ができますか?

マルウェアを削除したら、次のことを行う必要があります。

  • Drupalコアとすべてのモジュールを最新の状態に保つ、
  • Drupal Security Advisories &関連ニュース( Twitter ))で最新の状態に保つ、
  • システムパッケージを最新に保つ(例:apt-get update)、
  • PHPおよびWebサーバーが最新で正しく設定されていることを確認してください。
  • ファイルの権限が正しいことを確認してください。

    参照: 推奨されるディレクトリ権限は何ですか?

  • モニターDrupal疑わしい動作のウォッチドッグとシステムログ、

  • インストール Hackedmodule モジュールの整合性を監視し、
  • Nagios などのセキュリティ監視ツールを使用して、Webサイトを監視します。
  • Drupal PHP filters/modulesなど)を使用しないでください(これにより、動的コードを挿入できます)、
  • PHPコードをデータベースに保持しないでください(ブロックやビューなど))、
  • 開発モジュールを無効にする(Develなど)、
  • テクノロジーで最新の最新の脆弱性について学び続ける
  • 等々。
0
kenorb