CleanTalk Malware Scanner-ヒューリスティックコード分析

前の記事で、WordPressのセキュリティサービスの開始について既に説明しました 。 今日は、悪意のあるコードを特定するためのヒューリスティック分析の開始についてお話したいと思います。

悪意のあるコード自体の存在は、潜在的に危険なコンテンツからユーザーを保護するために、検索結果の禁止やサイトが感染していることを検索で警告する可能性があります。

悪意のあるコードは自分で見つけることができますが、これは多くの作業であり、ほとんどのWordPressユーザーは不要なコード行を見つけて削除するために必要なスキルを持っていません。

多くの場合、悪意のあるコードの作成者がそれを隠しているため、署名による判断が困難になっています。 悪意のあるコード自体は、たとえばlogo.pngファイル内の難読化されたphpコードなど、サイト上の任意の場所に配置できます。コード自体は、index.phpの非表示行で呼び出されます。 したがって、プラグインを使用して悪質なコードを検索することをお勧めします。

CleanTalkは、初めてスキャンするときに、すべてのWordPressコアファイル、プラグイン、テーマをスキャンします。 スキャンが繰り返されると、最後のスキャン以降に変更されたファイルのみがスキャンされます。 これにより、リソースが節約され、スキャン速度が向上します。

ヒューリスティック分析の仕組み


ヒューリスティック分析の主な欠点の1つは非常に遅いため、本当に必要な場合にのみ使用します。 まず、ソースコードをトークン(最小の言語構成体)に分割し、不要なものをすべて削除します。

  1. スペース文字。
  2. さまざまな種類の解説。
  3. PHPコードではありません(<?Php?>タグ以外)

次に、「複雑な構造」がなくなるまで、コードを再帰的に単純化します。

  1. 文字列を連結します。
  2. 変数の変数への置換。
  3. などなど

また、コードを簡素化する過程で、変数の起源などを監視します。

その結果、分析可能なクリーンなコードが得られます。 コードを文字列としてではなく、トークンとして取得することが非常に重要です。 したがって、文字列トークンが目的のテキストとともに配置されている場所と、トークン関数がどこにあるかがわかります。

「悪いデザイン」の評価を検索するという意味では、私たちには違いがあります。

<?php echo 'eval("echo \"some\"")'; ?> 

-この場合、T_EVALトークンはありません。

トークンT_CONSTANT_ENCAPSED_STRINGがあります 'eval( "echo \" eval \ "")'

 <?php eval('echo "some"'); ?> 

-そして、ここにあります。 そして、まさにこのオプションが発見されます。

私たちはそのようなデザインを探しています。それらを重要度に分解します。

  1. クリティカル:
    • 評価する
    • *を含め、*を必要とします
      • 不正なファイル拡張子
      • 存在しないファイル(次のバージョンで削除されます)
      • リモートファイル接続
  2. 危険な
    • システム
    • パススルー
    • proc_open
    • 幹部
    • *を含め、*を必要とします
      • エラー抑制演算子付き(次のバージョンで削除されます)
      • POSTまたはGETに依存する変数を持つ。
  3. 疑わしい
    • base64_encode
    • str_rot13
    • syslog

  4. その他。

私たちはこの分析を絶えず改善しています。検索のための新しい構造を追加し、誤検知の数を減らし、コードの簡素化を最適化します。

URLやBASE64などでエンコードされた文字列を検出してデコードするよう彼に教える計画。

プラグイン自体はWordPressディレクトリにあります。

Source: https://habr.com/ru/post/J351572/


All Articles