私はウェブホストで働き、私の仕事はハッキングされたアカウントを見つけてクリーンアップすることです。私がshells \ malware \ injectionsの90%を見つけたのは、 "不在"のファイルを探すことです。たとえば、eval(base64_decode(.......))
のようになります。「.....
」は、base64のテキスト全体が一杯になっているのが普通です。私がキーストリング用のファイルをgrepすると、奇妙なファイルが飛び出します。Pythonを使用した異常検出
これらのファイルが人間として私に飛び出した場合、私はPythonでプロファイラーを構築して、統計的に「不在」なものを探し、手動でレビューすることができます。私は、キー文字列(eval
、base64_decode
、exec
、gunzip
、gzinflate
、fwrite
751、preg_replace
など)を含むphpファイルの行の長さを比較し、平均から2標準偏差を逸脱している行を探すことができると考えました。
回線の長さが大きく異なります。これは、使用する統計情報が適切かどうかわかりません。別のアプローチは、重み付けされたルールをクレチンのものに割り当てることです(行の長さを超える、またはしきい値以下のX点、単語upload = Y点を含みます)が、私は実際に得点で何ができるか、属性。私の統計は少し錆びています。
統計プロファイリングの正しい方向(ガイド、チュートリアル、ライブラリ)を教えてもらえますか?ここで
この提案は、実際には便利ではありませんが、ベイジアンのアプローチを試してみるとよいでしょう。 "良い"コードのコーパスと "悪い"コードのコーパスを構築し、新しいコードの特定の部分が(おそらく、さまざまなスパムフィルタの1つを使用する可能性が高い) 「良い」または「悪い」コーパスのメンバーになる。 Google for Bayesianの学習、スパムフィルタリングなど。ゼロから何かを書くのではなく、スパムフィルタリングプロジェクトを直接使用することができます。 –
@ Joe、Josh - ベイジアンのアプローチを選択した場合、私は過去にも同様の問題が成功したことで敬意を表しました。データセットを正しく取得できれば、合理的な結果を得るのは簡単です。 http://reverend.sourceforge.net/ –