おはようございます!今日の問題は簡単です。不正なソフトウェアの正規表現スキャナ(PHP)
共有サーバーには多くのサイトがあり、マルウェアによってハッキングされたり、メールを送信したり、近隣のサイトに感染しようとしたりします。
多くのサーバーでファイルをクリーンアップする時間を費やした後、私はPHPファイルを見ているスクリプトを持っているのが本当に助けになるかもしれないと考え始めました。
ウェブサイトごとに完全なアンチウイルスを持っているのは、私が望むものが「あまりにも多すぎる」ということです。リモートで管理できるものがあり、スキャンされたウェブサーバーに手がかりを与えます。
私は単純なPHPスクリプトについて考えました。疑わしいパターンを探してすべてのディレクトリとすべてのファイルをスキャンするだけです。私は実際にこれらの二つの正規表現を使用します。
/eval\((base64|eval|\$_|\$\$|\$[A-Za-z_0-9\{]*(\(|\{|\[))/i
/mail\(/i
私が知っている、二つ目は非常にナイーブであるが、私はいくつかのPHPファイルでメールの呼び出しがあるかどうかを知りたいので、それは、仕事になります。
私はtoken_get_all
を使用しようとしましたが、私が見つけた唯一の便利なトークンはT_EVAL
でしたので、私は正規表現の方法に戻りました。
私の問題は、実際にこれらの二つの正規表現であるということです。
- 最適化されていない(私は正規表現を感じている消費するビットだけのCPU /時間である)遠く
私は何を求めているです:
- は、同じ結果を達成するためのいくつかのより良いアイデアを得ましたか。
- 私はまた、これらのパターンにマッチしたいと思います:
eval(gzinflate(base64_decode('...');
eval(gzuncompress(base64_decode('...');
eval(gzinflate(str_rot13(base64_decode('...');
私はeval|base64|gzinflate|gzuncompress|gzinflate
を検索する「初期」のパターンであることを感じるが、に正規表現を・修正:
/eval\((base64|eval|gzinflate|gzuncompress|gzinflate\$_|\$\$|\$[A-Za-z_0-9\{]*(\(|\{|\[))/i
私が納得した結果は得られません。
もちろん、あなたが良いアイデアを持っているならば、歓迎以上のものになります。
NOTE
私は質問が非常に広いことを理解し、それは保護の任意の種類せずにウェブサイトの数百を処理することがかかり、何か非常に時間があるので、私はこのトピックに関するアイデアを持っていると思います。 これはこの質問を投稿する適切な場所でない場合は、私はそれを削除します、私はボードをうんざりしたくありません。
別のノート
これは、単に「ソリューション」私だけの問題の場合にして開始するための構造化されたツールが欲しい、私は自宅から(またはCRONで)簡単に使用することができます何か、ではありません奇妙な何かについて私に警告してください、実際には偽陽性トンがたくさんあります。
監査ログを使用して、サイトがどのようにハッキングされているかを確認し、脆弱なサイトを修正/中断する方が良いかもしれません。 – JimL
これは最後のオプションになることができます。ウェブサイトの所有者は自分のサイトを常に稼働させたいと思っています。アンチウィルスを支払う必要はなく、警告する方法を見つけなければなりません。 また、共有サーバーでは、PHPログを簡単に作成できません。 –
そのようなツールはあなたの兵器に有益なものかもしれませんが、してください、これは実際の解決策だとは思わないでください。このような頻繁な感染を許している穴があれば、本当の解決策を絞るべきです! – deceze